川村渇真の「知性の泉」

用途別の情報表示を簡単に実現する表現フレーム機能


 今回から何回かに分けて、情報中心システムの重要な機能である「表現フレーム」について解説する。いろいろなデータを自由に組み合わせ、自分の好きな形で表示できるようにする機能だ。難しいプログラミングの作業を行わなくても、かなり凝った表示内容を簡単につくることができる。こうした機能を使って、既存OSの業務用アプリケーションに相当する機能を、比較的容易に構築することができる。


業務用アプリケーションに相当する機能を
どう実現するかがポイント

 コンピュータが普及するにつれて、利用する分野も拡大してきた。最初のうちは、コンピュータは計算に使われるのが中心だったが、処理能力が向上してくるといろいろなソフトウェアが登場し始めた。表計算ソフトやデータベースのように、汎用的に使えるタイプに続き、会計や在庫管理などの業務用ソフトも現れた。これらのおかげで、コンピュータを特定の用途で簡単に利用することができるようになった。
 既存OS上で業務用ソフトウェアをつくる場合、プログラミングが伴う。最近ではオブジェクト指向技術が発達してきたために、ツールの機能が向上した。ユーザーインタフェース部分も、ドローソフトで描くような要領でつくることができる。こうした改善により、以前よりもソフトウェアはつくりやすくなってはいる。しかし、劇的に簡単になったというほどではない(表1)。

表1、業務用ソフトを作成する仕組みを、OSの世代ごとに比較した結果。情報中心システムでは、表現フレーム機能が重要な役割を果たす

               OSの進歩 =================>

表1

 現在の業務ソフトウェアで問題なのは、作成したソフトの形態である。独立したアプリケーションとなり、決められた形でしか表示できず、自由に変更できない。ただし、一部の分野には、定義型のアプリケーションが存在する。たとえば会計分野で、処理の式や集計の区切りなどを最初に定義し、それを参照しながら、データの加工や表示内容の生成を実行する。変更できる範囲は限られているが、一般の会計ソフトよりも自由度は高い(注1)
 もう1つ、データの保存方式にも制限がある。独自のファイル形式を採用するため、ほかのソフトへデータを移すのが難しい。この部分は、ファイルという仕組みの限界であり、ここを解決するのは簡単でない。
 ソフトウェアの作成という局面では、プログラミング技術がある程度必要だ。そのため、ソフトの専門家がつくる。しかし、業務知識が不足している場合が多い。逆に、その業務の知識を持つ人は、ソフト作成の技術がなくてはつくることができない。結果として、良い業務ソフトに仕上がる可能性は低い。

注1:使用にあたっては、業務内容をきちんと分析して、式を定義する必要がある。それが前提なので、専門家向きのソフトに仕上がっている。外資系の会計コンサルティング会社では、当たり前に使われているのだが、一般的ではない

特定用途に適した情報表示を
どう簡単に生成する仕組みをつくるか

 情報中心システムでは、表示内容を生成するためにAuto Expression機能を利用する。自動表現機能なので、一般的なデータを扱う限り、わかりやすい表示内容を生成できる。しかし、特定の用途に限定した表示内容をつくるには、残念ながら向かない。特に、ビジュアルを中心とした表現内容を、自動生成機能だけでつくるのは非常に困難である。
 象徴的な例を1つ挙げよう。テレビでよく見る天気予報の表示だ。日本地図の上に、代表的な場所の天気マークが並び、「晴れ」や「雨」などの天気マークは動画で小さく動いている。さらに、いつの天気かを示す日付や、天気予報のタイトルなども含まれる。
 こうしたものをコンピュータ上で生成する場合、すべてを自動化するのは難しい。自動生成するためには、地図を使うかどうか、地図の範囲をどこにするか、いつの天気を表示するか、などを決めなければならない。また、地図を使って表示するか、一覧表にするかも、決めなければならない。やってできないことはないが(注2)、処理時間が長くなりすぎるし、希望どおりの表示内容を得られる確率はかなり低い。もっと別な方法を用いるべきだ。
 もっとも現実的なのは、表示すべき内容の規定データを、事前に用意する方法である。天気予報の例なら、日本全体の地図を使う、天気を表示する地区を数個だけ選ぶ、地図やタイトルの配置をどうするか、などだ。それに「全国の天気予報」と名前をつけて保存し、必要なときに呼び出す。関東の天気予報の表示が必要なら、関東の地図を用いた定義情報を、別な名前で用意する。
 この定義は、表示する部品の配置だけを規定するのではない。表示データをつくるための加工処理も含める。天気予報の表示なら、表示するときの日付と時刻を参照し、当日の午後や翌日の天気を自動的に検索または計算し、対応する表示に変換する。つまり、定義内容には、表示内容と加工処理の両方が含まれる。
 もう1つ重要な点は、以上の機能を簡単に作れることだ。難しいプログラミングなどせずに(注3)、いくつかの条件や処理内容を設定するだけで、希望どおりの表示内容が作れる仕組み(注4)を提供しなければならない。

