新しいアプリの課金商品 ID を決めていた夜、手が止まりました。この ID は、個人のアカウントに置いてよいのだろうか。いずれ法人にするかもしれないのに、と。
最初にお伝えしたいのは、移すことはできる、という点です。ただし「いつでも、そのままで」ではありません。移す前のアプリの状態に条件があり、機能ごとに外しておくものがあります。
Rork で作ったアプリも、最終的には自分の Apple アカウントに並ぶ以上、同じ問いに突き当たります。私は個人開発で複数のアプリを長く運用しておりますが、アカウントの種類は後から何とでもなるものだと、最初のうちは思い込んでいました。そのつけを払いかけたのが、この夜です。以下は、Apple の公式ページを一つずつ辿って確かめた内容です。
移せる条件は「アプリの状態」と「両方のアカウントの状態」にあります
App Transfer の条件ページに書かれている条件のうち、最初に引っかかりやすいものを並べます。
| 条件(公式の記述の要旨) | 見落としやすい場面 |
|---|---|
| 移す側・受ける側の両方が、最新の有料・無料アプリ契約に同意済みであること | 受ける側の法人アカウントを作ったあと、契約の同意だけが残っている |
| App Store に公開されたバージョンが 1 つ以上あること | 初回の審査が通る前に、アカウントだけ移そうとする |
| 審査待ち・審査中・リリース待ちなどの状態でないこと | 更新を出した直後に移そうとする |
| どの国・地域でも予約注文の対象でないこと | 新作の予約を先に開けている |
| アプリ内課金の商品 ID が、受ける側のアカウントのアプリと重複しないこと | テスト用アプリに同じ商品 ID を使い回している |
最後の行は、私にとって一番ひやりとしたものでした。課金商品 ID を「あとで整理すればよい」ものとして扱うと、移す段階で止まります。
なお、アカウントの種類そのものを個人から法人へ切り替える方法は、今回確認した公式ページには見当たりませんでした。ですので、ここでは「アプリを別のアカウントへ移す」前提で話を進めます。
移す前に外しておく5つ
移管の概要ページには、機能ごとの注意が並んでいます。課金・通知・ログインを使うアプリで、実際に作業が発生しやすい5つに絞ります。
1. TestFlight のベータ配信。 公式には、移管を始める前にすべてのベータ版で TestFlight を止めるよう書かれています。ビルドとテスターを外し、各言語のテスト情報も空にします。
2. 自動更新サブスクリプションの共有シークレット。 アプリ固有の共有シークレットを使う必要があります。移す前に生成し、受け入れられたあとにもう一度生成して、旧アカウント側の人が使えない状態にします。
3. Sign in with Apple。 ユーザーごとに移行用の識別子を作る手順が要ります。他のアプリとグループ化している場合は、先にグループを外します。
4. プッシュ通知と Keychain 共有。 受け取る側の APNs 証明書は有効期限まで使えますが、その後は新しい証明書か鍵が必要です。Keychain 共有はアプリを更新するまでしか動かず、更新後は利用者に再ログインしてもらう形になります。
5. iCloud(CloudKit)と Apple Pay。 CloudKit のコンテナは受け取る側に移ります。同じコンテナを別のアプリと共有していると、その別のアプリは読み書きできなくなります。Apple Pay の merchant ID は一緒には移りません。
Xcode Cloud を使っている場合は、関連データを先に消す必要もあります。そして、移す側は「移した時点でアプリがアカウントから消える」ため、情報をバックアップしておくよう公式が促しています。
引き継がれるもの、引き継がれないもの
引き継がれると明記されているのは、レビューと評価、そして Bundle ID です。ダウンロードできる状態のまま移せるので、利用者には更新が届き続けます。
一方、Bundle ID は、ビルドを 1 度アップロードしたあとは変えられません。この点は、別の記事でアプリ ID を最初のリリース前に決める理由として書きました。移管の話は、その続きにあたります。
引き継がれないのは、先ほどの Apple Pay の merchant ID のほか、Game Center のマッチメイキング設定、Wallet パスの識別子などです。課金とログインだけのアプリなら、影響の中心は 2 と 3 に集まります。
個人のまま始める人と、最初から法人にする人の線引き
私が決めている線引きは、次のとおりです。
個人(Individual)で登録すると、App Store の販売者名は自分の氏名になります。法人(Organization)で登録すれば、組織名が表示されます。ただし法人には、D-U-N-S 番号、契約を結べる法的な組織であること、公開されて機能しているウェブサイトが必要です。屋号や商号(DBA)は受け付けられないと、登録ページに明記されています。
つまり、販売者名に個人の氏名が出ることを受け入れられるなら、個人で始めて問題ありません。一方で、チームで運用する予定が決まっている、取引先に組織名で見せたい、という場合は、最初から法人が楽です。登録の手順そのものは、Apple 側で自分が済ませておく手続きにまとめてあります。
移せることと、移すのが軽いことは別です。 移管は一度で済みますが、外す作業は機能の数だけ積み重なります。
次のアクションは 1 つだけ
App Store Connect で、自分のアプリごとに「使っている機能」を書き出してみてください。TestFlight、課金、Sign in with Apple、プッシュ通知、iCloud の 5 行で足ります。
いま思えば、あの夜に手が止まったのは、この表が頭の中にしか無かったからなのだと思います。その表が空欄に近いほど、移す日は軽くなります。私もこの夜から、新しいアプリではこの 5 行を最初に埋めていきたいと考えております。