川村渇真の「知性の泉」

処理内容を把握しながら作業する仕組みの詳細


前回は、処理全体を把握しながら作業を進める機能について述べた。今回は、把握機能をもう少し詳しく説明する。処理の流れ図は、関連する処理を全部含んだ形で作成し、より広い範囲での把握を実現する。また、目的に合った項目の組み合わせを素早く選び、効率的に作成する機能も持つ。さらには、処理の入れ替えも簡単なうえに、試行錯誤をも可能にする。


データの意味を理解しながら行う
構造体データ中心の処理流れ図の作成

 処理の流れ図は、扱うデータの意味に近い考え方でつくることが重要だ。これを作成するうえでの考え方は、大きく分けて2つある。
 1つは、実際に処理する項目をデータブロックとして指定する方法だ。たとえば、健康診断データから肥満率を求めるとき、一番下のブロックに肥満率を配置する。それを求めるための計算が1つ上の処理ブロックになり、計算に必要な身長と体重の2つのデータブロックがその上にくる。全体としては、肥満率を求めるための処理が描かれる。
 もう1つのつくり方は、肥満率データの持ち主である人物データを中心に据えて、処理の流れを組み立てる方法だ。この場合、データブロックには人物データを使い、それに肥満率の項目を追加するという考え方になる。流れ図上の処理ブロックは、肥満率の計算ではなく、項目の追加として機能する。追加項目の求め方も指定する必要があるため、それは処理ブロック内に加える。求め方も流れ図として作成でき、結果として流れ図の階層構造ができあがる(図1)。ただし、求め方の流れ図は、独立した処理なので、実際には階層構造ではない。

図1、処理流れ図を編集する機能の概略イメージ。構造体中心の流れ図として作成した場合は、項目中心の流れ図を処理ブロックの中につくる

図1

 人物データは構造体データなので、構造体を中心とした流れ図と呼ぶ。逆に前者のほうは、項目を中心とした流れ図になる。構造体中心の流れ図では、処理ブロックの中に、項目中心の流れ図を収める。

関連する処理を1つの流れ図で作成
重複項目・作業を自動的に省ける

 大抵の仕事では、1つの項目だけを求めるわけではない。何種類もの項目を計算し、全体としてひとまとまりの結果を得る。それらの項目をまとめて把握できたほうが、多くのケースでは使いやすい。
 前述の2つの作成方法のうち、構造体中心の流れ図のほうが、全体をまとめて把握するのに適している。例として、データを分析する作業を考えてみよう。分析に必要な計算項目はいくつもあり、それらの求め方を指示した処理ブロックをつくり、構造体データにまとめて加える。そのあとに分析用の処理ブロックを続ける。何種類かの異なる分析を加える場合なら、分析の処理ブロックを並列に分けるように、処理の流れをつくる。処理の流れ図は、全体を把握しやすいようにつくるのが基本だ。
 ブロック数が多くなったら、階層構造で分割する方法を用いる。条件抽出、項目追加、集計、分析というように、処理の目的で分割すれば、全体を把握しやすくなる。分割の方法は、何種類かにパターン化できるだろうから、簡単に使いこなせる。
 関連する処理を1つの流れ図で表すことは、処理の把握以外にもメリットを生む。別の流れ図に分けると重複する処理を生むが、共通の流れ図では、重複して実行するということがなくなるからだ。また、処理を変更する場合でも、1ヵ所を直すだけですみ、直し忘れによるミスを最小限に抑えられる。流れ図を1つにまとめることは、ほとんどのケースでメリットがある。

「互いに関連しあう処理を1つの流れ図にすれば 
   重複やケアレスミスを防ぐメリットがある」

一部の処理は、手動で処理内容を指定
ブロックの入れ替えで試行錯誤を実現

 処理ブロックでは、処理内容を細かく指定する。計算や文字列処理なら、個々のデータを見なくても、処理内容を決められる。しかし画像処理の場合は、実際の画像を見ながら処理内容を決める。マスクする範囲を決めたり、部分的にぼかしを加えるなど、画像に合わせて設定する必要がある。現在の画像編集ソフトのように、実際の画像を表示させながら作業することになる。
 画像処理では、複数レイヤーで画像を合成する機能も必要だ(図2)。これを処理ブロックとして実現しなければ、処理流れ図として作成する方法に適合しない。レイヤー機能は、複数の画像を重ね合わせる機能だと解釈できる。複数の画像を入力し、それらを重ね合わせて1つの画像を出力する。重ね合わせ順序、各画像の拡大縮小などを指定する。各画像ごとに、重ねを一時的にオフにする機能も加えれば、さらに便利に使える。

