Sierでバックエンドの開発をしている2年目エンジニアです。
先日参加した勉強会で、個人的に頭にズドーンときた言葉があります。
「設計とは分割と結合である」
この言葉は、クラス設計やマイクロサービスの概念に通じるものがあります。
クラス設計では、クラスをどのように分け、関連づけるかが肝。
マイクロサービスでは、アプリケーションを複数の独立したコンポーネントに分割し、それらを効果的に連携させることが肝。
良い設計とは、
適切な分割と結合をできていることだと思う。
でも、「適切」って、具体的にはどういうことだろう?
これを掘り下げるために、中学数学に時を戻してみる。
たとえば、99²の計算。
99²をそのまま計算しようとすると大変で、僕の脳みそだと計算ミスする可能性が高い。
でも、99を100と-1に分割すると、以下のように簡単に計算できる。
(100-1)² = 100² -200 + 1 = 9801
分割した分、結合箇所(演算子)は増える。
それでも分割した方が計算が楽になる。
これって、適切な分割がどれだけ大事かってことを示してる例だと思う。
不適切な分割とは、99を50と49に分けるような行為で、全然計算が楽にならない。
そう考えると、計算を工夫するのも、いわば設計のうちだと言えそう。
エンジニアに数学的な思考力が求められるのは、この分割と結合の考え方を学んでいるからなんだなって、ちょっと納得しました。