T-CREATOR

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

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 など、お気に入りのフロントエンドフレームワークをそのまま使えるのは嬉しいですね。

他のデスクトップアプリ開発ツールとの比較

デスクトップアプリ開発の選択肢は多様です。主要なツールと比較してみましょう:

#ツールバンドルサイズメモリ使用量学習コストパフォーマンス
1Tauri小さい(10-50MB)少ない中程度高い
2Electron大きい(100-200MB)多い低い中程度
3Flutter Desktop中程度中程度高い高い
4.NET MAUI中程度中程度中程度高い

Electron と比較した場合の Tauri の優位性:

  • メモリ使用量: Electron アプリが 200MB 以上使うのに対し、Tauri は 50MB 程度
  • バンドルサイズ: Electron の 1/3 から 1/5 程度のサイズ
  • セキュリティ: デフォルトで最小権限の原則を採用

ただし、Electron の豊富なエコシステムと学習コストの低さは魅力的です。プロジェクトの要件に応じて適切な選択をすることが重要ですね。

開発環境の準備

必要な前提条件

Tauri を使った開発を始める前に、以下の前提条件を確認しましょう:

システム要件:

#項目要件
1OSWindows 10+、macOS 10.15+、Linux(Ubuntu 18.04+推奨)
2RAM4GB 以上(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

各質問の詳細説明:

#質問説明推奨値
1App nameアプリケーションの内部名プロジェクト名と同じ
2Window titleウィンドウのタイトルバーに表示ユーザーに見える名前
3Web assets locationビルドされたファイルの場所../dist
4Dev server URL開発サーバーの URLhttp://localhost:1420
5Frontend dev command開発用コマンドyarn dev
6Frontend 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

重要なファイルの役割:

#ファイル役割
1src-tauri​/​Cargo.tomlRust 依存関係の管理
2src-tauri​/​tauri.conf.jsonTauri 設定の中心
3src-tauri​/​src​/​main.rsバックエンドのエントリーポイント
4package.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/
    └── ...

プラットフォーム別の出力ファイル:

#プラットフォーム出力ファイル場所
1Windows.exe, .msitarget​/​release​/​bundle​/​msi​/​
2macOS.app, .dmgtarget​/​release​/​bundle​/​macos​/​
3Linux.deb, .AppImagetarget​/​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 パイプラインの構築
  • アプリケーションの配布とアップデート機能

今回作成したプロジェクトは、あなたの創造性を発揮するための土台です。ここから始まる開発の旅が、きっと素晴らしい成果をもたらすことでしょう。

関連リンク