過去30年以上にわたって、その著作とブリキ (ブログとウィキの中間形態のサイト) を通してソフトウェア開発コミュニティに大きな影響力を持ち続けてきたマーティン・ファウラー。その言葉がまず同業者たちを勇気づけてきたことは間違いないが、ベストプラクティスとしてまとめ上げられた現場の知見は、アジャイルの潮流がソフトウェア業界を超えて広がってゆくための欠くことのできない基礎となった。ロバート・C・マーティン、ケント・ベック、ジェフ・サザーランドらコミュニティの外部にまで影響力をもった伝道師たちの仕事は、マーティン・ファウラーが育てた語彙抜きには存在しえなかっただろう。 マーティン・ファウラーは、ソフトウェアの優れた設計とそれを支える質の高いコードの価値を、内部品質 (Internal Quality) と呼んでいる。低い内部品質は中長期的に開発チームのスピードを低下させ、コスト面あるいは品質面でプロジェクトを袋小路へ追い込む原因になる。一方、優れた設計を重視し、継続的にコードの改善を行えば、チームとその開発スピードは指数曲線を描いて向上することになる。これはマーティン・ファウラーが設計スタミナ仮説と呼ぶ持論であり、設計を将来の機会または実装に直結する現場に委ね、より多くの情報とともに重要な決断を行うことで利益を得ようとするあらゆるアジャイルの方法論が、その根拠としているアイディアである。 しかし、目に見える機能追加を伴わない内部品質の改善は、開発プロジェクトにおいて冷遇されがちである。開発者たち自身がその価値についてまだ十分な説明を持っていない時代において、コードを美しく保つことと、技術のひけらかしや自己満足の混同を避けられなかったのも致し方のないことであった。「リファクタリング: プログラミングの体質改善テクニック (ObjectTechnologySeries 10)」(桐原書店、2000年) には、継続的にソフトウェアを改善する実践に、ケント・ベックがリファクタリングという呼び名を与えて推奨したことによって、苦い経験をしたチームがその重要性に気づくエピソードが綴られている。優れたハッカーのみが知り得た暗黙の了承に呼称が生まれ、マーティン・ファウラーの書籍によって体系を与えられ、コミュニティの共有財産にまで昇華されたのである。そしてそれはリファクタリングに限らない。ソフトウェアの構造のグラフィカルな表記法である UML 、特殊な業務ニーズを表現する DSL などについての一連の著作は、すべて内部品質に貢献する技術についての解説である。それらはリファクタリングと同じように、優れた実践を追体験するための実演と、実用的なパターンのセットを提供するレファレンスの形で、コミュニティの知識体系に組み入れられた。 一貫して現場にその基礎となるボキャブラリを提供してきたマーティン・ファウラーは、一方で、プロセスやテクニックが一人歩きすることについて批判的である。それはどんなに優れたプロセスも技術者の能力の不在を補うものではない、あるいは逆に、プロセスとは技術者の能力を活かすためにある、という信念の裏返しであろう。そのためマーティン・ファウラーは、ひとつのテクニックを解説するために、それを必然的に要請するプロセスについての解説を欠かさない。 例えば「UMLモデリングのエッセンス 標準オブジェクトモデリング言語入門」(翔泳社、2000年) は、タイトルから想起されるような特定の領域の入門書であることを超えて、アジャイルについての深く、網羅的な解説から始まっている。そればかりか、この本は全体として、さまざまなケースに対応しようと (それがどのようなプロセスをサポートするのかについての、確固たる信念のないまま) 仕様が肥大化してしまった UML に対して、あえて「エッセンシャル」な姿を提示することを意図している。設計を可視化する表記法である UML は、それ自体アジャイルを助けるテクニックであり得るが、不必要に肥大化した (アジャイルと相容れないプロセスのために肥大化した) その全体は拒否する、というわけである。読者は UML というテクニックを通して、マーティン・ファウラーの歴史観と、有象無象の中から本質を見出す哲学を受け取ることになる。 もうひとつの例は、2009年にブリキへ投稿された「ヘロヘロスクラム (Flaccid Scrum)」だろう。プロセスだけを取り入れ、内部品質を軽視したことによってパフォーマンスを出すことができないスクラム実践者への、ストレートな批判として書かれている。マーティン・ファウラーは90年代から、プロセスとテクニックの一体的な受容の重要性を訴えてきた。そのメッセージが、まさにその軽視において破綻する景色を見せられたのだから、嘆きのひとつくらいは当然と言えるだろう。 ソフトウェア開発コミュニティは、マーティン・ファウラーによって、その最高の実践者たちの方法を言語化し、共有する幸運に恵まれた。もし今後、ソフトウェア以外のコミュニティがアジャイルの再現を目指して適応的なプロセスを実現しようとするなら、90年代のソフトウェア開発におけるリファクタリングやテスト、各種の設計技法がそうだったように、その中心となるべき重要な実践を見出し、そのための新しい語彙を構築する必要があるだろう。もしそれがまだ不十分であると認めるなら、私たちはこれから訪れる、そのコミュニティにとってのマーティン・ファウラーの登場を決して見逃してはならない。 [[Martin Fowler]]