Mac App Store 外でのアプリの配布
いくつかのケースでは、Mac App Store の外でアプリを配布したいかもしれません。そのアプリが、Mac App Store を通じて配布されないので、アップルに特定された、開発者と言う事をユーザーに保証するために開発者の ID 証明書を使用して下さい。
Mac ユーザーはゲートキーパー(Gatekeeper)、すなわちユーザーに Mac App Store で識別された開発者からのみソフトウェアをインストールする機能をユーザーに提供するセキュリティ機能をオンにするオプションがあります。アプリが Apple によって発行された開発者の ID 証明書で署名されていない場合は、ゲートキーパーが有効になっていれば、それは Mac 上で起動しません。この状況を回避するには、開発者の ID 証明書を使用して、アプリとインストーラパッケージに署名して下さい。また、Mac App Store の外でアプリを配布する前に、ゲートキーパーが有効になった Mac を使用して、エンドユーザーの操作性を完全にテストして下さい。
この章では、Mac App Store の外で、配布のための開発者 ID で署名されたアプリを作成し、テストするための Xcode の手順について説明します。
開発者 IDの署名付きアプリとインストーラパッケージの作成
開発者 ID で署名されたアプリやインストーラパッケージを作成するには、多段階プロセスを踏みます。まず、Mac App Store の外でアプリを配布する予定として Xcode を設定し、その後開発者 ID 証明書を作成してください。開発者 ID 証明書には2種類あります:開発者 ID アプリが、アプリに署名するために使用される場合と、開発者 ID インストーラがインストーラパッケージに署名するために使用される場合です。Xcode を使用して、開発者 ID アプリ証明書を使用してアプリのアーカイブをエクスポートし、署名します。また、開発者 ID インストーラ証明書を使用してインストーラパッケージに署名するためのコマンドラインユーティリティを使用することもできます。
重要: Xcode に Apple ID アカウントを追加 で説明したように、作業を開始する前に、Apple 開発者プログラムに登録して下さい。Apple 開発者プログラムに属するチームエージェントだけが、開発者 ID 証明書を作成し、それらを使用して、アプリやインストーラパッケージに署名する事ができます。
開発者 ID にコード署名 ID の設定
最初に、開発者 ID への[一般(General)] ペインでコード署名 ID を設定します。
開発者 ID に署名 ID を設定するには
- プロジェクトナビゲータで、ターゲットを選択してプロジェクトエディタを表示します。
- [一般(General)] をクリックし、必要に応じて ID の隣にある開閉用三角ボタンをクリックし、設定を明らかにします。
- あなたのバンドル ID が唯一のものであることを確認します。
- [署名(Signing)] の下で、署名 ID として"開発者 ID または Apple ID" を選択します。
- 必要であれば、チームを選択するか、チームのポップアップメニューから"アカウントを追加" を選択します。
Mac App Store の外で配布する場合は、幾つかのアプリサービスを使用できません。機能の追加 で説明したように、[機能(Capabilities)] ペインで機能を有効にした場合、[署名(Signing)] のラジオボタンは、[Mac App Store] に戻ります。Xcodeの にあなたの Apple ID を追加して、Apple 開発者プログラムに参加するには、アカウントの管理 をお読みください。
開発者 ID 証明書の作成
Mac App Store の外でアプリを配布するために、テキスト「Developer ID」で始まる署名証明書を使用して下さい。具体的には、署名 ID の作成 で説明したように、開発者 ID 証明書を作成するためアカウントの環境設定を使用して下さい。アカウントの環境設定では、開発者 ID アプリケーションまたは開発者 ID インストーラの署名 ID の隣の[作成(Create)] をクリックします。あなたが開発者 ID 証明書を持っていて、秘密鍵がなくなった場合は、開発者 ID 証明書の追加作成 で説明したように、別の開発者 ID 証明書を作成して下さい。これらの証明書を使用するには、これらの証明書を使用する Xcode があなたのキーチェーンにインストールする開発者 ID 認証局の中間証明書が必要です。この中間証明書がない場合は、それを復元するために、なくなった中間証明権限をインストール をお読みください。
開発者プロファイルをエクスポート で説明したように、開発者 ID 署名 ID は、それらを作成した後にすぐにバックアップする必要があります。
注意: チームのエージェントだけが開発者 ID 証明書を作成できます。個人の開発者の場合、あなたはチームのエージェントであり、これらの証明書を作成することができます。開発者 ID 証明書を破棄したい場合は、product-security@apple.com にお問い合わせください。
アーカイブの作成
アーカイブを作成する前に、ビルドし、それがあなたの配布したいバージョンであることを確認するために、アプリを何回も実行します。
アーカイブを作成するには
- Xcode のプロジェクトエディタで、プロジェクトを選択します。
- [製品(Product)] > [アーカイブ(Archive)] を選択してください。
アーカイブオーガナイザが表示され、新しいアーカイブが表示されます。
開発者 ID 署名のアプリの検証
アーカイブを作成した後すぐに、それを検証し、続行する前に、すべての検証エラーを修正して下さい。
開発者 ID 署名のアーカイブを検証するには
- アーカイブオーガナイザで、アーカイブを選択し、[検証(Validate)] ボタンをクリックします。
- 表示されるダイアログで、検証方法として"開発者 ID 署名のアプリケーションの検証" を選択し、[次へ(Next)] をクリックします。
- 表示されるダイアログで、ポップアップメニューからチームを選択し、[選択(Choose)] をクリックします。
- 署名 ID および資格を確認し、[検証(Validate)] をクリックします。
- 確認検証の問題が見つかれば、[完了(Done)] をクリックします。
開発者 ID 署名のアプリのエクスポート
Mac App Store の外で配布するためにアプリをエクスポートするには、アーカイブ・オーガナイザーを使用して下さい。
開発者 ID 署名のアプリを作成するには
- アーカイブ・オーガナイザで、アーカイブを選択し、[エクスポート(Export)] をクリックします。
- 配布方法の選択肢を提供するダイアログが現れ、"開発者 ID 署名のアプリケーションをエクスポート" を選択し、[次へ(Next)] をクリックします。
- 表示されるダイアログで、ポップアップメニューからチームを選択し、[選択(Choose)] をクリックします。
- 表示されるダイアログで、署名 ID および資格を確認し、[エクスポート(Export)] をクリックします。
あなたが個人の開発者なら、あなたの名前がポップアップメニューに表示されます。それ以外の場合は、あなたの組織名がポップアップメニューに表示されます。
Finder はエクスポートされたファイルを表示します。
インストーラパッケージに署名
インストーラパッケージの一部として Mac App Store の外でアプリを配布したい時は、通常どおりパッケージを作成して下さい。productsign(1) コマンドラインユーティリティを使用して開発者 ID インストーラ証明書でパッケージにコード署名します。spctl(8) コマンドラインユーティリティを使用して、あなたのインストーラパッケージをテストし、あなたのパッケージのファイル名で MyPackageName.pkg で置き換えるには:
spctl -a -v --type install MyPackageName.pkg
警告:開発者 ID インストーラ証明書を使用してインストーラパッケージに署名している事を確認してください。productsign(1) コマンドラインユーティリティを使用すると、開発者 ID アプリケーション証明書を使用してインストーラパッケージに署名できます。このアプローチは機能するように見えるかもしれませんが、結果として、インストーラのアーカイブは目的先 Mac 上で失敗します。
開発プロセスが、コマンドラインからのコード署名を含んでいる場合は、コード署名ガイド をお読み下さい。
手順の確認
アプリを配布する前に、ゲートキーパーを有効または無効にしてアプリを起動することで、エンドユーザーの操作性をテストして下さい。システム環境設定を使用して門ゲートキーパーを有効または無効にできます。検証し、ゲートキーパーをテストするためにも spctl(8) コマンドラインユーティリティを使用してください。エンドユーザの操作性をシミュレートするには、アプリを隔離し、ゲートキーパーを有効にして、再度テストする必要があります。
ゲートキーパーの有効化と無効化
システム環境設定で[セキュリティとプライバシー] の設定を使用して、ゲートキーパーを有効化・無効化できます。ゲートキーパーをオフにし、spctl(8) コマンドラインユーティリティを使用して、ゲートキーパーの状態を確認できます。
セキュリティとプライバシーの設定を使用してゲートキーパーを有効または無効にするには
- Finder で、[システム環境設定] を起動し、[セキュリティとプライバシー] を選択します。
- ロックされていた場合は、ロックボタンをクリックし、管理者パスワードを入力します。
- ゲートキーパーを使用可能にするには、「Mac App Store と確認済みの開発元からのアプリケーションを許可」を選択します。
- ゲートキーパーを無効にするには、「Mac App Store からのアプリケーションのみを許可」または「すべてのアプリケーションを許可」を選択し、表示されるダイアログで、選択を確認します。
spctl コマンドを使用してゲートキーパーを無効にするには
- ターミナルで、次のコマンドを入力します。
- Return キーを押します。
- プロンプトが表示されたら、管理者パスワードを入力します。
ゲートキーパーが有効になっていることを spctl コマンドを使用して確認するには
- ターミナルで、次のコマンドを入力します。
- Return キーを押します。
ゲートキーパーが有効になっている場合は、このコマンドの出力は次のとおりです。
ゲートキーパーが無効になっている場合は、このコマンドの出力は次のとおりです。
ゲートキーパーの動作のテスト
開発者 ID 証明書を使用してアプリに署名した後、それが正しく署名されたかどうかをテストできますし、ゲートキーパーが有効な場合には、アプリの起動動作をシミュレートできます。ゲートキーパーが有効な Mac では、アプリの隔離されたコピーは、それが開発者 ID により署名されている場合にのみ起動します。(この 基礎知識の記事 に記載されている隔離をご覧ください。) また、署名した開発者 ID でないアプリのゲートキーパーの動作をテストすることもできます。
開発者 ID で署名されたアプリのテスト
アプリが開発者 ID 証明書を使用して、正しく署名されているかどうかをテストする spctl(8) コマンドラインユーティリティを使用できます。
開発者 ID で署名されたアプリをテストするには
- システム環境設定の[セキュリティとプライバシー] の設定で「Mac App Store と確認済みの開発元からのアプリケーションを許可」を選択して、テストする Mac でゲートキーパーを有効にします。
- あなたのアプリへのパスで TrackMix.app を置き換え、Terminal で以下のコマンドを入力します。
- Return キーを押します。
アプリが正しく署名されている場合は、このコマンドの出力は次のとおりです。
./TrackMix.app: accepted source=Developer ID
起動動作をテスト
開発者 ID で署名されたアプリを徹底的にテストし、開発に使用されていない Mac でアプリの起動をシミュレートします。
- ゲートキーパーの有効化と無効化 で説明したように、テスト用の Mac 上でゲートキーパーを有効にします。
- 開発者 ID で署名されたアプリのコピーを隔離します。以下のいずれかの方法でこれを行うことができます。
- あなた自身にあなたの開発者 ID で署名されたアプリを電子メールで送り、メールでダウンロードしたこのコピーを使用します。
- 独自のローカルまたはリモートサーバ上で開発者 ID で署名されたアプリをホストし、Safari がダウンロードしたそのコピーを使用します。
これでゲートキーパーの動作をテストする準備が整いました。
開発者 ID で署名されたアプリでゲートキーパーの動作をテストするには
- Finder で、あなたの開発者 ID で署名されたアプリの隔離されたコピーを検索し、そのアイコンをダブルクリックします。
Mac は、確かにこのアプリを開くかどうかを尋ねる警告を表示します。
この警告は、門番が有効で隔離されたアプリを開く許可を与え、開発者 ID アプリが正しくビルドされた事の保証を与えます。
重要: 警告がこの時点では表示されない場合、それはアプリの隔離されていないコピーを開いていることが考えられます。
開発者 ID で署名されていないアプリをブロックするための門番の動作をテストするには
- ゲートキーパーの有効化と無効化 で説明したように、テスト用 Mac 上でゲートキーパーを有効にします。
- 開発用 ID で署名されていないアプリのコピーを隔離します。
- 自分自身に、アプリを電子メールで送り、Mail.app でダウンロードした、そのコピーを使用します。
- 独自のローカルまたはリモートサーバ上で開発者 ID で署名されたアプリをホストし、Safari でダウンロードした、そのコピーを使用します。
- Finder で、あなたのものでない開発者 ID で署名されたアプリの隔離されたコピーを検索し、そのアイコンをダブルクリックします。
前と同じように、以下のいずれかの方法で、アプリのこのコピーに隔離を呼び掛けることができます。
Mac は警告を表示し、そのアプリを開くのをブロックします。この警告の方法で、ゲートキーパーは正体不明の開発者からのアプリを初めて開くのを防止することによって Mac を保護します。以前にユーザーが開いたアプリはもはや隔離されず、ゲートキーパーはそれらが起動するのを防ぎません。
総括
この章では、Mac App Store の外であなたの Mac のアプリを配布する方法を学び、ユーザーがアプリを起動するのをブロックしないようにする方法を学びました。
前の章
次の章