この教室について
この教室は、競技プログラミングの経験はあるが、Web 開発はほぼ未経験という人のために書かれています。 if 文や for 文、配列や連想配列といった基本は知っている前提で、それ以外はすべてゼロから説明します。
ゴールは ISUCON(お題の Web サービスを制限時間内に高速化するコンテスト)に参加して、自分の手で改善を入れられるようになることです。 そのために、Web の仕組み、Go でのプログラムの書き方、SQL とデータベース、そして性能改善のやり方を順番に学びます。
学習に必要なもの
最初に必要なのは、Web ブラウザだけです。 Part 1 まではページ内のエディタで演習できます。
Part 3 からは、手元のマシンに Go と curl が必要です。
Part 4 からは、MySQL を動かすために Docker Desktop も使います。
Windows では WSL と VS Code を使う手順を Part 0 で説明します。
コード例は Go 1.26 と MySQL 8.4 で動作を確認しています。 Part 3 のルーティングで使う機能に Go 1.22 以降が必要なため、それより古い Go では一部のコード例が動きません。
すべての演習を行う場合、全体の所要時間は 26〜39 時間が目安です。 読む速さや、発展課題に取り組む時間によって前後します。
進め方
- 各章は上から順に読む前提で書かれています。迷ったら Part 0 から始めてください。
- Go の章では、ページの右側にエディタが付いています。コード例を読み込んで、その場で書き換えて実行できるので、環境構築が終わっていなくても試せます。
- コマンドやコードは、読むだけでなく実際に手を動かして確かめることを強くおすすめします。
- 前に出てきた用語を忘れたら、用語集から説明している章へ戻れます。
Part ごとの到達点
所要時間は、本文を読み、「試してみよう」の演習を行う場合の目安です。
| Part | 所要時間 | 終了時にできること | 必要な環境 |
|---|---|---|---|
| Part 0 準備 | 30〜60 分 | 学習のゴールを確認し、Go のコードを手元で実行できる | ブラウザ、Go、VS Code、curl。Windows では WSL |
| Part 1 Go の基礎 | 4〜6 時間 | Web 開発で使う Go のコードを読み、エラー処理や並行処理を書ける | ブラウザだけでも可 |
| Part 2 Web の仕組み | 1〜2 時間 | URL を入力してから画面が表示されるまでを説明できる | ブラウザだけでも可 |
| Part 3 Web サーバーを書く | 3〜5 時間 | Go で HTTP リクエストを受け、レスポンスを返せる | Go、curl、ターミナル |
| Part 4 データベースと SQL | 4〜6 時間 | SQL を読み書きし、Go から MySQL を操作できる | Part 3 の環境、Docker Desktop |
| Part 5 ミニ掲示板を作る | 4〜6 時間 | 投稿、登録、ログインを備えた Web アプリを組み立てられる | Part 4 と同じ。Git を推奨 |
| Part 6 ISUCON に挑む | 4〜6 時間 | 計測からボトルネックを見つけ、定番の改善を試せる | Part 5 と同じ |
| Part 7 性能の理論 | 2〜3 時間 | 負荷と処理時間から、先に限界へ達する資源を見積もれる | 追加の環境は不要 |
| Part 8 スケールの理論 | 3〜4 時間 | データ配置や台数を増やす方法の代償を比較できる | 追加の環境は不要 |
カリキュラム
- Part 0 準備 この教室のゴールを確認して、手元で Go が動く状態を作ります。 全 2 章
- Part 1 Go の基礎 競プロで書く Go と、チームで動かし続ける Go の違いを埋めます。 全 10 章
- Part 2 Web の仕組み ブラウザとサーバーの間で何が起きているかを、コードを書く前に理解します。 全 3 章
- Part 3 Web サーバーを書く Go で HTTP サーバーを書き、ページ内の REST クライアントから動きを確かめます。 全 6 章
- Part 4 データベースと SQL データの保存と検索を担う MySQL を、SQL の書き方から仕組みまで学びます。 全 8 章
- Part 5 ミニ掲示板を作る ここまでの全部を使って、ログインできる掲示板を一つ作り切ります。 全 7 章
- Part 6 ISUCON に挑む 計測して、ボトルネックを見つけて、直す。ISUCON の基本動作を身につけます。 全 7 章
- Part 7 性能の理論 1 台を使い切るための理論。どこが先に限界に来るかを、測る前に見当をつけられるようにします。 全 5 章
- Part 8 スケールの理論 増やす前に代償を知る。データの置き場所とツールの選び方、台数を増やしたときに何が起きるかを扱います。 全 6 章
- 付録 本編の補助資料。必要になったときに読んでください。 全 3 章