ちょっと気になる隣の技術畑

最終回 チューニングが止まらない!
プログラミングの魅力

話し手 櫛井優介 KUSHII Yusuke

【話し手】
櫛井優介 KUSHII Yusuke

LINE ㈱ Developer Successチーム所属。技術広報として技術系イベントなどを担当。インターネットでは「941」というハンドルネームで活動することが多い。
Twitter @941
Blog https://blog.kushii.net/

本コーナーでは技術へのタッチポイントを増やすことを目標に、各分野で活躍されている方をお迎えします。今回はLINEが運営窓口を担当するISUCONをテーマに、成り立ちや運営、エンジニアを夢中にするパフォーマンスチューニングの魅力を941さんと紹介します。

ISUCONの魅力とは

日高: 今回のテーマはISUCONです。どういうものか紹介いただけますか。

941: ISUCONとは「いい感じにスピードアップコンテスト」の略称で、パフォーマンスチューニングの大会です。

日高: 大会では毎年違うテーマで問題が出ていますよね。

941: ええ、チームで問題を解いてスコアを競います。

日高: 本格的な大会だと聞いています。

941: 優勝賞金も100万円と高額ですし、決められたレギュレーションの中でギリギリまで高速化を図る楽しみがあります。

日高: そのような競技性の高さが魅力なのでしょうか。

941: ひとことでは難しいので背景から入りましょうか。2011年に1回目を開催していますが、私が言い出しっぺというより当時同僚だったtagomorisさん、kazeburoさんが何でもありのチューニングコンテストがやりたいと。

日高: 当時の941さんはライブドアにお勤めでしたよね。

941: メディア事業部に所属していてイベント窓口の立場でした。インフラを担当していた2人がやりたいことをまとめてくれて、執行役員だった伊勢さんにお金とサーバを頼んで、じゃあやりましょうと。

日高: モチベーションはどこにあったのでしょう。

941: Webアプリケーションのチューニングで「何でもあり」をやれる大会が欲しかったんですね。そのころはいわゆるパブリッククラウドではなくオンプレが中心でしたし。

日高: オンプレだと、クラウドのようにWebサービスの成長にあわせてサーバ構成を柔軟に変更していくことができない。

941: そうです。いかに今あるリソースを活用して良いサービスを作るか、すごく大事だという共通認識があったんです。その技術を競う場が欲しかった。

日高: 切磋琢磨して技術を伸ばすぞ、と。

941: 2011年の1回目では20チームが参加しました。今と比べると小規模ですが、みんな夢中になって、とても盛り上がってるねと。3回目には現在と同じ優勝賞金100万円に拡大し、2022年のISUCON12では700チーム弱が参加する規模になっています。

自分と向き合える瞬間

日高: そこまで多いと優勝は難しい気がしますが、参加者はどこを楽しんでいるんですか。

941: 大会の世界観としてはISUCON社の社長が「8時間後にバーンとCM打ってアクセスたくさんくるから、いい感じに準備しておいてね!」といきなり言い出したところが出発点ですねぇ。

