Safari Technology Preview 248、BigInt向けネイティブ数学関数を追加 CSP実装も厳格化
2026年7月25日 10:44
AppleのWebKitチームは米国時間7月22日(水)、Safari Technology Preview 248を公開した。JavaScriptのBigInt向けネイティブ数学関数を初めて実装したほか、CSPの仕様適合性強化やWebRTC音声キャプチャの信頼性改善など、16のサブシステムで60件超の不具合を修正している。AppleのApp Storeルールにより、原則としてiPhoneとiPad向けのすべてのブラウザがWebKitを基盤としているため、今回の修正は最終的にSafari以外のiOSブラウザ利用者にも影響する。
■Safari Technology Preview 248の概要
AppleのWebKitチームは水曜日にSafari Technology Preview 248を公開し、16のサブシステムで60件超の不具合を修正した。今回の更新では、TC39のBigInt Math提案という新たなJavaScript標準化提案が取り込まれ、任意精度整数向けの数学関数が初めてブラウザのネイティブ実行環境で利用可能になった。
WebKitの修正は、ChromeやFirefoxの個別修正とは意味合いが異なる。AppleのApp Storeルールでは、iPhoneとiPad向けのすべてのブラウザに基盤エンジンとしてWebKitの利用を求めている。この方針は世界的に適用されているが、EUではデジタル市場法(DMA)の代替ブラウザエンジン規定に基づく限定的な例外が設けられている。また英国では、競争・市場庁(CMA)がAppleに対し、2027年1月1日までにiOSで代替エンジンを認めるよう命じており、法的な争点となっている。こうした事情から、Technology Previewで取り込まれた修正は、最終的にSafari利用者だけでなく、利用しているブラウザアプリにかかわらず、iOS上でWebを閲覧する幅広い利用者に届くことになる。CSPのセキュリティ強化、WebRTC音声の信頼性向上、SVGテキスト描画の改善を含む今回のリリースでは、その影響範囲の広さが重要になる。
Preview 248はWebKitの315567@mainから316817@mainまでのコミットを含み、macOS Tahoe(macOS 26、現行版)とmacOS Golden Gate(macOS 27、2026年7月13日からパブリックベータ提供中)で利用できる。macOS 27は、iOS 27およびSafari 27とともに2026年秋に正式提供される見込みだ。既存環境は「システム設定」内の「一般」→「ソフトウェアアップデート」から更新でき、Appleの開発者向けリソースページから直接入手することも可能だ。
■BigInt MathがJavaScriptにネイティブ実装
Preview 248で最も重要な新機能は、TC39のBigInt Math提案への対応だ。これにより、JavaScriptのBigIntコンストラクタで算術関数を直接利用できるようになった。
BigIntは、ES2020で標準化されたJavaScriptの任意精度整数型である。従来から加算、減算、乗算、基本的な比較はできたが、平方根、べき乗、絶対値といった数学関数のネイティブライブラリはなく、金融計算、暗号、高精度の科学計算に取り組む開発者は、サードパーティー製ライブラリを使うか、自前で実装する必要があった。通常の浮動小数点数向けにはMathオブジェクトがこうした機能を提供していた一方、BigIntには相当する機能がなかった。
J.S. Choiが起草したこの提案では、BigInt.pow、BigInt.sqrt、BigInt.abs、BigInt.sign、BigInt.min、BigInt.maxという静的メソッドがBigIntオブジェクトに追加される。いずれも戻り値はBigIntで、異なる数値型を受け入れるminとmaxを除き、BigInt以外の引数はTypeErrorとして拒否する。これは、暗黙の型変換による精度損失を避けるというBigIntの設計思想に沿ったものだ。なお、BigIntは小数を表現できないため、sqrtの結果は0方向へ切り捨てられる。
これまでこれらの操作をポリフィルで補ったり、任意精度整数演算のためにライブラリを導入したりしていた開発者にとって、今回のWebKitによる実装は、WebKit向けコードで将来的にそうした依存関係を外せる道筋が明確になったことを示している。
■CSP実装を5件修正し、仕様適合性を強化
Preview 248のもう1つの大きな柱は、Content Security Policy(CSP)実装の厳格化だ。Preview 248のリリースノートによると、WebKitの挙動がW3C仕様からずれていた5つの不具合が修正されており、中には危険につながりかねない差異もあった。
CSPは、HTTPヘッダーを通じて、スクリプト、スタイルシート、フレームなどのリソースをどのオリジンから読み込めるかをサーバー側が宣言できるWebセキュリティ標準で、クロスサイトスクリプティング攻撃に対する主要な防御策の1つだ。また、違反を遮断せず記録だけ行う「report-only」モードも定義しており、ポリシーを実際に適用する前に監査する組織での利用を想定している。
5件のうち1件はreport-onlyモードの欠落を修正するものだ。ページをiframeに埋め込めるかどうかを制御するframe-ancestorsへの違反が、report-only設定時に報告されず、黙って破棄されていた。埋め込みポリシーを監査していたチームは不完全なログしか得られず、自サイトが許可されていないオリジンによってフレーム内に表示されているかを正確に評価できなかったが、これが修正された。
別の修正では、以前のWebKitビルドに入った回帰により、一部のサイトが誤ったCSPエラーをコンソールに記録しながら、まったく読み込めなくなっていた問題が解消された。さらにパーサーレベルの2件の修正により、インラインスクリプト実行の許可リストを構成するnonce-sourceとhash-sourceの値、およびtrusted-typesキーワードの検証が厳格化され、仕様上は解析エラーとされる末尾の余分な文字を拒否するようになった。セキュリティポリシーのパーサーが末尾の余分な文字を受け入れることは、微妙ながら正確性を損なう問題だ。本来は制限的になるはずのポリシーが、ブラウザエンジンによる境界条件の扱い方次第で、より緩く、またはより厳しく解釈される可能性がある。
5件目の修正では、同一ページ内のフラグメントへの移動をCSPに照らして評価していた誤った仕様チェックが解消された。本来、こうした移動はCSP評価の対象ではない。
■WebRTCの音声キャプチャ信頼性を改善
Preview 248のリリースノートによると、WebRTC関連では、マイクキャプチャの信頼性問題に対処する2件の修正が行われた。SafariのWebRTC音声は、ビデオ会議、音声メッセージ、リアルタイム音声アプリをWeb上で構築する開発者にとって、これまでも問題になってきた領域だ。
WebKitでは、Webページの描画をサンドボックス化された「WebProcess」で実行し、そのプロセス内のAudioSessionオブジェクトが音声キャプチャを管理する。今回修正された不具合では、マイク入力が有効な間もWebProcessのAudioSessionがアクティブ状態を維持できず、OSの音声サブシステムによって中断または解放され、キャプチャ中に音声が途切れることがあった。その結果、WebRTCのgetUserMedia APIでマイク入力を取得するアプリでは、通話が無音になったり、音声が途中で欠落したりすることがあった。
もう1件は、イベントの発生順序に関する問題だ。メディアストリームの基盤となるハードウェアが変化した際、たとえば利用者が音声デバイスを切り替えたときに発火するconfigurationchangeイベントが、ハードウェア変更時点でMediaStreamTrackがミュートされていると失われていた。今回の修正により、このイベントはトラックのミュートが解除されるまで遅延され、アプリ側がストリーム構成を調整するために必要なハードウェア変更通知を確実に受け取れるようになった。
■CSSは新機能2件と十数件の修正
Preview 248のCSSリリースノートによると、CSSサブシステムには、新機能2件と、グリッドレイアウト、View Transitions、カスタムプロパティの解決、プリロードスキャンにまたがる十数件の不具合修正が含まれる。
新機能の1つは、定義された範囲に対する比例値を計算するCSSのprogress()関数で、no-clampオプションをサポートしたことだ。no-clampを指定しない場合、結果は[0, 1]の範囲に制限され、100%を超える値や0%未満の値は出せない。no-clampを使うと両端を超えた外挿が可能になり、ばねのようなオーバーシュート表現など、入力範囲を正当に超えるアニメーションを実現できる。
もう1つは、類似する色空間の間で補間する際に、欠落している色成分を引き継ぐ処理への対応だ。これは、関連しているものの同一ではない色空間で定義された2色の間で、グラデーションがどのように遷移するかに関わる改善である。
不具合修正では、View Transitions APIに関する回帰の修正がある。View Transitionの実行中にCSSルールを挿入すると、グループアニメーションが遷移を完全に飛ばし、即座に最終状態へ移ってしまう問題が修正された。関連して、初回描画の機会が訪れる前にレンダリングをブロックされた文書から離脱すると、クロスドキュメントの外向きView Transitionが誤って起動していた問題も解消されている。同一文書内のView Transitionは、Firefox 144が対応した2025年10月に「Baseline Newly Available」となっており、その段階で採用した開発者にとって今回の正確性に関する修正は時宜を得たものだ。
このほか、var()によるカスタムプロパティの解決で、カスタムプロパティが定義されている場合にもフォールバック値を解決していた不具合が修正された。本来、フォールバックはカスタムプロパティが「保証された無効値」に解決される場合にのみ使われる。また、:last-childなどのセレクターが誤ってパーサーの状態を条件としていた問題や、@layer文の後に続く@importルールをCSSプリロードスキャナーが先読みできていなかった問題も修正された。後者は、レイヤー化されたスタイルシートの読み込み性能に実際の影響を与える読み込み順序の不具合だった。
■SVGは仕様適合性を中心に8件改善
Preview 248のSVGリリースノートによると、SVGでは仕様適合性を中心とした8件の修正が行われた。アラビア文字やインド系文字などの複雑な文字体系に続くUnicodeテキストを、曲線上の
また、
さらに、cx、cy、r、widthといったSVGジオメトリのプレゼンテーション属性が、それらに対応していない
■Web Inspectorは22件の開発者向け改善
Preview 248のWeb Inspectorリリースノートによると、Web Inspectorは全サブシステム中で最も多い22件の個別修正を受けた。
シンボリックブレークポイントは、Array、Date、EventTarget、Workerなど、JavaScriptの組み込み関数やネイティブコンストラクタでも使えるようになった。これにより、こうした組み込み機能が最初に使われた時点で処理を停止させることが難しかった、長年の機能上の不足が解消される。
コンソールのREPLでは、letやconstで宣言した変数を再定義できるようになった。ページを再読み込みせずに変数の束縛を定義し直したい反復的なデバッグ作業では、利便性が向上する。さらに、ES2022のクラスのプライベートフィールド、プライベートメソッド、アクセサーも、コンソールでオブジェクトインスタンスを調べた際に表示されるようになった。
クロスオリジンiframe関連でも複数の問題が解消された。クロスオリジンiframe内のノードを選択するとAccessibilityサイドバーが空になる問題、DOM Storageの読み書きコマンドが誤ったオリジンに対して実行されていた問題、adopted constructable stylesheetがユーザーエージェントスタイルシートとして誤分類されていた問題が修正された。加えて、カラーピッカーが文書の実際の色空間に関係なく、すべての色をDisplay P3へ強制変換していた問題も解消された。これは、Webコンテンツで広色域やHDRカラーを扱う開発者にとって、目立ちにくいものの重要な誤りだった。
■iPhone版ChromeやFirefoxにも影響するのか
原則として影響する。AppleのApp Storeルールでは、Chrome、Firefox、Edgeを含むiPhoneとiPad向けのすべてのブラウザが、レンダリングエンジンとしてWebKitを使う必要がある。そのため、WebKitの不具合はiOS上のすべてのブラウザに影響し、WebKitでの修正は公開版Safariに組み込まれるとiOS上の各ブラウザにも届く。
EUではAppleが2024年3月以降、DMAに基づいて代替ブラウザエンジンを認めることを求められている。ただし、2026年半ば時点では、主要ブラウザベンダーが代替エンジンを使用するiOSブラウザをEUで公開した例はない。英国のCMAも2026年4月、Appleに対し2027年1月1日までに代替エンジンを認めるよう命じている。
■今後の見通し
Safari Technology Previewは、おおむね隔週のペースで提供されている。7月22日のリリースからこの提供間隔を当てはめると、次のプレビューはおよそ2週間後になる見込みだ。
macOS 27 Golden GateとiOS 27は、2026年秋にSafari 27とともに登場すると見込まれている。今後のビルドでは、一般公開に向けた機能の安定化と仕様適合性の向上に重点が置かれると予想される。
開発者はSafari Technology PreviewをAppleの開発者向けリソースページから入手でき、既存環境はシステム設定から更新できる。個別のWebKitコミットへのリンクを含む完全なリリースノートは、WebKit Blogで公開されている。
■注目ポイントQ&A
●TC39 BigInt Math提案とは何ですか
BigIntは、任意の大きさの整数を扱うJavaScriptの型で、浮動小数点の丸め誤差を許容できない金融計算、暗号、科学計算などで使われます。TC39 BigInt Math提案は、BigInt.pow、BigInt.sqrt、BigInt.absなど、既存のMathオブジェクトに似た静的メソッドをBigIntコンストラクタに追加するものです。これまでは開発者が自前で実装するか、サードパーティー製ライブラリを使う必要がありました。WebKitがこの提案を実装したことは、WebKit向けコードでネイティブのBigInt数学関数を利用し始められることを示しています。
●今回のCSP修正はなぜ重要ですか
CSPは、ページ上で実行できる外部コードなどを制限する多層防御のためのセキュリティ機構です。report-onlyポリシーでframe-ancestors違反が記録されない、nonce-sourceの値に仕様上は解析エラーとなる末尾の余分な文字があっても受け入れてしまう、といった不具合があると、セキュリティ担当者が受け取る監査データが不完全になったり、ブラウザごとにポリシーの解釈がずれたりします。今回の5件の修正は、WebKitのCSP実装をW3C仕様により正確に適合させるうえで重要です。
●iPhoneでChromeやFirefoxを使っていても修正は適用されますか
はい。AppleのApp Storeルールにより、原則としてiPhoneとiPad向けのすべてのブラウザはWebKitをレンダリングエンジンとして使う必要があります。Chrome、Firefox、EdgeなどのiOSブラウザもWebKitを基盤としているため、WebKitの修正が公開版Safariに組み込まれると、それらのブラウザにも届きます。EUでは2024年3月から代替エンジンが認められていますが、2026年半ば時点で主要ブラウザベンダーによる代替エンジン版は公開されていません。EU以外ではこの仕組みが引き続き基本であり、英国でも2027年1月までに変更される可能性があります。
●Safari 27はいつ登場する見込みですか
2026年秋に、iOS 27およびmacOS 27 Golden Gateとともに提供される見込みです。時期としては9月の可能性が高いものの、Appleは正確な日付を正式には発表していません。iOS 27とmacOS 27 Golden Gateのパブリックベータは、2026年7月13日に公開されています。
元記事: Safari Technology Preview 248: BigInt Math Arrives, CSP Enforcement Tightened