4. フレームワークと結婚するな!
Clean Architectureに関連して、Martin氏はフレームワークについて以下のように述べています。
フレームワークと結婚するな!
(Don't marry the framework!)
Robert C. Martin
ここでの「結婚」とは、上位モジュールがフレームワークに依存してしまうことを意味します。フレームワークは同心円の図において最外殻に位置する、最下位のモジュールです。なので結婚するとフレームワークの都合にプロジェクト全体が振り回されるし、フレームワークのアップデートや仕様変更が入ったときにコード全体を修正しなくてはいけなくなります。最悪の場合、フレームワークが非推奨になったり消滅したりすれば、プロジェクト自体が破綻します。
しかし現実的にはフレームワークとの結婚を完全に避けることはできません。例えばR3はMV(R)Pパターンを組むために上位で使わないと意味がありません。このように、使った方が話が早い場合は結婚が許容されます。しかし、あくまで結婚であるため、一度依存したら途中で切り離すことができない一蓮托生の存在になることには注意しておかなければいけません。結婚するフレームワークはよく考えるべきです。
ところで、Unityは一つの大きなフレームワークです。我々はMonoBehaviourを継承することで Start() や Update() などのUnityのライフサイクルメソッドを使ったり、GameObjectにアタッチしたりしています。これはまさにフレームワークと結婚している状況に他なりません。しかし、実はUnityと結婚することは回避可能です。