仕事以外でも学びの場を、みんなの手で〜フラー社内ISUCON〜
デジタルとモバイルに関するあらゆる面でクライアントを支援するフラーでは、さまざまなテーマで盛んに社内勉強会やイベントが開催されています。
去年12月には新たに、Webサービスのスピードアップコンテスト『ISUCON(イスコン)』をリスペクトした、フラー社内ISUCONが開催されました。そこで今回は、フラー社内ISUCONを主催したメンバーと初代優勝者に輝いたメンバーに、イベントについて話を聞いてみました。
━━簡単に自己紹介をお願いします
古澤(社内ISUCON主催、テックリード・写真左):
フラースタジオのサーバーサイドエンジニアとして、クライアントワークでインフラやサーバーサイドを担当しています、古澤です。また、テックリードも務めており、全社的な技術方針の決定やメンバーの目標設定のサポートなども行っています。
今回は、本家ISUCONリスペクトのフラー社内ISUCON主催者として、企画から準備、当日運営まで担当しました。
岡崎(社内ISUCON優勝者・写真右):
同じくフラースタジオ・サーバーサイドエンジニアの岡崎です。今回のフラー社内ISUCONにはいち参加者として参加し、優勝いたしました。
━━フラー社内ISUCONのイベント概要を教えてください
古澤(社内ISUCON主催、テックリード):
ISUCONとは、LINE株式会社さんが主催されている、webサービスのスピードアップを題材にサーバーサイドの技術を競うコンテストです。今年で11回目、参加チームも500くらいの歴史も規模ある大会となっています。フラーも、2019年から有志で参加しています。
そのISUCONをフラーの社内イベントとしてやってみようというのが、今回のフラー社内ISUCONです。こういったことは他の企業でもたびたび行われており、フラーもサーバーサイドエンジニアの数が増えてきたので、これならやれそうだなと思って企画しました。
ISUCONから学ぶことはとても多く、実務面にもフィードバックがあります。だから、ぜひ社内でもやりたくて。
個人的に、2021年の本家ISUCONに都合がつかず出られなかった無念さもあったので、社内ISUCON開催という形でそれを晴らせたらなという思いもありました。
本家ISUCONは最大3人のチーム戦ですが、今回は個々のレベルアップを考えて個人戦で開催しました。
作問についてはノウハウと時間が足りなかったので、本家ISUCONの過去問を参考にさせていただく形としています。
━━どのような狙い・目的を持って課題を設定したか教えてください
古澤(社内ISUCON主催、テックリード):
フラーのサーバーサイドエンジニアは、インフラもサーバーサイドも両方見る必要があります。コードを書くだけでも、インフラ周りのミドルウェアを扱えるだけでもダメなんです。
なので社内ISUCONとしては、コードの面にもインフラの面にも様々な改善点が散りばめられているものを、課題として出題しました。
また、競技時間が本家と比べて長くないので、設問のシステム自体は理解に時間がかからないシンプルなものを選んでいます。
本家ISUCONの中には、仕様が複雑でまずそれを理解するのに時間がかかる問題もあるのですが、今回、フラーが社内でやる上ではそれは本質的じゃないなと思って避けた形です。
━━実際に参加してみていかがでしたか?
岡崎(社内ISUCON優勝者):
さっき古澤さんが課題設定の話でおっしゃっていたように、課題のシステム自体はシンプルで、仕様の把握に時間をたくさん使ってしまうということはなかったですね。改善作業に集中できたと思います。
ただ、やっぱり自分は本家のISUCONにも出たことがなかったので、苦戦した部分はいくつかありました。今回の社内ISUCON開催前に本家の過去問を見て、すこし予習などもしてみましたんですが、実際に限られた時間の中で取り組んでみると、なかなか気づけない点なども多くて難しさを感じましたね。
やっぱり、やっているうちに時間は足りなくなってきてしまって……本家よりも短い設定ではあったんでしたっけ?
古澤(社内ISUCON主催、テックリード):
そうですね、本家は8時間ですが、今回は5時間としています。これは、今回は社内の勉強会としてのイベントでもあったので、競技後にしっかり振り返りを行いたかったためです。
全体としては8時間くらいの枠としており、5時間を競技に使い、残り3時間を競技前の説明と競技後の振り返りに当てる形ですね。
しかし、すでに本家に参加したことあるメンバーは勘所がわかってすんなり進められたかなと思うんですけど、初めてのメンバーはどこから手をつけたら良いのかわからない部分もあったと思います。
そのフォローをもう少しするべきだったなというのは、運営側の反省点ですね。
岡崎(社内ISUCON優勝者):
いえ、そういうバランスを取るのは難しいですよね。参加者として、逆にもうすこし自力で頑張る部分が多くても面白かったかもな、と思うこともあるので。
今回、技術的に詰まったら運営の方に聞けるという救済措置を設けていただいていました。本家はチーム戦なので一人で詰まっても相談し合えるけど、今回は個人戦のため詰まってしまったら最悪そこでずっと……になってしまうから、そういった形にしてくださったんだと思います。
助かったなと思う反面、ごく個人的には、もっと自力が試されるくらいのバランスでもやってみたいな、と思わないでもなくて。難しいところですよね。
━━優勝の要因はどのようなところにあると思いますか?
岡崎(社内ISUCON優勝者):
データベースへのアクセスが何度も行われている箇所があり、そこに気づいて改善ができたのが、大きなスコアの取り所だったのかなと。
古澤(社内ISUCON主催、テックリード):
問題全体を俯瞰した時に、超えてほしい山が三つ四つくらいあって、そこにフォーカスを当てられるか、そして当てた上で乗り越えられるかの勝負になったと思います。
岡崎さんが言ったのはまさにその一つで、そこを超えられたのは、優勝の要因の一部ですね。
公式のISUCONの講評やワークショップでは、「予想ではなく事実から分析すべき」という思想が大切にされています。どこに・何に原因があるかを事実から導き出すのはエンジニアリングにおいて最も確実で正しい方法であり、そのステップを踏まないとスコアが出ないのがISUCONです。
優勝を目指してもらう中で、メンバーみんなに自然とそういった意識を養ってもらえたら嬉しいです。
━━イベント運営において大変だったことはなんですか?
古澤(社内ISUCON主催、テックリード):
運営は4人でやっていましたが、もちろんみんな他の業務を抱えながらなので、時間の確保が大変でした。12月開催で、キックオフしたのは9月頭。忙しかったなと。
また、課題の設定において「どこまでを課題とするか」の線引きも難しかったです。
というのも、課題そのものは基本的に過去問を参考にした形ではあるものの、本家と何もかもを同じにしたわけではないんです。
本家ISUCONでは、たとえばサーバーが3台用意されているとしたら、それにそれぞれログインしISUCONを戦う上で必須となるツール群をインストールして……という事前準備から、自分たちでやります。
しかし、フラー社内でスキルアップのために行う上では、そこは本質的じゃないなと思ったので、条件を揃えた形でやってもらいたかった。このツールをこう使えばこういう解析ができるよ、というのまでは運営側で用意して、じゃあそれをどこにどう使うかということの方を考えて欲しかったんです。
そうすると、どこまでを用意してどこからは参加者にやってもらうと決めなければいけなくて、そこが難しかったなと。
また、参考にした過去問は3年前のものだったんですが、その間に各種環境に変化があったので、「昔は動いたけど今は動かない」という問題も地味に起こって……。そういうことの解決にも時間が取られてしまいましたね。
それから、運営として課題を出す以上は模範解答を提示する必要があるんですが、他の参加者が見つけて僕が見つけられなかった改善点があったら示しがつきません。なので、納得のいく解答を作るのに、やっぱりちょっと頑張る必要はあったなあと。
他にもリハーサルをやりながら色々問題が出てきたので、もっとしっかりと計画立てて、時間に余裕を持ってやるべきでした。
ただ、このように大変だったことがたくさんあったのですが、第二回目も開催したいです。一回始めたからには続けたいし、みんなのためになるすごく良いイベントになったという実感はあるので。
━━今回の社内ISUCONで得た知見は、業務に活かせそうですか?
岡崎(社内ISUCON優勝者):
システムのスピードアップにおいて改善点はアプリとインフラ両面にありますが、アプリの面には普段の業務で取り組む機会が必ずあるものの、インフラ面はなかなか変更が入らないため、触れる機会がなかったりします。
しかし、ISUCONではインフラ面も触らないとスコアが伸びないので、今回、そのあたりの経験を積める良い機会をいただいたと思います。
古澤(社内ISUCON主催、テックリード):
そこはまさに狙っていたところなので、そう言ってもらえて嬉しいですね。インフラ周りは本当に、最初作ったものが何年も運用されていくことも多く、それこそプロジェクト立ち上げの最初のタイミングに参加していないと、なかなか触れる機会がありません。
フラーのサーバーサイドエンジニアのスキルとしてインフラの知識は必須な割に、あまり経験のタイミングを作れないのはよくないなあとテックリードとして思っていたので、今回、その機会を作れて良かったです。
運営側の学びとしては、……イベントを企画するって大変だなと(笑)
自分が主催となって、主催メンバーを集めて段取りを決めて、当日の人も集めて——というのは普段のエンジニアとしての業務ではなかったことなので、たくさんの発見があり、良い勉強になりました。
得られた知見を元に、より良いイベントにしていきたいです。
フラーでは、新メンバーを随時お迎え中。ご興味お持ちいただけましたら、こちら↓の採用ピッチ資料もぜひご覧ください。
採用ページ↓もぜひ覗いてみてください!
(インタビュー・校正:平山、写真撮影:島・松岡)