メインコンテンツへ移動

トランスポート比較

このページは、拡張モデルに合ったランタイムトランスポートを選ぶためのものです。 すべての選択肢は同じレンダリングチャネルセマンティクスを使いますが、隔離性、運用コスト、本番適性は異なります。

比較マトリクス

見出しへのリンク
モード隔離性トランスポートの現実性統合の複雑さ向いている用途本番での指針
iframe🟢(ブラウザコンテキスト境界)🟢(postMessage のライフサイクルや origin モデルが現実に近い)🟡厳格な境界が必要な非信頼拡張ブラウザホスト拡張の既定値として推奨
Window (popup)🟡(別ウィンドウ。ポリシーは origin チェックとライフサイクル処理に依存)🟢(明示的なウィンドウ間 postMessage 境界)🟡独立した可視ワークスペースを必要とするツール型拡張popup UX を許容でき、厳格な origin / ライフサイクル制御がある場合に推奨
MessagePort🟡(ポートで接続されたコンテナコンテキストに依存)🟢(structured-clone セマンティクスを持つ明示的な非同期チャネル)🟡カスタムランタイムハンドシェイクやオーケストレーションブリッジ明示的なチャネル制御が必要な場合のトランスポート原語として推奨
Web Worker🟢(別 worker コンテキスト。リモートに DOM アクセスなし)🟢(非同期境界と専用 worker ライフサイクル)🟡計算負荷が高い、または DOM 非依存のリモートランタイムiframe ドキュメントが不要な場合に推奨
Desktop IPC🟡(デスクトップのプロセス隔離や preload / capability ポリシーに依存)🟢(明示的なプロセス間非同期境界)🔴分離ランタイムを持つ Electron / Tauri プラグイン基盤IPC ポリシーを堅牢化したデスクトップシェルに推奨
Socket🟡(ランタイム配置とホストポリシーに依存)🟢(ネットワークレベルの遅延、再接続、順序が明示的)🔴マルチプロセス、クロスマシンの拡張ランタイムやライブリモートセッション強い認証 / プロトコル統制を持つ高度なプラットフォームに推奨
In-memory🔴(単一ランタイム)🔴(実際のトランスポート境界がない)🟢開発ハーネス、統合テスト、高速診断本番隔離には非推奨

凡例:

  • 統合の複雑さ: 🟢 低、🟡 中、🔴 高。
  • 隔離性トランスポートの現実性: 🟢 強い、🟡 コンテキスト依存、🔴 弱い。
  • これらの評価は典型的な拡張プラットフォームの比較であり、絶対的な保証ではありません。

ざっくりした指針

見出しへのリンク
  1. 保守的なブラウザ隔離を求めるなら、まず iframe から始める。
  2. コンテナ間で明示的なカスタムチャネル接続が必要なら MessagePort を使う。
  3. リモートコードが document を必要とせず、軽量な隔離が欲しいなら Web Worker を使う。
  4. Electron / Tauri のプロセス分離拡張ランタイムには Desktop IPC を使う。
  5. ランタイムトポロジーがプロセスやマシンをまたぐなら Socket を使う。
  6. In-memory は dev/test の高速化のみに使う。

関連ドキュメント

見出しへのリンク