PCからなのか、モバイルデバイスからのアクセスなのかを "ざっくり" と判別する。

PC版へ 2015年02月22日

タイトルのとおりなのだけれど、とりあえず今やりたいのは、

アクセスしてきたブラウザが、ユーザの側でウィンドウサイズ変更可(≒PC)な奴なのか、そうでない(≒スマートフォンやタブレットの類)なのか。

…ということを知りたいわけです。

というのも、いわゆるレスポンシブなデザインのページを作るときに、

…という手法を採ることが多いと思うのだけれども、これ、PCのブラウザからの閲覧時にブラウザウィンドウのサイズ変更を行うと、当然ながら、ブラウザの幅に応じて適用されるスタイルが切り替わるわけです。

そういう造りのサイトも多いのですが、これが、個人的に非常に気持ちが悪い。

なので、

そんな感じの動作が良いなぁ、と思いつつ、ざっくりと PC/Mobile の切り分けをするために、ブラウザのユーザエージェント(UA)文字列を調べてみる。

タブレットやスマホ上で動いているブラウザのUA情報を見ると、こんな感じ。

主だったところはこれくらい押さえておけば良かろう。で、結論。

今回は割とざっくりした感じで判別できれば良いので、結局、

これらの文字列のいずれかが含まれていれば「PC以外」からのアクセスである、と判断すれば充分。

PHPだったら、

function isMobile(){
  $ua = $_SERVER[ 'HTTP_USER_AGENT' ];
  if( stripos( $ua , 'mobi' )!== false || stripos( $ua , 'tablet') !== false ) return true ;
  return false;
}

こんな関数を作っておけば事足りそうですな。

JavaScript でも簡単に同じことを出来ますね。

これだと、Android Tablet + Chrome や Kindle や Windows Tablet + IE からのアクセスは「PCから」と判断されてしまうけれど、それは先方さんの「うちのタブレットは高解像度なのでPCサイトを表示してくださいよ」という意思に沿った表示をするだけなので、まぁ良かろう。

viewport を適切に設定しておけばピンチアウトで拡大表示が可能なので、その辺りはユーザ側にお任せできる状況にしておけば、ユーザビリティ上、大きな問題にはならないでしょう。

また、同じAndroidタブレット上の Chrome と Firefox でページレイアウトが異なる、という可能性もあるけれど、今回はそれも無視しておきましょ。

もっと厳密にデバイス判定を行いたいならば、PHPのクラスライブラリ・Mobile_Detect.php を使う、という手もあります。

Mobile Detect - http://mobiledetect.net/

とりあえず今のところは、うちでは Mobile_Detect を使う必要はないのです。

関連記事

コメント

現在、コメント機能は停止しています。