アットマーク・アイティ @IT@IT情報マネジメント@IT自分戦略研究所QA@ITイベントカレンダー  
 @IT > Master of IP Network > Mobile Connection > HTMLをHDMLに移植してみる
 

HDMLでEZweb対応のページを作る(3)
HTMLをHDMLに移植してみる

佐藤 崇
2001/7/19

今回のおもな内容
カードとデッキ
ハイパーリンクの処理
画像やアイコンの表示
HTMLからHDMLに移植する

  今回は、前回「HDMLの特徴とその記述方法」で少しだけ触れたHDMLのタグの詳細な記述方法やTIPSを紹介し、まとめとして簡単なHTMLをHDMLに移植してみます。なおHTMLについては、一通りの理解があることを前提として進めていきます。

 

    カードとデッキ

 HDMLは、HTMLを携帯電話向けに最適化した記述言語です。携帯電話の持つさまざまな特性を踏まえた配慮が随所でなされています。

  • 限られた出力ディスプレイ
  • 限られた端末の処理実行能力
  • 限られた入力装置(キーやボタン)

 HDMLでは、マークアップ言語で記述されブラウザが表示するもの(ページ)のことをページとは考えません。「カード」という概念を使ってこれを説明しています。携帯電話などの小型ディスプレイで表示される画面をPC向けサイトの延長線上で「ページ」と呼ぶのではなく、1つ1つの機能をブロック化し、1つ1つの操作体系を分割したカードのようなものとしてとらえることになっています。各カードは物理的にまとめられ、ファイル形式になる際は「デッキ」という上位概念によって束ねられています。また各カードは、アクティビティという論理的な上位概念によっても束ねられ、ブラウザの操作性の向上・ユーザビリティの向上に一役かっています。

 HDML的には、カードは4種類のタグ、<DISPLAY> <CHOICE> <ENTRY> <NODISPLAY>によって表現され、デッキは<HDML>によって表現されます(アクティビティについては次回説明します)。例えば、リスト1のように記述すると、<DISPLAY>カードというカードが表示されます(図1)。

<HDML version=3.0 public=true>
  <DISPLAY>
  これはEZweb向けHDMLカードです。
  </DISPLAY>
</HDML>
リスト1 HDMLの基本

図1 リスト1を表示したところ画像をクリックすると拡大表示します

 以下各カードの機能と特徴やポイントについてまとめてみました。

<DISPLAY>
 文字や画像を表示するために使われます。表示するという文字どおりの名前が付いています。リンク・画像表示など一般的な機能すべてを使うことが可能です。

<CHOICE>
 選択項目の中から任意の1つを選択、実行させる機能を実現できるカードです。<DISPLAY>カードにおいて<A>タグなどを使用しても同様の機能が実現できますが、<A>タグは後からHDMLに追加された仕様であり、リンクを張る、選択項目を表示するといった機能は<CHOICE>カードを利用して行うのがもともとの形態です。単にリンクリストを表示するだけではなく、「変数」を割り当てることも可能です(変数については次回詳しく説明します)。

<CHOICE>タグ利用におけるTIPS

 各選択肢には<CE>タグを使用します。</CE>タグで閉じる必要はなく、逆に閉じてしまうとエラーになります。最初の<CE>タグが始まるまでは、さまざまなレイアウトに関連するタグ、画像表示などの機能が実現できます(選択肢の上部にヘッダを表示することが可能です)。ただし、<CE>タグが書かれた以降はそのようなタグを利用することができなくなります。

 デフォルトで<CHOICE>カードを開くと、「選択項目1」が選ばれた状態で表示します。しかし、

<CHOICE name="test">
@ITでのEZweb関連の連載を読んで貴方も是非サイトを制作してみよう。利用者が多いのにサイト数が少ない今は絶好のチャンスです。
<CE>選択肢1
<CE>選択肢2
</CHOICE>

のように選択肢の上部に非常に長い説明文が続いたり、または画像が入ったりすると画面が切れて表示されることがあります。この問題は、デフォルトで選択される番号を変更することで対処できます。<CHOICE>タグ中に「idefault="0"」を記述すればOKです。

 また<CHOICE>カードによって表現される選択肢は、上から順に1、2、3……と自動的に番号が割り振られます。また、この番号は、携帯電話のアクセスキー機能と連携しています。そのため、10以降は表示されないので注意が必要かもしれません。あらかじめ、この番号機能をオフにすることもできます。その際は「method=alpha」とすればOKです。

<ENTRY>
 HTMLでいうところの入力フォームを実現するカードです。<CHOICE>カードと同様、フッタ部分を自在にカスタマイズできます。また入力されるデータに対して、「key=""」というアトリビュートを使ってラベル付けをします。key=""となっていることから、<ENTRY>カードなどで入力されるデータのことを「キー変数」(key value)と呼ぶことがあります。

<ENTRY>タグ利用におけるTIPS

 <ENTRY>カードでは、あらかじめ入力される文字種を強制的に指定することが可能です。iモードのistyle属性と、まったく同じ機能が実現できます(isty;e属性はiモード対応HTML 2.0以降で使えますが、HDMLではすべての端末に利用可能なアトリビュートです)。これらの制御は、<ENTRY>タグ内に「format=""」を使用することで実現できます。

format=""での指定文字 文字種
A 大文字アルファベット
a 小文字アルファベット
N 半角数字のみ
X 数字または大文字アルファベット
x 数字または小文字アルファベット
M 何を入れてもよい(日本語もOK)
m 何を入れてもよい(日本語もOK)

 例えば、「format="AAAANN"」とすると、最初の4文字は大文字アルファベットで、次に数字が2文字続く文字パターンしか入力できなくなります。また、「format="AAAA"」は、「format="4A"」と記述することもできます。ただし、「format="4ANN"」のようにはできません。詳細は、UP.SDKに付属するドキュメント「UP.SDK Developer's Guide」の「Handling user input」の個所(devguide.pdfの12ページから)を参照してください。

<NODISPLAY>
 画面に何も表示されないカードです。具体的には、何が起こっているのか表示したくないときに使用するカードです。例えば、ある決まりきった操作やプロセス(ログ取得やデータの初期化など)を実行したい場合に使います。

    ハイパーリンクの処理

 HDMLでも、HTMLにあるようなハイパーリンクを実現できます。大きく分けて3通りの方法があります。

<A>タグを利用したリンク処理
 <A>タグの利用が最もポピュラーな方法です。HTMLで使用する<A>タグとほとんど同義ですが、「href=""」の代わりに、「dest=""」でハイパーリンク先を指定し、「task=go」を記述し、リンク処理に関してブラウザに仕事内容を伝えます(「task=""」については次回もう少し詳しく見ていきます)。

<ACTION>タグを利用したリンク処理
 <ACTION>タグは、「ラベル機能」に対応し、その部分の動作定義をする際に使用するものです。

 ラベル機能とは、各カードを表示する際に、不足しがちな携帯電話のユーザビリティをサポートする形でWAP陣営が初期のころから取り入れている機能です。各カードを表示する部分以外に、ブラウザの画面の特定部分にブラウザのさまざまな機能を割り当てて実行できる領域を設けます。そして、ソフトキーという特殊なキーを割り当て、使い勝手をあげています(通常EZweb対応携帯電話では2つ以上のソフトキーが搭載されています)。各カードについて、<ACTION>タグなどを使って指定できます。

<ACTION type="accept" task=go dest=test.hdml label=進む>

type=""」で具体的に定義したいキーの名称(日本で発売中の端末の場合、たいてい「accept」か「soft1」が入ります。acceptキーはPCの左クリックに相当するもの、soft1はacceptキー以外に割り当てることのできる任意の操作キーと考えると分かりやすいと思います)は2種類以上ある場合がほとんどなので、

<ACTION type="accept" task=go dest="test.hdml" label=進む>
<ACTION type="soft1" task=go dest="test2.hdml" label=進む>

のように続けて記述しても構いません。また記述する場所ですが、各カードタグの「直後」が原則です。また、

<HDML version=3.0 public=true>
<ACTION type="accept" task=go dest="test.hdml" label=進む>
<ACTION type="soft1" task=go dest="test2.hdml" label=進む>

<DISPLAY>
テストカードです。

</DISPLAY>
<CHOICE>
テストカードです。
</CHOICE>

