以前、.htaccessで携帯サイトを振り分ける方法を紹介しましたが、今回はPHPでUserAgentを取得し、振り分ける方法をご紹介します。

PHPでUserAgentを取得する方法は$_SERVERという配列を参照します。$_SERVERはWebサーバが生成する配列で、インデックスを指定することにより、様々な情報を取得することができます。

UserAgentを取得するためのインデックスはHTTP_USER_AGENTです。取得したUserAgentを利用して、携帯用のCSS(style_garaK.css)とスマホ用のCSS(style.css)で異なるCSSを読み込むように振り分けを行なっています。使用方法は以下のようになります。

<?php
// UserAgentを取得
$ua = $_SERVER['HTTP_USER_AGENT'];

// 携帯サイトとその他を振り分け
if ((strpos($ua,'DoCoMo')  !== false) ||
    (strpos($ua,'KDDI')    !== false) || (strpos($ua,'UP.Browser') !== false) ||
    (strpos($ua,'J-PHONE') !== false) || (strpos($ua,'Vodafone')   !== false) || (strpos($ua,'SoftBank') !== false)
   ) {
    // 携帯サイト用CSSをを読み込み
    echo '<link rel="stylesheet" type="text/css" href="design/style_garaK.css" media="all">';
}
else {
    // スマホ、PC用のCSSを読み込み
    echo '<link rel="stylesheet" type="text/css" href="design/style.css" media="all">';
}
?>

私は携帯用のページ表示の確認にi-Modeシミュレータを利用させてもらっています。i-ModeでCSSが有効になるのはシミュレートモード8からで、これは2009年春モデル以降に相当だそうです。

実際に表示させてみると分かるのですが、スマホではキレイに見えているページがi-Modeでは悲しいくらいまったく異なる表示になってしまいます。別のHTMLを作成して、.htaccessでジャンプさせることで、携帯は別のページで作ってしまうという方法もあるのですが、私はCSSだけでなんとか頑張って作っています。

ちょっと脱線します。。。

こうして携帯用のページを作成していると、なぜ日本の携帯がガラケーと呼ばれる所以を実感することができます。機種によって仕様がバラバラ、キャリア毎の独自仕様、これでは世界標準になるわけがありません。PC時代にPC-98、FM-R、FM-TOWNSなど日本のPCは性能だけは世界でもトップクラスだったのにも関わらず、Windows95の搭乗であっという間に廃れてしまった歴史と、現在のスマホの躍進と、ガラケーの退廃は完全に一致しています。

企業に勤めていたのでよく分かるのですが、なぜか日本企業の多くは「ソフトウェアの仕様の公開」=「自社の利益の損失」というロジックが強力に根付いています。ハードウェアを中心に成長してきた企業が多数を占めているのが理由だと思っているのですが、ハードウェアに関しては高性能な部品の製造方法などは完全にブラックボックスにして、製造機器を売るべきだと思います。しかしながら、ソフトウェアは非公開にする理由はないと私は考えています。特にプラットフォームで商売するなら尚更でしょう。コアの技術部分に関してはブラックボックス化するべきですが、インタフェースに関しては公開し、多数の人間が参加可能なコミュニティを形成すべきです。

なぜか日本企業の多くはそのインタフェースまで非公開にしたがります。非公開にすれば自社で利益が独占できる、他社に利益の源泉となる仕様を公開すると自社の利益が失われてしまうと考えています。自社に非常に優秀なソフトウェア開発チームが多数あり、様々なニーズを持つユーザに対して魅力的なコンテンツを供給し続けられるのなら非公開でも良いでしょう。しかしながら、そのような企業があるのでしょうか?あの任天堂ですら、自社コンテンツだけでは自社ハードを売り続けることができないのですから。。。

ちょっと脱線してしまいましたが、私は日本からソフトウェアで世界的な企業が生まれることを期待しています。私も微力ながら日本のソフトウェア技術のために貢献していきたい思います。