T-CREATOR

Tauri コマンド&CLI チートシート:init/build/dev/sign/notarize 早見表

Tauri コマンド&CLI チートシート:init/build/dev/sign/notarize 早見表

Tauri でアプリケーション開発を始めると、さまざまな CLI コマンドを使う場面に出会います。プロジェクトの初期化から開発、ビルド、署名、公証まで、各フェーズで必要なコマンドを把握しておくことで、開発がスムーズに進められるでしょう。

本記事では、Tauri の主要な CLI コマンド(initbuilddevsignnotarize)に特化して、それぞれの役割とオプション、具体的な使い方を早見表形式で解説します。これから Tauri を使い始める方も、すでに開発中の方も、手元に置いて活用できる実践的なチートシートとしてお役立てください。

コマンド早見表

まずは、Tauri の主要コマンドを一覧で確認しましょう。各コマンドの詳細は後続のセクションで解説します。

#コマンド基本構文用途実行タイミング
1tauri inityarn tauri initプロジェクト初期化プロジェクト開始時
2tauri devyarn tauri dev開発モード起動開発中(常時)
3tauri buildyarn tauri build本番ビルドリリース前
4tauri signyarn tauri signバイナリ署名配布前(アップデート使用時)
5tauri notarizeyarn tauri notarize公証(macOS)配布前(macOS のみ)

主要オプション一覧

各コマンドで頻繁に使用するオプションをまとめました。

tauri init

オプション短縮形説明
--force-f既存ファイルを上書きtauri init -f
--ci-CI モード(対話なし)tauri init --ci
--directory-d作業ディレクトリ指定tauri init -d .​/​my-app
--log-lログレベル指定tauri init --log info

tauri dev

オプション短縮形説明
--release-リリースモードで実行tauri dev --release
--target-tターゲットトリプル指定tauri dev -t x86_64-pc-windows-msvc
--features-fCargo フィーチャー指定tauri dev -f custom-protocol
--config-c設定ファイル指定tauri dev -c tauri.dev.conf.json
--port-pポート番号指定tauri dev -p 3000

tauri build

オプション短縮形説明
--debug-dデバッグモードでビルドtauri build -d
--target-tターゲットトリプル指定tauri build -t aarch64-apple-darwin
--bundles-bバンドル形式指定tauri build -b dmg,app
--features-fCargo フィーチャー指定tauri build -f updater
--config-c設定ファイル指定tauri build -c tauri.prod.conf.json
--ci-CI モードで実行tauri build --ci

tauri sign

オプション短縮形説明
--file-f署名するファイル指定tauri sign -f .​/​bundle​/​app.exe
--private-key-k秘密鍵パス指定tauri sign -k .​/​private.key
--password-p鍵パスワード指定tauri sign -p mypassword

tauri notarize(macOS のみ)

オプション短縮形説明
--apple-id-Apple ID 指定--apple-id your@email.com
--password-App-Specific Password--password ****
--team-id-チーム ID 指定--team-id ABC123
--wait-公証完了まで待機--wait

バンドル形式一覧

プラットフォームごとに利用可能なバンドル形式です。

#プラットフォーム形式説明指定方法
1macOSdmgディスクイメージ--bundles dmg
2macOSappアプリケーションバンドル--bundles app
3WindowsmsiWindows インストーラー--bundles msi
4WindowsnsisNSIS インストーラー--bundles nsis
5LinuxdebDebian パッケージ--bundles deb
6LinuxappimageAppImage--bundles appimage
7LinuxrpmRPM パッケージ--bundles rpm

背景

Tauri CLI の役割

Tauri は Rust をベースとしたデスクトップアプリケーションフレームワークで、Web 技術(HTML、CSS、JavaScript)を使ってクロスプラットフォームなアプリを構築できます。開発の各段階では、専用の CLI コマンドを使ってプロジェクトの作成、ビルド、実行、署名などを行います。

Tauri CLI は以下のような開発フローをサポートしています。

