「Extend App」開発のワークフローと要件
注釈:本資料はAI技術を用いて翻訳されています。
概要
AGSでは、プロジェクトを迅速に開始できるようExtendアプリテンプレートを提供しています。これらのテンプレートは完全にカスタマイズ可能で、GitHubでホストされています。
以下のタイプ別ガイドに進む前に、まずこの記事をお読みください。この記事では、サポートされている各開発環境の前提条件、Extendアプリ開発の一般的なワークフロー、初めて開発する方向けの推奨事項について説明します。
プロジェクトを開始する際は、Extendアプリテンプレートを使用してください。これらのテンプレートには基本的な認証・認可設定があらかじめ構成されており、メトリクス、ログ、トレーシングを含むオブザーバビリティ用の計測機能が組み込まれています。gRPCについての基本的な理解があると、Extendアプリを扱う際に役立ちます。
Extendアプリの各タイプには、それぞれ固有のセットアップと設定手順があり、以下のガイドに記載されています。
料金の詳細については、Extendアプリ料金ページを参照してください。
前提条件
Extendアプリは、Linux、Windows (WSL2)、macOSで開発できます。それぞれ以下の一般的な前提条件があります。
- Linux
- Windows (WSL2)
- macOS
以下のツールがインストールされたLinux Ubuntu 22.04
-
Bash
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
... -
Make
- Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。
make --version
GNU Make 4.3
... - Ubuntuリポジトリからインストールするには、
-
Docker (Docker Engine v23.0以上)
- Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install docker.io docker-buildx docker-compose-v2を実行します。 - ユーザーを
dockerグループに追加します:sudo usermod -aG docker $USER。 - 変更を有効にするため、ログアウトして再度ログインします。
docker version
...
Server: Docker Desktop
Engine:
Version: 24.0.5
... - Ubuntuリポジトリからインストールするには、
以下のツールがインストールされたWindows 11
-
Docker Desktop v4.30以上
- Docker Desktopをまだインストールしていない場合は、WindowsへのDocker Desktopのインストールに関するDockerのドキュメントに従ってください。
-
bashとmakeがインストールされたWSL2 Ubuntu 22.04- Bash
bash --version
GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
...- Make
- Ubuntuリポジトリからインストールするには、
sudo apt update && sudo apt install makeを実行します。
make --version
GNU Make 4.3
... -
WSL2ファイルシステム内のプロジェクトを扱えるWindows上の統合開発環境(IDE)(Visual Studio Code、JetBrains IDEなど)
AccelByteは、Extendアプリテンプレートをクローンして、WSL2ファイルシステム内で完全に作業することを推奨しています。Windowsファイルシステムで作業することもサポートされていますが、以下の制限があります。
- プロジェクトがWindowsファイルシステムにある場合でも、すべての
makeコマンドはWSL2ターミナルから実行してください。 - クローンする前に
git config --global core.autocrlf falseを設定して、$'\r': command not foundのような改行エラーを回避してください。このエラーが発生した場合は、dos2unixを使用して該当ファイルを修正してください。 - プロジェクトがWindowsファイルシステムにある場合、
makeコマンドの実行が著しく遅くなります。
以下のツールがインストールされたmacOS 14以上
-
Docker Desktop v4.30以上
- Docker Desktopをまだインストールしていない場合は、macOSへのDocker Desktopのインストールに関するDockerのドキュメントに従ってください。
-
Bash
bash --version
GNU bash, version 3.2.57(1)-release (arm64-apple-darwin23)
... -
Make
make --version
GNU Make 3.81
...
Extendアプリ開発のワークフロー
このセクションでは、以下のシナリオにおけるExtendアプリ開発の一般的なワークフローについて説明します。
Dev Containerの詳しい手順については、Extend Dev Containersを使った開発を参照してください。
新しいExtendアプリプロジェクトの作成
-
Gitを使用して、Extendアプリテンプレートプロジェクトをローカルの開発環境にクローンします。
-
お好みのIDEでプロジェクトを開きます。
-
Extendアプリの
README.mdファイルを開き、各セクションの指示に従います。各ExtendアプリのREADME.mdファイルには、以下のセクションが含まれています。- Prerequisites(前提条件): Extendアプリの前提条件を準備し、完了していることを確認します。
- Setup(セットアップ): このセクションの手順に従い、Extendアプリのビルドと開発に適した環境が整っていることを確認します。
- Build(ビルド): IDEでアプリをビルドします。
- Test(テスト): Extendアプリをローカルで実行し、問題があればテストとデバッグを行います。
- Deploy(デプロイ): AGS Admin PortalからExtendアプリを作成し、デプロイします。
ヒント初めてExtendアプリを開発する場合、AccelByteでは、カスタマイズを加える前にアプリテンプレートをそのまま実行して動作を確認することを推奨しています。これにより、アプリの動作の仕組みに慣れ、機能を確認したうえで、プロジェクトに必要なカスタマイズの量を見積もることができます。
-
必要に応じてExtendアプリのカスタマイズを開始します。
- gRPCの*.protoファイル(必要な場合)
- gRPCメソッドの実装
注記- 通常、さらにカスタマイズが必要な場合を除き、他のファイルを変更する必要はありません。
- Extendアプリのタイプによって、gRPCの*.protoファイルの扱いが異なります。
- Extend Overrideアプリ: 提供されたgRPCの*.protoファイルをそのまま(変更せずに)使用します。
- Extend Service Extensionアプリ: 必要に応じてgRPCの*.protoファイルを変更します。
- Extend Event Handlerアプリ: API Eventsから1つ以上のgRPCの*.protoファイルを含めます。
-
アプリをカスタマイズした後、以下の作業を行います。
- アプリをローカルで実行し、問題があればテストとデバッグを行います。
- AGS Admin PortalでExtendアプリの詳細を更新し、カスタマイズ内容を反映させます。
- ExtendアプリのコンテナイメージをAGSにプッシュします。
- AGS Admin PortalからExtendアプリをデプロイします。
既存のプロジェクトを新しいExtendアプリバージョンに適用
-
使用しているExtendアプリテンプレートの新しいバージョンをクローンします。
-
プロジェクトから以下を新しいバージョンのExtendアプリに移行します。
- gRPCの*.protoファイル
- gRPCメソッドの実装
- 上記以外に加えた変更(もしあれば)
-
Extendアプリをローカルで実行し、問題があればテストとデバッグを行います。
Dev Containersを使った開発(代替ワークフロー)
Dev Containersは、コンテナ化された開発環境を利用する代替の開発アプローチを提供します。このワークフローでは、必要なツールと依存関係がすべてDockerコンテナ内にあらかじめ設定されているため、ローカルマシンに前提条件を手動でインストール・設定する必要がありません。このアプローチにより、異なるオペレーティングシステムやチームメンバー間で一貫した開発環境を確保できます。
Dev Containersワークフローは、特に以下のような場合に有効です。
- すべての開発者間で一貫した開発環境を求めるチーム
- 複雑なローカルセットアップを避けたいExtendアプリ開発の初心者
- Linux、Windows、macOSで作業するクロスプラットフォームの開発チーム
- ホストシステムに影響を与えない分離された開発環境を好む開発者
Dev Containersの前提条件
Extendアプリ開発でDev Containersを使用するには、以下が必要です。
-
Dev Containers拡張機能がインストールされたVisual Studio Code
- Dev Containers拡張機能により、VS CodeはDockerコンテナ内のプロジェクトを開いて操作できるようになります。
- 拡張機能をインストールするには、VS Codeを開き、拡張機能(
Ctrl+Shift+XまたはCmd+Shift+X)に移動し、Dev Containersを検索して、Microsoftが公開している拡張機能をインストールします。
-
Docker Desktop v4.30以上
- Docker Desktopがシステムにインストールされ、実行されている必要があります。
- インストール手順については、プラットフォーム別のDocker Desktopインストール手順を含む、上記の前提条件セクションを参照してください。
-
Git
- ExtendアプリテンプレートプロジェクトをクローンするにはGitが必要です。
- Gitは通常、macOSとLinuxにあらかじめインストールされており、Windowsでも利用できます。
このガイドはDev Containers拡張機能を使ったVisual Studio Codeに焦点を当てていますが、JetBrains IDE(IntelliJ IDEA、GoLandなど)などの他のIDEでも、それぞれのプラグインを通じてDev Containersをサポートしています。一般的なワークフローは似ていますが、具体的な手順はIDEによって異なる場合があります。
Dev Containersワークフローの手順
-
Extendアプリテンプレートプロジェクトをクローンする
Gitを使用して、Extendアプリテンプレートプロジェクトをローカルの開発環境にクローンします。Extendアプリテンプレートには、開発環境を定義するDev Container設定ファイル(通常は
.devcontainer/devcontainer.jsonおよび関連するDocker設定)が含まれています。テンプレート別のDev Containerサポートについては、Dev Containerサポートマトリックスを参照してください。
git clone <extend-app-template-repository-url>
cd <extend-app-directory> -
プロジェクトをVS Codeで開く
クローンしたExtendアプリプロジェクトフォルダをVisual Studio Codeで開きます。VS Codeはプロジェクト内のDev Container設定ファイルを検出します。
-
プロジェクトをコンテナ内で再度開く
Dev Container設定があるプロジェクトを開くと、VS Codeはフォルダをコンテナ内で再度開くように促します。以下の方法で手動でトリガーすることもできます。
- VS CodeがDev Container設定を検出した際に表示される通知をクリックする
- コマンドパレット(
Ctrl+Shift+PまたはCmd+Shift+P)を使用し、Dev Containers: Reopen in Containerを選択する - VS Codeの左下隅にある緑色のボタンをクリックし、
Reopen in Containerを選択する
VS CodeはDev Containerをビルドして起動します。初回はベースイメージのダウンロードと依存関係のインストールが行われるため、数分かかる場合があります。
注記Dev Containerには、必要な開発ツールがすべてあらかじめ設定されています。
- Bashシェル
- Makeビルドツール
- コンテナイメージをビルドするためのDocker(Docker-in-Docker)
- 言語固有の開発ツールと依存関係
- Extend Helper CLI
-
開発環境を確認する
コンテナが実行されたら、VS Codeでターミナルを開きます(Terminal → New Terminal)。ターミナルはDev Container内で実行されます。必要なツールが利用可能であることを確認します。
bash --version
make --version
docker version
extend-helper-cli --helpすべてのコマンドがコンテナ環境内で問題なく実行されるはずです。
VS Code設定ファイル
Dev ContainersをサポートするExtendアプリテンプレートには、開発体験を向上させるために、.vscodeディレクトリにあらかじめ設定されたVS Codeファイルが含まれています。
-
tasks.json: VS Codeのコマンドパレット(Ctrl+Shift+PまたはCmd+Shift+P)から直接実行できる、あらかじめ定義されたビルドおよび開発タスクです。これらのタスクには通常、アプリのビルド、テストの実行、その他の一般的な開発操作が含まれます。コマンドパレットを開いてTasks: Run Taskを選択することで、これらのタスクにアクセスできます。 -
launch.json: VS Code内で直接Extendアプリをデバッグできるデバッグ設定です。これには、ブレークポイント、変数の検査、ステップ実行デバッグが含まれます。F5を押すか、VS CodeのRun and Debugビューを使用することでデバッグを開始できます。ヒントこれらの設定ファイルの例については、extend-service-extension-goリポジトリを参照してください。
-
mcp.json: AIを活用した開発支援を提供する、あらかじめ設定されたModel Context Protocol (MCP) サーバーです。これらのMCPサーバーは、コード生成、ドキュメント作成、その他の開発タスクを支援します。注記MCPサーバーを使用するには、VS Codeで設定が必要な場合があります。詳細なセットアップ手順については、VS Code MCPドキュメントおよびMCPサーバーガイドを参照してください。MCP設定ファイルは、Extendアプリテンプレートのmcp.jsonで確認できます。
-
ExtendアプリのREADME指示に従う
Extendアプリの
README.mdファイルを開き、指示に従います。Dev Container内のワークフローは、従来のワークフローと同じです。- Prerequisites(前提条件): Dev Containerには既にすべての前提条件が含まれているため、手動でのインストール手順は不要です。
- Setup(セットアップ): Extendアプリのタイプに固有のセットアップ手順に従います。コンテナ環境には必要なツールが既に設定されています。
- Build(ビルド): 提供されたMakeコマンドまたはビルドスクリプトを使用してアプリをビルドします。
- Test(テスト): コンテナ内でExtendアプリをローカルで実行し、問題をテストおよびデバッグします。
- Deploy(デプロイ): AGS Admin PortalからExtendアプリを作成し、デプロイします。
-
Extendアプリをカスタマイズする
必要に応じてExtendアプリのカスタマイズを開始します。カスタマイズの手順は従来のワークフローと同一です。
- gRPCの*.protoファイルを変更する(必要な場合)
- gRPCメソッドを実装する
注記- 通常、さらにカスタマイズが必要な場合を除き、他のファイルを変更する必要はありません。
- Extendアプリのタイプによって、gRPCの*.protoファイルの扱いが異なります。
- Extend Overrideアプリ: 提供されたgRPCの*.protoファイルをそのまま(変更せずに)使用します。
- Extend Service Extensionアプリ: 必要に応じてgRPCの*.protoファイルを変更します。
- Extend Event Handlerアプリ: API Eventsから1つ以上のgRPCの*.protoファイルを含めます。
-
テストとデプロイ
アプリをカスタマイズした後、以下の作業を行います。
- コンテナ内でアプリをローカルで実行し、問題があればテストとデバッグを行います。
- AGS Admin PortalでExtendアプリの詳細を更新し、カスタマイズ内容を反映させます。
- Extendアプリのコンテナイメージをビルドし、AGSにプッシュします(Dev Container内のDocker-in-Dockerによりイメージのビルドが可能です)。
- AGS Admin PortalからExtendアプリをデプロイします。
Dev Containersを使用するメリット
- 一貫した環境: すべての開発者が同じあらかじめ設定された環境で作業するため、「自分のマシンでは動く」という問題が減少します。
- 簡素化されたセットアップ: ホストシステムにBash、Make、Docker、その他の前提条件を手動でインストールする必要がありません。
- クロスプラットフォームの互換性: 同じ設定で、Linux、Windows(WSL2を含む)、macOS上でシームレスに動作します。
- 分離された環境: 開発環境はホストシステムから分離されており、他のプロジェクトやシステム設定との競合を防ぎます。
- 簡単なリセット: 問題が発生した場合、ホストシステムに影響を与えることなく、コンテナを簡単に再構築またはリセットできます。
- チームのオンボーディング: 新しいチームメンバーは、複雑な環境セットアップなしにすぐに開発を開始できます。
Dev Containerのカスタマイズ
Dev Containerの設定をカスタマイズする必要がある場合(例えば、追加のツールや環境変数を追加する場合)、Extendアプリプロジェクト内の.devcontainer/devcontainer.jsonファイルを変更できます。一般的なカスタマイズには以下が含まれます。
- 追加のVS Code拡張機能の追加
- 環境変数の設定
- 追加のシステムパッケージのインストール
- ポートフォワーディングの設定
Dev Containerの設定を変更した後は、コマンドパレットを使用してDev Containers: Rebuild Containerを選択し、コンテナを再構築します。
Dev Containerの設定変更には、コンテナの再構築が必要です。プロジェクトファイルとカスタマイズ内容は、ホストシステムに保存されコンテナにマウントされているため、コンテナの再構築中も保持されます。
トラブルシューティング
Dev Containersで問題が発生した場合は、以下を確認してください。
- コンテナが起動しない: Docker Desktopが実行されており、十分なリソース(メモリ、CPU)が割り当てられていることを確認してください。
- パフォーマンスが遅い: Docker Desktopの設定で割り当てるリソースを増やしてください。
- ポートの競合: Extendアプリが使用するポートが、ホストシステム上で既に使用されていないか確認してください。
- 権限の問題: Linuxでは、ユーザーが
dockerグループに属していることを確認してください。WindowsおよびmacOSでは、Docker Desktopが権限を自動的に処理します。
Dev Containersの詳細については、VS Code Dev Containersドキュメントを参照してください。
次のステップ
Extendアプリプロジェクトの作成とカスタマイズを開始しましょう。以下のガイドを参照してください。