なぜカヤックは『ISUCON』で何度も優勝できるのか。特有の環境とキャリアパスを分析! | 面白法人カヤック

Careers

2021.12.09

なぜカヤックは『ISUCON』で何度も優勝できるのか。特有の環境とキャリアパスを分析!

Careers

エンジニアの総合格闘技とも呼ばれ、年々参加者が増大するチューニングバトル『ISUCON(いい感じにスピードアップコンテスト)』で過去5回もの優勝を果たすカヤック。参加598組(1421名)を勝ち抜き、2021年度の優勝者となったfujiwara組のメンバーに、大会でのエピソードをはじめ、高い技術力を生むカヤック特有の組織構造やキャリアパス、活躍の場の広げ方について語ってもらいました!

藤原 俊一郎(中央)

1975年生まれ、2011年入社
技術部/SRE
​​OSSを書いたりビールを飲んだり、最近は走ったりしてます

川添 昌俊(右)

20世紀生まれ、2012年入社
グループ戦略室/技術担当
座右の銘は大胆不敵です

谷脇 真琴(左)

1989年生まれ、2012年入社
ゲームコミュニティ事業部/サーバーサイドエンジニア
​​人生の目標はもう骨を折らないことです

『ISUCON11』優勝の決め手は、臨機応変に分担を変える連携

ーーまずは、2021年の『ISUCON11』優勝おめでとうございます! 「Iikanjini Speed Up Contest (いい感じにスピードアップコンテスト)」、つまりWEBアプリケーションのパフォーマンスチューニングを競う大会だそうですが....

藤原
『ISUCON』では、皆さんが普段触っているようなWEBのホームページやショッピングサイトなど、WEBアプリケーションが裏で動いているプログラムの初期実装が参加チームに与えられます。そのWEBアプリケーションを、8時間の制限の中でどうにか速くするコンテストです。
WEBアプリケーションの高速化とは、例えばユーザーさんが操作した時や検索した時に反応が早く返ってくるとか、アクセスが集中しても落ちないで、快適に操作できるようにすること。最も高速に改善できたチームが優勝するというルールです。

川添
改善対象には毎回お題というかバックストーリーがあります。『ISUCON11』は履修登録で、「全然つながらないよー」と学生が困っている動画が流れていました。
我々も出題側にまわったことがあるのですが、その時は、社長から急遽「18時からプロモーションをするから、サービスを高速にしておいてね!」と言われるストーリーでしたね。

ーー日常でありそうなシチュエーションの中でのお題が出るのですね。出場はチーム制ですか?

川添
出場単位は1人や2人でもいいのですが、3人揃っていないと手が足りないですね。基本は3人チームで出ます。僕は『ISUCON9』に1人で出場してみたのですが、やはり予選敗退でした。このコンテストは1人では大変だな、と実感しましたね。

ーーカヤックは過去11回の開催中、5回も優勝していますね。皆さんの『ISUCON』戦歴は? 

(※ただし『ISUCON5』優勝のfujiwara組は、1名のみ現役社員・2名が元社員)

藤原
僕は、出題役も含めて、過去11回の『ISUCON』全てに参加しています。その時々によって、チームのメンバーは違うんですけれど。

谷脇
藤原さんが率いるfujiwara組自体は4回の優勝を飾っていますが、この3人のチーム編成で出場したのは、『ISUCON10』と『ISUCON11』ですよね。

藤原
『ISUCON10』は本当に惜しいスコアで予選敗退して、悔しかった。ゲスト枠のオープン参加で本選に参加させてもらったところ、全体の3位くらいのスコアが出たんです。「このチームメンバーならいい成績が出せる」と確信し、リベンジも兼ねて『ISUCON11』に出ました。

ーー『ISUCON11』優勝の決め手となった打ち手やポイントは?

谷脇
やはり、役割分担じゃないですか?

藤原
『ISUCON』って、やることがいっぱいあるんです。8時間の中でプログラムを直したり、サーバーの設定を直したり、遅いところを見つけたり。お互い手が遊んでしまうと、単に時間の無駄になり、結果につながらない。今回はチームの役割分担が非常にうまくいって、フルに8時間それぞれの手を動かし続けられたことが大きかったです。