図2、画像処理でも流れ図で処理内容を作成する。レイヤー機能は、画像の重ね合わせ機能で実現する。処理ブロックの前後のデータを一緒に表示すれば、処理前と処理後の画像を見ながら設定を決められる

図2

 流れ図を用いた画像処理では、処理全体を把握することよりも、試行錯誤が大きなメリットになる。特定の処理を外したり入れ替えたりして、画像のできを観察できる。また、途中のデータブロックで画像を表示すれば、各処理の効果を簡単に確認できる。外す操作を簡単にするために、処理をオンオフする機能も加える。
 個々のデータごとに処理内容が異なると、一連のデータを1つの処理流れ図で一括処理する方法では適応しにくい。しかし、流れ図で描く方法は、わかりやすいし使いやすい。データごとに別々の流れ図を描く方法もあるが、一部の処理ブロックだけで処理内容が異なる場合には、1つの流れ図ですませるほうが便利だ。この要望を満たすために、処理ブロックの設定をデータごとに指定できる機能を加える。全データに共通の処理内容なのか、データごとに異なる処理内容なのかを、各処理ブロックに設定できれば十分だ。

抽出条件の計算項目でも流れ図を描く
自動的に編集画面が開くようにする

 項目中心の流れ図を加えるのは、項目追加の処理ブロックだけではない。条件抽出の処理ブロックでも、項目中心の流れ図を加えることがある。
 抽出条件には、計算で求める項目が含まれることもある。たとえば人物データから、肥満率が1.5以上を抜き出すようなときだ。肥満率は身長と体重から計算する数値であり、その項目を前の処理ブロックで追加していない場合は、条件抽出ブロックで求め方を指定する必要がある。この場合も、項目中心の流れ図を描いて作成する。
 求め方を追加する必要があるかどうかは、抽出条件を指定した段階でわかる。抽出条件に使われた項目が、別な項目から求められる計算項目であり、直前までのブロックで追加されていなければ、流れ図の作成が必要だと判断できる。その際、条件指定した計算項目が一番下に現れ、処理の候補が一覧表示するので、ユーザーの操作は最小限ですむ。その中からユーザーが処理方法を選ぶと、入力されるべき項目を自動的に加える。自動化できる部分は、すべて自動化するのが情報中心システムの基本だ。
 条件抽出の中で作成した加工処理を、独立した処理ブロックとして外に出す機能も加える。処理内容を細かく把握したいユーザーには、加工処理を条件分岐に含ませたくない人もいるからだ。

システムに流れ図の構想を知らせる
目的ごとの項目集を知識ベースに登録

 ほとんどの構造体データは、数多くの項目を含む。項目数が多い場合、どの項目を表示するのか、自動的に判断させるのは難しい。どんな目的で流れ図をつくるのか、ある程度までシステム側に知らせないと、最適なデータを自動表示する確率が低下してしまう。これらの問題を解決するのが項目集で、一緒に見る項目を定義し、知識ベースに入れる。
 どんな項目を一緒に見たいかは、目的ごとに異なる。人物データであれば、健康診断とか業務評価とかが目的になる。用意した項目集を素早く呼び出せることで、作業効率は向上する。よく使う組み合わせは、分野ごとに決まっているので、最初から知識ベースに登録しておく。そうすれば、多くのユーザーが自分で登録する必要はない。ユーザー自身で登録するのは、特殊な組み合わせを利用するときだけだ。
 項目集に含める内容は、表示する項目の羅列だけではない。キーとなる項目、データの並び順、項目の相対的な重要度、適する表現方法、軸となる項目などがある。これらの情報をもとに、表示内容を自動生成すれば、より適切な表示結果が得られる。ほかの項目を処理して求める項目では、使用する処理定義も登録する。これにより、処理定義をユーザーが選ぶ手間もなくなる。項目集は、見たい項目や処理内容をパックしたものである。

