ぶろぐちぶろぐちHome開発CakePHPでのユーザーエージェント判定によるスマホ対応2015/11/162015/11/17ぐちCakePHPでのユーザーエージェント判定によるスマホ対応スポンサーリンクこんにちは!ぐちです。ユーザーエージェントよくUAと表記されるユーザーエージェントですが厳密にいうと様々な種類が存在します。その中でもよく使われるのがHTTPユーザーエージェントと呼ばれるものでHTTPリクエストのヘッダ内に識別子として含まれる文字列情報を指します。ブラウザがユーザーエージェントなのですが各キャリアごとにキャリア名だったり端末名だったりが文字列として含まれています。一般にアプリケーション名、バージョン、ホストオペレーティングシステムや言語といった情報も含まれています。Viewの切り替えそこでユーザーエージェントを判別してスマートデバイスからのアクセスの場合に処理を振り分けるといった方法が一般的に取られています。CakePHPにはテーマと呼ばれる仕組みがあって下記のように各アクションの実行前に判定を入れテーマを変えることによってスマホ版(工夫すればガラケー版のViewも可能)のViewを表示することができます。テーマフォルダの作成app/Viewフォルダ配下にThemedフォルダを作成します。その中にMobile(名前は何でもOK)を作ります。下記のような感じです。←モバイル用画面そしてMobileフォルダ配下をapp/View配下と同じ階層になるようにControllerに関連するフォルダとviewファイルを配置していきます。各アクションの実行前に処理されるbeforeFilter()内でユーザーエージェントを判定してテーマを切り替えます。}}上記のようにすることでユーザーエージェント判定により自動的にテーマが振り分けられ該当するviewが表示されることになります。ちなみにスマホからアクセスがあった場合でもスマホ版のviewファイルが存在しない場合は同名のパソコン版のviewファイルが使われますのでスマホで表示したい必要なviewファイルのみを作ればいいということになります。ユーザーエージェントの偽装ただし上記の方法では完璧に振り分けることができません。ユーザーエージェントは簡単に偽装することができるのでそれを考慮した上で使う必要があります。UIデザインだけであればCSSのメディアクエリを使って画面幅を基準に表示を切り替える(?)方法もあります。その方法はまた別でご紹介します。コメントをキャンセルメールアドレスが公開されることはありません。付いている欄は必須項目ですCommentName*Email*Website上に表示された文字を入力してください。