PHPでPCとスマホを判別する方法【Mobile Detect】

PHPでPCとスマホを判別する方法【Mobile Detect】

PHPで、デスクトップとスマホ端末を簡単に判別できるライブラリ、「Mobile Detect」が便利だったので、その使い方を説明します。目まぐるしく変化、増加するユーザーエージェントの情報を調べ上げ、そして端末を振り分けるアルゴリズムを更新していく作業コストは、それはもう膨大なものでしょう。このMobile Detectは、開発チームが定期的にそれらの作業を行ない、アルゴリズムを更新してくれるので、利用者側はこのライブラリのファイルを更新するだけで、それらの作業コストをカットすることができます。

サンプルデモ

Mobile Detectの判定結果のイメージ
Mobile Detectの判定結果のイメージ

「Mobile Detect」を利用して、あなたの端末がデスクトップかスマホかを判定するサンプルデモです。アクセスして結果を確認してみて下さいね。

サンプルデモを見る

ライブラリの入手

サンプルデモを見て「利用したくなった」という人のために、ここからは、「Mobile Detect」の使い方を説明していきます。まずは肝心のライブラリを手に入れましょう。公式サイトの他、GitHubからも、プログラム一式をダウンロードすることができます。

ダウンロードしたMobile-Detect-master.zipを解凍すると、Mobile-Detect-masterフォルダの中に、いくつかのファイルが含まれています。今回利用するのは、その中のMobile_Detect.phpのみです。

Mobile-Detect-master.zip

  • Mobile-Detect-master
    • Mobile_Detect.php

プログラミング

この章では、「Mobile Detect」を使った基本的なプログラミング方法を説明します。「ライブラリの読み込み」「インスタンスの作成」「メソッドの実行」という三つの過程を理解すれば、ほぼ完璧です。

ライブラリの読み込み

まずはrequireを利用して、ライブラリを読み込みましょう。

PHP

<?php
	// ライブラリの読み込み
	require_once './Mobile_Detect.php' ;

インスタンスの作成

続いて、インスタンスを作成し、任意の名前の変数にパスを代入します。具体的には、このプログラムを利用するための変数を決めて、次のようにライブラリの使用を宣言して下さい。サンプルでは$detectにしています。「インスタンス」とは「ハード」のことだと想像して下さい。このハードであるインスタンス($detect)に対して、様々な命令(ソフト)を実行していくことができるというわけです。私は「ファミコン」がインスタンスで、「カセット」をメソッドに例えて想像したらしっくりきました…。

PHP

	// インスタンスの作成
	$detect = new Mobile_Detect ;

メソッドの実行

インスタンスに対して何らかの命令をすることを「メソッドを実行する」と言います。インスタンス($detect)に対して、アロー演算子(->)を使って、次のように記述することで実現します。例えば下記は、isTablet()というメソッドを利用して、「このプログラムを起動している端末がタブレットか否か?」を判定し、$resultに結果を代入しています。「Mobile Detect」にどのようなメソッドが用意されているかについては、次章をご参考下さい。

PHP

	// メソッドを実行する
	$result = $detect->isTablet() ;

サンプルプログラム

下記が、一連の流れをまとめたサンプルプログラムです。どのように動作するかを確認してみましょう。

PHP

<?php

	// ライブラリの読み込み
	require_once './Mobile_Detect.php' ;

	// インスタンスの作成
	$detect = new Mobile_Detect ;

	// メソッドを実行する
	$result = $detect->isTablet() ;

	// HTML用
	$html = '' ;

	// 結果を表示する
	$html .= '<h2>判定結果</h2>' ;
	$html .= '<p>あなたが使っている端末は…、タブレット' ;

	// 条件分岐
	if( $result == true )
	{
		$html .= 'です!!</p>' ;
	}
	else
	{
		$html .= 'ではありません!!</p>' ;
	}

?>

<?php
	// ブラウザに[$html]を出力 (HTMLのヘッダーとフッターを付けましょう)
	echo $html ;
?>

このコードの動作を確認する

メソッド

この章では、「Mobile Detect」で利用できる各メソッドを説明しています。

端末の判定

デスクトップ、スマホ、タブレットを大まかに振り分けるためのメソッドです。一般的には、このメソッドだけで十分でしょう。

メソッド名説明
isMobile()端末がスマホ、またはタブレットの場合に真偽値でtrue、違う場合にfalseを返す。
isTablet()端末がタブレットの場合に真偽値でtrue、違う場合にfalseを返す。

端末の種類を判定する

例えば、デスクトップ、スマホ、タブレットを判別するには、これらのメソッドを利用して下記のように条件分岐を組みましょう。メソッドを実行すると、真偽値が返るのを利用して、それをif文に組み込みます。$detect->isMobile()はタブレットも含みます。そのため、条件分岐の順番にご注意下さい。

PHP

<?php

	// ライブラリの読み込み
	require_once './Mobile_Detect.php' ;

	// インスタンスの作成
	$detect = new Mobile_Detect ;

	// HTML用
	$html = '' ;

	// 見出し
	$html .= '<h2>実行結果</h2>' ;

	// タブレットの場合
	if( $detect->isTablet() )
	{
		// 処理
		$html .= '<p>あなたの端末は<b>タブレット</b>です。</p>' ;
	}

	// スマホの場合
	elseif( $detect->isMobile() )
	{
		// 処理
		$html .= '<p>あなたの端末は<b>スマホ</b>です。</p>' ;
	}

	// デスクトップの場合
	else
	{
		// 処理
		$html .= '<p>あなたの端末は<b>デスクトップ</b>です。</p>' ;
	}

