【iOSアプリ開発備忘録 #5】WindowsでiOSアプリのリリースまでできた。 — EAS BuildでApp Storeに辿り着くまで

自作ツール

Mac、なし。プログラミング未経験。それでも、App Storeに自分のアプリを並べたかった。 連載最終回。Windows一台で本当にiOSアプリを公開できたのか――その全工程と、最後の壁の話。

連載もいよいよ最終回です。第1回で『Windows一台でiOSアプリを公開する』と宣言したゴールに、ようやく辿り着きます。

前回の記事はこちら 【SÉtelier開発記 第4回】個人開発のマネタイズはRevenueCat+AdMobで楽になった

前回では、RevenueCatとAdMobで課金・広告を実装した話をしました。
アプリは完成。あとはストアに出すだけ――そう思っていました。

ところが、「ここから1〜2週間、リリースまでに最後の壁が立ちはだかります」。

EAS Buildのトラブル、そして何より、「Apple審査の複数回リジェクト」。
本記事は、その実体験の記録です。


全工程の地図

最終回なので、まずWindows一台でiOSアプリを公開するまでの全工程を一枚で見渡しておきます。

連載の第1〜4回でアプリ自体は完成。「第5回は工程5〜7の話」になります。リジェクトされて、修正して、再提出して、ようやくリリース。

ここから順番に、各ステップでの実体験を書いていきます。


ステップ1:Apple Developer登録(数日〜2週間)

iOSアプリを公開するには、まず『Apple Developer Program』への登録が必須です。
年額¥15,000ほど(2026年現在は$99/年)。

Windowsからの登録手続きは、特に難しくありません。「Webブラウザですべて完結」します。

ただし、「本人確認と税務情報の入力」で時間がかかります。
僕の場合は数日で完了しましたが、人によっては1〜2週間かかるケースもあるそうです。
ここはAppleの側のチェックなので、自分でコントロールできない待ち時間です。

ポイント:Apple Developer登録は『リリース直前』ではなく『開発初期』に始めておくのがおすすめ。 実機テスト用のプロビジョニングプロファイル発行にも必要なので、早めに準備しておくと後がスムーズ。


ステップ2:EAS Build — Mac無しでビルドする

ここが連載タイトルの核心、『Mac無しでiOSアプリのバイナリ(.ipa)をどう作るか』です。

EAS Buildとは

第1回でも触れた通り、EAS Build は 「Expo社が提供するクラウドビルドサービス」 です。あなたが書いたコードをExpoのサーバーにアップロードすると、向こう側のMacが代わりにビルドしてくれて、.ipaファイルを返してくれる。

仕組みはシンプルですが、「個人開発でこれが使えるかどうかが、Mac無しでiOSに行けるかの分岐点」になります。

EAS Buildで中程度詰まったところ

EAS Build自体の仕組みはとてもよくできていて、「ビルド自体はそれなりにスムーズ」にいきました。EAS CLIをインストールして、eas build --platform iosコマンド一発でクラウドが処理してくれる。

ただ、「ビルドの周辺で詰まったポイント」が3つあります。

詰まり1:証明書・プロビジョニングプロファイル

iOSビルドには『証明書(Certificate)』『プロビジョニングプロファイル』が必要で、これは普通Macで作ります。Windowsでは作れません。

EAS Buildは、「EASが代行して自動生成」してくれる仕組みがあります。
eas credentialsコマンドで設定すれば、Apple Developer アカウントと連携して必要なものを揃えてくれる。

ただし、初回はApple IDの2要素認証や、Bundle IDの登録など、いくつかの手順を踏む必要があり、「未経験者には『何を聞かれているのか分からない』瞬間が何度もありました」
Claudeに状況を説明しながら、ひとつずつ突破。

詰まり2:設定ファイル(app.json / eas.json)の調整

Expoプロジェクトには app.jsoneas.json という設定ファイルがあって、ここに大量の設定値を書き込みます。

  • Bundle ID(com.naopoco.setelier)
  • アプリ名、バージョン、ビルド番号
  • AdMob App ID
  • iOS Background Mode(音声再生のバックグラウンド継続)
  • 各種パーミッション

これらの設定値を「ひとつでも間違えると、ビルドはできてもApple側で受け付けてくれない」。
何度かビルドしては設定見直して、を繰り返しました。

詰まり3:ビルドの待ち時間

EAS Buildのビルド時間は、「1回あたり15〜30分」です。設定を直して再ビルドして待って、エラーが出てまた直して……というサイクルを回すと、ビルドだけで多くの時間を費やしてしまいます。

これは想像していたよりも開発のテンポを大きく落とします。
Windowsマシンの上で完結する開発と違って、『クラウドの順番待ち』が常にある状態。

学び:EAS Buildは『Mac代行サービス』として優秀。 ただし「ビルドのたびに数十分待つ」という前提で、リリース計画を組むこと。

