Tauriのインストールから初期プロジェクト作成まで

モダンな Web アプリケーション開発の世界で、デスクトップアプリケーションの需要が再び高まっています。Web の技術で培ったスキルを活かしながら、ネイティブアプリケーションの性能を実現できる——そんな理想を叶えてくれるのが Tauri です。
この記事では、Tauri の魅力的な特徴から実際のプロジェクト作成まで、丁寧に解説していきます。初心者の方でも安心して進められるよう、実際に遭遇するエラーとその解決策も含めて、実践的な内容をお届けします。
Tauri とは
Tauri の特徴と利点
Tauri は、Rust と Web テクノロジーを組み合わせた革新的なデスクトップアプリケーション開発フレームワークです。従来の Electron に代わる選択肢として、多くの開発者から注目を集めています。
Tauri の主な特徴を表にまとめました:
# | 特徴 | 説明 |
---|---|---|
1 | 軽量性 | バンドルサイズが小さく、メモリ使用量も少ない |
2 | セキュリティ | デフォルトで安全な設定、必要な権限のみ許可 |
3 | パフォーマンス | Rust の高速性を活かした処理能力 |
4 | 柔軟性 | 様々なフロントエンドフレームワークに対応 |
5 | クロスプラットフォーム | Windows、macOS、Linux 対応 |
Tauri の最大の魅力は、既存の Web アプリケーションを簡単にデスクトップアプリに変換できる点です。React、Vue.js、Angular、そして Next.js など、お気に入りのフロントエンドフレームワークをそのまま使えるのは嬉しいですね。
他のデスクトップアプリ開発ツールとの比較
デスクトップアプリ開発の選択肢は多様です。主要なツールと比較してみましょう:
# | ツール | バンドルサイズ | メモリ使用量 | 学習コスト | パフォーマンス |
---|---|---|---|---|---|
1 | Tauri | 小さい(10-50MB) | 少ない | 中程度 | 高い |
2 | Electron | 大きい(100-200MB) | 多い | 低い | 中程度 |
3 | Flutter Desktop | 中程度 | 中程度 | 高い | 高い |
4 | .NET MAUI | 中程度 | 中程度 | 中程度 | 高い |
Electron と比較した場合の Tauri の優位性:
- メモリ使用量: Electron アプリが 200MB 以上使うのに対し、Tauri は 50MB 程度
- バンドルサイズ: Electron の 1/3 から 1/5 程度のサイズ
- セキュリティ: デフォルトで最小権限の原則を採用
ただし、Electron の豊富なエコシステムと学習コストの低さは魅力的です。プロジェクトの要件に応じて適切な選択をすることが重要ですね。
開発環境の準備
必要な前提条件
Tauri を使った開発を始める前に、以下の前提条件を確認しましょう:
システム要件:
# | 項目 | 要件 |
---|---|---|
1 | OS | Windows 10+、macOS 10.15+、Linux(Ubuntu 18.04+推奨) |
2 | RAM | 4GB 以上(8GB 推奨) |
3 | ディスク容量 | 5GB 以上の空き容量 |
4 | インターネット接続 | 初期セットアップ時に必要 |
プラットフォーム別の追加要件:
- Windows: Visual Studio Build Tools または Visual Studio 2019+
- macOS: Xcode Command Line Tools
- Linux: GCC、libwebkit2gtk-4.0-dev、build-essential
Rust のインストール
Rust は、Tauri の心臓部分を担う重要なプログラミング言語です。安全性と高性能を両立した、モダンなシステムプログラミング言語として設計されています。
Windows でのインストール:
bash# PowerShellを管理者権限で実行
# rustup-init.exeをダウンロードして実行
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
macOS/Linux でのインストール:
bash# ターミナルで以下のコマンドを実行
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# パスを有効化
source $HOME/.cargo/env
インストール中によく遭遇するエラーとその解決策をご紹介します:
よくあるエラー 1: curl: command not found
bash# Ubuntuの場合
sudo apt update && sudo apt install curl
# CentOSの場合
sudo yum install curl
よくあるエラー 2: permission denied
bash# 権限エラーが発生した場合
chmod +x rustup-init.sh
./rustup-init.sh
インストール完了の確認:
bash# Rustのバージョン確認
rustc --version
# Cargoのバージョン確認
cargo --version
正常にインストールされていれば、以下のような出力が表示されます:
bashrustc 1.75.0 (82e1608df 2023-12-21)
cargo 1.75.0 (1d8b05cdd 2023-11-20)
Node.js と Yarn のセットアップ
フロントエンド開発において、Node.js と Yarn は欠かせないツールです。特に Yarn は、依存関係の管理において優れた性能を発揮します。
Node.js のインストール(推奨方法):
bash# nvmを使用してNode.jsをインストール(推奨)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# ターミナルを再起動後
nvm install --lts
nvm use --lts
Yarn のインストール:
bash# npmを使用してYarnをグローバルインストール
npm install -g yarn
# インストール確認
yarn --version
Node.js と Yarn の動作確認:
bash# Node.jsのバージョン確認
node --version
# Yarnのバージョン確認
yarn --version
期待される出力例:
bashv20.10.0
1.22.21
よくあるエラー 3: EACCES: permission denied
bash# npm権限エラーの解決方法
npm config set prefix ~/.npm-global
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
この段階で、Tauri の開発に必要な基盤が整いました。次は、いよいよ Tauri 自体のインストールに進みます。
Tauri のインストール
Tauri CLI のインストール
Tauri CLI は、Tauri プロジェクトの作成、開発、ビルドを効率的に行うためのコマンドラインツールです。このツールがあることで、複雑なビルドプロセスを簡単なコマンドで実行できます。
Tauri CLI のインストール方法:
bash# Rustのcargo経由でインストール
cargo install tauri-cli
# または、バージョン指定でインストール
cargo install tauri-cli --version "^1.0"
このインストールには少し時間がかかります。コンパイル中は以下のような出力が表示されます:
bash Updating crates.io index
Downloaded tauri-cli v1.5.8
Downloaded 1 crate (128.4 KB) in 0.52s
Compiling tauri-cli v1.5.8
Finished release [optimized] target(s) in 4m 32s
Installing ~/.cargo/bin/cargo-tauri
Installed package `tauri-cli v1.5.8` (executable `cargo-tauri`)
よくあるエラー 4: linker 'cc' not found
bash# Linuxの場合
sudo apt install build-essential
# CentOSの場合
sudo yum groupinstall "Development Tools"
よくあるエラー 5: failed to run custom build command
bash# 依存関係が不足している場合(Linux)
sudo apt install libwebkit2gtk-4.0-dev \
build-essential \
curl \
wget \
libssl-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev
インストールの確認
正常にインストールされているかを確認しましょう:
bash# Tauri CLIのバージョン確認
cargo tauri --version
# または
tauri --version
成功した場合の出力例:
bashtauri-cli 1.5.8
よくあるエラー 6: command not found: cargo-tauri
bash# パスが通っていない場合
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Tauri CLI の使用可能コマンド一覧:
bash# 利用可能なコマンドを確認
cargo tauri --help
これにより、以下のような出力が表示されます:
bashUSAGE:
cargo tauri [OPTIONS] <SUBCOMMAND>
OPTIONS:
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
build Tauri build
dev Tauri dev
info Show a concise list of information about the environment
init Initialize a Tauri project
help Print this message or the help of the given subcommand(s)
これで、Tauri の開発環境が整いました。次は、実際にプロジェクトを作成してみましょう。
初期プロジェクトの作成
プロジェクトの初期化
いよいよ、最初の Tauri プロジェクトを作成します。この瞬間は、新しい技術への第一歩として、とても感動的な体験になるでしょう。
新しいプロジェクトの作成:
bash# 作業ディレクトリに移動
cd ~/projects
# Tauriプロジェクトの初期化
cargo tauri init
初期化プロセスでは、いくつかの質問に答える必要があります:
bash? What is your app name? › my-tauri-app
? What should the window title be? › My Tauri App
? Where are your web assets (HTML/CSS/JS) located, relative to the "<current dir>/src-tauri/tauri.conf.json" file that will be created? › ../dist
? What is the url of your dev server? › http://localhost:1420
? What is your frontend dev command? › yarn dev
? What is your frontend build command? › yarn build
各質問の詳細説明:
# | 質問 | 説明 | 推奨値 |
---|---|---|---|
1 | App name | アプリケーションの内部名 | プロジェクト名と同じ |
2 | Window title | ウィンドウのタイトルバーに表示 | ユーザーに見える名前 |
3 | Web assets location | ビルドされたファイルの場所 | ../dist |
4 | Dev server URL | 開発サーバーの URL | http://localhost:1420 |
5 | Frontend dev command | 開発用コマンド | yarn dev |
6 | Frontend build command | ビルド用コマンド | yarn build |
既存の Web プロジェクトに Tauri を追加する場合:
bash# 既存のプロジェクトディレクトリに移動
cd my-existing-project
# Tauriを追加
cargo tauri init
よくあるエラー 7: error: failed to get 'tauri' as a dependency
bash# ネットワークエラーの場合、再実行
cargo tauri init --force
プロジェクト構造の確認
初期化が完了すると、以下のような構造のプロジェクトが作成されます:
bash# プロジェクト構造を確認
tree -a -I 'node_modules|target'
生成されるファイル構造:
perlmy-tauri-app/
├── src-tauri/ # Rust backend
│ ├── Cargo.toml # Rust依存関係設定
│ ├── tauri.conf.json # Tauri設定ファイル
│ ├── build.rs # ビルドスクリプト
│ ├── icons/ # アプリケーションアイコン
│ └── src/
│ └── main.rs # メインのRustコード
├── src/ # フロントエンドソース
├── dist/ # ビルド出力ディレクトリ
├── package.json # Node.js依存関係
└── README.md
重要なファイルの役割:
# | ファイル | 役割 |
---|---|---|
1 | src-tauri/Cargo.toml | Rust 依存関係の管理 |
2 | src-tauri/tauri.conf.json | Tauri 設定の中心 |
3 | src-tauri/src/main.rs | バックエンドのエントリーポイント |
4 | package.json | フロントエンド依存関係の管理 |
設定ファイルの理解
src-tauri/tauri.conf.json
の重要な設定項目:
json{
"build": {
"beforeDevCommand": "yarn dev",
"beforeBuildCommand": "yarn build",
"devPath": "http://localhost:1420",
"distDir": "../dist",
"withGlobalTauri": false
},
"package": {
"productName": "my-tauri-app",
"version": "0.0.0"
},
"tauri": {
"allowlist": {
"all": false,
"shell": {
"all": false,
"open": true
}
},
"bundle": {
"active": true,
"targets": "all",
"identifier": "com.tauri.dev",
"icon": [
"icons/32x32.png",
"icons/128x128.png",
"icons/128x128@2x.png",
"icons/icon.icns",
"icons/icon.ico"
]
},
"security": {
"csp": null
},
"updater": {
"active": false
},
"windows": [
{
"fullscreen": false,
"resizable": true,
"title": "my-tauri-app",
"width": 800,
"height": 600
}
]
}
}
セキュリティ設定の重要性:
Tauri のallowlist
設定は、セキュリティの観点から非常に重要です。デフォルトですべてがfalse
になっているのは、必要最小限の権限のみを許可するためです。
json"allowlist": {
"all": false,
"fs": {
"all": false,
"readFile": true,
"writeFile": false
},
"shell": {
"all": false,
"open": true
}
}
初回ビルドとテスト実行
開発モードでの起動
いよいよ、作成したアプリケーションを実際に動かしてみましょう。この瞬間は、開発者にとって最も感動的な瞬間の一つです。
開発モードでの起動:
bash# プロジェクトディレクトリに移動
cd my-tauri-app
# 開発モードで起動
cargo tauri dev
初回起動時は、依存関係のダウンロードとコンパイルが実行されるため、数分かかる場合があります:
bash Updating crates.io index
Compiling proc-macro2 v1.0.70
Compiling quote v1.0.33
Compiling syn v2.0.39
...
Compiling tauri v1.5.4
Compiling my-tauri-app v0.0.0 (/path/to/my-tauri-app/src-tauri)
Finished dev [unoptimized + debuginfo] target(s) in 2m 45s
よくあるエラー 8: Error: Could not find the required packages
bash# フロントエンドの依存関係をインストール
yarn install
# 再度実行
cargo tauri dev
よくあるエラー 9: thread 'main' panicked at 'webview2 not found'
bash# Windows環境でWebView2が不足している場合
# Microsoft Edge WebView2ランタイムをインストール
# https://developer.microsoft.com/en-us/microsoft-edge/webview2/
ビルドの実行
開発モードで正常に動作することを確認したら、本番用のビルドを実行してみましょう:
bash# 本番用ビルドの実行
cargo tauri build
ビルドプロセスでは、以下のような最適化が行われます:
bash Compiling my-tauri-app v0.0.0 (/path/to/my-tauri-app/src-tauri)
Finished release [optimized] target(s) in 3m 12s
Running `"/path/to/my-tauri-app/src-tauri/target/release/bundle/macos/my-tauri-app.app/Contents/MacOS/my-tauri-app"`
生成されるファイル(macOS の場合):
perlsrc-tauri/target/release/bundle/macos/
└── my-tauri-app.app/
├── Contents/
│ ├── Info.plist
│ ├── MacOS/
│ │ └── my-tauri-app
│ └── Resources/
└── ...
プラットフォーム別の出力ファイル:
# | プラットフォーム | 出力ファイル | 場所 |
---|---|---|---|
1 | Windows | .exe , .msi | target/release/bundle/msi/ |
2 | macOS | .app , .dmg | target/release/bundle/macos/ |
3 | Linux | .deb , .AppImage | target/release/bundle/deb/ |
アプリケーションの動作確認
正常にビルドが完了したら、アプリケーションの動作を確認しましょう:
基本的な動作確認項目:
bash# アプリケーションが正常に起動するか
# ウィンドウが表示されるか
# フロントエンドが正しく読み込まれるか
# メニューバーやアイコンが正しく表示されるか
デバッグ情報の確認:
bash# 詳細なログを出力して実行
RUST_LOG=debug cargo tauri dev
よくあるエラー 10: Failed to initialize webview
bash# 権限関連のエラーが発生した場合
# macOSの場合:システム設定 > セキュリティとプライバシー で許可
# Linuxの場合:必要なライブラリが不足している可能性
sudo apt install webkit2gtk-4.0
パフォーマンスの確認:
bash# メモリ使用量の確認(macOS/Linux)
ps aux | grep my-tauri-app
# プロセス情報の詳細表示
top -p $(pgrep my-tauri-app)
まとめ
Tauri を使ったデスクトップアプリケーション開発の第一歩を踏み出すことができました。この記事を通じて、以下の重要なポイントを学びました:
技術的な収穫:
- Rust の安全性と Web の柔軟性を融合した開発環境の構築
- 軽量で高性能なデスクトップアプリケーションの作成方法
- セキュリティを重視した設定の重要性
開発者としての成長:
- 新しい技術スタックへの挑戦
- エラーハンドリングのスキル向上
- クロスプラットフォーム開発の理解
Tauri は、従来の Electron の課題を解決しながら、Web 開発者が持つスキルを最大限に活用できる素晴らしいフレームワークです。軽量性、セキュリティ、パフォーマンスのバランスが取れており、今後のデスクトップアプリケーション開発において重要な選択肢となるでしょう。
これからの学習の方向性:
- Rust の基本的な構文と概念の理解
- Tauri の高度な機能(プラグイン、カスタムコマンド等)
- CI/CD パイプラインの構築
- アプリケーションの配布とアップデート機能
今回作成したプロジェクトは、あなたの創造性を発揮するための土台です。ここから始まる開発の旅が、きっと素晴らしい成果をもたらすことでしょう。
関連リンク
- review
今の自分に満足していますか?『持たざる者の逆襲 まだ何者でもない君へ』溝口勇児
- review
ついに語られた業界の裏側!『フジテレビの正体』堀江貴文が描くテレビ局の本当の姿
- review
愛する勇気を持てば人生が変わる!『幸せになる勇気』岸見一郎・古賀史健のアドラー実践編で真の幸福を手に入れる
- review
週末を変えれば年収も変わる!『世界の一流は「休日」に何をしているのか』越川慎司の一流週末メソッド
- review
新しい自分に会いに行こう!『自分の変え方』村岡大樹の認知科学コーチングで人生リセット
- review
科学革命から AI 時代へ!『サピエンス全史 下巻』ユヴァル・ノア・ハラリが予見する人類の未来