メイン» ソフトウェアの部屋 仕事の部屋 先達の言葉 »創発するということ

創発するということ

いかなるレベルも、そのレベル自身の境界条件を制御することはできない。

したがって、いかなるレベルも、そのレベルの境界条件を制御する働きをもつ、より上位のレベルを生み出すことはできない。

つまり上位のレベルは、下位のレベルでは見られない過程、つまり創発とよばれる過程によってのみ、生み出される。

マイケル・ポランニー

2007年度を迎えるにあたって、『ソフトウェアものづくり能力獲得競争』の時代に、今、わたしたち自身が突入していることを述べました。

そのために『ソフトウェアものづくり』の、私たちならではのパラダイム、仕組みを創発することの必要性を訴えました。

しかしこの創発とはいったいなにものでしょうか。なぜ創発なのでしょうか。

あまりに単純化した例かもしれませんが、誤解を恐れずに、『ソフトウェア開発』における創発の必要性を検討してみます。

当初のソフトウェア開発においては、ソフトウェア実装 - コーディング/プログラミング - に焦点があたっていました。なぜならば、そのソフトウェアによって解決すべき問題、すなわちユーザの要求は極めて単純明快であったからです。たとえば世界初のソフトウェアは、大砲の弾道計算をするためにプログラミングされたといわれています。このソフトウェアに対する要求は、せいぜい高校生レベルの数学による数式ひとつで表される程度のものではなかったでしょうか。

しかしソフトウェアが解決すべき問題 - ソフトウェア要求 - が時代の変遷と共に複雑化するにつれ、ソフトウェア開発の焦点は、ソフトウェア設計に移り、さらにソフトウェアの要求開発へと移っていっています。

つまりマイケル・ポランニーが言うとおり、ソフトウェア実装 - コーディング/プログラミング - は、そのレベル自身の境界条件を制御できない、つまりソフトウェア設計の問題を解決することはできないのです。そして、ソフトウェア設計は、ソフトウェア要求開発 - 問題定義 - の問題を解決できないのです。

つまり、ソフトウェア・エンジニアリングの起点を、開発されたソフトウェア要求の管理から始めたとして、ソフトウェアエンジニアリング・プロセスが、ソフトウェア要求管理〜ソフトウェア設計〜ソフトウェア実装およびソフトウェアテストから構成されるとすれば、ソフトウェア要求開発の問題は、ソフトウェア・エンジニアリングのレベルのみでは、本質的な解決をはかることができないのです。

あるレベルの戦略は上位レベルからみれば戦術であるということがいえます。言い換えると、上位レベルのWHAT - 目的 - の達成のための、HOW - 手段、メソッド、プラクティス、パターン etc. - が下位レベルであるわけです。

売れるプロダクト、つまり魅力的で高品質な適正価格のモノが、ユーザの欲しいときに手に入るように、開発・生産・提供できる。使いやすくて業務の効率化につながり、事業目的達成のためには欠かすことができない情報システムが、ROIが成立することを前提に必要なときに、ユーザの手元に届けることができる。

この観点から言うと、わたしたちならではの『ソフトウェアものづくり』の新しいパラダイムには、ソフトウェア・エンジニアリングのみに閉じこもることなく、ソフトウェア・エンジニアリングの上位のレベルであるソフトウェア要求開発、さらに言えば 『ビジネス要求開発』と協調した、創発の仕組みを獲得することが必然となるということだけは言えるでしょう。

みずからの次元を高めない限り、本質的な答えを獲得することは決してできない。