中世ヨーロッパの思想史では、「実念論」と「唯名論」の対立があったとされる。Wikipediaの説明をそのまま借りると、実念論(実在論)は「言葉に対応するものがそれ自体として実在しているという立場」、唯名論は「実在するのは具体的な個物」という立場である。
一般的な「本質」が存在するかという問題はイスラーム教や禅など「東洋」思想においても議論の対象となってきたようである。(井筒俊彦『意識と本質』)
一般的な「本質」
これらの思想で議論で議論の対象となってきたのは、主に「花」とか「犬」といった固体としては物質的な形をとるものである。「科学」や「宗教」、「社会」といった概念に対しては近代の学者がさまざまな定義を試みているが、純粋に分析のための概念と、多少なりとも規範的な概念は扱いが異なると思う。例えば、「社会」はそれ自体ではプラス、マイナスの価値を持って使われないが、「科学」は「非=科学」(疑似科学)より優れたものとして扱われる。
筆者がいるソフトウェア業界でも「科学」のように、純粋に記述的ではなく、規範的な意味を伴って概念が使われる。例えば、「ウォーターフォール」は今ではほぼ記述的に使われるが、「アジャイル開発」や「テスト駆動開発」などはある程度規範的な概念だと思う。(「偽アジャイル」という批判は聞くが、「偽ウォーターフォール」という批判はほとんど聞かない。)
少し前に"TDD is dead. Long live testing."(日本語訳)という主張が出て筆者の周りでも話題になっていた。自分ではあまり実践できていないし、著者はRuby on Railsなどのコンテキストを背景に主張を述べているためなじみのないところもあるが、TDDを記述的な概念、つまりやるべきことの組み合わせとして考えた場合、状況が違えば(変われば)のやり方のほうがよい場合もあるというのは当たり前で、特に衝撃的とは思えない。
なお、著者の主張はユニットテストだけに頼らずシステムテストなど上位のテストをより重視すべきというものだが、一般論としては状況次第であり、コンテキストとなっているRoRの開発においてどれほど当てはまるのかはわからない。極論をすれば、プロジェクトごとに何をすべきか異なる、ということになる。それでは、なぜ議論が行われるのか?
TDDのような概念に対する一つの受け取り方は前述のような記述的なものとみなすことである。コンテキストが特定されていない手法であるから、コンテキストが変わればそのままは適用されないのが当然ということになる。ただ、純粋に記述的な概念はマックス・ウェーバーの「理念型」のように外部の研究者が分析のために使うことはあるものの、内部にいる人にとってはあまり意味をもたない。
別のとらえ方は規範的なもので、「状況に適応する」ということも含め、ソフトウェア開発のあるべき姿を表すものである。この考えに立てば、概念自体を放棄することはありえないが、「成功すること」だけが意味内容であればほとんど無意味になる。
ソフトウェア関係で通常使われる方法論あるいはプラクティスに関する概念は記述的かつ規範的なものである。つまり、一定の条件下ですべきことが述べられており、それに従えば何らかの目的を達成できるものとされる。とはいえ、「条件」や「すべきこと」が常に明確なわけではない。どのような法律でも解釈の予知があるのと同様である。
筆者がいるソフトウェア業界でも「科学」のように、
少し前に"TDD is dead. Long live testing."(日本語訳)
なお、
規範的な概念についての議論の方法
TDDのような概念に対する一つの受け取り方は前述のような記述
別のとらえ方は規範的なもので、「状況に適応する」
ソフトウェア関係で通常使われる方法論あるいはプラクティスに関
こうした概念が「従ったがうまくいかない」または「
- 擁護:考え方は間違っていない。
あなたの理解が間違っている。ある宗教の教えに従いながら幸福になれない人に対し、教えを正しく信じ、理解し、実践していないあなたが悪い、と非難するのと構造は似ている。 - 拡張:明示されてはいなかったが、もとの概念の中に暗に含まれていたものだ。条件が違う場合にはより一般化して適用すればよい。
- 限定:そのケースは概念の適用対象としてふさわしくない。
- 否定:もとの概念は間違っている。新しい、より良いものに置き換えるべきだ。
名前をつけるということ
ソフトウェア開発やさらに広くビジネスで使われる方法論の場合、
一つはコミュニケーション上の必要である。
また、一つの理想型として参照されることにより、
意味のある議論?
ある方法論やプラクティスが特定のコンテキストのもとで成り立つ(有効である)、またコンテキストを言葉だけで表現することはできないと考える場合(基本的に妥当な仮定だと思う) 、意味のある議論としては、
- 個別具体的なケースで特定の方法論やプラクティスを適用すべきか
- 特定の条件が方法論やプラクティスの適用にどのような影響を与えるか(メタレベルの議論)
特定の現場にいない人は(ヒアリングを行うなどして)意味のあるアドバイスを与えることはできるとしても、コンテキストをすべて知っているわけではないので判断には限界がある、ということになると思う。
方法論の適用条件に関して、また定式化に関してどのようなことが議論の対象になりうるかについてはまた別の機会に投稿したい。