iOS/Androidアプリをビルドする際の署名の概念をサクッと理解する

iOSAndroidのアプリをビルドする際につまづきやすいのが「署名」です。
これは概念がわかりづらいのに加えて、手順が複雑であるためです。
概念がわかってしまえば手順も理解しやすいので、この記事では署名の概念を簡単にまとめます。

そもそも署名とは?

署名とはその名の通り、自分が作ったアプリであるとサインして証明することです。

たとえばいまインストール済みのアプリをアップデートするとして、
アップデート用のバイナリを作った開発者がアプリの開発者と同一であることが署名により証明されれば、
アップデート用のバイナリが他人に悪意ある改ざんをされていないことが保証されるので安全になります。

もっと詳しく知りたい方は次の記事が詳しいです。

wm3.hatenablog.com

署名には証明書が必要

さて前節の通り、署名とは安全にアップデートを行うためにするサインです。
が、このサイン自体が他人によって偽造されてしまっては元も子もありません。
例えばクレジットカードの手書きサインのようなものだけでは簡単に偽造されてしまいます。

そこで、「証明書」と呼ばれる仕組みが登場します。
具体的な仕組みはiOSAndroidで異なりますが、証明書とはつまりその開発者しか知り得ない情報が含まれているファイルです。
証明書を使って署名を行うことで自分がアプリの開発者であることが証明できます。

証明書と署名については下記のサイトが入門としてわかりやすいです。

https://wa3.i-3-i.info/word16536.html

Androidの署名

Androidの署名にはエイリアスという名前の証明書が必要です。
エイリアスはキーストアという名前の、キーストアの保管庫の役割をするファイルに保存されます。
そのため実際に署名に必要なのはキーストア、キーストアのパスワード、およびエイリアスのパスワードです。

この辺りは次のサイトがわかりやすいです。

blog.aroundit.net

ちなみに開発用に直接アプリを自分の端末にインストールするだけであればパスワードなどの設定は不要で、
デバッグの証明書で署名をすることができます(署名無しでビルド、とか言われたりもします)。

iOSの署名

iOSも証明書があれば署名できる点ではAndroidと同じです。

ただしiOSでは証明書を作る際にApple認証局を通す必要があります。

またビルドの際には証明書が含まれたプロビジョニングプロファイルというファイルが必要です。
そしてこれには証明書の他に、インストールを許可する端末の情報なども含まれます。

このようなことから、iOSの署名付きビルドはAndroidよりも複雑になっています。

この辺りは次の記事がわかりやすいです。

qiita.com

ちなみにこちらもAndroidと同様、デバッグ用に自分の端末にインストールするだけであれば、
プロビジョニングプロファイルの作成などをせずにビルドできます。

参考

wm3.hatenablog.com

https://wa3.i-3-i.info/word16536.html

blog.aroundit.net

qiita.com