We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

Gecko ユーザエージェント文字列リファレンス

この文書では、Firefox 4 以降および Gecko 2.0 以降ベースのアプリケーションで用いるユーザエージェント文字列について説明します。Gecko 2.0 での変更点について詳しくは Final User Agent string for Firefox 4 (blog 記事) をご覧ください。ユーザエージェントの検出に関する文書や Hacks の投稿もご覧ください。

一般形

Firefox 自身の UA 文字列は、4つの部品に分けられます:

Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion

  • Mozilla/5.0 はブラウザが Mozilla 互換であることを示す一般的なトークンであり、今日のほとんどすべてのブラウザで共通しています。
  • platform はブラウザが動作しているネイティブプラットフォーム (例: Windows、Mac、Linux、または Android)、およびモバイル端末であるかを表します。Firefox OS 端末は単に "Mobile" となり、Web がプラットフォームです。platform は "; " (セミコロン) 区切りの複数トークンで構成されることがある点に注意してください。詳細や例については後述します。
  • rv:geckoversion は、Gecko のリリースバージョンを示します (例: "17.0")。最近のブラウザでは geckoversionfirefoxversion が同じです。
  • Gecko/geckotrail は、ブラウザが Gecko ベースであることを示します。
  • デスクトップ版では、geckotrail は固定文字列 "20100101" です。
  • Firefox/firefoxversion はブラウザが Firefox であることを示すとともに、バージョン番号を提供します (例: "17.0")。
  • モバイル版は Firefox 10 より、geckotrailfirefoxversion が同じです。
注記: Gecko ベースのブラウザ向けに推奨するスニッフィング法 (機能の検出を行う代わりにブラウザエンジンのスニッフィングを行わなければならない場合) は、"Gecko" および "rv:" の文字列が存在するかの検出です。これは、他ブラウザの一部に "like Gecko" というトークンが含まれるためです。

Gecko ベースの他製品では下記 2 つの形式のいずれかであり、各トークンの意味は以下に記載した内容を除いて同じです:

Mozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail appname/appversion
M
ozilla/5.0 (platform; rv:geckoversion) Gecko/geckotrail Firefox/firefoxversion appname/appversion

  • appname/appversion は、アプリケーションの名称とバージョンを示します。例えばこれは、"Camino/2.1.1" や "SeaMonkey/2.7.1" となります。
  • Firefox/firefoxversion は、Firefox を想定する Web サイトと最大限の互換性を得るために一部の Gecko ベースのブラウザが組み入れる場合がある、省略可能な互換性トークンです。firefoxversion は一般的に、導入した Gecko のバージョンに相当する Firefox のリリースを表します。一部の Gecko ベースのブラウザはこのトークンを使用しないかもしれません。従って、スニッフィングの際は Firefox ではなく Gecko を探してください! このトークンを表示するかは、"general.useragent.compatMode.firefox" という真偽値の設定項目で制御できます。

モバイルおよびタブレットの標示

Gecko 11.0 が必要(Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8)

UA 文字列で platform の部分は、Firefox が携帯電話サイズまたはタブレットの機器で動作しているかを示します。携帯電話フォームファクタの機器で Firefox が動作している場合は、Mobile; というトークンが UA 文字列で platform の部分に現れます。一方タブレット機器で Firefox が動作している場合は、Tablet; というトークンが UA 文字列で platform の部分に現れます。例えば:

Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0
Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0
注記: バージョン番号は重要ではありません。バージョン番号を基に判断しないでください。

ある機器のフォームファクタ向けのコンテンツを決めるために好ましい方法は、CSS メディアクエリの使用です。しかし機器のフォームファクタの対象コンテンツを決めるために UA スニッフィングを用いている場合は、携帯電話フォームファクタでは Mobi (Opera Mobile が "Mobile" ではなく "Mobi" と表記するため) を検索するようにして、"Android" と機器のフォームファクタに対応関連があるとは考えないようにしてください。そうすることで Firefox を他の携帯電話やタブレットのオペレーティングシステム向けに公開した場合や Android がラップトップ PC に使用された場合でもコードが動作します。

また、タッチ対応デバイスを検出するには "Mobi" や "Tablet" を検索するのではなく、タッチ機能を検出してください。タブレットではないタッチ対応デバイスの場合もあります。

