Tabelog Tech Blog

食べログの開発者による技術ブログです

日本CTO協会主催の新卒合同研修に参加して圧倒的な学びを得た話

はじめまして。食べログ開発本部ウェブ開発2部 新卒1年目の濱口(machida4)です。

私は2024年の5月末から7月末までの約2ヶ月間、一般社団法人 日本CTO協会が主催する新卒合同研修に参加しました。

本記事では、新卒合同研修の各講義の内容と、そこから自分が学んだことについてご紹介します。

目次

参加の経緯

新卒エンジニアとしてカカクコムに入社して1ヶ月弱が経過し、食べログ開発本部に配属されました。

食べログは入社する以前から日頃利用していたサービスで、新しいレストランを開拓したり、人気店を予約したりする際に頻繁に利用していました。実は長年食べログプレミアム会員でもあります。 日常的に使っているアプリケーションの裏側を知り、しかもその開発に携われるということで、たいへんワクワクしていました。

一方で、不安もありました。私は情報系の学科を卒業しており、大学時代にはエンジニアアルバイトをしていたため、情報科学やWeb開発の知識や経験について、最低限の自信がありました。

しかし、現実のプロダクト開発が持つ複雑性に立ち向かうための知識、特に業界でのスタンダードや流行に関する知識は十分とはいえないのが現状でした。

そんな折、弊社CTOの京和から、日本CTO協会主催の新卒合同研修に参加してはどうかという提案がありました。 食べログの運営会社であるカカクコムは日本CTO協会の法人会員であり、この合同研修は所属企業の新卒社員であれば基本的に参加可能です。

以下の通り、研修のパンフレットには魅力的なプログラムが並んでおり、新卒の段階から視野を広げることができるチャンスと考え、迷わず参加を決意しました。

研修 講師
第1回 キャリア戦略・フォロワーシップとマネジメント 日本CTO協会 / 株式会社LayerX
第2回 Git基礎ハンズオン 株式会社Progate
第3回 BtoB SaaS開発基礎 株式会社アンチパターン
第4回 インテリアコーディネートで学ぶアジャイル開発 株式会社メンバーズ
第5回 BigQueryで始めるデータ分析入門 & 生成AIを活用した分析効率化 グーグル・クラウド・ジャパン合同会社
第6回 AWS研修 アマゾンウェブサービスジャパン合同会社
第7回 サーバ解体研修 GMOペパボ株式会社
第8回 生成AIに関する講義 日本マイクロソフト株式会社
第9回 日本CTO協会ISUCON新卒研修 + 解説 株式会社PR TIMES

「サーバー解体」という言葉にワクワクしないエンジニアなんていませんよね!?

新卒合同研修について

今回私が参加した研修は、日本CTO協会が主催する新卒エンジニア向けの合同研修です。

日本CTO協会が新卒エンジニアを業界全体・企業横断で育てる試み「新卒エンジニア向けの合同研修」を5月29日から実施

この研修は、合同という形をとりつつ各法人が講義・研修を提供することで、コストを抑えながら業界全体・企業横断で新卒エンジニアの育成を進めることを目指し、今年(2024年)から始まった試みです。

研修は5月の最終週から週1回、9週間にわたって全日オフラインで開催されました。毎回、2時間程度の研修が行われた後、懇親会で新卒同士の交流を深めるというスケジュールでした。なお、最終回のISUCON研修に関しては本家ISUCONと同様に終日開催です。

研修は毎回参加を強制されるものではなく、目的に合わせて自由に参加する回を選択できます。 私はある程度Gitの経験があったため、第2回の『Git基礎ハンズオン』を除く計8回に参加しました。 懇親会

🍺ビール飲み放題の懇親会の様子🍺

第1回:キャリア戦略・フォロワーシップとマネジメント(講師: 日本CTO協会/株式会社LayerX)

