Dear Great Hackers

  1. インタビュー
  1. タイアップ

「なんでもあり」なWebアプリのチューニングバトル『ISUCON』はエンジニアの輪が広がる文化祭? ISUCON12出題者に大人気の秘密を聞いた

『ISUCON(イスコン)』とは『Iikanjini Speed Up Contest(いい感じに スピードアップ コンテスト)』を略したイベント名。ISUCONでは「お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル」が繰り広げられます。優勝賞金はなんと100万円。LINE株式会社が運営窓口となって毎年開催されており、2022年で第12回を迎えます。第12回では予選の参加申し込み枠が1分間で埋まってしまうほど人気の高まりを見せています。

オフィシャルサイトを見ると、インフラ提供、インフラ協賛、スポンサーなどに名だたる企業がズラリと並んでいます。「どんなコンテスト?」と興味を持つ方も多いのではないでしょうか? そこで今回は、8月に開催された「ISUCON12」で問題を作成された面白法人カヤックの藤原 俊一郎氏と株式会社Colorful Paletteの伊藤 寛起氏にISUCONとは何かといったことから、ISUCONに関するエピソードなどを伺いました。

ISUCON12まとめページへ
https://isucon.net/archives/56571716.html

プロフィール

藤原 俊一郎 (ふじわら しゅんいちろう)
面白法人カヤック
技術部SREチームリーダー
2011年より現職。技術部SREチームリーダーとして主にソーシャルゲーム、自社サービスを担当。最近の趣味はマネージドサービスの隙間を埋める隙間家具のようなツールをGoで作ってOSSにすること。ISUCONには第1回から参加しており、優勝4回、出題3回。ISUCON12では予選問題作成とポータルを担当した。著書に『達人が教えるWebパフォーマンスチューニング〜ISUCONから学ぶ高速化の実践」(共著、技術評論社)がある。

 

伊藤 寛起 (いとう ひろき)
株式会社Colorful Palette
シニアエンジニアリングマネージャー
新卒でSIerに入社後、銀行などの業務システムの開発を経験。2011年、株式会社サイバーエージェントに入社。Craft Eggで「バンドリ!ガールズバンドパーティ!」開発に携わる。2018年からグループ会社のColorful Palette設立時よりサーバーサイドエンジニアとして参画し、エンジニア全体を統括するマネージャーとして組織を牽引する。ISUCONには11から参加し、12では出題者となっている。

「ISUCON = Iikanjini Speed Up Contest(いい感じに スピードアップ コンテスト)」とは?

―― はじめに自己紹介をお願いします。

藤原 俊一郎氏(以下、藤原) : 面白法人カヤックでSREをしています。ISUCONには第1回から参加していて、これまで4回優勝をしました。何回か出題もし、ISUCONにはずっと関わってきました。

伊藤 寛起氏(以下、伊藤): 2011年に中途でサイバーエージェントに入社し、現在はグループ子会社のColorful Paletteでエンジニアリングマネージャーをしております。普段の業務では主にスマートフォンゲームのサーバサイド開発を担当しております。ISUCONは、2021年の第11回に初参加しました。それにも関わらず「飛び級」でISUCON12では問題を作成させていただきました。

―― 「ISUCON(Iikanjini Speed Up Contest)が、どんな競技イベントか教えてください。

藤原 : ISUCONは、Webのサーバーサイドで動く、Webアプリケーション、サービスを高速化することを参加者が競い合うコンテストです。

ISUCONの競技は、参加者にサーバーが何台か与えられて、お題となるWebアプリケーションが動いている状態から始まります。それを制限時間「8時間」でチューニングしていくバトルです。競技中は『ベンチマーカー』というベンチマークをかけるプログラムで採点をして、たくさん処理できたチームのスコアが上がります。分かりやすいスコアリングシステムです。最終的に1番高いスコアを取ったチームが勝者になります。

