CGIぽん
モバイルCGI研究(EZweb編)
2001年9月2日更新

おおまかな話

目次


はじめに

EZweb のサービスを受けられるケータイ端末に情報を発信するには、HDML もしくは WML という言語で書かれたデータが必要になります。

2001年7月の au サーバ工事において、i-mode サイトを初めとする、 HTML で書かれたページの表示もある程度可能になりましたが、 CGI を使用したインタラクティブなサイトを構成するにはやはり HDML や WML の知識が欠かせません。

このページでは、 EZweb 端末への情報発信の基礎、および、各端末の表示能力の取得方法などを説明しています。表示能力の実際の値は「モバイルCGI研究(EZweb編)端末情報一覧」をご覧下さい。


HDMLについて

HDML(Handheld Device Markup Language) は HTML と同じようにタグを使ってデータの構造・レイアウトなどを指定する言語ですが、主に次のような特徴があります。

HDML 形式のデータをサーバから発信するときには、ファイルのデータの前に「このファイルは HDML ファイルですよ〜」と宣言するデータ(HDTP ヘッダ)を追加しなければなりません。これは次のいずれかの状況で実現されます。

  1. プロバイダ(サーバ)でそういう設定がしてある。

    HDML 対応のプロバイダの場合、 *.hdml という拡張子のファイルには自動的に HDTP ヘッダが付くようになります。

  2. 自分でサーバにそういう設定をする。

    プロバイダで HDML の設定がされていない場合は自分で設定をしなければなりません。 .htaccess ファイルの設置を許可している場合には、次のようなテキストファイルを用意して、 .htaccess という名前にし、HDML ファイルを置いてあるフォルダに置けば大丈夫です。 Windows 上では.(ピリオド)で始まるファイル名は作れないので、 htaccess.txt という名前で作ってから、サーバ上でファイル名を変更する必要があります。

    AddType text/x-hdml;charset=Shift_JIS .hdml
    

    すでに .htaccess ファイルが置いてある場合には上の1行を追加してください。また、最後に改行を入れるようにしましょう。

  3. CGIを使う。

    .haccess ファイルで設定できない場合でも、 CGI の場合は HDTP ヘッダを出力することができます。 CGI から HDML を吐き出す前に、次の記述を加えましょう。

    Perl
    # HDTPヘッダの出力例
    
    print "Content-type: text/x-hdml;charset=Shift_JIS\n\n";
    

WMLについて

勉強中。


ブラウザについて

ブラウザというのは、ホームページを見るためのソフトで、パソコンの場合には 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 を書くのに最低限用意した方がよいものを挙げます。

テキストエディタ
秀丸、Emacs、ミミカキエディットなどまぁお好きなものを。
UP.Simulator
HDML で書かれたコンテンツを PC 上で見るためのブラウザソフト。 Internet Explorer や Netscape Navigator では HDML は見ることができません。実機と多少違うところがあるようですが、ぜひ準備した方がいいでしょう。 Openwave で手に入ります。
EZweb 対応端末(またはそれを持っている友達)
UP.Simulator と実機では動作が異なる点がいくつかあるので、実際に端末からアクセスしてチェックしながら開発するのがいいでしょう。

特に CGI を必要としない場合には次のようなツールがあります。これらの詳しい説明はEZweb ホームページを作ろう!の「開発ツール」を参照してください。


関連リンク

公式サイト
EZweb ホームページを作ろう!
EZweb コンテンツを作ろう!
Openwave(旧Phone.com)
au ホームページ
KDDI Group [ TU-KA ]
非公式サイト
W@P解説ページ
テイク・イット・EZweb(ケータイWatch)
WAP広場WAPでわっぷっぷ
CGIぽん
モバイルCGI研究(EZweb編)環境変数リファレンス
モバイルCGI研究(EZweb編)ez@mail端末の判別とその利用
モバイルCGI研究(EZweb編)端末情報一覧

このページの履歴

2002.09.14
関連リンクを修正
2001.09.02
.htaccess ファイル内の charset の指定を落としていたのを修正。
各項にデータ取得のサンプルプログラムを記載。
テキスト表示に関する記述を追加。
2001.05.24
自サイト内のリンクを追加。
2001.05.16
ページリニューアル。
2000.12.17
初版。

CGIぽんはINFOJAMの安価で快適なサーバを利用しています。