Hello World (Mac)

Xcode Command Line Tools・rustup・Node.js を入れ、create-tauri-app で作った Tauri 2 アプリを macOS で起動するまで。Apple Silicon の注意点も示す。

環境構築 対象: Tauri 2.x 更新日: 読了目安: 約6分 env-002
目次
  1. 1. Xcode Command Line Tools のインストール
  2. 2. Rust のインストール
  3. 3. Node.js のインストール
  4. 4. プロジェクトの作成
  5. 5. アプリの起動
  6. 動作確認
  7. よくあるエラーと対処法
  8. xcode-select: error: command line tools are already installed
  9. xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun
  10. zsh: command not found: cargo
  11. Apple Silicon なのに x86_64 のツールチェーンが入る
  12. brew install rust で入れていて rustup target add が動かない
  13. 注意点
  14. 関連レシピ

macOS で Tauri 2 の開発を始めるための最初の一歩です。Tauri は Rust でビルドしたバイナリの中に macOS 標準の WebKit を載せる構成なので、必要なのは「C コンパイラ (Xcode Command Line Tools)」「Rust」「Node.js」の 3 つだけです。フル版の Xcode は不要で、App Store から十数 GB をダウンロードする必要はありません。

1. Xcode Command Line Tools のインストール

Rust のリンカが macOS の C ツールチェーンを使うため、まず Command Line Tools を入れます。ターミナルを開いて次を実行します。

xcode-select --install

ダイアログが出るので「インストール」をクリックします。数分〜十数分かかります。完了したらインストール先が表示されることを確認します。

xcode-select -p
# /Library/Developer/CommandLineTools

Xcode 本体を入れている場合は /Applications/Xcode.app/Contents/Developer が返ります。それでも問題ありません。

2. Rust のインストール

Homebrew の rust フォーミュラではなく公式の rustup を使います。ツールチェーンの更新や、Intel 版も配布する際の x86_64-apple-darwin ターゲット追加が rustup 前提だからです。

curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

1) Proceed with standard installation を選んで Enter を押します。完了すると ~/.cargo/bin を PATH に加える行が ~/.zprofile に書き込まれます。ターミナルを開き直すか、次を実行して現在のシェルに反映してください。

. "$HOME/.cargo/env"
rustc --version
cargo --version

3. Node.js のインストール

Node.js 公式サイト の LTS 版インストーラー (.pkg) を実行するのが一番確実です。Homebrew なら次のどちらかです。

brew install node      # 最新版 (LTS とは限らない)
brew install node@22   # LTS を明示。keg-only なので brew が表示する PATH 設定が必要

複数バージョンを切り替えたいなら nvm や fnm でも構いません。最後にバージョンが表示されることを確認します。

node -v
npm -v

4. プロジェクトの作成

プロジェクトを置きたいディレクトリで実行します。

npm create tauri-app@latest

質問には次のように答えます (Enter で既定値を選択できます)。

  • Project name: hello-tauri
  • Identifier: com.example.hello-tauri (逆ドメイン形式。後から変えると設定の保存先パスも変わるので最初に決める)
  • Choose which language to use for your frontend: TypeScript / JavaScript
  • Choose your package manager: npm
  • Choose your UI template: Vanilla
  • Choose your UI flavor: TypeScript
cd hello-tauri
npm install

5. アプリの起動

npm run tauri dev

初回は tauri をはじめ数百のクレートをダウンロードしてコンパイルするため、M1/M2 クラスで 2〜4 分かかります。2 回目以降はキャッシュが効いて数秒〜数十秒です。

動作確認

コンパイルが終わるとウィンドウが開き、「Welcome to Tauri」で始まる見出しとテキスト入力欄が表示されます。名前を入れて「Greet」を押すと Rust 側の greet コマンドが呼ばれ、Hello, <名前>! You've been greeted from Rust! と表示されます。これが WebView と Rust の間で invoke が通っている証拠です。

src/main.ts を編集して保存するとホットリロードされ、src-tauri/src/lib.rs を編集すると Rust が再コンパイルされてウィンドウが開き直します。終了はターミナルで Ctrl + C です。

よくあるエラーと対処法

xcode-select: error: command line tools are already installed

すでに入っています。そのまま次の手順へ進んで構いません。更新は「システム設定 → 一般 → ソフトウェアアップデート」から行います。

xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun

macOS をメジャーアップデートした直後によく起きます。OS 更新で Command Line Tools が無効化されているので、もう一度 xcode-select --install を実行します。Xcode 本体を使うなら sudo xcode-select -s /Applications/Xcode.app/Contents/Developer で切り替えます。

zsh: command not found: cargo

rustup のインストール後にターミナルを開き直していないのが原因です。. "$HOME/.cargo/env" を実行するか新しいタブを開きます。それでも出ないなら ~/.zprofile にその行があるか確認してください。

Apple Silicon なのに x86_64 のツールチェーンが入る

ターミナルが Rosetta で起動していると、rustup は x86_64-apple-darwin を既定にします。uname -m が x86_64 を返すなら Rosetta 起動です。ターミナル.app の「情報を見る」で「Rosetta を使用して開く」を外し、rustup default stable-aarch64-apple-darwin で切り替えます。Homebrew も /opt/homebrew (ARM) と /usr/local (Intel) の混在は避けてください。

brew install rust で入れていて rustup target add が動かない

Homebrew の rust は rustup を含みません。brew uninstall rust してから手順 2 で入れ直します。

注意点

  • 開発中のアプリは署名されていません。tauri build で作った .app を他の Mac に配ると Gatekeeper に止められるため、配布時は署名と公証が必要です。
  • macOS の WebView は Safari と同じ WebKit です。Chrome でしか動かない CSS/JS は開発モードで初めて気づくことがあります。
  • 初回起動時の「ネットワーク接続を許可しますか」は Vite の開発サーバー (localhost:1420) が原因で、許可して問題ありません。

関連レシピ

参考リンク(公式ドキュメント)

Web Ninja

この記事を書いた人

Web Ninja ウェブエンジニア (Web Engineer)

会社員ネットワークエンジニアから独立してかれこれ 25 年以上 Web エンジニアとして活動中。普段は JavaScript と Node.js を自在に操り、時には C++ や Perl といった古流の技も嗜みます。近年は Tauri × Rust という新たな武器を手に、デスクトップアプリ開発の最前線を駆け抜けています。「作りたい」を「作れる」に変えるための、実践的な「技」をお届けします。

お問い合わせ: tauri.ninja@gmail.com

内容の誤り・動かないコードを報告する