注記: Firefox OS デバイスでは、オペレーティングシステムを示す部分がない形式となります (例: "Mozilla/5.0 (Mobile; rv:15.0) Gecko/15.0 Firefox/15.0")。Web がプラットフォームです。

Windows

Windows のユーザーエージェントには以下のバリエーションがあり、その中で x.y は Windows NT のバージョンを表します (例えば、Windows NT 6.1)。

Windows のバージョン Gecko のユーザーエージェント文字列
x86 環境の Windows NT Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0
x64 環境の Windows NT での Win64 Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0
Windows NT での WOW64 Mozilla/5.0 (Windows NT x.y; WOW64; rv:10.0) Gecko/20100101 Firefox/10.0

Macintosh

ここで x.y は Mac OS X のバージョンを表します (例えば、Mac OS X 10.6)。

Mac OS X のバージョン Gecko のユーザーエージェント文字列
Intel x86 または x86_64 環境の Mac OS X Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0
PowerPC 環境の Mac OS X Mozilla/5.0 (Macintosh; PPC Mac OS X x.y; rv:10.0) Gecko/20100101 Firefox/10.0

Linux

Linux には多様なプラットフォームが存在します。いくつかの一般的な例は以下のとおりです。

Linux のバージョン Gecko のユーザーエージェント文字列
i686 環境の Linux デスクトップ Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0
x86_64 環境の Linux デスクトップ Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0
x86_64 環境の i686 Linux デスクトップ Mozilla/5.0 (X11; Linux i686 on x86_64; rv:10.0) Gecko/20100101 Firefox/10.0
Nokia N900 Linux モバイルの Fennec ブラウザ Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0) Gecko/20100101 Firefox/10.0 Fennec/10.0

Android (バージョン 40 以下)

フォームファクタ Gecko のユーザーエージェント文字列
携帯電話 Mozilla/5.0 (Android; Mobile; rv:40.0) Gecko/40.0 Firefox/40.0
タブレット Mozilla/5.0 (Android; Tablet; rv:40.0) Gecko/40.0 Firefox/40.0

Android (バージョン 41 以降)

バージョン 41 以降の Android 版 Firefox では platform トークンに Android バージョンが含まれます。相互運用性向上のため、Android 4 以前のバージョンでブラウザが動作している場合は 4.4 と出力します。Android バージョン 4 以降では実際のバージョン番号が出力されます。なお、Gecko エンジンはすべての Android バージョンに対して同じ機能を提供しています。

フォームファクタ Gecko のユーザーエージェント文字列
携帯電話 Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0
タブレット Mozilla/5.0 (Android 4.4; Tablet; rv:41.0) Gecko/41.0 Firefox/41.0

iOS

iOS 版の Firefox ではデフォルトの Mobile Safari の UA 文字列に FxiOS/<version> トークンを追加したものになります。これは Chrome for iOS の UA 定義と同じ形式です

