はじめに
昨日はAppStoreにアプリ申請を行ったのですけど、やはりアプリ申請作業は個人制作者にとっては最大の難関です。特に今回はapple developer契約更新直後というのもあってiOS CertificateやProvisioning Profile等々の対応が必要になりました。毎回とても苦労するので心配していましたが、やはり完全にはまりました。理由は簡単で、CertificateやProvisioningの仕組みを本質的に理解していないからです。
ということで昨日の朝に申請しようと思って進めていたのですが、最後の最後でのXcodeからアーカイブのアップロード時にエラーが出て完全スタック。最終的には夜の申請となりました。
本質はまだ理解できていませんが、少し進歩したのでここで整理しておきたいと思います。
申請したアプリは「ワールドサッカー フリーキック決闘空間」というアプリです。合格して公開されましたらここでも紹介させて頂きたいと思います。(そしたらなんと12時間以内で承認してもらいました。最近のApp Storeは早いですね)
正しいアプローチはこちらを参照してください
これから自分の対応を下記に書いて行くのですけれど正しいアプローチではありません。昨日参照させて頂いてとても良くまとまっていて助かった豪徳寺謙さんという方のサイトを紹介させて頂きます。実際にCertificate等で問題が発生してここへ来られた方は下記サイトを参照されることを推奨させて頂きます。
サイト名:iOS アプリ開発 スマホ・アプリの作り方入門
https://i-app-tec.com/ios/apply-application.html
下記の5つのフェーズに分けてわかりやすく記載してくれているのでありがたいです。
① iOS Certificateの作成手順
② iOS App IDsの登録
③ Provisioning Profileの作成
④ アプリ申請のためのXcodeでアップロードする
⑤ iTunes Connectにアプリ情報を登録して申請する
Unityによる開発よりiOSアプリ提出のほうが難しい理由
簡単なことです。それは使う頻度の違いです。
Unityに関しては毎日触ります。Xcodeのデバイス動作までの機能も毎日ですね。なので記憶力の悪い自分でも忘れない。何度も課題や問題が発生しますが、Unityに関しては調査方法を含めた解決方法は手慣れたものです。まあ自分の開発プロセスそのものが日々の課題・問題解決の連続ですから。
一方iTunes Connectでのアプリ申請は1か月に1回とかです。Xcodeでアーカイブ創ってiTunes Connectへアップロードする作業。いや、その前にApple Developerでアプリを登録しておかなければならない。Bundle IDとか作った後でiTunes Connectにアプリを登録開始しないとアップロードできない。とかいう作業は1か月に1回とかです。でもさすがにこの作業は既に10回近くになって来ましたので、だいたいのことは即時解決できるようになってきました。Unityよりは嫌ですけどね。記憶力が悪いためなのですが、この申請作業が近づく慣れない問題頻発の予感でとなんか重苦しくなってくるのですよね。でもまだこれは良いのです。
1年に1回のDeveloper登録との関係。この課題に対面する頻度が圧倒的に低い。そしてこれはDeveloper契約対応の問題と各種Certificateの対応、Provisioning情報の対応等々をすべて正しく実施する必要があるということです。これはハードル高いです。
Apple Developer契約の自動更新は海外では既にあるようなのですが日本ではまだできないようです。1年毎のこの試練は本当に大変です。
正しいアプローチへの考え方
多くの要素が存在し、それを正しく設定しないと先へ進めない障壁への対応には、本質的な理解が必要となります。本質的理解があればいろいろな問題が発生したとしても少しの時間ロスで先へ進むことができます。しかし本質理解するための時間は馬鹿になりません。
一方で先人達がありがたくもネットで記述してくれるやり方紹介サイトが存在します。自分と同じ状況であることさえ確認できればバカチョン対応で一気に突破することができます。これは大変ありがたいことです。ただこの方式には3つの問題があります。
①アプリ登録方法や開発者登録方法等はすごいスピードで改訂されているのですぐ古くなる
②解決方法が幾つもある課題(Certificate, Provisioningとかはこれです)の場合には自分がどの状況にありどのアプローチが適切なのかがわからないことがある。結果として毎回ネットで調べたときに参照するサイトが違う方向性のサイトだったりする。(前回のサイトへ行きつけない。今回はこれでひっかかりました)。
③自分がいる状況がどういう状況なのかわかっていて適切なキーワードでネットで調べないと、本質的な正解にはたどり着けない(これは元々常に難しい問題です)
この点を良く考慮して進める必要があるといことが今回得られた知見です。
そして、最低限必要な理解をしたうえでネットでの皆さんの情報を活用させて頂くようにします。少なくともApp Storeへのアプリ登録とApple Developer契約更新に伴うCetrificate更新、Provisioning更新に関してはそうします。
自分は記憶力が悪いのでしっかりメモっておく必要があるのですが、その内容を今回のブログ記事として記載しますので、来年はこの記事を読んでいる自分がいるはずです。
iOS Certificate, Provisioning Profileの更新について
今回理解したことを整理しておきます。
注意:AppleDeveloper契約を更新した人であり、かつ、Certificate, Provisioning情報をアップデートしなければならない人限定の話ですので注意ください。
1.まず最初に自分の使っている機器類の情報をApple側に伝える必要がある。
この理解が重要でしたね。結果的にはこれがうまくできていませんでした。
使っているmacとそこに接続されたデバッグで使うデバイス達の情報をまずApple Developerサイトに教える必要があります。これがmac内でキーチェインを起動して作成するCSRファイル(認証局へ証明書を要求するファイル)
問題なのはApple DeveloperでCertificateでCSRファイルをアップロードする場所があるのですがちょっとわかりにくくて、CSR無しの状態で先へ進むボタンを押してしまったら、エラーメッセージ無しでそのままCertificateが作成できてダウンロードしてmac内で更新できたのでそれで問題無いと考えてしまいました。これあかん。この問題がどこでわかるかというと、最後の最後でXcodeでアーカイブ創ってアップロード(またはベフリファイ)して初めてサイニングで問題があるぞという赤いエラーメッセージで気が付くのです。ループ長いので本当に困ります。2年前にも同じ問題にひっかかったのですけど、どう抜けたのかわかりませんが今回解決法は全く覚えていませんでした。自分は課題・問題およびその解決方法は開発ノートに書いているのだけれど2年前のこのエラーメッセージをさがそうという気にはなりませんでした。手書きノートは検索利かないですからね。
2.Apple DeveloperサイトでCertificate(証明書)の更新:を行う
上記で創ったCSRを使って創るのですけど、Development: 開発用と製品用: App Store and Ad Hoc の二つが必要です。これがまたわかりにくいのだけどただやるだけです。
2つをダウンロードしてmac内でクリックすると自動的に更新されます。
2.Apple DeveloperサイトでApp IDsの登録:を行う
アプリケーションを登録します。bundle id等は準備してきたものを使います。Unityでは直接記入しているはずです。
必要な情報を入れてアプリを登録します。
これを入れると始めてiTunes connectでアプリを登録することができて、それができるとアプリ関連情報を入力開始できます。そしてXcodeからアーカイブをアップロードすることが可能になります。
3.Apple DeveloperサイトでProvisioning Profileの更新:を行う
CertificateとApp IDができているのでProvisioning Profileを創ります。
これまでに作ってきた下記のものを関連付ける役割のプロファイルです。
① App ID: bundle ID,
② Certificate: 証明書: ペア鍵
③ 端末のUDID:公開前にテストする実機のUDID (既に登録してあるはずです)
Apple DeveloperサイトでCertificates, Idenitifies & Profilesで新規登録します。
これも2種類作ります。Development: 開発用とDistribution:配布用 の二つが必要です。これがまたわかりにくいのだけどただやるだけです。種類やアプリを選択して進めると名前を決めて完成となります。これをmacへダウンロードしてクリックするとmac側に反映されて終了です。2種類ともですね。
最後に
まあ細かな部分はまだまだ不足していますが、大きな概念の部分は作業的には理解できたと思います。意味に関してはまるで不足していますけどね。
アプリ申請作業はだいぶ遅れたのですけれどアプリ審査はすごく速く通してもらいましたので当初のねらいのワールドカップ開催直前での公開が達成されました。まだAppStoreでは公開されていませんけど公開されたらここで紹介させて頂きます。
以上