―― ルールを拝見すると、チームのメンバー数が1人から3人と幅があるなど、決まり事が少ないと感じます。あえて制限を少なくしているのでしょうか?

藤原 : 「なんでもあり」というのが最初から言われていることで、ISUCONの創始者である田籠さん(田籠 聡氏)のアイデアです。世の中では、様々な会社の人がそれぞれの事業でサービスを作っているので、誰が1番すごいかを決めるなら、同じWebアプリケーションを全員で一斉にやって、一番速くできた人を勝ちにしたら面白いと発想したことからISUCONは始まりました。

―― 「速くなるなら、何をやってもいい」ということになっているのですね。

藤原 : そうですね。基本的にルールには「やってはいけないこと」が書いてありますが、逆に「やっていいこと」は書いてありません。やっていけないことでなければ何をやってもいいです。

最初に与えられた競技サーバーのWebアプリケーションは、様々な言語で同じような動きをするものが提供されます。例えば、GoやRuby、Node.jsなど、数多くありますが、別にそれを使わなくても良いのです。というのは、アプリケーションのレスポンスを変えなければ、1から全て自分で書き直しても別に構わないというスタンスだからです。

―― これまで10年以上、ISUCONが開催されてきて、最近はかなり盛り上がっているようですね。

藤原 : 最初は先着順で20チーム、25チームで始まったのですが、参加チームや人数が毎年、どんどん増えてきて予選をやるようになりました。

最近は申し込みが増加しています。ISUCON12では、参加700チームを3回に分けて募集しましたが、最初が3分間くらいで220の申し込みが終わってしまい、2回目は1分ちょっとで終わりました。募集開始のとき、ちゃんと待機していないと申し込みができない状況になっています。

―― すごい人気ですね。この「ISUCON人気」をどのように捉えておられますか?

藤原 : ISUCONは「なんでもあり」で、やれることがいっぱいあるからだと思います。最近のサービス開発は分業化されていて、1人だと狭い範囲でしか見ないことが多いと思います。私が業界に入った頃は、OSをインストールするところから、サービスのコードを書き、何もかも全て自分でやっていましたが、最近は、一人ひとりが一部分だけしか対応しない状況になってきています。

それに対して、ISUCONでは全て自分たちのチームでやらなければなりません。1チーム最大でも3人なので、サーバーサイドで上から下まで全部やらなければいけない、そんな総合格闘技的なところが好きで参加する人が多いのだと思います。

伊藤: 自分も同意です。業務でプログラミングをしていると、高速化できるポイントを見つけることはあります。ただ、コードを触るとバグを生むリスクもあるので、気軽に試してデプロイできないことが結構あると思います。ISUCONでなら、それがパッとできるので、お祭り騒ぎ的な楽しさがあります。私はISUCON11から参加した、いわゆる「ライト勢」ですが、日常のプログラミングではできないことが気軽にできるのが、ISUCONの人気につながっていると思いました。

また、同じお題に対して、いろいろな人のアプローチを結果で見ることができるので、自分がスコアを出すことが出来なかったお題に対し「この人たち、なぜこんなスコアが出せたのだろう」という観点で講評を見て、「あ、そういう手があるんだ」と気づける発見の楽しさもあります。

―― ISUCONには「文化祭症候群にかかろう」といったコピーもあり、かなり盛り上がることが伝わってきます。

藤原 : 仕事だといつ終わるか分からないことが結構ありますが、ISUCONは競技を8時間やって、結果が出たらもうその時点で終わりなので、わーっとやれるのが楽しさのひとつになっていると思います。

3ヵ月以上じっくり時間をかけて「名勝負」が生まれる問題を作成

―― おふたりがISUCONの問題を作成するようになった経緯を教えてください。

藤原 : 私は3回目、8回目と今回の12回目で作問しています。基本的には、櫛井さん(櫛井 優介氏/ISUCON運営実行委員会 LINE株式会社)に頼まれて作問しました。ISUCONのあとにアンケートがあり、「次に問題出してもらいたい人はいます?」という質問への回答を元に頼まれるケースが多いと思います。私は、1回目と2回目で優勝したので、「次は(問題を)出してください」と言われたのがきっかけですね。

