ISUCON4 予選に参加した話 #isucon

去る、9月27日(土)に ISUCON4 予選に参加しました。
チームは「ご注文は php ですか?」です。
利用言語は go でした。

名前に偽りありと言われそうですが、チーム名決定した後に利用言語を決めたのと、候補の中には「彼女募集中」とか、「ぺちぱー合コン部」とかあったのでその中ではまともなチーム名じゃないかと思う次第なわけで・・・・・・。

チームメンバーは、既にブログ書かれてますけど netmarkjpさん と matsuuさん。

matsuuさんのブログでは、光栄にも右手と書いていただけましたが、実際には

@netmarkjp: ファシリテータ
@matsuu: 両手両足
@do_aki: さっぱり妖精

といった状態で、netmarkjpさんの分析力とmatsuuさんの実装力に圧倒されて、終始何もできないままでした。*1

唯一貢献できたことと言えば、3人が集まる会場を提供できたことくらいでしょうか。

準備大事

9月8日にチームに誘われてから、いろんなテキストチャットでやり取りしていたのですが、ほんとに驚かされたのが matsuuさんの行動力。
当初は php を使う前提で動いていたため、xdebug や xhprof を使たプロファイリングの下準備をしっかりされていて、ISUCON3の予選 AMI を使って、実際にどう分析できるかを検証。

一度顔合わせしましょーということで開かれた、戦略会議*2が予選の1週間ちょい前で、そこで Go を使うことが決定してから数日中に Go言語使いこなしてて、ISUCON3 予選問題を Go でさくっとチューニングしてしまうというチートっぷり。

netmarkjpさんも、その傍ら適切なアドバイス入れつつ、アクセスログから時間がかかっているリクエストをさくっと見られるツール作ってて……

いやもう、自分ホント何もしてません。スミマセン。
(もちろん、A Tour of Go 一通り済ませて言語仕様の確認くらいはしてましたが!)

前日


数時間後

当日

当日の話は、お二人のブログに詳細があるのでそちらを参照してください。

自分がやったのは、ban user/ip の map 操作に対して lock を入れたことと、
トップへのアクセスに対してテンプレートを使わずに直接文字列 を返すようにした事くらい (これは結局 nginx 側で返すようにしたのであまり意味なかった)

あ、あと何故かデザイン崩れるね−って話になったときに mime おかしくね? ってことに気づいたくらい。

他はひたすら martini とその依存コード睨んでました(ホント役立ってない……)

まとめ

精進します……。

まずは go をもっと知ることからっ

Link

開催案内
ISUCON公式Blog:http://isucon.net/archives/cat_1024989.html
isucon4予選出場してきた #isucon
http://netmark.jp/2014/09/isucon4-qualifier.html
第4回ISUCON予選にチーム「ご注文はPHPですか?」で参戦して1日目暫定10位になりましたがPHP使ってません - Dマイナー志向
http://d.hatena.ne.jp/tmatsuu/20140928/1411897412

*1:お二人だけのチームでもきっと大差なかったのでは

*2:戦略会議という名の飲み会