かみぽわーる

kamipo's blog

ISUCON10予選ふりかえり

ISUCON10予選おつかれさまでした。ISUUMOいい問題でしたね。過去出題側を担当したこともある身でも、参加者の完全攻略に対する怖れもあって仕様が肥大化するなか今回これだけコンパクトな仕様のアプリケーションでこれだけ楽しめる出題をしたのマジですごいと思いました。

今回の問題はMySQLかつ検索ヘヴィな問題で僕のバックグラウンドに向いてる問題にも関わらず、ずっと手を動かしていたわりに効果の高い施策に取り組めず、あらためてISUCONの難しさを痛感したしこれぞISUCONなのだなあと思います。

僕の文章読解が遅く仕様理解にとても時間を要するという性質から、これまでのISUCONでは常にアプリケーションの仕様や性質を理解できる前に時間的制約からあらゆる決断を迫られるという状況にあり、この状況で仕様や性質を理解できていたとしたらできた正しい決断をしていくのは本当に難しいと思っていて、今回ずっと手を動かしていたわりに結果が振るわなかったのもひとえにその難しさだなあと個人的には思っています。

時間を節約するために個人的にとても時間を要する仕様書を読むのを疎かにして失敗したこともあるし、DBボトルネックが支配的ではない問題でスロークエリの対処に時間を投下してアプリケーション仕様を最後までちゃんと理解しないまま失敗したこともある。僕の技術的なバックグラウンドであるMySQLボトルネックの支配的な要素ではない近年のISUCONで、チームで唯一普段Rubyを書いている僕が、自分の有限の時間を何に投下するかというのをその場その場で決断していくのはとてもハードだったなと感じた。だけれど、そのことの精度を上げていくことがISUCONでの結果に繋がっていくのではないかというのが今回ISUCON10予選を終えて感じた個人的な総括になります。

今回手元で動かせるアプリケーションでもあったので、今日起きてから予定の合間合間に予選で決断できなかったDB側の感想戦をしてみたけど、いやぁこれがその場でできないのがマジでISUCONだなあとあらためて思った。未来のいつかの自分のために今日のこの気持ちをここにしたためておきます。

DB側感想戦

感想戦: index comment by kamipo · Pull Request #12 · soudai/isucon10-qualify · GitHub

8e98179ad6 以降のスキーマ変更(index削除とか)効いてなかった by kamipo · Pull Request #13 · soudai/isucon10-qualify · GitHub

感想戦: Add descending index `popularity DESC` by kamipo · Pull Request #14 · soudai/isucon10-qualify · GitHub

不要なindex削除 by kamipo · Pull Request #15 · soudai/isucon10-qualify · GitHub

Optimize get '/api/recommended_estate/:id' by kamipo · Pull Request #16 · soudai/isucon10-qualify · GitHub

Optimize post '/api/chair/buy/:id' by kamipo · Pull Request #17 · soudai/isucon10-qualify · GitHub

Avoid N+1 in post '/api/estate/nazotte' by kamipo · Pull Request #18 · soudai/isucon10-qualify · GitHub