</HDML>

のように記述すると、<DISPLAY>カードと<CHOICE>カードの2つをまとめて定義することも可能です。

<CHOICE>カードを利用したリンク処理
 <CHOICE>カードを利用する場合は、

<CHOICE>
<CE task=go dest="test.hdml">選択1
<CE task=go dest="test2.hdml">選択2
<CE task=go dest="test3.hdml">選択3
<CE task=go dest="test4.hdml">選択4
<CE task=go dest="test5.hdml">選択5
</CHOICE>

のように記述します。ここまでくるとお分かりだと思いますが、データを渡す操作をするタグにおいて、リンク処理とは「task=go dest=""」の組み合わせで基本的には動作するようになるということです。

    画像やアイコンの表示

 画像表示の部分は、HDMLはHTMLとまったく同じです。ただし、対応画像フォーマットはモノクロ端末が1bit BMP、カラー端末では1bit BMPと8bit PNGとなっています。

<IMG src=test.png alt=wait>

 HDMLでは、画像に加えて絵文字・アイコンの利用が可能です。携帯電話コンテンツは、コンテンツ利用者に利用分をパケット通信料として請求するシステムのため、あまりたくさんのパケット代を消費させる画像の多用は好まれません。そこでユーザビリティとフレンドリーな見え方を両立するものとして、アイコン画像と呼ばれるものが利用できるようになっています。iモードにおける絵文字とほぼ同義ですが、iモードとは異なりHDMLの仕様に組み込まれている全世界共通の仕様です(WMLでも採用されており、文字コードの一部を割り当てる形式とは少し事情が異なります)。

<IMG icon="">

 アイコン番号ないしはアイコン省略名称を記述します。端末内に組み込まれたデータから直接参照するので、インターネット上から画像データをダウンロードすることなくスムーズに表示できます。

 なおアイコン画像については、現行のEZwebの端末では3種類のものが用意されています。1つはモノクロ端末向けのもので、デフォルトでは175種類のアイコン画像が用意されています。後の2種類はカラー端末向けのもので、C309Hなどの@MAILに対応していないカラー端末向けのアイコン画像(モノクロ画像をカラー化したもの)と、@MAIL対応機のものがあります。@MAIL対応機のアイコン画像はほかのキャリアを意識した仕様となっており、300種類以上ものアイコン画像が用意されています。従来のEZwebのアイコン画像にあったインターフェイス上の難点(アイコンの種類によって大きさが異なる、もともとアメリカで作られたアイコン画像なので日本人向けでない)を克服し、使い勝手の向上したものになっています。詳しくはKDDIのサイトで「ビルトイン・アイコン一覧」として仕様が公開されていますので、そちらで確認してください。

 また<IMG>タグを使って、C310T以降のCMX(EZweb上の音声データなどの再生拡張機能)に対応した端末では、BGMを再生することが可能です。CMXに対応したQCELPというデータ形式を再生でき(CMX機能のうち音声のみの部分の再生が可能で、QualcommのPureVoiceが使用されているようです)、wavなどの音声データを変換して、携帯電話で再生できます。「PureVoice Technology」(英語)のページで、その説明とエンコーダなどがダウンロードできます。

 ちなみにQCELPデータは無限ループ再生ですし、PCなどと異なりバイブレーションモード以外では強制的に音声データがダウンロード、再生されてしまい、利用者にとってはいささか不親切な設計ともいえるので、あくまで興味本位での挑戦をオススメします。

    HTMLからHDMLに移植する

 ここでは、HTML向けに作られたものを、HDMLに「移植する」という観点から詳しく見ていきます。例を挙げながら、これまで説明していないタグについても触れます。

<html>
<head>
  <title>モバイル代官山GUIDE</title>
</head>
<body bgcolor=#ffffff link=#ff0000>
  <center>モバイル<br>
  代官山<br>
  GUIDE
  </center>
  <hr size=1 width=80%>

  <marquee>
  ようこそおこしくださいました!!
  </marquee>
  1.<a href=1.html accesskey=1>はじめての方へ</a><br>
  2.<a href=2.html accesskey=2>代官山へのアクセス</a><br>
  3.<a href=3.html accesskey=3>お店紹介</a><br>
  4.<a href=4.html accesskey=4>夜の代官山</a><br>
  5.<a href=5.html accesskey=5>代官山に住もう</a><br>
  <div align=right>(C)@IT</div>
