Open subaru-hello opened 2 years ago
API部分をマイクロサービス化させたい 「Clean Architecture」と「オブジェクト指向設計実践ガイド」の練習
エンティティ(最重要ビジネスロジック、最重要ビジネスデータ)はdomainディレクトリ配下に記述する app/domains/alchohol/
エンティティのパブリックインターフェースはinitializeともう一つであるべき。ダックタイピングで呼び出し易い。
class Bicycle attr_reader :tire_size, :gear_type def initialize(attr = {}) @tire_size = tire_size @gear_type = gear_type end def exec hoge huga page end
private
def hoge end
def huga end
def page end
end
### モデリング 1 ユーザーはお酒の強さを診断することができる 診断結果(お酒の強さ)に応じてお酒の飲む順番をサジェストすることができる 診断結果は履歴として保存することができる 下戸と診断された場合、下戸証明書が発行される ユーザーはTwitterで診断結果を共有することができる お気に入りの酒対策薬をマイページに保存することができる ユーザーはお酒の一覧を見ることができる 2 - 最重要ビジネスロジック - 最重要ビジネスデータ ### 最低限欲しいメッセージ 最上位 「お酒の強さを診断して次の飲み会で飲むお酒の順番を提供する」 下位 お酒の強さを診断する 次の飲み会で飲むお酒の順番を提供する 「ユーザーはapi keyを使ってログインすることができる」 api keyを発行する ログインする 新規登録することができる 診断結果を酒豪、やや酒豪、普通、やや下戸、下戸の5パターンで表示する 診断結果は履歴として保存することができる 下戸と診断された場合、下戸証明書が発行される ユーザーはTwitterで診断結果を共有することができる お気に入りの酒対策薬をマイページに保存することができる ユーザーはお酒の一覧を見ることができる ### 備考 - DDD 顧客と開発者が業務を戦略的に理解し、共通の言葉を使いながらシステムを発展させる手法 <img width="1056" alt="スクリーンショット 2022-09-07 22 52 49" src="https://user-images.githubusercontent.com/79771445/188895856-7aa3562c-582b-4839-bb0f-a960357b3dd4.png"> (https://mintaku-blog.net/ddd-entity-modeling/) - エンティティ(DDD) 一意なものを表現する概念 一意であるため長期的に変化できるオブジェクト それ以外の意味を持つことができないオブジェクト - 値オブジェクト 意味が変わりゆくオブジェクト 一意でない 住所、誕生日、名前など、外見が同じでも意味が2つ以上持つ可能性があるオブジェクトを指す - モデリング(DDD) エンティティを抽出する作業 一意な識別子を探す作業とも言える エンティティの持つ振る舞い(メソッド)を発見する作業 - エンティティ(Clean Architecture) 企業のビジネスルール 最重要ビジネスロジックと最重要ビジネスデータをカプセル化させたオブジェクト - 最重要ビジネスロジック お金を生み出したり、節約に役立ったりするロジックの事。顧客が Zerokenを使う理由となるコアドメイン。 - 最重要ビジネスデータ - ユースケース アプリケーションのビジネスルール インプットからアウトプットまでに起きる、システム内におけるデータ処理プロセス(ユーザーインターフェースを除く)
API部分をマイクロサービス化させたい 「Clean Architecture」と「オブジェクト指向設計実践ガイド」の練習
目的
ルール
エンティティ(最重要ビジネスロジック、最重要ビジネスデータ)はdomainディレクトリ配下に記述する app/domains/alchohol/
エンティティのパブリックインターフェースはinitializeともう一つであるべき。ダックタイピングで呼び出し易い。
private
def hoge end
def huga end
def page end
end