現在、railsチュートリアル(http://railstutorial.jp)にて、Twitterに似たWebサービスを作るための練習をしているのですが、
このサイトではscaffoldやdeviseに頼らず、一から自分でメソッドを定義していくプロセスで書かれています。
初心者の人にrailsの全体的な仕組みを理解してもらうために、そのように書かれているのだと思いますが、
ある程度仕組みを理解したら、scaffoledやdeviseを利用した方が良いのでしょうか?
一から自分で作っていくか、それともscaffoldやdeviseといった自動生成メッソドを利用するか、どっちの方が良いのですか?
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答3件
3
scaffoldやdeviseによって何が自動で作られているのか理解しているのであればガンガン使っていけばいいと思いますよ!
自動生成することにより、効率化を図れる他、ミスを無くす、作業者間の実装方法の違いを埋める等の効果が見込めます。
投稿2016/06/03 09:47
総合スコア1679
2
ベストアンサー
「場合による」としか言いようがないと思います。
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
総合スコア21705
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
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総合スコア22312
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
Q&A
受付中
インスタンスを使用して複数の商品の合計金額を出す方法について教えてください
回答1
クリップ0
更新
2023/06/03
Q&A
解決済
LinearLayoutでボタンを等間隔で横に並べる
回答1
クリップ0
更新
2023/05/31
意見交換
受付中
Javaの抽象クラスとインタフェースの使い分け
回答3
クリップ1
更新
2023/06/01
Q&A
解決済
ハンバーガーメニューの挙動について(transitionが、もとに戻る時には適応されない)
回答2
クリップ0
更新
2023/06/02
Q&A
解決済
spring bootで新規登録機能を作成したい。
回答1
クリップ0
更新
2023/06/02
意見交換
クローズ
プログラミングの設計が分からない
回答24
クリップ11
更新
2023/04/17
Q&A
解決済
Ajaxでフォームの内容をPHPに渡してPDFを作成し文字列を引き渡し、受け取った文字列をjavascriptでPDF化したい
回答2
クリップ0
更新
2023/06/02
Q&A
解決済
【PC】横スクロール可能なボックスを複数並べ、その全てのボックス内においてマウスホイールでの横スクロール操作をしたい
回答2
クリップ0
更新
2023/06/01
同じタグがついた質問を見る
Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。