🔩 ねじき教室 Go と Web の教室

素振りと過去問

読了目安 約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 つ直し、ベンチを回す
  3. 変更内容とスコアの変化を記録して、2 に戻る

肝は記録です。 「インデックスを 1 本張ったら初期スコアの何倍になったか」という対応の記憶が、本番で優先順位を即断する引き出しになります。 スコアが下がった変更も、下がった事実ごと記録して元に戻します。

1 人素振りとチーム素振り

1 人での素振りは、判断の練習です。 計測結果を読み、直す場所を選び、実装し、効果を確かめるループを、誰にも頼らず回せるようにします。 普段は任せる範囲の作業も一度は自分の手で通しておくと、本番でインフラ担当と話すときに言葉が通じやすくなります。

チームでの素振りは、それに加えて連携の練習です。 1 つのコードベースを 3 人で触るので、Git 超入門 の運用が実地で試されます。 誰の変更が反映された計測か分からなくなるのを防ぐため、「いまから回す」「回し終わった」という声かけの習慣もここで作ります。

本番前チェックリスト

本番の前に、チームで確認します。

  • 共有リポジトリを作り、全員が push と pull をできることを確かめたか
  • 計測の分担を決めたか(誰が alp を読み、誰がスロークエリログを読むか)
  • 「1 改善 1 ベンチ」と、ベンチを回す前の声かけを申し合わせたか
  • 最後の 1 時間の保全手順(変更の凍結、再起動しての動作確認、最終ベンチ)を決めたか
  • 当日のレギュレーションを最初に読み込む担当を決めたか

送り出し

この教室のゴールは「ISUCON に参加して、アプリコードと SQL の改善でチームに貢献できるようになる」ことでした。 計測して、いちばん遅いところを 1 つ直して、また計測する。 あなたはもう、その動作を知っています。

開催情報は公式サイト isucon.net で告知されます。 チームを組んで、申し込んで、それまで素振りを。 スコアが伸びる瞬間を楽しんできてください。