ISUCON本著者が語る「ISUCONの面白さ」
――ISUCON本著者の立場から、ISUCON本選の見どころを教えてください。
中西:優勝って、「強いだけでは勝てないな」とは思ってます。勝つためには、8時間の中でいい動きができるかがポイントです。また、最低限のすぐ直せるボトルネックの切り分けをした上で、ぴったり8時間以内に実装が終わって、一番システムの動作が早いということを制限時間内にできるかどうかだと思います。
馬場:予選は、ボトルネックの解消を積み上げると、割と突破する確率が高いんですけど、本選は、高スコアを叩き出す飛び道具に負けちゃうんですよね。どのチームも飛び道具が決まらなければ、積み上げた人が勝つのですが。ただ、本選は飛び道具を決めてくる人が多いですね。
草野:本選では、当日の最初に問題の内容についてのムービーが流れるので、本選の観戦では、そのムービーを見て、一体何が起こってるんだろうと想像してみると楽しいかもしれないです。
どれだけ想像できるかが、自分の実力の指標になると思います。ボトルネックを自分でも考えてみて、本選が終わった後に答え合わせしてみると楽しめると思います。
――では最後に、これからWebパフォーマンスチューニングに取り組みたい方に向けて一言お願いします。
馬場:パフォーマンスチューニングはフルスタックの知識が必要になるので、大変ですが同時に成長するチャンスでもあります。ISUCON(のようなコンテスト)は、ベテランの知識と理論をどう適用するとシステムの状況を的確に診断できるのかを体験する絶好の機会です。愚直にやれば成果が出るので、諦めずにきっちりコツコツやることが大切だと思います。
中西:ISUCONの予選は特にそうです。予選突破できるチームは、「天才だからできる」というわけではありません。まずは予選を目指してみよう、その積み上げが必要だと思います。
パフォーマンスチューニングは長年行われていながらも、日々アップデートがありまだまだ枯れていない分野だと思います。ISUCON本は、そんな変化する分野の中でも通用する「考え方」が詰まった本なので、ぜひ読んで学んでほしいです。
草野:いやらしい話になるんですけど、Webパフォーマンスチューニングに取り組むと給料を上げる交渉材料にしやすいんですよ。パフォーマンスチューニングは定量化しやすいので、結果が自分に返ってきやすいし、返ってきたことが分かりやすいんです。通常、自分がどれだけ良いエンジニアになったかは、1年くらいの期間がないと評価しにくいですが、パフォーマンスチューニングは3日間でも成果が数字として分かるので、そんな楽しさがあります。ぜひそういうところにも面白みを感じてほしいと思います。
金子:目的と目標ですね。パフォーマンスチューニングは楽しいのでいくらでもできてしまいますが、どこまでやるべきか目標を見失わないようにしてください。やり込みは楽しいんですが、やりすぎて本来やるべきだった機能追加ができないなど、目的から外れてしまったら本末転倒なので。
長野:あとはサービスの仕様が大切ですね。1ページに1000件の情報を表示する仕様よりも、1ページに100件表示する方がパフォーマンスも良くなります。そのような解決も合わせて、目標と目的とを併せて取り組んでいくといいかなと思います。
藤原:ISUCONは使えるサーバーの台数が決まっているし、スペックも決まっているので、そういう縛りの上で改善をした人が勝ちという競技です。実務だったらサーバーの台数を増やせばいいわけですが、プログラムの作りがまずいと横に増やしても全然性能が上がらないこともあります。そのためにはもちろんパフォーマンスチューニングが非常に大事だと思います。そこをちゃんとバランスよく使えるようになると、当然ながら成果が出ると思います。
金子:メンテナンス性も実際の業務では求められるので、例えばメンテナンスできるデータ構造にすることも大切ですね。結局、ISUCONでどう戦うのか分かった上で、実業務でどうすればいいのかという話だと思います。やっぱりどっちも理解しないと最良の選択が取れないと思います。
ただ、技術を知らなければ選択肢にすらなりません。ISUCONに挑戦するのも良いですし、どうすればいいか分からないならISUCON本を読めばどういうアプローチが取れるのか重要な部分は頭に入るでしょう。ISUCON本によって世界中のWebサービスがより良くなったらうれしいです!
――ありがとうございました!ISUCON本によって、Webパフォーマンス改善に取り組んだり、ISUCONを楽しんだりする方が増えることを願っています!