表参道.rbでHanamiについてLTした
表参道.rb #27 ~ RubyKaigiのおさらい
表参道.rbにお邪魔して、RubyKaigiで聞いたHanamiというRubyで作られたwebフレームワークについてLTしてきました。
Hanamiが気になる
先日のRubyKaigi2017で、Hanamiに関する発表を聞き、その思想、設計、使い方に触れました。
Rails以外のRuby製WAF、名前は聞いたことあるものの触ったことはなかったので、もしかしたらRailsのつらみを何とかするヒントがあるんじゃないかなーと思ってセッション聞いてました。
Railsのつらみは整理整頓の問題?
LTでは、Hanamiの設計思想に触れて感じたこととして、自分にとってのRailsのつらみは整理整頓の問題なんじゃないか、という話をしました。
例えばHanamiは、Railsよりも、置く場所に厳格で、以下のような感じになってます。
- ModelはRepository(データアクセス)とEntity(ドメインロジック)に分ける
- Controllerはactionごとにファイル(Classも)を分ける
- ViewはTemplateとView(helper的なロジックを抱えておけるクラス)に分ける
RailsはActiveRecordが優秀すぎる故にModelが太りがちで、太ると管理が辛くなる(分厚いので読むのが辛い、いつのまにかよく似た違うメソッドが生えてる、validationのコンテクストが乱立するetc...)と私は感じていて、Hanamiの、Modelの中身を分けてしまうという方法は良いなと思いました。
ただまあそれくらいなら、「RailsやめてHanamiを使うぞー」という話ではなく、自分たちで整理整頓のルールを追加したらいいだけなのですよね。
しかしながら、ルールを追加しても既存のコードは勝手に片付いてはくれないし、みんなが納得するルールを決めるの、ってそれ自体が難しいですよね。
引き続きカオスに秩序をもたらすべくがんばります。
発表スライドはこちらです。
Hanamiとmountable engine
Hamamiはrailsでいうappディレクトリがapp"s"ディレクトリになっていて、一つのシステムの中に複数のアプリを持つことができる、という設計になってます。
このcontributorsというアプリだと、webとAPIを別々のアプリとして格納してます。
他にもwebアプリと管理画面、という感じで使えるんじゃないか、という話をしたら、mountable engine使えばRailsでも似たようなことできるよ、と教えて頂きました。
Railsアプリをまるっと追加できるというのは面白いですね。ここぞというところで使ってみたいです。ちょっとアイデアが湧きました。
表参道.rb
毎月第一木曜に表参道界隈のRubyistが集まるイベントです。もくもく会ではなく、テーマがあるタイプの集まりです。
わしわし作業するためにもくもく会に参加するのも好きですが、テーマがある勉強会は共通の話題で盛り上がりやすくていいですね。自分の問題意識と重なるときは情報収集のために参加するようにしてます。