悲願のISUCON初優勝を果たした「NaruseJun」、ハイスコアの決め手は水平分割と「Go筋力」?:優勝チームに聞く、ISUCONの魅力
年々盛り上がりを見せているWebサービスのチューニングコンテスト「ISUCON」。2022年8月27日に開催されたISUCON12の本選を制したチーム「NaruseJun」のメンバー3人に、ISUCONの魅力を聞いた。
「エンジニアの総合格闘技」や「エンジニアの大運動会」などと表現されるWebサービスのチューニングコンテスト「ISUCON」(いい感じにスピードアップコンテスト)には、毎回学生も含めて多くのエンジニアが参加し、予選へのエントリーも激戦となるほど年々盛り上がりを見せている。
2022年7月23日に行われた「ISUCON12」のオンライン予選には、698組、1657人(うち学生は98組、246人)が参加。激戦を勝ち抜いた30組、84人(うち学生は8組、22人)による本選が8月27日に行われた。
今回お題となったのは、椅子を放置して育成し、その椅子を売ってコインを手に入れて装備を強化し、さらに椅子を効率よく生産していく……という設定の「育成型放置ゲーム」だ。サーバ5台で構成されたWebアプリケーションには、例によってログイン処理をはじめとするさまざまなボトルネックが仕込まれており、参加者は、フロントエンドやデータベースに関する知識を生かし、モニタリングをしては修正を加える作業を繰り返す、地道なチューニングに8時間にわたって取り組むことになる。
このISUCON本選で、Goの実装で34万1258点という高いスコアをたたき出し、2位に約10万点の差をつけて見事優勝を飾ったのが、チーム「NaruseJun」だった。出場者中最初に5万点を超えたチームに送られる「特別賞」を開始早々にゲットし、その後も安定して高いスコアを記録しての、王道を行く優勝だ。長年有力候補と見なされ、ようやく念願の優勝を飾ったNaruseJunのメンバーに、その思いを聞いた。
学生時代のサークル活動を母体にした「NaruseJun」
NaruseJunは、東京工業大学のデジタル創作同好会「traP」を母体としたチームだ。卒業し、それぞれ別の会社に就職した後も一緒に活動しており、バックエンドエンジニアの@to-hutohu(大橋滉也)氏、ポケットサイン 取締役 CTOの@sekai(澤田一樹)氏、ピクシブで広告配信基盤エンジニアを務める@takashi(岸本崇志)氏の3人で構成されている。
traPは、ゲーム制作やDTM、プログラミングなど幅広いデジタル創作活動を展開しているサークルで、中には競技プログラミングコンテストの他、セキュリティ系コンテストのCTF(Capture The Flag)、危機管理コンテストなどに参加経験を持つメンバーもいる。「学生だった当時、traPはサークルの公認化を目指していて、実績を出すためにいろいろな大会に出場していました。確か、僕か@sekaiさんのどちらかがISUCONを見つけてきて、こんなものがあるから参加しようと呼び掛けたのが初めて出場したきっかけだったと思います」(@to-hutohu氏)
traPからは、今やOBチームとなったNaruseJun以外に、5〜6チームが毎年ISUCONに参加している。自分たちでポータルや環境構築をして「サークル内ISUCON」を開催する他、年々蓄積してきたナレッジをベースにした講習会も開いているそうだ。
そこまでしてISUCONに参加する理由は何だろうか。単純にプログラミングやエンジニアリングが楽しいということに加え、スポーツ大会と同じようにスコアが示され、順位が決まるため「燃える」ことが醍醐味(だいごみ)だという。「エンジニアの大運動会のような感じで、自分が普段やっている仕事とは別の尺度で、どれくらい実力があるかを競い合えるのが面白いなと思っています」(@to-hutohu氏)
特に、知識偏重ではなく、エンジニアリングを通して培ってきた「感覚」が問われるところにに醍醐味を感じるという。さらに「『このアルゴリズムを知らないと絶対に倒せない』というのではなく、取りあえず自分に分かるところ、直せるところから直していくことで、ちょっとずつでも着実に得点が上がるので、泥臭い戦い方もできるところが面白いです」と@to-hutohu氏は述べた。
@sekai氏は「ISUCONを巡ってはいろいろなところで、『推測するな、計測せよ』と標語のように言われていますがその通りで、エビデンスをきちんと集め、どこが悪いのかを探すという部分は、他にはあまりない競技性だと思います。また、過去の回で『仕事より忙しい8時間』という表現があったと思いますが、僕はこの言葉がめちゃくちゃ好きで……。ISUCONの出題は、とてもじゃないですが8時間でやる分量ではありません。限られた時間でそれをいいところまで持っていくために、どれを選択し、優先して手を打っていくか要素が問われるのも好きなポイントです」と語る。
ハイスコアの決め手は?
30万点を超えるハイスコアをたたき出した実力を持つNaruseJunだが、学生時代に初めてに参加したISUCON7では思うように結果が残せなかった。だが2度目の参加では学生で2位、全体でも4位に入る好成績を残し、そこからいよいよ本気で優勝を狙うようになっていった。
それ以前は別のチームでエントリーしていた@takashi氏が加わって今のチーム構成になった3度目のチャレンジでは、予選でいいスコアを残しながら、ISUCONの厳しいところでもある再起動試験落ちとなってしまった。ただ、運営からの招待枠で非公式に本選に参加し、そこで最高点を出せたことが自信につながった。「このチームの実力なら優勝を狙えるぞという確信があって、優勝を目指してきました」(@to-hutohu氏)
ただ、ISUCON11では2位に入賞するなど毎年惜しいところまでいきながら、トップは他チームに譲る時期が続いた。
@sekai氏はこれまで「今年は優勝します」と周囲の同僚に公言し、自らにプレッシャーをかけながら挑戦を続けてきたが、ようやく悲願を果たしたことになる。職場の同僚やサークルの仲間たちからも、「おめでとう」と祝福の言葉をもらったそうだ。
では、何が高スコアの決め手になったのだろうか。1つは、公式のタネ明かしでも触れられている、アプリケーションの「水平分割」だった。
「競技の始めの方でソースコードを読み込んだときに、『これ、水平分割がいけるんじゃないか』という話になり、早い段階で入れました」(@sekai氏)。それが効いて5万点の特別賞に到達しただけでなく、その後地道に加えていった改善についても大きくスコアを伸ばす効果をもたらしたと振り返る。
「並行して、n+1問題の解消によってクエリの発行回数を少なくするといった改善を組み合わせることで、早い段階で高いスコアを出すことができました」(@takashi氏)
NaruseJunでは、誰がインフラで、誰がデータベースといった具合に特に役割分担を決めているわけではない。共通の分析、計測基盤は用意するが、その結果を見てそれぞれが「ここは直した方がよさそうだ」と考えたところに随時取り組む形で問題を攻略してきた。
となると、同じ問題にメンバーが別々に取り組んでしまう事態が起こりそうなものだが、過去のISUCONにもリモートで参加しており、特にコミュニケーションに支障を来すこともなく進められた。むしろ、「自宅から参加する方が、普段から使っている3枚のモニターも使えるし、とても便利でした」(@to-hutohu氏)
さらに@sekai氏は、「早い段階でリードを伸ばしていたこともあって、最後に見直しをする時間が取れたのも大きな要因かもしれません。僕らの計測が不十分という側面もあると思いますが、最後の1時間ぐらいはやることがなくなってしまったので、けっこう長い時間を再起動試験対策に使うことができました」と述べている。こうして、再起動試験で涙をのむこともなく、堂々の優勝を飾った。
ISUCONを主催するLINE株式会社の941(櫛井優介)氏は「ずっとトップにおり、そのまま走りきったという印象が強く、やれることを全部、最速でやっているチームだと思います。昔から強さを知っており、ISUCONを盛り上げてくれている推しチームの一つなのでうれしいですね」とNaruseJunを評した。
ただ、実力を見せる裏で、さまざまな努力も重ねてきたのも事実だ。例えば@to-hutohu氏は、ISUCON前の2週間ほどは、毎晩予習にいそしんだ。「自分はチームの中で本番の瞬発力が一番ないので、事前準備で貢献しようと考えています。何か速くできるネタはないかなと探したり、実際の競技でGoのコードを書くための『Go筋力』を養っておくために準備したりしてきました」。そのGo筋力は裏切らなかった。
実務はもちろん、コミュニティーへのつながりも生まれるISUCON
ISUCONは、教科書で学べるアルゴリズムや知識だけでなく実践的な力を身に付けるという意味で、エンジニアの業務においても大いに役に立つという。
「もちろん、仕事じゃこんなコードは書かないだろうな、と思いながらやっていることもけっこうあり、そのまま直接生かせるわけではありません。けれど、推測せずにきちんと計測し、ボトルネックの当たりを付けるといったアプローチや意識は、ISUCONを通して強くなったと思います」(@sekai氏)
スキル以外の領域でも、エンジニアとして得るものは多い。「採用試験の面接で、面接官として出てこられた方とずっとISUCONの話で盛り上がり、それが採用につながった面があると思います。それ以外の場でも『ISUCONに出たんですよ』というと、『自分もです、面白いですよね』といった話になり、コミュニティーにつながるのもISUCONのいいところだなと思います」(@sekai氏)
それ以上に、本質的にエンジニアのお祭りであり、悔しい結果も含めて楽しめる場だという。
「いろんなスポーツ選手が集まる運動会のように、普段、いろいろなプロダクトに携わっている人たちが一堂に集まって、1つのプロダクトを改善していくところが、めちゃくちゃ面白いなと思います。エンジニアが皆で楽しめる一つのお祭りとしてこういうイベントがあるのは、すごくいいことだと思います」(@to-hutohu氏)。そんな場に本気で参加し、準備することで、自分の能力を伸ばし、業務に持ち帰れることもたくさんあると実感しているそうだ。
また、異なる会社に所属するエンジニアがフラットに参加し、会話できる場としても貴重だという。「会社が違えばプロダクトについて詳しく話すことはなかなかできませんが、ISUCONだとそれができ、『こんなチューニングをするとこんなにパフォーマンスが伸びるんだ』『こんな考え方もあるんだ』ということを、それこそ日本中のエンジニアと話せるのがすごく面白いと思っています」(@sekai氏)
@takashi氏は、「毎年、運営の方々が創意工夫をしていろんなタイプの問題が出てくるので、毎年知らない解法ややり方を学べます。また、同じ問題でもチームによって違うやり方を採用したりしていて、いろんな知識に出会えるのも魅力だと思っています」と述べている。
年々ISUCONが盛り上がり、参加者が増えるにつれ、「自分たちにはとても無理」と思ってしまう人がいるかもしれない。だが、結果のいかんを問わず、「ランニングを走り追えた後のような爽快感を味わえるという楽しさもあります」と@sekai氏。ぜひもっと多くのエンジニアに参加し、楽しんでほしいとした。NaruseJunもまだまだ、次のチャレンジを目指すという。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「ISUCONって、本当に楽しい!」――“新体制”のISUCON11運営チームに聞くその醍醐味
出題されるWebサービスを決められたレギュレーションの中でチューニングし「いい感じにスピードアップ」することを競うコンテスト、「ISUCON」。2021年9月18日に本選が開催される「ISUCON11」の運営チームに、出題の大変さやISUCONの楽しさ、醍醐味(だいごみ)を聞いた。 - 衛、走る――変わらない価値を追求し続ける、Hardeningの挑戦
複数人でチームを組んでビジネスを「衛る」技術を競うイベント、「Hardening 2020 Business Objectives」が沖縄で開催。「ビジネスの目的」は何なのか、それをどのように守っていくのかを9チーム、約100人の参加者が体験した。 - Kaggle初心者のためのコンペガイド ― Titanicの先へ
Kaggle初心者がKaggleに挑戦した過程や得られた知見などを記事化していく新連載。初回である今回は、準備編として初心者向けにコンペを簡単に紹介します。また、連載目的やKaggleを始めて「これが良かったよ」という筆者の体験を共有します。