はじめに

SP対応にあたり、サーバーサイドの記事を書いてほしいと頼まれました。
米山です。

とはいえ、ただSP版の特徴をつらつら書いても面白くないかと思います。
そのため、今回はデバイス判定をするために参照した、ユーザーエージェントについてまとめたいと思います。

ユーザーエージェント(User Agent)とは?

Wikipediaさんで調べてみたところ、

利用者があるプロトコルに基づいてデータを利用する際に用いるソフトウェアまたはハードウェアのこと。
HTTPではUser-Agentヘッダーが定義されている。
クライアントはサーバーにリクエストを送る際に、ユーザーエージェントの情報をUser-Agentヘッダーとして送信する。
User-Agentヘッダーには、アプリケーション名、バージョン、ホストオペレーティングシステムや言語といった情報が含まれる。
User-Agentヘッダーはサーバ側において様々な用途で利用されている。
アクセス解析をする際に、User-Agentヘッダーによって、ユーザーが使用しているブラウザの種類やバージョンを集計することができる。

要は、

  • Webページなどを表示する際に、その端末の情報がサーバーに送られています。
  • この情報はHTTPヘッダーのUser-Agentにのってきます。

    ユーザーエージェントを確認してみる

    こちらのサイトで確認できました。
    ユーザーエージェント確認

    実際のユーザーエージェントは下記のように取得できます。(iPhoneでアクセスした場合です。)

  • Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_2 like Mac OS X)

  • AppleWebKit/603.2.4 (KHTML, like Gecko)

  • Version/10.0 Mobile/14F89 Safari/602.1

しっかりiPhoneと記載されています。
この文字列を判定し、iPhone(もしくはAndroid)などと記載されている場合はSPページにとばしてあげればよさそうです。

ユーザーエージェントを取得する方法は?

多くのサーバーサイドスクリプトには、ユーザーエージェントを取得する方法があります。
今回はPHPとRuby(Rails)で考えたいと思います。

PHP

PHPには$_SERVERという、サーバー情報を取得できる変数が備わっています。
リファレンスはこちらになります。

今回のように、HTTPヘッダーを取得する場合は、下記です。

<?php
$user_agent = $_SERVER["HTTP_USER_AGENT"];
var_dump($user_agent);

Ruby on Rails

Webサイトを作成するときは、おそらくRuby on Railsが多いかと思いますので、Railsのrequestで考えたいと思います。
リファレンスはこちら

puts request.user_agent

ユーザーエージェントを取得したら

いろいろ方法はあると思いますが、strposinclude?といった、対象のユーザーエージェントに特定の値が含まれるかで条件分岐することが簡単ではないでしょうか?
例えばPHPで、iPhoneを対象にする場合です。

$user_agent = $_SERVER["HTTP_USER_AGENT"];

if (strpos($user_agent, "iPhone")) {
    // iPhoneの場合の処理
} else {
    // それ以外の処理
}

strposのリファレンスはこちらです。

おわりに

簡単ではありますが、ユーザーエージェントとその利用法についてまとめてみました。
少しでも参考になれば、嬉しく思います。

Shere
  • はてなブログ
  • Twitter
  • Facebook
User AgentでSP判定!〜SP版リリースにあたり〜

Writer

  • Name

    Naoki

  • Position

    RubyやPHPが書きたい雑用

  • Profile

    最近、(自称)PHPerから(自称)Rubyistに移行しようと考えている雑用です。Rubyのオブジェクト 指向はすごい分かりやすいので好きになりました。また、メソッド名に?が使えるのも良いですよね!