見出し画像

秘訣は「Teamwork」と「User Focus」。ISUCON10本選に出場した新卒エンジニア3人にインタビューしてみた

こんにちは、マネーフォワード 栗田です。

先日、ISUCON10が開催され、マネーフォワードのエンジニアも多数参加しました。

ISUCONとは?
”Iikanjini Speed Up Contest” の略で、8時間の制限時間の中で出題されたWebサービスを高速化するコンテスト。今年で10回目の開催。1人〜最大3人までのチームで出場できる。優勝賞金は100万円。今年のISUCON10予選には490チームが参加し、33チームが本選に出場。

今回の記事では、20新卒3人でISUCONに参加し、見事予選突破・本選出場したメンバーにインタビューを行いました。

登場人物紹介

※インタビューは完全オンラインで実施しました。

川上航平(かわかみこうへい)(左上):クラウド横断本部 わり算グループ。サービス間の複雑な依存の解決や改善に取り組んでいる。Scrapboxをこよなく愛している。
中谷貴人(なかたにたかと)(左下):サービス基盤本部 インフラ部 サービスインフラグループ。サービスを迅速かつ安定に提供できるようなインフラの構築と運用を担当している。お笑いを見るのが好き。
佐々木邪馬斗(ささきやまと)(右上):CTO室 共通サービス開発部。マネーフォワードのサービス内、メール送信を担うマイクロサービスの新規開発を担当。「コードと筋トレは裏切らない」を座右の銘に掲げ、筋トレをしながらエンジニアをしている。
栗田茉緒(くりたまお)(右下):サービス基盤本部 インフラ部。エンジニア発信のプロジェクトにも取り組んでいる。本記事のインタビュアー&執筆を担当。いままで邦ロックと女性アイドルしか聴いてこなかったが、最近ジャニーズにハマり始めた。

--- まずは、ISUCON10お疲れ様でした!

3人:ありがとうございます!!!

チーム「hoge」結成秘話

--- 3人がチームを組んだきっかけはなんですか?

川上:実は、僕と中谷くんは去年もISUCONに参加しているんです。去年の内定者懇親会で僕と中谷くんが知り合って、最初は中谷くんに「ISUCON出よう」って声をかけてもらいました。そして、さらにもうひとり別の知り合いを誘って出場しました。そのときのチームが母体です。
中谷:去年は惨敗でした...。反省会開いても意味ない、ってぐらい何もできませんでした。競技時間内に何をやればいいか、全然わからなかったです。
川上去年のISUCON9で競技中に何もできなかったのがすごく悔しかったんです。それだけは回避したい、挽回したいと思って、今年も出ることにしました。
佐々木:2人は去年負けたのが悔しそうでしたね。

--- 佐々木くんは今年から参加なんですね。

佐々木:元々ハッカソンのようなイベントには興味があったんですが、ハードルが高そうだなと思っていました。そんなときに20新卒のSlackチャンネルで、2人がISUCONに出る人を募集していたので、これはいいチャンスだなと思って、その誘いにのって参加することにしました。

--- ちなみに、チーム名の由来ってなんですか?

川上:去年と同じチーム名です。去年はチーム名を出すときになにも思いつかなくて、エンジニアが変数によく入れるhogeを適当にいれました(笑)
いざ出場してみたら、みなさんチーム名が凝っててびっくりしました...。
今年のISUCON本選ではチーム紹介スライドを提出することになっていたんですが、僕らはスライドにも全然時間かけてないです。たぶん30秒ぐらい。

(実際のチーム紹介スライド)

中谷:僕、そのスライドの編集画面にすら入ってないです(笑)
佐々木僕らはスライドを作りにきたんじゃなくて、あくまでISUCONをやりにきたので(ドヤ顔)

3人の役割分担

中谷:インフラ担当です。
佐々木:主にアプリケーションの仕様をみていて、アプリケーションコードを変更してチューニングするのもやっていました。
川上:2人の作業をみつつ、インフラとアプリケーションの接続や、計測部分を主に担当していました。指揮担当ですね。

--- 今回はISUCONが完全オンライン開催でしたが、3人は集まって作業したんですか?それとも3人ともオンライン?