mermaidflowchart LR
  init["プロジェクト初期化<br/>(tauri init)"] --> dev["開発モード<br/>(tauri dev)"]
  dev --> build["本番ビルド<br/>(tauri build)"]
  build --> sign["署名<br/>(tauri sign)"]
  sign --> notarize["公証<br/>(tauri notarize)"]
  notarize --> dist["配布"]

この図は、Tauri プロジェクトの典型的なライフサイクルを示しています。プロジェクトを初期化してから、開発モードで動作確認を行い、本番ビルド後に署名・公証を経て配布可能な状態にするという流れです。

各コマンドが担う役割を理解することで、どのフェーズでどのコマンドを実行すべきかが明確になります。

Tauri CLI のインストール

Tauri CLI を利用するには、事前にインストールが必要です。npm や Yarn を使ってプロジェクトにインストールするのが一般的でしょう。

typescript// Yarn でのインストール例
yarn add -D @tauri-apps/cli

インストール後は、package.jsonscripts に Tauri コマンドを登録しておくと便利です。

json{
  "scripts": {
    "tauri": "tauri",
    "tauri:dev": "tauri dev",
    "tauri:build": "tauri build"
  }
}

これにより、yarn tauri dev のような形で簡潔にコマンドを実行できます。

課題

コマンド選択の複雑さ

Tauri には複数のコマンドがあり、それぞれに多数のオプションやフラグが用意されています。初めて Tauri を使う場合、どのコマンドをどのタイミングで使うべきか、どのオプションが必要かを把握するのは簡単ではありません。

以下のような疑問が出てくるでしょう。

  • プロジェクトの初期化はどうやるのか?
  • 開発中にホットリロードを有効にするには?
  • 本番ビルドで特定のターゲットを指定するには?
  • 署名や公証はどのように行うのか?

これらの疑問を解決するために、各コマンドの役割と主要なオプションを整理したチートシートが役立ちます。

オプションの多様性

Tauri の各コマンドには、多くのオプションやフラグが存在します。例えば、ビルド時にはターゲットプラットフォームを指定したり、デバッグモードを有効にしたり、バンドル形式を選択したりできます。

オプションが多いと柔軟性が高まる一方で、どのオプションを使うべきか判断が難しくなります。特に初心者にとっては、どのオプションが必須でどれが任意なのかを理解するのが課題となるでしょう。

解決策

コマンド別の早見表

各コマンドの役割と主要なオプションを早見表形式で整理することで、必要な情報をすぐに参照できます。以下では、Tauri の主要コマンドを一覧にまとめ、それぞれの使い方を具体的に解説します。

#コマンド役割主な用途
1tauri initプロジェクト初期化既存の Web プロジェクトに Tauri を追加
2tauri dev開発モード起動ホットリロードでの開発・デバッグ
3tauri build本番ビルド配布用バイナリの生成
4tauri signバイナリ署名コード署名の適用
5tauri notarize公証macOS での公証プロセス

この表は、各コマンドの基本的な役割を示しています。次のセクションでは、各コマンドの詳細と具体的なオプションを見ていきましょう。

コマンドの使い分け

開発フローに応じてコマンドを使い分けることが重要です。以下のような使い分けを意識すると良いでしょう。

  • プロジェクト開始時tauri init でプロジェクトを初期化
  • 開発中tauri dev で動作確認とデバッグ
  • リリース前tauri build で本番ビルドを作成
  • 配布前tauri signtauri notarize で署名・公証

このように、各フェーズに適したコマンドを選択することで、効率的に開発を進められます。

具体例

tauri init:プロジェクト初期化

tauri init は、既存の Web プロジェクトに Tauri を追加するためのコマンドです。対話形式でプロジェクトの設定を行い、必要なファイルとディレクトリを生成します。

基本的な使い方

bash# 対話形式でプロジェクトを初期化
yarn tauri init

このコマンドを実行すると、以下のような質問が表示されます。

  • アプリケーション名
  • ウィンドウタイトル
  • Web アセットのパス
  • 開発サーバーの URL
  • ビルドコマンド

これらの質問に答えることで、src-tauri ディレクトリが作成され、Tauri の設定ファイル(tauri.conf.json)や Rust のソースコードが生成されます。

主要なオプション