流れ図の作成では項目集を最初に指定
詳しくない分野で要点をゲットできる

 項目集を利用することで、流れ図の作成作業が簡単になる。Object First機能を用いて流れ図をつくる場合は、最終的に得たい項目を一番最初に指定すると、前回述べた。この項目の代わりに、項目集を指定する。個々の項目を1個ずつ指定するよりも簡単に、必要な項目が指定できる。また目的で選べるので、あまり詳しくない分野の処理でも、ある程度まで適した項目が得られやすい。あとは、項目や処理についているヘルプ機能を利用して、勉強しながら作業すればよい。
 項目集を選ぶと、対象となる構造体データが決まる。また、必要な処理もある程度は決まる。そのため、一番下に項目集を置いたとき、上にくる処理ブロックやデータブロックが自動的に配置される。条件抽出のブロックも加わり、最初は何も抽出しない設定になっている。そこに条件を入力すれば、実際に処理が始まる。
 関連する処理を1つの流れ図で描くため、流れ図の中に複数の項目集を設定することもある。その場合は、複数の項目集を一番下に並べて、流れ図を描き始める。元データが同じなら、途中のデータブロックから枝分かれして、項目集につながる。処理の意味を考えながら線を結ぶことで、全体の流れを形づくる。複数の元データを使用するケースでは、より複雑な流れ図になるので、階層構造を利用する。処理が複雑になるほど、処理内容の把握機能が役立つ。
 処理途中のデータを表示するときは、関係する項目集の情報を参照しながら、適切な表示内容を自動生成する。複数の項目集を利用している場合でも、ブロックの流れから判断して、参照する項目集を決める。

「複数の項目集が生きてくる理由            
  処理が複雑になればなるほど内容の把握が大切だから」

流れ図のブロック表示をカスタマイズ
特定項目の計算結果はこう使え!

 流れ図の表示では、いろいろな情報を表示できたほうがよい。情報が多いほど、処理内容を理解しやすくなるからだ。前回に述べたデータ件数も、そんな情報の1つである。
 表示したい情報は、ブロックごとに指定する(図3)。処理ブロックなら、使用する処理名、抽出条件、追加する項目、処理上の入出力データ名などがある。データブロックなら、データ件数、特定項目の合計値や平均値、ほかの集計用計算式などだ。

図3、各ブロックに表示する情報は、ブロックごとに設定する。自由な式を指定できるので、処理の評価にも使える。式の代わりに、処理流れ図を用いる方法もある

図3

 これらのうちで便利に使えるのが、特定項目をもとに計算した結果である。合計値や平均値だけでなく、自由に計算式を指定する。計算式で用いる処理は、知識ベース内の処理定義から選び、数値用の汎用処理であることが多い。目的に合った計算式を指定すれば、処理の良しあしを評価するのにも使える。たとえば、複数の抽出条件を横に並べ、それぞれの抽出データでの計算結果を比べる。このような使い方によって、効率的に処理を評価できる。
 ただし、本格的に処理を評価する場合は、評価用の処理ブロックを加える方法が適している。データブロックに計算結果を表示するのは、前にある処理ブロックの内容を何度も変更する場合がほとんどだ。
 流れ図上でいろいろなブロックを入れたりはずしたりすることは、処理の試行錯誤に等しい。適切な表示情報と組み合わせることで、指定した処理を素早く評価でき、全体の作業効率が向上する。試行錯誤の点からも、自由な表示情報が大いに役立つ。もちろん、データブロックの内容を表示する機能も併用する。ブロックの情報表示は素早く見るために使い、データブロックの内容表示は詳しく見るために使う。
 また、本格的な評価や検算では、それ用の処理ブロックを加える。これらを併せて活用することで、より適切で正しい処理内容をつくることが可能だ。

昔つくった処理や他人がつくったものを
有効に活用すれば効率があがる

 かなり昔につくった処理では、どんな内容だったのか思い出すのは大変だ。また、他人がつくった処理では、どんな内容なのか調べるのがさらに難しい。こんなとき、処理内容の把握機能があると、無駄な苦労をしなくてすむ。これからのシステムでは、処理内容を把握するための機能が、当たり前になるだろう。
 前回と今回の説明でわかるように、処理内容の把握機能は、流れ図を描くだけの単純なものではない。実際の処理と連動するとともに、試行錯誤しながら処理を決めることも支援する。  また、知識ベースと連動しながら、最小限の手間で、目的に合った処理を作成する機能でもある。全体としては、考えながら処理を作成する環境といえるだろう。扱う情報と処理を把握しながら作業できる点は、まさに情報中心システムらしい特徴であり、「情報中心」という言葉にふさわしい機能を提供する(表1を参照)。このレベルの機能は、既存OSのようにファイルを中心とした仕組みでは、実現不可能である。

表1、既存OSから情報中心システムまで、処理把握の機能を比較した結果。処理の把握に関して十分に考慮するのは、情報中心システムになってから

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

表1

 処理の把握機能の説明で、今回も誌面を使い切ってしまった。仕事全体の把握機能については、次回に解説したい。

「あとあと便利に使える処理把握機能は、    
       たんなる流れ図にとどまらず、  
     目的に合致した処理を作成してくれる」


下の飾り