Google I/O 2026で発表されたHTML-in-Canvas APIが、Chrome Canaryでorigin trial開始されました。この新しいAPIは、HTML要素をcanvas内に配置し、DOMとcanvasの変換を同期することで、コンテンツが完全にインタラクティブなまま、すべてのブラウザ統合機能を自動的に動作させることができます。
これまでのウェブ制作では、複雑で高度にインタラクティブなビジュアルアプリケーションを構築する際、DOMの豊富なセマンティック機能に頼るか、低レベルのグラフィックパフォーマンスのためにcanvas要素に直接レンダリングするかという困難な設計選択を迫られていました。HTML-in-Canvas APIにより、この二者択一の制約から解放されます。
実用性を重視したブラウザ機能の保持
DOMはアクセシビリティツール、翻訳機能、ページ内検索、リーダーモード、拡張機能、ダークモード、ブラウザのズーム、オートフィルといった必須のブラウザ機能と統合されています。従来のcanvasベースのアプリケーションでは、すべての強力なブラウザ機能がcanvasの静的なピクセルグリッド内でUIが捕らえられると完全に動作しなくなってしまうという問題がありました。
新しいAPIでは、canvas内でレンダリングされたコンテンツがアクセシビリティツリーに公開され、ユーザーが3Dシーン内でテキストをハイライトしたり、右クリックコンテキストメニューをネイティブに使用できるようになります。これは制作現場にとって大きな前進です。
実装は思っているよりもシンプルで、canvas要素にlayoutsubtree属性を追加し、onpaintイベントでdrawElementImage()メソッドを使ってDOM要素を描画するだけです。Three.jsはすでにPR #31233でHTMLTextureクラスの統合を提供しており、InteractionManagerアドオンによって、ブラウザがヒットテスト、ホバー、フォーカス、入力をネイティブに処理できます。
現在はChromium系ブラウザ(Chrome、Edge 146+)でcanvas-draw-elementフラグを有効にする必要があります。FirefoxとSafariは実装のタイムラインを示していないため、まずはプロトタイプ制作での実験から始めることが推奨されています。
このAPIは単なる技術的な進歩ではなく、ウェブプラットフォームにとってここ数年で最も重要な変化のひとつと評価されています。アクセシブルな3D UI、WebGL内でのライブDOM、座標系の問題なしでのインタラクティブオーバーレイといった、長年求められてきた用途が実現可能になりました。制作現場でも、複雑なライブラリやワークアラウンドに頼らずに、直感的なHTML+CSSの知識を活かした高度なビジュアル表現が可能になることが期待されています。