#オプション説明使用例
1-f, --force既存のファイルを上書きtauri init --force
2-l, --logログレベルを指定tauri init --log info
3-d, --directory作業ディレクトリを指定tauri init -d .​/​my-app
4--ciCI モードで実行(対話なし)tauri init --ci

CI/CD 環境で使用する場合は、--ci オプションを付けることで対話をスキップできます。

プロジェクト構造の確認

初期化後のプロジェクト構造は以下のようになります。

plaintextmy-app/
├── src/              # Web フロントエンド
├── src-tauri/        # Tauri バックエンド
│   ├── src/
│   │   └── main.rs
│   ├── Cargo.toml
│   ├── tauri.conf.json
│   └── icons/
└── package.json

src-tauri ディレクトリには、Rust のソースコードと設定ファイルが含まれています。

tauri dev:開発モード起動

tauri dev は、開発モードでアプリケーションを起動するコマンドです。ホットリロードが有効で、ソースコードの変更を即座に反映できます。

基本的な使い方

bash# 開発モードでアプリを起動
yarn tauri dev

このコマンドを実行すると、Web 開発サーバーが起動し、Tauri ウィンドウが開きます。フロントエンドのコードを変更すると、自動的にリロードされるため、開発効率が向上します。

主要なオプション

#オプション説明使用例
1-r, --runnerカーゴランナーを指定tauri dev --runner cargo
2-t, --targetターゲットトリプルを指定tauri dev --target x86_64-pc-windows-msvc
3-f, --featuresCargo フィーチャーを指定tauri dev --features custom-protocol
4--releaseリリースモードでビルドtauri dev --release
5-c, --config設定ファイルを指定tauri dev --config tauri.dev.conf.json
6-p, --port開発サーバーのポートを指定tauri dev --port 3000

開発時には通常デバッグモードで実行しますが、パフォーマンスを確認したい場合は --release オプションを使用すると良いでしょう。

開発モードのワークフロー

開発モードでは、以下のような流れで作業が進みます。

mermaidflowchart TD
  start["開発モード起動"] --> frontend["フロントエンド<br/>コード編集"]
  frontend --> reload["自動リロード"]
  reload --> check["動作確認"]
  check --> |修正必要| frontend
  check --> |OK| backend["バックエンド<br/>コード編集"]
  backend --> rebuild["再ビルド"]
  rebuild --> check
  check --> |完了| done["開発完了"]

フロントエンドの変更は自動リロードされますが、Rust のバックエンドコードを変更した場合は、再ビルドが必要です。

デバッグとログ

開発モードでは、ブラウザの開発者ツールを使ってデバッグできます。右クリックメニューから「検証」を選択すると、DevTools が開きます。

bash# ログレベルを指定して詳細な情報を表示
yarn tauri dev --log trace

ログレベルを上げることで、Tauri の内部動作を詳しく確認できます。

tauri build:本番ビルド

tauri build は、配布用の本番ビルドを作成するコマンドです。最適化されたバイナリとインストーラーを生成します。

基本的な使い方

bash# 本番ビルドを実行
yarn tauri build

ビルドが完了すると、src-tauri​/​target​/​release ディレクトリに実行可能ファイルが、src-tauri​/​target​/​release​/​bundle ディレクトリにインストーラーが生成されます。

主要なオプション

#オプション説明使用例
1-d, --debugデバッグモードでビルドtauri build --debug
2-t, --targetターゲットトリプルを指定tauri build --target aarch64-apple-darwin
3-f, --featuresCargo フィーチャーを指定tauri build --features updater
4-b, --bundlesバンドル形式を指定tauri build --bundles dmg,app
5-c, --config設定ファイルを指定tauri build --config tauri.prod.conf.json
6--ciCI モードで実行tauri build --ci

バンドル形式を指定することで、必要なインストーラー形式だけを生成できます。

バンドル形式の種類

Tauri は、プラットフォームごとに複数のバンドル形式をサポートしています。

#プラットフォームバンドル形式説明
1macOSdmgディスクイメージ
2macOSappアプリケーションバンドル
3WindowsmsiWindows インストーラー
4WindowsnsisNSIS インストーラー
5LinuxdebDebian パッケージ
6LinuxappimageAppImage
7LinuxrpmRPM パッケージ

