川村渇真の「知性の泉」

紙の発想をいまだに引きずっているHTMLの仕様


今回は趣向を少し変えて、既存システムの技術のひとつを評価してみよう。インターネットに欠かせないHTMLが対象だ。対話型でネットワークらしいと思われているが、紙の発想を引きずった仕様である。レイアウトを重視したため、ページを見る側の表現の自由度はほとんどない。データ構造と表現方法を分離する仕様に変えれば、見る側で表現方法の変更が可能な仕組みへと改良できる。


HTMLの仕様の原点は紙メディア
動画は付け足し的な扱いにすぎない

ここ数年の間に、コンピュータ業界ではいろいろな技術が登場した。しかし、そのほとんどは、コンピュータ中心システムの発想から抜け出ていない。それらを適切に評価することも、今後のためには必要である。その意味で、今回はHTMLを評価してみよう。
 HTML(Hyper-Texts Markup Language)は、ウェブページを記述するための規格であり、段階的に表現力を追加し続けている。また、Netscapeなどのブラウザによっても独自の要素が加えられ、どんどん拡張している。ネットワーク上の技術らしく、対話型の機能も備えている。リンクを設定した文字や絵をクリックすることで、他ページへ移動するものだ。ページ上のフィールドやラジオボタンによって、ユーザーの入力値を収集できる。
 このように対話型の機能を備えてはいるものの、基本部分をよく見ると、紙の延長でしかないことがわかる。HTMLで作成する内容は、全体のレイアウトを重視したページが基本となる。この発想こそ、紙の上でレイアウトするDTPと同じだ。今後の拡張でも、凝ったレイアウトをつくる機能が多い。動画などへの対応の中心はプラグインが担当する。しかし、レイアウトの要素として張り付ける方法なので、要素の枠内でしか機能せず、付け足し的な位置づけだ。

表1、HTMLとその代替仕様で、基本的な特徴を比較した結果。HTMLの仕様はレイアウトを重視しているため、自由度やデータ活用の面が弱い

表1

読み手の自由度がほとんどなく
対話機能も実は貧弱だ

 HTMLの設計思想に大きく欠けているのは、読み手の自由度である。情報中心システムの発想では、データ自体と表現方法を完全に分離する。作成する内容は、構造を持ったデータであり、表現方法を含まない。どのように表示するかは、ユーザーの自由であり、1つのデータから複数の表現を可能にする。レイアウト情報を含むHTMLは、既存ワープロと同じ発想でつくられたものといえる。
 対話機能も実は貧弱で、クリックで別ページへ移動する機能が中心だ。プラグインで対話型ムービーも張り付けられるが、ページ内の部品でしかない。一覧表はテキストを並べるだけの機能なので、数値をグラフ表示に切り替えたり、別ページの複数の表を合成するなど、本当の意味で凝った対話機能は持たない。
 しかし、このような表現方法の変更も重要な対話機能のひとつである。サーバ側のデータベース機能を用いれば可能だが、この作業は非常に大変なのでつくる人は非常に少ない。  また、ページ単位で表示を切り替えるので、使い勝手も低下する。索引ページから移動したあとでは、いったん索引ページに戻らないと、ほかのページへ移動できない。この欠点を解決するために、フレーム機能が追加されたのだが、今度は、前のページへ戻る機能が使いにくくなった。
 以上のように、HTMLはレイアウトを重視した仕様であり、発想の原点は紙にある。そのため、表現力や対話機能を高度に拡張しづらい。

「ハイパーテキストの“新しさ”に目を奪われてはいけない 
             HTMLの使い勝手はまだまだ未熟」

情報中心の発想で改良すれば
構造を持ったデータとしてつくる

では、情報中心システムの考え方でHTMLを改良すると、HTMLのかわりとなる仕様(ここでは代替仕様と呼ぶ)はどのようになるのだろうか。簡単に設計してみよう。
 代替仕様で作成する内容は、情報中心システムと同じように、構造を持ったデータになる。どのような表現を用いるかはブラウザ上で決まり、ユーザーが表示するときに指定する。見かけ上だけだが、情報中心システムに似た形を採用する。
 ただし、動作環境が既存のOSなので、ブラウザ自体をアプリケーションとしてつくるしかなく、情報中心システムのように高機能にはできない。また、データを入れるサーバ側も、階層ディレクトリ機能を備えたファイルシステムに合わせることも必要だ。これらの制約のうえで実現するには、機能を絞り込むしかない。
 そこで、代表的なデータ構造だけを標準化して何種類か規定し、それぞれを1つのファイルとして保存する。各ファイル間でリンクを張り、全体として大きなデータ構造を実現する(図1)。定義するデータ構造は、階層型インデックス、表、区分テキストの3つを基本データ形式とする。これらに、画像、動画、音などの一般データファイルを加える。

