社内公開 iOS アプリ更新のススメ

iOS の Distribution 証明書や Provisioning Profile が切れるのが、1年だったり、3年だったりで期間が切れたらどうなるんじゃい！長すぎるわ！！という状況で全貌がなかなか把握できなかったのですが、1年やら3年経ってやっと把握できた気がしますので、書きます。

色々書きますが、Apple 公式ドキュメントが絶対的に正しいものですので注意してくださいね！！

# 書くこと

ここでは、Apple へ審査を通さないような社内公開限定のアプリのことについて書きます。（ipa ファイル化する際に”Enterprise”を選択する、App Store にアップはしないアプリです。）

<img width="745" alt="Screen Shot 2018-11-30 at 15.07.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/92506/006b6b73-137c-1ce0-30dc-70d2c6b1a5ce.png">

- iOS Certificate (Production) ※以下記事では Distribution 証明書と記載
- iOS Provisioning Profile (UniversalDistribution) ※以下記事では Distribution プロファイルと記載

上記を使用して、ipa ファイルにするアプリのことについて書いています。

# やりたいけどできないこと

- アプリの入れ替えなしで、1年以上のアプリ起動

できないようです。思い知りました。
Distribution プロファイルの有効期限が1年なので、アプリ入れ替えなしだと、それでアプリの命の灯火は消えます。（具体的には、スプラッシュ画面のところで落ちます。インストールできないアプリになります。）

なので、

1. 期限が来る前にプロファイルを作り直す
2. 有効期限が伸びたプロファイルを使ってアプリをビルドし直す
3. それを社内の人に入れ直してもらう

ということをしないとアプリが使えなくなります。

色々ネットで調べてみると、Distribution 証明書やら Distribution プロファイルを更新すれば、アプリ更新できるって書いてあるので、それすれば起動する状態を保てるんだぁ！と思ってましたが、更新って意味を勘違いしてましたね。。。

証明書、プロファイルを更新して有効期限が伸びた新しいプロファイルが入ったアプリをインストールし直してもらうと問題なく使えるよ！ということのようです。

社内の人に「新しく入れ直して！」って言うのがめんどくさいところが悩みだったんです。。が、その悩みは解消されそうにありません。

「企業の App Store 使って PUSH するようにすれば？」という言葉に対しては、本当にそのとおりで面目次第もございません。という感じです。

社内アプリは Apple 側で管理できないアプリになるので、有効期限は1年までということになっていると聞いたような気がします。仕様ですね。仕様。


# Distribution 証明書・プロファイルの基本的な知識

まずは、社内配布アプリ関連の基本的な知識から。

## 有効期限

- Distribution 証明書は、作成から3年間有効。
- Distribution プロファイルは、作成から1年間有効。

Distribution プロファイル作成の1年後が、Distribution 証明書有効期限より後だった場合、プロファイルの有効期限は、証明書の有効期限までになります。

【例】
・証明書有効期限：2018年11月28日

・プロファイル作成日2018年11月20日

　→　1年後の日付：2019年11月20日
　→　プロファイルに設定される有効期限：**2018年11月28日**

## 作成数

- Distribution 証明書が作成できるのは、2つまで。

1つをメイン運用で使って、もう一つを予備として使ってという意図。
有効期限が切れそうな Distribution 証明書を、急に Revoke しちゃうと、みんなが戸惑っちゃうので、有効期限をずらして徐々に上手く入れ替えるのが、かしこいやり方なんだろうと思います。

以上を踏まえて、証明書更新に関する Tips を書いていきます。


# 証明書更新 Tips

証明書更新に関する Tips です。

## アプリ有効期限の仕組み

アプリの有効期限は、Distribution プロファイルの有効期限によります。

ここで注意が必要なのは、Apple Developer サイト上の Distribution プロファイルの有効期限を伸ばすだけでは、既に ipa ファイル化されているアプリの Distribution プロファイルの有効期限は伸びないということです。

以下が失敗例となります。

