Tauri(タウリ)は、HTML・CSS・JavaScriptで画面を作り、OSに近い処理をRustで書いてデスクトップアプリとモバイルアプリを配布するオープンソースのフレームワークです。ブラウザエンジンを同梱せず、OSに標準で入っているWebViewで画面を描くため、Electronより配布物が小さくなります。2026年10月時点の安定版は2.12系で、次のメジャー版3.0はalpha版の公開が始まっています。この記事では、読み方と仕組み、Electronとの違い(最小アプリの実測値つき)、そして将来性を判断するための材料を、公式のリリース記録とレジストリの値から整理します。
まとめ
- 読み方:「タウリ」。公式の日本語ドキュメントもこの表記を使っています。
- 仕組み:画面はOS標準のWebView(Windows=WebView2、macOS・iOS=WKWebView、Linux=WebKitGTK、Android=Android System WebView)、裏側はRust。両者はコマンドとIPCでつながります。
- Electronとの差:macOS上でTauriのvanilla雛形とElectronの単一HTMLアプリを比較すると、Tauri 2.12は4.4MB、Electron 44.9.0は294MB(いずれも.app)。代わりにTauriはOSごとに描画エンジンが違い、Electronはどの環境でもChromiumで同じ描画になります。
- 将来性:2.xは2026年9月26日の2.12まで機能追加が続き、10月も修正版が出ています。3.0 alphaではWebViewの実装(ランタイム)を選べるようになり、Chromiumを組み込むCEFランタイムが用意されています。描画差という最大の弱点に公式が手を打ち始めた段階です。
- 選び方:配布サイズ・メモリ・権限の絞り込みを重視するなら今はTauri 2.12。全OSで同一描画が必須、またはNode.jsのnpm資産に深く依存するならElectron。3.0は本番に使わず検証に留めます。
Tauriの読み方は「タウリ」
Tauriは「タウリ」と読みます。公式の日本語ドキュメント「Tauri アーキテクチャ」でも、中核クレートを「tauri(タウリ)」「tauri-runtime(タウリ・ランタイム)」とカナ表記しています。栄養成分の「タウリン」とは関係がありません。
綴りの「Tauri」はラテン語でおうし座(Taurus)の属格にあたり、アルデバラン(Alpha Tauri)のような恒星名に使われる語です。ただし、フレームワーク名をそこから取ったと公式ドキュメントが説明している箇所は確認できませんでした。由来を断定している解説は、出典の有無を確かめてから読んでください。
Tauriの仕組み:OS標準のWebViewとRust
Tauriのアプリは、画面を描くWebView側(フロントエンド)と、ファイル操作や通知などOSの機能を扱うRust側(コア)に分かれています。フロントエンドはReact・Vue・Svelteなど、HTML・CSS・JavaScriptに出力できるものなら何でも使えます。Tauri 2.0の公式発表は、対象をデスクトップ3OS(Windows・macOS・Linux)とモバイル(iOS・Android)と定義し、Rustに加えてSwiftとKotlinでもネイティブ処理を書けるとしています。
OS別のWebViewと描画エンジンの違い
Tauriは自前のブラウザを持たず、各OSのWebViewを抽象化ライブラリのwry経由で呼び出します。どのエンジンで描かれるかは、公式のWebViewバージョン一覧のとおりOSで決まります。
| OS | 使うWebView | エンジン | 更新のされ方 |
|---|---|---|---|
| Windows | WebView2 | Chromium | WebView2が自動更新 |
| macOS・iOS | WKWebView | WebKit | OSのアップデート |
| Linux | WebKitGTK | WebKit | ディストリのパッケージ |
| Android | Android System WebView | Chromium | 端末で選択中のWebView |
アプリにエンジンを入れないので配布物が小さくなり、エンジンの脆弱性修正は、OS、WebViewランタイム、ディストリビューションのパッケージなど、それぞれの更新経路で届きます。その裏返しとして、同じCSSでもWindows(Chromium)とmacOS(WebKit)で表示が変わることがあり、利用者のOSが古ければ新しいWeb APIが使えません。Linuxではディストリビューションが配るWebKitGTKの版に左右されます。開発時は、配布対象のOSすべてで画面を確認する前提で工数を見積もってください。
フロントエンドからRustを呼ぶコマンド
JavaScriptからRustの関数を呼ぶ仕組みが「コマンド」です。npm create tauri-appで作った雛形には、最小のコマンド例がそのまま入っています。Rust側で関数に#[tauri::command]を付けて登録し、フロントエンドからinvokeで名前を指定して呼びます(公式ガイド:Calling Rust from the Frontend)。
// src-tauri/src/lib.rs(create-tauri-appで生成したTauri 2.12系アプリの雛形)
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}! You've been greeted from Rust!", name)
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.plugin(tauri_plugin_opener::init())
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
// src/main.js(フロントエンド側)
const { invoke } = window.__TAURI__.core;
window.addEventListener("DOMContentLoaded", () => {
const greetInputEl = document.querySelector("#greet-input");
const greetMsgEl = document.querySelector("#greet-msg");
document.querySelector("#greet-form").addEventListener("submit", async (event) => {
event.preventDefault();
greetMsgEl.textContent = await invoke("greet", { name: greetInputEl.value });
});
});
ファイルの読み書きや通知のように公式プラグインがある機能は、Rustを書かずにJavaScriptのAPIだけで呼べます。Rustを書くのは、プラグインに無い処理を足すときです。
capabilitiesによるウィンドウ別の権限設定
Tauri 2では、フロントエンドから使えるAPIをsrc-tauri/capabilitiesのJSONで窓ごとに許可します。雛形が作るdefault.jsonは、mainウィンドウにコア機能とURLを開くプラグインの既定権限だけを与えています。
{
"$schema": "../gen/schemas/desktop-schema.json",
"identifier": "default",
"description": "Capability for the main window",
"windows": ["main"],
"permissions": ["core:default", "opener:default"]
}
適用されるcapabilitiesで許可していないプラグインのコマンドは、フロントエンドから呼んでも拒否されます。ただし、アプリ自身が登録したコマンドは既定で呼び出せるため、制限する場合はアプリ用の権限設定も必要です。公式のcapabilities解説は、1つのウィンドウが複数のcapabilityに属すると権限が合算される点を注意しています。Electronも現在はNode.js統合が既定で無効、コンテキスト分離が既定で有効です。Tauriの比較上の特徴は、プラグインへのアクセス権限をcapabilitiesでウィンドウやWebViewごとに宣言できる点です。
TauriとElectronの違いを最小アプリで実測
ElectronはアプリごとにChromiumとNode.jsを同梱し、TauriはOSのWebViewとRustを使います。この構造の差がサイズにどれだけ出るかを、2026年10月18日にmacOS 26.6.2(Intel)上で測りました。Tauriはnpm create tauri-app@latestのvanillaテンプレート(tauri 2.12系)をそのままtauri build、ElectronはBrowserWindowで1枚のHTMLを開くだけのアプリを@electron/packagerでElectron 44.9.0として固めています。
| 項目 | Tauri 2.12 | Electron 44.9.0 |
|---|---|---|
| .appのサイズ | 4.4MB | 294MB |
| 配布ファイル | 1.9MB(zip) | 134MB(zip) |
| 起動中の使用メモリ | 約100MB(4プロセス) | 約212MB(4プロセス) |
| 描画エンジン | OSのWebView | 同梱のChromium |
| 裏側の実装 | Rust | JavaScript(Node.js) |
| モバイル | iOS・Android | 対象外 |
配布ファイルは両方とも同じ方法(dittoでzip化)でそろえました。メモリは起動10秒後に、アプリの起動で増えたプロセスの常駐メモリ(RSS)を合計した値です。Tauriはアプリ本体とWebKitのGPU・Networking・WebContentの3プロセス、Electronは本体とHelper 3プロセスで、3回測ってTauriが97〜105MB、Electronが212〜216MBでした。RSS合計には共有ページの重複が含まれるため、実際の物理メモリ占有量とは異なります。集計方法はそろえていますが、共有ページの割合やプロセス構成によって比較値は変わります。
この結果から言えるのは、サイズの差は約67倍あるのに、メモリの差は約2倍に縮むということです。どちらも画面を描くのはブラウザエンジンで、Tauriはそのエンジンを同梱せずOSから借りているだけだからです。比較記事でよく見る「Tauriのメモリは30〜50MB」という値は、今回のアプリ本体のプロセス(約50MB)に近く、WebViewのプロセスまで含めると倍になります。メモリの小ささを採用理由にするなら、自社のアプリで同じ数え方をして確かめてください。
実アプリの移行例では、ファイルマネージャーのSigma File Managerがv2.0.0-alpha.1のリリースノートで、ElectronからTauriへ移したことでWindows版のインストーラーが153MBから4MB、インストール後のサイズが419MBから12MBになったと公表しています。ただし、このalpha版は旧版の大半の機能が未移植で、同等機能を維持した比較ではありません。
Electronが勝つ点:描画の一貫性とnpm資産
サイズ以外ではElectronに分がある場面がはっきりあります。Chromiumを同梱するので、Windows・macOS・LinuxでCSSの解釈もWeb APIの対応状況も揃います。メインプロセスがNode.jsなので、npmのパッケージをそのまま裏側で使えます。VS CodeやSlackのように大規模なアプリの実績もあり、自動更新やインストーラー作成の周辺ツールも長く使われてきました。GitHubのスター数はelectron/electronが約12.3万、tauri-apps/tauriが約11.2万(2026年10月18日時点)と、関心の大きさはほぼ並んでいます。Electron側の詳しい解説はElectronとは?Web技術でデスクトップアプリを作る入門解説【2026年最新】、Electronの版や軽量化の工夫はElectronのUIをWeb技術で作る実践ガイド|React・Vue連携から最新v43・軽量化・将来性までにまとめています。
Tauriの将来性を判断する4つの材料
Tauriの将来性は、公開されたリリース記録や運営体制から検討できます。ここでは、開発の継続性・弱点への対応・運営の体制・採用例という、公開情報で確かめられる4点で判断します。
リリースは今も続いている:2.12と月数回の修正版
Tauri 2.0の安定版は2024年10月2日に公開されました。その後も2.x系は機能追加が続き、2026年9月26日のTauri 2.12は公式が「2.x系で最大の更新」と書いています。crates.ioの記録では、2.12.0のあと10月14日の2.12.4まで約3週間で4回の修正版が出ました。
2.12には、既存アプリに影響する変更も含まれます。最新のWebView2インストーラーがWindows 7で動かなくなったため、Windows 7の公式サポートを終了しました。最低限必要なRustのバージョン(MSRV)は1.90に上がり、今後は「Rust安定版の3つ前」を基準にマイナー版以上でだけ引き上げる方針が決まっています。Androidの雛形もGradle 9・Kotlin 2・targetSdk 37へ更新されました。なお、執筆時点の前提条件のページには「Windows 7 and later」の記載が残っており、ドキュメントの更新がリリースに追いついていません。Windows 7を配布対象に含める案件では、2.11系で止めるかどうかを先に決めてください。ただし現行のElectronもElectron 23でWindows 7〜8.1のサポートを終了しているので、Electronに切り替えても解決しません。Windows 7が必須なら、対象OSの更新を含めて配布方針を見直してください。
3.0 alphaで選べるようになったCEFランタイム
次のメジャー版は、crates.ioでtauri 3.0.0-alpha.0が2026年9月13日に公開され、10月14日のalpha.5まで進んでいます(npmの@tauri-apps/cliではnextタグ)。公式ブログの記事はまだありませんが、3.0用のドキュメントサイトとalpha.0のリリースノートを読むと方向ははっきりしています。
- WebViewの実装(ランタイム)を、Cargoのfeatureではなくアプリの組み立て時に
tauri::Builder::runtimeで選ぶ形に変わった - 選択肢は、従来のOS WebViewを使う
tauri-runtime-wryと、Chromium Embedded Frameworkを組み込むtauri-runtime-cef - ランタイム固有のAPIは
tauri本体から各ランタイムのクレートへ移動(破壊的変更) - MSRVは1.95
// 3.0.0-alpha.0 のリリースノートに載っている選び方
tauri::Builder::default()
.runtime(tauri_runtime_wry::Wry::default()) // または tauri_runtime_cef::Cef::default()
.run(tauri::generate_context!())
.expect("error while running tauri application");
3.0向けの公式ガイド「Chromium Embedded Framework」は、CEFランタイムの利点を「Windows・macOS・Linuxの全利用者が、開発者の選んだ同じ版のChromiumで動く」ことだと説明しています。OSごとのCSSの不具合や古いWebKitで使えないWeb APIへの対処が要らなくなる、という整理です。同じページは代償も明記しています。
- アプリがChromiumを丸ごと抱えるため、配布物はwryより数百MB大きくなり、実行時のメモリも増える
- 対象はデスクトップ3OSだけで、iOS・Androidは引き続きwryを使う
- 初回ビルドで約1GBのCEFバイナリをダウンロードし、WindowsとmacOSではCMakeとNinjaも必要
つまり3.0の要点は、「軽さを取るならwry、描画の一貫性を取るならCEF」を同じAPIの上で選べるようになることです。Electronを選ぶ最大の理由だった描画の一貫性が、Tauriの中でも選べるようになります。
ただし、まだ本番に使える段階ではありません。公式の2.0から3.0への移行ガイド自身が「3.0はalphaで、安定版までにAPIが変わりうる」「本番アプリは2.xのままにすること」と書いており、tauri migrateによる自動移行もまだ3.0に対応していません。2.x向けのプラグインは3.0のアプリに登録できず、コミュニティ製プラグインは作者の更新待ちです。GitHubの3.0マイルストーンにも期限は設定されていません。なお、2025年3月に公式ブログが紹介したServoベースのVersoランタイムは「実験的」と書かれたままで、crates.ioには公開されていません。3.0は検証用の環境で触るに留め、本番は2.12で作りながら移行の影響を追ってください。
運営の体制:非営利団体の配下と外部監査
TauriはオランダのThe Commons Conservancyの「Programme」として運営され、2026年6月30日の理事選挙の告知で、Programmeになってから5年が経ったと書かれています。理事は2年任期の選挙制で、3〜7人と定められています。特定企業が所有する製品とは異なる意思決定体制です。ただし、開発の継続性は主要開発者や資金提供元への依存度にも左右されます。
開発者の雇用面では、2023年11月にCrabNebulaとの提携が発表され、2.0の発表でも同社が複数の開発者に業務時間でTauriに取り組ませたと謝辞があります。セキュリティ面では、v2の設計変更をRadically Open Securityが外部監査し、報告書が公開されています。公式の紹介ページは、メジャー版とマイナー版ごとに監査を受ける方針を掲げています。
採用アプリ:ソースで確かめられる例
Tauriで作られていることをソースコードで確認できる例として、API開発ツールのHoppscotch Desktop(2023年11月8日のデスクトップ版の発表でTauri採用を説明)、GitクライアントのGitButlerがあります。どちらもリポジトリにTauriの設定ファイルtauri.conf.jsonとcapabilitiesを持っています。生成AI周辺では、Codex CLIを束ねるデスクトップGUIのCodex MonitorもTauri製です。
4点をまとめると、Tauriは「2.xの開発が継続し、描画差への選択肢として3.0 alphaでCEFを検証できる」段階にあります。一方、Electronの採用規模に追いついたことを示す一次資料は見当たらず、必要な機能を満たすプラグインと保守状況は、採用前に個別に確認する必要があります。
Tauriの始め方:雛形の作成からビルドまで
事前に用意するものは、Rust(rustupで導入)と、JavaScriptのフロントエンドを使う場合のNode.jsです。OSごとの追加要件は次のとおりで、詳細は公式の前提条件ページにあります。
- Windows:Microsoft C++ Build ToolsとWebView2(Windows 11は標準搭載)
- macOS:デスクトップ向けのみならXcode Command Line Tools、iOS向けにはXcode
- Linux:
libwebkit2gtk-4.1-devなどのパッケージ
# 雛形の作成(テンプレートとパッケージマネージャーを対話で選ぶ)
npm create tauri-app@latest
# 依存関係の導入と開発モードでの起動
cd tauri-app
npm install
npm run tauri dev
# 配布用のビルド(macOSなら .app と .dmg が src-tauri/target/release/bundle に出る)
npm run tauri build
2.12系の雛形は、Cargo.tomlの[profile.release]にlto = true・opt-level = 3・strip = trueなどサイズを詰める設定を最初から入れています。前の章の実測値はこの設定のままの数字です。初回のリリースビルドはRustの依存クレートをすべてコンパイルするため時間がかかり、今回の環境ではIntel Macでコンパイルだけで12分20秒でした。
フロントエンドにReactとViteを使うならViteとは?Reactの環境構築手順とVite 8の変更点・create-react-appからの移行、SvelteならSvelteKitとは?Svelteとの違い・始め方とv3の変更点【2026年9月】の手順がそのまま使えます。ビルドを担うCargoの使い方はCargo(Rust)とは?インストールと使い方・主要コマンド一覧を参照してください。
RustとTauriの関係:ツールチェーンと実装範囲
Tauri本体とアプリのコア部分はRustで書かれており、ビルドにはRustのツールチェーンが必須です。ただし、アプリ開発者がRustを書く量は作るものによって大きく変わります。公式プラグインの範囲(ファイル、ダイアログ、通知、HTTP、自動更新など)で済むアプリなら、上の雛形のlib.rsに数行足す程度です。重い計算やOS固有のAPIを使う処理を自前で書くときに、所有権や借用の理解が必要になります。Rustのメモリの考え方はRustのスタックとヒープ|値がヒープへ脱出する条件とメモリ領域の使い分けで解説しています。
Rust以外の言語で書いた処理を使いたい場合は、sidecarとして別の実行ファイルをアプリに同梱し、Tauriから起動する方法が公式に用意されています。C#やPythonで作ったCLIやAPIサーバーを、ターゲットごとの実行ファイルとしてtauri.conf.jsonのbundle.externalBinに登録します。PHPのLaravelでデスクトップアプリを作る選択肢としてはNativePHPとは?PHPでデスクトップアプリを作る仕組みと導入手順【Desktop 2.3対応】もあります。
Tauriを選ぶべき場面・避けるべき場面
Tauriを選ぶべきなのは、次の条件のどれかが当てはまる案件です。
- 常駐ツールや社内配布ツールなど、配布サイズとメモリの小ささが利用者の不満に直結する
- デスクトップと同じコードでiOS・Android版も出す予定がある
- フロントエンドから触れるOS機能を権限ファイルで絞り、監査で説明したい
反対に、次の場合はElectronを選ぶほうが安全です。
- Windows・macOS・Linuxでブラウザエンジンとそのバージョンを統一したい(3.0のCEFランタイムが安定するまでは特に)
- 裏側の処理がnpmのNode.jsパッケージに深く依存している
- チームにRustを書ける人がおらず、プラグインに無いネイティブ処理が必要
稼働中のElectronアプリを「軽くなるから」という理由だけで移すのはおすすめしません。WebKitでの表示確認とNode.js依存の書き換えが発生し、利用者がサイズに不満を持っていないなら効果が見えにくいためです。移行するなら、新しい機能の別アプリや新規案件から試すほうが失敗の範囲を限れます。
モバイル版が主役で、デスクトップは添え物という案件なら、比較の相手はElectronではなくFlutterやReact Nativeです。Tauriのモバイル対応は2024年10月の2.0からで、ネイティブUIの部品や採用実績ではこの2つに分があります。当社ではFlutter・React Nativeによるクロスプラットフォームアプリ開発も支援しています。
よくある質問
Tauriの読み方は?
「タウリ」です。公式の日本語ドキュメントも「tauri(タウリ)」と表記しています。
TauriとElectronの違いは?
ElectronはChromiumとNode.jsを同梱し、TauriはOS標準のWebViewとRustを使います。macOSでの最小アプリの実測では、.appのサイズがTauri 2.12で4.4MB、Electron 44.9.0で294MBでした。描画をどのOSでも揃えたいならElectronが有利です。
Tauriを使うのにRustは必須ですか?
ビルドにはRustのツールチェーンが必須です。ただし公式プラグインで足りるアプリなら、Rustのコードは雛形に数行足す程度で済みます。
Tauri 3.0はいつ出ますか?
2026年9月13日にalpha版の公開が始まり、10月14日時点で3.0.0-alpha.5です。安定版の時期は公表されていません。本番の開発は2.12系で行ってください。
Tauriは無料で商用利用できますか?
できます。Tauri本体はMITとApache-2.0のデュアルライセンスで公開されており、商用アプリにも使えます。