1. はじめに


Created: 10/13/94, Updated: 5/6/2002.

ソフトウェア危機ということばがつかわれるようになってひさしいが,今日ではメイン フレーム OS, 第 3 次オンライン・システム,各種の CAD プログラムなど,いずれのコン ピュータ・システムをとっても大規模・複雑なプログラムばかりであり,ソフトウェアの 開発・保守に関する危機的な事態はいっそう深刻になっている [*1].そして,エキスパー ト・システムもまた大規模化の方向をたどっている.

コンピュータ・プログラムがかかえる問題のひとつとして,些細なバグから致命的な結 果がもたらされるとしうことがある.これは大規模システムだけでなく,小規模のプログ ラムにおいてもひとしくあらわれる現象である.大規模システムに特有の問題としてはつ ぎのようなものがある.上記のようなシステムはすべてをきちんと設計するにはあまりに 複雑にすぎる.とくに人間社会をその一部としているシステムやそれとのインタフェース をもっているシステムは,人間社会の複雑さを反映しているうえに,それらのシステムが 本質的にもっている開放性すなわち人間社会にひらかれているという性質のために仕様も きちんと記述することができない.そのため,開発終了後に開発者にもわからなくなって しまった,あるいははじめからわからなかった部分がおおいとかんがえられる.そして, このようなシステムはそれがおかれた環境が長期的に変化するにもかかわらず,それに対 応できない.すなわち,わからないプログラムはつくりかえることはおろか修正すること すらできないために,あらたなコードが追加され,システムはさらに肥大化するという悪 循環をくりかえしている.

このようなきわめて困難な状況をどうやって脱却したらよいのだろうか.いきなり問題 の解決策をしめすことはとうていできないが,従来の方法論の問題点を 2 つの角度からさ ぐることからはじめよう.

第 1 に,``自己組織性'' というものに注目してかんがえてみよう.上記の現象の主要な 問題点は,従来のソフトウェアにおいては,システムが解決すべきすべての問題について 人間があらかじめその手順をあたえておかなければならないというところにあるとかんが えられる.したがって,問題解決手順が自己組織される機構があれば,上記の危機の解決 策となりうるとかんがえられる.

自己組織性に対しては近年,さまざまな分野で注目されている.自己組織性をもったシ ステムすなわち自己組織系 (self-organizing system) に関する研究として散逸構造理論 [Pri 77],シナジェティクス [Hak 78][Hak 83],バイオ・ホロニクス [Shi 92][Shi 87][Shi 88][Shi 86][Shi 90] などがある.Jantsch [Jan 80] は,するどい洞察力にもとづいてさまざまな 分野の自己組織化を統一的に論じ,将来の方向をしめしている.しかし,これらの理論が あつかうのはおもに自然システムであり,計算システムとのあいだにはおおきなへだたり があるとかんがえられる.ソフトウェアにおける自己組織化という問題についてかんがえ るとき,記号情報処理をおこなう (ノイマン型) コンピュータに関してよりも,ニューラ ル・ネットで代表されるパタン情報処理に関してのほうが研究がすすんでいるとかんがえ られる.しかし,プログラミングのよみやすさとかきやすさ,階層性 (モジュール性) な どにおいては,記号情報処理のほうがまさっているとかんがえられる.したがって,われ われは記号情報処理をベースとし,パタン情報処理のよさをとりいれて自己組織系の記述 を可能にするアプローチをさぐりたい.

上記の観点から,関連のふかい研究として遺伝的アルゴリズム (Genetic Algorithms, GA), コネクティクス [Tak 91] などがある.しかし,GA はあつかえるデータ構造に関する制約 がおおきいという問題点があるとかんがえられ,また scalability に疑問がある.

第 2 に,人間がもつ不完全性や非合理性というものに注目してみよう.現在の危機的状 況をうみだすもとになっているひとつの問題点は,従来のプログラムやプログラマのモデ ルにあるとかんがえられる.従来のプログラム理論においては,プログラムは合理的かつ 完全であることがもとめられる.プログラムは正当か不正かのいずれかであり,その中間 はない.これは,すなわちプログラマが合理的かつ完全であることをもとめていることに なる.ところが,プログラマは人間であり,したがって非合理かつ不完全である.ソフト ウェア開発の現場をみれば,プログラマを合理的かつ完全な存在とみることこそ不合理で あることはあきらかであろう [Nis 88][Nis 90] [*2]

このような視点からすると,われわれは不完全で非合理な人間がつくる不完全で非合理 なプログラムに関する理論をつくらなければならないのではないだろうか.``人間的'' な プログラミングの理論においては,些細なバグによって致命的な結果がもたらされるよう なことはなく,完全でないプログラムもそれなりに動作することが保証されるべきであろ う.そして,人間の非合理性からうみだされる問題を解決するばかりではなく,むしろそ のちからを積極的に利用することがのぞましいとかんがえられる.すなわち,これまで科 学者からは目をそむけられていた ``わざわい'' のもとを ``福に転じる'' ことが解決へのか ぎではないかとおもわれる [*3]

