はじめに
第5回は携帯サイトのデザイン性を高めるための主流となっているXHTMLの出力方法を解説します。最近の携帯端末ではほとんど対応になっているXHTMLですが、一部の非対応端末との切り替え方法などについて触れてみます。
対象読者
Perlを実行できる環境にて携帯サイト構築を考えている方
必要な環境
- Apache 1.3系または2系
- Perl 5.6以上
端末のXTHML対応/非対応の判別を行う
DoCoMo,AUはWAP2.0ブラウザ搭載端末、SoftBankはW型および3GC型端末で対応となります。
それらを第1回で紹介した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の仕様については公式ページをご参照ください。
キャリアの仕様
ヘッダーの出力を切り替える
XHTMLとHTMLではヘッダーが異なりますのでそれらを切り替える必要があります。
#!/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はとても必要な機能かと思います。
本稿を参考にしてキラキラのサイトを作成してください。