2022-06-25 HanamiのモデルはRepositoryとEntity / VUCA
HanamiのモデルはRepositoryとEntity
Ruby のDDDフレームワークのhanamiについて。
Hanami’s model domain is implemented in a way that separates the behavior that we want to express (entities) from the persistence layer (repositories and database).
$ bundle exec hanami generate model book
create lib/bookshelf/entities/book.rb
create lib/bookshelf/repositories/book_repository.rb
create db/migrations/20170406230335_create_books.rb
create spec/bookshelf/entities/book_spec.rb
create spec/bookshelf/repositories/book_repository_spec.rb
Rails だとモデルという1つの概念で表されるべきものは、Hanamiの場合エンティティとレポジトリに分かれている。
Repository
Hanami レポジトリは下記のようなインターフェースを持つ。
- #create(data) – Create a record for the given data and return an entity
- #update(id, data) – Update the record corresponding to the id and return the updated entity
- #delete(id) – Delete the record corresponding to the given entity
- #all - Fetch all the entities from the collection
- #find(id) - Fetch an entity from the collection by its ID
Rails でいうと ActiveRecord::Associations::CollectionProxy あたりのメソッドがこの Repository レイヤーで用意されているイメージ。
VUCA
VUCA という言葉を知った。
VUCAとは、Volatility・Uncertainty・Complexity・Ambiguityの頭文字を取った造語で、社会やビジネスにとって、未来の予測が難しくなる状況のことを意味します。
VUCAとは何か。VUCA時代を生き抜く企業に必要なこと : i-Learning 株式会社アイ・ラーニング
- Volatility(変動性)
- Uncertainty(不確実性)
- Complexity(複雑性)
- Ambiguity(曖昧性)