mmyoji's diary

プログラミングとか日々のどうでもいいこととか

『メタプログラミングRuby』読んだ

メタプログラミングRuby 第2版

メタプログラミングRuby 第2版

タイトル通りですが...

メタプログラミングはただの言葉。プログラミングであることに違いはない

的なことを本の半分くらいのところで書いてて、「おぉ!」ってなりました(小並み)

「魔術」とか「小難しいもの」という印象がありましたが、「所詮プログラミングでしかない」という考えに痺れました。(所詮、っていう言い方は物議を醸しそうですが)

メタプログラミングと教育

この本読む前は、「メタプロってある程度その言語に精通した人しかわからないから、使いすぎると初心者(的な人)がついていけなくなるんじゃないか?」とか思って、そういう発言をしてしまったりしたんですが、その発想が間違ってたなぁと反省してます。

そもそもそういう人がチームの中にいればちゃんと教えるべきだし、それができない(もしくはついてこれない)ならその人はチームから外さないといけないので、この前提自体がおかしい。

ただ「メタプロは便利だけど使いすぎはダメだし、普通のOOPで解決できることの方がほとんどだからあんま頼りすぎんなよ」とも書かれていて、fmfmとなりました。

あと後半はRailsのソースを例にしてて、「最初から上手くやろうとするな」と以前にも何度か聞いたようなことが書かれていて「はっ!」と我に帰りました。

日々技術トレンドは変わるし、RailsみたいなFWは(いい意味で)ガンガン変更加えてくるし、Rubyも進化していく。サービス(プロジェクト)が対象とする市場環境も変われば、社内のリソースも(スタートアップだと特に)激しく移り変わったりするので、結局その時のリソースに応じて最善を尽くすしかない(or 歯を食いしばる)な、と。

あとは Railsのアーキテクチャ設計を考える | Qiita で紹介されていた trailblazer というgem(及び設計方法)を見てて、「ほうほう良さそうだな〜」「model層のcallback地獄からは脱出できそう」とか考えてましたが、これも最初から導入するというよりは、サービスの規模が大きくなったら(というかコードベースがデカくなってきたら)入れていく、とかでもいいかなと思いました。設計次第で防げる箇所は全然あると思うので。

RailsMVC2だけでやるのつらくね?」っていうレベル感のエンジニアだけで最初から回せるなら、全然導入しちゃっていいと思いますが、経験上そういう会社の方が少ないのでなかなか厳しいかなと思います。まぁコードベース小さいうちは全然素のRailsで上手く回せるしなー

結局コストを回収するタイミングをどこに持っていくか、っていう問題でしかないと思っているので、「つらいよ〜死にたいよ〜」ってなったら「エイやっ!」で移行すればいい...気がする。

という感じで全然締まらないですが『メタプログラミングRuby』はかなり読みやすい本だと思うのでオススメです。

Happy Christmas!!!(無理矢理)