Tauriはフロントエンドの技術としてWeb技術(HTML/CSS/JavaScript)を使用しているため、Webブラウザでできることは基本的にすべてTauriのフロントエンドでできます。
しかし、「Tauri単体(Web技術のみ)ではできないこと」は、主にOSのネイティブ機能へのアクセスが必要な部分になります。
⚠️ Tauriのフロントエンド(Web側)単体ではできないこと
Tauriは、Webブラウザの制限を取り払ってデスクトップアプリとして機能させるために、以下の処理を必ずバックエンドのRustコードを経由させる必要があります。
- OSの低レベルな機能の操作
Web技術だけではセキュリティ上の制限からアクセスが禁じられている、OSに深く関わる操作です。
キーボードやマウスの操作シミュレーション: バーチャルキーボードの例でいうと、ユーザーの代わりにキー入力をOSに送信する機能は、Web側のJavaScriptでは実現できません。これはRustのライブラリ(enigoなど)を経由する必要があります。
通知の表示: OSのネイティブな通知領域にメッセージを表示すること。(ただし、TauriはJavaScriptから簡単に呼び出せる@tauri-apps/api/notificationを提供しており、内部でRustを経由しています。)
システム情報の取得: CPUやメモリの使用状況、OSのバージョンなどの詳細なシステム情報を取得すること。
- ファイルシステムや外部デバイスへのアクセス
セキュリティ上の理由から、Webブラウザでは許可されていないローカルファイルや外部デバイスへの直接的なアクセスです。
ローカルファイルやフォルダの読み書き: ユーザーの許可なく勝手にPC上のファイルを操作することはできません。ファイルのオープン/保存ダイアログの表示、ファイルの読み書きなどは、Rustバックエンドの機能を使います。
シリアルポートやUSBデバイスへのアクセス: 外部のハードウェアと通信する場合、ネイティブなAPIを経由する必要があります。
- アプリケーションウィンドウ自体の制御
ウィンドウの状態を変更したり、独自のメニューを作成したりする操作です。
ウィンドウの最小化、最大化、サイズ変更:
カスタムメニューバーの作成:
「常に最前面表示 (Always on Top)」などの特殊なウィンドウ設定:
✅ まとめ
Tauriは、Webブラウザと同じようにUIの構築とユーザーとのやり取りはフロントエンド(Web技術)で行い、OSやシステムとのやり取りはバックエンドのRustが行うという役割分担をしています。
そのため、フロントエンド単体でできないことがあったとしても、TauriのAPIを通じてバックエンドのRust機能を呼び出すことで、必要なデスクトップアプリの機能を実現できます。