Clean Architecture まとめ – 1
設計とアーキテクチャ 目的は? ソフトウェアアーキテクチャの目的は以下であると説明。 ソフトウェアアーキテクチャの目的は、求められるシステムを構築・保守する人材を最小限に抑えること システムは拡張・変更のコストを抑える重要な鍵はアーキテクチャにある。保守・運用コストがかかりすぎてしまう原因は、汚いコードにあり、そうなってしまうのはアーキテクチャが良くないからだ。 本書は柔軟なソフトウェアを作るためのアーキテクチャを設計するための原則を紹介する。 アーキテクチャとは?設計とは? アーキテクチャとは、大枠から細部に至るまでの構造で、大枠と詳細との厳密な境界の明確な基準はない。設計とは、大枠から細部に至るまでの決定の連続のことで、こちらも大枠と詳細の境界の明確な基準はない。 一般的には、アーキテクチャとは上位レベルの構造を指し、下位レベルの詳細と切り離して捉えられていたり、設計は細部の決定をすることと捉えられていることがあるが、それは開発手法やフェーズを踏まえた場合に発生している考え方であって、実際はそれが一般的な基準となる考え方になるわけではない。 ケーススタディ 人材をリリースごとに増やす。図1-1 人が増えているにも関わらず、リリースが進むごとに生産性が下がっていく。図1-2。図1-4。 しかし、人は増えているからリリースが進むごとにコード行あたりのコストも爆増し、開発者に払う給料も爆増。図1-3、図1-5 何が間違ったのか? 開発者は、後でクリーンにできると自信過剰になり、市場に出すことを急いだ。しかし、実際には後でクリーンにすることはない。市場、競合他社のプレッシャーがあるから。そしてコードはどんどん汚くなり、生産性は落ちていく。 あとでクリーンにできるから先に出すという考え方は、汚いコードは長期的には生産性が下がるが、短期的には上がるという考え方が起因している。しかし、この考え方は間違っていて、実際には短期的にも長期的にも遅いのが正しい。(TDDで進めたプロダクトとそうでないプロダクトで検証。)だから、あとでクリーンできるという考え方は根本から変えないといけない。 うさぎとかめは良い教訓を教えてくれる。 遅くとも着実なものが競争に勝つ 競争は短期的ではない。強いものが勝つわけでもない。 急げば急ぐほど遅くなる 学びを活かすアイディア・行動 今の所特になし