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(曖昧性)