Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Perlで作るモバイルサイトのコツ:第5回

効率的なXHTMLの出力方法

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2006/12/05 00:00

第5回は携帯サイトのデザイン性を高めるための主流となっているXHTMLの出力方法を解説します。最近の携帯端末ではほとんど対応になっているXHTMLですが、一部の非対応端末との切り替え方法などについて触れてみます。

はじめに

 第5回は携帯サイトのデザイン性を高めるための主流となっているXHTMLの出力方法を解説します。最近の携帯端末ではほとんど対応になっているXHTMLですが、一部の非対応端末との切り替え方法などについて触れてみます。

対象読者

 Perlを実行できる環境にて携帯サイト構築を考えている方

必要な環境

  • Apache 1.3系または2系
  • Perl 5.6以上

端末のXTHML対応/非対応の判別を行う

 DoCoMo,AUはWAP2.0ブラウザ搭載端末、SoftBankはW型および3GC型端末で対応となります。

 それらを第1回で紹介したHTTP::MobileAgentを使って判別すると次のようになります。

HTTP::MobileAgentによる対応端末の判別
use HTTP::MobileAgent;

my $agent = HTTP::MobileAgent->new;

if ($agent->is_docomo){
    if ($agent->is_foma){
        # XHTML対応
    }
}
elsif ($agent->is_ezweb){
    if ($agent->is_win){
        # XHTML対応
    }
}
elsif ($agent->is_softbank){
    if ($agent->is_type_w || $agent->is_type_3gc){
        # XHTML対応
    }
}

 多少長い判別となってしまいましたので用途に合わせて関数化してもよいでしょう。各キャリアのXHTMLの仕様については公式ページをご参照ください。

キャリアの仕様

※注
 AUのHDMLブラウザ搭載端末では、HDML標準対応となり、「XHTML」コンテンツに関しては、EZサーバによるコンテンツ変換機能を使用し「XHTML → HDML」の変換を行って表示することになります。
 

ヘッダーの出力を切り替える

 XHTMLとHTMLではヘッダーが異なりますのでそれらを切り替える必要があります。

sample.cgi
#!/usr/local/bin/perl
use strict;
use warnings;

use CGI;
use Template;
use HTTP::MobileAgent;

my $q = CGI->new;
my $agent = HTTP::MobileAgent->new;
my $tt = Template->new({ABSOLUTE => 1});

my ($ext, $header);

if (($agent->is_docomo && $agent->is_foma) ||
    ($agent->is_ezweb && $agent->is_win) ||
        ($agent->is_softbank && ($agent->is_type_w
                                    || $agent->is_type_3gc))){
    $ext = '.xhtml';
    $header = 'application/xhtml+xml; charset=Shift_JIS';
}
else{
    $ext = '.html';
    $header = 'text/html; charset=Shift_JIS';
}

$tt->process("/path/to/sample$ext",
              {agent => $agent}, \my $output) or die $Template::ERROR;

print $q->header($header);
print $output;

exit;

XHTMLファイルの有無により表示を切り替える

 XHTMLが存在しないときは普通のHTMLを表示させるなどした方が、より汎用的かもしれません。

ファイルの有無による判別
$filename = '/path/to/sample';
$filename = -f "$filename.xhtml" ? "$filename.xhtml" : "$filename.html"

$tt->process($filename, {agent => $agent}, \my $output)
                                              or die $Template::ERROR;

まとめ

 いろいろな制限のある携帯サイトにおいてデザイン性の向上にはXHTMLはとても必要な機能かと思います。

 本稿を参考にしてキラキラのサイトを作成してください。



  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 小森谷 一生(コモリヤ カズナリ)

    幼年期 幼虫を羽化させたら蛾だったことにショックを受ける 少年期 近所のおもちゃ屋のミニ4駆大会で3位入賞する 青年期 ねずみ講の勧誘を断る 現在  株式会社ライブドア メディア事業部モバイルメディア部プログラマ 好きな言葉は「棚からぼたもち」

バックナンバー

連載:Perlで作るモバイルサイトのコツ

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5