注2:主要地域の選択データ、地域データを表示するときに地図を用いる表現ルール、などを用意すれば、何とか実現できる。もちろん、思い通りの表示を得るには、かなりの仕組みを用意しなければならない
注3:プログラミングに相当する機能を、プログラミングと思わせないぐらい簡単に作れる方法は、いくらでもある。もっとも単純なのは、用意された中から設定を選ぶだけの方法。設定の種類を増やすだけでも、ある程度までなら複雑な機能が作れる
注4:プログラムの最大の欠点は、処理内容を把握しづらいこと。これを回避するためには、選択方式による処理作成機能が必要

「天気予報のような表現内容を    
  すべて自動で生成するのは難しい」

パーツを配置する表現フレーム機能で
用途別に表示内容を定めておく

 情報中心システムでは、用途にあったそれぞれの表示を簡単に実現するために、「表現フレーム機能」を用意する。まず最初に、表現フレームを定義データとしてつくり、知識ベースに登録する。実際に表示するとき、ユーザーが好みの表現フレームを指定する。するとシステムは、表現フレームの定義データを読み込み、それを参照しながら表示内容を自動生成する。
 表現フレームの定義には、画面上で表示する部品、その配置が含まれる(図1)。この部分だけ見ると、既存のドローソフトに近い。平面上にいろいろなオブジェクトを張り付け、表示画面のレイアウトをつくり上げる。オブジェクトとしては、テキスト、線、四角や円、画像などが含まれる。これらは、そのまま表示する部品だ。

図1、表現フレームに貼り付けることが可能な部品は、入力項目、計算項目(処理や入力項目を含む)、構造体データやその集まり、他の表現フレームの4種類

図1

 しかし、表現フレームで重要なのは、表示内容が変化する部品だ。これは、大きく分けて4つある。値を入れる入力項目(注5)、値を処理で生成する計算項目(注6)、構造体データやその集まり、別な表現フレームだ。順番に説明していこう。
 値を入力する項目は、もっとも単純な部品だ。実在する特定の項目データを指定して、表示する際にデータを読み込み、少し加工して表示する(図2)。ここでの加工内容は、データのタイプごとにデフォルトが決まっている。数値なら、単位の文字列を加えるとか、一般的な単位に数値を変換する(注7)とか、いくつかある。テキストでは、文字数が多いなら、サイズの小さい文字を使って、字間を詰めて表示する。これらの加工は、何も指定しないとデフォルトで処理される。それで困る場合にだけ、表現フレームの定義内で指定する。項目名の文字列を追加する加工なども、指定すれば加えられる。

図2、表現フレーム定義で指定した入力項目から、表示内容を生成するまでの処理の流れ。「表示用加工」では、必要がないなら何もしない

図2

注5:日本では長さをメートル法で表現するので、インチが単位の数値は、自動的にメートルに変換して表示する。変換後の単位がメートルかセンチメートルかは、項目定義を参照して決める
注6:測定などによって得られるデータで、人物データなら身長や体重や生年月日などが該当する
注7:ほかのデータをもとに、計算や加工などを通して得られる結果データ。人物データなら、年齢や肥満率が該当する。ちなみに年齢は、生年月日と年齢計算日から求められる値

処理で生成する項目も
フレーム上に並べる

 表現フレーム上に張り付ける2番目の部品は、値を処理で生成する計算項目だ(図3)。これは、直接入力する値でないため項目を指定しただけでは表示内容を生成できない(注8)。値を求めるのに、どの処理を使うのか指定する必要がある。

図3、表現フレーム定義で指定した入力項目から、表示内容を生成するまでの処理の流れ。処理定義で別な項目データを用いるときは、それが読み込まれる

図3

 選んだ処理には、加工の元データとなる項目が含まれている。つまり、処理を指定することは、処理に用いる項目を指定することに等しい。ただし、処理の元データとなる項目が、計算項目である場合もある(注9)。それを求めるために別な処理が必要なので、それも一緒に設定する。各処理で用いる元データすべてが入力項目になるまで、処理を選び続ける。一番最初は計算項目で始まり、一番最後に入力項目が並ぶ形の階層構造となる(図4)。
 計算項目に含まれる入力項目でも、単独の入力項目でも、表示の対象となる項目データを指定する必要がある。これが決まると、処理や表示が可能だ。

図4、計算項目を貼り付けるとすべての元データが入力項目になるまで、処理を選び続ける

図4

注8:実際には、このようにつくることも可能。その表現フレームを表示する際に、項目を求めるための処理を探す。処理が2つ以上あるときは、どちらにするかユーザーに尋ねる
注9:入力項目か計算項目かは、項目定義の属性に含まれている

