質問: Railsを使用しWebサービスを製作している物です。 日頃Railsを使用していてERBの存在意義があまり見えません。 ERBそのものというより、MVCフレームワークでのViewの立ち位置が、あまり入らないのではないかと思います。 ### 良いと思う点 * 簡単なアプリケーションなら実装しやすい * ルーティングを設定するだけでControllerとViewの関連付けを簡単に行える * テンプレート内でModel内のメソッドの呼び出しができる(Active Recordが使える) ### 悪いと思う点 * アプリケーションが大きくなってくると、ControllerとViewとの関連付けが、難しく理解しにくくなる * Controllerでインスタンス変数にセットした値がどのような物か分からなくなる。確認作業が多くなる * Viewに渡される値(インスタンス変数)などはRuby, Rails独自の記述方法で制約が多く、データの加工が難しい 「Controllerでこの値をViewに送って、今度このViewから次の遷移先の次のControllr、Viweに値を引き継ごう」のなどのような複雑怪奇なことが起こってしまい、結果汎用性も可読性もない、スパゲッティーコードになってしまいます。 そこれRailsはAPIサーバとしてのみ使用し、すべての値をJSONで返すということをすれば、可読性の良いいいコードになっていくのではないかと思います。 しっかりとRailsを理解しView, Controllerを使えれば問題ないのですが、RailsのMVCは一度に考えなけらばならないことが多く、頭がパンクしてしまいます。なので、APIサーバとして一つ一つの役割を切り分け分業した方が、良いと思いました。 みなさんのご意見・アドバイス等伺いたいです。よろしくお願い致します。
回答: もちろん、そういう使い方をしたければ、RailsをAPIに専念させても大丈夫です。Rails 5では、公式に「APIモード」が用意されるに至っています。 なお、Webサービスで「サーバサイドはAPIに専念して、フロントエンドはほぼ全てJavaScriptで構築する」というのが実用的になってきたのは、ここ数年の話だということは意識しておいたほうがいいでしょう(Reactの初版が2013年、Angularの初版が2010年です)。それ以前は、「サーバサイドで全て構築する」手段しかありませんでした。 あと、1点気になったことがありますが、「Viewに渡される値(インスタンス変数)などはRuby, Rails独自の記述方法で制約が多く、データの加工が難しい」というのは、ちょっとわかりませんでした。ERBにはふつうのRubyとして書けるものはなんでも書けますし、Railsのモデルに自分でメソッドを自由自在に生やせるので、むしろJavaScriptで書くより便利ではないか、というのが自分としての感覚です。