ISUCON8運営部屋でスコアをsayコマンドで読み上げるようにしたら割とウケた話

この記事はTech KAYAC Advent Calendar 2018の1日目の記事です。

過去に nano 記事 を書いたことのあるソーシャルゲーム事業部でサーバサイドエンジニアをやっている瀬戸です。

nano はもう使っていませんが S2Gらぶフォントと vim(neovim) で日々お仕事しています。

f:id:mix3IRC:20181130014219p:plain
S2Gらぶフォント と vim

S2Gらぶは等幅で割と真面目にプログラミングにおすすめのフォントですよ👍

ということで「ネタが出てこなかったらタイトルのことを書く」って言ってたら本当についぞネタが出てこなかったのでタイトルのことを書きます。

say で読み上げ?

お手元の環境が Mac でしたらターミナルを開いて

$ say テスト

とか

$ echo テスト | say

とか打ってみてください。ミュートにしていなければ「テスト」と音声で読み上げられたかと思います。

say は引数や標準入力を受け取って読み上げてくれるコマンドです。

(オプションを指定するとテキストファイルを読み上げたり、音声ファイルを出力したり、ピッチを変えたり、声を変えたり出来るようです)

say で色々なものを読み上げさせたくなりますね?

例えばニコニコ生放送のコメントとか、ニコニコ生放送のコメントとか、ニコニコ生放送のコメントとか、etc...

あるいは ISUCON8の本戦 当日のこと、運営部屋では参加者のスコアの増減をポータルをリロードして確認して運営のみんなでニヨニヨする訳ですが

(もちろん他にも参加者からのチャットでの質問があれば答えたり、ベンチマーカーに不具合があれば対応したり、トラブルがあれば協議したりします)

でも、わざわざ手でポータルをリロードするの面倒ですよね?

そうするとポータルをスクレイピングしてチーム名、スコア、前回スコアからの増分を標準出力するようなやつ、書いちゃいますよね?

そう、こういうの github.com/mix3/isucon8-live

で、その標準出力出来たらそれはもう say食わせるしかないですよね?ね?

ただし say は標準入力だと連続で読み上げてくれない

say は標準入力を受け付けますが、連続では読み上げてくれません(終端が無いので読み上げ開始できない)

# 🙆‍♀️ OK
$ echo "テスト" | say
# 🙅‍♀️ NG
$ while :; do echo テスト; done | say

こういうときは xargs-I オプションを使うと良いようです。標準入力を改行で一行ずつ区切って say コマンドに渡すことが出来て期待通りに動かせます。

$ while :; do echo テスト; done | xargs -I@ say @

めっちゃ読み上げてくれますね!完璧です!

こうしてそっとスコアを読み上げるようにしてトイレに立ち…

すっきりして運営部屋に帰って来る頃には

「音量上げてくれない?」

と、その場にいたみんなからお願いされるのでした✌️

say 使っていきましょう!

say に限らない)読み上げの良い点

スコアの読み上げが思いの外ウケが良かったので具体的に良かった点について振り返ってみたところ、以下のことが挙げられるかなと思いました。

  • リロードで能動的に見るのではなく、読み上げを聴かせられるのでその場にいる全員を強制的に「おっ???」っと傾聴させられる
  • その場にいる人たちが同じタイミングで同じ情報を知ることになるので、時間差無くみんなで一斉に盛り上がれる

まとめ

  • S2Gらぶフォントはいいぞ!
  • ISUCONで参加者のスコアの増減を見るのは楽しいし興奮するぞ!
    • 運営側になってみてこの楽しさを経験してみるといいぞ!
  • say で読み上げるともっと楽しいし興奮も一押しだぞ!
  • この記事はタイトルに全てが書いてあるので本文いらないぞ!

明日は @gon さんが(タイトルで落ちてる本記事と違い)大変為になるお話しを書いてくれると思います。お楽しみに!