Simple, Slowly

ブログを引っ越ししました。http://48.jp

Railsをディスろうとしたけれど、素晴らしかった

先週からRailsを使うプロジェクトに配属になって、Railsを触るようになりました。
RailsRubyも趣味で少しだけ書いたことがある程度で、仕事では使ったことがなく最初は不安でした。

実際のところ、思っていたよりもすんなりとRailsに馴染めている気がします。
Railsを触って感じたことを簡単にまとめておこうと思います。

f:id:sho-yamasaki:20140208232524j:plain

Railsを触りだして感じているのは、開発のストレスが減ったことです。
それにはいくつかの要因があるのですが、その一つとして記述量の少なさがあります。

もともとRubyは短く簡素に書けるように設計されている言語です。
さらに必要に応じてGemを使うこともできます。
数行で必要な機能が実装できたりして、ここまで楽に開発ができたことは今までにないと思います。

ストレスが減ったもう1つの要因として、テストが容易に書けるということがあります。
RSpecは宣言的にテストコードを書くことができて、可読性がとても高いです。
また、柔軟なモックの機能やletメソッドが便利です。

衝撃的だったのは、メール送信のテストがいとも簡単に書けてしまうということ。
今まではメールのテストを楽に書く方法がわからなくて書く気になれなかったのですが、Railsはメールのテストも簡単に書くことができました。

とりあえず、今のところRailsをディスす要因がこれといって見当たりません。

気になったところとしては、覚えることが多いということ。
Rails自体もそうですし、Railsは様々なライブラリを利用することができるようになっています。
例えば、RSpecやFactoryGirl、Capybara、CoffeeScript、Slim。
これらはDSLでそれぞれが独自の仕様で実装されており、それぞれの使い方を覚えないといけません。
その学習コストがどうしてもかかってしまいます。
僕みたいなズボラな人間には、つらいものです。

あと、ちょっと気になっているのが、モデルが増える傾向にあるということです。
参考にいくつかのサービスのコードを覗いてみたのですが、どのサービスもモデルが膨張していて、モデルの全貌を把握するのが難しく感じました。

機能を抽象化してGemにする、モジュールとして実装する、ActiveSupportのConcernを利用するなど方法はありそうですが、これといった決定打がなくて、もやっとしています。

よい解決方法があれば教えてほしいものです。