scouty リードエンジニアの伊藤です。ISUCON7が10月21,22日に開催されるので、その事前練習としてISHOCON1の問題をみんなで解くイベントを行いました。
ISHOCONとは私 (@showwin) が個人的に自作したISUCON問題のシリーズで、現在 ISHOCON1 と ISHOCON2 の問題があります。今回はRuby, Go, Pythonの参考実装がある ISHOCON1 を使用しました。
ちなみに私はISUCON5で初めてISUCONに参加して、そこからISUCONが大好きになり自作ISUCONを作るなどしていますが、実はISUCON決勝には出たことがありません。。ので、今年こそは決勝に出場したいと思っています!
イベント実施の背景
弊社では学生インターンチームと正社員Webエンジニアチームの2チームがISUCON7に参加するので、その練習のために社内ISUCONを実施しようかと思っていたのですが、せっかくの機会なので外部のエンジニアも招待してみんなでワイワイやろう!ということになりました。
「ガチなコンテストでみんなで競い合う」というよりは、コンテスト終了後の懇親会で自分が高速化した方法を共有して皆で成長しよう!という目的で開催しました。参加のハードルを下げるために今回は2~3人チームでの参加ではなく、個人で問題を解いてもらう形にしました。
事前準備
問題のマニュアルや使用するAMIは https://github.com/showwin/ISHOCON1 のレポジトリにまとめてあるので、その通りインスタンスを立てるだけでした。一つ悩んだのは、インスタンスにSSHする方法です。参加者約20人全員から公開鍵を貰って1つ1つインスタンスに設定するのは手間がかかるので、結局(セキュリティ無視して)こちらが配布した秘密鍵を使ってSSHしてください!として20台のインスタンスにすべて同じ鍵でログインできるようにしてしまいました。(リモートでの参加者もいたので当日のマニュアルはGistにあげて下のようにインスタンスの情報共有をしていました)
ベンチマーカーを実行した結果を表示するポータルには https://github.com/iwashi/private-isu-portal を利用させて頂きました。10チーム以上を表示すると「最新スコア」のグラフが表示されないバグがChromeのみで発生し、競技中に焦ってデバッグしていましたが、今見たら修正のPull-Requestがあがっていました…!ベンチマーカーからポータルに結果を投げる部分は、(私が問題の作者なので) ベンチマーカーの中身をちょっと改造してポータルに結果を投げるように変更しました。
あとは、事前にベンチマーカーのエラーメッセージが分かりにくいというフィードバックを頂いていたので、イベントに向けて少し修正していました。準備にかかった時間はベンチマーカーの修正を除くと4~5時間だったと思います。思っていたよりはスムーズに準備ができました。
イベント当日
当日はこんな感じでみなさん黙々と高速化をしていました。
10:00~18:00 を競技時間として、11:30~12:30 を昼休憩としました。冒頭で書いたとおりコンテストよりは知見の共有が目的なので、昼休みの時間もなんのプロファイラつかっているとか、どういう進め方をしているかなど、みなさんざっくばらんにお話されていました。
午前中は結構ピリピリした空気でしたが、昼休みに歓談してリラックスできたようで午後は静かながらも和やかな空気が流れていた気がします。
結果発表
コンテストの結果ですが、私を除くとなんとISUCON5,6の学生枠で優勝を経験されている「焼肉食べたい」さんが1位でした!おめでとうございます!今年も学生枠で出場されるようで、もちろん優勝を狙っているそうです。次点の「denzow」さんは年末に弊社scoutyに入社予定の方ですが、4位の「:ok_man:」さんも学生で、学生勢が健闘していました。
優勝者景品はscouty代表の島田と焼肉に行くか、Amazonギフト券5000円をもらうかを選択してもらう形にしましたが、チーム名が表しているように焼肉に行きたかったそうで、前者を選択されました(笑)
反省
自分で解いている時には気づかなかったのですが、データの内容に一部不具合があり、特定のリクエストでエラーになる仕様になっていたようで、それの修正に3時間も悩んでいらっしゃった参加者もいました。本質的ではない部分に時間を使ってしまうことになり大変申し訳なかったです。
イベントの翌日に沖縄でISUCONの模擬試験のイベントが行われたようで、そこでもISHOCON1の問題を使って頂きました。運営の方がブログ記事 (ISUCON模試を開催して運営&参加してきた) を書いてくださったのですが、3人チームで取り組むと8時間でやりたいことが全てできてしまうようだったので、もう少し難易度の高い問題にすると、あれこれしたかったよね。と感想戦ができて更に楽しめるのかなと思いました。
来年も同じような時期にISHOCON2のイベント開催を予定していますので、興味ある方はぜひ来年ご参加ください!
scoutyでは高速化大好きエンジニアも絶賛募集中です!