---
【2017年11月1日】
2018年11月1日が有効期限の Distribution プロファイルを作成し、それを使用してアプリを ipa ファイル出力・インストール。

【2018年10月15日】
Distribution プロファイルの有効期限が迫っているので、Apple Developer サイト上で、対象の Distribution プロファイルを”Generate”し、有効期限を2019年10月15日に更新。**そのプロファイルを使用して、ipa ファイル出力・入替は行っていない。**

【2018年11月2日】
アプリが起動しなくなる。

---

上記では、**有効期限を更新したDistributionプロファイルを使用して、ipa ファイル化を行っていない**ので、アプリが起動しなくなりました。

アプリが起動しなくなるのを防ぐためには、”Generate”し、有効期限を更新した Distribution プロファイルを使って、ipa ファイルを作成し、アプリ入れ替えを行う必要があります。

”Generate”することで、サイト上に保持する Distribution プロファイルの有効期限が伸びますが、既に ipa ファイル化されているアプリが持つ Distribution プロファイルの有効期限は伸びません。

ipa ファイルを開いてみることで、有効期限はわかります。

見方に関しては下記記事に詳しく書いてあったので、参照してください。

- [ipaファイルに組み込んだ証明書の有効期限を確認する](https://qiita.com/shtnkgm/items/3a8503aa8d046604b7cf)
 
参考になります。

ipa ファイルが持つ有効期限が過ぎるとアプリは起動できなくなります。

上記したように Distribution 証明書の有効期限に Distribution プロファイルがかかる場合、有効期限の猶予など、複雑になりそうなので気をつけましょう。


## ipa ファイル化の際の Automatically と Manually 選択について

<img width="720" alt="Screen Shot 2018-11-29 at 19.36.50.png" src="https://qiita-image-store.s3.amazonaws.com/0/92506/7097e16b-4718-15b1-eb5b-593d633a45d9.png">

社内アプリとして、ipa ファイル化する際上図のような画面が出ると思います。どっちを選んでも同じと思われるかも知れませんが、アプリの有効期限管理上、”Manually”を選ぶのが好ましいです。

”Manually”は、Apple Developer サイトで作成した Distribution プロファイルを引き当てるので、有効期限が一覧できるという利点があります。
一方、”Automatically”は、自身が持つ Distribution 証明書で有効期限が長いものを引き当てた Distribution プロファイルを PC 内ローカルに作成し、ipa ファイル化に使用します。なので、いつ作成し、有効期限がいつか知るには、上記したように ipa ファイルを開いて確認するしかなくなってしまいます。

多少面倒にはなりますが、Apple Developer サイトで Distribution プロファイルを作成し、その有効期限を可視化しておくのがいいと思います。


## Distribution 証明書を作った人から p12ファイルをもらって登録する

CSRファイルを要求して、Distribution 証明書を作成した人には、p12ファイルを受け渡すという使命を課せられます。

その作業を行わなければ、他の開発者が社内アプリの ipa ファイル化ができなくなります。

社内アプリ開発するには、下記が必要になります。

1. 開発メンバーとしての招待
2. Distribution 証明書を作った人のキーチェーンから書き出した p12ファイルの登録

枠が空いているからと言って、適当に Distribution 証明書を作るのはやめましょう。管理できなくなります。Revoke して作り直すのなんてもっての外です。
証明書更新のタイミングとかに片方消していいのかとか、結構困りますので。。


# まとめ

社内アプリじゃなければ、App Store からアップデートのお知らせなどが行われますが、社内アプリだとそうはいかないので、がんばって入れ直してもらいましょうね。社外に公開してもいいようなアプリなら App Store に登録して、公開できないようなら企業の App Store でやるのが筋なので、 App Store に登録しない社内アプリは例外のようなものです。多少の手間は覚悟しましょう。覚悟してください。

最終的に言いたいことは、

「Distribution プロファイルを作成して1年経つ前に、更新、アプリ入れ直しを忘れないようにしましょう。証明書の有効期限が切れそうになってたら気をつけて！」

ということです。