mcpField
G
gpc-multi-app

gpc-multi-app

github.com/yasserstudioクラウド・DevOps141 回インストール1 週間前に更新
リポジトリ

gpc-multi-app について

gpc-multi-appは、複数のGoogle PlayアプリをGPCで管理するためのガイドです。複数のAndroidアプリを運用する開発者向けに、プロファイルやプロジェクト設定、バッチスクリプトによる操作方法をまとめています。

主な機能

  1. 01アプリごとのプロファイルと認証情報
  2. 02設定済みアプリの状態確認
  3. 03プロジェクト単位の .gpcrc.json による選択
  4. 04スクリプトによるコマンドの一括実行
  5. 05CIマトリックスでのアプリ別デプロイ
  6. 06複数アプリのストアメタデータ同期

活用シーン

  1. 01ホワイトラベルアプリやアプリ群の管理
  2. 02複数アプリへのGPCコマンド反復実行
  3. 03モノレポ内のモジュールごとのアプリ指定
  4. 04開発者アカウント別のサービスアカウント設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/yasserstudio/gpc-skills --skill gpc-multi-app

インストール後、Claude Code で/gpc-multi-appを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

evals/
evals.json
references/
ci-multi-app.md
profile-patterns.md
scripts/
detect_gpc.mjs

詳細

gpc-multi-app

プロフィール、スクリプト、自動化パターンを使って、GPC で複数の Google Play アプリを管理します。

使用する場面

  • 複数の Android アプリ(ポートフォリオ、ホワイトラベル、バリアント)の管理
  • 複数のアプリに対する同一の GPC コマンドの実行
  • アプリごとの設定と認証情報のセットアップ
  • 複数の Android モジュールを含むモノレポ
  • アプリごとに異なるサービスアカウントを使用する場合

必要な入力

  • 認証済みの GPC — gpc auth status で有効な認証情報が表示される必要があります
  • パッケージ名 — 管理対象のすべてのアプリのもの
  • サービスアカウントキー — アプリまたはデベロッパーアカウントごとに異なる場合があります

手順

0. アプリの解決方法を確認する

GPC は次の順序で対象アプリを解決します。

  1. --app CLI フラグ(最優先)
  2. GPC_APP 環境変数
  3. プロジェクトディレクトリ内の .gpcrc.json
  4. ユーザー設定の ~/.config/gpc/config.json
  5. アクティブなプロファイルによる上書き
1. すべてのアプリの簡易ヘルスチェック

gpc status --all-apps を使うと、設定済みのすべてのアプリのヘルス状態を一度に確認できます。

gpc status --all-apps

プロファイルまたは設定で定義されたすべてのアプリの状態が報告されるため、プロファイルを切り替えたり、アプリごとに --app を指定したりする必要はありません。

2. プロファイルを使ったアプリごとの設定

アプリごとにプロファイルを作成します(GPC v0.9.95 以降。以前のバージョンでは、ここで --profile が無視されていました。その場合は代わりに対話型ウィザードを使用してください)。

gpc auth login --service-account /keys/main-sa.json --profile main
gpc auth login --service-account /keys/main-sa.json --profile lite
gpc auth login --service-account /keys/enterprise-sa.json --profile enterprise

次に、~/.config/gpc/config.json で各プロファイルに app(およびアプリごとの設定)を追加します。後で auth login --profile を再実行しても、更新されるのは認証情報のみで、これらのフィールドは保持されます。

{
  "app": "com.example.main",
  "profiles": {
    "main": {
      "app": "com.example.main",
      "auth": { "serviceAccount": "/keys/main-sa.json" }
    },
    "lite": {
      "app": "com.example.lite",
      "auth": { "serviceAccount": "/keys/main-sa.json" }
    },
    "enterprise": {
      "app": "com.example.enterprise",
      "auth": { "serviceAccount": "/keys/enterprise-sa.json" }
    }
  }
}

コマンドごとにプロファイルを指定します。

gpc releases list --profile main
gpc releases list --profile lite
gpc releases list --profile enterprise

または、環境変数で設定します。

export GPC_PROFILE=enterprise
gpc releases list  # uses enterprise profile

高度なプロファイル設定については、references/profile-patterns.md を「参照」してください。

3. プロジェクトレベルの .gpcrc.json

モノレポの場合は、各アプリのディレクトリに .gpcrc.json を配置します。

monorepo/
├── apps/
│   ├── main/
│   │   ├── .gpcrc.json          # { "app": "com.example.main" }
│   │   └── build.gradle
│   ├── lite/
│   │   ├── .gpcrc.json          # { "app": "com.example.lite" }
│   │   └── build.gradle
│   └── enterprise/
│       ├── .gpcrc.json          # { "app": "com.example.enterprise" }
│       └── build.gradle
└── .gpcrc.json                  # shared defaults