非合理性 [*4] のとりこみという点でも,第 1 の視点からとりあげたいくつかの関連研究 は興味ぶかい.ニューラル・ネットは ``非合理'' な入力を処理できるし [*5],GA はその 計算機構じたいに非合理性がふくまれているようにおもわれる [*6].しかし,これらの研 究は非合理性に対して積極的な態度をとっているとはいえず,それをより積極的にあつか う他の面からの研究も必要だとおもわれる.

第 3 に,システムがもつ非還元性あるいは全体性に注目してみよう.従来のソフトウェ ア開発法はシステムを独立なモジュールに分割するという還元論的な方法 (分割統治法) [*7] にもとづいていて,そこからはみだしたものすなわちうまく分解できないものはもは や系統的にあつかえない [*8].しかし,現在の大規模システムや AI システムなどにおい ては,現実には非還元論的なソフトウェアが構築されているとかんがえられる [Nis 88]. たとえばモジュール性をくずす大域変数をプログラムから排除できないのはそのためでは ないかとかんがえられる [*9].AI においても非還元的なシステムの適当な (汎用性がある) モデルはまだ存在しないとかんがえられる.このような非還元性を,従来の理論のおおく は否定的にあつかってきた.しかしここでも,それを積極的に利用しようとする努力,す なわち ``わざわい転じて福となす'' 努力が必要ではないだろうか.

このような状況のもとでわれわれは,自己組織系が記述できるとともに,人間のもつ不 完全性や非合理性までをもとりこむことができるという目標を部分的にみたすことができ, かつ数理解析が可能とかんがえられる計算モデル CCM (Chemical Casting Model) を考案 した.2 章では自己組織系とはなにかという問題について考察し,それがもつべき性質を しめす.3 章では,2 章の考察にもとづいて CCM を定義して,それが 2 章でのべた性質 をもつかどうかを検討するとともに,かんたんな例題をしめす.4 章では,計算モデル CCM を詳細化をこころみるとともに,それをうらづけ,その解析のもとになるべき数理 モデルの確立をめざして,CCM にもとづくプログラムのふるまいを分析する.5 章では 例題に関する実験結果をしめす [*10]

[→ 次章]


脚注

[*1] 三菱信託銀行の きしの によると,第 3 次オンラインは別名 ``大惨事オンライン'' だと いう.これは,第 3 次オンライン・システムの開発がいかに悲惨なものだったかをしめす ことばだといえよう.

[*2] 従来のかんがえかたは,今日敗北があきらかになったマルクス・レーニン主義におけ る理性信仰に似たかんがえかたであるようにみえる.

[*3] このようなかんがえかたは,いわゆるニュー・サイエンスのかんがえかたにつうじ るものである.いわゆるニュー・サイエンスにはさまざまな方向がある.東洋的なかんが えかたをとりいれるがこれまでの自然科学の方法論にのっとり,それを発展させていこう というかんがえかたもあり,また神秘主義におちいっているものもある.われわれは,神 秘主義におちいることなく,実証主義的な方向をめざしていかなければならないことはも ちろんである.

[*4] ここで ``非合理性'' ということばは合理的に説明できないものという意味でつかって いる.このような意味をもつことばとして ``超合理性'' (transrationalism) ということばも あり,この論文においても文脈によってはそのほうが適切とかんがえられるばあいがある が,くべつせずに ``非合理性'' ということばを使用することにする.

[*5] ノイマン型のコンピュータによってある問題をあつかおうとすれば,プログラミン グにさきだって入力データの構造を詳細に解析せざるをえない.しかし,ニューラル・ネ ットによる問題のあつかいにおいては,入力データの構造がよくわからないままあつかっ ているばあいがある.このようなばあいをさして,ここでは ``非合理'' な入力を処理でき るといっている.過去の株価を入力して将来のそれを予測するのがそのひとつの例である.

[*6] (GA における意味での) コーディングすなわちデータの表現がよほどうまくおこなわ れたばあい以外は,GA におけるくみかえや突然変異という操作に合理的根拠があるとは かんがえられないからである.とくに,くみかえによって解の構造がいちじるしく変化し てしまう巡回セールスマン問題の遺伝的アルゴリズム [Gre 87] などにおいて,非合理性 がいちじるしいとかんがえられる.

[*7] これは AI においてよくつかわれることばでいうと分割統治法である.

[*8] オブジェクト指向設計法はこのような非階層的な構造もあつかうことができるとか んがえられるが,そのような構造のモデルを提供しているとはいえないであろう.

[*9] われわれの立場からすると,大域変数をなくして参照の透明性 (referencial transparency) を獲得しようとする,ある種のプログラムの理論やプログラミング言語に おける努力が真にソフトウェア開発のためになるかのどうか,おおきな疑問がある.むし ろ大域変数の存在がさけられないものと認識して,それをうまくあつかえるようにする計 算機構やその理論を構築することをめざすべきだとかんがえられる.

[*10] この報告は第 33 回プログラミング・シンポジウムの予稿 [Kan 92] を,ページ数制 限のために短縮した部分をもとにもどし,かつその発表における議論にもとづいて加筆し たものである.


Y. Kanada