フォームファクタ iOS 版 Firefox のユーザエージェント文字列
iPod Mozilla/5.0 (iPod touch; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4
iPhone Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4
iPad Mozilla/5.0 (iPad; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4

Firefox OS

フォームファクタ Gecko のユーザーエージェント文字列
携帯電話 Mozilla/5.0 (Mobile; rv:26.0) Gecko/26.0 Firefox/26.0
タブレット Mozilla/5.0 (Tablet; rv:26.0) Gecko/26.0 Firefox/26.0
テレビ Mozilla/5.0 (TV; rv:44.0) Gecko/44.0 Firefox/44.0
デバイス特有 Mozilla/5.0 (Mobile; nnnn; rv:26.0) Gecko/26.0 Firefox/26.0

 

デバイス特有のユーザエージェント文字列

 

Mozilla は強く反対していますが、残念ながら一部の機器メーカーはデバイスの ID を表すトークンを、ユーザエージェント文字列に含めています。これに当てはまる場合は Firefox OS のユーザエージェント文字列が、前出の表で示したようにデバイス特有の文字列になります。nnnn; が、デバイスを示すメーカーのコードです (ガイドラインもご覧ください)。私たちは "NexusOne;"、"ZTEOpen;"、"Open C;" などを見つけました (空白を入れることも非推奨です)。ユーザエージェント検出のロジックを支援するためにこの情報を提供しますが、Mozilla はユーザエージェント文字列でデバイス ID を検出することを推奨しません。

ユーザエージェント文字列にデバイス ID を持つ場合を含むすべてのモバイルデバイスを検出するであろう、JavaScript の正規表現は以下のとおりです:

/mobi/i

i は大文字・小文字を区別しないことを示し、mobi がすべてのモバイルブラウザにマッチします。

国内モデルのユーザエージェント文字列

ユーザエージェント文字列で検出してデバイス固有の処理を行うことは推奨できませんが、参考までに端末特有の情報を追加している国内向けの Firefox OS (もしくは Boot to Gecko OS) 搭載モデルでのユーザエージェント文字列 (初回出荷時点) はこちらの通りです:

デバイス名 Gecko のユーザーエージェント文字列
Fx0 (LGL25) Mozilla/5.0 (Mobile; LGL25; rv:32.0) Gecko/32.0 Firefox/32.0
CX700/CX800/CX800N Mozilla/5.0 (FreeBSD; Viera; rv:34.0) Gecko/20100101 Firefox/34.0
TZ-HDT620 Mozilla/5.0 (rv:34.0) Gecko/20100101 Firefox/34.0 PASTB/620
TZ-HDT621 Mozilla/5.0 (rv:34.0) Gecko/20100101 Firefox/34.0 PASTB/621

Firefox OS のバージョン番号

Firefox OS のバージョン番号はユーザエージェント文字列に含まれていませんが、ユーザエージェント文字列にある Gecko のバージョンから Firefox OS のバージョンを推測できます。

Firefox OS のバージョン番号 Gecko のバージョン番号
1.0.1 18.0
1.1 18.1
1.2 26.0
1.3 28.0
1.4 30.0
2.0 32.0
2.1 34.0
2.2 37
2.5 44

 

この対応関係は Mercurial リポジトリ名から容易に判断できます。mozilla-b2g で始まるリポジトリが Firefox OS のリリースリポジトリであり、Firefox OS と Gecko の両バージョンがその名前に含まれています。

 

Firefox OS のバージョン番号は 4 つの数字があります: X.X.X.Y. 始めの 2 つの数字は Mozilla の製品チームが管理しており、新機能を伴うバージョンを表します (例: v1.1、1.2 など)。3 番目の番号はセキュリティ更新向けの定期的なバージョンの識別 (最大 6 週間ごと) として増えていきます。4 番目の番号は OEM が管理します。

Firefox Web ランタイム

デスクトップ版 Firefox のユーザエージェントと同じです。

その他の Gecko ベースのブラウザ

以下は、さまざまなプラットフォームの Gecko ベースのブラウザにおける UA 文字列の一例です。これらの多くはまだ Gecko 2.0 ベースで公開されていないことに注意してください!

ブラウザ Gecko のユーザーエージェント文字列
Maemo 版 Firefox (Nokia N900) Mozilla/5.0 (Maemo; Linux armv7l; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 Fennec/10.0.1
Mac 版 Camino Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Camino/2.2.1
Windows 版 SeaMonkey Mozilla/5.0 (Windows NT 5.2; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1
Mac 版 SeaMonkey Mozilla/5.0 (Macintosh; Intel Mac OS X 10.5; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1
Linux 版 SeaMonkey Mozilla/5.0 (X11; Linux i686; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1

アプリケーション、ベンダー、拡張向けの実装上の注意

Firefox 4 および Gecko 2.0 以前では、拡張機能が設定項目 general.useragent.extra.identifier を通してユーザエージェント文字列を追加することができました (ユーザエージェント文字列の旧版リファレンス をご覧ください。しかし、これは バグ 581008 により不可能になりました。

以前は特定のプラグイン・アドオン・拡張機能が、自身がインストールされていることを知らせるためにユーザエージェント文字列を追加していました。現在、やむを得ず必要である場合に推奨される方法 (すべての要求が遅くなることに留意してください) は、カスタム HTTP ヘッダを設定すること です。

関連情報


Comments to mozilla.dev.platform

ドキュメントのタグと貢献者

このページの貢献者: dynamis, hamasaki, yyss, kohei.yoshino, ethertank
最終更新者: dynamis,