第1回は、株式会社LayerX CTOの松本(@matsuwitter)さんによる『キャリア戦略・フォロワーシップとマネジメント』でした。前半はキャリアを構築する上で考えるべきことについて、後半はマネジメントを学ぶ第一歩としてのフォロワーシップについて学びました。

就活や新卒入社といったイベントを機に、一気に自分のキャリアについて考える機会が増えた方は多いのではないでしょうか。

私もその一人で、可能性を広げる段階から絞り込む段階へ急に移っていく感覚に少し戸惑いました。 熱しやすく冷めやすい自分にとって、3年後・5年後の姿について考えることはかなり難しいことでした。 そんな自分でしたが、キャリアを考えるためのヒントを少しでも得られることを期待し、研修への参加を決めました。

前半は、キャリアについて考える上で大切な考え方について学びました。 松本さんは、キャリアを後悔しないためのポイントとして、「投資家的にキャリアを考える」ことを奨めています。

キャリアを投資家的に考えるというのは、自分の持っている資産(お金、時間、信用など)を効率よく運用し、リスクとリターンを理解しながら最大化することを目指す視点です。

特に、キャリアの最初の10年は可処分時間が最も多い期間であり、この時間をいかに投資するかの重要性が強調されていました。20代、30代の可処分時間を最大限活用し、知識・経験・信用など、資産が資産を生むような(=レバレッジのかかる)キャリア資産を蓄積することが、その後より大きな成果やアウトプットを生み出すことに繋がります(なかなか耳が痛い話ではあります!)。

加えて、松本さんは、「コミュニティの力を借りて努力を習慣化する」ことの大切さにも触れていました。仲間の昇進や技術的成長などに対する「健全な嫉妬」こそが、努力の習慣化を支え、成長につながるといいます。

個人的にはこの項目に一番心が揺さぶられました。 自分は「あいつには負けてられない」という気持ちを燃料に心を燃やしてきた感覚を持っていて、それを肯定してくれている言葉だったからです。

「周囲の平均値が自分である」というような文言はたびたび聞きます。個人的な経験としても、自身にとっての「普通」が多くの人にとっての「普通」でないことを、属しているコミュニティを飛び出してはじめて実感することが何度もありました。周囲のコミュニティが自分を作り上げる一方で、自分もまたそのコミュニティの一部を形作っているという意識は、今後のキャリア形成において非常に重要だと感じました。

後半は、マネージャーの仕事と、マネジメントのスタートラインとしてのフォロワーシップについて学びました。

松本さんは、マネジメントとは単なる管理ではなく、チーム全体の成果を最大化するための役割だと定義しています。マネージャーの主な役割はチームメンバーのモチベーションを高め、専門性を発揮させることであり、チームメンバーのモチベーションの源泉を探り、一人ひとりが納得感と自信を持てるようにすることが重要です。

フォロワーシップとは、そんなマネージャーをメンバーがサポートするという考え方です。

自分のモチベーションの方向性を伝えるために積極的に自己開示し、かつ意思決定されたことには全力でコミットすることで、マネージャーが上手く立ち回れるようにサポートできます。このことが、自分の成果、ひいてはチームの成果に繋がります。 そして、マネージャーを理解しようとして同じ視点に立つことが、実は結果的にマネージメントを学ぶ第一歩になるといいます。

マネージャーにとって嬉しいことが何かを考え、実行することでチームの成果を最大化させると同時に、マネジメントに対する理解を深めることができるという考え方は、まさに目から鱗でした。

今回の研修を通じて、キャリアについての考え方の指針を手にいれることができました。 一方で、今回学んだのはあくまでキャリアの「考え方」です。

どういったキャリア資産に投資していくかには当然正解はなく、自分で正しいと確信できる道を歩んでいくしかないというメッセージを受け取りました。

楽しいと思うのはどんな瞬間なのか、最大限成果を発揮できるのはどういった領域なのか、あらためて自分を見つめ直して考えたいと思います。

第3回:BtoB SaaS開発基礎(講師: 株式会社アンチパターン)

