カテゴリー: Mozilla Hacks記事紹介

  • WebGPUはWebGLの後継以上。Firefox実装記事から見るGPU APIの設計思想

    WebGPUはWebGLの後継以上。Firefox実装記事から見るGPU APIの設計思想

    Mozilla Hacksの2020年4月23日付記事「A Taste of WebGPU in Firefox」を紹介します。

    この記事は、Firefox Nightlyで実験的にWebGPUを動かし始めた時期の解説です。2020年の記事なので現在の実装状況とは距離がありますが、WebGPUが何を目指したAPIなのか、WebGLからどこを変えようとしていたのかを理解するには今でも読みどころがあります。

    WebGPUは何を変えるのか

    記事では、WebGPUを「WebからGPUのグラフィックス・計算能力へアクセスするためのAPI」として紹介しています。WebGLがOpenGL ESに近いモデルで3D描画をWebへ持ち込んだのに対し、WebGPUはVulkan、Direct3D 12、Metalのような現代的なGPU APIを前提に設計されています。

    参照先のW3C GPU for the Web Community Groupでも、Webプラットフォームと現代的な3Dグラフィックス・計算機能の間にインターフェースを提供することが目的として説明されています。WebGPUは単なる描画APIというより、GPU計算も含めた新しい低レベル基盤として設計されているわけです。

    WebGLとの違い

    記事がわかりやすく整理しているのは、WebGLとの構造上の違いです。WebGLではコンテキストに多くの状態が集まりがちですが、WebGPUではリソース作成、コマンド記録、コマンド送信が分かれます。`GPUDevice`、`GPUCommandEncoder`、`GPUCommandBuffer`、`GPUQueue` のように役割を分けることで、より複雑な処理やワーカー活用にも向いたモデルになります。

    現在のMDNのWebGPU API解説でも、WebGPUはWebGLの後継として、より現代的なGPUとの互換性、汎用GPU計算、より安価なCPU側処理、より高度な描画機能を提供するものとして説明されています。一方で、MDN上ではまだBaselineではなく、HTTPSなどのセキュアコンテキストが必要なAPIとして扱われています。

    Firefox実装の技術スタック

    Firefox側の話として面白いのは、実装の中核にRust系のプロジェクトが出てくることです。記事では、FirefoxのWebGPU実装がwgpu系のプロジェクトを使い、Vulkan風のGPUワークロードをD3D12、D3D11、Metal、OpenGLへ橋渡しする構成だったと説明されています。

    また、シェーダーまわりではNagaのようなRust製のシェーダー変換・検証基盤が関係します。WebGPUはGPUに近い低レベルAPIなので、性能だけでなく、入力の検証、シェーダー言語、ブラウザ安全性の設計が重要になります。

    標準化と現在地

    記事内リンクのgpuweb GitHubリポジトリは、GPU for the Webの議論や仕様作業が行われている場所です。2020年の記事では仕様がまだ大きく変化している段階として紹介されていますが、現在のMDNドキュメントを見ると、WebGPUは実装とドキュメントがかなり具体化しています。

    同時に、WebGPU実装状況ページのような参照先を見ると、実装状況や対応範囲はブラウザ・環境ごとに確認が必要です。WebGPUは強力なAPIであるぶん、開発者側も互換性や実行環境を前提に設計する必要があります。

    気づき

    今回の記事で特に印象的なのは、WebGPUが「WebGLを少し速くするAPI」ではなく、GPUプログラミングのモデル自体をWeb向けに作り直す試みだったことです。リソース、パイプライン、バインディング、コマンド記録を明示的に扱う設計は、Web開発者にとっては難しさも増えますが、そのぶんネイティブ寄りの高度なグラフィックスや計算をWebへ持ち込む土台になります。

    WebAssemblyとも相性がよく、ゲーム、可視化、機械学習、CADのような領域で「Webで動くから簡易版」という前提を崩していく可能性があります。この記事は、その方向性がまだ実験段階だったころの記録としても面白いです。

    参照元: A Taste of WebGPU in Firefox

  • FirefoxのOHTTPとPrio導入は、計測とプライバシーを両立するための設計だった

    FirefoxのOHTTPとPrio導入は、計測とプライバシーを両立するための設計だった

    Mozilla Hacksの2023年10月12日付記事「Built for Privacy: Partnering to Deploy Oblivious HTTP and Prio in Firefox」を紹介します。

    この記事のテーマは、Firefoxを改善するための計測と、ユーザーの閲覧プライバシーをどう両立するかです。ブラウザを速く、壊れにくくするには実ユーザー環境のデータが役立ちます。一方で、どのサイトで何が遅くなったかをそのまま集めれば、閲覧履歴に近い情報になってしまいます。

    OHTTPとDAP/Prioで何を分けるのか

    記事では、MozillaがFastlyとDivvi Upと協力し、FirefoxにOblivious HTTPとPrioベースのDistributed Aggregation Protocolを導入していくことが説明されています。

    Oblivious HTTPは、暗号化されたHTTPメッセージを中継者経由で転送することで、送信元と内容の結びつきを分離する仕組みです。Firefoxの文脈では、FastlyがOHTTPリレーを運用することで、Mozilla側がリクエストの発信元を直接知りにくくする構成になります。Fastly側の発表「Firefox and Fastly take another step toward a privacy upgrade for the internet」でも、この役割が説明されています。

    一方、Distributed Aggregation Protocolは、個々の測定値をそのまま1箇所へ送るのではなく、複数の集計者に分割して扱うためのプロトコルです。Divvi Upの「Divvi Up is providing privacy-preserving metrics for Firefox」では、Firefoxの計測値を2つの理解不能な断片に分け、片方をDivvi Up、もう片方をMozilla側の集計者へ送る構成が紹介されています。

    なぜFirefoxに必要なのか

    Mozillaはすでにページロード時間などの汎用的な性能メトリクスを扱っていますが、特定サイトに結びつく形で収集すると閲覧履歴の露出につながります。記事では、あるサイトが一晩で急に遅くなったような場合、その原因を知ることはFirefox改善に有用だが、従来の素朴な収集方法ではプライバシー上の問題があると説明されています。

    ここでOHTTPとDAP/Prioが効いてきます。OHTTPは送信元と宛先の関係を分け、DAP/Prioは個々の値ではなく集計値を得るためにデータを分散します。どちらも「誰か1者が全体像を持たない」ことを設計の中心に置いています。

    参照リンクから見える位置づけ

    記事の背景にあるMozilla’s Vision of the Webでは、Web上の活動は標準でプライベートであるべきだという方向性が示されています。同時に、ブラウザやWebを良くするための計測が必要になる場面もあります。この2つを対立させるのではなく、技術設計で両立させようとするのが今回の取り組みです。

    また、ISRGはLet’s EncryptやDivvi Upを運営する非営利組織です。記事では、FastlyとISRG/Divvi Upのような独立した信頼できる組織と組むことが重要だと説明されています。プロトコルだけでなく、運用主体の分離もプライバシー保証の一部になっているわけです。

    気づき

    この話で特に重要だと感じたのは、「プライバシーを守る」と「何も測らない」は同じではないという点です。何も測らなければ改善は難しく、全部集めればユーザーの信頼を失います。OHTTPやDAP/Prioは、その間にある第三の道として、改善に必要な集計結果だけを得るための構造を作っています。

    Webサービスやアプリでも、単にログを削るか集めるかの二択ではなく、誰が何を見られる設計なのか、どこで分割するのかを考える余地があります。Firefoxの取り組みは、プライバシーを理念ではなくアーキテクチャとして実装する例として参考になります。

    参照元: Built for Privacy: Partnering to Deploy Oblivious HTTP and Prio in Firefox

  • Speedometer 3は、FirefoxだけでなくWeb全体を速くするための共通ものさし

    Speedometer 3は、FirefoxだけでなくWeb全体を速くするための共通ものさし

    Mozilla Hacksの2024年3月11日付記事「Improving Performance in Firefox and Across the Web with Speedometer 3」を紹介します。

    Speedometer 3は、Webブラウザの性能を測るベンチマークです。ただし、単にJavaScriptのループを速く回せるかを見るものではなく、現代のWebアプリで起きるユーザー操作への応答性を、できるだけ現実に近い形で測ろうとしています。

    Speedometer 3のポイント

    記事では、Speedometer 3がBlink、Gecko、WebKitという主要ブラウザエンジンの関係者による共同作業として作られたことが強調されています。Mozillaだけ、あるいは特定のブラウザだけに都合のよいベンチマークではなく、Web全体の性能改善に使える共通のものさしを目指している点が重要です。

    参照先のSpeedometerリポジトリでは、このベンチマークがWebアプリの応答性を、複数のワークロード上での模擬的なユーザー操作によって測るものだと説明されています。テスト対象は固定された小さな処理ではなく、ユーザーが実際にタスクを完了するまでの流れに近づける設計です。

    Firefoxでの効果

    記事内で参照されている「Down and to the Right: Firefox Got Faster for Real Users in 2023」も確認しました。そこでは、Firefoxの実ユーザーメトリクスとして、First Contentful Paintやページロード中のJavaScript実行時間、キー入力反映までの遅延が改善していることが紹介されています。

    First Contentful Paintは、ページが読み込まれていることをユーザーが初めて視覚的に確認できるタイミングです。Firefoxの性能改善がこの指標に効いているという話は、ベンチマーク上の点数だけでなく、実際の待ち時間の短縮につながっていることを示しています。

    具体的な最適化の例

    関連するMozilla Hacks記事「Faster Vue.js Execution in Firefox」では、Speedometer 3のVue.jsテストが、FirefoxのProxyオブジェクト処理の改善につながったことが説明されています。Vue 3のリアクティビティでProxyが重要な役割を持つため、ここをJITで最適化できるようにしたわけです。

    さらにSpiderMonkey Newsletterでも、Speedometer 3に関係するReactやVue.jsなど人気フレームワーク向けの性能改善、Proxyのプロパティアクセス最適化、Object.assignやJSONパースまわりの改善が触れられています。Speedometer 3は単なる計測ツールではなく、エンジン内部の改善テーマを見つける入口にもなっています。

    MozillaのWeb Visionとのつながり

    記事が参照しているMozilla’s Vision of the Webでは、Webが誰にでも開かれ、選択肢を持てるプラットフォームであることが重視されています。そこでは、サイト作者がなめらかで高品質な体験を作れることもWebの重要な方向性として語られています。Speedometer 3は、この理念を性能面から支える取り組みだと読めます。

    気づき

    今回の話で面白いのは、ベンチマークが「競争のための点数」ではなく「改善を向ける先をそろえる道具」になっていることです。ブラウザごとに最適化対象がばらばらだと、ユーザーにとって何が速くなったのか見えにくい。Speedometer 3のように、主要エンジンが同じ現実的なワークロードを見ることで、Web開発者とユーザーの両方に返ってくる改善になりやすくなります。

    Webパフォーマンスを見るときは、ベンチマークスコアだけを切り取るのではなく、そのベンチマークがどんな体験を代表しようとしているのかまで見る必要がある、という点も実務的な学びでした。

    参照元: Improving Performance in Firefox and Across the Web with Speedometer 3

  • Interop 2025は、Webの“使える標準”を増やすための地道な同期作業だった

    Interop 2025は、Webの“使える標準”を増やすための地道な同期作業だった

    Mozilla Hacksの2025年2月13日付記事「Launching Interop 2025」を紹介します。

    Interop Projectは、ブラウザベンダーやWebプラットフォーム実装者が協力して、Web標準の実装差を減らしていく取り組みです。記事では、Interop 2024で主要ブラウザすべてに通るテスト割合が年初の46%から安定版で95%まで伸びたことを踏まえ、2025年の重点領域が紹介されています。

    Interop 2025の焦点

    2025年は19の重点領域が設定され、そのうち17が新規、2つが前年からの継続でした。全体像はInterop 2025のREADMEにまとまっており、進捗はwpt.fyiのInterop 2025ダッシュボードで確認できます。

    記事で特に取り上げられているのは、Storage Access、Web Compat、WebRTC、Mutation Eventsの削除、アクセシビリティやモバイルテストの調査です。新しいAPIを増やす話だけでなく、古い仕様や実装差をどう終わらせるかまで含まれている点が印象的です。

    参照リンクから見る重要テーマ

    Storage Access APIは、サードパーティCookieを制限しながら、SSOなど正当な埋め込み用途を壊さないための仕組みです。MozillaのTotal Cookie Protectionのような追跡防止と、実際のログイン体験を両立するための接点になります。

    CSS Zoomは、もともとInternet Explorer由来の独自機能でしたが、現実のWebでは使われ続けてきました。標準化されていないから無視するのではなく、Web Compat領域として実装差を測り、必要なら標準側も更新するというInteroperabilityらしい題材です。

    WebRTCも2025年の重点領域に入りました。記事では、特にRTCRtpScriptTransformがクロスブラウザなエンドツーエンド暗号化に関係するAPIとして挙げられています。ビデオ会議のような日常的な用途ほど、ブラウザごとの差がユーザー体験に直結します。

    また、Mutation Eventsの削除がInteropに含まれた点も重要です。古い機能を残し続けることは互換性には見えますが、DOM変更の性能や実装複雑性の面では負担になります。代替としてMutationObserverがある以上、ブラウザ間で足並みをそろえて削除することにも意味があります。

    パートナー発表との見え方

    記事末尾のパートナー発表として、GoogleのInterop 2025紹介やWebKitのInterop 2025発表も参照しました。各社の立場は違っても、Web Platform Testsを基盤に、同じ重点領域を測定可能な形で進める点は共通しています。

    気づき

    Interop 2025を読むと、Web標準の実用性は「仕様がある」だけでは足りないことがよくわかります。開発者が安心して使える状態にするには、仕様、テスト、複数エンジンの実装、古い機能の整理までがつながっている必要があります。Interopは派手な新機能発表というより、Webを“同じように動くもの”へ近づける運用そのものだと感じました。

    2026版のInterop記事とあわせて読むと、毎年の重点領域が単発ではなく、Webプラットフォームの未整備な部分を順番に減らしていく継続的な作業だと見えてきます。

    参照元: Launching Interop 2025

  • Firefox 138のDLP連携は、企業利用でDLL注入を減らすための現実解

    Firefox 138のDLP連携は、企業利用でDLL注入を減らすための現実解

    Mozilla Hacksの2025年3月25日付記事「Improving Firefox Stability in the Enterprise by Reducing DLL Injection」を紹介します。

    この記事のテーマは、企業環境で使われるData Loss Prevention、いわゆるDLP製品とFirefoxの関係です。DLP製品は、ファイルアップロード、貼り付け、ドラッグ&ドロップ、印刷など、機密情報の漏えいにつながりうる操作を監視するために使われます。これまで多くの製品は、Windows上でFirefoxプロセスへDLLを注入する形で監視してきました。

    何が問題だったのか

    DLL injection自体はWindows環境で広く使われる手法ですが、Firefoxの内部実装に第三者コードが入り込むため、安定性とセキュリティの面でリスクがあります。ブラウザは毎月のように更新され、内部関数やプロセス構成も変わるため、注入側のソフトウェアが追従できないとクラッシュや予期しない挙動につながります。

    記事内で参照されている2019年のDLL injectionバグ調査では、調査対象となった103件のDLL injection由来バグのうち、90.3%がクラッシュにつながり、55.3%はアンチウイルスソフトに起因していたと報告されています。これは、企業向けの管理ソフトやセキュリティ製品が、ブラウザの安定性に直接影響しうることを示しています。

    Firefox 138での変更

    Firefox 138からは、企業向けDLPソフトウェアがDLL injectionを使わずにFirefoxと連携できる選択肢が用意されます。記事では、Content Analysis SDKをFirefoxに統合し、Enterprise Policyで有効化できるようにしたと説明されています。

    Content Analysis SDKは、ブラウザとDLPエージェントの間でやり取りするための軽量なプロトコルです。Chrome Enterpriseでも使われている仕組みですが、Firefox側の実装はFirefox固有のものになります。DLPベンダーにとっては、複数ブラウザで共通の考え方に沿ったエージェントを実装しやすくなる点が大きいです。

    参照リンクから見える位置づけ

    2023年のMozilla Hacks記事「Letting users block injected third-party DLLs in Firefox」では、Firefox 110でユーザーがabout:third-partyから問題のあるDLLをブロックできるようになった流れが紹介されています。今回の記事は、その延長線上で、企業管理のDLP用途については最初からDLL注入に頼らない道を用意するものだと読めます。

    MozillaのThird-party Injection Policyでは、第三者コード注入がクラッシュや機能不全を起こしうること、問題がある場合はベンダーとの協力やブロックで対応することが説明されています。さらに、Firefox Enterprise Policy TemplatesにはContentAnalysis関連の設定が用意されており、DLP連携が企業ポリシーとして管理されることも確認できます。

    ユーザー向けには、Firefox SupportのData Loss Prevention記事で、DLPが有効な場合にFirefoxのタブバーへDLPアイコンが表示されることが説明されています。監視が必要な企業環境でも、ブラウザ側が状況を可視化する点は重要です。

    気づき

    今回の話で印象的なのは、Firefoxが「企業管理ソフトを拒む」のではなく、「危うい連携方法を、より明示的な連携方法へ置き換える」方向を選んでいる点です。ユーザーのプライバシーやブラウザの安定性を重視しつつ、管理端末ではDLPが必要とされる現実もある。その板挟みを、ポリシー管理と標準化された連携プロトコルでほどこうとしているのが実務的です。

    ブラウザのセキュリティは、Web標準や暗号化だけでなく、企業端末に入っている周辺ソフトとの付き合い方にも左右されます。Firefox 138のDLP連携は、その地味だけれど重要な境界面を整える変更だと思います。

    参照元: Improving Firefox Stability in the Enterprise by Reducing DLL Injection

  • CRLiteがFirefoxの証明書失効確認を変える。速さとプライバシーを両立する仕組み

    CRLiteがFirefoxの証明書失効確認を変える。速さとプライバシーを両立する仕組み

    Mozilla Hacksの2025年8月19日付記事「CRLite: Fast, private, and comprehensive certificate revocation checking in Firefox」を紹介します。

    テーマは、TLS証明書の「失効」をブラウザがどう確認するかです。証明書は有効期限内でも、不正利用や鍵漏えいなどの理由で取り消されることがあります。問題は、その取り消し情報をブラウザが安全かつ現実的なコストで参照できるかどうかでした。

    CRLiteが変えること

    記事では、FirefoxがCRLiteを使って、Certificate Transparencyログに現れる失効済み証明書の集合をコンパクトに取得し、ローカルで確認する仕組みが説明されています。Firefoxはこのデータを定期的に更新し、新しいTLS接続のたびに手元で照合します。

    従来使われてきたOCSPでは、ブラウザが証明書の状態を外部のOCSPサーバーに問い合わせます。この方式は、ユーザーがどのドメインへアクセスしようとしているかを問い合わせ先や経路上の観測者に漏らしうる点が課題です。記事では、Firefox 137からデスクトップ版でCRLiteが有効化され、Firefox 142ではドメイン検証証明書向けOCSPを無効化する流れが説明されています。

    参照リンクから見える背景

    記事中のMDNのCertificate Transparency解説を見ると、CTログは発行済みTLS証明書を公開ログとして監視できるようにする仕組みです。CRLiteはこの広い観測基盤を使い、失効情報をブラウザ側で扱えるサイズへ圧縮して届ける点が特徴です。

    また、CA/Browser ForumのOCSP任意化に関する投票や、Let’s EncryptのOCSP終了方針を見ると、OCSPを前提にした失効確認はエコシステム全体としても転換点にあります。CRLiteは、単にFirefox独自の最適化というより、この変化に対する実装上の答えとして読めます。

    さらに、FirefoxのHTTPS-FirstDNS over HTTPSEncrypted Client Helloと並べると、CRLiteは「暗号化された接続を増やす」だけではなく、「接続時に漏れる周辺情報も減らす」取り組みの一部だとわかります。

    技術的に面白い点

    CRLiteの実用化を支えているのが、Clubcardと呼ばれる集合照合用のデータ構造です。記事内で参照されている論文では、WebPKIの証明書失効集合を小さく表現し、差分更新もかなり小さいサイズに抑える設計が説明されています。関連実装として、ClubcardライブラリCRLite向けClubcard実装CRLiteバックエンドも公開されています。

    気づき

    この話で特に印象的なのは、セキュリティ強化が「追加の問い合わせ」ではなく「問い合わせを減らす」方向で実現されている点です。失効確認を厳密にしようとすると通信が増え、通信が増えるとプライバシーや性能に影響する、という直感があります。CRLiteは、そのトレードオフをデータ構造と配布設計でひっくり返しているのが面白いところです。

    Web開発者にとっても、TLSや証明書は普段はインフラ側の話に見えがちですが、ブラウザがどのように「信頼を取り消す」のかを知ると、HTTPSの安全性が単なる暗号化だけでは成り立っていないことが見えてきます。

    参照元: CRLite: Fast, private, and comprehensive certificate revocation checking in Firefox

  • Firefox Developer EditionとBetaに公式RPM。Linux配布の体験をそろえる一歩

    Firefox Developer EditionとBetaに公式RPM。Linux配布の体験をそろえる一歩

    Mozilla Hacksの2026年3月25日付記事「Firefox Developer Edition and Beta: Try out Mozilla’s .rpm package!」を紹介します。

    この記事では、RPM系Linuxディストリビューション向けに、Firefox BetaとFirefox Developer Editionの公式RPMパッケージが使えるようになったことが案内されています。Fedora 41以降などdnf5を使う環境、openSUSEなどzypperを使う環境、RHEL/CentOS/Rocky Linuxや古いFedoraなど、複数のRPM系環境向けに導入手順が分けて示されているのが実用的です。

    何が便利になるのか

    ポイントは、ブラウザ本体を手動で展開・置き換えるのではなく、OS側のパッケージ管理に乗せられることです。記事では、MozillaのRPMリポジトリを使うことで、Firefox Betaを通常のアプリケーションと同じようにインストール・更新できると説明しています。

    Mozilla側で管理されるパッケージとして、コンパイラ最適化、セキュリティフラグを有効にしたビルド、リリース工程に統合された更新なども利点として挙げられています。また、ディストリビューション標準のFirefoxパッケージと競合せず、併存できる点もテスト用途では重要です。

    参照リンクから見える流れ

    記事内で参照されているFirefox Nightly向けRPM導入記事も確認しました。こちらでは、NightlyをRPM系ディストリビューションで扱いやすくする狙いが説明されており、今回のBeta/Developer Edition対応は、その流れをプレリリース版全体へ広げる動きとして読むことができます。

    また、問題があればBugzillaへ報告するよう促されており、言語パックについてはFirefoxのBeta / Developer Edition / Nightly配布ページ側の情報も参照する形になっています。単なる配布形式の追加ではなく、テスト利用者からのフィードバックを集めやすくする整備でもあります。

    気づき

    今回の話で面白いのは、パッケージ形式が開発者体験そのものに直結している点です。BetaやDeveloper Editionを試す人が、毎回手作業で入れ替えるのではなく、普段の更新フローで追従できるようになると、テストの継続性が上がります。ブラウザ機能そのものではない変更でも、フィードバックの量と質を支える基盤になるわけです。

    RPM系LinuxでFirefoxの先行版を試している人、Webサイトや拡張機能をFirefox Betaで確認している人には、かなり実務的な更新だと思います。

    参照元: Firefox Developer Edition and Beta: Try out Mozilla’s .rpm package!

  • innerHTMLからsetHTMLへ。Firefox 148のSanitizer APIが示すXSS対策の新しい標準

    innerHTMLからsetHTMLへ。Firefox 148のSanitizer APIが示すXSS対策の新しい標準

    Mozilla Hacksに掲載された 「Goodbye innerHTML, Hello setHTML: Stronger XSS Protection in Firefox 148」 を紹介します。

    この記事のテーマは、XSS対策として標準化されたSanitizer APIと、Firefox 148でサポートされた setHTML() です。従来よく使われてきた innerHTML は、外部入力やユーザー生成コンテンツを扱う場面で危険なHTMLやイベント属性をDOMへ入れてしまうリスクがあります。setHTML() は、そのHTML挿入のタイミングにサニタイズを組み込むことで、より安全な既定動作を提供しようとするAPIです。

    Sanitizer APIが埋めようとしている隙間

    記事では、Mozillaが2009年からContent Security Policy(CSP)の標準化にも深く関わってきたことに触れています。CSPは、どのスクリプトや画像、スタイルを読み込んでよいかをブラウザへ伝える強力な防御層です。ただし、既存サイトに導入するには設計変更や継続的な見直しが必要で、Web全体の長い裾野を守るには導入の難しさが残ります。

    Sanitizer APIは、そこに別の入口を用意します。危険なHTMLを「無害なHTML」に変換し、DOMへ挿入する前に不要な要素や属性を落とす仕組みです。記事の例では、イベントハンドラ付きの画像要素を含むHTMLを setHTML() で扱うと、危険な部分が取り除かれます。

    リンク先から見えた補足

    記事内で参照されている MDNのXSS解説 では、XSSは攻撃者のコードを対象サイト自身のコードのように実行させる攻撃として説明されています。ユーザー入力をページに挿入する処理が、適切なエンコードやサニタイズを経ていない場合に問題になります。

    HTML Sanitizer API仕様MDNのsetHTML()ドキュメント を見ると、APIの狙いは「HTMLを挿入したい」という実務上の需要を否定することではなく、その操作を標準の安全な経路に寄せることだと分かります。さらに Sanitizer API Playground では、どのような入力がどうサニタイズされるかを試せます。

    また、CSPTrusted Types の説明も合わせて読むと、XSS対策は単独のAPIだけで完結するものではないことが見えてきます。CSPは実行できるリソースを制限する防御層、Trusted Typesは危険なHTML挿入箇所をポリシーで管理する仕組み、Sanitizer APIはHTML挿入時の安全な変換を標準化する仕組みとして位置づけられます。

    気づき

    この記事を読んでの気づきは、セキュリティ機能は「正しく使えば強い」だけでは不十分で、「既存コードから少しずつ置き換えやすい」ことが普及には重要だという点です。CSPのような強力な防御は価値が高い一方、導入コストが大きいと、現実の多くのサイトには届きにくくなります。

    setHTML() の方向性は、開発者がすでに行っているHTML挿入という作業を、より安全な標準APIへ移すものです。大規模な設計変更を求めるだけでなく、危険な慣習を安全な既定値へ置き換える道を用意することが、Web全体の底上げにつながるのだと感じました。

    読んでおきたい人

    ユーザー投稿、コメント、CMS入力、リッチテキスト、外部HTMLのプレビューなどを扱うWeb開発者には特におすすめです。innerHTML を使っている箇所があるプロジェクトでは、今後 setHTML()、Sanitizer API、Trusted Typesをどう組み合わせるかを検討するきっかけになります。

    参照元: Goodbye innerHTML, Hello setHTML: Stronger XSS Protection in Firefox 148 – Mozilla Hacks(2026年2月24日公開)

  • WebAssemblyを“普通に使える言語”へ近づけるには。Mozilla Hacks記事紹介

    WebAssemblyを“普通に使える言語”へ近づけるには。Mozilla Hacks記事紹介

    Mozilla Hacksに掲載された 「Why is WebAssembly a second-class language on the web?」 を紹介します。

    この記事は、WebAssemblyが2017年の登場以降大きく進化してきた一方で、Web上ではまだJavaScriptほど自然に扱えない、という問題を整理しています。低レベル言語をWebに持ち込める強力な仕組みでありながら、実際に使うには読み込み、リンク、Web API呼び出し、型変換、ビルドツールなど、多くの周辺知識が必要になります。

    なぜ“二級市民”に見えるのか

    記事の中心にある指摘は、WebAssembly自体の性能や言語機能ではなく、Webプラットフォームとの統合の薄さです。JavaScriptなら <script> で読み込み、DOMやConsole APIをそのまま呼び出せます。一方でWebAssemblyは、読み込みにWebAssembly JS APIを使い、Web APIを呼ぶにはJavaScript側のグルーコードを挟む必要があります。

    このグルーコードは、文字列や構造体をJavaScriptとWasmメモリの間で変換し、Web APIへの橋渡しをします。自動生成ツールである程度は隠せますが、言語ごとに仕組みが違い、ビルドやデバッグの負担として残ります。結果として、WebAssemblyは平均的なWeb開発者にとって「必要に迫られたときだけ使う高度な選択肢」になりやすい、という見立てです。

    リンク先から見えた補足

    記事内で参照されている WebAssembly Community Group は、WebAssemblyの仕様や提案の多くがGitHub上で議論されていることを案内しています。WebAssemblyは単一のブラウザ機能というより、複数のブラウザ実装者とツールチェーン関係者が進める標準化の集合体として見る必要があります。

    解決策として記事が注目しているのが WebAssembly Component Model です。Component Modelのドキュメントでは、コンポーネントを相互運用可能なWebAssemblyライブラリやアプリケーションのための広いアーキテクチャとして説明しています。WITでインターフェースを記述し、異なる言語やランタイム間で機能をつなぎやすくする方向です。

    また、ES module integration proposal は、WebAssemblyモジュールをJavaScriptのモジュールシステムに近い形で扱うための提案です。さらに Component Modelの仕様リポジトリCreating Components を見ると、C/C++、C#、Go、JavaScript、Python、Rustなど複数言語からコンポーネントを作る導線が用意されつつあることが分かります。

    気づき

    この記事を読んでの気づきは、WebAssemblyの普及を妨げているのは「速いか遅いか」だけではなく、「普通のWeb開発の流れに乗れるか」だという点です。技術的には使えるものでも、読み込み方やAPI連携に大きな段差があると、チームや個人の選択肢には入りにくくなります。

    Component Modelが面白いのは、WebAssemblyを単なる高速な実行形式ではなく、言語・ツール・Web APIをまたいで共有できる部品の形式へ近づけようとしているところです。これが進めば、WebAssemblyは「特別な最適化手段」から、「JavaScript以外の言語でも自然にWebを作るための基盤」へ変わっていく可能性があります。

    読んでおきたい人

    Rust、C/C++、Go、PythonなどからWeb向けのアプリやライブラリを作りたい人、WebAssemblyを導入したいがツールチェーンの複雑さで止まった経験がある人には特に参考になります。WebAssemblyの将来像を、性能の話だけでなく開発体験の話として捉え直せる記事です。

    参照元: Why is WebAssembly a second-class language on the web? – Mozilla Hacks(2026年2月26日公開)

  • Interop 2026は“新機能リスト”ではなく、Webの差分を減らす合意形成だ。Mozilla Hacks記事紹介

    Interop 2026は“新機能リスト”ではなく、Webの差分を減らす合意形成だ。Mozilla Hacks記事紹介

    Mozilla Hacksに掲載された 「Launching Interop 2026」 を紹介します。

    Interop Projectは、Apple、Google、Igalia、Microsoft、Mozillaなどが参加し、Web開発者とユーザーにとって効果の大きい領域でブラウザ間の互換性を高める取り組みです。記事では、2025年の成果を振り返りつつ、2026年に取り組む20のフォーカスエリアと4つの調査エリアが紹介されています。

    Interop 2026で扱われるテーマ

    2026年の新しいフォーカスエリアには、Cross-document View Transitions、Scroll-driven animations、WebTransport、CSS container style queries、JavaScript Promise Integration for Wasm、CSS attr()、Custom Highlights、Scoped Custom Element Registriesなどが並びます。どれも単体で見ると個別機能の話ですが、Interopで扱われる意味は「複数ブラウザで同じように使えるところまで持っていく」ことにあります。

    記事が強調しているのは、新機能だけではありません。Navigation API、CSS scroll snap、CSS anchor positioning、WebRTC、CSS user-select、CSS zoomなど、すでに存在する機能のエッジケースも対象になっています。開発者にとっては、機能があるかどうか以上に、「書いたコードがブラウザごとに微妙に違う挙動をしないか」が実務上の痛点になるためです。

    リンク先から見えた補足

    記事内で参照されている Web Platform Tests は、複数ブラウザで同じテストを実行するための共通テストスイートです。Interop 2026 dashboard では、そのテスト結果をもとに進捗を追えるようになっています。

    さらに、Interop 2026のGitHub上の一覧を見ると、各フォーカスエリアごとに提案、テスト、仕様、MDNドキュメントが紐づけられていることが分かります。たとえばCSS attr()、contrast-color()、dialogs and popovers、fetch uploads and ranges、IndexedDBのgetAllRecords()などは、開発者が日常的に触れるAPIやUI実装に近い領域です。

    また、記事内リンクの State of HTML 2025State of CSS 2025 は、開発者の関心や痛点を把握する材料として参照されています。Apple、Google、Igalia、MicrosoftもそれぞれInterop 2026の発表を出しており、同じ年に同じ領域へ取り組むこと自体が、このプロジェクトの重要な価値になっています。

    気づき

    この記事を読んでの気づきは、Interopは「次に流行るWeb機能の一覧」ではなく、「仕様・テスト・実装のズレを減らすための運用」だという点です。新しいAPIが増えることよりも、曖昧な仕様を直し、足りないテストを足し、ブラウザごとの差分を測れる状態にすることが、結果として開発者の時間を大きく節約します。

    特に印象的なのは、テストの点数が高くても、実際の挙動がブラウザ間でずれていれば十分ではない、という視点です。Web開発で困るのは「非対応」だけではなく、「対応しているはずなのに微妙に違う」状態です。Interop 2026は、その見えにくいコストを減らす取り組みとして読むと、かなり実務的な意味が見えてきます。

    読んでおきたい人

    フロントエンド開発者、UIコンポーネントやデザインシステムを作る人、ブラウザ互換性で時間を取られた経験がある人には特におすすめです。個別の新機能を追うだけでなく、Webプラットフォームがどうやって安定した共通基盤になっていくのかを知る入口になります。

    参照元: Launching Interop 2026 – Mozilla Hacks(2026年2月12日公開)