プログラミング入門

Tauri v2でCLIバイナリをSidecarとして同梱する方法【実践解説】

「Tauriでデスクトップアプリを作ったはいいけど、外部のCLIツールはどうやって一緒に配布するの?」

そんな疑問、持ったことありませんか? 実は Tauri v2 には「Sidecar(サイドカー)」という仕組みがあって、ffmpegやfrpcのような外部バイナリをアプリにまとめて同梱できるんです。今回はその仕組みと実装のポイントを、ざっくりわかりやすく解説します 🚀

Sidecarってそもそも何?

desktop app development
desktop app development / Photo by Daniil Komov via Pexels

イメージとしては、アプリのパッケージの中に「おまけの実行ファイル」を一緒に入れておいて、必要なときにアプリ側から呼び出す、という感じです。つまり、ユーザーが別途インストールしなくても、CLIツールをそのまま使えるようになるわけですね。

Tauri v2では、この仕組みが公式でサポートされています。対応しているのは Windows・macOS・Linux の各プラットフォームで、それぞれに合ったバイナリを用意する必要があります。

設定の流れをざっくり確認 📋

ポイントをまとめるとこんな感じです。

  • tauri.conf.jsonexternalBin を追加する
  • ✅ バイナリをプラットフォームごとに命名規則に合わせてリネームする
  • capabilities でSidecar実行の権限を設定する
  • ✅ Rustコード側から Command::new_sidecar() で呼び出す

実際の設定コード例

まず tauri.conf.json にバイナリのパスを登録します。ここが重要です 👇

{
  "bundle": {
    "externalBin": [
      "binaries/frpc"
    ]
  }
}

次に、Rustのコードでバイナリを呼び出します。

use tauri_plugin_shell::ShellExt;

// Sidecarを呼び出すコマンド例
#[tauri::command]
async fn run_frpc(app: tauri::AppHandle) -> Result<String, String> {
    let sidecar_command = app
        .shell()
        .sidecar("frpc")  // ← binaries/frpc を指定
        .map_err(|e| e.to_string())?
        .args(["--config", "frpc.ini"]); // 引数も渡せる

    let (mut rx, _child) = sidecar_command
        .spawn()
        .map_err(|e| e.to_string())?;

    // 出力をそのまま返す(簡易版)
    Ok("frpc started!".to_string())
}

ここでのポイントをまとめるとこんな感じです。

  • sidecar("frpc") の文字列はバイナリ名(拡張子なし)でOK
  • .args() でCLI引数を配列で渡せる
  • spawn() で非同期実行、標準出力も受け取れる

ハマりやすいポイント ⚠️


実際に試すといくつか詰まりやすいポイントがあります。確認しておきましょう。

  • ❗ バイナリのファイル名は frpc-x86_64-apple-darwin のようにターゲットトリプルを付ける命名規則がある
  • ❗ macOSでは コード署名 が必要になる場合がある
  • capabilities の設定で shell:allow-execute を忘れると動かない

まとめ

Tauri v2のSidecar機能を使えば、ffmpegやfrpcのような外部CLIバイナリをアプリにまとめて同梱でき、ユーザーが別途インストールしなくていい体験を提供できます。設定ファイルとRustコードの両方を正しく組み合わせるのがコツですね 💡

デスクトップアプリ開発の幅がぐっと広がるので、ぜひ一度試してみてください! Tauri v2の公式ドキュメントも合わせて読むと、より理解が深まりますよ。

📚 関連商品・おすすめ書籍

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

もしも

スッキリわかるPython入門 第2版 (スッキリわかる入門シリーズ)

初心者に定番のPython入門書

Amazonで見る

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

もしも

実践Claude Code入門―現場で活用するためのAIコーディングの思考法

AIコーディングの現場活用法を学ぶ一冊

Amazonで見る

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

もしも

Python Web開発実践入門 ―― FastAPIによるWebAPI開発と非同期処理

FastAPIでWebAPI開発を実践的に学ぶ

Amazonで見る

※本記事にはアフィリエイトリンクが含まれます。

ABOUT ME
やまちゃん
これまで学生と社会人を合わせて5000人以上にプログラミング学習を指導。 ゼロからイチをわかりやすく解説する専門家として活動しており、本業ではArduinoを用いたIoT開発とロボットプログラミングが専門。 Pythonを用いたアプリ開発、ウェブアプリケーションの開発で業務の効率化をサポートしています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です