加えて、EAS Bulidの無料実行枠は、月に15回という制約があります。最悪、月の初週にすべての無料枠を使い切ってしまうことも十分考えられるので、無料枠だけでこなそうと思うならある程度の我慢も必要になりうることを頭に入れておいてください。


ステップ3:ストア情報の準備 — ここも何気に時間がかかる

ビルドが通って.ipaができても、それだけでは公開できません。App Store Connect(Apple提供のストア管理画面)で、結構な量の情報を入力する必要があります。

  • アプリアイコン(1024×1024)
  • スプラッシュ画面
  • スクリーンショット(複数サイズ)
  • アプリ名、サブタイトル、説明文、キーワード
  • プライバシーポリシーURL、サポートURL
  • 年齢レーティング
  • アプリのプライバシー設定(データ収集の有無)
  • サブスクリプション商品の登録

このうち、特に詰まったポイントを2つ書きます。

スクリーンショットの作成

App Storeのスクリーンショットをアップロードするとき、適切な画像サイズが要求されます。具体的には:

  • 2736 x 1260ピクセル
  • 2796 x 1290ピクセル
  • 2868 x 1320ピクセル
    (アスペクト比19.5:9)

これが何気に面倒くさく、僕の持っているiPhone16eはどれにも該当しなかったんですよね。
追い打ちをかけるかのように、iPadでのスクショも用意する必要があることも判明しました。
「スクショ」と言われ言葉のまま真に受けるなら、持っていないiPadのスクショを用意するのは不可能なのでどうしようかと焦りました。
これについては、画像生成AIでなんとか工夫してリサイズしました。(足りない部分は、スクショの周りをぼかして拡大して背景化する…とか)
僕の場合は、ChatGPTのImage 2.0を使用。指示すれば、適切なサイズ・拡張子・デザインで出力してくれます。

それでも『どんな構図のスクショを6枚撮るか』を決めるのにも時間を費やしました。

スクショは「ストアでの第一印象を決める要素」なので、ここを手抜きするのはもったいない。
…といいつつ、僕のアプリのStore画像もまだ改善の余地はあると思ってます笑

ともあれ、詳細は公式ページで確認するのが一番です↓
https://developer.apple.com/jp/help/app-store-connect/reference/app-information/app-preview-specifications/

サブスクリプション商品の設定

第4回で書いた『月額¥300/年間¥1,800/買い切り¥4,800』の3商品を、App Store Connect で登録する作業です。

これがまた「項目が多い」。各商品ごとに:

  • 商品ID
  • 参照名(Apple側で識別する名前)
  • 価格(全世界で個別に設定可能)
  • 表示名(ユーザーに見える名前)
  • 説明文
  • レビュー用スクリーンショット(Apple審査のために必要)

特に「レビュー用スクリーンショット」で詰まりました。「サブスクの実際の購入画面のスクショ」を提出する必要があるのですが、まだリリース前で実際に購入できない状態。「RevenueCat連携のSandbox環境で購入画面を撮る」必要があり、これがまた手順が複雑でした。

学び:ストア情報の準備は『コードを書く時間』と同じくらいかかる。 開発工数の見積もりに必ず含めること。


ステップ4-5:審査提出 → リジェクトの嵐

ようやく全部揃って、いざ『審査用に追加』ボタンを押す。「ここから本当の闘いが始まりました」。

Apple審査:複数回リジェクト

僕のSÉtelierも例外なく、複数回リジェクトされました。Appleからのリジェクト理由を整理するとこうなります。

#Guideline内容
12.1(b)サブスクページが読み込めない
22.1(a)広告ボタンが反応しない

どちらも『機能が動かない』系のリジェクトです。Appleの審査では、「全機能が実際に動作するかを実機で試される」ので、見た目だけ作って中身が動かないと一発で弾かれる。

リジェクトの根本原因:鶏と卵問題

なぜリジェクトされたか?ここは第五回の中でも重要なところです。
今回、「僕のプロセスには『鶏と卵問題』のような構造的な壁」がありました。

具体的に説明します。

広告(AdMob)の場合:

  • AdMobで広告を表示するには、「App Store ConnectのアプリとAdMobダッシュボードを紐付ける」必要がある
  • でも、「この紐付けはアプリがApp Storeで公開されていないとできない」
  • 公開前のアプリでは広告が正常にロードされない
  • 結果、Apple審査で『広告ボタンが反応しない』とリジェクトされる
  • リジェクトされると公開できないので、AdMobの紐付けもできない
  • 「無限ループ」

サブスク(RevenueCat)の場合:

  • App Store Connectでサブスクリプション商品を登録する
  • ただし「Apple側で商品を承認してもらうには、アプリの審査と一緒に出す必要がある」
  • でも、商品が承認されていないとアプリ側で商品リストを取得できない
  • 結果、Apple審査で『サブスクページが読み込めない』とリジェクトされる
  • 「また無限ループ」

これに気づいたとき、『この壁、設計の問題じゃなくてAppleとの構造的な問題なんだ』と理解しました。

解決策:広告を一旦削除して提出

