なぜEdgeはUser-Agentに「Safari」を入れるのか?
20年前のブラウザ戦争が残した奇妙な遺産
サーバーログを覗くと、こんな文字列に出会ったことがあるでしょう。
Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/101.0.4951.64
Safari/537.36
Edg/101.0.1210.47
「EdgeなのにSafari?」 「ChromeなのにMozilla?」
1つのブラウザが同時に4つのブラウザを装っているように見えるのはなぜ?
これは単なる文字列の冗談ではなく、ウェブ史上最も激しいブラウザ戦争の化石です。 そしてその影響は2025年にもサーバーログに残っているのです。
この記事で見ていくこと:
- すべてのブラウザがまだ
Mozilla/5.0で始まる理由 - ChromiumベースのEdgeがなぜ
Safariを取り入れているのか - そしてこの混乱が標準により廃止されるまでの過程
1. すべてはNetscape vs IEの戦争から始まった
1990年代後半、ブラウザ市場はほぼ2人のプレイヤーでした。
- Netscape Navigator
- Internet Explorer
当時のNetscapeのUser-Agentはこうでした。
Mozilla/4.0 (compatible; ...)
ここで問題が始まります。
ウェブ開発者はこう考えてしまいました。
「Mozilla(=Netscape)ブラウザなら最新機能を使ってもいい。残りは古いバージョン用コードを表示しよう。」
つまり、ブラウザ機能分岐=User-Agent文字列の検査になってしまったのです。
// 1990年代(?)式の擬似コード
if (ua.includes("Mozilla")) {
// Netscape / モダンブラウザ用「かっこいい」機能
} else {
// 古いバージョン
}
すると他のブラウザが怒り出しました。
「私たちもNetscape級なのに、なぜ差別を受けるのか?」
そこで皆がUAの先頭にMozillaを付け始めました。このMozillaは実際には:
「私はNetscape級です。低く扱わないでください。」
という意味合いの互換性マークでした。
「Mozilla」の由来:ゴジラパロディ
- 「Mosaic + Godzilla」→「Mozilla」という語がよく知られています。
- 感情的には「ゴジラのように強力なブラウザ」というパロディ感です。
しかし実際には単に:
「Netscape系、またはNetscapeほど使えるブラウザ」
というマーケティング的・歴史的ラベルに近いです。
その結果、今日までほぼすべてのブラウザがこうしてUAを始めます。
Mozilla/5.0 (Windows NT 10.0; Win64; x64; ...)
ブラウザがMozillaだからではなく、 「私もNetscape級だから古い扱いをしないで」という歴史的理由です。
2. WebKit, Gecko, Trident… エンジン戦争でまた混乱
2000年代初頭、ブラウザエンジンの構成はこう分かれました。
- IE → Trident
- Firefox → Gecko
- Safari → WebKit
ウェブ開発者は再びUA文字列を使ってブラウザを分けました。
const ua = navigator.userAgent;
if (ua.includes("Safari")) {
// Safari / WebKit用コード
}
if (ua.includes("Gecko")) {
// Firefox用コード
}
if (ua.includes("Trident")) {
// IE専用コード(涙...)
}
ここまでで既に悪いパターンです。 ブラウザエンジン名とブランド名が混ざり、分岐ロジックが複雑化します。
Chrome登場 → 「誰だ?」事件
Chromeが初登場したときの問題は単純でした。
ウェブサイトがChromeを知らないので UA検査でSafariコードフローに送られてしまう。
そこでChromeは選択した戦略は:
「それならSafariを装う」
最終的にChromeはこう自己紹介します。
Mozilla/5.0 (...)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/xx.xx.xx
Safari/537.36
この文字列の実際の意味は大まかにこうです。
Mozilla/5.0→ 「私もNetscape級ブラウザです」AppleWebKit/537.36→ 「レンダリングエンジンはWebKit系です」(KHTML, like Gecko)→ 「Gecko(Firefox)と似て動作できます」Safari/537.36→ 「Safariのように見せる必要があります」Chrome/xx→ 「実際のブラウザはChromeです」
つまり、
「私はMozillaでもあり、WebKitでもあり、Geckoのように動作し、Safariのように見せ、実際はChromeだ」
という4重の偽装ブラウザが誕生しました。
3. Edgeの登場:正体と生存の妥協
さてMicrosoftの番です。 初期のEdgeは独自エンジン(EdgeHTML)を使っていましたが、最終的にChromiumベースのEdgeへ移行しました。
この時Microsoftが最もよく知っていた事実は:
「ウェブサイトコードには『User-Agentベースの分岐』が すでに数十万箇所に埋め込まれています。」
もしEdgeがこうしたら?
User-Agent: Edge/101.0.0.0
現実で起こること:
- 多くのウェブサイトがブラウザを認識できない
if (ua.includes("Chrome"))などのレガシー分岐に当たらない- 「サポートしていないブラウザです」などのエラーメッセージが表示
- 機能制限、崩れたレイアウト、奇妙なポリフィル…
つまり、技術的には正直ですが互換性の地獄に陥ります。
そこで出てきたEdgeの戦略
「正体はEdgeだが、見た目はChrome + Safari系である」
だから私たちが見るUAはこうです。
Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/101.0.4951.64
Safari/537.36
Edg/101.0.1210.47
解釈すると:
Mozilla→ 「私もモダンブラウザ」AppleWebKit→ 「WebKit系としてレンダリング」Chrome→ 「私はChromiumベース」Safari→ 「Safariのように見せる」Edg→ 「しかしブランドはEdge」
つまり、この長い文字列はEdgeの自己紹介ではなく、 「ウェブのレガシーコードと妥協するために作られた、生存型偽装カード」に近いです。
4. User-Agent文字列解釈章:この一行に込められた30年の歴史
整理しましょう。 先ほど見たUAから主要トークンを抜き出すと:
| 文字列 | 実際の意味(意訳) |
|---|---|
Mozilla/5.0 |
「私はNetscape級のモダンブラウザです。古い扱いはやめてください。」 |
AppleWebKit/537.36 |
「SafariのようにレンダリングするWebKit系です。」 |
KHTML, like Gecko |
「Gecko(Firefox)と似て動作可能です。」 |
Safari/537.36 |
「本物のSafariではありませんが、Safariのように見せる必要があります。」 |
Chrome/101.0... |
「エンジンはChromium(Chrome)ベースです。」 |
Edg/101.0... |
「ブランド・正体はEdgeです。残りは生存型偽装です。」 |
この一行の文字列に:
- Netscape vs IEブラウザ戦争
- Gecko vs WebKit vs Tridentエンジン戦争
- Chromeの市場支配過程
- Edgeの生存戦略と現実妥協
まで、30年近いブラウザ史の層が重なっています。
5. そして今、User-Agentは「歴史的ゴミの山」になっている
問題は、今日の基準ではこのUser-Agentシステムがほぼ壊れた設計である点です。
- ブラウザが互いを真似して偽装 → 信頼度0
- 過去のレガシーコードとの妥協で文字列が膨大化
- デバイス/OS情報が過剰に露出 → プライバシー問題
- UAパースでブラウザ/機能を正確に判断できない
そこでW3CとブラウザベンダーはUA文字列を徐々に廃止し、 User-Agent Client Hintsという新しい方式へ移行しています。
Client Hints: 「今度は正直に言おう」
今後はこうしたヘッダーが主役になります。
Sec-CH-UA
Sec-CH-UA-Platform
Sec-CH-UA-Mobile
大まかな動作はこうです。
- サーバーが応答ヘッダーで「あなたのブラウザ情報を正確に教えてくれませんか?」と要求
- ブラウザは必要な情報だけ選択的に、構造化された形で送信
- それで偽装文字列を解釈する必要がなくなる
メリットは:
- ブラウザが「私はSafariを装うChromeベースEdgeだ」などの 三重・四重偽装劇を演じる必要がない
- サーバーは必要な情報だけ要求できるので、個人情報漏洩も減る
- 文字列パースではなく構造化データを使う → コードも単純化
つまり、ブラウザが正直になれるようにウェブ標準が再設計されています。
6. まとめ — サーバーログにある「奇妙な一行」を見る新しい視点
再び最初のその一行を見てみましょう。
Mozilla/5.0 ... Safari/537.36 ... Edg/101
これは単なる文字列の組み合わせではありません。
- ブラウザ戦争と権力競争
- レガシーコードとの妥協
- 市場シェアを巡る偽装と戦略
- そして標準が遅れて整理している状況
これらすべてが圧縮された小さな歴史記録です。
そして面白いのは、
この歴史的嵐の残骸が 2025年にも、サーバーログで毎日捕捉されているという事実です。
次にサーバーログを見て
Mozilla/5.0 ... Safari ... Edg/... という奇妙な組み合わせに出会ったら、
「わ、また一つの化石が通り過ぎた」と笑ってみてもいいでしょう。 🙂

コメントはありません。