日高: デスマーチっぽい(笑⁠⁠。

941: 実際の制限時間も8時間です。時間内で与えられたWebアプリケーションをとにかく早くしろというミッションが明確にある。

日高: 集中できる環境になっていると。

941: そうです。利用できるリソースも固定です。外部のサーバリソースを自分で調達してはいけません。

日高: それ以外は自由にできる?

941: レギュレーションはありますがOSを変えても、Webアプリケーションを書き換えても、プログラミング言語を変えてもかまいません。

日高: プログラムの動きを突き詰めてパフォーマンスの改善を図れる。

941: ボトルネックを見つけて、それをどうやって解消するかを考えるところに楽しみがあります。

日高: そうやって技術的な課題に集中できる時間は貴重ですね。

941: 運営が用意するベンチマーカーでは、それらの試行錯誤を評価してスコアを算出します。

日高: 技術者としてのがんばりを客観視する体験ができるわけか。

941: ええ、ISUCONでの体験は自分で開発しているWebサービスにも活かせますし、より良いものづくりができるようにループしていきます。

日高: サービスのボトルネックには何らかの類似性がありますし、このフィードバックループが働くのはたいへんすばらしいなと感じました。

941: 大会の問題は毎年変わりますが、流行のものや参加者がよく知っているようなWebサービスをテーマに作られていますね。ただしWebサービスを使うのはベンチマーカーなので、参加者はWebフロントエンドをほとんど見ずにチャレンジしているかもしれません(笑⁠⁠。

日高: 画面に注目するよりベンチマークのスコアが気になりますからね。業務ではWebサービス全体に手を入れることは当然少ないわけですし、システムを俯瞰ふかんしてチャレンジできるのはまたとない機会だと思います。

勝つための戦略がある

941: 初参加者は腕試し的なところがあって楽観的に挑むんですよ。言葉を選ばずに言うと「まぁ楽勝だろう」と。

日高: ⁠俺ならイイ線いけるぞ」と前のめりでチャレンジする。

941: でもだいたいの人は負けるわけです。全部で700チームもいるので。

日高: 普通に考えるとそうですよね。

941: 負けることで、すごく悔しくなって世間の広さを知るわけです。自分のスコアと見比べて、あんな猛者がゴロゴロいるのかという驚きがたくさんある。

日高: 大きなコンテストならではの経験です。

941: それは社内に戻ったあとも勉強する原動力になるし、1年頑張ったら自分の実力を試したくなる。

日高: 次のISUCONでスコアがどれだけ上がったんだろうかと自分の実力を知りたくなってしまう。

941: スコアを上げるにはどうすればいいのかと勝つための戦略を考えるようになります。

日高: そういう感じでハマっていくんですね(笑⁠⁠。

941: 改善策を試してスコアが上がったら効果があったなと感じられますし、差が出ないなら無駄なことをしてしまったぞ、着目点が違うなと気付ける。

日高: 限られた時間を有効に使う戦略が生まれてくる。

941: 王道としてはドキュメントを読み込んで無駄撃ちを減らす、デプロイを効率化する、ボトルネックを見つける性能計測や分析プロファイルの作成をするなどがあります。競技なので何をしたら点数になるのか、何が失格行為なのかといったルールの把握は大事ですね。基本ですが作業の方針に大きく影響します。

聞き手 日高正博
画像

楽しみを共有できる場

日高: 作業量が多いのでチームで取り組むのが普通なんでしょうか。

941: ISUCONでは1チーム3名で作業にあたることが多いです。それぞれの得意分野を活かせるし、作業量も分散できる。

日高: この部分も業務に似ていますねぇ。

941: チームは会社の同僚や友人で参加する傾向があります。時間も限られていますし、課題を見つけたときの意思疎通も早いですから。

日高: 一人だと打開できない課題も、仲間と取り組むことで解決できる。

941: ひたすらアプリケーションを触る人がいて、データベースのチューニングをする人がいて、待ち時間に手持ち無沙汰になるような人も出てくる。

日高: 当日の様子が目に浮かびます。

941: ISUCONではリアルタイムでのフィードバックも用意していて、現在のスコアや変化があったチームを表示しています。駅伝のテレビ中継をイメージしてください。

日高: 周囲の状況がわかりやすい。

941: 自分が何位なのかで盛り上がれるし、応援している人もどれぐらいすごいのか変化を見て楽しめます。

日高: わかりやすい説明があるのはいいですね。間口が広くなります。

941: 競技性を高めるために最後の1時間は誰にもスコアをみせないんですが、そのタイミングで大きな改善案を仕込むチームもいますね。

日高: 隠し玉じゃないですか。

941: それまでに準備しておいて、ここだというタイミングでしかける。1年間やってきたんだぞという意気込みがあります。

日高: ドラマを感じます。チームこそ違いますが、お互い同じ問題に取り組んでいるわけで不思議な連帯感もありそう。

941: 終了後の懇親会は盛り上がりますよ。あのボトルネックはどう解消したんだとかチームを超えてみんなで話し合う。

コミュニティの力

日高: ここまで盛り上がると運営も大変そうですが。

941: ありがたいことにISUCONをレベルが高く良いものだと期待していただく機会も増えました。

日高: 運営では毎年、問題も新しく考えていますよね?

941: 作問は非常に難しいんです。競技性が高くてバランス感覚というか独特の感性が必要です。

日高: 運営ノウハウを蓄積しているからといって苦労が減るわけではありません。

941: ISUCONは強いエンジニアが勝ちに来る真剣勝負の場にもなっているので、そのエネルギーには真摯に向き合いたい。

日高: 同じ技術畑の人間ですし、感じ入るところがあります。

941: 大会を続けていく中では参加者の立場から次は運営をしてみたいと参画したスタッフもいます。

日高: 同じ目線に立った経験があるからこそ次を作れるわけですか。

941: ビジョンに共感して作る側に回ってもらえるのは一番うれしい。それ以外にも社内ISUCONという企業内イベントを企画する事例もあります。

日高: 社内のものは一層参加しやすそうです。職業エンジニアにとってパフォーマンス改善は馴染み深いテーマですし。

941: 最近は学生にも広がりつつあります。というよりすでに学生が強いです。

日高: ISUCON10では上位3位を学生チームが独占していますよね。熟練したエンジニアが強い場合、仕事で使っているという想像力が働きますが、学生の場合はどういう背景があるんでしょうか。

941: 僕らもいろいろ考えてみたんですよ。ひとつは過去問の存在です。

日高: 受験生のようなキーワードが出てきました。

941: 我々は過去問題をすべてアーカイブして、いつでも解けるように整備しているんですね。手順さえ踏めば何度も反復練習ができるわけです。

日高: 学ぶ環境があるので本番一発勝負に頼らなくていい。

941: トライアンドエラーを試す環境に加えて、学生には時間がある。

日高: フルタイム雇用では、どうしても平日が忙しく、制約がでてきますし。

941: 長期に渡って集中力を維持する体力もありますので、社会人が勝てなくなるのではという話は早いタイミングから言われていました。

日高: 社会人から学生まで幅広い人が参加するのは競技性の高さだけではなく、自分の技術を磨くという根本的な欲求もあるんでしょうね。それが業界全体の底上げにもつながっている。

941: 参加者を増やすための努力もしているんですよ。事前講習会では課題を解く考え方を紹介したり質問に答えたりしています[1]。PR活動という意味ではYouTubeで告知動画を作って発信しました。

写真1 世界観を短時間で伝えるため、声優を起用した動画も作った
写真1

日高: 技術系のイベントで公式動画があるのは珍しい。⁠良いものだから広げたい」という業界の認知がいります。

941: スポンサーも、その認知に助けられています。過去の参加者が今ではそれなりの役職についていて予算を通してくれる。みんな優秀なのでスポンサーとして帰ってきてくれてカッコいいなぁと。

競技の普遍性

日高: 話を聞く前は競技性が高く、技術を突き詰めるストイックさをイメージしていたのですが実際は大きく違いました。周りを巻き込んで楽しめる要素も多い。

941: チームでの参加もそうですがISUCONに参加しますと言ったら応援してくれる人も増えてきました。

日高: 参加していない人でも一緒に盛り上がれるのはいいですね。941さんは実施にあたって、どのような点を重要視しているんでしょうか。

941: ひとつは継続性です。特に出題できる人が増えるといいと思います。

日高: 将来を考えると運営する側が増えてほしいから?

941: いつかなくなってしまう可能性というのは常にあると感じています。現に発起人の2人は現在の運営企業には所属していませんし。ISUCONの商標自体はLINEが持っていますが、運営や参加はいろいろな方の善意や協力で成り立っているわけです。

日高: 技術コミュニティを支えるスタッフはボランティアが多いですよね。

941: もちろん喜んで参加してくれている人がいる間は続けたいですが、問題を作れる人がいれば、これまでどおりのパッケージではないにしろコンテスト自体は開催できます。

日高: どんどんと種を蒔きたいと。

941: 問題を作る人と解く人がいれば競技自体は成り立つわけですし。クラウド時代になっても中身を理解しないで使うというのはあり得ないので、パフォーマンスチューニングの競技は本質的には意味を成し続ける。

日高: 単純にインスタンスを増やすだけでは解決できない問題はたくさんある。

941: チューニングできる技術を持った人が増えたほうが日本のインターネットのためにもなります。そういう人を増やすためにも作る人を増やしたい。

日高: 競技には技術向上のためのヒントがたくさんある。

941: はい。習得した技術で自分のサービスを良くしようと考えてもらえたら、世の中のWebサイトが速くなってユーザー体験も向上していきます。事業へサイクルが広がって業界全体に還元できるよねと。

日高: そのために必要なことをやっていくわけですね。2023年のISUCON13も楽しみです。ありがとうございました。

おすすめ記事

記事・ニュース一覧