図1、代替仕様での作成データの簡単な例。リンク先は、外部のデータでもかまわない。実際には、インデックス内の全項目からリンクが張られ、リンクの数はかなり多くなる

図1

 3つの基本データ形式のうち、一番上に位置するのが、階層型インデックスで、アウトラインプロセッサで作成したような形式になる。入れる内容は、見出し部分だけ集めたもので、内容を階層的に整理して並べる。1つのインデックスファイルでは大きくなりすぎるときは、インデックスを分割して複数のファイルに分ける。1つのインデックスが一番上に位置し、そこから別なインデックスを呼び出して、全体は階層構造となる。別なつくり方として、一連のデータに対して、異なるインデックスを複数用意する方法もある(図2)。その際にも、一番上の総合インデックスを用意し、全体として階層構造を保つ。

図2、1つのデータ群に対して、分類方法の異なる複数のインデックスをつける方法もある。その際には、最上位に総合メニューを設ける

図2

 インデックスで参照する本文テキストは、細切れになりやすいので、数個をまとめて1つのファイルに入れる。これが区分テキストで、個々のテキストにラベルをつけ、インデックスからはラベル名で参照する。関係の深いテキストを集めて1ファイルにすると、ネットワーク経由でデータを読み込むときの効率が上がる。最も単純なデータは、階層インデックスと区分テキストが1つずつのファイルである。
 区分テキストのデータは本文となるため、テキスト内から図や表を参照することが多い。本文中の特定のテキストを選んで、そこにリンクを加える機能も必要だ。これは、現在のHTMLと似た方法だが、レイアウト情報を持たないので、表示するときにより自由な見せ方ができるようになる。

表内の数値や日付はテキストと区別
データ活用の幅がとても広がる

 3番目の表形式データは、いろいろな値を表で整理したものだ。2次元が基本だが、3次元以上も扱える仕様で規定する。表の中では、数値、日付、時刻、テキストなどの区別を明確にする。数値であれば、長さや重さなどの種類ごとに、単位も含める。表の見出し部分には、項目の名前を入れる。HTMLでの表組のように、すべてをテキストとして扱わない。
 このようなデータだと、数値や日付を計算にも使うことができる。ブラウザ側では、ユーザーの指定により、インチなどの長さをメートル法に変換することも可能だ。デフォルトで変換する指定だけでなく、表示後に表全体を変換する機能も用意する。小数点以下の桁数を揃えるとか、いろいろなオプションも考えられる。
 2つ以上の表データを組み合わせて、1つの表にすることも可能だ。値の種類や項目名で判断できるので、項目の並び順が違っても大丈夫だ。どの表から持ってきたのか区別するために、セル内を色分けする方法もある。どの程度まで実現するかは、ブラウザの機能で決まる。

見る側の自由度はブラウザ側で実現
見たいように見られるのがミソ

 代替仕様で最も重要なのは、見る側の自由度だ。データはレイアウト情報を含まないので、データ構造をもとに生成する。
 まず最初に、一番上の階層インデックスへアクセスする。それを読み込むと、アウトライン形式で内容を表示する。その中から見たい部分を選ぶと、下位の項目が現れる。これを繰り返すことで、目的のデータまでたどり着く(図3)。最終的なデータは、文章に画像や表を組み合わせたものだ。

図3、専用のブラウザを用いて、読み込んだ元データから、インデックスのアウトラインや、データの中身などを表示する。どのように表示するかは、ブラウザの機能とユーザーの選択で決まる

図3

 アウトライン形式は、表現方法のひとつでしかない。同じ階層の項目をメニューボタンとして並べ、ページを移動する方法でもかまわない。どんな方法で表示するかは、ブラウザによって決まる。1つのブラウザが複数の表示方法を持ち、好みで切り替える。
 本文を表示するときも、複数の中から好みの方式を選ぶ。本文テキストにリンクした表や画像を、本文中に挿入して表示する方式や、別ウィンドウとして横に表示する方式などを用意する(図4)。本文で参照している図や表だけを、まとめて表示する機能など、アイデア次第でおもしろい機能が加えられる。インデックスとして用いるアウトライン表示の中で、本文や図を表示する方法もある。大切なのは、豊富な表示方法を提供し、ユーザーが好きな形式を選べることだ。

