SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

効率的なXHTMLの出力方法


  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 第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はとても必要な機能かと思います。

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

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Perlで作るモバイルサイトのコツ連載記事一覧

もっと読む

この記事の著者

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

株式会社ライブドア メディア事業部モバイルメディア部プログラマ

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/745 2008/08/26 13:42

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング