Extend Dev Containersを使った開発
注釈:本資料はAI技術を用いて翻訳されています。
Overview
Dev Containersは、ローカルマシンに開発ツールを手動でインストール・設定する必要をなくす、Extendアプリの代替開発ワークフローです。コンテナ化された開発環境を使用することで、異なるオペレーティングシステムやチームメンバー間で一貫性を確保しつつ、セットアップの複雑さや環境関連の問題を軽減できます。
このガイドでは、ExtendアプリテンプレートでのDev Containersの使用方法(セットアップ、ワークフロー、ベストプラクティスを含む)について説明します。Dev Containersは、一貫した環境を求めるチーム、Extendアプリ開発に不慣れな開発者、クロスプラットフォーム開発チームにとって特に有用です。
Dev Containersは、Extendアプリ開発ワークフローで説明されている従来の開発ワークフローの代替手段です。どちらの方法でも同じ結果を得られますが、Dev Containersはより分離された一貫性のある環境を提供します。
Prerequisites
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 Workflow
これらの手順のクイックスタート版だけが必要な場合は、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 Support
言語や用途に応じて、公式の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と入力する- コマンドを選択する
Troubleshooting
コンテナが起動しない場合
- Docker Desktopが実行されていることを確認する
- Dockerのログを確認する:
docker ps -aでコンテナの状態を確認できます .devcontainer/devcontainer.jsonファイルが有効なJSONであることを確認する
ビルドコマンドが失敗する場合
- コンテナ内にいることを確認する(VS Codeのステータスバーで確認できます)
- すべての依存関係がインストールされていることを確認するため、コンテナを再ビルドする
- Dev Containerに必要なツールがインストールされていることを確認する
パフォーマンスの問題
- Docker Desktopにより多くのリソース(CPUとメモリ)を割り当てる
- ボリュームマウントを効率的に使用する(不要な場合は
node_modules、.gitなどを除外する) - より軽量なベースイメージの使用を検討する
ポートフォワーディングの問題
- ポートが
devcontainer.jsonで正しく設定されていることを確認する - 他のサービスが同じポートを使用していないことを確認する
- ファイアウォールの設定でポートフォワーディングが許可されていることを確認する
Integration with Existing Workflows
Dev Containersは以下とシームレスに連携します。
- Git: すべてのGit操作はコンテナ内でも通常通り動作します
- CI/CD: CI/CDパイプラインは変更なしで使用できます
- extend-helper-cli: コンテナ内でも同じ方法で動作します
- Dockerビルド: Docker-in-Dockerサポートにより、コンテナ内からイメージをビルドできます
Next Steps
Dev Container環境をセットアップした後は、以下を行ってください。
- 両方のワークフローの整合性を保つため、Extendアプリ開発ワークフローを確認する。
- 使用ケースに応じて、該当するExtendアプリタイプのガイドに従う。
- MCPサーバーガイドに従ってAI支援を設定する。両方のガイドは同じ
.vscode/mcp.jsonを参照しています。 - 高度なトピックについて学ぶ。
- GitHub上の公式テンプレート(例: extend-service-extension-go)を確認し、精選された
.devcontainerと.vscodeのアセットを再利用する。 - Extendアプリタイプのガイドに記載されている手順に従って、IAMクライアントの権限を設定し、変数/シークレットを構成する。
Dev Containersを使用することで、一貫性のある分離された開発環境が得られ、Extendアプリ開発をよりスムーズかつ確実に行えます。