はじめに
- 先日ウルシステムズの社内でISUCONを開催しました
- 学んだことや反省点などを書くことで社内ISUCONを開こうと思っている人の参考になればと思い記事にしました
目的
- コードを書く楽しさを感じてほしい
- 普段はコンサルティング業務を行っている社員が多く殆どの社員が業務でコードを書くことが少なくなっています
- みんなにコードを書く楽しさを再確認してもらうことを目的としました
ルールなど
ISUCON5予選をベース
- 参加者(運営)がJavaなら書ける!という人が多いという想定のもとJava実装があるISUCONをベースにしました
制限時間は24時間
- 23時スタート→翌日21時エンド+参加者同士で交流してたので実質は24時間overかもしれません
- 深夜帯をどう使うかチーム間で個性が出るだろうと思い設定しました
- 深夜はあまりやらないだろうという想定でしたが殆どのチームが朝方までやっていました
1~3人のチームで募集
- 参加チームは10チームとなりました
環境
- 本番環境はAWS
- Dockerを使ってアプリケーションをデプロイできる手順書を提供
- 開発環境はローカル
- Dockerを使って開発できる手順書を提供
- コードの共有はGitHubのリポジトリを各チームに配布
フルリモート
- 業務もフルリモートなので社内ISUCONもフルリモートで実施しました
- もちろんチーム内の交流・やりとりもリモート
- 広島+福岡の混合チームもいました
- イベント後の飲み会などもリモートで実施
- ランチ時に「ITO」をリモートで開催しました
本家ISUCONとの違い
独自のボトルネック
- 無意味なSleepを行うコードを追加しました
- 並列処理で全コアを使い切るようなコードを追加しました
マスクマン制度を導入
- ◎の体育会TVのようなマスクマン制度を導入しました
- 具体的にはシニアで技術力が高い人たちのチーム(2チーム)をマスクマンチームとし
- 当日まで参加者を公表しませんでした
- イベント中にハンデを設定してもらいました
- 最終結果ポイントを他のチームに?%献上する(上限10%)を最初の宣言してもらいました
- 運営の煽り?努力の結果2チームとも10%を献上してくれました
インスタンスタイプに差をつけた
- スタート時にインスタンスルーレット(抽選)を行い使用するインスタンスタイプを決めました
- 終盤でクイズ大会を行いインスタンスタイプを交換できるイベントを行いました
- 正解率が高い上位2チームがその他のチームとインスタンスタイプを交換できます
仮採点・本採点
- スタートから翌日19時までは常に採点できる状態でベンチマーカーを起動しておきbest_scoreを競います
- 19時からのイベントで本採点を行います
- best_scoreの順に一発勝負の採点を行いそれをlatest scoreとします
- 本採点のベンチマーカーの並列度が2倍になっています
当日の様子
- インスタンスルーレットの様子
よかった点
- とにかくみんな楽しんでくれたところ
- アンケート回答者25人中24人が「とても楽しめた」「どちらかというと楽しめた」と回答してくれました
- いろんな人が「夢中になれた」「刺激になった」「勉強のきっかけとなった」とコメントしてくれました
- 新人の方が「ベテランの方のアプローチやコードをみれてすごく勉強になった」と書いてくれました
- みんなにコードを書く楽しさを再確認してもらう という目的は達成できたと感じています
- インスタンスタイプに差をつけたこと
- 「参加のハードルが高いと思っていましたが、このおかげでみんなが楽しめる会になった」とアンケート回答がありました
反省点
- インスタンスタイプに差をつけたこと
- これはよかった点でも挙げたのですが「やる気を無くした」というコメントもありました
- バランス調整が必要だと感じました
- 環境構築に時間がかかった
- ベンチマーカーを動かせるようになるまでに数時間かかったチームがありました
- 手順の準備などに改善点があるように思いました
さいごに
- 目的としていた「コードを書く楽しさを感じてほしい」は達成できたと思っています
- 「インスタンスタイプに差がない場合どうなるのか」が気になっているので「ISUCONリベンジ」を計画中です