Macに書き出す|UnityとGodotの署名と公証
Mac App Store の外で配るときは、Developer ID の証明書で署名してから、Apple の公証を受ける必要があります。Unity は署名(codesign)・圧縮(ditto)・公証(notarytool)・staple(stapler)の順にコマンドで進め、Godot は書き出しのオプションで Xcode codesign と Xcode notarytool(Linux と Windows からは rcodesign)を選びます。
このページの目次
Mac 向けの書き出しの形
Unity 6.0 と Godot の書き出しの形には、たとえば次のものがあります。
Mac 向けの書き出しの形
| 項目 | 内容 |
|---|---|
| Unity の Architecture と Xcode プロジェクト | Intel 64-bit・Apple Silicon・Intel 64-bit + Apple Silicon から選びます。選ぶ欄は、Build Profiles の画面の macOS の Platform Settings の節にあります。この欄は Build And Run のときにだけ当たります。Intel 64-bit + Apple Silicon は、Intel のチップと Apple silicon のどちらでも動く macOS のビルドを作ります。個別の構成のビルドより大きいビルドになり、アプリの大きさに響きます。Rosetta は、Intel(x64)のアプリを Apple silicon で動かす変換の層で、Apple が非推奨にしているところです。Create Xcode Project を有効にすると、最終的なアプリのバンドルを Xcode で作るための Xcode プロジェクトを作ります。Xcode には、コード署名と Mac App Store へのアップロードの機能が組み込まれています。 |
| Godot の書き出されるもの | 公式の書き出しテンプレートで書き出した macOS のアプリは、1つの "Universal 2" バイナリの .app バンドルになります。.app バンドルは、実行ファイル・ライブラリ・プロジェクトの全ファイルを入れる、決まった構造のフォルダです。Universal バイナリは、Intel x86_64 と ARM64(Apple Silicon)の両方に対応します。.app バンドルは、そのまま、ZIP アーカイブ、DMG ディスクイメージのいずれかにできます。DMG は、macOS から書き出すときだけ対応しています。 |
署名と公証の前に要るもの
署名と公証の前に要るものには、たとえば次のものがあります。
署名と公証の前に要るもの
| 項目 | 内容 |
|---|---|
| Apple Developer Program | 年間メンバーシップは 99 ドルです。日本から見ると別の通貨で表示されることがあり、額は表示された地域で決まります。Godot では、署名と公証を受けて Mac App Store の外で配るときは、アプリの作り手が Apple Developer Program に加入し、書き出しのときに署名と公証のオプションを設定します。 |
| Developer ID の証明書 | Developer ID Application は Mac のアプリに署名する証明書で、Developer ID Installer は、署名したアプリを入れた Mac のインストーラパッケージに署名する証明書です。どちらも、開発者アカウントか Xcode で、それぞれ5つまで作れます。作るには Account Holder の役割が要ります。クラウド管理の証明書は、クラウド管理の Developer ID 証明書へのアクセスの役割を持つ admin も使えます。 |
| バンドル ID | Unity では、Edit > Project Settings > Player の Other Settings を開き、Identification の Bundle Identifier が、アプリの識別子です。ビルドしたアプリの Info.plist では、CFBundleIdentifier のキーが識別子です。Godot では、書き出しのオプションの Application の節に、有効で、ほかと重ならない Bundle identifier を設定します。使える字は英数字(A-Z、a-z、0-9)・ハイフン(-)・ピリオド(.)だけで、大文字と小文字は区別されません。 |
| Unity で Xcode のコマンドラインツールを使って公証するとき | Apple ID、macOS 10.15 Catalina 以降が動く Apple の機器、Xcode 11 以降(必要なコマンドラインツールが入ります)、Apple Developer Program のメンバーシップが要ります。 |
Unity で署名と公証を受ける手順
File > Build Profiles で Build Profiles の画面を開き、Platforms の欄から macOS を選ぶか、macOS 用のビルドプロファイルを作ります。Platform Settings の節で、Architecture に作りたい構成を選びます。Xcode プロジェクトを作りたいときは、Create Xcode Project を有効にします。Switch Profile を選んで新しいビルドプロファイルを有効にし、Build をクリックします。
Apple Developer のアカウントで、Developer ID の証明書を作ります。Certificates, Identifiers & Profiles の Certificates で追加ボタン(+)を押し、Software の下の Developer ID を選んで Continue を押します。案内に従って秘密鍵と Certificate Signing Request(拡張子が .certSigningRequest のファイル)を作り、そのファイルを選んで Continue を押し、Download で .cer のファイルをダウンロードします。ダウンロードした証明書をクリックしてキーチェーンに追加すると、キーチェーンでは Developer ID Application : XXX (YYY) の形の名前で表示されます。アプリの識別子(Bundle Identifier)も Apple に登録します。Apple Developer のアカウントにサインインし、Certificates, IDs & Profiles の Identifiers で、バンドル ID を入力します。
ビルドしたアプリと同じ場所に、アプリと同じ名前で、拡張子が .entitlements のファイルを作ります。たとえば、アプリの名前が MyProject なら、MyProject.entitlements です。テキストエディタで開き、次の内容を貼ります。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.security.cs.disable-library-validation</key> <true/> <key>com.apple.security.cs.disable-executable-page-protection</key> <true/> </dict> </plist>この2つは、macOS のアプリが Hardened Runtime を持つのに要る、最小の entitlements です。アプリがほかの entitlements を要するときは、この一覧に足します。
Terminal を開いてアプリのあるフォルダに移動し、読み取りの権限を確かめるために、application_name.app をビルドしたアプリの名前にして、1つ目のコマンドを実行します。そのあと、署名のコマンドを実行します。application_name.entitlements は entitlements のファイルの名前、Developer ID Application : XXX (YYY) は署名の identity です。署名のコマンドは、アプリのバンドルのフォルダを順に見て、すべてのファイルに署名し、安全なタイムスタンプを付け、決めた entitlements を署名に埋め込みます。
chmod -R a+xr "application_name.app" codesign --deep --force --verify --verbose --timestamp --options runtime --entitlements "application_name.entitlements" --sign "Developer ID Application : XXX (YYY)" "application_name.app"公証のために、アプリを圧縮します。圧縮したファイルは、アプリと同じフォルダに出力されます。
ditto -c -k --sequesterRsrc --keepParent "application_name.app" "application_name.zip"公証には、特定の形式の固有のパスワードが要ります。アプリ用パスワードを作ります。作ったパスワードの形式は xxxx-xxxx-xxxx-xxxx です。Xcode 13 以降なら、Apple の notarytool でアップロードして公証を受けます。Apple は 2023年11月1日から、公証での altool の使用を非推奨にしています。Create Xcode Project で作った Xcode プロジェクトで公証する方法もあります。
公証のあとに staple すると、遊ぶ人の機器がオンラインでなくても、署名があって悪質な内容を含まないことを検証できます。staple しないと、この検証はオンラインのときにだけ行えます。アプリのあるフォルダで、次のコマンドを実行します。
xcrun stapler staple "ApplicationName.app"
Godot で署名と公証を受ける手順
- Editor > Manage Export Templates で、Godot の書き出しテンプレートをダウンロードします。書き出しのオプションの Application の節に、Bundle identifier を設定します。
- Apple Developer ID の証明書があって、macOS から書き出すとき:Xcode のコマンドラインツールを入れ、Xcode を少なくとも1回開くか、
sudo xcodebuild -license acceptのコマンドを実行して、使用許諾に同意します。署名のために、Code Signing > Codesign で Xcode codesign を選び、Code Signing > Identity に、有効な Apple ID の証明書の identity(証明書の "Common Name")を設定します。公証のために、Notarization > Notarization で Xcode notarytool を選び、Debugging の entitlement を無効にします。Notarization の節には、有効な Apple ID のログインとアプリ用パスワード、または App Store Connect の API UUID と Key を設定します。Apple ID の Name と Password か、App Store Connect の API UUID と Key のどちらかを設定します。公証の状況はxcrun notarytool historyで確かめ、公証のログはxcrun notarytool log {ID}でダウンロードします。公証が終わったら、書き出したプロジェクトにチケットを staple します。 - Apple Developer ID の証明書があって、Linux か Windows から書き出すとき:rcodesign を入れ、Editor Settings > Export > macOS > rcodesign に、rcodesign のパスを設定します。署名のために、Code Signing > Codesign で rcodesign を選び、Code Signing の節に、有効な Apple ID の PKCS #12 の証明書のファイルとパスワードを設定します。公証のために、Notarization > Notarization で rcodesign を選び、Debugging の entitlement を無効にして、Notarization の節に、有効な App Store Connect の API UUID と Key を設定します。公証の状況は
rcodesign notary-logで確かめます。公証が終わったら、rcodesign stapleのコマンドで、書き出したプロジェクトにチケットを staple します。 - Apple Developer ID の証明書が無いとき:Code Signing > Codesign で Built-in (ad-hoc only) を選び、Notarization > Notarization で Disabled を選びます。Godot は ad-hoc 署名を使い、遊ぶ人の側では、書き出したアプリを開きやすくなります。
遊ぶ人の Mac で見える画面と対処
署名と公証の状態によって、遊ぶ人の Mac で初めて開くときの画面と、開くための対処は変わります。たとえば次の状態があります。
署名と公証の状態ごとの、遊ぶ人の Mac の画面と対処
| 状態 | 初めて開くときの画面 | 開くための対処 |
|---|---|---|
| 署名と公証があり、App Store の外で配る(DMG か ZIP のアーカイブ) | ダイアログが出ます。 | Open をクリックして起動します。App Store のアプリだけを許す設定の Mac では、警告のダイアログが出ます。System Preferences を開き、Security & Privacy をクリックし、General で設定のロックを解除して、App Store and identified developers を選びます。 |
| 署名はあるが公証が無い(自己署名の証明書、または ad-hoc 署名。ad-hoc 署名は、書き出したプロジェクトでの Godot の既定の動き) | ダイアログが出ます。 | Gatekeeper を一時的に無視して開きます。System Preferences の Security & Privacy の General で Open Anyway をクリックするか、Finder でアプリのアイコンを右クリック(Control-クリック)して、メニューから Open を選び、確認のダイアログで Open をクリックします。パスワードを求められたら入力します。ほかに、Terminal で `sudo spctl --master-disable` を実行すると、Anywhere の選択肢が使えるようになる方法があります。この方法は、好きなソフトウェアをどれでも動かせるようになる代わりに、コンピュータの安全性を下げます。Gatekeeper は、macOS のアップデートで再び有効になります。 |
| 署名が無く、実行ファイルは linker-signed(公式の書き出しテンプレートで作ったが、署名していない) | ダイアログが出ます。 | quarantine の拡張ファイル属性を、手で取り除きます。Terminal.app を開き(Cmd + Space を押して Terminal と入力します)、対象のアプリのあるフォルダに移動します。たとえば Downloads にあるなら `cd ~/Downloads/` です。そのあと 「`xattr -dr com.apple.quarantine "Unsigned Game.app"`」 を実行します。引用符と .app の拡張子も含めます。 |
| アプリも実行ファイルも署名が無い(Apple Silicon の Mac だけの話。OSXCross でコンパイルしたカスタムの書き出しテンプレートで作り、まったく署名していない) | ダイアログが出ます。 | 自分で ad-hoc 署名をします。App Store から Xcode を入れ、起動して、コマンドラインツールのインストールを確認します。Terminal.app を開いて対象のアプリのあるフォルダに移動し、「`xattr -dr com.apple.quarantine "Unsigned Game.app"`」 と 「`codesign -s - --force --deep "Unsigned Game.app"`」 を実行します。どちらも、引用符と .app の拡張子を含めます。 |
公証を受けていない未署名のソフトウェアを動かすと、Mac に害が及ぶ、またはプライバシーを侵害されるおそれがあります。開きたいアプリが信頼できる入手先のもので、改ざんされていないと確かなときは、Mac のセキュリティ設定を一時的に無視して開けます。アプリを開こうとしたあとで、システム設定の「プライバシーとセキュリティ」で下へスクロールし、「このまま開く」のボタンをクリックします。警告が再び出たら「開く」をクリックでき、そのアプリはセキュリティ設定の例外として保存されるため、その後はダブルクリックで開けます。
ダウンロードフォルダから実行したときや、まだ quarantine のままのときは、Gatekeeper がパスのランダム化を行います。アプリが頼っている、アプリからの相対パスでのアクセスが壊れます。この問題は、アプリを /Applications のフォルダに移すと解決します。
操作の流れを図で見る
Unity と Godot の操作の順を、それぞれ1本の流れにしました。右端の「遊ぶ人の Mac」は、どちらも同じです。
Unity の署名と公証の流れ
Godot の署名と公証の流れ
失敗を避ける注意
Windows で書き出した .app は、ファイルシステムの制限で実行権限(executable flag)が付かず、macOS で動きません。ZIP で書き出した場合は、この問題の対象外です。Windows で書き出した .app を macOS で動かすには、.app を macOS か Linux の機器に移し、chmod +x {executable_name} のコマンドで実行権限を付けます。.app バンドルが有効であるには、Contents/MacOS/ の主な実行ファイルと、あれば Contents/Helpers/ の補助の実行ファイルに、実行権限が要ります。Unity も、Windows で macOS のアプリをビルドするときは、macOS で開く前にバイナリの executable flag を設定する必要があります。
Mac App Store で配るときは、公証は要りません。Mac App Store のアップロードに、公証と似た内容の検証が含まれているためです。Godot では、App Store で配るには App Sandbox を有効にする必要があります。サンドボックス化したアプリは、ファイルシステムのほとんどにアクセスできず、独自のファイルダイアログを使えず、.app バンドルの外の実行ファイルを OS.execute と OS.create_process で実行できません。Apple Developer Program の登録の流れは、スマホ向けストアに出す手順のページにあります。
Godot の Debugging の entitlement は、書き出したアプリでネイティブのデバッガ(GDB、LLDB)を使うために、一時的に有効にできる項目です。製品の書き出しでは無効にしておく項目です。公証するには、無効にしておく必要があります。
Godot の Mono 版の書き出しでは、Allow JIT Code Execution・Allow Unsigned Executable Memory・Allow DYLD Environment Variables の entitlements が常に有効で、書き出しのオプションには表示されません。
動的または自己書き換えのネイティブコードを持つアドオンを使うときは、アドオンの説明に従って、Allow JIT Code Execution などを有効にします。Unity でも、macOS 特有の動作をするプラグインを使うときは、動作を有効にする entitlements を足す必要が出ることがあります。
Godot でカスタムの entitlements のファイルを選んだときは、ほかのすべての entitlements の設定が無視されます。
Unity の codesign の --deep の指定は、署名に問題を起こすことがあります。署名するすべてのコードに、同じ署名のオプションと entitlements を当てるためです。また、見つけたコードのファイルにしか署名せず、システムがデータを置く場所にコードのファイルがあると、署名しません。
次に読む
Windows 向けの書き出しの操作は、Windows 向けの書き出しのページにあります。
情報源
- Build a macOS application(Unity ドキュメント)https://docs.unity3d.com/6000.0/Documentation/Manual/macos-building.html確認日 2026-10-24
- macOS build settings reference(Unity ドキュメント)https://docs.unity3d.com/6000.0/Documentation/Manual/macosbuildsettings.html確認日 2026-10-24
- Code sign your application(Unity ドキュメント)https://docs.unity3d.com/6000.0/Documentation/Manual/macoscodesigning.html確認日 2026-10-24
- Notarize with Xcode and command-line tools(Unity ドキュメント)https://docs.unity3d.com/6000.0/Documentation/Manual/macosnotarizationxcode.html確認日 2026-10-24
- Code sign and notarize your macOS application(Unity ドキュメント)https://docs.unity3d.com/6000.0/Documentation/Manual/macos-building-notarization.html確認日 2026-10-24
- Exporting for macOS(Godot ドキュメント)https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_macos.html確認日 2026-10-24
- Running Godot apps on macOS(Godot ドキュメント)https://docs.godotengine.org/en/stable/tutorials/export/running_on_macos.html確認日 2026-10-24
- Macでアプリを安全に開く(Apple サポート)https://support.apple.com/ja-jp/102445確認日 2026-10-24
- Developer ID certificates(Apple Developer)https://developer.apple.com/help/account/certificates/create-developer-id-certificates確認日 2026-10-24
- Apple Developer Program(Apple Developer)https://developer.apple.com/jp/programs/確認日 2026-10-24