Go でプロジェクト/パッケージを作るときの命名とか整理

domain ( ドメイン ) ... 外界との関わりがないまとまり、主要用語

model ( モデル ) ...

value ( バリュー ) ...

usecase ( ユースケース ) ... メインとなる処理の流れ、テストが必要なら interface に、テストが不要なら struct に。

interactor ( インタラクター ) ... usecase の実装、テストが不要なら登場しなくてもいい。

application ( アプリケーション ) ... usecase & interactor のまとまり

input ( インプット ) / output ( アウトプット ) ... 内部システム内でのパラメータの受け渡しの総称

controller ( コントローラー ) ... 外部システムきっかけの入力 ( 出力 ) を管理するまとまり

handler ( ハンドラー ) ... contorller と同義

repository ( リポジトリ ) ... 内部システムきっかけの入力 ( 出力 ) を管理する。テストが必要なら interface に。テストが不要なら struct に。

gateway ( ゲートウェイ ) ... repository の実装、テストが不要なら登場しなくてもいい。

request ( リクエスト ) / response ( レスポンス ) ... 外界とのやりとりでの入力 / 出力の総称

adapter ( アダプター ) ... controller & gateway のまとまり

driver ( ドライバー ) ... 外界とやりとりするための設定