コンテンツにスキップ

Tauri アーキテクチャ

Tauri はさまざまな部品の組み合わせが可能で、エンジニアが多種多様なアプリケーションを作成できる、多言語対応の汎用ツールキットです。Rust のツール群と Webview でレンダリングされる HTML の組み合わせを用いて、デスクトップ・コンピューター用アプリケーションの作成に利用されています。Tauri で作成されたアプリには JavaScript API / Rust API をいくつでも同梱できるので、Webview がメッセージ・パッシング〔送受信〕機能を介してシステムを制御可能です。開発者は、デフォルトの API を独自の機能で拡張し、Webview と Rust ベースのバックエンドを簡単に繋ぐことができるのです。

Tauri のアプリでは、「トレイ型インターフェース」(システムトレイ/タスクトレイ)が利用できます。また、アプリは「アプリの自動更新」を利用することで、使用しているオペレーティング・システムによって期待通りのアップデートと管理が可能になります。OS の WebView を使用するためアプリ・サイズは非常に小さく、最終バイナリ(アプリ実行ファイル)が Rust からコンパイルされるので、ランタイム(実行時ファイル)はありません。これにより、Tauri アプリの逆解析は簡単ではありません

Tauri の独自性(「…ではない」部分)

Section titled “Tauri の独自性(「…ではない」部分)”

Tauri は軽量のカーネル・ラッパーではありません。そうではなく、OS へのシステム・コールを実行する際に、WebView レンダリング・ライブラリーの「WRY(ライ)」とウィンドウ生成ライブラリーの「TAO(タオ)」を直接使用して、重く手間のかかる処理を実行しています。

Tauri は バーチャル・マシン(VM)や仮想環境でもありません。Tauri は、WebView OS アプリケーションを作成できるアプリケーション・ツールキットなのです。

《訳注》

カーネル・ラッパー kernel wrapper: 異なるシステムのドライバやシステムコールを動作させる仕組み VM virtual machine: 仮想計算機

Diagram
Tauri アーキテクチャの構成略図

GitHub で閲覧

「tauri」がすべてを包括した主要クレートです。ここで、ランタイム、マクロ、ユーティリティ、API を一つの最終製品にまとめています。コンパイル時に tauri.conf.json ファイルを読み込み、機能の導入とアプリの実際の構成設定を(さらにはプロジェクト・フォルダー内の Cargo.toml ファイル設定さえも)行ないます。実行時にはスクリプトの挿入を処理し(polyfill コードやプロトタイプの改訂用)、システム操作用の API をホスト(実行可能に)し、更新プロセスをも管理します。

tauri-runtime(タウリ・ランタイム)

Section titled “tauri-runtime(タウリ・ランタイム)”

GitHub で閲覧

「tauri-runtime」は、Tauri 本体と下位レベルの Webview ライブラリとを接合するレイヤーです。

GitHub で閲覧

「tauri-macros」は、tauri-codegen クレートを活用して、コンテキスト、ハンドラー、およびコマンドのマクロを作成します。

tauri-utils(タウリ・ユーティリティ)

Section titled “tauri-utils(タウリ・ユーティリティ)”

GitHub で閲覧

「tauri-utils」は、設定ファイルの解析、動作環境(プラットフォーム種別)の検出、CSP(コンテンツ・セキュリティ・ポリシー)の挿入、アセットの管理など、多くの場所で再利用され、便利なユーティリティを提供する共通のコードです。

《訳注》

プラットフォーム種別 platform triples: アプリの対象となる三要素「CPU - ベンダー - OS/システム」の組み合わせを示す識別文字列のこと。「target triple」ともいう。《例: x86_64-unknown-linux-gnu》 CSP Content Security Policy: コンテンツ・セキュリティ・ポリシー 《「コンテンツ・セキュリティ・ポリシー」を参照

GitHub で閲覧

「tauri-build」は、ビルド時にマクロを適用して、cargo に必要ないくつかの特別な機能を装備します。

tauri-codegen(タウリ・コードジェン)

Section titled “tauri-codegen(タウリ・コードジェン)”

GitHub で閲覧

「tauri-codegen」は、アプリのアイコンやシステム・トレイなどを含むアセット(デジタル資産)を埋め込み、ハッシュ化し、圧縮します。コンパイル時に tauri.conf.json を解析し、Config 構造体を生成します。

tauri-runtime-wry(タウリ・ランタイム・ライ)

Section titled “tauri-runtime-wry(タウリ・ランタイム・ライ)”

GitHub で閲覧

「tauri-runtime-wry」。このクレートは、印刷・モニター検出・その他のウィンドウ関連のタスクなど、特に WRY 用の直接的なシステム・レベルでの「対話型操作」(インタラクション)を開始します。

