Apple 開発者プログラム徹底解説:無料と有料の比較
Apple の年額 99 ドルは iOS 開発の入場料ではない。Expo Go と無料の開発ビルドから、有料プランが実際に解き放つものまで、0 ドルから 99 ドルまでの道のりを三段階で整理する。
日本語
コピー

多くの開発者が、Apple Developer Program は iOS 開発の入場料だと思っている。まだ必要になる前にとりあえず登録したり、逆に iOS には手を出さないでおいたりする。
だが実際には、Expo アプリを無料でビルドして自分の iPhone で動かせる。誰かに共有したくなった段階で登録すればいい。この記事では3つのレベルに分けて、0 ドルから 99 ドルまでの道筋を整理する。各レベルで何が必要か、何ができるようになるか、どこに制限があるか。読み終えれば、初日から登録すべきなのか、まず手を動かして App Store に公開する段階になってから登録すればいいのかが分かるはずだ。
動画版
簡潔な回答

| 手元にあるもの | できること | 費用 |
|---|---|---|
| 任意のパソコン1台とiPhone 1台 | Expo Goで開発。Fast RefreshとExpo SDKの大部分に対応 | 0 ドル |
| Mac 1台とiPhone 1台 | 任意のネイティブライブラリを含む開発ビルドを作成し、自分のiPhoneにインストール | 0 ドル |
| Macはないが、実機のiPhoneにアプリを入れたい | Expo Buildでクラウド上でビルドと署名を行う | 年間 99 ドル |
| 他の人にもアプリを使ってもらいたい | TestFlight、内部配布、App Store | 年間 99 ドル |
レベル1:任意のパソコン+iPhone 1台、Expo Goで開発する
必要なのはiPhone 1台とパソコン1台だけ。Windows、Linux、macOSのどれでも構わない。App StoreからExpo Goをインストールし、プロジェクトを作成して起動する:
npx create-expo-app@latest
npx expo start
iPhoneのカメラでQRコードを読み取れば、Expo Goでアプリが開く。ファイルを保存するたびにFast RefreshがiPhone上のアプリを更新する。

この層にはAppleアカウントが一切不要だ。Expo GoはExpoが自らビルドして署名し、App Storeで公開しているアプリなので、iPhoneは他のアプリと同じように扱う。
その代償として、Expo Goに組み込まれたネイティブコードは固定されている。JavaScriptは書き換えられるが、ネイティブライブラリはExpo Goに入っているものしか使えない。このライブラリ群はExpo SDKの大部分をカバーしており、expo-camera、expo-maps、@expo/ui、そしてreact-native-reanimatedなどの人気コミュニティライブラリも含まれる。独自のネイティブコードを必要とする機能はExpo Goでは使えない。
expo-widgetsで実装するホーム画面ウィジェットとライブアクティビティ。expo-app-intentsで実装するSiriとショートカット。- ネイティブコードを含むがExpo Goに入っていないライブラリ、および自分で書いたネイティブコード。
これらには開発ビルドが必要だ。
第2層:Macで開発ビルドを作る
開発ビルドは自分専用のExpo Goだ。Expo Goでおなじみのexpo-dev-clientツールが入っている。違いは、中のネイティブコードが自分のものになること。任意のネイティブライブラリ、任意のネイティブ設定、自作のネイティブモジュール。Fast Refreshもそのまま使える。ストアに出すつもりのアプリには、開発ビルドを勧める。
Macがあれば、無料でビルドしてiPhoneにインストールできる。iPhoneを接続して次を実行する:
npx expo run:ios --device
XcodeがMac上でアプリをコンパイルして署名し、端末にインストールする。署名にはAppleアカウントが要るが、有料アカウントは不要だ。無料のAppleアカウントでXcodeにサインインすると、Personal Teamという署名チームが割り当てられる。
初回実行時、CLIがビルド開始前に止まることがある:

Mac にコード署名証明書がまだない、ということだ。スクリーンショットの Learn more リンクを開くと簡単な設定ガイドが表示され、Apple アカウントで Xcode にサインインする手順が書かれている。一度そのとおりに設定してから、コマンドをもう一度実行する。