うまくいった理由としては、お互いの作業を完全に信頼して任せられる上、何をしているか把握できていること。また、「プログラムを書く人」「サーバーを設定する人」「モニタリングする人」といったレイヤーを完全に分けるのではなく、それぞれに携わりつつぶつからないように作業できたことです。
うまく分担できないと、作業がかぶったり、相手のやっていることが分からず正反対のことをしてしまったりする。

川添
連携ですね。分担はすれど、臨機応変に分担の内容が変わるところは、うちのチームの強みですよね。

ーー作業工程をバキッと分けないことがポイントだった、と。全員がどのレイヤーの作業もこなせるスキルを持っているのですね。

川添
それぞれ、得意領域はあるんです。藤原はインフラ、谷脇はアプリケーション、僕はなんとなくどちらも分かる、とか。でも、そこに捉われずに状況に応じて分担することで、見落としていたことを他のメンバー見つけたり、時間をうまく使うことができました。

谷脇
しんどい状況もありました。『ISUCON』では高速化を計測するプログラムが運営から与えられているのですが、今回は数字が一気には上がらなくて......。
ドンピシャの作業を「秘孔をつく」と呼んでいるのですが、その場合は桁が変わるくらい数字が上がる。そのレベルの改善が最後まで無くて、じりじりスコアを伸ばしていく感じだったところは苦労しましたね。

▲『ISUCON11』の参加598組を抑え、首位に輝いたfujiwara組。巧みな連携で8時間のチューニングバトルを制した

課題解決力を支える、多彩なバックグラウンド

ーー大活躍の御三方ですが、ふだんカヤックではどのような仕事をしているのでしょうか。

川添
谷脇のプロジェクトを私や藤原さんが見ているので仕事上の関わりはありますが、『ISUCON11』チーム3人の所属自体はバラバラなんです。

私は「グループ戦略室」に所属していて、特定の事業部やプロジェクトではなく、会社全体を広く浅く見るような立場です。現場でプログラムを書くこともありますが、普段は技術的な相談や経営管理的なこともやっています。
「エンジニアが経営管理しているのってどういうこと?」と思われるかもしれませんが、例えば、スプレッドシートでの予算管理から予算管理システムへの改善など、エンジニアリングによる経営の課題解決を担当しています。

藤原
川添さんは肩書きがあって無いような。

川添
人事もやりますしね。管理本部長からは、「川添さんは、“川添さんという仕事”だから好きなことやっていいですよ」と言われました。まあ、プレッシャーでもありますが、笑。

藤原
僕は技術部の「SRE(Site Reliability Engineering)」で、サーバーやサービスの安定性を担保するのが仕事です。遅くなっている原因を探し早くしたり、サーバーが落ちたらすぐ把握して対応する、維持・運用の土台作りに近いことをしています。
あとはデプロイですね。簡単に言うと、プログラムはきちんと書いてもサーバーの適切な場所に置かないと機能しない。でも、いちいち手動でやっていると時間がかかって、プログラムができたのになかなかリリースできない状態になってしまう。そういったサーバー上の配置や展開の業務効率化・自動化など、サービスをうまくまわしていく部分も担っています。

谷脇
僕は他の2人とは違って、特定のサービスに従事しています。
現在は、ゲームコミュニティ事業部で『Tonamel(トナメル)』に対する機能の開発・デプロイ・リリース・改良、技術選定や設計書の作成を担っています。

▲誰でも簡単にオンラインゲームトーナメントを開催・運用できるプラットフォーム『Tonamel』

ーー同じエンジニアでも、皆さん三者三様ですね! 現場での体験が、『ISUCON』出場時にも活かされたのだとか。

