Please enable JavaScript.
Coggle requires JavaScript to display documents.
Webアプリケーションフレームワーク導入時に考慮すべき22の観点 (普通にアプリケーション開発を続けると、 (開発スピードは鈍化,…
Webアプリケーションフレームワーク導入時に考慮すべき22の観点
普通にアプリケーション開発を続けると、
開発スピードは鈍化
品質は低下してバグが増える
開発者からは技術的負債への怨嗟の声が聞かれるようになる
ソフトウェア開発は複雑さとの戦いになる。
特に、「ビジネスの関心事」と「技術的関心事」をいかに分離するか
持続的に変更可能なアプリケーション開発を実現するためのキモとなる
ドメイン駆動設計(DDD)
「ビジネスの関心事」と「技術的関心事」を分離して設計するアプローチで最も優れた手法
関心事を分離し、「ビジネスの関心事」をユビキタス言語を駆使しながらモデリングを行い、継続的にリファクタリングすると本当に変化に強くなる。
全体設計
言語/フレームワーク選定
複雑なビジネスロジックをリーダブルに表現できるか
コンパイラやエディタ(IDEを含む)の支援があり、リファクタリングを容易に行えるか
後方互換性を重視しているか
コミュニティが存在し、メンテナンスされ続けているか
十分な量の情報が流通しているか
エンジニアのモチベーションが向上するか
アプリケーション・アーキテクチャ
多くのWebアプリケーションフレームワークは、MVCを前提としている。
シンプルなCRUDサービスであればMVCでも良いが、中長期で運用されるWebアプリケーションの場合、MVCでは複雑さが制御できなくなるケースが多い。
レイヤードアーキテクチャ
ヘキサゴナルアーキテクチャ
オニオンアーキテクチャ
クリーンアーキテクチャ
実は考え方は似通っており、ドメインモデルを中核に据えて設計しよう、と言ってるだけである。
「ビジネスの関心事」であるドメインモデルと、データベースアクセスなどの「技術的関心事」を分離できると、それだけでも相当変化に強いコードになる。
筆者の場合は、レイヤードアーキテクチャをベースにすることが多い。ただし、後述のDIを使って、ドメイン層が他に依存しないようにしている。