無料署名の制約
Apple は無料の Personal Team に次の制約を設けている。
- App は 7 日で失効する。 Apple の無料プロビジョニングプロファイルは作成から 7 日で無効になる。以降 App は起動できなくなるため、ビルドをもう一度やり直す必要がある。
- 1 台のデバイスにつき最大 3 個の App。 この方法で iPhone 1 台にインストールできるのは 3 個まで。
- 自分のデバイスにしかインストールできない。 登録できるデバイスは最大 3 台で、ビルドを他人に渡すことはできない。
- 有料の機能は使えない。 リモートプッシュ通知、App 内課金、Sign in with Apple、NFC、iCloud、Apple Pay、関連ドメインには有料メンバーシップが必要で、開発段階でも例外はない。ライブラリを導入してコードを書くところまではできるが、ビルドがこれらの機能を要求すると、Xcode は無料アカウントで署名を完了できない。
Apple の機能サポート表によると、無料アカウントでも使える機能がいくつかあり、App Groups、Background Modes、HealthKit、HomeKit、Keychain Sharing、Maps が含まれる。expo-widgets は App Groups を使って、App とそのウィジェットの間でデータを共有する。
ローカル通知は App がデバイス上で自分でスケジュールするもので、プッシュの機能は要らない。必要なのはサーバーから送るリモート通知だけだ。
Mac がない場合、クラウドビルドには有料プランが必要
Windows や Linux でも iOS App はビルドできる。Expo Build がクラウド上の Mac でコンパイルを実行する:
eas build -p ios
このビルドを iPhone にインストールするには Expo Build による署名が必須で、クラウドでの署名には有料プランが必要になる。

証明書とプロビジョニングプロファイルの役割分担
デバイス上で動く iOS アプリは、2つのもので署名されている。
- 証明書は、そのアプリを誰がビルドしたかを示す。
- プロビジョニングプロファイルは、そのアプリをどこで動かせるかを示す。どのアプリに属するか、どの iPhone にインストールできるか、どのケイパビリティが使えるか、いつ失効するか。
iPhone はアプリを開く前に、この2つを確認する。プロビジョニングプロファイルが失効すると、新しいビルドをインストールしない限りアプリは開けない。

署名方式によって、その App をインストールできる人が決まる。無料の Apple アカウントでは開発用署名しか得られない。Ad hoc 署名と App Store 署名は配布用証明書を使うが、この証明書を取得できるのは有料の Apple Developer Program メンバーだけだ。

Mac では、Xcode が無料の Personal Team 用の開発署名を作成する。クラウド側では、Expo Build が配布証明書と ad hoc プロビジョニングプロファイルを使ってデバイス向けのビルドに署名する。つまり、Mac がなければ、実機の iPhone で開発ビルドを動かすには有料プランが必要だ。
どのコンピュータでも、iOS Simulator 向けのビルドは無料で行える。シミュレータ向けのビルドはデバイス向けの署名を行わないため、Expo Build は Apple Developer アカウントなしで完了できる。ただし、それを動かす場所は依然として必要で、今日ではそれは通常 Xcode をインストールした Mac を意味する。
年間 99 ドルで使えるようになるもの
Apple Developer Program の年会費は 99 ドルだ。結局のところ、これで得られるのは次の 5 つだ。

1. アプリを他の人に配布する
無料の署名は自分のデバイスでしか使えない。メンバーシップに加入すると、ビルドを他の人に渡す方法が2つある。
- TestFlight。 TestFlight は Apple のベータテスト用アプリだ。外部テスターは最大10,000人まで招待でき、公開リンクを共有することもできる。
- Expo Build による内部配布。 テスターはリンクからビルドをインストールする。この方法は ad hoc provisioning を使うため、すべての iPhone を事前に登録する必要があり(
eas device:create)、新しいデバイスに変えるたびにビルドし直すことになる。この方法で Apple が年間に許可する iPhone は最大100台だ。
2. クラウド署名
Expo Build は iOS 証明書の作成と管理、そしてデバイス向けのビルド署名を行える。これにはメンバーシップが必要で、その理由は「Mac がない場合」の節で説明している。
3. リモートプッシュ通知
バックエンドから送る通知は Apple Push Notification service を経由するため、有料アカウントが必要だ。ローカル通知なら不要。
4. アプリ内課金とその他の Apple の機能
先ほど無料署名の制限で触れた有料機能、たとえばアプリ内課金、Sign in with Apple、NFC などがこれにあたる。無料アカウントでは、これらの機能を要求するビルドに署名できない。デバイス上で試すにはメンバーシップが必要で、ストアに公開するときだけの話ではない。
5. App Store
App Store への公開にはメンバーシップが必要だ。アプリが収益を上げ始めたら、Apple の App Store Small Business Program を確認してみるといい。前暦年の収益が 100 万ドル以下であるか、App Store の新規開発者であれば対象になる。Apple が有料アプリとアプリ内課金から取る手数料が 30% から 15% に下がる。利用するには自分で登録する必要がある。
有料アカウントは、自分でビルドするときの有効期限も変える。有料チームが発行する開発用プロビジョニングプロファイルは最長1年間有効で、7日間ではない。毎週ビルドし直す必要はなくなる。
有料にすべきなのはどんなときか

