2017.12.28
カヤックエンジニアが「ISUCON7」で4度目の快挙!優勝チームに話を聞きました!
お題のWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル「ISUCON」の第7回大会が今年も開催されました。
過去6大会のうち、藤原を中心としてカヤックのメンバー(OB含む)で構成される「fujiwara組」が3度の優勝を飾ってきましたが、今回の大会ではカヤックのエンジニアチーム「MSA」が初出場で初優勝を達成しました!
「ISUCON7」当日のレポートはこちら
そのメンバーであるゲーム事業部のエンジニア荒賀謙作、鈴木恭介、水野敬太の3人に、競技当日の様子や普段の業務などについて聞きました。
初参加で初優勝を達成したISUCON
―まずは自己紹介をお願いします。
- 荒賀
- 荒賀謙作です。カヤックに入社して10年目のエンジニアです。フィーチャーフォン向けのソーシャルゲーム開発やLobi事業部を経て、2017年からソーシャルゲーム事業部でサーバー開発をしています。
- 鈴木
- 2017年新卒入社の鈴木恭介です。インフラチームでソーシャルゲーム事業部の担当をしています。
- 水野
- エンジニアの水野敬太です。2年前にカヤックに転職してLobi事業部に入り、今はゲーム事業部の荒賀さんと同じチームで働いています。
―「MSA」のメンバーはどのような形で決まったのですか?
- 水野
- 代表者は僕なんですが、面白いイベントだと聞いて出場してみようと。1チーム2〜3人でのエントリーが条件なので「プログラミング経験者なら誰でも」と社内でメンバーを募集したら、お2人が手を挙げてくれたんです。荒賀さんは同じ業務チームですし、鈴木さんとも勉強会で面識がありましたのでよかったです。
―「ISUCON」はアルゴリズムの計算速度を競う競技プログラミングや、アイデアを速く形にするハッカソンなどとはまた違う種類のコンテストなんですよね。
- 水野
- はい。エンジニアの業務そのものという感じで、Webサーバの負荷をどのチームが一番早く解決し、一番早く最適化するかで勝敗が決定します。
- 荒賀
- 業務に直結する分、勝てば自信になるけど、逆に自分の業務力が露わになる怖さもあるコンテストです。エンジニア業界では、「決勝に残れなければ人権がなくなる」なんてブラックジョークもあるくらいで(笑)
―事前準備や役割分担などはしましたか?
- 荒賀
- 同じサーバーでも僕と水野さんはアプリチーム、鈴木さんはインフラチームなので、鈴木さんにインフラはお任せしました。僕らは役割的に当日しかできないこともあって特別な準備はしませんでしたが、鈴木さんは当日の競技がスムーズに進むような環境づくりをしてくれていました。
- 鈴木
- そうですね、一通りは。負荷が高いサーバやボトルネックを見つけるためのリソース監視ツールの設定や、修正後のアプリをサーバ複数台に配布した時にきちんと動くような調整をしておきました。
優勝の鍵は個人の業務力とスピード、そして3人の信頼感
―優勝できた理由はズバリなんだと思いますか?
- 荒賀
- 日常業務を一緒にする仲間なので手の内をよく知っていたこと、だからこそ普段と同じやり方を徹底したことでしょうか。さらにお互いの作業スピードに信頼がありますから、とにかく手数を多く打っていこうと決めました。
- 水野
- そうですね。「早く、正確に」をウリに、鈴木さんが見つけてくれた不具合をどんどん修正して解決していけたことが大きいと思います。
- 荒賀
- できることはもちろん、できないこともわかるんですよね。潔く諦められるから、詰まったら深追いせず他の問題に切り替えられる状況判断とその早さも大事だったと思います。
―そうした判断力やスピードは、やはり業務の中で体得されたものですか?
- 荒賀
- 作業時間の見積もりは特にそうですね。競技時間が8時間しかないので、不具合の中からAは時間がかかるから諦めよう、水野さんのBは2時間かかるから僕は15分で終わる問題を複数片付けよう、といった判断は、普段の業務で鍛えられていると思います。
- 水野
- それに日々コードレビューをしているので、アプリの動きをコードで追った時点でこれは重そうだなとか、原因らしき箇所や処理方法の察しがつくんです。負荷がかかった後でアタリをつけた箇所の確認が取れれば、修正にもすぐ取りかかれますからね。
―荒賀さん、水野さんは元Lobi事業部ですが、やはりその時の経験も?
- 水野
- 直接ではないですが、Lobiは日々サービスが進化をする中で新旧の技術や言語が混在しているので幅広い経験ができましたし、利用者が多く負荷がかかりやすい環境ため、そういった環境での対応を学べた気がします。障害を未然に防ぐレビューやサーバ調整の重要性もLobiでの経験が生きていますね。
- 荒賀
- そうそう。Lobiはゲーマー向けのコミュニケーションツールなので、使っていただいているゲームの盛り上がり方次第で予期せず突然に負荷が急上昇するなど対応の質と量が幅広いですね。まず最短でできる応急処置をして、その後じっくり根本的な改善をするという二段階の処置をLobiでは行ってきたので、その辺りの対応力はかなりついたと思います。
―チーム戦のために意識したことは?
- 水野
- メンバーを信頼すること。例えば、インフラを鈴木さんに任せたら、あとは自分の役割に没頭する。8時間でアプリの理解、修正、計測、理解を繰り返していると、他の人を気に掛ける余裕はないんです。
- 鈴木
- 予選でデータベースにある画像ファイルの変換がうまくできず、焦って「もうだめだ...」と諦めた瞬間があったんです。でも、その後も問題なく進んだので拍子抜けしました。変にこだわらず、他の人を頼っていいんだと実感しましたね。
―そんなことがあると、一人でインフラ面を担当することにプレッシャーを感じませんでした?
- 鈴木
- 競技中は確かにありましたね。予選は明確なボトルネックがすぐに分かったのですが、本戦はある程度の時間が経つまで判断がつかなくて焦りました。
- 荒賀
- 予選は素直に進められたけど、本戦の序盤は原因が見えず苦戦したよね。僕らもコードでわかる不具合を潰しながら、値の変化をじっと待つみたいな。
- 水野
- そうですね。本戦の課題が、レギュレーション中の制約を超えないとインフラ側で変化が見えにくい構造だったんです。Webサービスをどれだけ高速化できるかを競うのですが、業務と同じく最初はユーザーが快適に使えるレベルに戻す作業が必要です。その最初の壁を抜けるのが大変だったんですよね。
―分業制は独立しているけど、お互いの信頼感がないと成り立ちませんね。
- 水野
- そうですね。お互いに依存しない分業制だと各自でがんばれば最終的に完成形になり、段取りも一々確認せずに進められます。誰かが諦めた時の対応もしやすいんです。作業の考え方や段取りに共通の意識を持ったメンバーならではの方法です。
喜びと反省、悲喜こもごもの優勝後
―賞金100万円はどんな風に使いましたか?
- 水野
- 特別賞5万円と合わせて105万円いただいたのですが、一部は事業部の忘年会用にして、あとは3人で分けました。
- 荒賀
- 僕はマラソン・自転車・水泳が趣味なので、トライアスロンに挑戦したいとずっと思っているんですが、家族がいて自由に使えるお金がそれほど多くないので、高価なトライアスロンウェアを揃えられていなかったんです。でも、今回の賞金でトライアスロンに必要なウェットスーツとトライアスロンスーツを買おうと思っています!
- 水野
- いつも買う1本20円のスティックコーヒーではなく、ちょっと贅沢して30円のスティックココアを100本分買いました。まだ独身で他に使い道もないので、残りは生活費になりそうです。
- 鈴木
- 僕も貯金でしょうか。といいつつ、33万もらったと喜んでいるうちになくなっているパターンだと思います(笑)
―改めて、参加してみていかがでしたか。感想を教えてください。
- 水野
- 過去 6回のISUCONでカヤックのメンバーを含むチームが3回優勝しているのですが、それに続く4回目の優勝を達成することができたのでよかったです。
- 荒賀
- 優勝も嬉しいのですが、過去3度の優勝を経験している、同僚の「fujiwara組」に勝ちたいという気持ちも実はあったので、決勝で勝つことが出来たのが嬉しかったです。相当な覚悟で参加したから、決勝進出の時点ですでに「人権が保たれた」と安心していたんですけどね(笑)。
- 鈴木
- 最初は本選に出場できれば……というくらいだったので、優勝できてチームを組んだお二人はやっぱりすごいと感動しました。実は、大会後に他チームの方のブログなどを拝見して、インフラ担当さんの活躍と自分の何もしていなさに気づいてしょんぼりしてしまって。優勝できたことでテンションが上がっていましたが、「まだまだ勉強だ、もっとがんばろう」と思いました。
- 荒賀
- 補足すると、鈴木さんがしてくれた大会前の準備は非常に重要な作業なんです。でも彼には日常すぎて、むしろ競技中の作業量の少なさが気になったらしくて。一般的に、インフラ業務は安定稼働していて当然と思われがちで、少しでも障害があると苦情がくるような仕事なので外からは見えにくいんですが、周りから見ればすごい活躍をしてくれたのに本人にとっては当たり前のことすぎて反省点が目に付いてしまったという感じだったのだと思います。
- 水野
- そうですよね。僕は鈴木さんにとっての当たり前なインフラ作業ができないので、鈴木さんの実直な仕事にすごく助けられましたよ。
優勝チームのエンジニアたちが働くカヤック
―カヤックで働くエンジニアさんの特徴やいいところを教えてください。
- 水野
- 技術好きが集まっていることですね。僕も転職して2年ですが、いろんな人たちと接する中でスキルが上がっているように感じます。僕は面接していただいた荒賀さんを師匠として勝手に尊敬しているんですが、同じチームで力を伸ばしてもらい、ようやく自分の仕事ができるようになってきました。
- 荒賀
- カヤックは事業の幅が広いので、興味があればいろんなことに関われるのが楽しいところだと思います。インフラ一つ取っても、社内インフラからLobi、ゲームや受託までやっているのは珍しいんじゃないかな。エンジニアに対して技術面ではかなりオープンですし、一つのサービスだけでは見えないことを学ぶこともできます。
- 鈴木
- まだ勤務して8カ月ですが、毎日楽しいので自分は恵まれた環境にいると思います。すごいエンジニアの先輩方から直に助言や意見をいただけるのも嬉しいことですね。
―どんな方と一緒に働いてみたいですか?
- 水野
- カヤックのサーバーサイドはGo言語を推進しているのですが、既存のサービスはGo言語以外のものが多いです。新規開発でGo言語を積極的に使っていくためにも、Go言語が書ける、書きたい人という人をどんどん増やしていきたいです。興味があればぜひ来てほしいです。
- 鈴木
- 人のいい人に来てほしいです。一緒に仕事をする人ってとても大事なことだと思うので。
- 荒賀
- 今の業務がGoメインなので、「Goを業務で使いたい人」だといいですね。カヤックならいろんな業務がありますし、そこで幅広い経験をしておくと、今回のようにGoを使ってISUCONで優勝できたりしますから、ぜひ。
時に熱く、時に冷静な「ISUCON7」優勝メンバー。そんな彼らが日々研鑽し、業務するカヤックではエンジニアを募集しています。仕事に興味を持たれた方、一緒に働いてみたい方はぜひ採用情報をごらんください。
取材・文:木村早苗