GitHub で閲覧

フロントエンド(ユーザー・インターフェイス)のフレームワークにインポートするための cjs(CommonJS モジュール)および esm(ECMAScript モジュール)JavaScript エンドポイントを作成する Typescript のライブラリです。これにより、Webview がバックエンド(プログラム内部処理)でのアクティビティを呼び出して(コール)・応答待機(リッスン)できるようになります。また、いくつかのフレームワークではより最適な形態である「純然たる Typescript 形式」でも出力されます。このライブラリは Webview からそれぞれのホスト(接続先)へのメッセージ・パッシング機能(処理依頼)を利用します。

GitHub で閲覧

「Bundler」(バンドラー)は、検出または指定されたプラットフォーム(os)用の Tauri アプリをビルドするライブラリです。現在は macOS、Windows、Linux をサポートしていますが、近い将来にはモバイル・プラットフォームもサポートされる予定です。Tauri プロジェクト以外でも使用できる可能性があります。

GitHub で閲覧

この Rust 実行可能ファイルは、CLI(コマンドライン・インターフェイス)が必要なすべてのアクティビティに対する完全なインターフェースを提供します。このプログラムは macOS、Windows、Linux のいずれでも動作します。

GitHub で閲覧

cli.js は、napi-rs を使用して cli.rs をどのプラットフォーム(os)でも利用できるようにしたラッパーで、npm パッケージを生成します 《npm = Node.js Package Manager》。

GitHub で閲覧

このツールキットは、選択したフロントエンド・フレームワークを用いた新しい tauri-apps のプロジェクトを、技術チームが迅速に構築できるようにするためのものです(事前設定が必要です)。

Tauri-Apps チームは、「上流」の二つのTauri のクレート、つまりアプリケーション・ウィンドウの作成と管理を行なう「TAO(タオ)」と、ウィンドウ内の Webview と連動する「wry(ライ)」を維持管理しています。

GitHub で閲覧

「Tao(タオ)」は、Rust で書かれたクロスプラットフォーム・アプリケーション・ウィンドウ作成ライブラリで、Windows、macOS、Linux、iOS、Android など、すべての主要プラットフォームをサポートしています。Rust で書かれており、メニュー・バーやシステム・トレイなど、Tauri 独自のニーズに合わせて拡張された winit の派生版(フォーク)です。

GitHub で閲覧

「WRY(ライ)」は、Rust で書かれたクロスプラットフォーム WebView レンダリング・ライブラリで、Windows、macOS、Linux など主要なデスクトップ・プラットフォームをすべてサポートしています。 Tauri は WRY を抽象レイヤーとして使用し、どの Webview が使用されるか(およびどのようにインタラクション/相互交信が行なわれるか)を決定する役割を担っています。

tauri-action(タウリ・アクション)

Section titled “tauri-action(タウリ・アクション)”

GitHub で閲覧

「tauri-action」は、すべてのプラットフォーム向けの Tauri バイナリをビルドする GitHub ワークフロー(自動化プロセス)です。Tauri が設定されていない場合でも、(非常に簡単な)Tauri アプリを作成できます。

GitHub で閲覧

このツールは、いくつかの「あると便利な機能」を提供し、Visual Studio Code のインターフェイスを強化します。

Tauri プラグイン・ガイド

一般的に言えば、プラグインはサードパーティによって作成されるものです(公式の、サポートされているプラ​​グインが存在する場合もありますが)。プラグインは通常、次の三つのことを行ないます:

  1. 「何かを行なうため」に Rust のコードを実行可能にします
  2. アプリへの統合を容易にするインターフェース・グルー機能(glue)を提供します
  3. Rust コードとのインターフェース用 JavaScript API を提供します
《訳注》

** インターフェース・グルー** interface glue: 異なる二つの部分を接着・結合すること。Tauri では、Rust 言語によるバックエンド部と、JavaScript 言語によるフロントエンド部を「接着 glue」して、ひとつのアプリに統合する機能。

以下は、Tauri のプラグイン例です:

Tauri 自体は MIT または Apache-2.0 のライセンスの下で配布されています。あなたが Tauri を再パッケージ化してソース・コードを変更する場合、すべての上流のライセンスに準拠していることを確認する責任は、あなた自身にあります。Tauri は現状のまま無保証で提供され、どのような目的に対してもその適合性について明確に表明するものではありません。

こちらで、 ソフトウェア部品表《Tauri が利用している共通ライブラリ類の一覧》 の詳細を確認することができます。

【※ この日本語版は、「Jun 30, 2026 英語版」に基づいています】


© 2026 Tauri Contributors. CC-BY / MIT