# ウェブ拡張型ソフトウェア
## 定義
ウェブ拡張型ソフトウェアとは、責任ある中核機能を固定しつつ、ユーザーが作成したコードを安全な実行境界と狭いケイパビリティを介して追加できるウェブアプリケーションの設計である。[[Jeremy Morrell]] は、LLM が拡張の作成コストを下げ、V8 Isolate、MicroVM、WASM などが配置・分離コストを下げることで、これまで製品本体が扱えなかった需要曲線の長い尾へ対応できると仮説化する。(Source: [[@2026__jeremymorrell.dev__Extensible Software in the age of LLMs]])
## 構成原理
- **責任ある中核**: 認証、データ整合性、テナント分離、監査など、サービス運営者が保証する機能を本体に残す
- **ユーザー拡張**: 個人やチーム固有のビュー、変換、ワークフロー、調査、操作を拡張として切り出す
- **安定した拡張点**: レコード更新、イベント、スケジュール、UI、データ取り込み、アラームなどをフックとして公開する
- **狭い作用能力**: 広い API や認証情報ではなく、特定の操作だけを表すケイパビリティを拡張へ渡す
- **共有可能性**: 個別の拡張をパッケージ化し、同じ要求を持つ他のユーザーへ共有する
- **観測可能性**: ユーザーコードの実行、資源消費、失敗、外部作用を利用者と運営者が確認できる
## LLM との関係
LLM は拡張の作成に必要なコード記述・API 調査・テストのコストを下げるが、拡張の安全性を自動的に保証するわけではない。したがって、LLM を使った作者支援と、実行時の制限・監査・ロールバック・ケイパビリティ管理は別の責務として設計する必要がある。
この分離により、ソフトウェア利用者を開発者へ変えるのではなく、自然言語で要求を指定できる利用者へ、専門職固有の道具を提供できる。
## 安全境界
ウェブ拡張では、拡張のクラッシュ・無限ループ・過剰なメモリ確保・サービス拒否・認証情報の流出・機密データの外部送信・投機実行攻撃を考慮しなければならない。CPU、メモリ、ネットワーク要求、応答、ログ量の制限と、他テナントからの障害分離が実行プリミティブの前提になる。
[[Extension Interface Model]] は、ホスト関数、状態、ハードウェア資源をリソースとしてモデル化し、拡張入口ごとに許可するケイパビリティを指定する。ウェブ拡張型ソフトウェアは、この細粒度の安全な拡張インターフェースを、LLM が生成するユーザーコードとマルチテナントウェブサービスへ適用する上位の製品設計と位置づけられる。(Source: [[@2025__OSDI__Extending Applications Safely and Efficiently]])
## 実行方式
- インタプリタ: Lua、QuickJS、専用言語
- V8 Isolate: JavaScript の軽量実行と高速起動
- MicroVM: 強い分離、POSIX、バイナリ実行能力。ただし起動・メモリコストは大きい
- WASM + WASI: 多言語コンパイルと、ホストが付与するケイパビリティの明示
- 組み合わせ: WASM を V8 Isolate や MicroVM 内で動かす構成
分離プリミティブとケイパビリティモデルは同一でなくてよい。実行環境が能力モデルを提供しない場合でも、オブジェクト能力プロトコルやホスト側の狭い関数参照を組み合わせられる。
## サーバーレスとの接続
[[サーバーレスアーキテクチャ]] が FaaS を糊として複数の BaaS を接続し、インフラの管理単位を利用者から隠蔽するのに対し、ウェブ拡張型ソフトウェアはその接続点をユーザーが生成・共有するコードへ開く。これはサーバーレスの実行モデルをそのまま採用することではなく、FaaS のイベント起動・課金・自動スケールと、ユーザー固有の拡張インターフェースを結合する設計である。(Source: [[@2019__yuuk.io__Rethinking-Serverless-Architecture]], [[@2026__jeremymorrell.dev__Extensible Software in the age of LLMs]])
## 横断的知見
- **拡張の作成コストと実行の安全コストは別の曲線である**: LLM はユーザー拡張の作成コストを下げるが、EIM は拡張入口ごとの最小権限・検証・隔離を要求する。作者支援が進むほど実行境界を弱めてよいのではなく、生成量の増加に合わせて安全な拡張インターフェースの重要性が増す。(Source: [[@2026__jeremymorrell.dev__Extensible Software in the age of LLMs]], [[@2025__OSDI__Extending Applications Safely and Efficiently]])
- **ウェブ拡張は FaaS の「BaaS をつなぐ糊」をユーザー向けに再公開する設計とみなせる**: 2019 年のサーバーレス論は Function をサービス間の接着層として説明した。2026 年のウェブ拡張論は、その Function の一部をユーザーが自然言語から生成し、イベント・UI・スケジュールへ接続する。(Source: [[@2019__yuuk.io__Rethinking-Serverless-Architecture]], [[@2026__jeremymorrell.dev__Extensible Software in the age of LLMs]])
- **「プラットフォーム化」は自由なコード実行ではなく、責任境界の再配置である**: Salesforce の Apex、OSDI の EIM、Dynamic Workers の候補構成はいずれも、ホストが保証する実行環境と利用者が変更するロジックを分ける。差は、専用言語・拡張入口・動的サーバーレスコードという境界の置き方にある。(Source: [[@2026__jeremymorrell.dev__Extensible Software in the age of LLMs]], [[@2025__OSDI__Extending Applications Safely and Efficiently]])
## 未解決の問い
- LLM が生成した拡張を、公開前・実行時・更新時のどの段階で検証すべきか。
- ユーザーが意図した操作を、狭いケイパビリティとデータ分離へ自動変換する方法は何か。
- 拡張の自由度を保ったまま、テナント間の情報流出・資源枯渇・サプライチェーン攻撃をどう監査するか。
- 長時間・非決定的なエージェント拡張で、再試行・中断・ロールバック・冪等性をどう保証するか。
- 拡張の作者が少数に集中する場合、共有エコシステムの品質・保守・権限審査をどう設計するか。
- Salesforce 型の専用プラットフォームと、WASM・Isolate・MicroVM の組み合わせの総保有コストはどの条件で逆転するか。
## 関連
- ソース: [[@2026__jeremymorrell.dev__Extensible Software in the age of LLMs]] / [[@2025__OSDI__Extending Applications Safely and Efficiently]] / [[@2019__yuuk.io__Rethinking-Serverless-Architecture]]
- 概念: [[LLMネイティブソフトウェア]] / [[Extension Interface Model]] / [[Capability-based Security]] / [[WebAssembly]] / [[サーバーレスアーキテクチャ]] / [[AIネイティブ開発]]
- エンティティ: [[Dynamic Workers]] / [[Cloudflare OS]] / [[Salesforce]] / [[Pi]] / [[Cloudflare]]
## 出典
- [[@2026__jeremymorrell.dev__Extensible Software in the age of LLMs]]
- [[@2025__OSDI__Extending Applications Safely and Efficiently]]
- [[@2019__yuuk.io__Rethinking-Serverless-Architecture]]