第3回は、株式会社アンチパターンの@Yaggytterさんによる『BtoB SaaS 開発基礎』でした。

SaaSを開発する上で考えなければならないことについて、講義とハンズオンを通して学びました。

研修ではまず、SaaSとはそもそも何か、SaaSならではの技術的な難しさについて講義を受けました。

SaaSプロダクトの開発が持つ本質的な複雑さとして、マルチテナント(マルチテナンシー)があります。 マルチテナントとは、複数の顧客組織(テナント)が同一のサービス・リソースを共有するモデルです。

テナントの分離はSaaS開発に不可欠な考え方です。例えば、人事労務ソフトウェアにおいて、A社の労務情報をB社が閲覧できるような状況は当然あってはならないので、必然的に分離をどのように実現すればよいかを考える必要があります。

テナント分離を実現するためのアーキテクチャは、リソースの共有範囲によって、サイロ、プール、ブリッジの3つのカテゴリに分類されます。各アーキテクチャにはそれぞれセキュリティ、スケーラビリティ、コストなどに関するトレードオフが存在し、一長一短であることも学びました。

講義パートののち、SaaS開発の初歩をハンズオン形式で体験しました。

チームに分かれて、シンプルなチャットアプリにユーザーテーブル上のテナントIDによってフィルターするように変更を加え、別のテナントからチャットの内容が閲覧できないように変更しました。この単純な変更によってマルチテナントが実現できたかと思いきや、その後、セキュリティの穴を衝くと簡単にテナントの境界を跨げてしまうことについてもデモがありました。

サーバーやデータベースといったリソースを共有したアーキテクチャを採用した場合、論理的な分離が適切でないと重大なインシデントに繋がります。

今回の研修で強く感じたのは、技術的な選択がビジネスに与える影響の大きさです。

セキュリティ強度や運用コスト、開発上の複雑度など、アプリケーションの開発を進める上ではどれも非常に重要な要素ですが、いいとこ取りというわけにはいかないようです。

SaaS開発の難しさの一端に触れることができただけでなく、ソフトウェアの設計の決定が、ビジネス上の判断として大きな意味を持ちうることを肌身で感じることができました。

👆講義中は某動画配信サイト風にコメントが流せるようになっていて、レートリミットの大切さについても体感できました

第4回:インテリアコーディネートで学ぶアジャイル開発(講師: 株式会社メンバーズ)

第4回では、4,5名のチームに分かれ、インテリアコーディネートを題材にアジャイルな開発手法を体験しました。

研修は、以下の一連の流れ(スプリント)を3回繰り返し、ユーザーの求めるインテリアを作成する、という内容でした。

  1. ユーザー役の方から理想の部屋をヒアリングする
  2. インテリアシミュレーターを用いてコーディネートする
  3. その成果を提示してさらにフィードバックを貰う

参加時点で、私はアジャイル開発について、手法の概要をなんとなく知っているものの(SCRUM BOOT CAMP THE BOOKを読んだことがある程度)、本格的な経験はほとんどありませんでした。 今回の研修によって、アジャイル開発の魅力の一端に触れられることを期待して参加しました。

本研修の内容は、一見エンジニアリングとは関連性が薄く感じられました。しかし、いざやってみると、ソフトウェア開発を飛び越えてさまざまなプロジェクトで活用できる普遍的な学びを得ることができました。

第一に、チーム開発の難しさを体感しました。

コーディネートにどのインテリアシミュレーターを使うかについてもチームで決める必要があったので、私たちはまずはシミュレーターの選定から始めました。ツールの選定自体は滞りなく完了し、コーディネート作業に入ることができました。

しかし、2回目のスプリントの最中、どうやら現在使っているシミュレーターAよりも、別のシミュレーターBのほうが使いやすくグラフィックスもキレイだということが判明します。 性能差に目をつぶってシミュレーターAを使うか、これまでの作業を捨ててシミュレーターBを使うかチームで議論が起こりましたが、時間がシビアなこともあり、結論は出ませんでした。

