コンテンツにスキップ
Tauri

macOS アプリケーション・バンドル

「アプリケーション・バンドル」は、macOS で実行されるパッケージ形式です。これは、シンプルなディレクトリで、アプリケーションの実行ファイル、リソース、Info.plist ファイルや、macOS フレームワークといったその他のファイルなど、アプリケーションの正常動作に必要なすべてのものが含まれています。

アプリを「macOS アプリケーション・バンドル」としてパッケージ化するには、Tauri CLI を使用して、Mac コンピューター上で tauri build コマンドを実行します:

npm run tauri build -- --bundles app

「macOS アプリ・バンドル」は、以下の構造を持つディレクトリです:

├── <productName>.app
│ ├── Contents
│ │ ├── Info.plist
│ │ ├── ...additional files from [`tauri.conf.json > bundle > macOS > files`]
│ ├── MacOS
│ │ ├── <app-name> (app executable)
│ ├── Resources
│ │ ├── icon.icns (app icon)
│ │ ├── ...resources from [`tauri.conf.json > bundle > resources`]
│ ├── _CodeSignature (codesign information generated by Apple)
│ ├── Frameworks
│ ├── PlugIns
│ ├── SharedSupport

詳細については、Bundle Structures 公式ドキュメント を参照してください。

「アプリ・バンドル」は Info.plist ファイルによって設定されます。このファイルには、macOS によって読み取られる「設定値」や「アプリ ID」と共に「キーと値」のペアが含まれています。

Tauri は、アプリのバイナリ名、バージョン、バンドル ID、最小システム・バージョンなどの最も重要なプロパティ(属性)を自動的に設定します。

設定ファイルを拡張するには、src-tauri フォルダに Info.plist ファイルを作成し、必要なキー・ペアを追加します:

src-tauri/Info.plist
<?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>NSCameraUsageDescription</key>
<string>Request camera access for WebRTC</string>
<key>NSMicrophoneUsageDescription</key>
<string>Request microphone access for WebRTC</string>
</dict>
</plist>

この Info.plist ファイルは、Tauri CLI によって生成された値とマージされます。アプリケーション・バージョンなどのデフォルト値を上書きする場合は、他の設定値ととの競合や、予期しない動作を引き起こすかもしれませんので、注意してください。

詳細については、Info.plist 公式ドキュメント を参照してください。

Info.plist ファイル自体は、単一の言語のみ(通常は英語)をサポートします。複数の言語をサポートしたい場合は、追加する言語ごとに InfoPlist.strings ファイルを作成できます。各ファイルは、それぞれの言語ごとの lproj ディレクトリ(これはアプリケーション・バンドル内の Resources ディレクトリにあります)に格納されます。

追加したファイルを自動的にバンドルするには、Tauri の「resources(リソース)機能」を利用します。そのためには、プロジェクト内に以下のパターンに従ったファイル構造を作成してください:

├── src-tauri
│ ├── tauri.conf.json
│ ├── infoplist
│ │ ├── de.lproj
│ │ │ ├── InfoPlist.strings
│ │ ├── fr.lproj
│ │ │ ├── InfoPlist.strings

infoplist ディレクトリ名」は、以下の「resources config(リソース設定)」で更新する場合には自由に命名できますが、「lproj ディレクトリ名」のほうは命名規則に従い「言語コード.lproj <lang-code>.lproj」の形、「文字列カタログ・ファイル」は InfoPlist.strings(i と p は大文字)という名前でなければなりません。ほとんどの場合、「言語コード」は BCP 47 に従った二文字のコードである必要があります。

《訳注》

BCP 47 「言語タグの規定」: 「言語コード」(二桁、小文字)の例としては、de(ドイツ語)、fr(フランス語)、ja(日本語)、など; 《参考》 本稿とは別件ですが、同一言語にたいして地域による差がある場合は「地域コード」(二桁、通常大文字)の付記も行なわれます。たとえば、 en-US(英語−米国)、en-GB(英語−英国)、zh-CN(中国語−中国)、など。ISO 639 (言語コード)、ISO 3166-1(国名コード)も参照。

上記の Info.plist の例では、de.lproj > InfoPlist.strings ファイル(ドイツ語対応用)の内容は次のようになります:

de.lproj/InfoPlist.strings
NSCameraUsageDescription = "Kamera Zugriff wird benötigt für WebRTC Funktionalität";
NSMicrophoneUsageDescription = "Mikrofon Zugriff wird benötigt für WebRTC Funktionalität";

最後に、上述の「リソース機能」を使用して、Tauri がこれらのファイルを取得するようにします:

src-tauri/tauri.conf.json
{
"bundle": {
"resources": {
"infoplist/**": "./"
}
}
}

「エンタイトルメント」は、Apple の特別な設定の「キーと値」のペアで、アプリに特定のアクセス権を付与する権利や特権として働きます。たとえば、ユーザーのデフォルト電子メール・クライアントとしての動作させることや App Sandbox 機能の使用することなど、です。

「エンタイトルメント」はアプリケーションの署名時に適用されます。詳しくは コード署名に関するドキュメント をご覧ください。

アプリケーションに必要なエンタイトルメント権限を定義するには、「エンタイトルメント・ファイル」を作成し、それを使用するように Tauri を設定する必要があります。

  1. src-tauri フォルダに Entitlements.plist ファイルを作成し、アプリに必要な「キーと値」のペアを設定します:
src-tauri/Entitlements.plist
<?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.app-sandbox</key>
<true/>
</dict>
</plist>
  1. Entitlements.plist ファイルを使用するように Tauri を設定します:
tauri.conf.json
{
"bundle": {
"macOS": {
"entitlements": "./Entitlements.plist"
}
}
}

詳細については、Entitlements 公式ドキュメント を参照してください。

Tauri アプリケーションは、デフォルトで macOS 10.13 以降をサポートしています。あなたが、これより新しい macOS システムを必要とする API を使用しており、あなたのアプリ・バンドルでそのシステム要件の適用を必須としたい場合は、tauri.conf.json > bundle > macOS > minimumSystemVersion で最小バージョン番号を指定できます:

tauri.conf.json
{
"bundle": {
"macOS": {
"minimumSystemVersion": "12.0"
}
}
}

アプリケーションの実行に追加の macOS フレームワークが必要な場合は、必要となるフレームワークを tauri.conf.json > bundle > macOS > frameworks の設定内にリストします。 この frameworks リストには、「システム・フレームワーク」または「カスタム・フレームワークと dylib ファイル」のどちらかを含めることができます。

tauri.conf.json
{
"bundle": {
"macOS": {
"frameworks": [
"CoreAudio",
"./libs/libmsodbcsql.18.dylib",
"./frameworks/MyApp.framework"
]
}
}
}

tauri.conf.json > bundle > macOS > files の設定を使用して、アプリケーション・バンドルにカスタム・ファイルを追加できます。これにより、tauri.conf.json ファイルを基準として、宛先パスがソースにマッピングされます。 カスタム・ファイルは <Product-name> .app/contents フォルダーに追加されます。

tauri.conf.json
{
"bundle": {
"macOS": {
"files": {
"embedded.provisionprofile": "./profile-name.provisionprofile",
"SharedSupport/docs.md": "./docs/index.md"
}
}
}
}

上記の例では、profile-name.provisionprofile ファイルが <product-name>.app/Contents/embedded.provisionprofile にコピーされ、docs/index.md ファイルが <product-name>.app/Contents/SharedSupport/docs.md にコピーされます。

【※ この日本語版は、「Mar 29, 2025 英語版」に基づいています】


© 2025 Tauri Contributors. CC-BY / MIT