はじめに — デスクトップアプリを作るときの「重さ問題」
Web アプリは軽くて配布も簡単、だけどオフライン動作や OS 連携(ファイル保存・ショートカットキー・トレイ常駐など)が不得意。一方でネイティブアプリは強力だけど、作るのも配るのも重たい。その間を埋める「Web 技術で書いてデスクトップアプリとして配布できる」フレームワークが、ここ 10 年で一気に普及しました。
代表格が Electron です。VS Code も Slack も Discord も Electron 製。ただしその代償として、アプリ 1 本で 100〜200MB のメモリを食うのが当たり前、というのも現実です。
この記事では、Electron の軽量な対抗馬として注目される Tauri 2(タウリ・ツー) を、まだ触ったことがない方に向けてやさしく解説します。
Tauri 2 とは?(一言でいうと)
Tauri 2 は、OS に最初から入っている WebView(=ブラウザ部品)を借りて動く、Rust 製のデスクトップアプリ開発フレームワークです。
ポイントは 3 つだけ覚えれば十分です。
- 軽い: アプリ本体のサイズが数 MB〜数十 MB。Electron の 1/10〜1/50
- 安全: ネイティブ処理(ファイル操作・OS 連携)を Rust で書くので、クラッシュやメモリ破壊に強い
- Web 資産を流用できる: 画面は HTML/CSS/JavaScript(React / Vue / Svelte など)で書ける。Electron からの移行コストが比較的低い
Tauri 2 は 2024 年 10 月に安定版がリリースされ、モバイル(iOS / Android)にも同じコードベースで展開できるようになりました。2026 年現在、周辺プラグインも成熟してきて、本番投入の事例が増えています。
Electron との決定的な違い — 「Chromium を持ち歩くか、借りるか」
この 1 行だけ覚えれば、Electron と Tauri の違いは 8 割わかります。
- Electron: アプリの中に Chromium(ブラウザ本体)を丸ごと同梱する
- Tauri 2: OS に最初から入っている WebView を 借りる(Windows なら Edge の WebView2、Mac なら WebKit)
例えるなら、Electron は「引っ越しのたびに冷蔵庫を自分で運ぶ」、Tauri は「備え付け冷蔵庫がある物件に入居する」イメージです。
この設計の違いが、そのまま配布サイズとメモリ消費に表れます。Electron は仕組み上どう頑張っても 100MB 前後の床があり、それ以下にはほぼ下がりません。Tauri はその床がそもそも存在しないため、数十 MB 台のアプリが普通に作れます。
比較表 — Tauri 2 / Electron / Flutter Desktop / .NET MAUI
デスクトップアプリを作るときの主要 4 選択肢を並べました。数値はあくまで目安で、実装内容で大きく変わります。
| 項目 | Tauri 2 | Electron | Flutter Desktop | .NET MAUI |
|---|---|---|---|---|
| 主な言語 | Rust + Web(JS/TS) | JavaScript / TypeScript | Dart | C# |
| 画面描画 | OS 標準 WebView | 同梱 Chromium | 独自描画エンジン | ネイティブコントロール |
| バンドルサイズ目安 | 数 MB〜数十 MB | 100〜300MB | 20〜80MB | 50〜150MB |
| 常駐メモリ目安 | 30〜80MB | 150〜400MB | 80〜200MB | 100〜250MB |
| モバイル対応 | ○(iOS/Android) | ×(デスクトップのみ) | ◎(モバイルが本流) | ◎ |
| 学習コスト | 中(Rust を少し) | 低(Web だけで OK) | 中(Dart 学習要) | 中〜高(.NET 前提) |
| 向いているケース | 軽さ最優先・ツール系 | 大規模・Web 資産最大活用 | モバイルと共通化したい | 社内で .NET 資産あり |
Tauri 2 を選ぶメリット 3 つ(初心者向け)
①圧倒的に軽い
Chromium を同梱しないので、インストーラが 5MB で済むこともあります。ユーザーのディスクにもメモリにも優しい。小さい常駐ツールやメニューバー系アプリには特に強いです。
②Rust による安全性
ファイル操作・スクリーンショット取得・OS API 呼び出しといった「間違えるとアプリが落ちる・情報が漏れる」ような処理を Rust で書きます。Rust はコンパイル時にメモリ安全性を保証する現代的な言語で、ネイティブ層を堅牢に作れるのが強みです。
③Web の知識がそのまま使える
画面は普通の React / Vue / Svelte で書けます。HTML/CSS/JS/TypeScript が書ければ、画面側は今まで通り。「Rust を全部習得しないと何も作れない」ということはなく、まずは画面だけ Web で書いて、必要になったら Rust で機能を足す、という段階的な学習ができます。
注意点 — Tauri 2 を選ぶと詰まりやすいところ
良いことばかりではありません。初心者が踏みやすい罠を 3 つ挙げます。
- WebView の OS 差異: Windows の WebView2(Edge 相当)と Mac の WebKit(Safari 相当)では、CSS や JS の挙動が微妙に違います。Electron のように「全 OS で Chromium」ではないので、ブラウザ互換テストの感覚が必要です
- ネイティブ処理は Rust: OS 連携の深い機能を作るときは Rust を書くことになります。画面だけなら Web で完結しますが、本格的なアプリを作るなら Rust 学習は避けて通れません
- エコシステムがまだ育っている途中: Electron と比べるとプラグイン・ライブラリの数が少なめです。欲しい機能がライブラリ化されていない場合、自分で Rust で実装する必要が出てきます
自社事例 — MarkShot を書き直したら 9 割軽くなった
当社でも先日、自社製のスクリーンショットツール MarkShot を Electron から Tauri 2 に全面書き直しました。実測値はこうです。
- インストールサイズ: 259MB → 5.79MB(−97.8%)
- 常駐メモリ: 290MB → 25.45MB(−91.2%)
- プロセス数: 4 → 1
数字を並べるとインパクトが大きいですが、画面側の React コードはほぼ流用できたのが大きな学びでした。書き直したのは OS 連携部分(スクリーンショット取得・クリップボード・グローバルショートカット)だけで、アノテーションエディタなどの UI はほぼそのまま移植できました。
詳しい技術ディテール(ARM64 Rust の地雷、Tauri 2 の async command の罠など)は、エンジニア向けに別記事「個人開発でも純正スペックを超えたリファクタリング ― メモリを9割削減した Electron → Tauri 2 + Rust への書き換え」にまとめています。
始め方 — create-tauri-app で最小サンプルを作る
Tauri 2 は公式 CLI で空プロジェクトをすぐ作れます。事前に Rust ツールチェーン(rustup)だけインストールしておいてください。
npm create tauri-app@latest
対話形式でフロントエンドのフレームワーク(React / Vue / Svelte / Vanilla)を選べば、最小構成のプロジェクトが生成されます。あとは以下で開発サーバ起動 → 自動的にデスクトップウィンドウが立ち上がります。
cd my-app
npm install
npm run tauri dev
最初の cargo build(Rust のコンパイル)は少し時間がかかりますが、2 回目以降はキャッシュが効きます。
どう選ぶ?— 初心者のための判断フロー
「どのフレームワークを選べばいいか分からない」という方向けに、ざっくりした判断軸を置いておきます。
- 軽さ・配布サイズが最優先 → Tauri 2
- 既に Electron の資産・チームがある、Web だけで完結させたい → Electron を継続
- モバイルとデスクトップで同じコードを動かしたい → Flutter
- 社内が .NET 中心・Windows 特化で良い → .NET MAUI
- Web 技術を使わず完全ネイティブに倒したい → Swift / Kotlin / C++ など OS ごとの正攻法
はじめての個人開発・小さめのツール作成なら、Tauri 2 は「軽く始められて成果物も軽い」という理想的な入口です。
まとめ
- Tauri 2 = OS の WebView を借りる軽量デスクトップフレームワーク
- Electron との最大の違いは「Chromium を同梱するかしないか」。結果として配布サイズとメモリが 1 桁違う
- 画面は Web(React/Vue/Svelte)、ネイティブ層は Rust。段階的に学習できる
- 当社で実測した削減幅はインストール −97.8%、メモリ −91.2%
- まずは
npm create tauri-app@latestで 5 分サンプルを動かすのがおすすめ
「デスクトップアプリ=重いもの」という前提は、Tauri 2 で明確に変わりつつあります。次にデスクトップアプリを作る機会があれば、ぜひ選択肢に入れてみてください。



