濱 勝巳(株式会社アッズーリ)
2010年6月14日
「ソフトウェア工学はその時は去った」(Tom
Demarco)、「ソフトウェア工学に大切なことは?」(Ed Yourdon)、「あの指数曲線は間違いだった」(Barry Boehm)、「アジャイルは早晩滅びる?」(Mary
Poppendieck)、「ソフトウェア業界はファッション業界のようだ」(Ivar Jacobson)、「ソフトウェア工学は定義を間違った」(Tom Gilb)といった言葉がソフトウェア工学の巨匠たちから聞かれるようになりました。
彼らは、彼ら自身が作り上げて来たソフトウェア工学の現状を憂いSEMAT(Software Engineering Method and
Technology: semat.org)のようなソフトウェア工学の再建とも言うべき活動を始めました。これまでのソフトウェア工学の原点から立ち返り見直していこうという活動ですが、私は、このような積み上げ型の工学を何度繰り返したところで同じ過ちを起こすだけであると考えています。
彼らの発想は、ソフトウェア工学という真実、正しい姿が存在しているということを前提として成り立っていると考えます。「ソフトウェア工学は正しかったのか?それとも間違っていたのか?」といった議論や「もうすでにソフトウェア工学は死んでしまったのか?」といった議論からも伺えます。これらは、絶対神を信仰する西洋を中心とする発想です。
私は、「ソフトウェア工学という真実が存在しているが、私たちは、その真実を見誤っていた。だからこそ、真実に到達するためにこれまのソフトウェア工学を見直し、基礎から積み上げなおしていかなければならない」と言っていようにしか聞こえません。素晴らしい活動のように思えますが、所詮、西洋科学という同じパラダイムからは抜け切れていません。
新しい時代と思考
1968 年にドイツのガーミッシュで開かれたNATO会合を発端するソフトウェア工学の発展における彼ら重鎮の功績はきちんと敬意を払わなければなりません。しかし、彼らも警告しているように新しい時代のソフトウェアとの付き合い方と言うものを模索しなければならない時代にきています。このことは、彼らだけではなく、2010年に日本の横浜で開催されたソフトウェアシンポジウムの講演や「ソフトウェアエンジニアリングの呪縛ワーキンググループ」からも伺い取れます。
新しい時代のソフトウェアとの付き合い方は、ソフトウェア工学の存在自体を否定することから始まります。存在を否定すると「ソフトウェア工学は無い」ことになります。しかし、ソフトウェア工学はこれまで存在していました。存在していた物を存在していないということは矛盾します。
そこで私は、「ソフトウェア工学は無である」と言いたい。「無である」ということは、「無い」と言うことではありません。また、「有る」ということでもありません。ソフトウェア工学は有るようでいて無く、無いようでいて有るものとするのです。東洋ではこのような思考方法が利用されており、有名な「色即是空 空即是色」といった言葉もその一つです。西洋論理では命題として曖昧であるため扱われない領域ですが、人間はこの意味を解釈します。
ソフトウェア工学について考える場合、有るとか無いとかから超越しなければなりません。ソフトウェア工学は、「有我」から多様な世界観から捉えるしかない「無我」とするのです。
「無我」の思想は東洋的でありますが、量子の世界でも、光が波であるとすれば波としての観察が可能であり、光が粒子であるとすれば粒子であるという観察が可能です。しかし、相反する波と粒子では光が何であるかを語る事はできない半面、光は波であると語ることも粒子であると語る事もできるのです。
ソフトウェア工学も光のこれと同じように、有るとすれば有るように観察できるし、無いとすれば無いように観察できるのです。光を波であるが粒子でもある。と語れるように、ソフトウェア工学も存在するが、存在もしないというように語ることができるのです。
このような思考方法は、ソフトウェアという異質なものを扱う工学に必要です。
存在のソフトウェア工学
これまでのソフトウェア工学はその存在や真の姿を意識し、追い求めることで今日まで発展してきました。この功績を否定してはいけませんし、今後もその発展を止めるべきではありません。しかし、その反面のソフトウェア工学の非存在からの探求がされてこなかったことは問題です。
NATO会合の時には、一部の数学やコンピュータサイエンスの分野で掌握することができたソフトウェアも、現在では、代数学や幾何学、解析学といった数学に、コンピュータサイエンスや脳科学や社会学、経済学、経営学等といった分野までその守備範囲を広げていかなければなりません。この広がりは他の科学と同じように収束していくとも思えず、人間の多様性とともに今後も加速していくと予想されます。膨張した学問を扱うとなると、さらに分割した科学化が進み、体系立てられていくことになるでしょう。
今後も膨張し続けていくソフトウェア工学を一個人が全て把握していくことには限界があります。膨張を止めるためにはソフトウェア工学の真理を手に入れるしかありませんが、本当にそんなことが可能でしょうか。
非存在のソフトウェア工学
では、ソフトウェア工学が非存在であるとした場合は、どのようになるのでしょうか。ソフトウェア工学を考えようとしてもソフトウェア工学は存在しないため、考えることができません。
そのため、これまでソフトウェア工学に必要とされてきた数学、コンピュータサイエンスや脳科学や社会学、経済学、経営学、哲学等といった分野からソフトウェアについて考える必要が出てきます。ソフトウェアを扱わなければならない人は、存在していないソフトウェアエンジニアリグは身につけられないため、ソフトウェアエンジニアリグを学ぶのではなく、それぞれの専門分野からソフトウェアを見なければならないのです。
まるで丸山応挙の雪松図屏風のように、それぞれの専門家がそれぞれ分野である松を描くことによって、地である白があたかも雪がそこにあるかのようにソフトウェア工学も見えてきます。
どのような学問領域からソフトウェアを見なければならないかという問題があるが、私は、哲学や数学等のような人類で長く研究されている領域を中心にしてくことが基礎となり、その上で人間に近い部分の学問が有用なのではないかと推測している。
選択の多様化
ソフトウェア工学の存在を認めて発展してきた今日を振り返ると、「ソフトウェア工学が無い」とも言えません。だから、私はソフトウェア工学の存在を説くのではなく、「ソフトウェア工学が無である」としています。
私たちはこれまで、ソフトウェア工学の存在を認め、真実の姿を探求してきました。しかし、工学は理学ではありません。ソフトウェアの正しい姿ということではなく、ソフトウェアとの付き合い方を模索しなければなりません。
これからは、ソフトウェア工学という一つの姿を説くのではなく、各人が各々の専門分野からソフトウェアに関心を持たなければなりません。その上で、それぞれの関心事に執着するのではなく、他人の関心や意見に耳を傾け、議論しながら多様な選択肢の提示し続けることが、今後のソフトウェアと付き合うために必要なことではないでしょうか。
ソフトウェアの視点
今後、ソフトウェアと付き合うために工学としての視点が必要であると考えています。しかし、これまでのような体系化、形式化のようなものであっては上手に付き合うことができないと推測しています。新たな視点では、二元論のような同一線上ではなく、多次元的に考えられるような視点が必要です。
その上で、先のソフトウェアエンジニアリングの呪縛ワーキンググループのまとめとして以下のような視点を持って考えなければならないとしてみたが、まだまだ満足のいくようなものになってはいないが、最終的には、5+1としたいです。
Type A
- 全体化 全体と部分、集中と境界、場、創発 …
- 人間化 科学と客観、言語ゲーム …
- 知働化 実行可能知識、暗黙知と形式知、文書化 …
- 組織化 属人性とピープルウェア …
- 多様化 制約、自由度、美とデザイン …
- 動的化 予測、進化、諸行無常、カオス …
- 関係性 基礎領域とクラウド …
Type B
- 全体と関心
- 記述と言語ゲーム
- 学びと問い
- 進化と複雑性
- 規律とデザイン
- 時間と空間
- リアルウェアと知恵
■