2004年02月05日
川俣晶の縁側過去形 本の虫感想編 total 4078 count

適応型ソフトウェア開発 ジム・ハイスミス 翔泳社

Written By: 川俣 晶連絡先

 今頃、やっと読み終わりました。

 買ってすぐ、かなりの量を読んでいたのですが、読み切ってしまうことが少し怖くなって放置されていました。もし、期待することと異なる結論で終わったりすると気分が良くありませんから。

 しかし、うっかり2004年2月6日 次世代開発ツールフォーラム 特別講演 「変化し続ける状況に対応するプログラム言語、ツールの理想像」のPowerPointファイルにこの本の紹介を書き込んでしまったために、大慌てで残りを読むことに。慌てるぐらいなら書かなければ良いのに、実に間抜けな話です。

感想 §

 この本の大半は、半年も前に読んでいるので、今このタイミングで感想と言っても書きにくいところがありますが。

 基本的には、凄く面白く、示唆に富んだ名著だと思います。

 しかし、ほとんどの人はこの本を読むことができないと思います。

 そこで扱われている基本概念が、一般的なIT業界で使われている概念とかけ離れているからです。これを読むためには、おそらく勉強とパラダイムシフトが必要でしょう。それに輪を掛けて文章が読みにくいという問題があります。更に、この本がフォーカスしている対象がソフトウェアの大規模開発であるために、そういうプロジェクトのマネージメント的側面に踏み込んでいない人には、全くピンと来ない可能性もあり得ますね。

 それほど読みにくいにも関わらず、この本に書かれた内容は重要だと思います。

 特に、カオスの縁という状態を維持することが成功の手段であるという指摘は、非常に重要だと思います。

カオス、複雑適応系 §

 カオス、複雑系、カオスの縁などは、一時期の科学の流行語であって、その手の書籍が一般向けも含めていろいろ出ていたと思います。私も当時に少し囓っています。囓っていて、そういう概念があるのが当たり前の空気の中を生きてきたので、この本はすんなりと読めました。その点で、この本は突飛で目新しいものを扱っているというよりは、手あかの付いた概念をソフトウェア開発プロジェクトに適用したという印象があります。

 しかし、大多数の人達は、まだまだ19世紀的な単純な決定論的、線形的な世界観の中で生きていて、中学校の数学の証明問題のようなノリで正しいことを証明することが説得力になると誤解し、そして、多くの人はそれを説得力として受け入れてしまっています。

 実は、そのような世界観の中で生きている人に、こういう新しい科学に即した話をすると馬鹿に見えるという現象があるかも知れません。その点で、この本も、馬鹿な本という評価を受ける可能性はあり得るように思います。まあ、読みにくい文章のために、評価する前に投げ出される可能性が高そうですが (笑い)

 念のために付け加えると、これに似たトンデモ系の「科学ではないもの」もあるので、区別は重要です。

マイクロソフトが成功例 §

 混沌も秩序も成功の条件にならず、カオスの縁にあることが成功の条件になるという指摘の具体例として、マイクロソフトが出てくるところが実に印象深いですね。

 実際、学生が行き当たりばったりでプログラムを作って売るような場当たり主義的混沌は失敗するし。かといって、IBMのような究極の秩序を持った開発方法論で組み立てられたOS/2もWindowsに負けて成功したとは言えないし。どちらでもないマイクロソフトが成功者になったということが、カオスの縁という概念で綺麗に説明できるという考え方が実に面白いですね。

 OS/2をマイクロソフトとIBMが共同で開発していた時代には、マイクロソフトはIBMの過剰な官僚主義を批判し、IBMはマイクロソフトに確立された秩序がないことを批判していたようですが、過剰な秩序は失敗の条件であるとすれば、その後の展開は納得できるものです。おそらく、IBMは混沌は失敗するという知識は持っていたのでしょう。それゆえに、秩序が必要であると考えたのでしょうが、秩序と混沌の境界にあるカオスの縁という領域があるという知識を欠いていたのでしょうね。

 XML界の貴族とボヘミアンの問題も、貴族が秩序、ボヘミアンがカオスの縁を代表する立場であると解釈できるかもしれません。貴族がボヘミアンを攻撃する理由は、混沌は失敗するという知識がトリガとなるもので、カオスの縁と混沌の区別がついていないために発生しているものなのかもしれません。

カオスの縁によるプログラム言語論 §

 この本を読んで思ったことが1つあります。

 それは、プログラム言語の普及にカオスの縁という概念を当てはめてみるというものです。

 カオスの縁が、混沌と秩序の中間領域であり、それが成功の条件であるなら、完璧な秩序を持つプログラム言語は破綻することになります。

 もし、Javaが完全無欠の完全な言語であるとするなら、これは失敗を運命づけられていると言えます。しかし、本当に完全無欠かというと、そうでもないような気がします。なかなかJavaが滅びない理由として、完全無欠ではないから、という理由を考えることはできそうです。

 もう1つ、出来が悪いのに、いつまでも滅びないBASICについて考えても面白そうです。BASICは出来が悪いと言われていますが、実際に世間で言われるほど出来が悪いとは思いません。時代の流れに沿って、いろいろな改良が加えられています。しかし、過去との互換性の問題もあるので、完全無欠ではありません。完成度は高いが完全無欠ではないという微妙なポジションにあるのが、BASIC特にVisual Basicと言えるかも知れません。

 とすれば、現在進行中のC#よりもVisual Basic.NETが.NET Framework上の主流開発言語になりそうな流れの理由を説明できます。C#と比較して、明らかに出来の悪い部分があるもっさりとしたVisual Basic.NETは、出来の悪い部分があるという特徴故に過剰に秩序の領域に入り込まず、カオスの縁に留まることができているのかもしれません。