伊藤: サイバーエージェントでは、ISUCON10でインフラを提供したことがあります。ISUCON11の本選アンケート回答で「次の問題作成者」として名前を挙げていただいたそうで、インフラ提供の担当者から適切な部署としてゲーム部門を紹介していただいてISUCON運営と繋いでもらったという流れです。当社内で過去にISUCONのようなイベントをやったことがあり、広報が発信していたこともひとつの縁となって、今回、作問をやらせていただくことになりました。

―― 問題を作るにあたって、苦労されたことやエピソードなどを教えてください。

藤原 : スケジュールとしては、カヤックではテストとして社内ISUCONを実施したため、4月は社内用の作問、5月からISUCON12用の作問に入っています。ネタを決めるところから始めたので、びっしりではありませんが、完成までに3ヵ月間くらいかかりましたね。

―― 問題の難易度設定などは難しいのではないかと思いますが、その点はいかがですか?

藤原 : 本選では優勝を決め、賞金100万円を授与します。全員が同じようなスコアになって優勝が運で決まってしまうと、つまらなくなってしまいます。そのため、8時間で全てできないくらい要素を入れておく必要があります。試しに解いてみて、ここは難しいとか、これは簡単だからすぐスコアが上がってしまうといった形で調整しました。

伊藤: 私たちもスケジュールは藤原さんと同じような状況で進んでいます。全体として5月に緩く走り始めました。6月に予選の「試し解き」に参加して、カヤックさんが作成された問題に触れ「え、なんか思っていた以上に相当作り込まれている。俺たちヤバくね?」と火がついた感じです。夏休みの宿題みたいな稼働曲線のスケジュール感で進んでいきましたね。

―― 今回、問題に込めた意図を教えてください。

藤原 : ISUCON12の予選は、様々な解き方ができる問題にしたいと考えました。過去問を知っているチームがパターンで解く形になってしまうと練習量の勝負になってしまい、面白くない一面があります。やはり、発想であったり、アーキテクチャー的なことをガラッと変えたりとか、そういうところで勝負できる要素を入れたいと思いました。

そういった目論みもあって予選問題は趣向を凝らしました。ISUCONでは主にMySQLというデータベースが使われてきましたが、今回の問題では最初、MySQL、SQLiteと2つのデータベースエンジンが使われている状態を提供することにしたのです。

こうすることで、SQLiteをそのままで行くか、MySQLに乗せ換えるかといった戦略的な判断が必要になります。どっちに行っても予選は突破できるよう配慮しましたが、様々な解き方ができる問題を作るのは、ちょっと難しかったですね。

―― 参加者は、問題を見て時間内にできるかを判断しなければならなくなり、勝負としての面白みが増しますね。

藤原 : そう思います。ISUCONでは、手をつけても制限時間に間に合わないことが結構あります。8時間のうち6時間を過ぎてから大きな改造をし始めても間に合わず、残りの2時間は、どうにもならなくなって壊すだけで終わってしまうとか、そういうこともあります。延長がなく、8時間後に打ち切りなので「もっと早く判断していれば」という感想は多いですが、実際そうだと思います。

TwitterのトレンドになるほどISUCONは盛り上がっている!

―― 大会でのエピソードをいくつか教えてください。参加者からのリアクションなどはいかがでしたか?

藤原 : ヒントになってしまうため、競技中は参加者も発言することができません。それもあって、競技が終わったあとしか反応は見えませんが、今回は、ISUCON12の予選終了後にTwitterのトレンドに「MySQL」と「SQLite」が両方入りました。技術用語がTwitterのトレンドに載ることは少ないと思いますが、予選が終わって、みんなで話しているうちにトレンド入りしていて「すごいことをしてしまった」と思いました。良い問題だったと言ってもらえて、うれしかったですね。

―― ISUCONの盛り上がりがよく分かるエピソードですね。伊藤さんはいかがですか?

伊藤: 私は作問が初めてだったので、ドキドキしながら本選を迎えたのをよく覚えていています。ISUCONの競技開始のタイミングは、実際に本職で開発しているゲームをリリースした直後のような感覚でした。

ISUCONの終了1時間前に、スコアボードをいったんクローズする展開になりますが、これもスマートフォンゲームでよくあるイベントランキング終了1時間前みたいな緊張感に近い感覚があって、リアルなゲーム運用をそのまま8時間に濃縮してやった気分になったのが印象的でした。

―― 作問時に、スコアの動きはある程度予想されたと思いますが、大会中、予想外の動きが見えることはありましたか?

藤原 : 予選は、ほぼ想定通りでした。本選は1チームがものすごいスピードでスコアを上げていましたね。

伊藤: はい。本選問題は地道にチューニングを積み上げていくとスコアにつながるモデルだったので、しっかり時間に応じて線形にスコアが上がっていく動き自体はイメージ通りでしたが、最終的に優勝したチームが想像以上に速いペースでスコアを重ねていました。自分たちが当初想定していたスコアをガッと超えてきて、びっくりしました。事前に試し解きをしていなかったら、かなりヒヤヒヤしていたかもしれません。

―― 大会中は、問題作成者、運営側も上がってくるスコアを見て盛り上がって見ているライブ感があるのですね。

藤原 : 運営チームは1箇所に集まって見ているので、特にあると思います。最後の1時間は参加者は自チームのスコアしか見えなくなります。運営は当然ながら全て見えるので「すごい役得だ」と思いながら楽しく見ていました。

伊藤: 楽しかったですね。

―― 結果発表のときは、運営側も含めて、どんな反応がありましたか?

藤原 : 運営側は、終わった瞬間は無事に終わってホッとしているのが一番ですね。

確定した最終結果は、翌日に運営がもう1回、結果を追試してから出します。その前に競技は終わっているので、何を喋ってもよくなります。今回は運営と参加者はDiscordを使っていて、全員入っているチャンネルで感想戦をずっとやっていました。感想戦では、自分ができなかったことを他のチームがどう解いたかとか、上位のチームがどういう風に解いたかといったことが語られています。その感想戦が勉強になると話す参加者は多いようです。

―― 楽しく感想戦ができて、さらに勉強になるのですね。まとまった感想は、後日、出てくるのでしょうか。

藤原 : そうですね。ISUCON12では、たくさんブログを書いてもらえました。予選が終わったあとに130を超える記事が上がっていて、そこにそれぞれ自分のやったことや感想などが書かれているので、それを読むという感じです。

(参考)ISUCON12 関連エントリまとめ(ISUCON公式Blog)
https://isucon.net/archives/56836729.html

伊藤: 印象に残っているのは、時代の中で人気の言語などは推移していきますが、そんな時代の流れに逆らって、あえて自分の好きな、古くから愛されてる言語で挑まれていたり、そこに支持者が集まり、頑張れと応援の声が届いたりすることでした。個人的にもなんか良いなと思いました。

私はJavaのエンジニアです。最近、JavaはWebでは、昔に比べると下火に感じますが好きな言語です。実際にJavaで上位に入賞するチームが出てきたら、もっと違った気持ちで見られると感じられました。これは良い発見でした。

―― ずばり、おふたりはISUCON13以降、リクエストがあったら作問に対応する可能性はありますか?

藤原 : 実際、すごく大変です。時間がかかるのでほぼ仕事感覚です。仕事が終わったあとに、隙間時間でできる量じゃなくなっているので、会社としてちゃんと時間をある程度空けてもらわないといけなくなっています。なかなか調整が難しいですし、いろいろな人にISUCONで作問してもらいたい気持ちもありますが、またリクエストがあったら作問するかもしれないですね。

伊藤: 私はISUCON11が初参加だったのですが、ISUCON11では予選落ちをしています。今回ISUCON12に参加させてもらって、作問することでいろいろ勉強させていただきました。次回はぜひ参加者としてチャレンジしたい気持ちが強いです。

エンジニアのコミュニティをより豊かにするイベントがISUCON

―― 先月(2022年8月)、ISUCON12が開催されたばかりですが、次の「ISUCON13」に期待していることはありますか?

藤原 : 来年ですか。今は、ちょっと何も考えられないですよ、終わった直後で……。まず、ISUCON13がちゃんと開催されることを期待しています。

13の話ではありませんが、ISUCONは年に1回開催される大きな大会で、いきなり日本チャンピオンを決める頂上決戦が始まっていてちょっとレベルが高いと最近感じています。将来的には、ちょっとライトな感じの大会もできるようになって、裾野が広がるといいなと思っています。

伊藤: そうですね。藤原さんが言うように、裾野が広がって気軽に小さい大会も開催できるようになってほしいと期待しています。私はライト層として参加して、意外と難しさも感じましたが、実際に出てみたら楽しめるイベントだと体感しました。運営としてISUCON12に関わらせていただいて、すごく良い文化だと思ったので、長く続いてほしいですね。

―― これからのISUCONに、どんな人、どんなチームに参加してほしいとお考えですか?

藤原 : ISUCON12では予選に関連したエントリの中から「ブログ賞」を選びました。参加者のブログを読むと、サーバーサイドが本業じゃない方がけっこう出ていることが分かります。もし、「サーバーサイドのすごい人でないと、ISUCONは楽しめないのでは?」といった誤解があるのだったら、そんなことはないと言いたいですね。Webアプリケーションに関わっている人で、サーバーサイトがちょっとでも分かるなら、学びは必ずありますし、楽しいはずなので参加してくれる人が増えたらいいなと思っています。

伊藤: 同感です。ここ1、2年、コロナの影響もあってエンジニアの交流が減っていると思っています。そういう中でISUCONは、プログラミングを通じて、コロナや距離を超えて、エンジニア同士が接点を作れるすごく良い機会です。Webアプリケーション、プログラムを書くのが好きなら、社会人だろうが学生だろうが「輪」はつながります。プログラミングが好きな人に、どんどん参加してほしいですね。

―― 最後に、Qiita Zine読者にメッセージをお願いします。

藤原 : ISUCONには多くの技術要素があります。自分のやっている技術を、Qiitaなどで記録していくことがトレーニングのひとつになると思います。振り返りブログを細かく書いている人もいますが、やはり、何をやったらどうなったか、それがどういう意味があったか、なかったかを反復していくことで技術力がしっかり身についていくのだと考えています。書き残して、それを積んでいくことが大事だと思っています。

伊藤: ISUCONではエンジニアとして刺激がもらえます。人の輪も広がり、勉強にもなる場所だなと心から思えました。個人的な話ですが、作問に関わってくれた方に、私が開発しているゲームのファンの方がいらっしゃって驚きました。エンジニアをしていると、業界は意外と狭いことが実感できました。そういったエンジニアとしてのコミュニティを、より豊かにする意味でもISUCONはすごく良いイベントだと思います。そんな文化を楽しみたい方々に、ぜひ、参加してほしいと思います。

編集後記

制限時間8時間でWebアプリケーションの高速化を競うチューニングバトル「ISUCON」。競技後に問題に関係する用語がTwitterトレンド入りするほどの盛況ぶりに驚かされました。皆さんにお話を伺って、キャッチコピーの『文化祭症候群にかかろう』は真実だと伝わってきます。なによりも「ISUCONオーラ」が感じられて、その空気感に触れられることが羨ましく、非エンジニアの私ですら「参加してみたい」と思えました。この文化はとても魅力的です。興味を持ったエンジニアの方は、ぜひISUCONへの参加を検討してみてはいかがでしょうか?

取材/文:神田 富士晴


関連記事