devcontainer について
devcontainerは、開発コンテナとDocker開発環境の問題を診断するスキルです。再現性があり起動の速い環境づくりや、VS CodeとGitHub Codespacesの差異への対処を支援します。
主な機能
- 01コンテナの起動と設定問題の診断
- 02Dockerfileのビルドとキャッシュの改善
- 03VS CodeとCodespacesの差異確認
- 04Docker Composeによる複数サービス環境の計画
- 05設定分析・検証スクリプトの利用
活用シーン
- 01新規プロジェクトの開発コンテナ構築
- 02コンテナ起動の遅さの調査
- 03VS CodeとCodespacesの挙動差の解消
- 04データベースやキャッシュを含む開発環境の設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jwynia/ agent-skills --skill devcontainerインストール後、Claude Code で/devcontainerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/devcontainer-compose.mddevcontainer-dockerfile.mddevcontainer-simple.mdreferences/feature-catalog.mdscripts/analyze-devcontainer.tsscan-image.tsvalidate-dockerfile.ts詳細
Devcontainer 診断
devcontainer と Docker の開発環境に関する問題を診断します。VS Code、GitHub Codespaces、チームメンバー間で一貫して動作する、再現性が高く、すばやく起動する開発環境の構築を支援します。
このスキルを使用する場面
次の場合にこのスキルを使用します。
- 新しい devcontainer をセットアップするとき
- コンテナーの起動が遅すぎるとき
- 設定エラーや競合があるとき
- VS Code と Codespaces で動作が異なるとき
- 複数サービスの開発環境が必要なとき
次の場合はこのスキルを使用しないでください。
- アプリケーションコードを書くとき
- 本番環境にデプロイするとき
- CI/CD パイプラインを設定するとき
基本原則
開発コンテナーは、すぐに開発を始められる環境を提供する必要があります。設定の選択はすべて、起動時間、再現性、チームへの導入に影響します。こうしたトレードオフを明確にしてください。
診断状態
DV0: Devcontainer の方針がない
症状: 手動でセットアップしている、「README を確認してください」と案内している、あるマシンでは動作するが他のマシンでは動作しない
対処方法:
- まずはビルド済みの devcontainer ベースイメージを使用します
assets/devcontainer-simple.mdテンプレートを使用します
DV1: コンテナーの起動が遅い
症状: 起動に5分以上かかる、postCreateCommand が重い、再ビルドを避けている
主な質問:
- 実際の起動時間はどのくらいですか?
- postCreateCommand には何が含まれていますか?
- prebuilds を使用していますか?
対処方法:
- npm install/pip install を Dockerfile に移動します(キャッシュされます)
- mcr.microsoft.com/devcontainers/* ベースイメージを使用します
- チームのリポジトリに prebuilds を設定します
scripts/analyze-devcontainer.tsを実行します
DV2: 設定の問題
症状: JSON エラーが発生する、VS Code が接続できない、機能が競合している
チェックリスト:
- devcontainer.json が JSON の検証に合格する
- image、build.dockerfile、dockerComposeFile のうち1つだけを使用している
- 機能に互換性があり、順序も正しい
- 拡張機能に正しい publisher.extension-name 形式を使用している
DV3: 環境の同等性に関する問題
症状: VS Code では動作するが Codespaces では失敗する(またはその逆)
よくある問題:
| 問題 | ローカルの VS Code | Codespaces |
|---|---|---|
| Docker ソケット | 通常は利用可能 | Docker-in-Docker が必要 |
| シークレット | .env ファイルを使用可能 | Codespaces のシークレットを使用 |
| ファイル監視 | ネイティブ | ポーリングが必要な場合あり |
DV4: 複数サービスの複雑さ
症状: データベース/キャッシュ/キューが必要、サービス間で通信できない
対処方法:
- Docker Compose との統合を使用します
- 永続化には名前付きボリュームを使用します
- サービスの準備状況を確認するヘルスチェックを設定します
assets/devcontainer-compose.mdテンプレートを使用します
DV5: Dockerfile の問題
症状: ビルドに失敗する、イメージが巨大、キャッシュされない
ベストプラクティス:
FROM mcr.microsoft.com/devcontainers/base:ubuntu
# Dependencies first (cached)
RUN apt-get update && apt-get install -y \
build-essential && rm -rf /var/lib/apt/lists/*
# Copy deps then install (cached if deps unchanged)
COPY package*.json ./
RUN npm install
# Code last (changes frequently)
COPY . .
DV6: Devcontainer の検証済み
指標:
- 起動時間が2分未満
- VS Code と Codespaces の両方で動作する
- 新しい開発者が30分以内に作業を開始できる
利用可能なスクリプト
| スクリプト | 目的 | 使用方法 |
|---|---|---|
analyze-devcontainer.ts | 問題と最適化の機会を見つける | deno run --allow-read scripts/analyze-devcontainer.ts |
validate-dockerfile.ts | Dockerfile のベストプラクティスを確認する | deno run --allow-read scripts/validate-dockerfile.ts |
scan-image.ts | 脆弱性をスキャンする(Trivy をラップ) | deno run --allow-run scripts/scan-image.ts [image] |
アンチパターン
あれもこれも詰め込む
「念のため」とすべてのツールをインストールすると、起動に10分以上かかります。 対処法: 最小構成から始めます。必要になったものだけを追加します。
postCreateCommand に詰め込みすぎる
すべてを postCreateCommand に入れると、毎回実行されます。 対処法: 安定した処理は Dockerfile に移動します。
スノーフレークコンテナー
実行中のコンテナー内で手動変更を加えます。 対処法: 変更はすべて設定ファイルに記述します。
テンプレート
assets/devcontainer-simple.md- 基本的な単一コンテナーのセットアップassets/devcontainer-dockerfile.md- カスタム Dockerfile を使用する方法assets/devcontainer-compose.md- 複数サービスのセットアップ
関連スキル
- system-design - 複数サービスのアーキテクチャは Compose の設定に役立ちます
- pwa-development - PWA ツールチェーンに一貫した環境を提供します