以下の方針を組み合わせることにより、スケールしやすいアプリケーションを目指す。
ドメイン駆動開発(DDD) ― 業務的関心事であるドメインモデルをソフトウェア開発の中心にすえ、コードやコミュニケーションを常にドメインモデルに反復的に一体化させながら、より価値の高いアプリケーションを生み出していこうとする考え方。
ユースケース駆動開発(UCDD) ― 外界の存在であるアクターと我々の作るシステムを意識し、ユースケースをビジネスロジックそのものとしてソースコードに落としこむ。
クリーンアーキテクチャ ― DDDとUCDDに適したアーキテクチャ。「関心の分離」や「依存関係逆転の原則」を順守しやすくなる。処理やデータの流れを単方向に制限する。双方向の処理を定義するとコードがどこに飛ぶか分かりづらくなるのでやめる。これは注意深く設計されたMVCパターンやFacebookのFluxアーキテクチャでなされていることだ。
FRP(Functional Reactive Programming) ― 「時間と共に変化する値」と「振る舞い」同士の関係性を宣言するプログラミングスタイル。
力作だ