December 2024
Beginner to intermediate
164 pages
1h 15m
Japanese
ソフトウェア設計とは何だろうか? 定義から始めるのは好きではないし、もう定義から始めなくても大丈夫だ。なぜなら、私が言う設計とはどんなものなのか、あなたはその例を見てきたはずだ。大きなゴールを達成するために、個々の判断がどう連鎖するかを見てきたはずだ。「ソフトウェア設計は人間関係のエクササイズだ」という言葉の意味を垣間見たはずだ。今や、私は「ソフトウェア設計」が何を意味するかを言えるようになった。それは「要素を役立つように関係づけること」だ。
これは大きな概念を表す割に、使っている単語の数は多くない。それぞれの単語にはしっかりとした重みがあるはずだ。それぞれを別々にして、それから元に戻すことにしよう。
しっかりとした構造は部分からできている。
細胞小器官 → 臓器 → 生物。
原子 → 分子 → 結晶。
私たちの世界だと、トークン → 式 → ステートメント → 関数 → オブジェクト/モジュール → システムだ。
要素には境界がある。どこで始まり、どこで終わるかがわかる。
要素は子要素を含む。私たちの世界では、均質な階層構造(コンポジットパターン風だ)を好む。前の例のような自然界の階層構造は均質ではない。含まれる子要素は、コンテナにはならない(この点が極めて重要かどうかは定かでないが、いつかソフトウェア設計を自然界のプロセスとして扱う本当に哲学的な本を書くまで忘れないようにするつもりだ)。
さて、要素の階層がある。要素同士には関係性がある。ある関数が別の関数を呼び出す。関数は要素だ。「呼び出す/呼び出される」は関係性だ。自然界には、「食べる」、「日差しから守る」、「肥料を与える」といった関係性がある。 ...
Read now
Unlock full access