昨日は、クライアント様のコージーインテリアラボ様がご来社。先月のホームページのご様子や、今後の計画などをお聞きいたしました。
ホームページ更新のペースもつかめてきて、次のステップへ進む時期ですね。是非がんばりましょう!
そして、弊社も本日より新しいチャレンジをスタートしました。とはいえ、今更な感じではありますが、ようやく携帯サイトをお受けできる体制が整いました。
これまで、ずっとリクエストをいただいていたにもかかわらず、なかなか実現できなかったのですが、各種技術を開発して効率の良い携帯サイト制作が出来るようになりました。
本ブログでも、その技術の一端をご紹介していきたいと思います。
iPhoneとAndroidを PHPで振り分ける方法
携帯サイトの場合、アクセスしてきたキャリアや機種に応じて、ページを振り分けたり、要素の表示・非表示を切り替えたりすることがよくあります。
携帯サイトプランでも、そのような振り分けの仕組みを備えています。携帯電話の場合、PHPにはPEAR:Net_UserAgent_Mobileというモジュールがあるため、これをインストールするだけで、docomo、au、Softbankの各キャリアはもちろん、3G以降やFOMAであるかや、GPSを搭載しているかと言ったことまで振り分けることが出来ます。
ただし、その他のいわゆる「スマートフォン」に関しては、残念ながらこのモジュールでは対応することが出来ないため、独自に開発をいたしました。
とはいえ、実際には非常に簡単。それぞれのAgent情報を調べれば分かります。まずは、iPhoneの場合(私の場合は iPod touchですが・・)
Mozilla/5.0 (iPod; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16
つい先日配布された iPhone OS 3.0をインストールした状態でのエージェント情報は上記のようになっています。Safariとか AppleWebKitというキーワードもありますが、「iPhone」というそのもののキーワードがあるので、これが使えます。
続いて Androidの場合、こちらは先日の Google Developer Dayでいただいた端末を利用して見ました。
Mozilla/5.0 (Linux; U; Android 1.5; en-us; GDDJ-09 Build/CDB56) AppleWebKit/528.5+ (KHTML, like Build/CDB56) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.
こちらにも、「Android」というキーワードが入っていますので、これで判別が出来ます。
ということで、例えばここではざっくりと「PCの場合、ケータイの場合、iPhoneの場合、Androidの場合」で振り分けをしてみましょう。
// PEARをインストールした後、読み込みます
require_once 'Net/UserAgent/Mobile.php';
$agent = Net_UserAgent_Mobile::singleton();
// iPhone
if (strpos($_SERVER['HTTP_USER_AGENT'], 'iPhone') !== false) {
// iPhoneの場合
} else if (strpos($_SERVER['HTTP_USER_AGENT'], 'Android') !== false) {
// Androidの場合
} else if ($agent->isNonMobile()) {
// PCの場合
} else {
// モバイルの場合
}
モバイルの場合は、さらに細かくキャリアなどで分けていくと良いでしょう。詳しくは、PEAR:Net_UserAgent_Mobileのドキュメントをご参照くださいませ。
ということで、こんな感じで振り分けのプログラムを制作しています。
各キャリア別のホームページを作りたい! そんなご要望がありましたら、是非ともエイチツーオー・スペースにご相談くださいませ。