結局、シミュレーターAを使うメンバーとシミュレーターBを使うメンバーに分かれて、最終的に「良い方」を発表する形になり、チームのリソースを有効活用できませんでした。

「Disagree and commit(賛同しないがコミットする)」という格言があります。異論を含めて議論しつつも、チームとしての決断は早急に行い、その後は決定した方針にチーム一丸となってコミットするべきであることを説くフレーズです。 意思決定が上手くいかないままプロジェクトが進んでしまうと、成果も曖昧なものになってしまうことを思い知りました。

第二に、ユーザーの言葉の裏側にある要求(いわゆる「顧客が本当に必要だったもの」)を見極めることの難しさを体感しました。

よく言われることですが、ユーザーは自分が求めるものを自分で理解しているとは限りません。物で溢れているので収納家具が欲しいというユーザーの要求は、ウォークインクローゼットがひとつあれば解決するかもしれません。 フィードバックをこまめに受け取ることで、真に求めるものを把握できなくても、少なくとも近づけていくことができます。

アジャイル開発の本質は、開発のスピードではなく、イテレーティブなプロセスによってユーザーが本当に欲しいものに漸近的に近づけていくことができる点にあるのだと感じました。

第5回:BigQueryで始めるデータ分析入門&生成AIを活用した分析効率化(講師: グーグル・クラウド・ジャパン合同会社)

第5回は、グーグル・クラウド・ジャパン合同会社による『BigQueryで始めるデータ分析入門&生成AIを活用した分析効率化』でした。

BigQueryを利用した効率的なデータ保管・分析と、GeminiやDocument AIといった生成AIによるデータ分析プロセスの効率化について講義形式で学びました。

私自身の話として、データ分析を実際に行った経験はありませんでした。データ分析基盤としてのBigQueryの存在は知っていましたが、どういったことができるのか、どういった点が優れているのかについては理解できていませんでした。

近年、データに基づく意思決定の重要性について耳にする機会は日に日に多くなっている印象です(ビッグデータという言葉は逆にあまり目にしなくなりましたが、当たり前のものになりすぎて流行語としての役目を終えたのかもしれません)。

実際、IPA(独立行政法人 情報処理推進機構)は、DXの基盤となるITシステムに求められる要素として以下の3つを挙げ、データ利活用の重要性を強調しています。

  1. データをリアルタイム等使いたい形で使えるか
  2. 変化に迅速に対応できるデリバリースピードを実現できるか
  3. データを、部門を超えて全社最適で活用できるか