AdMobの鶏と卵問題に対しては、「初版リリースから広告UIを完全に削除する」判断をしました。

  • アプリ内のバナー広告UIを非表示
  • リワード広告ボタンを非表示
  • AdMob関連のコードは残しても、UIから外す
  • App Store申請時には『広告なし』として提出

この判断は、第3回で書いた『「引き算する」』判断軸そのものです。
「完璧を目指さず、まず出す」ことを優先する。

公開後、AdMobとアプリを紐付けてから、アップデートで広告UIを復活させればいい。
最初から完璧を目指さない

サブスクの方は『提出と一緒に承認される』を信じる

サブスクの方は、商品登録した状態で『審査用に追加』に含めることで、「アプリと一緒にAppleが承認してくれる」。これに気づくのに数日かかりました。

実際は、何度かやり取りしながらなんとか承認まで漕ぎ着けました。


ステップ6-7:再提出 → ついにリリース

広告を削除した版で再提出して、サブスク商品もApple側で順次承認されて、ついに『リリース可能』のステータスになりました。

最終リリースまでにかかった期間は 「約1〜2週間」
連載の中で『ある意味これが一番苦しかった時期』と言っても過言ではありません。
アプリはできているので公開できないもどかしさ。
コードを書く時間より、「審査のフィードバックを待つ時間と、リジェクト理由を解読する時間」の方が長かったかもしれません。

Xでフォロワーさんが「アプリは開発してからが長い」とおっしゃっていましたが、本当にその通りだと痛感しました笑

リリースされた瞬間

App Store Connectのステータスが『配布準備完了』に変わった瞬間、自分のiPhoneでApp Storeを開いて『SÉtelier』で検索しました。

そこに、自分のアプリのアイコンがあった。

プログラミング未経験から、Windows一台で、AIを味方に、ここまで来れた。

ちょっと感動しました。Macは結局、一度も触っていません。


連載のまとめ:無理しない設計の5原則

第1回から第5回まで、連載を通じて見えてきたパターンを最後にまとめます。

5つの判断軸

  1. 「早く諦める」 — AIが詰まったら撤退のサイン(第2回)
  2. 「先回りに従う」 — AIが予防的提案をしたら素直に従う(第3回)
  3. 「引き算する」 — 不要な依存は削除する勇気(第3回)
  4. 「任せられるものは任せる」 — 課金・広告は専用サービスに丸投げ(第4回)
  5. 「先に出して、後で育てる」 — 完璧を目指さず、まず出す(第5回)

すべては「無理しない設計」に集約される

5つは別々の判断のように見えて、実は「全部同じ根っこ」です。

『未経験者+AI』という座組みには、自分の限界とAIの限界の両方があります。
両方の限界を見極めて、背伸びせず、抱え込まず、任せられるものは任せて、出せるタイミングで出す。
これが「未経験者がAIと一緒にアプリを作る時代の、ひとつの解」かもしれません。

『無理しない設計』というのは、決して『手を抜く』ことではありません。
「自分とAIの能力を冷静に見積もって、最も合理的なルートを選ぶ」ということ。
これが、2026年以降の非エンジニアな個人開発者が持っておくべきスキルだと思います。


連載を読んでくれたあなたへ

5回に渡る長い連載を、最後まで読んでくれてありがとうございました。

この連載が、誰かの『自分にもアプリが作れるかも』というきっかけになったら、とてもうれしいです。
プログラミング未経験の僕でも、AIを味方に、Windows一台で、App Storeに自分のアプリを並べることができました。(ユーザーに評価されるかは別として)

何より、「挫折するくらいなら、完璧を目指さず、まず出す」ことを大事にしましょう。


完成したアプリ:SÉtelier(セトリエ)

この連載で作ったアプリは、App Storeで公開中です。
「音を置いて、ボールを落とすだけで、自分だけのアンビエントBGMが生まれる」――そんなアプリになりました。

↓公開したアプリのリンクです(興味あれば!フィードバックも大変有難いです!)↓

🎵 SÉtelier(セトリエ)を試してみる

音を置く、自分だけのアンビエントBGM。
無料でダウンロードできます(追加コンテンツや便利機能のアンロックあり)

App Storeで開く


SÉtelierの今後と、次の連載予告

SÉtelierは、リリース後もアップデートを続けていく所存です。
広告UIの復活(済)、新しいオトダマの追加、シェア機能の実装、グローバル展開など、まだまだやることはたくさん。

そして、この連載の続編として『SÉtelier運用記』も書こうか視野にいれております。
リリース後、誰からも入れてもらえない現実や今後のマーケティングなど。
将来は、ユーザーレビューへの対応、アップデートの判断軸、そして次のアプリへの展開――『作る前』ではなく『作った後』の話を主軸にしていこうと思います。


iOSアプリ開発備忘録(もとい、SÉtelier 開発記) 第5回 / 全5回 完


連載を読んでくださって、本当にありがとうございました。

コメント

タイトルとURLをコピーしました