ブログ 更新日

クロスブラウザ互換性テストとは?問題の見つけ方と修正方法

クロスブラウザ互換性テストとは、ウェブサイトの機能とレイアウトが、サポート対象のあらゆるブラウザ、ブラウザバージョン、オペレーティングシステム、デバイスで一貫して動作することを確認する作業で、不具合の修正も含まれます。一般的なクロスブラウザテストがテストの進め方やツールに関するものであるのに対し、互換性テストは差異そのものを扱います。たとえば、あるブラウザがまだ実装していない CSS 機能、Android で挙動が異なる日付ピッカー、サードパーティ Cookie がブロックされると失敗するログインなどです。

クロスブラウザ互換性テストとは?

サイトが依存するすべての機能がサポートされ、意図したとおりに表示されるとき、そのブラウザはサイトと互換性があるといえます。しばしば CBT と略される互換性テストは、次の3つの問いに答えるものです。

  1. どのブラウザとバージョンをサポートするのか。
  2. 使っているすべての機能が、そのすべてで動作するか。動作しない場合は適切にフォールバックするか。
  3. 最新のブラウザリリースや直近のデプロイで、何かが壊れていないか。

広い意味での互換性テストには、オペレーティングシステム、ハードウェア、スクリーンリーダー、低速なネットワークなども含まれますが、ウェブサイトではブラウザ側で最も多くの問題が発生します。

2026年でも互換性が重要な理由

  • ユーザーが複数のエンジンに分かれています。StatCounter の2026年9月の数値では、世界のブラウザ利用率は Chrome が66.4%、Safari が18.3%、Edge が6.0%、Firefox が2.8%、Samsung Internet が2.3%です。モバイルでは Safari が24.7%、米国ではすべてのデバイスで30.4%を占めています。
  • iPhone のブラウザはすべて WebKit で動いています。iOS 上の Chrome、Firefox、Edge は Apple のエンジンを使っているため(EU では限定的な例外があります)、Safari のバグは、どのブラウザを選んでいても iPhone ユーザー全員に影響します。
  • 機能の提供時期がブラウザごとに異なります。新しい CSS や JavaScript は各ブラウザが独自のスケジュールで実装し、古いバージョンは更新されなくなったデバイスに残り続けます。
  • 検索順位とコンバージョン。Google はページのモバイル版をインデックスするため、スマートフォンでレイアウトが崩れると、訪問者にも検索での見え方にも悪影響が出ます。

ステップ1:ブラウザのサポートマトリクスを定義する

すべてをサポートすることはできないため、サポートする範囲を書き出しておきましょう。アクセス解析のデータをもとに、ブラウザを階層に分けます。

階層代表的なブラウザ対応方針
A:完全サポートChrome、Safari(Mac と iPhone)、Edge、Firefox の最新バージョン。Android のトラフィックがある場合は Samsung Internet もすべてがデザインどおりに動作・表示される。変更のたびに自動テストを実行する
B:機能面のサポートアクセス解析にまだ現れる古いバージョン主要な動線は動作する。細かな見た目の違いは許容する
C:基本サポートその他すべてコンテンツが読め、フォームが送信できる

マトリクスは Browserslist の設定として保存すると、Autoprefixer や Babel などのビルドツールが同じブラウザを対象にできます。Baseline も便利な近道です。「Baseline widely available」と表示された機能は、主要ブラウザ(デスクトップとモバイルの Chrome、Edge、Firefox、Safari)のすべてで少なくとも30か月間動作してきたため、ほとんどのサイトでフォールバックなしで使えます。

