今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

rorkai/App-Store-Connect-CLI

App Store Connect API を自動化するための軽量で高速なコマンドラインツールです。

TestFlightへのビルド配布からアプリ審査ステータスの監視、メタデータ・スクリーンショット・ローカライゼーションの同期まで、App Store Connect周りの作業をターミナルから一気に流せます。fastlaneのようなRuby環境構築が不要で、単一のGoバイナリを置くだけでCI環境がすぐ動く点は、GitHub Actionsのパイプラインを組む人にとって地味に効きます。多段階の配布フローをJSON設定ファイルで宣言できるので、今日にでも自分のプロジェクトに組み込んで、審査提出まわりの手作業を実際に減らせるか試してみたくなります。

01 / 概要
何をするものか一文で言うと
ひとことでApp Store Connect API を自動化するための軽量で高速なコマンドラインツールです。

App Store Connect APIをラップしたGo製CLIツール「asc」です。TestFlight配信・ビルド管理・審査提出・署名・分析・スクリーンショット・サブスクリプションなどをターミナルやCI/CDパイプラインから操作できます。出力はJSONを基本とし、対話的なプロンプトを挟まない設計になっています。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

cmd/ディレクトリに大量のサブコマンドが並び、peterbourgon/ff(ffcli)でフラグとサブコマンドツリーを構成しています。認証はAPIキー(key-id・issuer-id・p8ファイル)をkeyring経由でOS標準のキーチェーンに保存する方式で、CI向けに`--bypass-keychain`で設定ファイルに退避する経路も用意されています。テストはcmd/配下の`*_blackbox_test.go`が実バイナリを`go build`してから`exec.Command`で実行し、標準出力・標準エラー・終了コードまで検証するブラックボックス方式が中心です。root.goがコマンド階層とヘルプ・エラーメッセージ(未知コマンドの候補提示など)を組み立て、`.agents/skills/`配下にはAIエージェント向けの開発・レビュー・リリース手順(SKILL.md)まで用意されています。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    brewかインストールスクリプトでascバイナリを入れ、`asc version`と`asc --help`で起動確認をします。

  2. STEP 02

    `asc auth login`にkey-idとissuer-idとp8ファイルを渡して認証プロファイルを作成し、キーチェーンへの保存可否を確認します。

  3. STEP 03

    `asc auth status --validate`と`asc auth doctor`で認証状態とAPI疎通を診断します。

  4. STEP 04

    `asc apps list --output table`を実行し、TTY判定でtableが自動選択されることを確認します。

  5. STEP 05

    パイプ経由(`asc apps list | cat`)で実行すると出力形式が自動的にjsonへ切り替わる挙動を確認します。

  6. STEP 06

    存在しないサブコマンドやtypoしたフラグを打つと、候補コマンドを提示するエラーメッセージと終了コード2が返る挙動を確認します。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

App Store Connect関連の操作をスクリプト化できるバイナリ1本と、認証プロファイル・出力フォーマット・エラーハンドリングの型が手に入ります。実APIキーを用意すればTestFlightやビルド提出などをCIパイプラインに組み込める状態になります。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

実際のApple Developer Programアカウントとp8 APIキーがないと、ほとんどのコマンド(apps list以降)は機能しません。認証情報なしで試せるのは`asc version`や`asc system-status`程度です。

02

WinGetパッケージはREADME時点でまだ受理待ちの状態(Discussion #1552)で、`winget search asc`にまだ出ない可能性があります。

03

go.modのモジュールパスは`github.com/rudrankriyam/App-Store-Connect-CLI`となっており、実際のリポジトリ名`rorkai/App-Store-Connect-CLI`と一致していません。移管や改名の履歴を確認したほうがよい点です。

04

go.modの`go 1.26.6`という指定は一般的なGoのバージョニング慣行からするとやや珍しい形式で、ビルド時にツールチェーンの取得動作に注意が必要です。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

CI/CDパイプラインやエージェント駆動の開発フローにApp Store Connect操作を組み込みたいチームには合う設計です。blackbox testで実バイナリの標準出力・エラー・終了コードまで検証する体制や、TTYに応じた出力形式の自動切替、認証のキーチェーン対応など、実運用を意識した作り込みが確認できます。ただし判断の全ては公開されたテストコードとREADMEの記述に基づくもので、実際のApple Developerアカウントでの通信結果や、WinGet配布の完了状況、go.modのモジュールパス不一致の経緯までは今回のファイルからは確認できません。導入前には認証まわりの挙動と組織のCI環境での実行結果を自身の目で確認することをおすすめします。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する