← 追体験トップ

App Store 追体験
― ゆっくり解説・実画面つき ―

りんく・こん太・たぬ姉が、上から ① → ② → ③ … の順で案内するよ。
Mac 不要。Windows + GitHub Actions でビルド〜審査提出までキットが肩代わり。

📖 このページの使い方(3つだけ)

  1. 下の地図の ① から順番に進める(初回だけ ① が長い)
  2. 各 Step の「今やること」を読んで、Apple の画面を操作する
  3. スクショのすぐ上で、たぬ姉が「この画面の URL」を教えてくれる
こん太
こん太

Mac は要らねえ。GitHub Actions の mac ランナーがビルドする。人間は Apple の Web 画面だけ触ればいい。

たぬ姉
たぬ姉

アプリ名・Bundle ID はconfig をコピペ。RH なら app.config.reverse-hack.json、kimito なら app.config.json よ。

🧭 Bundle ID 例
RH: com.reversehack.webhealth / kimito: com.kimito.link.webhealthcheck
プライバシー URL: RH → partner…/privacy / kimito → privacy-policy.html
準備:キットが先にやること 自動 読むだけ
①〜③ が終わったあと、push 1回でここまで走る
今やること

何もしなくてOK。人間は ① から始めてね。

▶ 配信地域だけ軽く直したいとき(タップで開く)

フルビルドなしで全世界配信だけ設定する軽量ジョブ:

  • GitHub Actions → asc-set-availability → brand を選んで Run
  • ローカル: npm run asc:set-availability:reverse-hack(ASC API キー要)

成功ログ: worldwide availability OK (175/175 territories, JPN=yes)

RH ブランドで CI を動かすときは、GitHub Actions → ios-appstore-releasebrand = reverse-hack を選ぶ。Secret IOS_APPSTORE_PROFILE_RH_BASE64 が別途必要。
準備は読むだけ → 次は ① 署名(初回)
署名まわり 人間(初回40分) 1回だけ
証明書 + プロファイル + API キー → GitHub Secrets 7個
今やること

Apple Developer で配布証明書を作り、App Store Connect の API キーを発行して、GitHub Secrets に7個登録する。

  1. 1pwsh scripts/create-ios-csr.ps1 → CSR と秘密鍵(リポのルートで)
  2. 2Apple Developer で Apple Distribution 証明書(.csr.pem をアップロード)
  3. 3App Store Connect 用 Provisioning Profile を発行 → ios-signing/ に保存
  4. 4App Store Connect で API キー(.p8)を発行
  5. 5pwsh scripts/prepare-openci-ios-secrets.ps1 → GitHub Secrets 7個を登録
こん太
こん太

.csr.pem だ。.csr だけだと Apple が「Invalid CSR」で弾く。実際に踏んだぞ。

たぬ姉
たぬ姉

RH 用プロファイルは Bundle ID com.reversehack.webhealth で別途作って、Secret 名は IOS_APPSTORE_PROFILE_RH_BASE64 よ。kimito 用と混同しないで。

証明書を開く → プロファイル →

たぬ姉
たぬ姉

↓ この画面はApple Developer › 証明書(Distribution を作成):
https://developer.apple.com/account/resources/certificates/list

Apple Developer で Distribution 証明書
📷 種類は Apple Distribution。ファイルは ios_dist.csr.pem
たぬ姉
たぬ姉

↓ この画面はApp Store Connect API キー(Team Keys):
https://appstoreconnect.apple.com/access/integrations/api

App Store Connect API キー
📷 権限は App Manager。.p8 は1回しかダウンロードできない
▶ GitHub Secrets 7個(タップで開く)
Secret 名内容
IOS_DIST_CERT_P12_BASE64配布証明書(P12)
IOS_DIST_CERT_PASSWORDP12 パスワード
IOS_APPSTORE_PROFILE_BASE64kimito 用プロファイル
IOS_APPSTORE_PROFILE_RH_BASE64RH 用プロファイル(別途)
APPLE_TEAM_ID例: 8922HQ842P
APPSTORE_CONNECT_KEY_IDAPI キー ID
APPSTORE_CONNECT_ISSUER_IDIssuer ID
APPSTORE_CONNECT_API_KEY_P8_BASE64.p8 を base64
✅ Secrets 7個が揃ったら → 次は ② 枠を作る
アプリの枠を作る 人間(5分)
API では新規アプリ作成不可。ここだけ手作業
今やること

Bundle ID を Developer に登録 → App Store Connect で「新規 App」→ URL の数字を ascAppId に書く。

  1. 1Developer で Identifiers → App ID を登録(Explicit・config の Bundle ID)
  2. 2App Store Connect → + → 新規 App
  3. 3名前・言語・Bundle ID・SKU を入力 → 作成
  4. 4URL の数字(Apple ID)を stores.ascAppId に記入
たぬ姉
たぬ姉

記入後は npm run mobile:bootstrap:reverse-hack で config に書き込めるわ。手で書いてもOK。

Identifiers → マイ App →

たぬ姉
たぬ姉

↓ この画面はApp Store Connect › 新規 App:
https://appstoreconnect.apple.com/apps → 右上 +