川上予選も本選も3人全員オンラインでやりました。オンラインならディスプレイなどの作業環境がいつもと変わらないですし、8時間の長丁場に備えて食事や飲み物などを準備しておけるので、オンラインにして良かったと思います。
佐々木:リモート慣れしている経験が活きました。僕たちは入社時からずっとリモートメインで仕事をしているので。でもLINEさんのオフィスには行ってみたかったです(笑)
(注:去年まで本選はオフライン開催で、LINE株式会社のオフィスにて行われていました)

--- リモート世代だ...。オンラインで取り組むにあたって、コミュニケーションには問題なかったですか?

川上:問題なかったです。普段から仕事でも研修でもそれ以外でも、オンラインでやりとりしていたので。お互いを知っていたからこそ、完全オンラインでやれたんだと思います。

僕たちが予選突破できた理由

--- 予選前に練習ってやっていましたか?

川上:通話して1回練習しました。あとはSlackでのやりとりです。
佐々木:当日に誰がなにをやるべきかを調べていました。実際に手を動かしたのは、川上くんが言っていた合同練習と、前日にGoの計測ツール(アプリケーションの各処理にかかる時間を計測して、どこがボトルネックになっているのか判断するためのツール)の使い方を覚えたぐらいです。平日は仕事があるので、仕事終わりや休日に準備をしていました。
川上:僕たちは結構ぎりぎりで計測ツールの使い方を覚えました(笑)

中谷実際に手を動かすよりも、方針の共有に力をいれていました。
川上
:当日のやることリストを作ってました。それが1番メインの準備かもしれないです。
佐々木それぞれが当日なにをやるか、という認識合わせができていたのが大きかったです。

(実際に使用していたやることリスト)

--- 練習よりも準備のほうに時間をかけていたんですね。

佐々木:練習すればスコアはある程度はあがりますし、もちろん知識はあった方が良いです。でも8時間しかないので、「これはやる・これはやらない」みたいな取捨選択能力や、ひらめきも大事だなと思います。
中谷ISUCONの8時間を実際に経験したことのある人のほうが有利になるとは思いますね。そのほうが、「あと何時間だからいまのうちにこれをやっておこう」みたいな時間配分がやりやすいと思います。

--- 中谷くんと川上くんは、去年出場していたからこそ活かせたことってありますか?

川上:ISUCONはwebサービスを高速化するというコンテストなんですが、出題された時点ではサービスに何らかの支障が発生していて遅くなっています。去年はその原因がわからず、何もできませんでした。なので今年はしっかり計測をして、スピードが遅くなってしまっている原因がわかるように、わからない部分をなくせるように準備していました。
中谷
:やみくもにチューニングはせずに、原因をある程度判断できてから作業に入るようにしていました。
また去年は、何をすれば点数が上がるのかというスコアの計算基準を読んでいなくて、Webアプリケーションとしか向き合ってなかったんです。でも、出題されるサービスは仕様が決まっていますし、Webアプリケーション以外にも直すべき箇所はあります。ドキュメントをちゃんと読んで、どこを直せばスコアが上がるのかを理解してから取り組むようにしていました。

--- 予選を突破できた勝因というか、理由ってなんだと思いますか?

川上一言で言うとチームワークですね(ドヤ顔)
お互いが役割をまっとうしてくれるだろうという信頼をもとに、8時間任せることができました。
中谷:予選の解説を確認したんですが、僕たちがやっていたことは模範解答とほとんどずれてなかったと思います。
佐々木:自分の領域でおきていることをうまく伝達できていたのが大きかったです。発生している事象とそれについての改善策を同時に提案してくれたので、自分だけじゃ得られない情報を共有することができました。
中谷:予選のとき、他の2人からデータベース分割を提案してくれたのは大きかったですね。データベース分割は時間がかかることもあって、ふだんの業務でもあまり積極的にやるものではないのですが、この決断ができたことでスコアも大幅にあがりました。
佐々木:報連相がうまくいっており、誰がいま何をやっているのか、だいたい把握できていました。また、2人が過去に出場経験があったので、僕に知見を共有してくれました。コードと向き合うだけじゃなくて、READMEやドキュメントをちゃんと読むとか。もし自分がユーザーだったら何するかを考えて仮説検証するのが大事だったと思います。とにかくユーザー目線で考える、User Focusで考える、というのは、普段の業務と同じでとても大事です(笑)

はじめてのISUCON本選

--- 本選についてはいかがでしたか?

