天使の取り分

ソフトウェア開発に関するよもやま

Clean Architectureを読む(2)

2章 A TALE OF TWO VALUES

2章では、ソフトウェアの2つの価値、振る舞い(Behavior)構造(Structure)について述べられています。
振る舞いとはソフトウェアが要求仕様に従って正しく動作すること。構造とはソフトウェアの形であり、それによって要求の変更にどれだけ容易に対応できるかが決まります。
ビジネスの人々はソフトウェアが正しく動くこと(振る舞い)に価値を置きますが、いくら正しく動作していたとしても変更が容易でないソフトウェアは、将来のいずれかの時点において変更にかかるコストが変更により生み出される価値を上回ることになってしまうと述べられています。
ソフトウェアがソフトウェアたる所以はソフト(変更しやすい)からであり、開発者の立場からは構造にこそ価値を置かねばならないのだと。開発者はソフトウェアのステークホルダーの一員として、長いスパンで価値を生み出す構造がないがしろにされないようにセーフガードの役割を果たさねばならないと主張されています。
とりわけアーキテクトにとっては、開発しやすく、変更が容易で、拡張性の高い構造(アーキテクチャ)を作り出し、維持していくことがその職務の中心となります。

3章 PARADIGM OVERVIEW

3章はソフトウェアの3つのパラダイムについての導入です。
どのパラダイムプログラマができることを削ったもので、何をすべきではなくて何をしてはならないかについて規律(discipline)を与えるのだと述べられています。具体的には、構造化プログラミングは直接的な制御の移行(direct transfer of control)に対して、オブジェクト指向プログラミングは間接的な制御の移行(indirect transfer of control)に対して、関数型プログラミングは割当て(assignment)に対してそれぞれ規律を課すということです。具体的にどういうことかというのは4章以降で明らかになるでしょう。
面白いのは、オブジェクト指向プログラミングは構造化プログラミングよりも前に発見されたということ、さらに関数型プログラミングはプログラミング以前に発見された理論(アロンゾ・チャーチのラムダ計算)に基づいたものである、というところですね。どれも1958-1968に発見されたものであり、この3つ以外のパラダイムは出てこないだろうと筆者は述べています。