#isucon2 に参加しました
@n0ts に誘って頂いて @yanaoki と 3 人で isucon2 に参加しました。結果は惨敗でしたが、とても楽しかったです。唯一 Java で取り組んで、結局採点基準にすら届かなかったので参考にならないかもしれませんが、個人反省会ということでメモしておきます。
事前準備したこと
@n0ts から去年の様子とか参加ブログのリンクを教えてもらい、3 人で事前打ち合わせしたり、isucon1 のアプリを Java で書き直したりしていました。今にして思うと、いろいろ甘かったと思います。
当日
Java の実装が提供されていたので、書き直しのコストが浮くねという感じで、サーバー側で Java を動かすということと、ローカルでソースをいじれるように開発環境を構築するということを分担して進めていました。なお、私自身はほぼ Java ソースをいじっていただけなのでサーバーの作業内容はよく分かっていません。あと、時間は焦っていたこともありかなり適当です。
15 時台
16 時台
17 時台
- サイドバー部分の SQL が重いので、order_request テーブルに表示に必要な情報を全て書き込む方向で修正しているうちに時間切れ。
反省点
実力不足の一言です。あと、普段の開発の意識から切り替える必要があったかと。あれは isucon というスポーツだと思いました。7 時間しかないので、とくにかく各プロセスを軽量化し、本当に必要な作業だけを行う必要があるし、それができるだけの実力や事前準備が必要だと思いました。
- WTP の環境を作るのに時間を掛け過ぎた。ソースをいじってビルドできればいいだけなのに、ローカル開発環境の構築に時間を掛け過ぎた。
- 最初に全体の分析をしようと話していたのに、結局やれずじまいだった。
- co-meeting は選択誤った。余裕がなくてあまり見に行けなかったし、ミーティングも複数作って切り替えが面倒だった。Skype でも Google チャットでもなんでもいいので 1 スレッドでリアルタイムに push 通知がされるもので十分だったと思う(co-meeting は後で見返す分には便利だったけれど)。
- JVM 使えば早くなるだろうと楽観視し過ぎた。当たり前なんだけどユースケースが合わなければ特にメリットでないわけで、ほんと甘かったと思う。
- Bitbucket(git) を使ってソース管理したけど、ブランチとかまじでいらなかった。かえって混乱するだけだった。
- やっているチームもあったが、Java にこだわるなら Tomcat 1 台にして、全てメモリ上で処理すればよかった。そもそも、データ量自体は少ないのだからメモリ的には余裕だったはず。
- 他にもキャッシュとか方式自体は思いついても、あの時間内で実装しきれる自信はなかったので結局は実力不足を痛感した。
最後に
事前準備で直前の一週間ぐらいは睡眠時間削ったりしてましたが、当日も含めてとても楽しかったでし、勉強になりました!企画・運営のみなさま、本当にありがとうございました!!
最後にどうでもいい話なんですが、嫁さんに何に参加していたのか説明を求められ、ミニ四駆のチューニング大会みたいなものだと説明したら納得してもらえました。当日会場に車が何種類か用意されていてレギュレーションさえ守れば改造し放題みたいな感じと説明しました。我ながらいい例えが見つかったとは思いましたが、それで納得する嫁さんもどうかとは思いましたw