谷脇
『ISUCON11』出場前の2021年7月に、『Tonamel』で1週間継続的に著名なゲーム大会を開催したんです。200人くらい集まったのですが、開催初日にチャット機能の既読管理で問題が起きまして。幸いユーザーさんに影響はなかったのですが、アラートが来て、データーベースに大量の負荷がかかっていました。翌日までに直さなくてはいけない状況が、ほぼ『ISUCON』的でしたね。チャットの既読管理の問題は、まさに『ISUCON11』の課題にも出ていました。

川添
既読管理って、100人単位になると大変なんですよね。
もともと、通常のトーナメント対戦用に1対1のチャット機能をつけていて、そこに運営者が入ることを想定して3人用くらいの機能をつくっていたんですよね。それを100人でやるバトルロワイヤル形式に対応したら、大変なことに......笑。

谷脇
今までは3箇所に既読フラグを書き込む仕組みが、そのまま100箇所書き込むシステムになっていました。1対1の対戦だったらその設計で十分なのですが、バトルロワイヤルでは大きな負荷が生まれてしまいました。
その日のうちに原因を突き止めて改良アイデアを練り、翌朝すぐプログラムを書いてレビューを出し、昼にはリリースしてモニタリングしました。1日で改良できたので、まさに『ISUCON』を実践した感じでしたね。

この時は負荷の問題だったので、サーバーを増やすなり、お金で解決できなくはない。でも、直し方が見えていたので、自分の手で直す方を選びました。僕は、直し方が分からなくてもとにかく手を動かします。手を動かさないと分からないものでもあるので。

幅広いスキルの背景には、完全分業しない組織構造

ーー『ISUCON』的状況も乗り越えるカヤックエンジニアの幅広いスキルや、技術力の高さの理由は何だと思いますか。

川添
分業していないからでしょうか。インフラチーム、アプリケーションチームとして完全分業にしている会社もあるけれど、カヤックではアプリをつくっている人も足まわりを担当するので、自然と詳しくなっていく。
だから、「フルスタックエンジニア」に近い人が多い。カヤックは、スペシャリストよりジェネラリスト的になっていく組織構造なのでしょうね。

藤原
狭い分野に深い知識を持つ、専門性の高い人よりも、割といろいろできる人の方が多いですよね。
多くの人が利用するメッセージアプリなどだったら、データーベースの中のある一機能だけで仕事が成り立つくらいやることがあるんです。カヤックは、そういった大きなサービスや何百人もいるチーム構造ではなく、ひとつの案件に多くても20人くらいのエンジニアで対応します。細かいところだけやっているわけにはいかないので、幅広くなるんでしょうね。

川添
そこが、社名がそのままサービス名になっているような会社との違いですね。カヤックでは少数のエンジニアで作業することが多いから、3人チームで出る『ISUCON』と相性がいい。もし50人で出るような大会だったら、チームを束ねるのは無理な気もします、笑。

それに、完全分業のチームだと、特定の所にボトルネックがあるけど調べても原因が分からない時、他の2人がやることが無くなる。担当している当人がやるしかないし、その人に原因が分からなかったら終わりになってしまう。カヤックの場合は、3人とも知識レベルの高低はあれどなんとなく分かるので、幅広く全員で対応できるんです。

藤原
『ISUCON』を十種競技に例えると分かりやすいかもしれません。
あるサービスで10個くらいレイヤーがあったとして、高い専門性の人を3人集めても、全体としては大きな隙間ができるんです。得意不得意はあるけれど、10個を全部競技レベルとしてできますよという人が集まった方が隙間を埋めやすい。そういうスキルセットの方が戦いやすいんだと思います。
たまに、一から十までできる超人もいますけれど、笑。

川添
『ISUCON』は、出場した人がブログを書いていて、それを読むのが楽しみでもあるのですが、やっぱり専門的な人が3人集まったチームだと、「XXさんに任せきりだったのがよくなかった」という反省が多い印象です 。
カヤックチームは、困っている人がいれば相談して全員で解決に持っていくので、そういう状況になりにくいのだと思います。

カヤックには、本当に好きなことを見つけられる「つながり」と「自由度」がある

ーー社内の環境について伺いたいのですが、エンジニア同士で刺激を受けていることなどがあれば教えてください。

