ケータイ Watch
連載バックナンバー
【後編】気になるiモードコンテンツとの互換性
[2001/11/15]

【前編】XHTML Basicって何?
[2001/11/14]


2000年

テイク・イット・EZweb 2
第7回:ユーザビリティを向上させよう
佐藤 崇 佐藤 崇
Phone.com JapanでEzweb・WAPサイトテクノロジーを技術的・マーケティング的な側面からサポート。元Internet Academy Web Directionインストラクター。Webデザイナー業等を経て現職へ。Ezweb対応検索エンジン「w@pnavi」の代表も兼任。


 auが12月からスタートする次世代サービスでは、WAP 2.0が採用され、「XHTML Basic」という記述言語が使われています。本誌では、auの新端末に搭載されているブラウザーを開発しているオープンウェーブシステムズ社から大原博之氏をお招きし、XHTML Basicによるコンテンツの作り方を解説していただきます。



 応用編になり、デッキ、アクティビティという2つの山を乗り越えてきました。今回は、カードとデッキと並んでHDMLの柱の役割を担っている「ラベル」機能を中心に見ていくことにしましょう。


HDML対応ブラウザーの特徴

 今回は、ブラウザーの観点から、使い勝手という点について考えてみることからはじめたいと思います。まず、HDMLサイトを表示できる「UP.Browser」について見ていきます。

 UP.BrowserはPhone.comが開発したブラウザーで、HDMLページはこのブラウザーを使用することではじめて携帯電話上で表示できるようになっています。機能について少し見ていきましょう。

 まず、画面を見てみます。画面は「HDMLデータを表示する部分」ということなのですが、UP.BrowserはPCやiモードなどのブラウザーとは少し表示構造が異なっています。画面上部には画像や文字が表示される領域があります。これは他のブラウザーと同様です。マークアップ言語によって規定された内容が表示されていきます。

 ところが、UP.Browserには、その下に妙な区切り線があります(区切り線でない場合もあります)。そして、その区切り線の下には、何らや変な文字が表示されています。

 GUI的には、これはiモードとよく似た構造をとっています。他のブラウザーにとってこの部分は、ナビゲーションをサポートするために、ブラウザーが「機能」として表示しているファンクションにあたる部分になるのです。通常は「戻る」とか「選択」といった文字が表示されると思います。

 また、それらのファンクションの下には、それに対応した「キー」が存在しています。そのファンクションを実行するためのボタンです。ユーザーは表示されたファンクションを実行するため、スクロールキー以外にこれらのキーを駆使することでナビゲーションを自由自在に実現できるようになっています。

 一方のHDML対応ブラウザーでは、このあたりの構造が少し異なっています。実は、タグを使用して、この部分を制御できるようになっているのです。つまり、ページ制作者がナビゲーションの部分にまで口を出すことができてしまう、それがHDMLのもう1つの本質なのです。

 これは、HDMLが携帯電話に特化した、ということの1つの象徴でもあると言えるでしょう。そもそも、携帯電話でインターネット環境を楽しむということは、ユーザーサイドに立てば、次のような「前提」をクリアする必要があると言われています。

  • ディスプレイサイズの制限
  • 入力装置としての制限
  • 不安定な通信環境

 今回のファンクション部分ですが、これは、もちろんブラウザーの拡張機能としてサポートするという方法もあります。ただ、HDMLではこの部分についても制御できるようにすることによって、こうしたユーザーサイドから見た「前提」をクリアすべく、より快適なナビゲーション・操作性を実現しようとしているのです。初心者にとってはスクロールキーと選択キーさえあればよい、という意見もありますが、実際、使い込んでいけばいくほど、ナビゲーション機能がページ制作者の意思によっ制御できる、拡張できるようになっていることのほうが、思わぬ使い方が実現でき、使いやすい、という場面が出てきます。


■実際にファンクション部分を規定してみよう

 では、これから扱うHDML用語について、最初にまとめておきます。

C305Sの場合
C305Sの場合

 まず、「選択」や「戻る」という文字列を表示する部分のことを「ラベル」と呼びます。また、ラベル部分の機能に関連したキーのことを「ファンクションキー」と呼びます。通常、UP.Browserを搭載する携帯電話には、3つ以上のファンクションキーがついていることになっています。

  • ACCEPTキー
  • SOFT1キー
  • BACKキー

がその3つにあたります。このうち、「BACKキー」については通常、端末の「BACKキー」、「CLEARキー」がそれにあたります。1つ前の操作へ戻るときに使用するものです。

 HDMLを扱う中で重要になってくるのは前者2つのキーです。「ACCEPTキー」は次の操作へ進む、選択するとうように、一番よく使用するキーです。そして、「SOFT1キー」は、「ACCEPTキー」をサポートし、これと対になって使用されるキーです。

 それでは、実際に実装していきましょう。実装方法は色々とありますが、一番オーソドックスな方法は<ACTION>タグを使用する方法です。

 <ACTION>タグは、今回はじめて登場したタグですが、これからおそらく一番よく使用することになるタグだと思います。<ACTION>タグは、カードごとにその操作内容を定義するために使用するタグです。操作内容とは、上記の部分で説明した、2つのキーの部分についての操作内容ということになります。

 では、どのように定義するのでしょうか?

 定義の詳しい内容は、すべてオプションを使用して行ないます。「type=""」で定義するキーを宣言。そして、「task=""」でキーの仕事内容を宣言します。また、「ACCEPTキー」と「SOFT1キー」については、それぞれ「label=""」で表示する文字列を規定できます。アイコン画像を貼り付けることも可能で、その場合、この部分は「icon=""」で指定してください。

 例を見てみましょう。

【deai.hdml】

<HDML version="3.0">
<DISPLAY name="1">
<ACTION type="accept" task="gosub" dest="#2" label="次へ">
はじめてのEZweb。私と彼との出会いはちょう
ど一年前にさかのぼる。<BR>
</DISPLAY>
<DISPLAY name="2">
<ACTION type="accept" task="return" label="戻る">
<ACTION type="soft1" task="gosub" dest="#3" label="注意">
雨、今でも思い出す。それは一年前、それは
ちょうど東京にあの大雨が降った日のことだっ
た。<BR>
</DISPLAY>
<DISPLAY name="3">
<ACTION type="accept" task="return" label="戻る">
ココから先はまた書いていません。
</DISPLAY>
</HDML>

dead.hdml

 あるカードで「ACCEPTキー」と「SOFT1キー」を同時に定義したい場合は、<ACTION>タグは2つ必要となります。この例を見ると分かると思いますが、「task=""」の部分には今まで勉強してきた「go」「gosub」「return」「cancel」等を使用することができます。すなわち、HDMLではリンクについては、HTMLと同様<A>タグを使用して設定することも可能なのですが、実は上記のように<ACTION>タグを使用して設定することもできるのです。よく使い込むようなアプリケーションを考える場合、<A>タグだと、画面が縦に長い構造になった場合など、リンク部分が表示されたり、表示されなかったりすることになるので、結果的にこの<ACTION>タグを使用するほうが利用者にとってはるかに効率的であることになります。

 ただ、よりユーザビリティを高めたい場合は、<A>によるリンク機能と<ACTION>機能の双方に対応したインターフェイスにすべきではないか、というのが私の個人的な感想です。初心者にとっては、なかなか複数のキーを使いこなすのが大変だと思いますから。

 また、今まで詳しい説明を省略してきましたが、ここで「task=""」についてまとめておきたいと思います。

task="go"  通常のリンクジャンプ機能
task="gosub"  新しいアクティビティへのリンクジャンプ機能。戻り値として「task="return"」が使える
task="call"  「number=""」で指定した電話番号に電話をかけることができる。iモードのPhone To機能と同義。
task="return"  「task="gosub"」で呼び出されたカード・デッキに戻すことができる。戻る際に変数はクリアされるが、ユーザーインターフェイス自体は保持される。例えば、3番の項目を選んで帰ってきても3番の位置にカーソルが残る。
task="cancel"  処理をキャンセルする。
task="prev"  直前のカードに戻る。
task="noop"  何もしない。キーを定義しないと「ACCEPTキー」には「task="prev"」が規定され、ラベル部分には「OK」と表示されるが、これを使用することでこうした不可解な動作を解消できる。

 さて、<ACTION>タグは、ここではずっとカード単位で定義してきましたが、実はデッキ単位でまとめて定義することもできます。


<HDML version="3.0">
<ACTION type="soft1" task="gosub" dest="#3" label="注意">
<DISPLAY name="1">
<ACTION type="accept" task="gosub" dest="#2" label="次へ">
はじめてのEZweb。私と彼との出会いはちょう
ど一年前にさかのぼる。<BR>
</DISPLAY>
<DISPLAY name="2">
<ACTION type="accept" task="return" label="戻る">
雨、今でも思い出す。それは一年前、それは
ちょうど東京にあの大雨が降った日のことだっ
た。<BR>
</DISPLAY>
<DISPLAY name="3">
<ACTION type="accept" task="return" label="戻る">
ココから先はまた書いていません。
</DISPLAY>
</HDML>

のように記述すれば、いちいち2つのカードごとに<ACTION>タグを書く手間が省けるのです。


擬似アニメーション

 話は変わりますが、HDMLでは擬似アニメーションが実現できます。いくつかの方法がありますが、ここではWMLの拡張機能を利用したものについて考えて見ましょう。

 WMLとは、WAPフォーラムが正式に採用し、HDMLを元にしてできあがった世界標準の携帯電話用記述言語です。EZweb対応端末に搭載されているUP.Browserでは、実際にはWMLでかかれたページを特に何の問題もなく表示することが可能です(ただし、WMLScriptの機能は使用できません)。例えば、EZwebの公式メニューの多くの海外サイトはWMLで書かれていたりします。

 ただ、基本的に現在EZwebで使用されているブラウザーはあくまでHDMLで構築されたサイト向けのものになっている関係上、皆さんにはWMLではなくHDMLでページの作成を薦めてきました。実際、HDMLの方が分かりやすかったりする場合もあります。ところが、WMLにはHDMLにない特殊な機能があるのです。そして、それをUP.Browserで実現できてしまいますので、ここで少しだけ触れておきたいと思いました。その1つがここで触れる「タイマー機能」と、それによって実現できる「擬似アニメーション機能」なのです。

 擬似アニメーションといっても、ちょうどHTMLでいうタグを使用して擬似的にページをジャンプさせるような形となります。WMLにはタイマーという機能があり、それによってカードを表示させる時間を強制的に指定することができるのです。

 例えば、下記のようにしてみると簡単なアニメーションが実現できます。

擬似アニメーション

<HDML version="3.1" public="true">

<DISPLAY name="card2" timerdefault="5">
<ACTION type="ontimer" task="go" dest="#card3">
<WRAP>:
<WRAP>:
<WRAP>E
<WRAP>:
</DISPLAY>

<DISPLAY name="card3" timerdefault="5">
<ACTION type="ontimer" task="go" dest="#card4">
<WRAP>:
<WRAP>:
<WRAP>E Z
<WRAP>:
</DISPLAY>

<DISPLAY name="card4" timerdefault="5">
<ACTION type="ontimer" task="go" dest="#card5">
<WRAP>:
<WRAP>:
<WRAP>E Z w
<WRAP>:
</DISPLAY>

<DISPLAY name="card5" timerdefault="5">
<ACTION type="ontimer" task="go" dest="#card6">
<WRAP>:
<WRAP>:
<WRAP>E Z w e
<WRAP>:
</DISPLAY>

<DISPLAY name="card6">
<WRAP>:
<WRAP>:
<WRAP>E Z w e b
<WRAP>:
</DISPLAY>

</HDML>

 ここでポイントになってくるのは、<HDML>のバージョンが「3.1」になっていることと、<DISPLAY>タグにある「timerdefault=""」、<ACTION>タグにある「type="ontimer"」の部分でしょう。これを使用すれば簡単なアニメーションを作ることができますし、表現力にも磨きがかかるでしょう。


