Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Zeroken APIの考察 #137

Open
subaru-hello opened this issue Sep 7, 2022 · 0 comments
Open

Zeroken APIの考察 #137

subaru-hello opened this issue Sep 7, 2022 · 0 comments

Comments

@subaru-hello
Copy link
Owner

subaru-hello commented Sep 7, 2022

API部分をマイクロサービス化させたい
「Clean Architecture」と「オブジェクト指向設計実践ガイド」の練習

目的

  • クリーンアーキテクチャでモデル設計を再構成し直したい
  • react, vueのどっちをフロントエンドにするかの選択を先延ばしにしたい

ルール

  • エンティティ(最重要ビジネスロジック、最重要ビジネスデータ)は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
    顧客と開発者が業務を戦略的に理解し、共通の言葉を使いながらシステムを発展させる手法

スクリーンショット 2022-09-07 22 52 49

(https://mintaku-blog.net/ddd-entity-modeling/) - エンティティ(DDD) 一意なものを表現する概念 一意であるため長期的に変化できるオブジェクト それ以外の意味を持つことができないオブジェクト
  • 値オブジェクト
    意味が変わりゆくオブジェクト
    一意でない
    住所、誕生日、名前など、外見が同じでも意味が2つ以上持つ可能性があるオブジェクトを指す

  • モデリング(DDD)
    エンティティを抽出する作業
    一意な識別子を探す作業とも言える
    エンティティの持つ振る舞い(メソッド)を発見する作業

  • エンティティ(Clean Architecture)
    企業のビジネスルール
    最重要ビジネスロジックと最重要ビジネスデータをカプセル化させたオブジェクト

  • 最重要ビジネスロジック
    お金を生み出したり、節約に役立ったりするロジックの事。顧客が Zerokenを使う理由となるコアドメイン。

  • 最重要ビジネスデータ

  • ユースケース
    アプリケーションのビジネスルール
    インプットからアウトプットまでに起きる、システム内におけるデータ処理プロセス(ユーザーインターフェースを除く)

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant