Emacs - Calendar 救済処置(HDMLって何?)
昨日Emacs Calendarが失敗だったと書きましたが、id:PaiNさんに「Emacs Calendarと連動するCGIをつくり、携帯から操作すれば…」とのコメントをいただきました。大変面白そうですので、酔っ払った頭で考えています。
で、このとき大事になるのはユーザインターフェースです。なにしろ普段使うものですし、携帯の小さい画面と遅いネットワーク、使いづらいボタン類をうまく使いこなす必要があります。しかもHTMLの表示が糞です。実はこれに関して疑問だったことがあるんです。それはTU-KAの会社のページや有名なページはうまく表示されるんですよね*1。調べてみたところ、HDML(Handheld Device Markup Language)と呼ばれるHTMLの兄弟みたいな既述言語が使われているようなのです*2。携帯自体はこのHDMLしか理解出来ないらしく、携帯からHTMLのページにアクセスするとプロキシサーバがHDMLに変換しているようです。HTMLの表示が糞なのも分かるような気がします(HTMLを無理矢理HDMLに変換するので予期せぬ表示になったりする)。
で、そのHDMLはどんなものかというと、それはそれは便利なものだったりします。HTMLの兄弟ではありますが、根本的な違いもあります。タグなども全く違うのですが、それらは参考サイトを見ていただくとして、仕様の違い(要は便利なところ)を挙げてみましょう。
- 携帯のボタンに機能を割り当てられる
- 数字キーでメニューを選んだり、携帯の戻るボタンで前のページへ遷移したりといったことが可能。
- 1ファイル1ページではない
- 1つのファイルにDISPLAYと呼ばれるタグで複数のページを作成できます。これはカードとデッキという概念を利用したもので、1つのファイルがデッキであり、その中に複数のカードがあることになります。利用者から見ると複数のファイルがあるのと同じように見えますが、最初に全部読み込むので速いです。
- 携帯特有の機能が使用できる
- CALLタグで電話したり、携帯内の内蔵アイコンを使用したりといったことが可能。
いじってみた感想としてはカードとデッキの概念は携帯の特性上、必須の機能であると思われます。当初の目的に戻って、カレンダーと予定をHDMLで表現すると次のような感じになります。
<HDML TTL=0 VERSION=3.0> <CHOICE> <CE TASK=GO DEST=20040402>2004/04/02 <CE TASK=GO DEST=20040403>2004/04/03 <CE TASK=GO DEST=20040404>2004/04/04 <CHOICE> <DISPLAY NAME=20040402> 2004/04/02の予定 </DISPLAY> <DISPLAY NAME=20040403> 2004/04/03の予定 </DISPLAY> <DISPLAY NAME=20040404> 2004/04/04の予定 </DISPLAY> </HDML>
ちなみに、このHDMLフォ−マットのファイルは*.hdmlという形で保存し、(Webサ−バがApacheならば)httpd.confに以下の一行を加える必要が有ります。ですので、レンタルサ−バじゃ辛いかも知れません(今回はもともとの趣旨が予定管理なので、レンタルサ−バは視野にも入っていませんが)。
AddType text/x-hdml;charset=Shift_JIS .hdml
残念なことに下のようなことは出来ませんでした。
4月 2004 日 月 火 水 木 金 土 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
見た目だけならば横幅20文字分なのでぴったりなのですが、携帯がバカなので一行に1つしかリンク出来ません。ですので、UIは一日一行で一度に10-20日分ずつという感じになりそうです。
まぁ、まだ出来ていないのですが(観覧だけは出来るようになりました)。