takumiblog

新人エンジニアの技術ブログ

Trailblazerって何?

Trailblazerとは?

複雑なアプリケーションでもシンプルなアーキテクチャで実装することができるようになるやつ。
アプリケーションが複雑・大規模になるにつれて、modelやcontrollerが肥大化して、扱いづらくメンテナンスもしづらくなってしまうから、それを解消しようというのが目的になっている。
公式サイト

Trailblazer is an architectural style that provides a modern approach to implementing business logic.
It makes complex application workflows simple, reliable and self-documenting.

rubyでも使用できるように、gemが用意されているみたい。

どうやって解決していくの?

ざっくりいうと、modelやcontrollerでの機能を他のファイル内で行えるようにして、分割して実装できるようにしようということ。
そこで重要な概念が以下になる。

operation

controllerで行っていた ようなビジネルロジック(処理手順)を担当する部分。
model との関係性はcontrollerとほとんど変わらない。

operation内での書き方の説明

step
上から順にこれを実行していくよという仕組みを示す。
Contract
strong parametersについてや、modelのvalidationについて記載していく場所。

Representable

オブジェクトを取得して、json,xml,yamlなどの形式に変換するやつ。

{
 name: "hoge",
 age: 10
}

こういうjson形式で送りたい時は、

class SongRepresenter < Representable::Decorator
  include Representable::JSON

  property :name
  property :age
end
DinasourRepresenter.new(dinasour).to_json

こんな感じでpropertyを指定して呼び出すと、その指定したpropetyをjson形式などに変換してレスポンスを返すことができる。

まとめ

  • trailblazerとは、複雑なアプリケーションを扱いやすくすることにできるアーキテクチャを実現することのできるもの。
  • controllerやmodelの処理を別ファイルで管理して扱いやすくすることができる
  • operationは、controllerのような処理手順を記載する場所になる
  • representetableは、propertyを指定することで、json形式などに変換させてレスポンスを返すことのできるもの。
    説明としてまだまだ不十分な内容ですが、trailblazerとは?の部分がざっくり理解できたので、今回はこの辺で終わりにしたいと思います。
    最後まで読んでいただきありがとうございました。

参考記事
Trailblazerを使い、Railsのモデルの肥大化問題からサヨナラする
TrailBlazer概要まとめてみた
Trailblazerドキュメント