必要なバンドル形式は、tauri.conf.jsonbundle.targets で指定できます。

ビルド設定のカスタマイズ

tauri.conf.json を編集することで、ビルド設定を細かくカスタマイズできます。

json{
  "build": {
    "beforeBuildCommand": "yarn build",
    "beforeDevCommand": "yarn dev",
    "devPath": "http://localhost:3000",
    "distDir": "../dist"
  },
  "bundle": {
    "active": true,
    "targets": ["dmg", "app"],
    "identifier": "com.example.app",
    "icon": ["icons/icon.icns", "icons/icon.ico"]
  }
}

この設定ファイルで、ビルドコマンドや開発サーバーの URL、バンドル形式などを指定します。

クロスプラットフォームビルド

Tauri は、クロスプラットフォームビルドをサポートしていますが、いくつかの制約があります。

bash# macOS で Windows 向けにビルド(要クロスコンパイル環境)
yarn tauri build --target x86_64-pc-windows-msvc

# Linux で macOS 向けにビルド(制約あり)
yarn tauri build --target x86_64-apple-darwin

クロスコンパイルには、ターゲットプラットフォームのツールチェーンが必要です。完全なクロスプラットフォームビルドを行うには、CI/CD 環境で各プラットフォームのランナーを使用するのが一般的でしょう。

tauri sign:バイナリ署名

tauri sign は、ビルドされたバイナリに署名を適用するコマンドです。アプリケーションの信頼性を確保し、改ざん検出を可能にします。

基本的な使い方

bash# バイナリに署名を適用
yarn tauri sign

署名には、事前に秘密鍵を生成しておく必要があります。Tauri は、独自の署名スキームを使用しており、アップデート機能と連携して動作します。

署名鍵の生成

署名を行う前に、鍵ペアを生成します。

bash# 署名用の鍵ペアを生成
yarn tauri signer generate

このコマンドを実行すると、秘密鍵と公開鍵が生成されます。秘密鍵は安全に保管し、公開鍵はアプリケーションに埋め込みます。

主要なオプション

#オプション説明使用例
1-f, --file署名するファイルを指定tauri sign --file .​/​bundle​/​app.exe
2-k, --private-key秘密鍵のパスを指定tauri sign --private-key .​/​private.key
3-p, --password鍵のパスワードを指定tauri sign --password mypassword

秘密鍵とパスワードは、環境変数で管理するのが安全です。

署名の検証

署名されたファイルは、公開鍵を使って検証できます。

bash# 署名を検証
yarn tauri signer verify --file ./bundle/app.exe --public-key ./public.key

検証に成功すると、ファイルが改ざんされていないことが確認できます。

アップデート機能との連携

Tauri のアップデート機能を使用する場合、署名は必須です。署名されたバイナリを配布することで、ユーザーは安全にアップデートを受け取れます。

json{
  "updater": {
    "active": true,
    "endpoints": [
      "https://example.com/updates/{{target}}/{{current_version}}"
    ],
    "pubkey": "公開鍵をここに記載"
  }
}

tauri.conf.json に公開鍵を設定することで、アップデート時の署名検証が有効になります。

tauri notarize:公証(macOS)

tauri notarize は、macOS アプリケーションの公証を行うコマンドです。Apple の公証サービスを使用して、アプリケーションがマルウェアでないことを証明します。

基本的な使い方

bash# macOS アプリを公証
yarn tauri notarize

公証には、Apple Developer アカウントと App-Specific Password が必要です。公証プロセスには数分から数時間かかることがあります。

公証の前提条件

macOS アプリを公証するには、以下の準備が必要です。

#要件説明
1Apple Developer アカウント有料の開発者アカウント
2Developer ID 証明書コード署名用の証明書
3App-Specific Password公証用のパスワード
4Hardened Runtimeセキュリティ強化ランタイム

これらの要件を満たしていないと、公証プロセスは失敗します。

コード署名の適用

