mcpField
A
asc-new-app-release

asc-new-app-release

github.com/tddworks開発576 回インストール6 週間前に更新
リポジトリ

asc-new-app-release について

新しいiOSまたはmacOSアプリを初めてApp Storeに提出する開発者向けのワークフロースキルです。ascコマンドラインで、アプリ設定、メタデータ、コンプライアンス、ビルドのアップロード、提出準備の確認、申請を扱います。

主な機能

  1. 01Bundle ID登録とアプリ作成
  2. 02ストアメタデータとローカライズ
  3. 03価格、プライバシー、コンプライアンス手順
  4. 04ビルドのアーカイブとアップロード
  5. 05提出準備の確認と申請

活用シーン

  1. 01App Store Connectで初回アプリを登録
  2. 02ストア掲載情報と審査情報の準備
  3. 03初回ビルドのアップロードと関連付け
  4. 04審査提出前の要件確認

インストール

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

$npx skills add https://github.com/tddworks/asc-cli-skills --skill asc-new-app-release

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

同梱ファイルreferences/categories.md

詳細

App Store 初回リリース

このワークフローでは、新しいアプリをゼロから App Store への提出まで進めます。通常のリリースワークフロー(asc-release-workflow)では対応しない、初回提出時にのみ必要な設定をすべて処理します。

開始前に

ユーザーから次の情報を集めるか、プロジェクトから確認してください。

情報確認場所例
Bundle IDXcode プロジェクトまたは .xcconfigcom.mycompany.myapp
アプリ名App Store で使用する名前My Cool App
プラットフォームiOS、macOS、または両方ios
カテゴリカテゴリ一覧を参照EDUCATION
説明ユーザーが提供するか、こちらで作成機能を列挙した段落
サポート URLGitHub リポジトリ、ウェブサイトなどhttps://github.com/...
価格無料または有料無料
SKU一意の文字列(指定がなければ生成)myapp-ios-2026

ワークフローの概要

Phase 1: Identity        → Bundle ID + App creation
Phase 2: Metadata        → Category, description, keywords, URLs
Phase 3: Compliance      → Age rating, pricing, privacy labels, review contact
Phase 4: Build           → Archive, upload, link to version
Phase 5: Readiness       → Check all requirements, fix gaps
Phase 6: Submit          → Submit for App Review

フェーズ 1:ID

ステップ 1.1:Bundle ID を登録する

Bundle ID がすでに存在するか確認します。

asc bundle-ids list

見つからない場合は登録します。

asc bundle-ids create \
  --name "<APP_NAME>" \
  --identifier "<BUNDLE_ID>" \
  --platform IOS   # or UNIVERSAL for iOS + macOS
ステップ 1.2:App Store Connect でアプリを作成する

iris API(ウェブセッション経由のプライベート API)を使用します。アプリ、バージョン、ローカライズを一度の呼び出しで作成できます。

asc iris apps create \
  --name "<APP_NAME>" \
  --bundle-id "<BUNDLE_ID>" \
  --sku "<SKU>"

返された App ID を保存してください。以降のすべてのコマンドで必要になります。

名前がすでに使われている場合(DUPLICATE.DIFFERENT_ACCOUNT を含む 409 エラー)、ユーザーに別の名前を尋ねてください。よくある解決策として、「App」、「Studio」、「AI」、または区別しやすい単語を追加します。

iris を利用できない場合(ウェブセッションがない場合)は、REST API に切り替えます。

# This requires the bundle ID to already be registered
asc apps create \
  --name "<APP_NAME>" \
  --bundle-id-id "<BUNDLE_ID_RESOURCE_ID>" \
  --sku "<SKU>" \
  --primary-locale "en-US"
ステップ 1.3:アプリを確認して ID を取得する
# Get app info ID (needed for categories, localizations)
asc app-infos list --app-id <APP_ID>
# Save: APP_INFO_ID

# Get version ID (needed for screenshots, build linking)
asc versions list --app-id <APP_ID>
# Save: VERSION_ID (the one in PREPARE_FOR_SUBMISSION state)

# Get version localization ID (needed for description, keywords)
asc version-localizations list --version-id <VERSION_ID>
# Save: LOCALIZATION_ID

フェーズ 2:メタデータ

ステップ 2.1:カテゴリを設定する

最適なカテゴリをユーザーに尋ねてください。すべてのカテゴリについては、カテゴリ一覧を参照してください。

asc app-infos update \
  --app-info-id <APP_INFO_ID> \
  --primary-category <CATEGORY>

よく使われるカテゴリ:EDUCATION、DEVELOPER_TOOLS、PRODUCTIVITY、UTILITIES、BUSINESS、ENTERTAINMENT、PHOTO_AND_VIDEO。

ステップ 2.2:バージョンのメタデータを設定する

説明、キーワード、URL を入力します。

asc version-localizations update \
  --localization-id <LOCALIZATION_ID> \
  --description "<DESCRIPTION>" \
  --keywords "<COMMA_SEPARATED_KEYWORDS>" \
  --support-url "<SUPPORT_URL>" \
  --marketing-url "<MARKETING_URL>"