キャッシュの制御

 HDMLはキャッシュを効果的に活用する仕様となっています。このため、時には過去のデータが表示されてしまうこともありますが、これをHDML側で制御することも可能です。タグの中で「ttl=""」を使用することで、これを実現することができます。秒単位でキャッシュデータの残存時間を指定することが可能なので、これを使用すれば更新頻度の多いサイトを運営するにはもってこいの機能です。

 「ttl=""」で指定できるのは、新しい「dest=""」で新たにURLリクエストを出す際に、過去のキャッシュデータを参照するのか、ということをここで見る、そのために使用されるものだとお考え下さい。だから、例えばBACKキー等を使用して戻ったりする場合は「ttl="0"」と指定しても新たにデータを取得しに行くことは一切ありません。

 また、チャットプログラムなど、自カードをリロードさせようという場合、「ttl=""」と「dest=""」が正しく規定されていても、リロードされない場合があります。これは、キャッシュがデッキ単位で定義されてしまっているためです。この場合、間に別デッキ上にあるカードをはさみこむことで解決できます。


■自動処理にチャレンジ

NODISPLAYの例 説明を飛ばしてきましたが、<NODISPLAY>カードについて、ここで見てみましょう。<NODISPLAY>カードとは、表示されないカード、すなわちユーザーに意識させない操作を実現できます。通常は今回勉強した<ACTION>タグと併用します。

 この場合、ブラウザーは最初に「name="1"」のカードを読み込みますが、何も表示されず自動的に次の「name="2"」のカードにジャンプするようになっています。この手法はCGI等を使用したとき、さらにパワフルな使い方が実現できるのです(CGIについては次回詳しく見ていきます)。


<HDML version="3.0" public="true">
<NODISPLAY name="1">
<ACTION type="accept" task="go" dest="#2" vars="tel=09000000123">
</NODISPLAY>
<DISPLAY name="2">
ようこそ、ここの緊急連絡先は
$telです。
</DISPLAY>
</HDML>


■今回勉強したタグ

<ACTION>

 ラベル部分・ファンクション部分についてカード単位で定義できるタグ。

type=""
定義するキーを指定する。「accept」「soft1」「soft2」「back」などがある。
task=""
定義したキーに割り当てる仕事内容を指定する。
task="go"
通常のリンクジャンプ機能。
task="gosub"
新しいアクティビティへのリンクジャンプ機能。戻り値として「task="return"」が使える。
task="call"
「number=""」で指定した電話番号に電話をかけることができる。iモードのPhone To機能と同義。
task="return"
gosubで呼び出されたカード・デッキに戻すことができる。戻る際に変数はクリアされるが、ユーザーインターフェイス自体はクリアされない。
task="cancel"
処理をキャンセルする。
task="prev"
直前のカードに戻る。デフォルトでBACKキーに規定されていると考えればよい。
task="noop"
何もしない。デフォルトでキーを定義しないとACCEPTキーには「task="prev"」が規定され、ラベル部分にはOKと表示されるがこれを使用することでこうしたエラーを解決できる。
dest=""
taskが「go」「gosub」の場合必要。
number=""
taskが「call」の場合必要。
label=""
キーに割り当てられるラベルの部分の文字表記を定義できる。推奨は4文字まで。acceptキーは必要ないケースもあるが、soft1キーなどは定義しないと、そもそも何も表記されないので、せっかく定義したタスクがユーザーに理解されない可能性もあるため、必ず使用するようにする。
icon=""
ラベル部分に文字以外にアイコン画像を表示する場合使用することが可能。書き方はアイコン画像の指定時とまったく同様。
<HDML>
ttl=""
キャッシュの残存時間の指定。秒単位で指定できる。

 今日は<ACTION>タグを中心に色々とテクニックを見てきました。<ACTION>タグを自由に使いこなせるようになれば、あなたもHDML達人の仲間入りです。是非活用してみてください。




URL
  Phone.com Developer Program(HDML WMLコンテンツ制作支援サイト)
  http://developer.phone.com/ja/


(佐藤 崇)
2000/10/12 00:00

ケータイ Watchホームページ

ケータイWatch編集部 k-tai@impress.co.jp
Copyright (c) 2000 Impress Corporation  All rights reserved.