川村渇真の「知性の泉」

情報をわかりやすく表示する機能


情報を表現するということは、コンピュータを使うメリットの1つだが、今のシステムでは十分に生かされているとはいえない。情報中心システムを使うと、どういう点がいいのか、ここにポイントを絞って解説したい。


 情報中心システムの最大の特徴は、情報をわかりやすく表示する機能だ。表現ルールを利用しながら、一覧表や構造図などを自動生成する。その仕組みでは、多くの表現ルールを上手に組み合わせて、最適な表示内容を作成する。ほかのOSでは、まったく考慮してない部分だけに、ユーザーに与えるメリットは大きい。

Auto Expression機能は3つの要素の統合

 情報中心システムには、情報をわかりやすく整えて表示するAuto Expression機能がある。表現ルールを組み合わせながら、一覧表や構成図といった表示内容を自動生成する。情報中心システムの中心的機能であり、最も複雑な部分だ。本格的に説明すると難しいので、重要な点だけに絞って解説する。
 前に解説したように、Object First機能が表示する前の元データを、構造体データとして用意する(図1)。それをもとに表示内容を生成するのが、Auto Expression機能の役割だ。知識ベースと表現ルールを参照しながら、できるだけわかりやすい表示内容を作成する。

図1、Object First機能が用意した構造体データをもとに、Auto Expression機能が表示内容を自動生成する。どちらの機能でも、ユーザーが指定する項目は極端に少ない

図1

 Auto Expression機能に必要な基本機能は、大きく3つに分けられる。最初は、一覧表や構成図などを描くための表現機能で、表現方法の種類ごとに用意する。次は、描く内容をわかりやすく改良するための表現ルールで、表現方法ごとに異なる内容と、一部に共通する内容がある。最後は、どの表現方法を用いるかを選択するための、判断機能で、全体を統括する役目もある。
 この3要素を含んだ仕組みを考える場合、個々の表現ルールが幅広く利用できることが大切だ。それとともに、各表現ルールの特性を分析する必要もある。

「表現ルールを組み合わせながら、         
  一覧表や構成図といった表示内容を自動生成する」

表現ルールはプログラム形式、データ定義ではない

 知識ベースに入れる項目定義や構造体定義は、データ定義の形をとる。しかし、表現ルールのほとんどは、データ定義ではなくプログラムの形式になる。特定の条件を満たしたとき、どのように描くかを決めるものなので、データ定義にはなりにくい。
 プログラムの形をとる以上、各表現ルールの組み合わせ方が重要になる。情報表現をよく分析すると、まったく異なるように見える表現方法でも、細かな部分では共通の表現ルールを持つことがわかる。たとえば、一覧表と構成図なら、一覧表内の数値項目と、構成図内の枠つきの数値項目では、同じ表現ルールが適用できる。枠内で右に揃えるとか、小数点以下の桁数を決めて四捨五入するとか、縦に並んだ各数値で小数点の横位置を合わせるとか、かなり多くの表現ルールが共通で使える。このような特性を考慮し、数値項目に関する表現ルールは、それだけで独立させる必要がある。

下位のルールを呼び出す構造

 組み込んだ表現ルールを、できるだけ多くの表現方式で利用するためには、各ルールを簡単に呼び出せる仕組みしかない。その結果、3レベルのモジュールに分けた(図2)。そのうえで、各モジュールごとに、表示内容の生成機能と表現ルールを組み込む。一番上のモジュールが、一覧表や構成図といった基本となる表現方法モジュールだ。このモジュールの中には、定型フォームをサポートする表現方法も含まれる。貸借対照表のような、決まった書式を知識ベースに登録しておき、それをもとに表示内容を生成するためだ。これがあれば、特定用途に最適な表示内容も簡単につくれる。

図2、Auto Expression機能の基本構造。各モジュールには、表示内容の生成機能と表現ルールが含まれている

図2

 次のレベルの部品モジュールは、表現方法モジュールから呼び出して利用する。見出し、目盛り、枠つきテキスト、矢印など、複数の表現方法モジュールで使われる共通の部品が対象となる。ここに属するモジュールは、かなりの種類になるので、上位の表現方法モジュールでは、部品モジュールを組み合わせるだけの機能ですむ。
 部品モジュールの中には、他の部品モジュールを組み合わせて、1つのオブジェクトにするものもある。たとえば、枠つきテキストと枠つき写真を縦につなぎ、1つのオブジェクトとして生成する役目だ。このような組み合わせモジュールも用意するので、部品モジュールから他の部品モジュールを呼び出すことも可能にする。
 一番下に位置するのが素材モジュールで、部品モジュールから呼んで利用する。テキスト、数値、枠、線、写真といった、基本となる要素が含まれる。

