素振りと過去問
読了目安 約3分
練習環境の入手先、素振りの型、本番前のチェックリスト。この教室の締めくくりです。
この章の目次
計測(alp、スロークエリログ、pprof)で場所を特定し、N+1 の解消、インデックス、キャッシュで直す。 この一式は読めば分かるものですが、8 時間の本番で手が動くかは別の問題です。 本番と同じ手順を練習環境で繰り返すことを、ISUCON 界隈では素振りと呼びます。
練習環境
1 つ目は private-isu です。 github.com/catatsuy/private-isu で公開されている定番の練習問題で、お題は画像投稿型の SNS、ベンチマーカーも付属します。 この教室で扱った素材が一通り出てくるので、最初の素振りに最適です。
2 つ目は ISUCON の過去問です。 github.com/isucon 以下に各年のお題アプリとベンチマーカーが公開されています。 環境の立て方は年ごとに違うので、各リポジトリの README に従ってください。
素振りの型
- 環境を立て、何も変えずにベンチを回して初期スコアを記録する
- 計測して、合計時間が最大のものを 1 つ直し、ベンチを回す
- 変更内容とスコアの変化を記録して、2 に戻る
肝は記録です。 「インデックスを 1 本張ったら初期スコアの何倍になったか」という対応の記憶が、本番で優先順位を即断する引き出しになります。 スコアが下がった変更も、下がった事実ごと記録して元に戻します。
1 人素振りとチーム素振り
1 人での素振りは、判断の練習です。 計測結果を読み、直す場所を選び、実装し、効果を確かめるループを、誰にも頼らず回せるようにします。 普段は任せる範囲の作業も一度は自分の手で通しておくと、本番でインフラ担当と話すときに言葉が通じやすくなります。
チームでの素振りは、それに加えて連携の練習です。 1 つのコードベースを 3 人で触るので、Git 超入門 の運用が実地で試されます。 誰の変更が反映された計測か分からなくなるのを防ぐため、「いまから回す」「回し終わった」という声かけの習慣もここで作ります。
本番前チェックリスト
本番の前に、チームで確認します。
- 共有リポジトリを作り、全員が push と pull をできることを確かめたか
- 計測の分担を決めたか(誰が alp を読み、誰がスロークエリログを読むか)
- 「1 改善 1 ベンチ」と、ベンチを回す前の声かけを申し合わせたか
- 最後の 1 時間の保全手順(変更の凍結、再起動しての動作確認、最終ベンチ)を決めたか
- 当日のレギュレーションを最初に読み込む担当を決めたか
送り出し
この教室のゴールは「ISUCON に参加して、アプリコードと SQL の改善でチームに貢献できるようになる」ことでした。 計測して、いちばん遅いところを 1 つ直して、また計測する。 あなたはもう、その動作を知っています。
開催情報は公式サイト isucon.net で告知されます。 チームを組んで、申し込んで、それまで素振りを。 スコアが伸びる瞬間を楽しんできてください。