説明のヒント:

  • 最初の行が導入部分です。魅力的な内容にしてください
  • 箇条書き(•)で主な機能を 5~7 個列挙してください
  • 4000 文字以内にしてください
  • 価格情報や競合他社の名前は記載しないでください

キーワードのヒント:

  • 合計 100 文字以内で、カンマで区切ります
  • アプリ名はすでにインデックスされているため、繰り返さないでください
  • 単数形を使います(「photos」ではなく「photo」)
  • 8~12 個を目安にしてください

注意: 初回バージョンでは --whats-new を設定しないでください。Apple では設定できません。このフィールドはアップデート専用です。

ステップ 2.3:アプリレベルのメタデータを設定する(任意)

サブタイトルとプライバシーポリシー URL は、バージョンではなくアプリ情報のローカライズに設定します。

# List app info localizations
asc app-info-localizations list --app-info-id <APP_INFO_ID>
# Save: APP_INFO_LOC_ID

# Update subtitle and privacy URL
asc app-info-localizations update \
  --localization-id <APP_INFO_LOC_ID> \
  --subtitle "<SHORT_SUBTITLE>" \
  --privacy-policy-url "<PRIVACY_POLICY_URL>"

フェーズ 3:コンプライアンス

ステップ 3.1:年齢制限指定

デフォルトの年齢制限指定(NONE = 4+)は、通常、ユーティリティ/生産性アプリに適しています。確認してください。

asc age-rating get --app-info-id <APP_INFO_ID>

アプリに成熟したコンテンツがある場合は、更新してください。

asc age-rating update --declaration-id <APP_INFO_ID> \
  --age-rating-override SEVENTEEN_PLUS
ステップ 3.2:価格、提供状況、コンテンツの権利

アプリに価格が設定されるまで提出は拒否されます。また、提供状況を設定するまでは、新しいアプリをどこでも販売できません。ユーザーに価格(アプリ内購入やサブスクリプションで収益を得るアプリでは、通常は無料を選択します)と販売地域(通常はすべての地域)を尋ねてください。

# Price: pick a point in the base territory; Apple equalizes the rest. customerPrice 0.0 = Free.
FREE=$(asc apps price-points list --app-id <APP_ID> | jq -r '.data[] | select(.customerPrice == "0.0") | .id')
asc apps prices set --app-id <APP_ID> --base-territory USA --price-point-id "$FREE"

# Availability (App Store Connect's "Set Up Availability")
asc app-availability create --app-id <APP_ID> --all-territories --available-in-new-territories

# Content rights — a legal declaration, so ask the user which is true
asc apps update --app-id <APP_ID> --content-rights-declaration DOES_NOT_USE_THIRD_PARTY_CONTENT   # or USES_THIRD_PARTY_CONTENT

リリース前は、すべての地域で CANNOT_SELL + AVAILABLE_FOR_SALE_UNRELEASED_APP と表示されます。これは想定どおりです。

ステップ 3.3:審査担当者の連絡先情報
asc version-review-detail update \
  --version-id <VERSION_ID> \
  --contact-email "<EMAIL>" \
  --contact-phone "<PHONE>"

連絡先のメールアドレスと電話番号をユーザーに尋ねてください。質問がある場合に App Review から連絡するために必要です。

ステップ 3.4:プライバシーに関する栄養表示

App Privacy には公開された App Store Connect API がありません。App Store Connect の Web ページ(または Web セッション)からのみ公開できます。公開するまでは、「You must have published answers to your app's data usages」というメッセージが表示され、提出は拒否されます。

アプリがユーザーデータを収集しない場合は、ユーザーに次の手順を案内してください:App Store Connect > App > App Privacy > Get Started > 「No, we don't collect data from this app」 > Publish。

アプリがデータを収集する場合は、データの種類ごとに確認してください。カテゴリについては、Apple のプライバシーに関するドキュメントを参照してください。


フェーズ 4:ビルド

ステップ 4.1:アーカイブしてアップロード
# Get the next build number
BUILD_NUMBER=$(asc builds next-number \
  --app-id <APP_ID> \
  --version <VERSION_STRING> \
  --platform <PLATFORM>)

# Archive + upload in one step
asc builds archive \
  --scheme <SCHEME> \
  --platform <PLATFORM> \
  --signing-style automatic \
  --team-id <TEAM_ID> \
  --upload \
  --app-id <APP_ID> \
  --version <VERSION_STRING> \
  --build-number "$BUILD_NUMBER"

ユーザーがすでに IPA/PKG を持っている場合:

asc builds upload \
  --app-id <APP_ID> \
  --file <PATH_TO_IPA> \
  --version <VERSION_STRING> \
  --build-number "$BUILD_NUMBER" \
  --wait
ステップ 4.2:処理を待つ
asc builds uploads get --upload-id <UPLOAD_ID>

state が COMPLETE になるまでポーリングします。よくある失敗:

  • アイコンがない → アセットカタログを修正します
  • エンタイトルメントがない → macOS では App Sandbox が必要です
  • CFBundleVersion が一致しない → バイナリ内のビルド番号を一致させます
