Extend Dev Containersを使った開発
注釈:本資料はAI技術を用いて翻訳されています。
概要
Dev Containersは、ローカルマシンに開発ツールを手動でインストールおよび設定する必要をなくす、Extendアプリの代替開発ワークフローを提供します。コンテナ化された開発環境を使用することで、異なるオペレーティングシステムやチームメンバー間での一貫性を確保しながら、セットアップの複雑さと環境関連の問題の可能性を減らすことができます。
このガイドでは、Extendアプリテンプレートでのセットアップ、ワークフロー、ベストプラクティスを含む、Dev Containersの使用方法について説明します。Dev Containersは、一貫した環境を望むチーム、Extendアプリ開発に不慣れな開発者、クロスプラットフォーム開発チームに特に有用です。
Dev Containersは、Extendアプリ開発ワークフローで説明されている従来の開発ワークフローの代替手段です。両方のアプローチは同じ結果を達成しますが、Dev Containersはより分離された一貫性のある環境を提供します。
前提条件
ExtendアプリでDev Containersを使用する前に、以下がインストールされていることを確認してください。
- Visual Studio Code(VS Code)またはCursor - Dev Containersをサポートするコードエディタ
- code.visualstudio.comまたはcursor.comからダウンロード
- Dev Containers拡張機能 - VS Code用のRemote - Containers拡張機能、またはCursor用のDev Containers拡張機能をインストールします。
- Docker Desktop - 開発コンテナを実行するために必要
- Git - Extendアプリテンプレートのクローン用
Dev ContainersはGitHub Codespacesなど、Dev Containers仕様をサポートする他のIDEでも動作します。ワークフローは異なる環境間で類似しています。
Dev Containersワークフロー
これらの手順のクイックスタート版のみが必要な場合は、Dev Containersワークフローの概要を参照してください。以下のセクションでは、各手順を詳しく説明します。
1. Extendアプリテンプレートのクローン
まず、GitHubからExtendアプリテンプレートをクローンします。テンプレートにはすでにDev Container設定ファイル(.devcontainer/devcontainer.json)が含まれているため、追加のセットアップは必要ありません。
git clone https://github.com/AccelByte/extend-service-extension-go
cd extend-service-extension-go
Dev Containerサポート
言語とユースケースに応じて、公式のExtendアプリテンプレートのいずれかを使用できます。利用可能なテンプレートの完全なリストについては、以下のドキュメントページを参照してください。
すべてのGo、Python、C#テンプレートにはDev Containerサポートが含まれています。JavaテンプレートにはDev Containerサポートがありませんし、現時点で追加する予定もありません。
2. VS CodeでDev Containersを開く
-
VS Codeでプロジェクトフォルダを開きます。
code . -
VS Codeが
.devcontainerフォルダを検出すると、コンテナでフォルダを再度開くようにプロンプトが表示されます。プロンプトが表示されたらReopen in Containerをクリックします。または、手動でこれをトリガーすることもできます。
Ctrl+Shift+P(macOSではCmd+Shift+P)を押すDev Containers: Reopen in Containerと入力- コマンドを選択
-
VS Codeは開発コンテナをビルドして起動します。初回はベースイメージのダウンロードと依存関係のインストールに数分かかる場合があります。
Dev Container設定には、以下のような必要なツールがすべてプリインストールされています。
- Bash
- Make
- 言語固有のビルドツール(テンプレートに応じてGo、Python、Java、または.NET)
- Docker-in-Dockerサポート(コンテナイメージのビルドに必要な場合)
- 開発依存関係
- Extend Helper CLI
GitHub Codespacesの使用
ゼロインストールアプローチを希望しますか?GitHubでテンプレートリポジトリを開き、Code → Codespaces → Create codespaceを選択すると、GitHub Codespacesがクラウド内で同じ.devcontainer環境をビルドします。ローカルでDockerを実行することなく、同じツール、VS Code設定、MCP設定を取得できます。
3. 開発環境のセットアップ
コンテナが実行されると、開発環境が自動的に設定されます。
- 事前設定されたツール: 必要なすべての開発ツールがインストールされ、使用可能です
- 環境変数: コンテナには開発に必要な環境変数が含まれています
- ボリュームマウント: プロジェクトファイルがコンテナにマウントされるため、変更は即座に反映されます
- 拡張機能: Dev Container設定で指定されたVS Code拡張機能が自動的にインストールされます
- VS Code設定ファイル: Extendアプリテンプレートには、一般的な操作用の
tasks.json、デバッグ用のlaunch.json、Model Context Protocol(MCP)サーバーを介したAI支援開発用のmcp.jsonなどの事前設定されたVS Codeファイルが含まれています
mcp.jsonで設定されたMCPサーバーを使用するには、VS Codeで設定する必要がある場合があります。詳細なセットアップ手順については、VS Code MCPドキュメントとMCPサーバーガイドを参照してください。共有MCP設定ファイルは、Extendアプリテンプレートのmcp.jsonで利用できます。
環境が正しくセットアップされていることを確認するには、インストールされているツールを確認します。
bash --version
make --version
docker --version
extend-helper-cli --help
4. ビルドとテスト
Dev Containerが実行されている状態で、従来のワークフローと同じコマンドを使用してExtendアプリをビルドおよびテストできます。
# アプリケーションのビルド
make build
# テストの実行
make test
# gRPCコードの生成
make proto
ビルドプロセスは従来のワークフローとまったく同じように機能しますが、すべてが分離されたコンテナ環境内で実行されます。
5. カスタマイズ
従来のワークフローと同じ手順に従ってExtendアプリをカスタマイズします。
- gRPCサービス定義の変更:
.protoファイルを編集してサービスメソッドを定義 - gRPCメソッドの実装: 適切な言語でビジネスロジックを記述
- 依存関係の追加: 依存関係ファイル(
go.mod、requirements.txt、build.gradleまたはpom.xml、*.csprojなど)を更新 - 環境変数の設定: 必要に応じて変数とシークレットをセットアップ
カスタマイズプロセスは従来のワークフローと同じです。異なるのは開発環境のみです。
Dev Container自体をカスタマイズする必要がある場合(追加のツールの追加やベースイメージの変更など)は、.devcontainer/devcontainer.jsonファイルを編集してください。変更はコンテナを再ビルドした後に有効になります。
6. デプロイ
デプロイは従来のワークフローと同じプロセスに従います。
-
コンテナイメージのビルド:
docker build -t your-app:latest . -
AccelByte Gaming Servicesへのプッシュ:
- VS Codeタスクの使用(推奨):
extend-helper-cliを使用してイメージをアップロードする事前設定されたVS Codeタスクを使用します。これらのタスクはExtendアプリテンプレートで利用可能で、手動でコマンドを入力することなくextend-helper-cliを使用できます。以下の方法でアクセスします。Ctrl+Shift+P(macOSではCmd+Shift+P)を押すTasks: Run Taskと入力Extend: Create App、Extend: Login to Docker、Extend: Build and Upload Image、Extend: Deployなどのタスクを選択
extend-helper-cliを直接使用: ターミナルでコマンドを手動で実行
- VS Codeタスクの使用(推奨):
-
Admin Portalからのデプロイ:
- Admin PortalでExtendアプリに移動
- 変数とシークレットを設定
- アプリをデプロイ
Extendアプリテンプレートには、extend-helper-cliの使用を簡素化するVS Codeタスクが含まれています。これらのタスクは、アプリの作成、イメージのビルドとアップロード、アプリのデプロイ、アプリライフサイクルの管理などの一般的な操作を処理します。利用可能なタスクの完全なリストについては、テンプレートの.vscode/tasks.jsonファイルを参照してください。
詳細なデプロイ手順については、特定のExtendアプリタイプのガイドを参照してください。
Dev Containersのメリット
Extendアプリ開発にDev Containersを使用すると、いくつかの利点があります。
- 一貫した環境: すべてのチームメンバーが同一の開発環境で作業し、「私のマシンでは動作する」という問題を軽減
- セットアップの複雑さの軽減: Bash、Make、Docker、または言語固有のツールを手動でインストールする必要がありません
- クロスプラットフォーム互換性: Linux、Windows、macOSでシームレスに動作
- 分離された環境: 開発ツールがホストシステムに影響を与えません
- 簡単なリセット: いつでもコンテナを再ビルドして新しい環境を取得できます
- バージョン管理: Dev Container設定はプロジェクトと一緒にバージョン管理されます
Dev Containersを使用する場合
以下の場合にDev Containersの使用を検討してください。
- チーム全体で一貫した開発環境を望む場合
- Extendアプリ開発に不慣れで、セットアップの複雑さを避けたい場合
- 異なるツール要件を持つ複数のプロジェクトで作業している場合
- 開発ツールをホストシステムから分離したい場合
- Windowsで開発しており、WSL2の複雑さなしにLinuxライクな環境を望む場合
Dev Containerのカスタマイズ
Dev Container設定は.devcontainer/devcontainer.jsonにあります。以下のようにカスタマイズできます。
- ベースイメージの変更
- 追加のツールやパッケージのインストール
- 環境変数の設定
- ポートフォワーディングのセットアップ
- 追加のVS Code拡張機能のインストール
.devcontainer/devcontainer.jsonの例:
{
"name": "Example Dev Container",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
},
"customizations": {
"vscode": {
"extensions": [
"ms-vscode.go",
"golang.go"
]
}
},
"forwardPorts": [8080, 9090],
"postCreateCommand": "make install"
}
設定を変更した後、コンテナを再ビルドします。
Ctrl+Shift+P(macOSではCmd+Shift+P)を押すDev Containers: Rebuild Containerと入力- コマンドを選択
トラブルシューティング
コンテナの起動に失敗する
- Docker Desktopが実行されていることを確認
- Dockerログを確認:
docker ps -aでコンテナのステータスを確認 .devcontainer/devcontainer.jsonファイルが有効なJSONであることを確認
ビルドコマンドが失敗する
- コンテナ内にいることを確認(VS Codeのステータスバーを確認)
- コンテナを再ビルドして、すべての依存関係がインストールされていることを確認
- Dev Containerに必要なツールがインストールされていることを確認
パフォーマンスの問題
- Docker Desktopにより多くのリソース(CPUとメモリ)を割り当てる
- ボリュームマウントを効率的に使用(必要でない場合は
node_modules、.gitなどを除外) - より軽量なベースイメージの使用を検討
ポートフォワーディングの問題
devcontainer.jsonでポートが正しく設定されていることを確認- 他のサービスが同じポートを使用していないことを確認
- ファイアウォール設定でポートフォワーディングが許可されていることを確認
既存のワークフローとの統合
Dev Containersは以下とシームレスに連携します。
- Git: すべてのGit操作はコンテナ内で通常通り動作します
- CI/CD: CI/CDパイプラインは変更されません
- extend-helper-cli: コンテナ内で同じように動作します
- Dockerビルド: Docker-in-Dockerサポートにより、コンテナ内からイメージをビルドできます
次のステップ
Dev Container環境をセットアップした後:
- Extendアプリ開発ワークフローを確認して、両方のワークフローを整合させます。
- ユースケースに応じた特定のExtendアプリタイプガイドに従います。
- MCPサーバーガイドに従ってAI支援を設定します。両方のガイドは同じ
.vscode/mcp.jsonを参照しています。 - 高度なトピックについて学びます。
- GitHub上の公式テンプレート(例: extend-service-extension-go)を探索して、厳選された
.devcontainerと.vscodeアセットを再利用します。 - Extendアプリタイプガイドに記載されているように、IAMクライアント権限をセットアップし、変数/シークレットを設定します。
Dev Containersにより、Extendアプリ開発をよりスムーズかつ信頼性の高いものにする、一貫した分離された開発環境が得られます。