GPC は現在のディレクトリから上位に向かって .gpcrc.json を探すため、各アプリのディレクトリからコマンドを実行すると、適切なパッケージ名が自動的に使用されます。

4. シェルスクリプトによる一括操作

すべてのアプリに対して同じコマンドを実行します。

#!/bin/bash
# deploy-all.sh — upload to internal track for all apps

APPS=(
  "com.example.main"
  "com.example.lite"
  "com.example.enterprise"
)

for app in "${APPS[@]}"; do
  echo "Uploading $app..."
  gpc releases upload "build/$app/app-release.aab" --track internal --app "$app"
done
5. バイタルの一括チェック
#!/bin/bash
# check-vitals.sh — check crash rate across all apps

APPS=("com.example.main" "com.example.lite" "com.example.enterprise")
THRESHOLD=2.0
FAILED=0

for app in "${APPS[@]}"; do
  echo "Checking $app..."
  if ! gpc vitals crashes --threshold "$THRESHOLD" --app "$app"; then
    echo "FAIL: $app crash rate exceeds ${THRESHOLD}%"
    FAILED=1
  fi
done

exit $FAILED
6. 複数アプリ向けの CI/CD

CI プラットフォームごとの複数アプリ用ワークフローについては、references/ci-multi-app.md を「参照」してください。

GitHub Actions のマトリックス戦略
name: Deploy All Apps
on:
  push:
    tags: ['v*']

jobs:
  deploy:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        app:
          - { package: "com.example.main", aab: "main/app-release.aab" }
          - { package: "com.example.lite", aab: "lite/app-release.aab" }
          - { package: "com.example.enterprise", aab: "enterprise/app-release.aab" }
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - name: Upload to internal
        env:
          GPC_SERVICE_ACCOUNT: ${{ secrets.PLAY_SA_KEY }}
          GPC_APP: ${{ matrix.app.package }}
        run: npx @gpc-cli/cli releases upload ${{ matrix.app.aab }} --track internal
7. アプリごとに異なるサービスアカウントを使用する

アプリが異なるデベロッパーアカウントに属している場合:

# Use different env vars per command
GPC_SERVICE_ACCOUNT=$(cat keys/main.json) gpc releases list --app com.example.main
GPC_SERVICE_ACCOUNT=$(cat keys/client.json) gpc releases list --app com.client.app

または、プロファイルを使用します(推奨)。

{
  "profiles": {
    "main": {
      "app": "com.example.main",
      "auth": { "serviceAccount": "/keys/main-sa.json" }
    },
    "client": {
      "app": "com.client.app",
      "auth": { "serviceAccount": "/keys/client-sa.json" }
    }
  }
}
8. メタデータの一括同期

共有メタデータ構造から、すべてのアプリのストア掲載情報を同期します。

# metadata/
# ├── com.example.main/
# │   └── en-US/
# ├── com.example.lite/
# │   └── en-US/

for dir in metadata/*/; do
  app=$(basename "$dir")
  echo "Syncing $app..."
  gpc listings push --dir "$dir" --app "$app" --dry-run
done

検証

  • gpc config list --profile <name> に、プロファイルごとの正しいアプリと認証情報が表示される
  • --app または --profile を指定したコマンドが正しいアプリを対象にする
  • すべてのアプリが成功した場合、一括処理スクリプトが 0 で終了する
  • CI のマトリックスで、アプリごとに独立してデプロイが実行される
  • サブディレクトリ内の .gpcrc.json がデフォルトのアプリを正しく上書きする

よくある失敗とデバッグ

症状考えられる原因対処方法
対象アプリが違う--app が設定されておらず、デフォルトが選択されている必ず --app を渡すか、明示的にプロファイルを使用します
あるアプリで API_FORBIDDEN が発生するサービスアカウントにそのアプリへのアクセス権がないPlay Console でアプリごとの権限を確認します
一括処理スクリプトがエラーを表示せずに失敗するループ内のエラー処理がないset -e を使うか、各コマンドの後に $? を確認します
プロファイルが見つからないプロファイル名の入力ミスgpc config list で利用可能なプロファイルを確認します
CI のマトリックスジョブで一つのアプリが失敗する個別の失敗マトリックスジョブは独立して実行されます。アプリごとにログを確認してください
.gpcrc.json が読み込まれない間違ったディレクトリから実行しているGPC は cwd から上位に向かって検索します。正しいディレクトリにいることを確認してください

関連スキル

  • gpc-setup — 初期認証とプロファイルの設定
  • gpc-ci-integration — 単一アプリ向け CI パイプラインのセットアップ
  • gpc-sdk-usage — TypeScript SDK を使ったプログラムによる複数アプリの管理
  • gpc-user-management — チームメンバー向けのアプリごとの権限管理

コメント