互換性の問題を見つけて修正する方法

  1. 開発前にサポート状況を確認する。新しい機能は、ブラウザ互換性テーブルと Baseline のステータスが掲載されている MDN や、Can I use で調べます。Baseline プロジェクトのページでは、ステータスの定義が説明されています。
  2. ブラウザではなく機能を検出する。ユーザーエージェント文字列から推測するのではなく、新しい CSS は @supports で囲み、JavaScript では API が存在するか確認してから呼び出します。
  3. プログレッシブエンハンスメントで構築する。まず基本的な HTML と CSS でコンテンツとフォームが動くようにし、その上に新しい機能を重ねていきます。
  4. 定型的な修正は自動化する。Autoprefixer はベンダープレフィックスを追加し、Babel とポリフィルは古い JavaScript エンジンに対応します。eslint-plugin-compat などのリンターは、Browserslist の対象ブラウザが未対応の機能をコードが使っていると警告してくれます。
  5. 3つのエンジンすべてでテストする。Playwright なら同じテストを Chromium、Firefox、WebKit で実行でき、スクリーンショット比較でレイアウトのずれも検出できます。
  6. 実機で確認する。エミュレーターやレスポンシブデザインモードは最初の確認には十分ですが、画面上のキーボード、タッチ操作、スクロール、動画の挙動は実際のスマートフォンでは異なります。自分のデバイスか、BrowserStack、TestMu AI(旧 LambdaTest)、Sauce Labs、BitBar などのクラウドグリッドを使いましょう。
  7. プライバシー保護を有効にしてテストする。Safari のトラッキング防止、Firefox の厳格モード、Brave の Shields は、サイトが依存するスクリプト、Cookie、埋め込みコンテンツをブロックすることがあります。

2026年によくある互換性の問題

問題発生する場所一般的な対処法
画面の高さ全体を使うセクションがずれたり、ツールバーの後ろに隠れたりするモバイルブラウザ、特に iPhone の Safarivh の代わりに dvh などのダイナミックビューポート単位を使う
新しい CSS 機能が無視されるその機能を未実装のブラウザや古いデバイスBaseline のステータスを確認し、@supports でフォールバックを追加する
日付、時刻、select の入力欄の見た目や挙動が異なる独自のネイティブピッカーを持つすべてのブラウザネイティブのコントロールを受け入れるか、十分に検証されたコンポーネントライブラリを使う
動画が自動再生されない、またはインライン再生されないモバイルブラウザと Safari自動再生はミュートした動画だけにし、iPhone 向けに playsinline を追加する
埋め込みのログイン、決済、チャットウィジェットが失敗するサードパーティ Cookie を制限する Safari、Firefox、Braveファーストパーティのフローか Storage Access API を優先し、デフォルトのプライバシー設定でテストする
テキストの折り返しが異なり、ボタンがはみ出すWindows、macOS、Android でのフォントやフォントレンダリングの違いフォールバックフォントを指定し、ボタンやメニューに余裕を持たせる

クロスブラウザ互換性チェックリスト

  • サポートマトリクスを文書化し、Browserslist の設定として保存している。
  • 新しい機能は使用前に MDN、Can I use、Baseline で確認している。
  • Baseline widely available でないものにはフォールバックを用意している。
  • Chromium、Firefox、WebKit で自動テストが成功している。
  • フォーム、動画、スクロールを実際の iPhone と Android スマートフォンで確認している。
  • ログイン、決済、埋め込みをデフォルトのプライバシー保護を有効にしてテストしている。
  • 地域ごとに異なるページやボット判定を、別の場所から、異なるブラウザフィンガープリントを使ってテストしている(テスト方法はこちら)。
  • ブラウザのメジャーリリースのたびにテストを再実行している。

よくある質問

Chrome で問題なく表示されていても、互換性テストは必要ですか?

はい、必要です。Chrome は世界のブラウザ利用の約3分の2を占めますが、米国のアクセスでは Safari だけで約3分の1に達し、iPhone のブラウザはすべて Safari のエンジンで動作しています。Chrome だけでテストすると、多くの訪問者が未確認のままになります。

互換性テストはどのくらいの頻度で行うべきですか?

コードを変更するたび、またブラウザのメジャーリリースの後に自動チェックを実行してください。大きなリリースやリニューアルの前には、実機での手動確認も行いましょう。

互換性テストは費用がかかりますか?

必ずしもそうではありません。Playwright、Selenium、Cypress は無料で、MDN、Can I use、Baseline のデータも無料で利用できます。有料のクラウドグリッドは、主に自前のデバイスラボを購入・維持する手間を省くためのものです。

クロスブラウザテストと互換性テストの違いは何ですか?

クロスブラウザテストは、複数のブラウザにまたがってテストを行う全体的なプロセスで、クロスブラウザテストガイドで解説しています。互換性テストはそのうち、使用している特定の機能やコードがサポートされているかどうか、そして差異をどう修正または回避するかに焦点を当てたものです。

人気記事