川村渇真の「知性の泉」

システム設計は思考のための汎用的な手法


問題分析から解決案の実施までを含むのがシステム設計

 世の中にあるいろいろな手法の中で、システム設計ほど汎用的な思考に役立つものはない。それを述べる前に、システム設計とはどんな内容なのか簡単に説明しよう。
 一般的にシステム設計とは、コンピュータを利用したシステムの設計を指す。当然、ソフトウェア技術者の仕事として知られている。また、この仕事に必要な技術は、ソフトウェアに関するものだと思われている。確かに、プログラミングに近い作業では、ソフトウェアの技術を中心に用いる。しかし、システム設計全体から見れば、プログラミングに近い作業は一部でしかない。システムの内容にもよるが、多くても3割、少ない場合は1割以下だろう。
 それよりも、対象の構造や問題の分析、将来を見据えた対象の新しい姿の規定、システムと呼べるレベルに達するような全体構造の設計、実現に必要なシステムの細部の設計などが求められる。それ以降の作業まで含めると、システム設計は以下のような流れになる。

システム設計における作業の基本的な流れ

1、対象となる分野を調査して、問題点や要件を明らかにする
2、問題点を分析し、対処方法や実現方法を決める
3、対処方法や実現方法を含んだ形で、将来を見据えた全体像を定める
4、全体像を実現するために、システム全体の基本構造を設計する
5、基本構造に合わせて、システムの詳細を設計する
6、設計した内容どおり、システムを実際に作成する
7、作成したシステムが正しく動くのかテストし、必要なら修正する
8、実際の現場で運用し、出てきた問題点を集める
9、集めた問題点を分析し、システムの一部を一定周期で改良する
10、8〜9を繰り返し、細かな改良でダメなときは1からやり直す

このうち重要なのは、1〜4番の作業である。その中でも1番がもっとも重要で、問題の本質や構造の重要部分を明らかにする役割を持つ。
 実際のシステム設計では、手順のほかにも考慮すべき点がある。開発期間の厳守、限られた人的資源の有効活用、機器性能の見極め、開発から運用まで含めたコストなどだ。これらの条件も含め、すべての要素を総合的に考えて、最適な解を求めるのがシステム設計といえる。
 システム設計の作業を全体として眺めると、問題を解決したり、新しい仕組みを構築するための手法だと気付く。現状では、対象をコンピュータ・システムに限っているが、他の分野にも適用できる手法である。よく考えてみれば、「システム」という言葉は対象が何でも使える。また、コンピュータのほうも、利用範囲を特定の分野に限定されない。だから、いろいろな分野に適応できて当然ともいえる。

システム設計の本質を知っているのは少数だけ

 以上のような特徴を持つシステム設計だが、コンピュータのシステム設計を実際に担当している人は、ソフトウェア技術だけに興味を持つ人が多いようだ。コンピュータの技術に興味があって、システム設計の本質的な部分には興味を持たない人が、そうなりやすい。そのような人は、「システム設計とは、ソフトウェア全体の構造を設計すること」だと思っている。
 このような考え方は、システム設計の本質を捉えていない。より正しくは、「システム設計とは、対象となる分野の構造、問題点、要望などを明らかにし、解決するための仕組みを設計すること」である。その実現方法として、コンピュータが使われるに過ぎない。ソフトウェア全体の構造を設計することは、システム設計ではなく、ソフトウェアの構造設計でしかない。
 本当のシステム設計を理解するには、ビジネス分野のシステムを設計するのが近道のようだ。ビジネス分野のシステムは、技術的に簡単だと思う人もいるが、実際は逆である。ビジネスで使うシステムは、人間や組織がシステムに大きく関わる。人間はコンピュータに比べて融通が利くので、扱う対象の状態ごとに最適な方法を取れる。ところがコンピュータは、同じ処理で済むようにと標準化を求める。まったく正反対の特徴を持つ。人間側の要望をかなえるほど、例外処理が増えてシステムは複雑化し、実現が難しくなる。たとえ実現できたとしても、実際に運用できるとは限らない。
 ビジネス分野のシステム設計を外側から眺めると、人間とコンピュータの複合的なシステムを設計していると捉えられる。システム全体のうち、人間が担当する部分とコンピュータが担当する部分を切り分け、その接点を規定する。きちんと設計するためには、人間とコンピュータの両方の特徴を理解しなければならない。人間の特徴には、ミスをしやすいという欠点と、融通が利くという利点の両方がある。それを考慮しながら、コンピュータ側を設計するとともに、人間側の作業の流れも一緒に設計する。単純にコンピュータ部分だけを設計するのではなく、組織構造や作業ルールまでもが設計の対象となるのだ。
 このような段階までシステム設計を理解できれば、コンピュータ以外のシステムも設計できる可能性が高い。そうなるためには、システム設計の本質を理解するとともに、組織や人間の特徴などを勉強し、実際に設計を訓練しなければならない。残念ながら、そのように行動している人は少ない。システム設計を担当しているなら、身に付けられる良いチャンスなのに。