新規 App 作成フォーム
📷 名前 = displayName、Bundle ID = config と完全一致。SKU は任意
項目RH 例kimito 例
名前リバースハック WEB健康診断君斗りんくのWEBサイト健康診断
Bundle IDcom.reversehack.webhealthcom.kimito.link.webhealthcheck
ascAppId6780161483(実証)6779860644(済)
✅ 枠ができたら → 次は ③ App Privacy
App のプライバシー 人間(2分) 1回だけ
未公開だと CI の審査提出が 409 で止まる
今やること

いいえ、このAppではデータを収集しません」→ プライバシーポリシー URL を貼る → 公開

  1. 1自分のアプリ → App のプライバシー(配信 › プライバシー)
  2. 2「いいえ、収集しません」を選ぶ
  3. 3プライバシーポリシー URL を貼る → 公開(保存だけだと未完了)
こん太
こん太

ここ忘れると CI が STATE_ERROR.APP_DATA_USAGES_REQUIRED409 止まりだ。Play の広告 ID 未申告と同じくらい厄介だぞ。

たぬ姉
たぬ姉

1回設定すれば以降の push は全部通るわ。RH の URL は partner…/privacy よ。

たぬ姉
たぬ姉

↓ この画面はApp のプライバシー。kimito 実証 URL:
…/apps/6779860644/distribution/privacyRH: ② で作った ascAppId に置き換え(…/apps/【数字】/distribution/privacy)

App のプライバシー
📷 「いいえ、収集しません」→ 公開。未公開だと submit が止まる
⚠️ API の /v1/appDataUsages は 404(2026-06 時点)。人間が Web 画面で1回だけ設定する必要がある。
✅ 公開できたら → 次は ④ push(キット)
push → 審査待ち キット(自動)
ios-appstore-release.yml — RH は brand=reverse-hack
今やること

main に push するか、GitHub Actions から workflow を手動実行。ASC で「審査待ち」を確認。

  1. 1GitHub → Actions → ios-appstore-release
  2. 2RH なら brand = reverse-hack を選択 → Run
  3. 3成功ログ: final state=WAITING_FOR_REVIEWavailability applied: 175 territories(または [7g] OK)
  4. 4App Store Connect で「Waiting for Review」を目視確認
たぬ姉
たぬ姉

↓ ④ のゴールは審査待ちのこの画面。kimito 実証:
…/apps/6779860644/distribution/ios/version/inflightRH: ascAppId に置き換え

Waiting for Review
📷 build · Waiting for Review = 人間の作業は完了 → あとは Apple を待つ
✅ ここまで来たら、初回の iOS 人間作業は全部完了。2回目以降は push するだけ。配信地域も CI が自動設定する。
🎉 審査待ちになったら → 任意で ⑤ 配信地域の確認
配信地域(全世界) キット(自動) 確認だけ任意
asc-set-availability / submit [7g] — 175か国・日本含む
今やること

基本は何もしなくてOK。④ の CI が全世界配信を設定する。念のため ASC の価格画面で 175 か国を目視確認する程度。

  1. A④ 成功時 — appstore-submit.mjs の [7g] が自動実行(追加操作不要)
  2. B配信だけ直したい — Actions → asc-set-availability → brand 選択 → Run
  3. Cローカル — npm run asc:set-availability:reverse-hack または :kimito
  4. 任意確認 — 下の ASC 価格画面で「すべての国または地域」相当になっているか
こん太
こん太

昔は審査通過後に人間が ASC で国を選んでた。今は API で先に全世界を入れられる。審査中でも OK だ。

たぬ姉
たぬ姉

審査通過を待たなくていいの。ただし反映に数時間かかることはあるから、DL できないときは つまずいたら も見てね。

たぬ姉
たぬ姉

↓ 任意の目視確認は価格と配信可能状況。kimito 実証:
…/apps/6779860644/distribution/pricingRH 実証: …/apps/6780161483/distribution/pricing

✅ CI ログに 175/175 territories が出ていれば、手で国を選ぶ作業は不要
?
つまずいたら
症状 → どの Step?
こん太
こん太

迷ったら、今の Step のたぬ姉の URLを開いて、同じ画面か確認しろ。

症状対処
Invalid CSR.csr.pem をアップロード(.csr だけは NG)
CI submit が 409 → App Privacy を公開まで
RH で profile エラーIOS_APPSTORE_PROFILE_RH_BASE64 を登録
ascAppId 未設定 → 枠作成 → config に数字を記入
審査通過なのに DL 不可asc-set-availability を再実行 → ASC 価格画面で確認(最大24h)
CI アイコン 75KB エラー1024px マスター(release-assets/…/app-icon-1024.png)を使う。512px で上書きしない
配信地域 API 403GET /v2/appAvailabilities?filter[app]= は禁止。キットは appAvailabilityV2 経路を使う(2026-06 修正済み)

🎉 iOS 人間の仕事、これで全部

初回: ① 署名 → ② 枠 → ③ Privacy → ④ push(配信地域も自動)
2回目以降: push するだけ

こん太
こん太

詳細コマンドは _docs/ios-human-tasks.md_docs/reverse-hack-mobile-runbook.md だ。

たぬ姉
たぬ姉

上から ① → ② → … と進めなさい。それでは、ゆっくりしていってね。

🔗 関連: 追体験トップAndroid 追体験Chrome 追体験ゆっくりものがたり準備ガイドつまずいたら実証知見無応答ゼロ化