開発者ツール

Chrome 155、安全性と速度を両立するRustベースのデコーダーでJPEG XLに対応

Chrome 155はJPEG XL画像形式のデコードサポートを追加しました。チームはメモリセーフティバグを排除しつつ高いパフォーマンスを維持するため、デコーダーをRustで再構築しました。

A metallic shield made of rust-colored gears protecting a digital photo.
この記事用に生成されたイラスト

英語の原文から自動翻訳されました。

Chrome 155から、ブラウザはJPEG XL画像形式のデコードに対応します。このアップデートは、長年にわたる開発者からの要望と、新しいコーデックがセキュリティ面でも高速であることを保証するための広範なエンジニアリング作業を経て実現しました。これは、レンダリング速度を犠牲にすることなくメモリセーフティを優先するという、複雑なメディア解析に対するChromeのアプローチにおける重要な転換点を示しています。

何が起きたか

Chromeチームは、ファイル拡張子.jxlで識別されるJPEG XLのデコードサポートを正式に統合しました。次世代フォーマットとして設計されたこの形式は、現代のウェブニーズに応えるもので、標準的なJPEGと比較して30〜50%効率的な圧縮を提供します。単なるサイズ削減に加え、可逆圧縮、組み込みのハイダイナミックレンジ(HDR)機能、既存のJPEGファイルの可逆トランスコーディングもサポートしています。AVIFは依然として強力な競合相手ですが、特定のユースケースでどの形式が最良の結果をもたらすかを判断するために、両方の形式をテストすることが推奨されています。JPEG XLは特に高忠実度の写真画像や、細粒度のプログレッシブデコードが必要なシナリオに適しています。

このリリースは単に新しいファイルタイプを追加するだけでなく、メディア処理におけるブラウザのセキュリティアーキテクチャの根本的な変化を表しています。画像デコーダーは、ネットワーク経由で信頼できないバイナリデータを直接レンダラープロセス内で処理するため、攻撃者の主要な標的となります。歴史的に、これらのコンポーネントはC++で書かれており、ヒープオーバーフローやuse-after-freeエラーなどのメモリセーフティ脆弱性が発生しやすい言語でした。これに対処するため、Chromeは従来のC++アプローチを、JPEG XLデコーダーの純粋なRust実装であるjxl-rsに置き換えました。この決定により、サンドボックス化を二次的な防御手段として頼るのではなく、ソースコードレベルでセキュリティリスクのクラス自体を排除します。

仕組み

Rustのようなメモリセーフな言語で高いパフォーマンスを実現するには、具体的な技術的進歩が必要でした。最新のコーデックはピクセルを高速に処理するためにSIMD(Single Instruction, Multiple Data)ハードウェア命令に大きく依存しています。以前は、Rustでこれらの命令を使用するとunsafeコードブロックが必要になることが多く、メモリセーフティリスクが再び導入される可能性がありました。Chromeチームは、コードをunsafeとしてマークせずにSIMD命令の使用を可能にする、Rustで安定化したtarget_feature_11機能を活用しました。また、参照実装libjxlで使用されているC++ Highwayライブラリに触発されたjxl_simdというSIMD抽象化レイヤーを構築しました。このアーキテクチャにより、unsafe操作は小さく厳格に検証された領域に限定され、デコーダーの残りの部分はメモリセーフな状態を保つことができます。

jxl-rsのパフォーマンスは、元のC++参照実装で見つかった最適化に基づいています。境界領域を処理する際のデータコピーを最小限に抑え、ハードウェア効率を最大化する汎用処理パイプラインを使用しています。チームはこの新しいデコーダーの堅牢性を、厳格なファジングとAI支援によるコードレビューを通じて検証しました。jxl-rsの開発履歴全体を通じてメモリセーフティバグは発見されておらず、重要インフラストラクチャコンポーネントにRustを使用することの有効性が裏付けられました。パフォーマンス指標は、Rust版が非メモリセーフな代替品と同等以上の速度を持つことを確認するため、さまざまなハードウェアプラットフォームにわたる専用ダッシュボードで継続的に追跡されています。

主な詳細

  • Chrome 155は、JPEG XL(.jxl)画像形式のネイティブデコードサポートを導入します。
  • JPEG XLは、標準的なJPEGファイルと比較して30〜50%優れた圧縮率を提供します。
  • デコーダーは、バッファオーバーフローなどのメモリセーフティ脆弱性を排除するためにRust(jxl-rs)で実装されています。
  • パフォーマンスは、Rustのtarget_feature_11機能とカスタムのjxl_simd抽象化レイヤーを使用して維持されます。
  • 出荷の決定は、Interop ProjectおよびDeveloper Signalsを通じた一貫した開発者フィードバックによって推進されました。
  • jxl-rsの開発中にファジングとAIコードレビューにより確認された結果、メモリセーフティバグは発見されませんでした。

なぜ重要なのか

ソフトウェアエンジニアや技術リーダーにとって、このアップデートは、メモリセーフティがオプションの強化ではなくデフォルトの要件になりつつある成熟したエコシステムを浮き彫りにします。重要な解析ロジックをRustに移行することで、Chromeはブラウザの攻撃面を大幅に削減します。これは、信頼できない入力を扱う他のブラウザやソフトウェアプロジェクトのための前例となります。適切なツールと抽象化があれば、高性能システムは安全性を妥協する必要がないことを証明しています。Webアプリケーションを構築しているチームにとって、これはリッチメディアコンテンツを配信するためのより安定し安全な環境を意味します。

実用的な観点からは、開発者はWebパフォーマンスを最適化するための強力な新ツールを手に入れました。JPEGよりも大幅に小さい画像を、より高い忠実度を維持しながら提供できる能力は、帯域幅コストを削減し読み込み時間を改善できます。可逆JPEGトランスコーディングのサポートは、レガシーコンテンツの移行に特に有用であり、サイトはゼロから再エンコードすることなく画像アセットをアップグレードできます。ブラウザ間の相互運用性テストがパスするにつれ、.jxlの採用はコアウェブバイタルとユーザーエクスペリエンスを改善するための実行可能な戦略となります。

やれること

  • JPEG XLレンダリングを検証するために、開発環境をChrome 155以降に更新してください。
  • 主要な写真アセットを.jxl形式に変換し、サイズと品質の最適なバランスを見つけるためにAVIFと比較してください。
  • この形式をサポートするブラウザ向けに.jxlソースを含むレスポンシブ画像戦略を実装してください。
  • クロスブラウザ互換性の進捗を追跡するために、Interop 2026 JPEG XL Investigationの結果を監視してください。

Bytechapストアのツール

続きを読む

開発者ツール

Schema-guard、AIエージェントによる無効なSQLの書き込みを防止

新しいオープンソースツールはスキーマスナップショットを使用し、AI生成のSQLが実行される前に幻覚(ハルシネーション)による存在しないテーブル名やカラム名を検出します。これにより、ベンチマークにおける誤ったブロックを排除します。

すべての記事