世の中の多くの事柄にシステム設計を適用できる

 ここまではコンピュータのシステム設計を中心に見てきたが、他の分野の設計はどうだろうか。企業が設計する製品や構造物では、分野ごとに設計手法が確立されている。電気製品であれ建築物であれ、技術的な知識を基盤として、上手な設計方法が出来上がっている。
 ところが、世の中を見渡してみると、設計というレベルに達していない分野も数多く見付けられる。たとえば、教育分野はどうだろうか。教育内容はどのような基準や手法で決めれれたのか、明らかにされていない。過去の歴史を考慮するなら、何となく続いてきたようにしか思えない。他の分野も同様で、各種法律、政府組織、選挙制度、公共事業の決定ルール、情報公開の制度、議論手法、健康保険や年金の仕組みや制度、団体活動ルール、教育内容、学校制度、交通ルール、道路標識の設置ルールなど、多くの事柄を挙げることができる。
 では、きちんと設計されていない分野に、システム設計の技法を適用したらどうだろうか。おそらく、もっとマトモな内容を生み出せるだろう。驚くほど良い仕組みを設計できるかも知れない。なにしろ、今まではきちんと設計されいなかったのだから、その可能性は十分にある。だからこそ、試してみる価値はかなり大きい。
 余談だが、きちんと設計されていない理由はハッキリしている。決めている人達が、設計する方法はもちろん、設計と呼べるレベルすら知らないからだ。このように理由は単純だが、その影響は非常に大きい。どんな分野であれ、今後はできるだけ早急に改善すべきだろう。
 システム設計を適用する分野は、大きなテーマだけに限らない。たとえば、数ページの文章を書く場合にも利用できる。文章全体の構成を、システムとして設計するわけだ。対象とする読者は何を求めているのか分析し、書き手が伝えたい内容と突き合わせる。その結果、含めるべき要素が求まる。次は、出された要素の並び順を、理解のしやすさや説得力を高めるように決める。また、要素ごとに最適な表現方法を検討する。こうして設計すれば、きちんとした構成が出来上がるはずだ。絶対に出来上がると言えないのは、設計する人の能力に関わるからで、設計が上手な人なら良い構成を導き出せる。後は、文章を上手に書ける能力が必要なだけだ。
 システム設計で得られる成果の形式も幅広い。形のある製品はもちろん、構造、仕組み、法律、ルール、基準、規格、ガイドライン、作業手順、チェックリストなど、ありとあらゆるものを設計できる。一般的には、最終的な成果の形式を決め、それを求めるためにシステム設計の技法を適用する。

思考の道具としては全体を管理するのが主な役割

 システム設計を、思考の道具としても捉えてみよう。思考に用いる道具は、それぞれ適用できる範囲が決まっている。細かなアイデアを出す手法から、全体の流れを制御する手法まである。システム設計は、全体の流れを管理する道具と位置づけられる。全体の管理が役割なので、より細かな部分の思考には別な道具を用いる。扱う対象の特徴に合わせて、また、設計の中の作業段階に合わせて、そのとき最適な道具を組み合わせる。
 システム設計のもう1つの特徴は、手順の各段階にレビューを組み込んである点だ(上述の作業の流れでは省略してある)。きちんと設計できたのかどうか、評価するのは大切なことである。評価も思考の1つであり、その際にも細かな思考の手法を選んで利用する。
 思考方法と言えば、アイデアを出すための手法だけと限定しがちだ。しかし現実の世界では、問題を解決したり、製品や制度を設計する際にも、いろいろと思考する。このように、何かの目的を実現する作業の中に、思考の工程が含まれる。こちらのほうが、細かなアイデアを出す場合よりも、非常に広い思考が求められる。広い思考とは、種類の違う思考を数多くという意味だ。現実の作業全体を手助けしてくれるのが、システム設計という技法である。何にでも適用できるだけでなく、思考の対象が大きくて複雑なほど効果を発揮する。

(1998年7月22日)


下の飾り