川村渇真の「知性の泉」

適用分野の知識:良いシステムを構築するために必須


構築するシステムの中身を理解するために必要

 どんなシステムを構築する場合でも、システムが実現する各機能の意味を理解しなければ、設計などできない。言われてみれば当然のことだが、この点を理解していない人は意外に多い。
 システムを設計するとき、すべての機能を組み込むことはない。開発コストや処理能力を考慮して、本当に必要な機能だけに絞る。何が必要かは、適用分野の知識がないと判断できない。もちろん、機能の中身が正しいかどうか見極めるのにも、知識は必要になる。
 適用分野の知識は、対象となる分野ごとに大きく異なる。ビジネス用のシステムであれば、その業務の専門知識や運用知識などが必要だ。科学技術計算であれば、計算対象の専門知識に加え、データ処理に用いる数学の知識が求められる。コンピュータを内蔵した計測器を作るなら、それが使われる各種作業や利用方法の知識が不可欠だ。これらはすべて異なる特徴を持つが、1つだけ大切な点がある。適用分野の専門知識だけでなく、運用上や作業上の知識も必要なことだ。システムは曖昧なことが許されず、人間が使うものである。運用上のルールや問題を上手に解決しないと、実際に使われないものができあがる。単なる専門知識ではなく、現実世界の知識も一緒に必要だ。

適用分野の担当者が詳しいとは限らない

 適用分野の知識は、その分野の専門家に尋ねることが多い。現実には、ビジネス関連であれば、その業務の担当者に聞く。このとき問題なのが担当者のレベルで、それこそピンからキリまでいることを理解しておく必要がある。ダメな担当者は、日々の作業を「のほほ〜ん」と実行しているだけで、適用分野の全体を正しく把握していない。ハッキリと言うなら、マトモに相手をしても時間を無駄にするだけだ。逆に、レベルの高い担当者は、適用分野の全体像を正しく把握しているだけでなく、今後向かうべき理想像を持っていて、その内容が的を射ている。こんな担当者に当たれば、適用分野の知識を理解するのもラクだし、システムの基本仕様を決めるのにも苦労しない。つまり大切なのは、担当者のレベルを的確に把握することだ。もしダメなほうに当たったら、別なルートでマトモな人を捜さなければならない。
 適用分野の担当者にダメな人がいる理由を簡単に説明しよう。まず、たいていの人は、毎日の業務を表面的に理解する傾向がある。その作業の意味や業界の専門知識を深く知ろうとする人は、残念ながらかなり少ない。
 専門知識の理解のし方にも、システム構築者とは差がある。システム的な視点を持っていないと、適用分野の知識を“システム的に整理して”は把握しない。とくに問題となりやすいのが例外処理だ。多くの人は、例外が発生したときにケースバイケースで対処する。ほとんどを手作業で進めるため、その場で発見したら行動を起こせばよいからだ。しかし、システムを構築するときは、例外を体系的に整理して、対処方法まで決めなければならない。データのチェックまで含めて、できるだけ自動化するからだ。起こりうる例外処理をすべて洗い出すことが求められる。もう1つ、将来をどれだけ考えるかにも差がある。システム構築者は、システムが何年も使われることを考慮するのが当たり前なので、将来に要求される機能を言われなくても調べる。ところが担当者は、現在の業務のシステム化だけを考えがちだ。
 もっとも決定的な差は、コンピュータの得手不得手を理解したうえでの活用方法である。システム化によって実現する機能は、手作業を単純に置き換えるのではない。システム化と同時に、より戦略的な業務内容へと生まれ変わることも可能なのだ。たとえば在庫管理なら、在庫量の低減によって在庫コストを減らすとか、適切な管理で品切れを解消し、販売量を向上させる可能性もある。また計測器などの機器をコンピュータ化するなら、まったく新しい機能を加えることが容易になり、より魅力的な商品に生まれ変えられる。これらの実現には、適用分野の知識を単純に理解するのではなく、システムとして捉える視点が必要だ。業務担当者でもシステム化を経験していれば、このような視点に気付く可能性は高い。

業務担当者を越えるような深い知識が必要

 システム構築者に求められる適用分野の知識は、かなり深い。この点も重要だ。きちんとしたシステムを構築するためには、適用分野の知識を深く理解しなければならない。とくに戦略的なシステムを構築する場合は、経営上の役割なども的確に把握することが求められる。
 適用分野の知識を深く理解する作業は、ある程度の大変さを伴う。ただし、一部の非常に難しい分野を除くと、何ヶ月か必死に勉強すればかなり詳しくなる。その分野の専門家でも、何年も連続して勉強しているわけではない。最初に得た知識を利用しながら、細かな知識を少しずつ追加して仕事をしているだけだ。多くの時間を実際の作業に費やし、勉強する時間の割合は少ない。だから、ある程度の時間をかければ何とかなる。また、システム構築者には有利な点がある。システム的な視点や技術を持っているので、知識を効率的に把握できることだ。そのため、最初から重荷に感じる必要はない。自分の専門分野が1つ増えると思い、スキルアップの一環として捉えればよい。実際に、スキルアップになるのだから。
 次のような笑えない話が、現実に起こっている。あるシステムを使っていて、処理された結果に担当者が疑問を持った。その部門内では分からなかったので、システムの運用を担当しているエンジニアに尋ねたら、すぐに的確な理由を述べた。そのエンジニアはシステムを設計した本人であり、関連する法律や処理の意味については、業務の担当者よりも詳しかったからだ。その業務に関しては、会社の中で一番詳しい人間になっていた。このような例は、探せばかなり見付かると思われる。システム構築のために本気で勉強したら、非常に詳しくなるのだ。

 最後に、知識を効率的に把握するためのポイントを紹介しておこう。どんな規則や手順にも理由があるはずなので、それを担当者に尋ねてみる。理由が分かれば、その機能を的確に設計できるからだ。場合によっては、過去の歴史の産物として残っている不要なルールが見付かることもある。それならシステム化と同時に、そのルールを適切なものに変えればよい。また、このような質問に担当者がきちんと回答できるかどうかは、その人の能力を見極める基準となる。何人かの担当者に同じ質問を尋ね、もっとも的確に回答できる人を見付けよう。
 以上のように行動すれば、効率的に深い知識を身に付けられる。深くて正しい知識の取得に成功したら、良いシステムの構築へかなり近づいたことになる。もちろん、システム設計も上手でなければ、良いシステムとはならない。両方とも必須なのである。

(1997年12月2日)


下の飾り