各モジュールごとに表現ルールを持つ

 3種類にモジュールを区分けした最大の理由は、各モジュールごとに表現ルールを持たせることにある。
 最初に、素材モジュールの場合を考えてみよう。枠を描く場合、線の太さや色に枠のデザインまで加えると、数多くの種類になる。それらの中で、目立つ度合いには差があり、強調したいオブジェクトに目立つ設定が使える。また区別しやすい色の組み合わせは、オブジェクトの分類に利用できる。たかが枠線であっても、強調や分類という目的で表現ルールを適用できる。数値モジュールなら、指定桁数で四捨五入する機能などが含まれる。テキストモジュールには、狭い領域に多くの文字を描くための表現ルールとして、字間を詰めたり長体をかけることが考えられる。
 上位の部品モジュールでは、素材モジュールの表現ルールも利用しながら、独自の表現ルールも加える。見出しモジュールなら、知識ベースから項目名を読み込むとか、数値なら単位をつけることが、表現ルールになる。項目名や単位は文字列データなので、下位のテキストモジュールに渡して、描画データを生成する。その際、文字列データと一緒に、強調や分類の情報も渡すわけだ。
 強調や分類の情報は、最上位の表現方法モジュールが用意する。表示する元データを分析して、強調する部分や分類用に区分けする情報を渡しながら、下位モジュールを呼び出す。
 どのモジュールも、システム側か作業ステージ側で定義してある表現設定を参照する。この設定には、強調時の書体や色の使い方など、ユーザーの好みで指定した設定が含まれる。システム全体や、作業ステージごとに、強調などの表示方法を統一することで、情報を正確に読みとりやすくできるからだ。

モジュール呼び出しでは何度かのやりとりが発生

 上位モジュールが下位モジュールを呼び出して用いる場合、単純に1回の呼び出しですむことは少ない。各データの表示サイズを決定するまでに、何度かのやりとりが必要となる。
 たとえば、一覧表の各項目の幅を決定するケースだ。表示するデータが多いときは、限られた面積の中に数多くのデータを入れたい。小さな文字サイズを選ぶとともに、各項目の幅を可能な限り狭くしたい。どの程度まで狭くできるのか、下位のモジュールに尋ねることから始める。
 このとき前提となるのは、項目内の全部のデータを表示するとは限らない点だ。特にテキストでは、文字数が多い一部のデータでは、前の部分だけを表示することも多い。このように一部の表示を省略することで、項目の幅が狭くでき、より多くの項目数を一緒に表示できる。このような理由があるため、下位モジュールに項目の幅を尋ねるときは、データ全部を表示する項目の割合を指定する。たとえば、100%と90%と80%の3つを指定して、各条件の項目幅を受け取る。項目幅の差が小さければ100%の項目幅を採用し、あとは差の大きさによって90%か80%の項目幅を採用する。
 全部を表示できない項目では、字間を詰めたり長体をかけたりして、できるだけ多くの文字数を表示するような表現ルールを適用する。それでもダメなら、表示できない部分があることを知らせる記号を加える。このような仕組みも表現ルールの一部であり、最初から最適な表示を得られる基礎となる。