図4、代替ブラウザの概略イメージで、最も単純なもの。作成内容がデータ構造中心なので、ユーザーは好みで表示方法を選べる。選択のバリエーションは、ブラウザが高機能なほど増える

図4

 頻繁に見る部分が決まっている場合、いつも先頭からアクセスするのは非効率だ。既存のブラウザのブックマークに相当する機能で、この欠点を補う。代替ブラウザのブックマークは、対象データのネットワーク上での保存場所だけでなく、表現方式などの表示オプションも含む。ある数値の表データをグラフでも見たいなら、表現方式に表とグラフの両方を指定する。単なるブックマークではなく、表現オプションつきブックマークを実現する。

「レイアウト情報を持たないデータはとても自由   
  見る方法も選べればどんなにか使いやすいことか」

階層インデックスを拡張して
デザイン重視の要望にも応えてくれる

 アウトライン形式の表示は、データを重視するウェブページには適するが、デザインを重視するページには不向きだ。デザインを見てほしい用途もあるため、デザイン重視の機能も用意する。ただし、デザイン部分だけ独立させるのではなく、インデックスにデータを付加する形で実現する。インデックスのデータは、下位の内容を選ぶための項目でもある。インデックス内の各項目ごとに、ボタンなどの画像データをリンクできるフォーマットにする。一番上の項目にリンクした画像はタイトルとなる。また、背景画像なども別にリンクする。こうしてリンクした画像は、別のレイアウト用データによって、配置や重ね順を指定する。このデータも、階層インデックスからリンクする形で付加する。
 こんな構造なので、表示レベルを3段階から選べる。簡単な順に並べると、テキスト中心のインデックス表示、各項目に画像データを含んだインデックス表示、画像の配置を固定したレイアウト表示だ。この3種類のどれで表示するかはユーザーが選べるし、ブラウザが表示内容を生成する。レイアウト表示するかどうかも、ユーザーに選択権があるわけだ。項目に付加するのは、画像だけとは限らない。動画に変えれば、動くボタンがつくれる。音のデータに関しては、クリックなど再生タイミングも規定する。さらに、レイアウトのデータでは、個々の画像表示のオン、オフや配置の変更など、簡単なプログラミング機能を加えることで、動くレイアウトを実現できる。拡張性はかなり高い。
 ほかにもいろいろとアイデアを思いついたが、誌面スペースの関係で省略する。でも、少しだけヒントを出しておこう。電子メールや電子会議への応用、情報の自動整理、外部への確実なリンクなどだ。

「ネットワーク上での表現はもっと緩やか       
  『動くレイアウト』なんてのがあればもっと楽しい」

紙から脱却できる進歩のチャンスを
残念ながら逃してしまった

以上のように、HTMLの仕様は、紙の発想を根強く持っている。ネットワーク上での機能は、紙からの脱却を目指すべきだが、HTMLはそうなりきれていない。
 ネットワーク上で利用される規格は、新しい機能を入れやすい。違った発想で考えれば、ここで提示した代替仕様を実現できたはずだ。それによって、既存のOSを使いながら、情報中心システムへ少しだけ近づけた。もう実現不可能ではないものの、いったん普及したものを別なもので置き換えるのは、かなり難しい。多くのウェブページがHTMLでつくられると、簡単には変えられない。最初に良い仕様を提供することは、コンピュータの普及度が向上するほど重要となることがわかるだろう。
 今回説明した代替仕様は、情報中心システムのネットワーク機能の一部を抜き出したものだ。情報中心システムになると、もっと使いやすいネットワーク機能を実現できる。もちろん、ソフトを操作するという感覚ではなく、情報そのものを扱うという感覚で使える。
 HTMLの仕様を見た時点で、「旧態依然とした考え方でつくられているなぁ。まだ紙の発想を引きずってるぞ」と思ったなら、情報中心システムの考え方を基本部分で理解している。そうであれば、ほかの新技術に対しても、かなり冷ややかな評価を下しているだろう。たとえば、最近話題のJavaについて、世間が騒ぐ理由を理解できないはずだ。もちろん、筆者もそうである。前述のHTML代替仕様に適応させる形で、Javaの代替仕様も設計できる。当然ながら、情報中心システムの発想に合わせてだ。
 非常に残念なことだが、現実の世界では、既存の枠内での考え方(オブジェクト指向やエージェント指向も含む)によって、新しい技術が設計される。今までよりも機能は増えるが、使いやすいものは非常に少ない。多くの開発者の努力を最大限に生かすためにも、ソフト全体での基本コンセプトの変革が求められている。


下の飾り