アプリが次のいずれかを必要とするなら、初日から課金が必要になる:
- リモートプッシュ通知。開発中にテストしたいから。
- アプリ内課金。理由は同じ。
- 実機の iPhone はあるが Mac がない。 クラウド署名が、アプリを端末に入れる唯一の手段になる。
それ以外の人はアプリを丸ごと無料で作り、誰かに渡す段階になってから登録すればいい。
Android は?

Android は開発からリリースまで一貫して無料だ。ビルド、インストール、ビルド成果物の共有のどこにも費用はかからない。Play Store に公開する段階になって初めて、Google Play Console アカウントの登録に 25 ドルの一回払いが必要になる。
どこから始めるか
- 今日すぐに、レベル1から始める。
npx create-expo-app@latestを実行し、Expo Go でプロジェクトを開く。 - ネイティブコードが必要になったら開発ビルドに切り替える。 まず Introduction to development builds を読み、Local app development に沿って iPhone 上で動かす。
- 共有する段階になってから登録する。 Apple Developer Program に加入し、内部配布 または TestFlight を設定する。

よくある質問
Expo の利用に Apple 開発者アカウントは必要か? いいえ。Expo Go で開発する限り、Apple アカウントは一切不要だ。必要になるのは、アプリを共有・公開する場合、クラウドで署名済みビルドを作成する場合、リモートプッシュ通知などを利用する場合に限り、有料の Apple Developer Program だ。
iPhone で Expo アプリを無料で動かせるか? はい。Expo Go ならどの iPhone でも無料でプロジェクトを動かせる。Mac と無料の Apple アカウントがあれば、npx expo run:ios --device で開発ビルドをインストールすることもできる。
無料の iOS ビルドはどのくらい使えるか? 7 日間だ。Apple の無料プロビジョニングプロファイルは作成から 7 日で失効し、この方法でインストールできるアプリは 1 台あたり最大 3 個までだ。有料チームの開発用プロファイルは最長 1 年間有効だ。
Mac がなくても Expo で iOS アプリをビルドできるか? はい。Expo Build なら Windows や Linux からクラウド上で iOS アプリをコンパイルできる。ただし、そのビルドを iPhone にインストールするには有料の Apple Developer Program が必要だ。クラウドでの署名には配布証明書を使うためだ。
無料アカウントでもプッシュ通知をテストできるか? ローカル通知は可能だ。自分のサーバーから送るリモート通知には有料の Apple Developer Program が必要だ。
Expo アプリの公開にはいくらかかるか? iOS は Apple Developer Program が年間 99 ドル。Android は Google Play Console アカウントの一回払いで 25 ドルだ。
参考リンク
- Expo Go:https://expo.dev/go
- 開発ビルドの紹介:https://docs.expo.dev/develop/development-builds/introduction/
- ローカルでのアプリ開発:https://docs.expo.dev/guides/local-app-development/
- Xcode の署名設定:https://expo.fyi/setup-xcode-signing
- Expo Build:https://docs.expo.dev/build/introduction/
- 内部配布:https://docs.expo.dev/build/internal-distribution/
- iOS シミュレータ向けビルド:https://docs.expo.dev/build-reference/simulators/
- Apple:無料メンバーシップと有料メンバーシップの比較:https://developer.apple.com/support/compare-memberships/
- Apple:サポートされる機能:https://developer.apple.com/help/account/reference/supported-capabilities-ios/
- Apple Developer Program:https://developer.apple.com/programs/
- TestFlight:https://developer.apple.com/testflight/
- App Store スモールビジネスプログラム:https://developer.apple.com/app-store/small-business-program/