?>

<?php
	// ブラウザに[$html]を出力 (HTMLのヘッダーとフッターを付けましょう)
	echo $html ;
?>

このコードの動作を確認する

スマホかデスクトップを判定する

スマホとそれ以外といった条件分岐にする場合は、下記の通りとなります。

PHP

<?php

	// ライブラリの読み込み
	require_once './Mobile_Detect.php' ;

	// インスタンスの作成
	$detect = new Mobile_Detect ;

	// HTML用
	$html = '' ;

	// 見出し
	$html .= '<h2>実行結果</h2>' ;

	// スマホの場合だけテキストを表示する
	if( $detect->isMobile() && !$detect->isTablet() )
	{
		$html .= '<p>あなたの端末は<b>スマホ</b>です。</p>' ;
	}

	// デスクトップ、またはタブレットの場合だけテキストを表示する
	else
	{
		$html .= '<p>あなたの端末は<b>スマホ</b>じゃありません。</p>' ;
	}

?>

<?php
	// ブラウザに[$html]を出力 (HTMLのヘッダーとフッターを付けましょう)
	echo $html ;
?>

このコードの動作を確認する

スマホの機種判定

スマホの中でも、iPhoneやNexusなどといった、細かい機種判定を行なう際に利用します。

メソッド名説明
isiPhone()端末がiPhoneの場合に真偽値でtrue、違う場合にfalseを返す。
isBlackBerry()端末がBlackBerryの場合に真偽値でtrue、違う場合にfalseを返す。
isNexus()端末がNexusの場合に真偽値でtrue、違う場合にfalseを返す。
isSamsung()端末がSamsungの場合に真偽値でtrue、違う場合にfalseを返す。

スマホの機種を判定するサンプルデモです。スマホをお持ちの人は、スマホでアクセスしてみて下さいね。

サンプルデモを見る

タブレットの機種判定

iPadやNexusなど、タブレット端末の細かい機種判定を行なう際に利用します。

メソッド名説明
isiPad()端末がiPadの場合に真偽値でtrue、違う場合にfalseを返す。
isNexusTablet()端末がNexusの場合に真偽値でtrue、違う場合にfalseを返す。
isKindle()端末がKindleの場合に真偽値でtrue、違う場合にfalseを返す。
isSamsung()端末がSamsungの場合に真偽値でtrue、違う場合にfalseを返す。

この項のメソッドを使って、タブレットの機種を判定するサンプルデモです。ぜひ、タブレットでアクセスしてみて下さいね。

サンプルデモを見る

OSの判定

OSの種類を判定するメソッドです。

メソッド名説明
isiOS()OSがiOSの場合に真偽値でtrue、違う場合にfalseを返す。
isAndroidOS()OSがAndroidの場合に真偽値でtrue、違う場合にfalseを返す。
isWindowsMobileOS()OSがWindowsモバイルの場合に真偽値でtrue、違う場合にfalseを返す。
isWindowsPhoneOS()OSがWindowsフォンの場合に真偽値でtrue、違う場合にfalseを返す。

あなたのOSを判定するサンプルデモです。合っているか、試してみて下さいね。

サンプルデモを見る

ブラウザの判定

ブラウザの種類を判別するためのメソッドです。デスクトップでは動作しません。SafariとGoogle Chromeが混同されるなど、まだ完璧ではないようです。

メソッド名説明
isSafari()ブラウザがSafariの場合に真偽値でtrue、違う場合にfalseを返す。
isChrome()ブラウザがChromeの場合に真偽値でtrue、違う場合にfalseを返す。
isDolfin()ブラウザがDolfinの場合に真偽値でtrue、違う場合にfalseを返す。
isOpera()ブラウザがOperaの場合に真偽値でtrue、違う場合にfalseを返す。
isIE()ブラウザがIEの場合に真偽値でtrue、違う場合にfalseを返す。
isFirefox()ブラウザがFirefoxの場合に真偽値でtrue、違う場合にfalseを返す。

あなたのブラウザを判定するサンプルデモです。デスクトップでは動作しないので、スマホでアクセスして下さい。

サンプルデモを見る

バージョンの取得

OSやブラウザのバージョン情報を取得するためのメソッドです。そのブラウザじゃない場合はfalseが真偽値(boolen型)で返却されます。

メソッド名説明
version(Chrome)Google Chromeのバージョン情報を取得する。
version(Safari)Safariのバージョン情報を取得する。
version(Webkit)Webkitのバージョン情報を取得する。
version(iOS)iOSのバージョン情報を取得する。

あなたのブラウザを判定するサンプルデモです。デスクトップでは動作しないので、スマホでアクセスして下さい。

サンプルデモを見る

ダウンロード

この記事で紹介してきた、各サンプルプログラムを配布しています。動作確認や、プログラミングの下地として、ぜひ活用して下さい。

ファイル一覧

SYNCER00176
is-tablet.php Download
Mobile_Detect.php
detect-device.php Download
is-mobile.php Download
detect-mobile-models.php Download
detect-tablet-models.php Download
detect-os.php Download
detect-browser.php Download
detect-version.php Download

ファイル名をクリックすると内容を確認できます。「Download Zip」をクリックするとファイル一式をダウンロードできます。

Mobile_Detect.phpはzipファイルの中に含まれていません。

Download Zip