</body>
</html>
リスト2 元になるHTMLのサンプル

 リスト2をHDMLで書き直す場合、<DISPLAY>カードを使うパターンと<CHOICE>カードを使うパターンの2通りがありますが、<CHOICE>カードの場合、レイアウトの汎用性が低いので、ここでは<DISPLAY>カードでの書き換え方を示します。

01: <HDML version=3.0 public=true markable=true>
02: <display name=top title=モバイル代官山GUIDE>
03:   <center>モバイル<br>
04:   <center>代官山<br>
05:   <center>GUIDE
06:
07:   <br>
08:
09:   <line>
10:   ようこそおこしくださいました!!
11:   <wrap>
12:   <a task=go dest=1.hdml accesskey=1>はじめての方へ</a><br>
13:   <a task=go dest=2.hdml accesskey=2>代官山へのアクセス</a><br>
14:   <a task=go dest=3.hdml accesskey=3>お店紹介</a><br>
15:   <a task=go dest=4.hdml accesskey=4>夜の代官山</a><br>
16:   <a task=go dest=5.hdml accesskey=5>代官山に住もう</a><br>
17:   <right>(C)@IT
18: </display>
19: </hdml>
リスト3 リスト2のHTMLをHDMLに書き直したサンプル

1行目: <HDML>タグには、バージョン名とブックマークに関連する記述を行います。ブックマークに関連する記述を何もしないと、携帯電話からは「アクセスエラー」となるので注意が必要です。

2行目: <TITLE>タグは、ブックマークが各カード単位で行われることから、各カードタグのtitle=""アトリビュートで処理できます。ブックマークできる・できないは、<HDML>タグのmarkable=""で指定することができるようになっています。

3〜5行目: <center>タグはHTMLと同様利用できるが、そのタグのある1行のみ有効となります。この点がHTMLの<center>タグとは違う点です。また、各行の最後に、閉じタグは特に必要ありません。

9〜11行目: <line>は改行位置を制御できるもので、HTMLの<marquee>のように使うことができます。ただし、いったん<line>タグを利用すると、以後の行ですべて<line>命令が働いてしまうので、<line>命令を無効にしたい最初の行で<wrap>タグを挿入する必要があります。

12行目: <A>タグ内でのアクセスキー機能はHDMLでも利用可能だが、割り当てが可能なキーは1〜9のキーで、それ以外のキーに割り当てを行うことは機能上保証されていません。またaccesskey=0を指定すると、その<A>が埋め込まれたカード内にある<A>タグに対して上から順に1、2、3……のようにaccesskey=""が割り当てられてしまいます。またHDMLにおいてaccesskey=""を割り当てると、自動的にその前後で文章が改行し、ディスプレイ画面左に指定した番号が表示されてしまいます。

 なお、HDMLには<HR>タグがないので、改行や画像などで代替をする必要があります。

図2 リスト2のHTMLをブラウザで表示
  図3 リスト3のHDMLをブラウザで表示

 タグのポイントは以上述べてきた通りです。各タグの詳しい仕様などは、KDDIのサイトの「技術情報」や「Openwave ディベロッパーウェブサイト」などを参照してください。次回は最終回ですが、EZwebのネットワークの仕様、CGI回りの解説を予定しています。

 次回の掲載は8月中旬ごろを予定しています

Profile
佐藤 崇(さとう たかし)
 EZweb最大の検索総合サイト「w@pnavi」やモバイル総合コミュニティ「itokio.com(イトキオコム)」を立ち上げたBITRATING代表。WebデザインやOpenwave在籍の経験などを生かし、コンテンツ提案・作成・運営・アドバイザリ活動などを幅広く展開。自身の立ち上げたサービスの月間総PVは2500万を超える。株式会社スターグリーティングス スーパーバイザも兼任。1999年慶大卒。

「連載 HDMLでEZweb対応のページを作る」

 



 


 
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

   
@ITトップMobile Connectionフォーラム トップ会議室利用規約プライバシーポリシーサイトマップ