概要
- Webプラットフォームに 宣言的テンプレートAPI を追加する提案
- 現状、DOM APIは強力だが テンプレート機能が標準で不足
- テンプレートがないことで ユーザー・開発者・プラットフォーム全体に悪影響
- 現在は API追加の好機 であり、既存の知見も豊富
- JavaScriptベースのテンプレートAPI導入が 現実的かつ効果的
Webプラットフォームに宣言的テンプレートAPIを追加するべき理由
- Webプラットフォーム は最も成功したアプリケーション実行環境
- DOM API のおかげで静的ドキュメントから動的なアプリケーションランタイムへ進化
- DOMは強力だが、「 宣言的テンプレート」の標準APIが存在しない現状
- データバインディング、イベントリスナー追加、プロパティ設定、XSS安全性、効率的な更新を 一貫して実現できるAPIが不在
- これらのテンプレート機能は React、Vue、Angular、Svelte など全ての主要フレームワークの基盤
- 宣言的テンプレートの利点
- 命令型APIより記述性・可読性が高い
- XSS対策が容易
- 高パフォーマンスな差分更新
- 型チェックや静的解析が容易
- サーバーサイドレンダリング対応
- テンプレート機能の欠如による影響
- ユーザー :アプリの初回表示遅延、ライブラリのダウンロード待ち、不安定なセキュリティ
- 開発者 :npmやCDNへの依存、学習コスト増大、ポータブルな知識の欠如、安全でないAPIの利用
- フレームワーク開発者 :テンプレート実装の負担、性能・機能・サイズのトレードオフ
- プラットフォーム :ネイティブ競合(Flutter、SwiftUI等)に対する競争力低下
なぜ今テンプレートAPIを追加すべきか
- 過去にも E4X や
htmlタグリテラルなどの提案があったが、更新性が弱く失敗 - 現在はフレームワークの進化により、 良いテンプレート構文やリアクティビティモデルの知見が蓄積
- バニラJSやWeb Components コミュニティからも、使いやすいDOM操作・リアクティビティAPIへの強い需要
- DOM Parts など低レベルAPIの提案も進行中だが、より高レベルな宣言的APIが必要
- テンプレート記述の 構文・セマンティクスの共通化 が進み、標準化の好機
JavaScriptベースのテンプレートAPIの現実性
- Tagged Template Literals (ES2015)によるテンプレート記述が既に実用化
- React、Lit、Solid など多くのライブラリがこの方式で成功
- JSXのような構文も人気だが、 標準化にはセマンティクス定義が必要 で課題が多い
- 現状でも JSX→Tagged Template Literal への変換ツールが存在し、ユーザー側で選択可能
- 将来的にJSX標準化が進めば、 テンプレートAPIをターゲットにできる下地作りが可能
HTMLベースのテンプレートAPIとの比較
- 多くの開発者が HTMLベースのテンプレートAPI を求めている現状
- しかしHTMLベースは バインディング構文、式言語、制御構造、更新メカニズム 等の新規設計が必要
- JavaScriptベースなら 既存の言語機能やエコシステムを活用可能
- HTMLベースのAPIは将来的な拡張として検討し、まずは JSベースのAPI導入が現実的
まとめ
- 宣言的テンプレートAPI の標準化はWeb開発の生産性・安全性・パフォーマンスを大幅に向上
- 現状のDOM API では満たせないニーズをカバー
- フレームワークの知見 を活かし、プラットフォーム全体の競争力強化
- まずは JavaScriptベースAPI から導入し、将来的な拡張も視野に入れるべき