ステップ 4.3:ビルドをバージョンに紐付ける
# Find the build (match by build number)
asc builds list --app-id <APP_ID>

# Link to the version
asc versions set-build \
  --version-id <VERSION_ID> \
  --build-id <BUILD_ID>

フェーズ 5:準備状況の確認

asc versions check-readiness --version-id <VERSION_ID>

出力を注意深く確認してください。初回提出のアプリでよく不足する項目は次のとおりです:

チェック項目想定されるステータス修正方法
stateCheckPassPREPARE_FOR_SUBMISSION である必要があります
buildCheckまだアップロードしていない場合は Failビルドをアップロードして紐付けます(フェーズ 4)
pricingCheckFailasc apps prices set(ステップ 3.2)
reviewContactCheckFailasc version-review-detail update(ステップ 3.3)
localizationCheckスクリーンショットがない場合は Failスクリーンショットをアップロードします
screenshotSetCount: 0Failデバイスごとに少なくとも 1 つのスクリーンショットセットが必要です
スクリーンショット

初回提出にはスクリーンショットが必要です。ユーザーがスクリーンショット用のスキルまたは自動化を利用できる場合:

# Create screenshot set for a device
asc screenshot-sets create \
  --localization-id <LOCALIZATION_ID> \
  --display-type APP_IPHONE_67

# Upload screenshot
asc screenshots create \
  --screenshot-set-id <SET_ID> \
  --file <PATH_TO_SCREENSHOT>

必要なディスプレイタイプはプラットフォームによって異なります。iOS で最低限必要なのは次のとおりです:

  • APP_IPHONE_67(6.7 インチ — iPhone Pro Max)
  • APP_IPHONE_61(6.1 インチ — iPhone Pro) — 6.7 インチから生成できる場合があります

macOS の場合:APP_DESKTOP


フェーズ 6:提出

isReadyToSubmit が true になったら:

新しいアプリのアプリ内課金とサブスクリプションは初回審査対象のプロダクトであるため、このバージョンとともに審査に提出する必要があります。プレビューを表示してユーザーに確認してから、提出してください:

asc versions submit --version-id <VERSION_ID> --with-products --dry-run --output table
asc versions submit --version-id <VERSION_ID> --with-products

ドライランにユーザーが想定するすべてのプロダクトが表示されていることを確認してください。まだ MISSING_METADATA のものは対象から除外されます。Apple に拒否された場合、エラーに理由(デバイスのスクリーンショット不足、コンテンツの権利、App Privacy の回答、価格)がそれぞれ表示されます。submit-with-products.md を参照してください。

ユーザーには次のように伝えてください:「アプリが審査に提出されました!Apple の審査は通常 24~48 時間以内に行われます。承認されたとき(または対応が必要な問題があるとき)にメールが届きます。」


クイックリファレンス:コマンドの全手順

データ収集を行わない無料の iOS アプリの場合:

# 1. Register bundle ID
asc bundle-ids create --name "My App" --identifier "com.me.myapp" --platform IOS

# 2. Create app
asc iris apps create --name "My App" --bundle-id "com.me.myapp" --sku "myapp-2026"
# → APP_ID

# 3. Get IDs
asc app-infos list --app-id $APP_ID           # → APP_INFO_ID
asc versions list --app-id $APP_ID             # → VERSION_ID
asc version-localizations list --version-id $VERSION_ID  # → LOC_ID

# 4. Category
asc app-infos update --app-info-id $APP_INFO_ID --primary-category EDUCATION

# 5. Description + keywords
asc version-localizations update --localization-id $LOC_ID \
  --description "..." --keywords "..." --support-url "..." --marketing-url "..."

# 5b. Price (free), availability, content rights — App Privacy is published in the web UI
FREE=$(asc apps price-points list --app-id $APP_ID | jq -r '.data[] | select(.customerPrice == "0.0") | .id')
asc apps prices set --app-id $APP_ID --base-territory USA --price-point-id "$FREE"
asc app-availability create --app-id $APP_ID --all-territories --available-in-new-territories
asc apps update --app-id $APP_ID --content-rights-declaration DOES_NOT_USE_THIRD_PARTY_CONTENT

# 6. Review contact
asc version-review-detail update --version-id $VERSION_ID \
  --contact-email "[email protected]" --contact-phone "+1-555-0100"

# 7. Archive + upload
BUILD=$(asc builds next-number --app-id $APP_ID --version 1.0 --platform IOS)
asc builds archive --scheme MyApp --platform ios --signing-style automatic \
  --team-id XXXXXXXXXX --upload --app-id $APP_ID --version 1.0 --build-number $BUILD

# 8. Link build
asc versions set-build --version-id $VERSION_ID --build-id $BUILD_ID

# 9. Check readiness
asc versions check-readiness --version-id $VERSION_ID

# 10. Submit, with any in-app purchases and subscriptions (first-time products)
asc versions submit --version-id $VERSION_ID --with-products --dry-run
asc versions submit --version-id $VERSION_ID --with-products

コメント