CLIツール
rorkai/App-Store-Connect-CLI avatar
rorkai/App-Store-Connect-CLI

App Store Connect CLIはApple配信作業をJSONで自動化する

プロジェクト概要:App Store Connect API 用の高速でスクリプト可能な CLI。 TestFlight、ビルド、送信、署名、分析、スクリーンショット、サブスクリプションなどを自動化します。 JSON ファーストで、対話型プロンプトはありません。

スター 7,254フォーク 611GoMIT

ひと目でわかる

これは何?
TestFlight、ビルド、提出、署名、分析、スクリーンショットをスクリプトから操作するGo製CLIの認証、出力、テレメトリー、運用境界を読む。
誰に向いている?
App Store Connect CLIは、iOS、macOS、tvOS、visionOSのリリース作業をCIやスクリプトへ組み込みたいチームに向きます。JSONを既定にできるため機械処理へつなげやすい一方、Appleとは無関係の非公式ツールで、APIキーと秘密鍵を扱います。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。直近 1 日以内に新しいコミットがあります。
何の言語で書かれている?
主に Go です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

App Store Connectの作業をコマンドへ落とす

このCLIはGoで書かれた、App Store Connect API向けの高速でスクリプト可能な入口です。JSONファーストで対話プロンプトを使わないため、ターミナルだけでなくIDEやCI/CDから呼び出せます。iOS、macOS、tvOS、visionOSのリリースを対象に、TestFlight、ビルド、提出、署名、分析、スクリーンショット、サブスクリプションなどを扱うとREADMEは説明しています。

Apple AdsとStoreKitのリテンションメッセージは、メインAPIとは別の認証情報を使うとされています。対象機能が同じ資格情報で動くと決め付けず、サービスごとのキー、権限、失敗時の扱いを分けます。CLIはAppleの公式製品ではなく、READMEも独立した非公式ツールだと明記しているため、App Store Connect側の仕様変更を自動で吸収する保証として読んではいけません。

配布方法は環境ごとに選ぶ

macOSやLinuxではbrew install ascと、asccli.shからインストールスクリプトを取得して実行する方法がREADMEに示されています。リリースバイナリは自己完結型で、利用者がGoを別途導入しなくてもよいと説明されています。ソースから作る場合はCONTRIBUTING.mdを参照します。

WindowsではWinGetの短い名前とRorkai.ASCのID指定が案内されていますが、READMEの時点ではパッケージ承認前で、検索に現れるまではGitHub Releasesの署名済みバイナリを使うよう注意されています。導入経路はOSと時点で変わるため、どの配布元から何版を入れたかを記録し、実行ファイルの場所と版を確認します。

APIキー認証をCIの前提にする

認証はApp Store ConnectのAPIキーを使い、asc auth loginへ名前、キーID、issuer ID、AuthKey.p8のパスを渡します。通信を伴う例では--networkを指定し、設定後にasc auth status --validateとasc auth doctorで検証します。APIキーを作る場所としてAppleのApp Store Connectのアクセス統合画面が示されています。

CI、ヘッドレスシェル、キーチェーンへアクセスできない端末では、--bypass-keychainによる設定ファイル基盤の認証が案内されています。ローカルリポジトリへ保存する--localと併用する経路もあります。秘密鍵のパスをログへ出さず、設定ファイルの権限、CIのシークレット注入、キーの失効とローテーションを運用で決めます。auth doctorが通ることは、提出操作に必要な権限まで保証するものではありません。

TTYに応じて出力を切り替える

ascは標準出力が対話型端末かどうかで既定の出力形式を選びます。TTYではtable、パイプ、ファイル、CIではjsonです。スクリプトの安定性を高める場合は--output jsonや--output markdownを明示し、端末で読みやすくする場合は--prettyを追加します。ASC_DEFAULT_OUTPUTで個人の既定値を設定できますが、明示的な--outputが優先されます。

この挙動を知らずに端末の表示をパーサーへ渡すと、CIと手元で形式が変わる可能性があります。JSONのフィールド、エラー時の終了コード、ページング、APIから返される値を対象コマンドで固定し、Markdownを機械入力にしないようにします。出力の安定性ラベルも、依存するコマンドを選ぶ材料になります。

安定性ラベルをリリース工程に入れる

READMEはコマンドのライフサイクルを可視化するラベルを定義しています。ラベルなしは通常利用向けの安定した公開契約、[experimental]は進化中で変更が速い機能、DEPRECATED:や非推奨警告は移行期間中の互換経路です。CIで使うコマンドを名前だけで固定せず、リリース時に表示された状態も確認します。

代表的な作業には、asc publish appstoreによるアップロード、添付、提出、メタデータの初期化と適用、キーワード監査、スクリーンショットの計画とアップロードがあります。署名やBundle IDの一覧、asc workflow validateとasc workflow run、Xcode Cloudの実行や再実行もREADMEに挙がっています。提出や再実行は外部状態を変える操作なので、プレビュー、承認、実行を分ける工程にします。

既定テレメトリーの中身を確認する

ascは既定で疑似匿名のコマンド単位テレメトリーを送ります。ランダムなインストールIDで同じインストールのイベントをまとめますが、Appleアカウントやマシン識別子から作られるものではないとREADMEは説明しています。送信対象にはCLI版、OSとアーキテクチャ、コマンドパス、所要時間、実行文脈、結果クラス、API失敗時のHTTPステータス、限定された公開フラグ名が含まれます。

生の引数、標準エラー、エラーメッセージ、フラグ値、応答本文、資格情報、秘密鍵、Appleアカウント、チームやissuer ID、アプリやBundle ID、ユーザー名、ホスト名、リポジトリ名、ファイルパスは含めないとされています。asc telemetry statusで確認し、asc telemetry disableやASC_TELEMETRY_DISABLED=1、DO_NOT_TRACK=1で無効化できます。組織で使う場合はこの説明を自社の送信規則と照合します。

MITライセンスでも提出の責任は残る

リポジトリはMITライセンスで公開されています。コードの利用、変更、再配布条件をLICENSE本文で確認し、CLIがApp Store Connectへ送る操作の承認責任とは分けて考えます。MITであることはApple APIの継続利用、提出の成功、秘密鍵の保護、結果の正確さを保証しません。

導入の初期確認ではasc versionとasc --help、認証の検証、asc apps list --output jsonを使う流れがREADMEに示されています。テストアプリで一覧、ビルド、TestFlight、メタデータ、ワークフローを一つずつ確認し、変更前のJSONと操作ログを保存します。Apple AdsやStoreKitの別認証、テレメトリー、安定性ラベルを含む差分を人がレビューしてから、本番アプリの提出権限を与えるのが適切です。

編集部の結論

App Store Connect CLIは、iOS、macOS、tvOS、visionOSのリリース作業をCIやスクリプトへ組み込みたいチームに向きます。JSONを既定にできるため機械処理へつなげやすい一方、Appleとは無関係の非公式ツールで、APIキーと秘密鍵を扱います。まずテスト用の権限とアプリでauth doctor、出力形式、テレメトリー設定、experimentalやdeprecatedの表示を確認し、本番提出は明示的な承認ゲートの後に実行してください。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート