最近書いたものの中で一番反応があった「日本的なものへの不快感」という文章に関連して、「ANDの能力」を考えてみる。あの文章において筆者は、非合理的・情緒的・許し合い・曖昧といった諸々のことを日本的と表現し、攻撃した。日本の非合理性、集団責任という名の無責任体質、長い物には巻かれる風潮を、筆者は苦々しく思っている。その一方で、日本の非合理性は強みでもある、と考えている。

 ちょっと前に下書きをしたものの、まだ清書していない原稿がある。題名は、「ITプロに要件定義はできない」という。下書きの段階で中断したのは、次の発言を聞いたからだ。

 「日本のソフト産業に強みがあるとすれば、曖昧な要件定義に耐えられる点ではないですか」。

 この発言をされたのは、東京大学大学院工学系研究科の飯塚悦功教授である。飯塚教授の専門は品質管理であるが、組み込みソフト技術者の育成を支援する団体を主催されており、ソフト開発についても詳しい。

 飯塚教授によると、「定義をはっきりさせないでも物事を進められるのは日本人の特質である」。確かにソフトを例にとれば、要件定義がうまくできない顧客と、それでもなんとかソフトを作ってしまう開発会社という構図がある。いや、こう書くと顧客企業が怒こりそうだ。「なかなか要件を理解しない開発会社をなだめすかしてソフトを作らせている顧客」と書いたほうがよいのかもしれない。とにかく顧客とソフト開発会社が、良く言えば一丸となって、悪く言えばぐちゃぐちゃのまま開発を進めるのが日本流である。

 これに対し「欧米人やインド人は、定義が曖昧なままで仕事を進めることに耐えられない。必ず開発を始める前に口うるさく物事を定義し、きっちり契約をする」(飯塚教授)。

 要件定義の問題は、諸悪の根元と言える。ここをきちんとできない限り、いつまでたっても「動かないコンピュータ」は無くならない。その当たりについて思ったことをまとめようとしたのが、「ITプロに要件定義はできない」という原稿である。

 定義がいい加減なままで、契約もないのにシステムズ・エンジニアを集めて開発を始めてしまう、日本的な開発方式はおかしい。しかし、「要件定義をきちんとせよ」「契約を結べ」「仕様変更は断るかカネをとれ」と言ったところで問題の解決にはならない。

 そもそもどんなシステムであっても、開発中に要件は必ず変わってしまう。それをどこまで柔軟に取り込めるか。がちがちの契約でお互いを縛った状態で開発をするのと、ある程度は融通無碍に開発を進めるのとどちらがよいか。 

 ようやく本題である。どちらがよいか、と言ってしまうと、ORの抑圧に屈したことになる。「できる限り要件を詰める努力をし、契約もきちんと結ぶ」。「同時に顧客のことを考え、仕様変更もできる限り受け入れる体制や方法論を確立できるよう努力する」。矛盾する二つのことを同時追求する。これがANDの能力である。