第10回 Net_UserAgent_Mobile クラス - 携帯端末情報取得ライブラリ (その3)
画面情報を知る
携帯端末には液晶画面が付いており、最近では全面が液晶だったり、ワイド液晶を搭載といった大きな画面を備えている端末も登場しています。
これら端末では、Webサイトのブラウジング時に表示可能なサイズ(dot、ドット数)が縦、横ともに定められているのですが、Net_UserAgent_Mobileを利用することでこのサイズ情報を取得することができます。以下のリスト4は、アクセスを行った携帯端末の縦横サイズをドット数で表示させるコードです。
リスト4. 端末の画面サイズを出力する
<html>
<head><title>Net_UserAgent_Mobile test</title></head>
<body>
<?php
require_once 'Net/UserAgent/Mobile.php';
$userAgent = Net_UserAgent_Mobile::singleton();
$display = $userAgent->getDisplay();
print 'Height:' . $display->getHeight() . '<br />';
print 'Width: ' . $display->getWidth() . '<br />';
?>
</body>
</html>
Net_UserAgent_MobileのgetDisplayメソッドで、その端末の画面情報を持つオブジェクトを生成し、目的の縦横サイズ情報を生成したオブジェクトからそれぞれのメソッドを使用して取得します。displayオブジェクトが持つ画面情報はサイズだけではなく、表示可能な色数や、そもそもカラー対応なのか白黒のみなのかを判定する機能といったものも備えています。
近頃発売されている端末では縦横ともに200ドットを超えるサイズで統一されていますが、以前は200ドット以上の端末と120ドット程度の端末が平行して使用されているケースが多く、端末の画面サイズに応じて表示させる画像データを変更するといった処理ケースがよくありました。現在でも旧系端末をカバーするためには、予め数種類の画像を準備しておき、リスト5のように画面サイズに応じて決定するといった処理が有効です。
リスト5. 利用するサイズを4種類に分ける
$userAgent = Net_UserAgent_Mobile::singleton();
$display = $userAgent->getDisplay();
$width = $display->getWidth();
if ($width < 120) {
$useSize = 80;
} elseif ($width < 160) {
$useSize = 120;
} elseif ($width < 200) {
$useSize = 160;
} else {
$useSize = 200;
}
よいプログラムの設計手法

今回の講座では、Net_UserAgent_Mobileの基本的な利用方法について紹介してきました。
ところでこのNet_UserAgent_Mobile、これまでの PEAR ライブラリとは異なった利用法としていることにお気づきではないでしょうか。クラスのオブジェクトを生成するために通常は「new」を使用するところを、「singleton」なるスタティックなクラスメソッドを使用しています。
実はこの Net_UserAgent_Mobile では、ライブラリ作成においてあるテクニックを利用しているのです。よりよいプログラムを行うための設計手法として利用されるテクニックなのですが、これは一体どのようなものなのでしょう。
そこで次回の講座より、このNet_UserAgent_Mobileで利用されているライブラリ作成のための設計手法を紹介します。
今回の「くまっち先生のPEAR講座」への評価・ご意見があればご記入下さい。







