クラウドで開発環境を動かす - Codespaces
GitHub Codespaces は `devcontainer.json` を GitHub のクラウド VM 上で起動するサービス。ブラウザや VS Code から接続して、ローカル環境を整えずに開発できる。
概念図
構文
gh codespace create --repo <owner>/<repo> --branch <branch>実例
CLI から特定ブランチ・マシンタイプで Codespace を作成。
gh codespace create --repo acme/web --branch main --machine basicLinux32gb自分が持っている Codespace の一覧を確認。
gh codespace listCodespace に SSH で入る。
gh codespace ssh -c <name>Codespaces の立ち位置
Codespaces は「Dev Container を自分の PC ではなく GitHub のクラウド VM 上で動かす」サービスです。
リポジトリに .devcontainer/devcontainer.json が置いてあれば、GitHub の「Code」ボタンから Create codespace を押すだけで、ビルド済みのコンテナに VS Code が接続した状態に辿り着きます。
ローカル Docker Desktop を入れたくない/入れられない環境(会社支給 PC の制限、スペック不足、Windows ホームで WSL2 が不安定、など)の逃げ道として特に価値があります。
ブラウザ版 VS Code も提供されるので、極端には iPad からでも開発できます。
マシンタイプとコスト
Codespaces は使っただけ課金(コア時間 × 稼働時間)で、停止中はストレージ課金のみに切り替わります。
代表的なマシンタイプは次のとおり。
| 名称 | コア / メモリ | 向く用途 |
|---|---|---|
| 2-core / 4 GB | 軽量 | ドキュメント編集、小規模スクリプト |
| 4-core / 16 GB | 標準 | 一般的な Web アプリ、テスト実行 |
| 8-core / 32 GB | 重め | 大規模リポジトリ、ビルドが重い Node/Python 系 |
| 16-core / 64 GB | 大型 | モノレポ全ビルド、重めの E2E |
Org のポリシーで「上限マシンサイズ」「自動停止の分数」を絞れるので、チーム利用時は先に Codespaces の設定を詰めておくのが安全です。
Prebuild で起動を速くする
Codespaces Prebuild は、ブランチの変更に追随して事前にコンテナイメージをビルドしておく仕組みです。
Prebuild ありだと「Create codespace」から準備完了までが数秒〜十数秒に縮みます(なしだと数分かかることがある)。
典型的な設定は「main ブランチ + 特定のリリースブランチを常に prebuild する」。
依存が変わるたびに再ビルドされるので、package.json の更新後も次回 push 時点でキャッシュ化された状態になります。
.github/workflows ではなく、リポジトリの「Settings → Codespaces → Prebuilds」からルールを設定します。
dotfiles とパーソナライズ
Codespaces はユーザーごとに「dotfiles リポジトリ」を登録できます。
自分の .zshrc、エイリアス、gitconfig 等をこのリポジトリに置いておくと、どの Codespace を立ち上げてもそれらが自動的に clone + 実行されます。
チーム共通の設定は devcontainer.json に、個人の趣味は dotfiles に、と分けるのが運用しやすい構成です。
一方で、dotfiles で重いインストール(大量の zsh プラグイン等)をするとセッション起動が遅くなります。
prebuild が効かない領域なので、必要最低限に留めるのがコツです。
関連トピック
devcontainer- Dev Containers は、開発環境そのものをコンテナとして記述・配布する仕組み。VS Code Dev Containers 拡張や GitHub Codespaces と組み合わせ、「誰の手元でも同じ環境」を即座に立ち上げられる。 devcontainer.json- `devcontainer.json` は Dev Container の設定を記述する中心ファイル。ベースイメージ、ポート転送、VS Code 拡張、起動後コマンドなどをまとめて指定する。 features- features は devcontainer.json から追加のツール(Node、Python、AWS CLI、Docker-in-Docker など)を宣言的に入れる仕組み。OCI アーティファクトとして配布され、Dockerfile を書かずに環境を拡張できる。 JetBrains Gateway- JetBrains Gateway は IntelliJ / WebStorm / PyCharm などの IDE をリモートのコンテナや SSH 先に接続するランチャ。`devcontainer.json` を読み込み、VS Code 以外の開発者も同じ定義を使える。 