(出典:「DX 推進指標」とそのガイダンス | IPA 独立行政法人 情報処理推進機構

こうした背景を踏まえて、エンジニアとしてデータの利活用の方法論を知っておきたいという課題意識を持って研修に臨みました。

講義では、データ分析の重要性とBigQueryによる効率的なデータ保管・分析の基礎について学びました。

特に驚いたのは、BigQueryの性能、特にそのスキャン速度です。

数テラバイト規模のテーブルをBigQueryとPostgreSQLでスキャンし集計するデモがありましたが、PostgreSQLが応答をいつまで経っても返さないのに対し、BigQueryは約1秒で結果を出力していました。 BigQueryがこの速さを実現している背景には、データを複数のノードに分散して処理する、分散アーキテクチャの採用があります。 アーキテクチャの詳細については割愛されていましたが、純粋な技術的興味としてこの速度がどのように実現されているのか気になりました。

また、GeminiやDocument AIといったGoogleの最新AIを駆使したデータ分析プロセスの効率化手法についても学びました。 BigQueryにはすでに生成AI(Gemini)が統合されており、自然言語からSQLやPythonを生成したり、インタラクティブにデータを分析したりできます。

画像や動画などの非構造化データについても、生成AIを用いて構造化データに変換することで、従来は難しかった分析が可能になっています。例えば、アンケートの集計結果のプリントを画像化しGemini 1.5 Proに読んでもらうことで、表の要約をしてもらったり、具体的な数値について回答してもらったりといった、「意味理解」に踏み込んだタスクを遂行させることが可能です。

スピーカーの方は、競合のモデルと比較した際のGemini 1.5 Proの強みとして、マルチモーダルであること、ロングコンテキスト(長いプロンプト)に対応していることの2つを挙げていました。コンテキストウィンドウは短めの映画1本に相当する容量を持っていて、大量の動画の内容を自動的にカテゴライズ・タグ付けする等のタスクもこなせるようです。

今月の非常識が来月の常識になっていることが十分ありえるほど、近年のAI分野の進化のスピードは目覚ましいです。

生成AIの台頭を脅威として否定的に捉える言説は少なからず存在し、自分も仕事を奪われる恐怖がないわけではありません。 一方で講義を受けて、AIを適切に活用することで、分析や意思決定といった本質的な作業に集中できるという期待を持つようになりました。

研修を通じて、データの活用、AIの活用が今後の企業の競争力を大きく左右することを実感しました。

食べログでも、データ分析に基づいたマーケティングはすでに重要視されており、生成AIの活用も非常に活発です。今後も活用の幅はどんどん広がっていくことは間違い無いでしょう。

エンジニアとして、データやAIを最大限に活用し、価値を創造できるよう積極的に手助けしていきたいと思います。

グーグルオフィスでの懇親会

👆とんでもないクオリティのケータリングが振る舞われました

第6回:AWSの基礎から学ぶWebアプリケーション構築入門(講師: アマゾンウェブサービスジャパン合同会社)

第6回は、アマゾンウェブサービスジャパン合同会社による『AWSの基礎から学ぶWebアプリケーション構築入門』でした。

Amazon EC2上で稼働するWordPress環境を作成するハンズオンを通して、AWSを用いたWebアプリケーション構築の基礎を学習しました。

食べログのシステムは基本的にはオンプレミスのデータセンター上で稼働していますが、近年ではクラウドを活用した機能開発も活発に行われるようになってきています。クラウドは業界のスタンダードとなりつつあり、今後ますますその重要性が増すことは想像に難くありません。

クラウドの活用を検討しなければならない時が来た際に備え、メリット・デメリット、トレードオフをある程度把握しておくことは重要だと感じていました。 と言いつつ、自分にはクラウドサービスを利用した経験がほとんどなく、右も左もわからないという状態でした。

研修ではまず、VPCを作成し、EC2インスタンスを立て、WebアプリケーションをデプロイするというAWSにおける開発の基礎的な流れを一通り経験しました。 また、追加課題として、データベース層をマネージドサービスのRDSに分離したり、ロードバランサーを追加したりといった、対障害性や可用性を考慮した堅牢な構成を組み立てる方法も学びました。

会場にはアマゾンウェブサービスジャパンのソリューションアーキテクトの方々が何人も待機してくださっていて、万全のサポートのもとハンズオンを進めることができました。

今回の研修を通じて、クラウドは突然変異のように現れた全く新しい技術ではなく、従来のさまざまな技術の延長線上にあるということが実感できました。

クラウドは情報技術の積み重ねの結果生まれたものであり、巨人の肩の上に立つことをサポートしてくれるものです。この視点から見ると、一見複雑で新鮮に見えるクラウド技術も、その背後にはすでに学んだ技術や概念がしっかりと支えていることが理解できました。

今回触れたのはAWSの機能のごく一部であり、初歩の初歩を学んだに過ぎませんが、ハンズオン形式で手を動かしてWebアプリケーションを構築したことで、クラウドの方向感覚のようなものを手にいれることができました。今後クラウド技術の導入を検討したり、実際に活用したりする機会が訪れても、必要以上に恐れずに立ち向かう自信が生まれたように思います。

Amazonのエレベータ

📦 Amazonオフィス名物 段ボールエレベータにも乗れて感無量

第7回:サーバ解体研修(講師: GMOペパボ株式会社)

第7回は、GMOペパボ株式会社による『サーバ解体研修』でした。

いくつかの班に分かれ、GMOペパポの社員の方々のサポートのもと、過去に実際に使用されていたサーバーを自分たちの手で解体していきました。

PCを何度か自作した経験があったため、コンピューターの内部構造についてまったく無知というわけではなかったものの、一枚板のラックマウントサーバーの実物を目にしたことはなく、当然解体した経験もありませんでした。そのため、この研修の存在を知ったとき、非常に興味を惹かれました。

サーバを解体するのは滅多にない経験であり、実際に手を動かして仕組みを理解する素晴らしいチャンスだと思いました。

実際、研修中は終始テンションが上がっていました。サーバの内部構造を目の当たりにし、自分の手で解体していく過程は新鮮で非常に興奮しました。CPUやメモリモジュール、冷却システム、電源ユニットなど、サーバーがどのように効率よく組み立てられているかを詳しく観察でき、普段は意識しない、画面の向こう側にある実際のインフラの解像度が高まりました。

特に、内部構造の徹底的なシンプルさとモジュラリティの高さに驚きました。サーバーの内部には配線は最小限しか存在せず、各パーツは簡単に取り外して交換できるようになっていました。また、記憶容量からCPU、メモリ、電源ユニットに至るまで、徹底的にパーツの冗長性が確保されており、メンテナンス作業の手間・ダウンタイムが最小となるように細心の注意をもって設計されていることが伝わってきました。

認知の順序がねじれているかもしれませんが、堅牢で拡張しやすいソフトウェアを具現化するとこうなるのかも、という感想を抱きました。

研修終了後の懇親会でも興奮冷めやらず、社員の方に質問を投げかけながら、サーバーのパーツを眺めたり、HDDを分解したりしました(最高のビールのつまみでした!)。

最近の大容量HDDでは、プラッター間の空気の流体力学的な効果が無視できないためヘリウムを充填している(ため、不用意に分解できない)といった、こういった機会でないと得られないようなハードウェア雑学もたくさん教えていただきました。

近年では、クラウドサービスに代表されるサーバーの仮想化が進み、ハードウェアとしてのサーバーの存在を意識する機会はどんどん減っています。今回の研修で「本物」のサーバーに触れ、サーバーとしての物理的な実態を理解できたのは非常に貴重な経験となりました。翻って、実際のサーバーに触れる苦労を知ったことで、ハードウェアの抽象化の威力、ありがたみも実感できました。

マザーボードと記念撮影

メモリがビッシリ刺さったマザーボードと記念撮影する筆者

第8回:生成AIに関する講義(講師: 日本マイクロソフト株式会社)

第8回は、日本マイクロソフトの@hiro_gamoさんによる『生成AIに関する講義』でした。

以下のスライドを下敷きに、生成AI(LLM)を用いたシステム開発の基礎と、生成AIに関する最新情報について学習しました。

食べログと運営会社のカカクコムでは生成AIを活用した取り組みはとても活発に行われています。 国内最速でChatGPTプラグインをリリースしていますし、GitHub Copilotはエンジニアの標準装備になっています。 また、最近はLLMアプリ開発プラットフォームDifyの全社活用も進んでいます。

実は私自身も、AIを活用した開発支援プロジェクトに携わっています。

具体的には、LLMに退行テスト(RSpec)を生成させることで、サービスの品質を高めるとともに、エンジニアの手間を省いて開発スピードを向上することを目指しています。 手探りで検証を進めていく中で、AIの推論の水準の高さに驚かされる一方で、限界も感じつつありました。そんな中、絶対に何か持ち帰ろうという思いで研修に参加しました。

研修は、基本的な概要のみならず、精度向上のためのTipsや現時点での限界など細かいツボも押さえた内容で、最新のLLM活用の状況を鳥瞰することができました。

個人的には、Prompt Engineeringの技法についての講義が非常に参考になりました。 Prompt Engineeringというのは、AIに対して明確かつ効果的な指示(プロンプト)を与えるための技術です。

一例として、「Step Back Prompt」という技法が興味深かったので紹介します。

「Step Back Prompt」は、読んで字の如く、「1歩戻ってから」回答するようにAIに指示する技法で、Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models という論文で提案されています。 AIにいきなり問題を解かせると、問題の詳細に引っ張られすぎて誤った回答をすることがあります。そこで、本題に入る前に一旦より簡単な問題に回答させることで、手順を整理させます。 これによって、AIの思考の抽象度が上がり、詳細に囚われずに正しい答えを導き出すことができるようになるそうです。

プロンプトの組み立て方について、巷では精度向上のための様々な手法やTipsが紹介されていますが、再現性に欠ける内容も多いようです。 スライドで紹介されている手法は論文等である程度効果が検証されているため、AIからのレスポンスの精度不足に悩んだ場合はまずはこれらの手法を試すことをおすすめします。

ちなみに懇親会では、絶対に守らせたい指示はAIに毎回復唱させてからタスクに入るように指示するのが一番効果的、という興味深いアドバイスも頂きました(毎朝大声で社訓を唱和させるイメージが脳をよぎってしまいました)。

全体的に、もっと早く受けたかった!と感じずにはいられない講義でした。

生成AIを日頃利用している、あるいは利用を検討している方は、ぜひスライドを一読してみてください。何かしら新たな発見があるのではないでしょうか。

Microsoft本社のエレベーターホール

かっこよすぎる日本Microsoft本社のエレベーターホール

第9回:ISUCON新卒研修+解説(株式会社PR TIMES)

最終回は、株式会社PR TIMESによるISUCON1研修でした。

ISUCONは「いい感じにスピードアップコンテスト」の略で、お題となるWebサービスを決められたレギュレーションの中でどれだけ高速化できるかを競うコンテストです。今回の研修では、ISUCONを実施したのち、株式会社PR TIMESのCTOである金子(@catasuy)さんから解説を受けました。

今回の題材となったWebサービスは、「Iscogram」という架空の画像投稿サイトです。ユーザー登録機能とログイン機能があり、ユーザーは画像を投稿したり、投稿にコメントを書き込んだりすることができます。各チームにはこのサービスがすでに動作しているサーバーが1台供与され、チームは任意のタイミングでベンチマークを実行できます。ベンチマークを実行すると、自チームのサーバーに対して大量のリクエストが送信され、この通信の成否によってスコアが決定します。

私はMC DigitalxenonMotsuさんと二人一組で8時間弱、Webサービスのボトルネックの解消とひたすら向き合い続けました。

私はISUCONに出場した経験があったため、ある程度ノウハウを持った状態での参加でした。

プロファイラの導入などの初動で行うべきことについてはあらかじめスクリプトを準備しておき、また、アプリケーションのデプロイや統計情報のチャットへの投稿等もコマンド1つで行えるように用意していました。そのおかげで、私たちは「計測→推察→修正」という仮説検証のサイクルを高速に回し、ボトルネックの改善に集中することができました。

結果、私たちのチーム「もままみ」は、31チーム中3位に入賞することができました🥉

xenonMotsuさんはISUCONの参加経験がなかったので、ツールの導入等は自分が担当しつつ、考えていることをなるべく伝えながら進めました。最終的には、スコアに直結する施策をたくさん提案してくれて、その適応の早さ・理解力の高さに驚かされました。N+1問題を潰しきれていなかったり、サーバーのメモリを有効活用できていなかったりと、まだまだやりたいことはたくさんありましたが、最後まで2人で手を動かし続けることができたのは本当によかったです。

これまで、練習も含めて何度かISUCONに挑戦した経験がありますが、挑戦の度に技術に対する自分の知識不足や理解不足を痛感します。ISUCONは、非常に良質な「わからなさ」を提供してくれて、エンジニアとしての成長を促進してくれる素晴らしい機会だと感じています。

今回の問題については、こちらでサービスとベンチマーカーが公開されています。また、ISUCON公式の過去問についても簡単に環境構築することができます(ISUCONの過去問にチャレンジするためのシンプルな環境構築 : ISUCON公式Blog)。興味のある方はぜひチャレンジしてみてください。必ずしも実務に直結するとはいえないテクニックもたくさんありますが、きっと何かしらの発見があると思います。

スコアボード

👆優勝チームの黒酢サンドに格の違いを見せつけられました

すべての研修を終えて

今回の研修を通じて、実際の開発の現場における課題と、それに対するソリューションについて幅広く知ることができました。

もはやスタンダードとなりつつあるクラウドの基礎や、最新のAIモデルの活用術といった業界の「今」についても、具体的な事例を通じて肌感覚を得ることができました。また、SaaSやハードウェアレベルのインフラなど、普段の業務で触れる機会が少ないトピックについてもハンズオン等を通じて知ることができました。

加えて、研修の中でさまざまな企業のオフィスを訪れ、他社の新卒エンジニアや社員と直接交流できる機会も得られました。

交流によって、技術的なノウハウだけでなく、異なる企業文化やビジネスの考え方についても触れることができ、多角的な視点を持ち帰ることができました。すでに参加者主導の輪読会等が立ち上がっていたりと、参加者の方々の学習意識の高さからも大変よい刺激を貰えました(「A Philosophy of Software Design」を輪読する予定です、すごくいい本なのでおすすめです!)。

一方で、研修は週2時間程度のプログラムであり、最終回を除けば時間も限られていました。そのため、今回得たのはさまざまな技術のエッセンスに過ぎません。

これからの業務や自己研鑽を通じて、研修で学んだ知識や技術をさらに磨いていき、食べログの課題解決に貢献したいと思っています。

おわりに

さまざまな技術に触れたり、社外の方々と合流したりする経験を通じて、結果的に自分のエンジニアとしての視野を大きく広げることができました。

まさに「圧倒的な学び」を得ることができたと感じています。

私は、配属された時点では、食べログというシステムについて漠然としたイメージしか持っていませんでした。これまでの知識や経験を動員しただけでは、その規模感や複雑さについて具体的に想像することはとても困難なことでした。一方で、日常的に食べログには慣れ親しんでいるし、求められる技術もその大部分が自分の経験の延長線上にあるだろう、という思いもなんとなく持っていました。

研修を終えた今、食べログというシステムを改めて見つめ直すと、その大規模さと複雑さがより一層明確に浮き上がって感じられます。

今回の研修で触れた技術や課題の多くは、食べログに関連する、少なくとも関係ないとは言えないものでした。食べログは来年で20周年を迎えるシステムであり、その運営には多岐にわたるドメイン領域や技術領域に関する深い知識が求められます。

例えば、月間ユニークユーザーが9,000万人を超える規模は、国内でも比類するサービスは少なく、膨大なトラフィックを処理するためには高度な技術が必要です。

また、レストラン情報の検索以外にも、食べログネット予約、食べログノート、食べログオーダー、食べログ求人、食べログ仕入、そして食べログマガジンなど、多様なサービスが共存する複雑なエコシステムであり、さらに今も進化を続けています。

食べログは複雑なシステムであり、開発には苦労も伴うかもしれませんが、だからこそやりがいがあると今は自信を持って言えます。 この研修で得た知識と経験を活かし、さらに食べログを発展させるために役立てていきたいと思います。

最後に、日本CTO協会の皆様、貴重な機会を提供していただき本当にありがとうございました。研修を通じて得た知識や経験はこれからのエンジニアとしてのキャリアにおいて、非常に大きな資産となりました。

食べログ・カカクコムでは一緒に働く仲間を絶賛大募集中です。

誰もが知るプロダクトの開発に携わってみたい方、大規模なプロダクトの裏側に興味がある方は、ぜひ下記採用ページをご一読ください。 ご応募をお待ちしています!


  1. ISUCON」は、LINEヤフー株式会社の商標または登録商標です。