友達に携帯電話向けウェブサイトの技術相談をされて、後からいろいろ考えたら、ソフトバンク携帯電話の機種判別とユーザID取得には Jフォン時代から続く独特の流儀があるように思えてきました。
開発者の声を調べてみたら「神の子どもたちはみな腕を磨く: [PEAR::Net_UserAgent_Mobile] Vodafoneの機種名取得方法を変更しようと思いますが」に深い話が記されていました。ここでは、ここ最近の話として。
情報ソースは「ウェブコンテンツ開発ガイド [HTTP編] Version 2.0.4」です。リンク先から PDF のダウンロードをお願いします。
ソフトバンク携帯電話からの HTTP リクエストには、Jフォン時代から続く独自ヘッダがあります。
その中から、機種判別とユーザID取得に関係するものを二つ。
- x-jphone-msname ... 端末名称を送信します。これはリクエストに「必須」です
- x-jphone-uid ... ユーザIDを送信します。端末の設定で変更されます
x-jphone... と付いたあたりで、ソフトバンクのためだけに対応するのを嫌がる開発者は多いでしょう。私もそう思っていました。
でも、この2つのヘッダには利点も安定性もあります。
まず、Jフォン時代から発売されたネット対応携帯電話は全て x-jphone-msname を送信します。User-Agent 文字列がバラバラになった Vodafone 3G 端末にも -モトローラ製端末にすら- x-jphone-msname に名前を割り当てられています。
また、ボーダフォンとソフトバンクに買収されてもヘッダの名前が変わりませんでした。ソフトバンクなら変えかねないという声もあるでしょうが、いい兆候があります。ソフトバンクはヘッダを1つ追加して x-s-... という名前を導入しましたが、それでも x-jphone-... の名前は変わりませんでした。
おそらく、これは賭けていいです。ソフトバンクの機種判別は x-jphone-msname を参照するのだと。
x-jphone-uid が全機種で取得できるものか確認していませんが、User-Agent にシリアル番号が入らない古い機種でも対応できる利点がありそうです。
ボーダフォンに買収された頃から User-Agent がころころ変わるのでウェブサイトを開発しづらいと言われてきましたが、x-jphone-msname を参照するローカルルールがあると思えば腑に落ちます。