Tauriのアーキテクチャまとめ

Electronのようにフロントエンド技術を用いてデスクトップアプリケーションを作成できるTauriですが、2022年4月にStable版をリリース予定です。
と思ってこの記事を作っておいてリリースされたら投稿しようと思っていたのですが、記事投稿の2020/5/8時点でrc10で待ってられないので、リリース前の確認ということで、公式サイトのDocsにあるアーキテクチャをまとめて確認しておきましょう。

Tauriアーキテクチャ

ここでいう「アーキテクチャ」とは、Tauri自身のTauri CoreやWryなどといったTauriの構成を指すものではなく、Tauriを用いたデスクトップアプリケーションを作成する手法のことを言います。
PatternsとRecipesからなり、PatternsはTauriのRustサイド(Tauri Core)とJavaScriptフロントエンドとのやり取りをどうするかを決め、RecipesはTauriを用いてRustとJavaScriptをどのように共存して協調させるかの例を示すものです。
どちらも公式サイトにあります。それぞれ見ていきましょう。

Patterns

Tauriアプリケーションを作るパターンです(雑な説明)。BrownfieldとIsolationの2通りのパターンがあります。

Brownfield

ブラウンフィールドとは、ITの分野において、新しい技術を既存の技術のすぐ近くで使うといった開発のことを言うようです。Tauriの場合、Webフロントの既存ページをTauriによるアプリケーション化を行うとき、急に様々な知識や技術が必要となってしまうため、まずはあまり変更を加えなくても良いような使い方で開発をしてみるといったことです。

Tauri Core側の実装次第では既存のフロントエンドの技術がすべてそのまま使用できない可能性があります。特に次に示す項目の非互換性が知られています。

    • LinuxでのWebRTCサポート

 

    • いくつかのAPI(クリップボードなど)

 

    • URLでのダウンロードリンク/Blob

 

    より良いローカライゼーション

Electronから移るには適しているかな、と思います。

これはTauriのデフォルトパターンで、tauri.conf.jsonファイルを次のようにして設定します。

{
  "tauri": {
    "pattern": {
      "use": "brownfield"
    }
  }
}

Isolation

WebフロントエンドとTauri Coreの間にIsolationアプリケーションと呼ばれるJavaScriptコードを挟むことでそれぞれを隔離しセキュリティを高めるパターンです。
この手法ではTauri CoreのAPI呼び出しを常にIsolationアプリケーションが傍受するので、不適当なAPI呼び出しを防ぐことができます。例えば、あるサイトのみに接続するとわかっている場合、HTTPリクエストのAPIを傍受した際にそのドメインを確認することや、アプリケーション内のディレクトリしか使用しないとわかっている場合はその他のディレクトリを読み出そうとしていないかを確認することなどが挙げられます。問題がある場合それらの実行を防ぐことができます。

これは近年のWebアプリケーションが複雑な依存関係の上に成り立っているために、意図しないコードが注入される可能性があるため、その脅威から防ぐために使用されます。Isolationパターンが使用できる場合はこちらを使用することが推奨されます。
傍受によるオーバーヘッドは通常無視できるほど小さいですが、Isolationパターンを使用したくない場合は、依存関係をなるべく小さく慎重にすることが求められます。

プラットフォームごとに差異があると困るので、Windowsのサンドボックスの制約により、ECMAScriptのModuleを使用することができません。これは

广告
将在 10 秒后关闭
bannerAds