質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

3回答

5295閲覧

rails scaffoldやdeviseのような自動生成メソッドは利用した方がいいですか?

TakumaN

総合スコア120

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2016/06/03 09:42

現在、railsチュートリアル(http://railstutorial.jp)にて、Twitterに似たWebサービスを作るための練習をしているのですが、
このサイトではscaffoldやdeviseに頼らず、一から自分でメソッドを定義していくプロセスで書かれています。

初心者の人にrailsの全体的な仕組みを理解してもらうために、そのように書かれているのだと思いますが、
ある程度仕組みを理解したら、scaffoledやdeviseを利用した方が良いのでしょうか?

一から自分で作っていくか、それともscaffoldやdeviseといった自動生成メッソドを利用するか、どっちの方が良いのですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

scaffoldやdeviseによって何が自動で作られているのか理解しているのであればガンガン使っていけばいいと思いますよ!

自動生成することにより、効率化を図れる他、ミスを無くす、作業者間の実装方法の違いを埋める等の効果が見込めます。

投稿2016/06/03 09:47

k.tada

総合スコア1679

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

「場合による」としか言いようがないと思います。

Railsチュートリアルが使わないで説明しているのは、ご推察の通り、仕組みをよく理解して貰うためだと私も思います。Model、View、Controllerがそれぞれどのようなものなのか、認証システムを作る場合はどうなるべきなのかを知っておかないと、scaffoldが何をするものなのか、deviseで何ができるかが理解することは難しいでしょう。

では、実際になると今作ろうとしているものによるとしか言い様がありません。

例えば、一覧表示や個別編集等のViewを必要としないModelおよびそれ関連するControllerとViewをscaffoldで作るのは無駄が多いです。でも、逆に、一覧表示や個別編集などscaffoldで自動で作られるようなViewを必要とするModelおよびそれに関連するControllerとViewを作るのであれば、scaffoldを使った方が素早くできるでしょう。

他にもカスタマイズをどれだけするのかというのもあります。deviseをほぼそのまま使って問題なければ、deviseを使うのが良いでしょうし、逆に、deviseをカスタマイズしまくるのであれば、deviseに頼らずに一から作った方が良いときもあります。他にも、deviseをforkしたり、devise関連のクラスを継承・拡張したオリジナルを使うという手段もあるでしょうし、devise以外の認証ライブラリ(たとえばsorceryとか)を検討するのもいいかも知れません。

いずれにしてもRailsそのものをよく理解しないと判断できないので、チュートリアルでは使わないで説明していると言うことです。ただ、うまく使えば工数の削減になりますので、どういう仕組みで何が作られるかは見てみると良いでしょう。Railsはその名の通りレールの上に乗っかかった(つまり既定路線な)MVCのWebアプリを作る場合は非常に高速です。scaffoldという電車と線路と駅がセットになっている物を作るものであれば、まさしくすぐにできます。レール通りなのか、どれくらいレールから外れるのか、そういった見極めを最初にできるようになれば、Railsを使いこなせてきていると言っても良いかもしれません。

そうそう、MVCからあまりにもかけ離れたものを作ろうとするのであれば、RailsではなくSinatraを使った方が良いでしょう。線路の上に船を走らせようとするぐらいなら、初めから広い海に浮かべた方が良いですからね。

投稿2016/06/03 20:31

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

サイト中で説明されている理由では納得ができなかったということでしょうか?

コラム1.2 お手軽すぎるScaffoldの甘い誘惑
...
自動生成されたコードは無駄に量が多く複雑で、Rails初心者には向いていません。たとえ運よく動いたとしても、正常に動いている理由を解明するのはおそらく無理です。scaffoldの自動生成コードに頼っている限り、コード自動生成の達人にはなれるかもしれませんが、Railsに関する実践的な知識はほとんど身に付きません。

Ruby on Railsチュートリアルでは、より実践的な知識を身につけるために、Scaffoldとほぼ逆のアプローチで開発を進めていきます。
...

コラム6.1 自分で認証システムを作ってみる
...
自分でわざわざ作らなくても、いつも使える方法をただ利用するだけではいけないのでしょうか。

ある実践的な実験によると、多くのサイトの認証システムは膨大なカスタマイズを必要とするため、サードパーティ製品を変更して導入する場合にはシステムをゼロから作成するよりも多くの仕事を要するという結果が出ています。加えて、既成品のシステムは内部がわかりづらいことが多く、ブラックボックスになっています。自分で作成したシステムであれば、それをとてもよく理解しているはずです。さらに言えば、最近のRailsへの変更 (6.3) により、カスタム認証システムを容易に作成できるようになりました。最後に、あえて最終的にサードパーティの認証システムを導入することになったとしても、自分自身で認証システムを構築した経験があれば、サードパーティ製品を理解して変更することがずっと容易になるはずです。
...

投稿2016/06/03 12:16

編集2016/06/03 14:47
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TakumaN

2016/06/03 12:33

この文は何度も読んでいますが、どっちとも取れるような気がしまして。。。 「自分で作成したシステムであれば、それをとてもよく理解しているはずです。」というところからは、自作システムを推奨しているようにとれますし。 「自分自身で認証システムを構築した経験があれば、サードパーティ製品を理解して変更することがずっと容易になるはずです。」というとこからは、ある程度仕組みを理解したならサードパーティ製品でも大丈夫だよというようにも取れるような気がします。。。 漠然とですが、自作システムは面倒だけど中身が明確だからバグを発見しやすくて、サードパーティは簡単に使用できるけど、中身が不透明な分よくわからない不具合が多いのかなという風に解釈してますが、どうなんでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問