藤原
カヤックの社内Slackは、基本的には誰が入ってもいいオープンなチャンネルになっています。僕は事業に関係なく色々なチャンネルに入っているのですが、日々起こっていることや新しい情報に触れられることが刺激になっています。

川添
カヤックには多種多様な事業があるので、ゲーム事業や受託事業をはじめ、まちづくりや地域通貨まで、触れられる情報のバラエティの多さが面白いですよね。

あと、僕は全体を見る立場なので、色々な場所で色々な技術を使っているのを知ることができる。例えば、全く異なる種類のサービスで使っているデーターベースの技術が、実は同じだったりする場合があります。
色々なところにアンテナを張り巡らして、面白いことをしようとしている人に対して「社内のここに知見があるよ」とガイドし、人と人を技術でつなげることが楽しいですね。

谷脇
僕は、社内でどんな技術や知見があるのか知るために、勉強会に参加しています。例えば、「つくっていいとも」という月毎の発表会は、社員がプライベートでつくったおもしろガジェットや、サービス、作品を発表したり、読んだ本の紹介をする場です。僕は、自分の専門ではないホームページの表側、例えばUIやボタンなどにチャレンジしたことも。業務外で他領域にチャレンジするきっかけや、身近にいるその道のプロに相談できる場があるのは、いい刺激になっています。

ーーエンジニア同士、技術でつながりあい、高めあえる場も多いのですね。それに、伸ばしたい分野がある時に、すぐ専門家に相談できるのは、活躍の幅を広げるためにも役立ちますね。

藤原
あと、単一事業の環境より、色々なシステムを見ることができるのも、いい経験になると思います。やはりひとつのシステムしか見ないと、その中の事情が世間的に一般のことなのか、そのプロジェクトならではのことなのか分かりづらいじゃないですか。いくつかシステムを触り見比べることで、本質が見えやすくなります。

それから、若い人だと興味がまだ定まっていないこともありますよね。僕の若い頃、20数年前だったら、まだインターネット業界は専門がきっちり分類されておらず、自分の興味のある方向へ自然と進めました。でも今は、学生の頃から細分化された専門性を求められ、そのまま就職まで突き進まなくてはいけない。
もし、途中で興味関心が変わっても、カヤックならやれることに幅がある。サーバーサイドで入社したけれど、クライアントサイドをやっている人もいますし、職種間で自由に異動することもできます。「これが自分にとって専門なのか、好きなのかよく分からない」と悩む人も、本当に興味があることを見つけられるかもしれません。

川添
新卒採用の面談をする際によく言うのは、「特定の分野についてまず一人前を目指そう。」その後の選択肢として、他の分野を広げるジェネラリスト的なパターン、さらに高みを目指すスペシャリスト的なパターン、どちらも選べるのがカヤックの面白いところです。

谷脇
僕の場合は、サーバーサイドエンジニアでカヤックに入って、そこに特化して来ました。それでも毎回全力で打ち返さないといけないお題が出てくるので、「この分野は全部分かったな」と思ったことが一度も無いですね。例えば、最近は『Tonamel』に決済システムを初めて導入しましたが、だいぶ勉強しました。ひとつの分野を突き詰めても毎回新しいチャレンジがあるので、専門性を極めていくのも楽しいですよ。

川添
ジェネラリストでもスペシャリストでも、時代の流れ、技術の変化に臨機応変に対応して、領域にこだわらずスキルを伸ばそうとしてくれる人は大歓迎です。
人によって向き不向きがあるし強制はしませんが、その人の成長フェーズやスキルセットに合った次の一手を社内で用意できる、それがカヤックのいいところ。事業も多様ですし、成長機会はたくさんあるのではないでしょうか。

取材・文 二木薫

カヤックの仕事に興味を持ってくださった方へ

カヤックのニュースレターに登録しませんか? メールでカヤックの制作実績や社員インタビューなどの最新情報をお届けします。やってみたい面白そうな仕事や一緒に働きたい社員に巡り会えるかもしれません。ご登録お待ちしています。

関連ニュース

© KAYAC Inc. All Rights Reserved.