公証の前に、Developer ID 証明書でコード署名を適用する必要があります。

bash# Developer ID でコード署名
codesign --force --options runtime --deep --sign "Developer ID Application: Your Name (TEAM_ID)" ./path/to/app.app

署名後、アプリケーションのバイナリとフレームワークがすべて署名されていることを確認します。

公証の実行

署名済みのアプリを公証します。

bash# ZIP ファイルを公証
xcrun notarytool submit ./app.zip \
  --apple-id "your@email.com" \
  --password "app-specific-password" \
  --team-id "TEAM_ID" \
  --wait

--wait オプションを付けると、公証が完了するまで待機します。公証に成功すると、チケットが発行されます。

チケットのステープル

公証後、チケットをアプリにステープル(添付)します。

bash# チケットをステープル
xcrun stapler staple ./path/to/app.app

ステープルすることで、インターネット接続なしでも公証状態を確認できるようになります。

主要なオプション

#オプション説明使用例
1--apple-idApple ID を指定--apple-id your@email.com
2--passwordApp-Specific Password--password ****
3--team-idチーム ID を指定--team-id ABC123
4--wait公証完了まで待機--wait

認証情報は、環境変数やキーチェーンで管理すると安全です。

CI/CD での自動化

公証プロセスは、CI/CD パイプラインで自動化できます。

yaml# GitHub Actions の例
- name: Notarize macOS app
  env:
    APPLE_ID: ${{ secrets.APPLE_ID }}
    APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
    APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
  run: |
    yarn tauri build
    xcrun notarytool submit ./bundle/dmg/app.dmg \
      --apple-id "$APPLE_ID" \
      --password "$APPLE_PASSWORD" \
      --team-id "$APPLE_TEAM_ID" \
      --wait
    xcrun stapler staple ./bundle/app.app

シークレット変数に認証情報を保存することで、安全に自動化できます。

実践的な活用パターン

開発から配布までのワークフロー

実際の開発では、これらのコマンドを組み合わせて使用します。典型的なワークフローを見てみましょう。

mermaidflowchart TD
  start["プロジェクト開始"] --> init["tauri init<br/>プロジェクト初期化"]
  init --> develop["開発フェーズ"]
  develop --> devCmd["tauri dev<br/>開発モードで起動"]
  devCmd --> coding["コーディング<br/>&デバッグ"]
  coding --> |継続| devCmd
  coding --> |完了| buildPhase["ビルドフェーズ"]
  buildPhase --> buildCmd["tauri build<br/>本番ビルド"]
  buildCmd --> test["動作テスト"]
  test --> |不具合| develop
  test --> |OK| signPhase["署名フェーズ"]
  signPhase --> signCmd["tauri sign<br/>バイナリ署名"]
  signCmd --> macCheck{"macOS?"}
  macCheck --> |Yes| notarizeCmd["tauri notarize<br/>公証"]
  macCheck --> |No| release["リリース"]
  notarizeCmd --> release

このフローは、開発から配布までの一連のプロセスを示しています。各フェーズで適切なコマンドを使用することで、品質の高いアプリケーションをリリースできます。

スクリプトの活用

package.json にスクリプトを登録することで、コマンド実行を簡略化できます。

json{
  "scripts": {
    "tauri": "tauri",
    "dev": "tauri dev",
    "build": "tauri build",
    "build:debug": "tauri build --debug",
    "build:windows": "tauri build --target x86_64-pc-windows-msvc",
    "build:mac": "tauri build --target universal-apple-darwin --bundles dmg,app",
    "sign": "tauri sign",
    "notarize": "tauri notarize",
    "release": "yarn build && yarn sign && yarn notarize"
  }
}

この設定により、yarn release のような簡潔なコマンドで、複数の処理を連続実行できます。

環境変数の管理

署名や公証に必要な認証情報は、環境変数で管理するのが安全です。

bash# .env ファイルの例(Git には含めない)
TAURI_PRIVATE_KEY=/path/to/private.key
TAURI_KEY_PASSWORD=your_password
APPLE_ID=your@email.com
APPLE_PASSWORD=app-specific-password
APPLE_TEAM_ID=TEAM_ID