中谷予選と比べて桁違いに構成が複雑でした!正直本選に出られると思ってなかったので、本選の過去問を見てなかったんです(笑)
佐々木:予想していた技術が全然使われてなくて、普段使わないフレームワークがたくさんでてきました。envoyとかgRPCとか。
中谷:Nginxじゃなくてenvoyだったの、きつかった...。
川上:計測は予選と変わらず実施していて、予選と同じアプローチでできたと思います。でもアプリケーションとインフラの要求度が高くなっていて、かなり焦りました。
佐々木本選でも、僕たちの判断自体は間違ってなかったと思います。ただ本選はやはり難しくて、個々人の作業に時間がかかりました。時間がない・経験がないという焦りから、ひらめきが少なくなっていったように思います。
川上:1位の人は出題者とか過去問とかを事前に分析して、本選の問題を完璧に予想していたらしいです。僕たちも事前の準備をもっとしていれば、スコアをさらに伸ばせたかもしれません。
佐々木:負けるべくして負けた。完敗です...。
中谷:その点は悔しかったな。
佐々木ISUCONで勝ちたいのなら、ありとあらゆる情報をつかんでおくことが大事かもしれないですね。

(本選出場記念グッズ+ええチーム賞景品。グッズいっぱい!)

最近のISUCONにおける学生の台頭

--- ISUCONは学生が3年連続で優勝していたり、今年は上位3チームを学生が独占するなど、学生チームの台頭がめざましいですよね。

川上:棋士の藤井聡太二冠をみてる気分です(笑)

--- いやいや、3人も半年ほど前まで学生だったでしょ(笑)

佐々木学生のほうがひらめきの部分が強いのかもしれないなと思います。たとえばMySQLは業務だと正規化することが多いものですが、優勝した方はあえて非正規化して速くしたらしいです。
川上ISUCONと業務とでは、目的が全く違うんですよね。先入観をなくさないといけないですね。
中谷:それプラス、最近の学生は新しい技術に対して強くアンテナを張っている印象があります。
川上
:マネーフォワードでインターンしている学生が参加しているチームが3位になりましたね。
中谷:むしろ社会人枠がほしいぐらいです(笑)
佐々木:優勝した学生さん、ひとりチームで優勝賞金100万+学生1位30万だから、1日で130万円もらってますからね。扶養控除外れるくらいの金額(笑)

ISUCON10を振り返って

川上めちゃくちゃ楽しかったです!本番の点数があがることがすごく楽しかったです。やった結果がどんどん点数に反映されていくのが面白くて、終わる直前は達成感がありました。
佐々木:僕たちのチームはひとりだけがめちゃくちゃ強いというわけではありません。3人ともがお互いのできることを精一杯やってこの点数がとれたのがよかったです。
中谷
:最初は本選進出が目的じゃなくて、ISUCONに出て勉強になればいいなぐらいの気持ちだったんですけど、予選でどんどん点数があがって「これ本選いけんじゃね?」って(笑)みんなで楽しめたし、本選にもいけたし、本選でもある程度のスコアを残すことができたことには満足です。もっとできたかも?ってことはあるんですけどひととおりは満足してます。

--- では気が早いですが、来年に向けての意気込みをお願いします!

中谷:待ってください!反省会やってないんですよ!
(注:取材日は10/5。ISUCON10本選2日後)
佐々木:でも打ち上げの話はあがりました(笑)
川上:もう打ち上げと反省会いっしょでいいんじゃない?

川上:このチームかわかんないですけど、来年も出たいですね。
中谷:僕もです。あと、運営を1回やってみたいです(笑)
川上
:運営、大変そうだけど...。
中谷......やっぱり来年もみんなで出たいです!

--- ありがとうございました!来年も頑張ってください!

編集後記

3人のISUCON本選出場が決まり、この実績を是非発信したい!と思い、すぐにインタビューをお願いしました。快く引き受けてくれた3人に感謝しています。
新卒エンジニアである3人のこれからの活躍にも期待です!

-----

最後になりますが、マネーフォワードではエンジニアを募集しております。興味のある方はエンジニアブログもぜひチェックしてみてください!

この記事が参加している募集

イベントレポ

最後まで読んでいただきありがとうございます! いただいたサポートは今後の執筆活動に役立てていきます。よろしくお願いします!