storepulse_

チュートリアル

ゼロから実際のボードまでの道のりです。ステップ 1–2 は 1 分ほど、 ステップ 3–4 は Apple と Google 側で行う、5 分ほどの一度きりの セットアップです。

ステップ 1

インストールしてデモを実行

前提: Node.js 20.12 以上、pnpm 9 以上。

$ git clone https://github.com/dioKR/storepulse.git
$ cd storepulse
$ pnpm install
$ pnpm demo

デモボードには、実際のチームを模したサンプルデータが入っています — アプリ 2 つ、それぞれ prod・dev のバリアント、両プラットフォーム。 今後目にするバッジがすべて揃っています: LIVE, 50%(段階的リリース), REVIEW, REJECTED, draft

ステップ 2

アプリを登録する

$ npx storepulse init

どのフォルダでも使えます — storepulse.config.json.env のテンプレートを作成し(既存のファイルは 上書きしません)、認証情報ファイルを .gitignore に 追加します。このリポジトリのクローンなら cp storepulse.config.example.json storepulse.config.json でも同じです。続いて storepulse.config.json を開き、 アプリを登録します:

フィールド説明
key重複しなければ何でも OK(内部用です)
nameボードに表示される名前
group任意のラベル — 例: prod / dev
platformios または android
storeIdiOS: 数字の Apple ID · Android: パッケージ名
iOS の数字 ID の探し方 — App Store Connect → 対象のアプリ → App 情報(App Information)→ 一般情報 → Apple ID (1234567890 のような数字です)。

ステップ 3

Apple — App Store Connect API キー

ここからは storepulse init が作った .env を 埋めていきます(リポジトリのクローンなら cp .env.example .env)。

  1. App Store Connectユーザーとアクセス(Users and Access)統合(Integrations) → App Store Connect API へ。
  2. チームキー(Team Keys) をクリック。ロールは Developer を推奨します — storepulse が読む範囲にはこれで十分です。App Manager でも動作しますが、キーが漏えいするとアプリの提出やメタデータの変更まで可能になるため、最小権限が安全です。
  3. .p8 ファイルをダウンロードします。 Apple がダウンロードを許すのは一度きり — 大切に保管してください(storepulse init が既に git 管理外にしています)。このキーはロールが許す範囲で書き込みもできる認証情報なので、万一漏えいしたら App Store Connect で直ちに失効(revoke)させてください。
  4. 3 つの値を埋めます:
ASC_KEY_ID=ABC123DEFG          # キーの "Key ID" 列
ASC_ISSUER_ID=xxxxxxxx-...     # ページ上部の "Issuer ID"
ASC_PRIVATE_KEY_PATH=./AuthKey_ABC123DEFG.p8

コンソールの画面はときどき変わります — メニューの場所が違うときは、 Apple の公式ガイド Creating API Keys for App Store Connect API に従ってください。

ステップ 4

Google — Play サービスアカウント

  1. Google Cloud Console で プロジェクトを選ぶか新規作成し、Google Play Android Developer API を有効にします。
  2. IAM と管理 → サービスアカウント → 1 つ作成(ロールは不要)→ キータブ → 鍵を追加 → JSON
  3. Play Consoleユーザーと権限新しいユーザーを招待 → サービスアカウントの メールアドレス(…@…iam.gserviceaccount.com)を貼り付け → アプリにアプリ情報の表示(View app information)権限を付与します。 付与するのはこの権限だけにしてください — リリース(公開)系の権限は決して付与しないでください。 storepulse には不要ですし、こうしておけばキーが漏えいしても 読み取り専用のままで済みます。
  4. .env にその JSON を指定します:
PLAY_SERVICE_ACCOUNT_PATH=./service-account.json

コンソールの画面構成が変わっていたら、Google の公式ガイド Google Play Developer API スタートガイドで 同じ手順を確認できます。

CI のヒント — どちらのシークレットも *_BASE64 形式 (ASC_PRIVATE_KEY_BASE64, PLAY_SERVICE_ACCOUNT_BASE64)に対応しているので、ディスクに ファイルを置かずに CI で storepulse を実行できます。

ステップ 5

実行

$ npx storepulse

あなたの実際のボードが現れます(リポジトリのクローンでは pnpm status でも同じです)。認証情報に問題のある行は、 その場所にエラーを表示するだけで、ボードの残りを隠すことはありません。

ステップ 6

Web ダッシュボードで見る

$ npx storepulse serve

http://127.0.0.1:4780 を開くと、 同じボードが同じデザインの Web ダッシュボードとして表示されます。 自動で更新されます。行をクリックすると、リリースノート全文・日付・ TestFlight の期限カウントダウンを含む詳細パネルが開きます。上部の チップで OS やグループごとの絞り込みもできます。行ではなく状態バッジを クリックするとその状態の意味を説明するダイアログが開き、ヘッダーの EN/KO スイッチャーで表示言語も切り替えられます(選択はブラウザに 記憶されます)。認証情報がまだなら npx storepulse serve --demo でも大丈夫です。デフォルトでは 127.0.0.1 にのみバインドします — ボードには未公開の バージョンが並ぶことがあるので、ローカルに留めておくのが安全です。

ステップ 7 — 任意

Expo(EAS)ビルドをつなぐ

Expo でリリースしていますか? .env にアクセストークンを 追加し(expo.dev → Access tokens で作成できます。組織なら View Only の ロボットトークンを推奨します — storepulse はビルドと提出を読むだけ です)、storepulse.config.json の Expo アプリの項目に easProjectId(app.jsonextra.eas.projectId)を書きます:

EAS_TOKEN=...

これで、スナップショット(JSON)と Web ダッシュボードの詳細パネルが、 ストアの各バージョンがどの EAS ビルドから生まれたのかを表示します — コミット、ビルドプロファイル、提出ステータスまで(ターミナルの ボードは要約のままです)。npx storepulse doctor[5] セクションが EAS チェーン全体を点検します。

トラブルシューティング

何かがおかしいとき

まずは npx storepulse doctor を実行してください — 下記の原因の大半を自動で診断し、失敗した項目ごとに一行の解決策を示します。

症状考えられる原因
ASC API 401Key ID / Issuer ID の誤り、または .p8 がその Key ID のものではない
ASC API 404storeId数字の Apple ID ではない、またはキーのロールからそのアプリが見えない
Play API 403Play Console にサービスアカウントが招待されていない、または Android Developer API が無効
Play API 404パッケージ名のタイプミス、または一度もリリースされていないアプリ
Android の審査状況が出ないバグではありません — Google の API が審査状況を提供していないためです

それでも詰まったら、issue を立ててください — ボードに出たエラー行をそのまま貼っていただければ大丈夫です。