![]() |
モバイルCGI研究(EZweb編)
|
2001年9月2日更新 |
EZweb のサービスを受けられるケータイ端末に情報を発信するには、HDML もしくは WML という言語で書かれたデータが必要になります。
2001年7月の au サーバ工事において、i-mode サイトを初めとする、 HTML で書かれたページの表示もある程度可能になりましたが、 CGI を使用したインタラクティブなサイトを構成するにはやはり HDML や WML の知識が欠かせません。
このページでは、 EZweb 端末への情報発信の基礎、および、各端末の表示能力の取得方法などを説明しています。表示能力の実際の値は「モバイルCGI研究(EZweb編)端末情報一覧」をご覧下さい。
HDML(Handheld Device Markup Language) は HTML と同じようにタグを使ってデータの構造・レイアウトなどを指定する言語ですが、主に次のような特徴があります。
HDML 形式のデータをサーバから発信するときには、ファイルのデータの前に「このファイルは HDML ファイルですよ〜」と宣言するデータ(HDTP ヘッダ)を追加しなければなりません。これは次のいずれかの状況で実現されます。
プロバイダ(サーバ)でそういう設定がしてある。
HDML 対応のプロバイダの場合、 *.hdml という拡張子のファイルには自動的に HDTP ヘッダが付くようになります。
自分でサーバにそういう設定をする。
プロバイダで HDML の設定がされていない場合は自分で設定をしなければなりません。 .htaccess ファイルの設置を許可している場合には、次のようなテキストファイルを用意して、 .htaccess という名前にし、HDML ファイルを置いてあるフォルダに置けば大丈夫です。 Windows 上では.(ピリオド)で始まるファイル名は作れないので、 htaccess.txt という名前で作ってから、サーバ上でファイル名を変更する必要があります。
AddType text/x-hdml;charset=Shift_JIS .hdml
すでに .htaccess ファイルが置いてある場合には上の1行を追加してください。また、最後に改行を入れるようにしましょう。
CGIを使う。
.haccess ファイルで設定できない場合でも、 CGI の場合は HDTP ヘッダを出力することができます。 CGI から HDML を吐き出す前に、次の記述を加えましょう。
Perl # HDTPヘッダの出力例 print "Content-type: text/x-hdml;charset=Shift_JIS\n\n";
勉強中。
ブラウザというのは、ホームページを見るためのソフトで、パソコンの場合には Internet Exproler や Netscape Navigator などが有名ですね。 EZweb 端末の場合は、 Openwave の UP.Browser というのが搭載されています。
User Agent が UP.Brouser かどうかを調べれば、 EZweb 端末でアクセスしているのか、パソコンからアクセスしているのかを判断することができます。
Perl # UP.Browserの判別 @user_agent = split(/\//,$ENV{'HTTP_USER_AGENT'}); if ($user_agent[0] eq 'UP.Browser') { # UP.Browser } else { # それ以外 }
EZweb 端末で受信できるデータは 1.2KB まで(推奨)で、これを越えてしまうとエラーになり、何も表示されなくなります。最近のカラー端末などでは 7.5KB まで(推奨)は大丈夫なのですが、できるだけ 1.2KB までにおさえておくようにしましょう。
1.2KB はおよそ 600 文字分。しかもこの中には HDTP ヘッダや HDML を記述するためのタグなども含まれるので、相当厳しい制限です。
Perl # データ量制限(MAX PDU)の取得 $max_pdu = $ENV{'HTTP_X_UP_DEVCAP_MAX_PDU'};
横16文字、縦4行程度が最低ラインのようですが、最近の端末は横20文字は確保してあるようです。
Perl # 表示可能な半角文字数の取得 ($text_x,$text_y) = split(/,/,$ENV{'HTTP_X_UP_DEVCAP_SCREENCHARS'});
端末の色表示能力は、モノクロ2階調、モノクロ4階調、カラー256色のどれかです。ただし、 HDML にも WML にも、テキストの色を指定する方法はありません。
Perl # カラー端末の判別 if ($ENV{'HTTP_X_UP_DEVCAP_ISCOLOR'}) { # カラー端末(C405SAを含む) # C405SAはカラー画像をモノクロ画像に減色して表示できます。 } else { # モノクロ端末 }
Perl # 色深度の判別 ($screen_depth) = split(/,/,$ENV{'HTTP_X_UP_DEVCAP_SCREENDEPTH'}); if ($screen_depth == 256) { $screen_depth = 8; } # C404Sの一部の端末は色深度ではなく色数256を格納している。 if ($screen_depth == 8) { # カラー256色 } elsif ($screen_depth == 2) { # モノクロ4階調 } else { # モノクロ2階調 }
モノクロ端末では BMP 形式(Windows 標準の画像形式)、カラー端末では PNG 形式の画像の表示が可能です。(2001年7月のサーバ工事で、 JPEG 形式や GIF 形式の画像も、表示可能な形式に自動変換されるようになりました。)
端末で用意されたアイコンの表示も可能です。こちらはダウンロードに時間がかからないので便利です。ただし i-mode の絵文字と違って大きさがバラバラです。
画像の大きさは 96 x 38 で確実に表示されますが、最近の端末ではほとんど横 120 ピクセルは確保してあるようです。
Perl # ピクセル数の取得 ($screen_x,$screen_y) = split(/,/,$ENV{'HTTP_X_UP_DEVCAP_SCREENPIXELS'});
EZweb 用の CGI を書くのに最低限用意した方がよいものを挙げます。
特に CGI を必要としない場合には次のようなツールがあります。これらの詳しい説明はEZweb ホームページを作ろう!の「開発ツール」を参照してください。
CGIぽんはINFOJAMの安価で快適なサーバを利用しています。
|
CGIぽん (C)Copyright 2000-2002 OGATA,Tetsuji
|