パフォーマンス向上への飽くなき挑戦! さくらのエンジニアによるISUCON座談会 (後編)

はじめに

ISUCON(Iikanjini Speed Up Contest)は、ウェブサービスの性能向上を競うコンテストです。これまでに11回の大会が開催され、回を追うごとに参加者も増えて大規模なイベントとなっています。大会のレベルも非常に高く、IT業界の第一線で活躍しているエンジニアの方々でも、優勝の栄冠を手にすることはなかなか難しいです。

さくらインターネットはISUCONのスポンサーとして協賛しているだけでなく、多くの社員がコンテストに参加しています。また、過去にはISUCONの問題作成を担当したこともありますし、ISUCONの創設に関わったメンバーも在籍しています。

そこで今回は、ISUCONに関わったことのある社員の皆さんに集まっていただき、ISUCONではどんなことをやっているのか、何がおもしろいのかなどを、座談会形式でうかがいました。参加メンバーは以下の方々です。各々のプロフィールなどは前編の記事をご覧ください。

  • 長野雅広(kazeburo)
  • 江草陽太(ひなたん)
  • 関根隆信
  • 川畑裕行
  • 穎川和弘
  • 飛田一貴

前編のあらまし

前編ではこんな話をしました。

  • ISUCON立ち上げ当初のこと
  • ISUCONの運営体制
  • 運営側で用意するもの
  • 問題作成において考えていること
  • インフラの規模

それでは続きをお楽しみください!

チームでのISUCONの戦い方

法林:ここからは参加者目線でのISUCONの話も聞いてみたいと思います。ISUCONで出題された問題で、印象や記憶に残っているものとかありますか?

一同:……………………。

法林:実はあまり覚えてない?

江草:そうですねー。私だけかもしれないですけど、ISUCONに参加してあれこれやって、それをブログに書いたら、もうなんか疲れ切って記憶から全部蒸発するんですよ。揮発メモリだけで1日作業して、寝たら全部忘れるみたいな(笑)。

法林:そうなんだ。それぐらい集中しないとできないってことなんですね。予選って1日なんでしたっけ?

江草:予選も本選も、自分が問題を解くのは1日です。

法林:なるほど。1日でどれだけパフォーマンスを出せるかっていう、限られた時間の中での勝負でもあるんですね。

頴川:予選の場合は規模がかなり大きいので、ISUCON9は予選が大きく2グループに分かれて2日がかりで実施されてました。でも運営のコストもあるので、1日にしたほうがいいのでは、という議論もあります。

法林:それから、問題に対応する中でスコアを上げるためにいろいろやってみると思うんですけども、これすごくうまくいったみたいな策とかありますか?

江草:あくまでもうちのチームの場合なんですけど、Linuxでの作業が手慣れてるかどうかって、割とチームの作業効率を上げるために必要だなと思いますね。例えば、チームの皆からSSH公開鍵を集めといてサーバに設定できるとか、サーバを与えられた状態ではgit管理になってないので、GitHub上に作ったプライベートリポジトリでコード管理できるようにしたりとか。自動でスクリプト化してる人もいますけど、うちのチームではそういうことはしてなくて私がインフラ担当でやってるんで、サーバーの設定をいじったりコード管理できるようにしたりみたいな、そういうLinuxの操作が慣れてるかどうかっていうのは割と効くんじゃないかなと思ってます。

法林:基本的にインフラはいわゆるLinuxとかUNIX系のマシンなんですよね?

江草:そうですね。最近だとUbuntuですかね。

法林:江草さんと関根さんは同じチームで参加してるそうですが、チームで参加する場合の役割分担みたいなものはあるんですか?

江草:ありますね。3人のうちインフラ担当は私で、デプロイしたり、リポジトリをマージしたり、どの状態でどんなスコアだったのかみたいなのを記録するのは私の役割ですね。関根さんの話は後にして、もう1人が複雑なロジックを考える担当。競プロ(競技プログラミング)をやってる人でアルゴリズムに強いので、頭を使ってもらおうと(笑)。どうやって処理するのがいいかを考えてもらう担当みたいな感じになっています。関根さんはひょっとアイデアが出てくるタイプなんで、MySQLのチューニングとかをしてもらいながら、システムに潜む問題を見つけてもらったりとか。エスパー担当って感じ(笑)。そして3人ともやることが決まったら、手が空いてる人は実装と。そういう感じで役割分担してますね。

関根:お互いに他のメンバーができることがわかってるんで、これはアイツに投げとけっていう丸投げ方式です(笑)。

ISUCON参戦中の江草さんチーム (出典:ISUCON8 本選フォトレポート)

法林:長野さんも他の方と一緒に出てるんですよね?

長野:メルカリのときの同僚と一緒に出てましたね。

法林:やっぱりチームの中で分担があるんですか?

長野:そうですね。自分も割とインフラの担当で、OSまわりのチューニングをしたりだとか、データベースの設定を変えたりだとかっていうのもやりつつ、3人ともコードが書けるので、プロファイリングを取って、それを見ながら皆で話し合って、じゃあどこをやる?みたいなところで分担して始める感じですかね。

法林:なるほど。やっぱりチームごとに分担をいろいろ決めて、作戦を立てて問題に挑むっていう感じなんですね。

なぜISUCONは人気があるのか

法林:ISUCONは、600チームの募集定員があっという間にいっぱいになっちゃうぐらい参加者が集まるんですが、ISUCONになぜこんなにたくさんの人が参加してくるのか、どのあたりがおもしろいのかを聞いてみたいです。

長野:まず腕試し的なところがあるのかなって思いますね。いろんな勉強してきてる方が、自分がどこまでできるのか試してみたいっていう方がすごく多いんじゃないかなと思います。

あともうひとつ、何回もISUCONに出てる方は、こんな苦しいのになんで出るんだろうという方も結構いると思うんですよね。そこには何か中毒的なものがあるんじゃないかと。スコアが出るってのは面白いですよね。自分でソフトウェアを書いててもそうなんですけど、チューニングしてベンチマーク取っていい数字が出るとうれしいものです。それを繰り返すと中毒性があるっていう。

法林:中毒性があるんだ(笑)。なんかゲームのハイスコアを目指すような感覚ですかね。江草さんはどうですか?

江草:私が継続して参加してしまうモチベーションは2つあって、1つは先ほどkazeburoさんがおっしゃった通り、こういうコンテスト、ISUCONもSECCONもなんですけど、短時間で集中して何かをやって、しかも点数が出て順位が変わっていくとたぶんアドレナリンが出るんだと思うんですよ。「安全な障害対応」っていうんですかね。障害対応なんとかせなあかん!っていう、火事場の馬鹿力みたいなのを擬似的に再現しているんだと思います。

もう1つは、それに対して専用の準備があまりいらないんですよね。日々の、知識をつけたりとか、実務をやることによる経験とか、いろんな日々の積み重ねでチャレンジすることができる。そういうのが相乗効果となって、またやってみようかなってなるのかなと思います。

頴川:過去にISUCONの予選に参加した際は、中毒性からか休憩取るのを忘れてしまったりして……。そう言った競技としての面白さに加えて、有志でVagrant環境やAnsible playbookなどを開発してくださる方々がいらっしゃるのも強いですよね。

ISUCON11ではスコアランキングがYouTubeで配信されていました(出典:ISUCON11 オンライン本選ライブ中継)

技術力だけではない、ISUCONで求められる力

法林:ISUCONで求められる技術力っていうのはどんなものがありますか?いろんなのが求められるとは思うんですが。また、技術力だけではないのかもしれないので、他に何か求められる力みたいなものってありますか?

川畑:これ江草さんが言ってましたけど、ファシリテーション能力ってのは大事なんじゃないですかね。

江草:チームでやる場合には、チームとして何に取り組むか、何をあきらめるか、どういう作戦で進んでいくか、ある程度決めて短時間でギュッとやらないといけないので、状況を把握して何がいいか、何が一番できるかっていうのを決めるようなファシリテーションが重要だなと思います。

法林:そういえば、大概の人はチームで参加するんだと思うんですが、中には1人で参加している人もいるんですよね。

江草:最近いらっしゃったような気がしますね。

法林:なんか1人で出て優勝しちゃったみたいな結果を見たような記憶があります。

頴川:学生さんで1人で参加されて勝ってましたね。

参考:ISUCON10 本選の結果発表と全チームのスコア

法林:それって相当すごい人なんですよね。その日の問題がたまたまその人向きだったってことでもないだろうし。

頴川:結構複合的な知識が必要ですよね。スコアをきちんとこまめに取るみたいな部分もやらなくちゃいけないし。開催中てんやわんやになっちゃいがちだと思うんですが、1人でカバーできてしまうのはすごいと思います。

法林:求められる技術の幅みたいなのはかなりあると思った方がいいんですよね? それを1人でやれるってのは相当すごい人なんだろうな。

長野:その学生さんは「1人でやってると、チームで話し合うというオーバーヘッドがないというメリットはある」と言ってました。

関根:でも答えがわかっていたとしても、作業する手数が足りないですよね。やることはすごく多いんで。

法林:そういう意味ではやっぱり普通は3人いた方がいいんですね。

学生でも参加できるISUCON

法林:いま、学生さんが1人で参加して優勝したという話がありましたが、この中で学生のときから参加してた人はいますか? 江草さんはそうなんでしたっけ?

江草:私はISUCON5に関根さんと出たのが最初ですが、そのとき私は新卒で入社した直後でした。関根さんは当時学生でさくらのアルバイトでした。飛田さんが今回初めてってことは新卒で参加ってことなので、この中では関根さんが学生時代に参加した唯一の人になるかなと。

法林:飛田さんは学生のときはISUCONとか知ってたんですか?

飛田:存在は知ってましたね。

法林:学生のときは出ようという話にはならなかったんですか?

飛田:どちらかというとハッカソンとかの方が好きで、そういうのには出たんですけど、ISUCONも含めてコンテスト系はあまり出たことがなかったです。

法林:ISUCONはどういうきっかけで出ることになったんですか?

飛田:同期としゃべってて、なんか流れで出ることに…。

法林:それは同期の人が出たいって言ったって感じ?

飛田:どうなんですかね。なんか気がついたらエントリーしてました。

法林:参加してみてどうでした?

飛田:普段の業務ではVPSのコンパネとかAPIを開発しているとはいえ、ミドルウェアとかをガッツリ触る機会っていうのがあんまりないんですね。ですので、いろんなミドルウェアの実践的な技術みたいなのが身について面白かったです。

法林:1回出てみて、また出たいっていう感じですか?

飛田:そうですね。1年後、もうちょっとちゃんとスキルをつけて。

法林:そっか。1年後の自分はどれぐらい腕が上がってるんだろうみたいなことを試す場としても使えるわけか。なるほどね。それが、多くの人が続けて参加する理由にもなってるのかもしれないですね。

実務が役立つISUCON、実務に役立つISUCON

法林:先ほど江草さんの話に「普段やってることがISUCONで使える」というのがありましたが、ISUCONで学んだことや取り組んだことは、実際の皆さんの業務の中で役立ったりすることもあるんですか?

江草:どっちがどっちかわかんないんですよね。業務のスキルがついてるとISUCONのスコアが上がるのか、ISUCONの経験によって業務がよりできるようになるかちょっとわかんないんですけど、関連はあると思っていて。

さっきファシリテーションの話をしましたが、障害対応なんかはまさにそうだと思っていて、切り分けを行い、誰かがリードしないといけないなんてまさにISUCONでやってることと同じような性質があります。あるいは、プログラミングとかシステム開発だと、その与えられたコードを読み、実装がどうなってるかを把握し、あるいは本来何をするのが目的で書かれているのかっていうのも知った上で、システムの再設計をすることになるんですが、その再設計するための設計力、実装力を身につけることもできます。ウェブアプリケーションがテーマなんで、実際の業務に近いっていうのはあると思います。

頴川:アプリケーションの実装もそうだし、RDBMSのインデックスを貼ったり、負荷計測や問題の原因調査をすることは業務でもやると思います。あと、ISUCONでカリカリにチューニングするために細かいところをいじって、OSだとかミドルウェアの「こんな仕様あったんか!」っていうのを発見するのは勉強になったりしますよね。

法林:頴川さんは以前にさくらのイベントでも発表してもらったことがありますが、あれもこういうのに関係あることなんですか?

参考:バグ調査やパフォーマンス改善に役立つ!eBPFを用いたトレーシングについて(頴川さんの発表を記事化したもの)

頴川:bpftraceの方はどっちかというと趣味の方面で知ったんですが、もしかしたらISUCONでもなんか近いことができたりするかもな、みたいなのはまったくなかったわけではないです。

コロナで反省会ができなくて寂しい

法林:ところで、ここ2年ぐらいはコロナのせいで、現場に集まってこういうことをすることができないわけですが、ISUCONにオンラインで参加して変化があったなと思う部分ってありますか? 例えば、チーム同士のコミュニケーションでちょっと…みたいなこととかあったりするんですか?

長野:私は終わった後、新宿とか渋谷とかに集まって、あそこがどうだったこうだったとかを話し合う会をしてましたけど、今はそれができないんですよね。それがちょっと寂しいかなって。

江草:実際、オンラインよりもオフラインの方がチームの作業はやりやすいんだけど、競技にはあんまり影響はなくて、その後の、kazeburoさんが言ったような雑談をするのがZoomとかだと、なんかちょっと…っていうのは感じますね。

法林:なるほど。なんか競技以外の部分で影響があるって感じですね。

江草:チームって言っても3人なんで、3人だったらオンラインでもそんなに大きな影響なくできてるんだと思います。

本選を会場でやっていた頃は、競技終了後に懇親会をしていました(出典:ISUCON9 本選フォトレポート)

運営への感謝、そしてこれからもよろしく

法林:今後も皆さん、何らかの形でISUCONには関わる感じですか?

長野:そうですね。うまくいってもいかなくても参加したいなというのは思います。新しいことに挑戦して少しでもそこから得るものがあれば出続けたいと思います。

法林:スタートしたときは20チームだったのが今ではとんでもない規模になってるんですが、何かこう、感慨深いものとかありますか?

長野:そうですね。自分はもう、半分以上の回は普通の参加者として出てるんで、ここまでの規模にしていただいたのは櫛井さんのおかげですね。常に頭が下がる思いです。それから、問題作成はすごい苦しいのに、毎回やってくださってる方々が本当にありがたいですね。

江草:櫛井さんはすごいなと思います。ここまでやっているのはもう櫛井さんの力というか気持ちによるものだと思うんで。

法林:皆さんありがとうございました。皆さんの話を聞いていて、ISUCONが多くの人に愛され、そしてエンジニアのスキルアップに大きく貢献していることがよくわかりました。次回はどういう形で開催されるのかわかりませんが、これからもISUCONを応援していきたいと思います!

「ISUCON」は、LINE株式会社の商標または登録商標です。