知識ベースとの連動で表現方法を決定

 どの表現方法を採用するかは、一番最初に決める。最も重視するのは、ユーザーが指定した使用目的だ。最もわかりやすいのはデータの比較で、表示方法には表形式を採用する。組織図と指定すれば、組織の階層構造を図示する階層構造図を表現方法に選ぶ。組織図という言葉から階層構造図を導き出すのは、知識ベース内の定義だ。組織図のような汎用的な言葉は、デフォルトの表現方法とともに登録しておく。
 知識ベースは、項目や構造体の定義だけでなく、表現方法の選択を助ける役目もある。構造体定義の中に、最適な表現方法を登録しておく。構造体の中から選ぶ項目のグループ分けによって、異なる表現方法が適している場合は、複数の表現方法を登録する。
 知識ベースには、適した表現方法に加えて、表示内容の生成に役立つ情報も入れる。基本軸や補助軸となる項目も、その1つだ。基本軸というのは、個々のデータを識別するための項目であり、一覧表での並び順を決定する。補助軸は2番目や3番目の識別項目で、2次元以上のグラフ表現で、2番目以降の軸として用いる。グラフの種類によっては、数値の軸を選ぶ必要があり、該当する軸の中から選択する。人物データなら、氏名の読みが基本軸になり、年齢などを補助軸に設定する。
 貸借対照表のように形式が決まっているケースでは、汎用の定型フォーム作成機能を用いて、項目の並びを知識ベースに登録しておく。その定型フォームに合わせて表示内容を生成するので、最も適した表現方法が一発で得られる。
 このように、表現方法の決定では、知識ベース内の表現情報が重要な役割を果たす。よく使われるデータのほとんどに表現情報を加えることで、適した表現方法が一発で選ばれる。もし表現方法を登録してないデータの場合は、時間などの重要項目を軸に選び、とりあえず表形式で表示する。そのあとに、ユーザーの好みの表現方法に切り替えてもらう。それに加えて、過去に選んだ表現形式も学習し、選択に反映させる仕組みも必要だ。

「よく使われるデータのほとんどに表現情報を加えることで、
            適した表現方法が一発で選ばれる」

知識ベースを参照する分析モジュール

 表現方法の決定と同様に、表示の元データを分析する分析モジュールも、知識ベースを参照する。表示内容のどの部分を強調するかを決めたり、わかりやすく見せるための付加情報を加えるのが、おもな役目だ。
 どのような分析が必要かは、用いる表現方法によって異なる。一覧表形式なら、横軸の項目の並び順や、縦軸となるデータの並び順などを決める必要がある。分析方法もモジュール化して、複数の表現方法から呼び出せるようにする。
 各分析モジュールでは、分析結果である強調などの情報を、もとの構造体データに加える。グループ分けとか、項目の並び順だとか、分析モジュールごとに担当する情報を付加する。その情報をもとに、各表現用モジュールが表示内容を生成する。
 強調のように目立たせることのほかに、新しい情報を付加することも、分析モジュールの役割だ。たとえば、折れ線グラフで最大値や平均値の線を加えると、値の傾向が読みとりやすくなる。また、一覧表では、1から連番を加えたほうが、具体的な順番を明確に読みとることができる。このような付加情報は、分析モジュールが最適なものを選んで加える。
 汎用的な分析だけでは難しいので、分析を手助けする情報も知識ベースに入れる。構造体定義が最適で、データの並び順やグラフの軸となる重要項目を、定義に含めておく。そうすれば、分析の精度は格段に向上する。

表現ルールをユーザーが登録可能に?

 表現ルールは、ユーザーが登録可能にすることも考えられる。各モジュールごとに加える表現ルールは、決められたインタフェースを持つ。それに合わせる形で、専用のプログラム言語を用いて作成する。表現ルールを適応する条件と、処理内容を定義する。
 正直なところ、表現ルールを一般ユーザーがつくるのは難しい。最初から用意してある数多くのわかりやすい表現ルールより、良いルールをつくれるとは、考えにくいからだ。悪いルールを追加すると、生成する表示内容が悪くなってしまう。こちらのほうが心配だ。
 表現ルールの作成は難しくしておき、情報表現の専門家がつくったルールを、簡単に追加できる機能だけで十分かもしれない。最初に用意する表現ルールで、ほとんどのデータがわかりやすく表示できることも、理由の1つだ。一部のモジュールの代表的な表現ルールをまとめてみた(表1)。これを見れば、手動で描くよりも良い表示内容を、自動生成できることがわかるだろう。

表1、表現ルールとして実現可能な例。代表的なモジュールごとに、目玉となる表現ルールを並べてみた。このようなことが自動で行われると、手動で描くよりも良い表示内容が簡単に得られる。この種の機能が他のOSにはないので、OS比較は省略した

表1

 ここまでAuto Expression機能の基本部分を説明したが、そのほかにもより凝った機能を持っている。その仕組みよりも、ユーザーから見た実現内容のほうが重要だ。元データさえきちんとつくっておけば、わかりやすく正確な表示内容が、ほとんど操作しなくても得られる。この機能があるからこそ、コンピュータが新しい次元へと進歩できる。


下の飾り