3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AppStoreを経由せずにMacアプリを配布する手順

3
Last updated at Posted at 2026-04-30

はじめに

社内ツールとしてmacOS上で動作するアプリを開発する機会がありました。
最初はビルドしたappファイルを配布するだけで動くと思っていたのですが、起動しないとのこと。
どうやら「Mac App Store以外の場所からダウンロードされるMacソフトウェア」として公証を受けて配布する必要があるそうです。
証明書の作成やビルド後の手順、また自身のデベロッパーアカウントの権限によっても手順が変わってくるので、それをまとめておこうと思います。

やったこと

  1. 証明書の作成とインストール
  2. プロビジョニングプロファイルの作成とインストール
  3. アプリのビルド
  4. ビルドしたバイナリの公証
  5. アプリの配布

1. 証明書の作成とインストール

証明書の作成は基本的には通常の方法と同じですが、Software の選択で以下どちらかを選択する必要があります。

  • Developer ID Application:Macアプリに署名するための証明書
  • Developer ID Installer:Macインストーラパッケージに署名するための証明書

これらの作成には Account Holder 権限を持っている必要があります。
あなたが Account Holder 権限を持っていない場合は、権限保持者に作成を依頼し、キーチェーンからエクスポートしてもらったファイルを自身のMacにインストールする必要があります。

2. プロビジョニングプロファイルの作成とインストール

こちらは通常の作成方法と同じです。
対応する証明書は1で作成した証明書を選択します。

3. アプリのビルド(Xcodeではアーカイブ)

まず、Xcode上で 1, 2 で作成した証明書とプロビジョニングプロファイルを設定します。
ビルド自体は通常のビルド方法と同じですが、Xcode上で実施するかコマンドで実施するか、またデベロッパーアカウントの権限によって後の手順が変わってきます。

4. ビルドしたバイナリの公証

あなたが Admin 以上の権限を持っていれば Xcode 上で完結させることができますが、そうでない場合は notarytool というコマンドラインツールを使用して公証を受けることになります。

Xcode 上で公証を受ける場合

コチラに公式ドキュメントがあるので、この手順通りに実施すれば良いはず。
(筆者は権限が無かったので試せていません)
Notarize your app automatically as part of the distribution process - Notarizing macOS software before distribution | Apple Developer Documentation(英語)

コマンドラインツールを使用する場合

事前準備

  1. コマンド実行時に指定するアプリ用パスワードを作成する
    1. https://account.apple.com/sign-in にアクセスしてサインイン
    2. アプリ用パスワードをクリック
      アプリ用パスワード.png
    3. アプリ用パスワードを生成
    4. 生成されたパスワードをメモしておく
       
  2. ビルド(アーカイブ)したappファイルをzip圧縮しておく
    • Xcode上でアーカイブした場合は以下の手順で保存したappファイルを圧縮します
      1. Organizer画面でアーカイブされたものを選択し、Distribute Appをクリック
        1_Distribute_App.png
      2. Customを選択しNextをクリック
        2_Custom_Next.png
      3. Copy Appを選択しNextをクリック
        3_CopyApp_Next.png
      4. 保存先を選択しExportをクリック

公証コマンド実行

  1. ターミナル上で下記コマンドを実行

    xcrun notarytool submit PATH_TO_ZIP --apple-id "YOUR_EMAIL" --password "APP_SPECIFIC_PASSWORD" --team-id "YOUR_TEAM_ID" --wait
    

    PATH_TO_ZIP: appファイルを圧縮したzipファイルのパス
    YOUR_EMAIL: あなたの開発者アカウントのメールアドレス
    APP_SPECIFIC_PASSWORD: アプリ用パスワード作成で生成されたパスワード
    YOUR_TEAM_ID: Apple Developer ProgramのチームID
     

  2. 処理状態が表示されるので一番下の status: Accepted が表示されたら完了

    Conducting pre-submission checks for api_test_app.zip and initiating connection to the Apple notary service...
    Submission ID received
      id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    Upload progress: 100.00% (xx.x MB of xx.x MB)
    Successfully uploaded file
      id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      path: /Path/To/Your.zip
    Waiting for processing to complete.
    Current status: Accepted..........
    Processing complete
      id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      status: Accepted
    

5. アプリ配布

  1. zipファイルを任意の方法で配布する
  2. ユーザーはzipファイルを展開し、生成されたappファイルを実行する

おわりに

いかがでしたか?
コマンドラインツールで公証を受ける方法は CI/CD パイプラインに組み込む際にも使えるのではないかと思います。(未確認)
今回は、野良アプリとして公証を受ける方法になかなか辿り着けなかったので、記事にまとめてみました。
この記事があなたの助けになれれば幸いです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?