Ruby on Rails 6 実践ガイド [機能拡張編] を読んだ

Ruby on Rails 6 実践ガイド[機能拡張編]:株式会社インプレス

先日の技術書典で PDF 版を見つけて買ってしまっていた。シリーズものの後編にあたるけど、前編は(単純に技術書典の一覧に無かったので)買っていない。

「機能拡張編」というので Crafting Rails のような本なのかと思ったが、そういうわけではなく、前編で作成したアプリケーションの機能を拡張していくというものだった。

読んでみて

自分の知識が Rails 5 の出始めぐらいで止まっているので、Rails 5/6 のキャッチアップをしたいという目的があったが、その辺の目新しい機能の解説という感じの書籍ではないように思えた。(もしかしたら、その編は前編でカバーされていたのかもしれない。Action Text とか Active Storage とか webpacker とか)

全て写経しながら進めていったが、忘れていたような記法や、Rails での書き方みたいなのが手を動かしながら思い出せてよかった。そういう意味で、この本のように一つのアプリケーションを動かしながら変更していくというのは、今回「Ruby on Rails の開発がどんなだったか思い出したい」という目的には非常にあっていたように思える。

業務で書いている時に手にとったのなら、気になる部分だけつまみ読みして終わったと思うが、今回は写経してよかったと思う。(1 日 30分-1時間ぐらいだったので、3 週間ぐらいかかったけど)

興味深かった部分

自分が Rails で業務アプリを書いていた時も Form Object や Service 層の議論がところどころで起こっていたが、この書籍ではきっちり、forms, services, presenters と分けられていたのが印象的だった。

presenter に関しては、私が携わっていたアプリでは ActiveDecorator で decorator を作っていて、それに似たものかと思っていたが、markup の生成もされていて趣の異なるものだった。
ここに関しては賛否ありそうではあるが、partial view も作りすぎると view の生成が重くなるという経験もあったので、こういう markup を直接作ってくる presenter も一つの選択肢なのかなと思う。

service はあくまで補助的という感じで、がっつりレイヤーとして機能という感じでもない。これぐらいであれば チームによって、models の中に入れてしまうところもありそう。

webpacker は使ったことはなかったが、良いも悪いも目に入ってくるので実際どうなんだろうかと思っていた。
ちょうど今年前半は React.js での開発が多かったのもあり、webpack 自体も触ることが多々合ったので、webpacker 自体がいいか悪いかはともかく、SPA ではなく Web アプリと共存させて使う方法の例として参考になった。
逆に webpack 自体を触った経験が無いと、「まじなんだこれ」になった気はする。

Rails 使って開発していないけれど

現在は ASP.NET Core / C# のアプリケーションコードを見ることが多く、それ以外でも Node.js の Web フレームワークを触るぐらいで、Rails を使ってアプリを書くこと自体ほぼなくなってきたけれど、利用している Web フレームワークで足りない部分を感じると Rails に立ち戻ることが多くある。

Rails 自体は現在となっては、フィットしない性質のアプリケーションも多くなってきているのだと思う。それこそ ASP.NET Core も EF Core は一つの選択肢でしかなく、フルスタックではない。フルスタックフレームワーク自体敬遠されているのかも。

一方で、フルスタックであるがゆえに整備された生産性を高めるための工夫は、フルスタックでない Web フレームワークを使う上でも参考になると思ったりしている。