これらの環境変数を読み込むことで、スクリプト内で認証情報を直接記述せずに済みます。

bash# 環境変数を使用した署名
export TAURI_PRIVATE_KEY="$(cat ./private.key)"
export TAURI_KEY_PASSWORD="mypassword"
yarn tauri sign

CI/CD での活用

GitHub Actions や GitLab CI などの CI/CD 環境で、これらのコマンドを組み合わせることで、自動リリースパイプラインを構築できます。

yaml# GitHub Actions の例
name: Release

on:
  push:
    tags:
      - 'v*'

jobs:
  build:
    strategy:
      matrix:
        platform:
          [macos-latest, ubuntu-latest, windows-latest]
    runs-on: ${{ matrix.platform }}

    steps:
      - uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 18

      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable

      - name: Install dependencies
        run: yarn install

      - name: Build app
        run: yarn tauri build

      - name: Sign app (macOS)
        if: matrix.platform == 'macos-latest'
        run: yarn tauri sign

      - name: Notarize app (macOS)
        if: matrix.platform == 'macos-latest'
        env:
          APPLE_ID: ${{ secrets.APPLE_ID }}
          APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
          APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
        run: yarn tauri notarize

      - name: Upload artifacts
        uses: actions/upload-artifact@v3
        with:
          name: ${{ matrix.platform }}-bundle
          path: src-tauri/target/release/bundle/

この設定により、タグをプッシュするだけで、複数のプラットフォーム向けのビルド、署名、公証が自動実行されます。

トラブルシューティング

よくあるエラーと解決方法

Tauri CLI を使用していると、いくつかの典型的なエラーに遭遇することがあります。ここでは、代表的なエラーとその解決方法を紹介します。

Error: tauri.conf.json not found

このエラーは、Tauri の設定ファイルが見つからない場合に発生します。

plaintextError: tauri.conf.json not found in the specified directory

発生条件

  • tauri init を実行していない
  • 作業ディレクトリが正しくない

解決方法

  1. プロジェクトルートディレクトリにいることを確認
  2. tauri init を実行してプロジェクトを初期化
  3. src-tauri​/​tauri.conf.json が存在することを確認
bash# ディレクトリ確認
ls -la src-tauri/tauri.conf.json

# 存在しない場合は初期化
yarn tauri init

Error: Rust toolchain not installed

Rust がインストールされていない場合に発生します。

plaintextError: cargo: command not found

解決方法

bash# Rust のインストール
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# インストール確認
rustc --version
cargo --version

Error: WebView2 not found (Windows)

Windows で WebView2 ランタイムがインストールされていない場合に発生します。

解決方法

  1. WebView2 ランタイムをダウンロード(Microsoft 公式サイト
  2. インストーラーを実行

Error: Code signing failed (macOS)

macOS でコード署名が失敗する場合のエラーです。

plaintextError: Code signing failed: unable to find valid signing identity

解決方法

bash# 利用可能な証明書を確認
security find-identity -v -p codesigning

# Developer ID 証明書がない場合は、Apple Developer からダウンロード

まとめ

Tauri の CLI コマンドは、開発から配布までのライフサイクル全体をサポートする強力なツールです。本記事では、主要な 5 つのコマンド(initdevbuildsignnotarize)について、それぞれの役割と使い方を早見表形式で解説しました。

各コマンドの特徴をまとめると以下のようになります。

#コマンドタイミング重要度
1tauri initプロジェクト開始時★★★
2tauri dev開発中(常時)★★★
3tauri buildリリース前★★★
4tauri sign配布前(アップデート機能使用時)★★
5tauri notarize配布前(macOS のみ)

これらのコマンドを適切に使い分けることで、効率的に開発を進められます。特に、開発モードでの迅速なフィードバックループと、本番ビルドでの最適化は、アプリケーションの品質向上に直結するでしょう。

署名と公証は、セキュリティと信頼性の観点から重要です。特に商用アプリケーションを配布する場合は、必ず実施することをお勧めします。

本記事を手元に置いて、Tauri 開発の参考にしていただければ幸いです。

関連リンク