抽出条件をフレキシブルにする設定機能を
用意しておけば便利

 入力項目に決まったデータを指定する方法では、臨機応変な表示機能をつくれない。もっと自由度を高めるために、より融通の利く仕組みを追加する。
 そこで、特定の項目データを直接指定する代わりに、いくつかの抽出条件を設定する機能を用意する。指定された条件を満たす項目データを、表示するときに抽出する。条件の例として、次のようなものが考えられる。特定の作業ステージに含まれ、身長がもっとも高い人物データから、年齢データを抽出する。この例のように、抽出条件に含める項目と、抽出する項目が異なってもかまわない。抽出条件の意味を具体的にいうと、たとえば「ある作業ステージに入力された人物データのうち、身長がもっとも高い人の年齢データを得る」となる。  条件設定では、例外の処理も考慮しなければならない。身長がもっとも高い人物データの条件では、最高値の人物が2人以上いるかもしれない。このときどうするのかも、表現フレーム内で規定する。表示前にユーザーに尋ねる、どちらを選んでもよい、別な比較ルール(注10)を追加する、などが考えられる。
 1つの抽出条件を、複数の項目に設定したいケースもある。たとえば、肥満率を計算する場合、条件で抽出した1人の人物データから、身長データと体重データを抜き出す。これを別々の人物データから計算したのでは、肥満率の意味がない。この場合、身長と体重の2項目が、1つの人物データを対象とするように指定する機能が必要だ(注11)。当然、抽出条件も共通になる。
 抽出条件を用いると、どんな項目データが存在するかによって、表示する内容が変わる。目的に合った抽出条件を設定することで、少し凝った処理と同等の機能がつくれる。

注10:加える比較ルールには、体重が重いほうとか、どれかを選択できる条件を指定する
注11:抽出条件を表現フレームに付け、それを複数で参照する形になる

「特定の項目データ入力ではなく、      
  抽出して表示を自動化させれば融通が利く」

表示専用の項目を用意して
表現力を大幅にアップさせる

 表現フレームに張り付ける項目は、一般的な項目データだけとは限らない。表示専用の新しい項目を用いれば、もっと自由な表現も可能となる。
 例として、天気予報の表現フレームを考えてみよう。各地区の天気を、天気マークの動画で表示するためには、天気データを動画データに変換する必要がある。これは、一般的な項目を張り付ける方法では無理だ。そこで、表示専用の項目として「天気マーク表示」を用意し、知識ベースの項目定義に追加する。データのタイプは動画を含む画像で、値を処理で生成する計算項目とする。もう1つ、この項目を生成するための処理定義も加える。天気データを入力とし、その値によって天気マーク動画を選ぶのが処理の中身だ。処理の出力は、該当する天気マーク動画へのリンクで、それをシステム側に渡す。受け取ったシステム側では、リンクをたどって動画を呼び出し、画面表示を生成する(図5)。

図5、表示用項目の「天気マーク表示」と、天気データを天気マーク動画に変換する処理の「天気マーク動画変換」を用意する。動画のデータは、天気マーク動画の構造体に含まれ、「天気」などの項目と一緒に入れられる

図5

 項目定義や処理定義は、この先も続く。天気データも項目定義が必要であり、それを求める処理にも処理定義をつくらなければならない。人口衛星の画像、過去の天気データなど、予想天気を求める仕組みで定義した項目や処理にまで達する。
 表示専用の項目は、その意味や役割が分かるように項目名をつけておく(注12)。表示専用であっても、処理内容を理解しやすいようにつくるべきだからだ。分かりやすくつくるために、途中段階に項目を挿入することもある。
 表示用の項目を用意しておくと、表現フレームの表現力が大きく拡大する。途中に自由な処理を含められるので、抽出条件と組み合わせれば、たいていの表現が簡単につくれるからだ。  もう1つ、ここで重要なのは、一般のデータ処理と同じように、項目定義と処理定義を用いる点だ。新しい機能を覚えなくてすむなど、メリットは大きい。
 ただし、別な面での工夫も必要だ。表示用の項目定義や処理定義が増えると、一般の項目や処理を選ぶ操作が使いにくくなる。表示にしか使わない定義は、表現フレーム内に収め、ほかの作業では見えなくするのが賢い方法だ。定義の作成機能は共用し、見かけは同じ定義とする。保存先が異なり、一般には見えない定義として扱われる(注13)。この方法なら、デメリットを発生させずに済む。

注12:作成者でない人が見たとき、意味が分かるように定義することが大切だ。その意味から、項目や処理の説明も定義に入力する
注13:表現フレーム内に保存した定義を、他の処理でも使いたくなることも起こる。そのため、保存先を知識ベースへと変更する機能も必要だ

「どのように見やすく表示するかは    
  表現フレーム機能をうまく使って実現」

表現フレーム内は入れ子が可能
部品に分けて共有することもできる

 表現フレームの部品としては、別な表現フレームも張り付けられる。この機能により、表現フレームを部品化して、複数の表現フレームで共用することができる。また、下位の表現フレームも独立して表示させられるので、部分だけを見たいようなケースで役立つ。このような使い方があるので、共用しないと分かっていても、一部を独立した表現フレームに分割する価値はある。
 もう1つの表現フレームの部品は、構造体データとその集まりだ。これに関しては、次回に解説する。これも、表現フレームの重要な部品である。また、表現フレームには、情報を扱ううえで役立つ別な機能がある。これら全体を利用すれば、業務用ソフトを代替する機能が苦労せずにつくれる。それだけでなく、既存の業務ソフトでは無理な機能も実現できる。これに関しても、次回以降で解説していく予定だ。


下の飾り