PHPシステム構築

第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で利用されているライブラリ作成のための設計手法を紹介します。

第11回 Net_UserAgent_Mobile クラス - 携帯端末情報取得ライブラリ (2)」へ

今回の「くまっち先生のPEAR講座」への評価・ご意見があればご記入下さい。

評価:
ご意見・感想:

「くまっち先生のPEAR講座」のトップへ