Rails scaffoldの使い方とメリット・デメリット【初心者向け】

プログラミング
Rails scaffoldはジェネレーターの一種であり、MVCフレームワークのテンプレートとなるファイルを作成してくれるものであることを説明します。またscaffoldを使うことによる、メリットとデメリットについて解説します。 次にscaffoldの実際の使い方と、自動的に生成されるファイル群、さらにコマンドを使ってファイル群を削除する方法についても説明します。最後にscaffold controllerについての解説を行います。
Rails scaffoldの使い方とメリット・デメリット【初心者向け】

scaffoldはRuby on Railsのテンプレートを自動で作成してくる、とても便利なツールで「足場」や「土台」という意味から来ています。

この記事ではRuby on Railsでより高速にWebサービス開発ができる、ジェネレーターscaffoldについての解説と使い方を説明します。 今日はMVCフレームワークを使ったWeb開発手法が主流となっていますので、MVCテンプレートを用意してくれるscaffoldを学ぶ意義は大きいです。 それでは見ていきましょう。

Rails scaffoldとは

scaffoldとはRuby on Rails上で、MVCフレームワークのテンプレートとなるファイルを作成してくれるジェネレーターです。scaffoldという言葉自体の意味は「土台」を意味しています。テンプレートファイルはWeb開発フレーワークにおける土台といっても過言ではないので、まさに言葉どおりのジェネレーターといえます。

scaffoldを使い、準備されたテンプレートファイルを利用することで、より迅速なサービス開発ができるようになります。これは当然のことで、1からすべてを作成するよりも、あらかじめ用意されている枠を作るための時間が短縮できるからです。

またMVCモデルに沿ってサービスを開発することは、チーム内で開発するにあたって、とても便利なものです。なぜならチームメンバー全員が、共通の設計思想に則って開発を行うため、設計を決めるときに意見のすれ違いが起こる可能性がぐっと減ります。

Rails scaffoldを使うメリット・デメリット

scaffoldはとても便利なジェネレーターです。Ruby on Rails上に、MVCモデルに沿ったファイルをあらかじめ作成してくれるからです。工事でいえば、基礎設計と土台作りが終わった状態です。そのため基礎の設計や設定が終わった状態をほんの数分で作ることができます。scaffoldの本来の意味が「足場」ですので、まさにぴったりなイメージです。

その一方、デメリットも存在します。それはMVCモデルを理解していない初心者の人がRailsを使ってアプリを使うとき、あやふやな知識のままでもサービスを作れてしまうことです。

理解が浅くてもサービスが作成できてしまうことは、素晴らしいツールであるともいえますが、エンジニアが自力をつけていくことを考えるとデメリットになります。ですので初心者の方は、scaffoldを使わずにサービスを作成してみることをオススメします。一度サービスを作ると、MVCの考え方が理解できてきますので、ある程度Ruby on Railsの知識がついてからscaffoldを使う方が将来的に学習の近道になります。

Rails scaffoldの使い方

ここではscaffoldの使い方を解説します。また、scaffoldを実行することで、どのようなファイルが生成されるのかも解説します。

コマンドの使い方

コマンドは

 rails generate scaffold モデル名

もしくは

 rails g scaffold モデル名

で実行します。 また、モデル名のあとにカラム名:データ型を追加で指定することもできます。

生成されるファイル

生成されるファイルは以下のとおりです。Model、View、Controllerに関連するファイルが自動的に生成されているのがわかります。

  • db/migrate/YYYYMMDDHHMMSS_create_モデル名.rb
  • app/model/モデル名.rb
  • app/views/モデル名/index.html.erb
  • app/views/モデル名/edit.html.erb
  • app/views/モデル名/show.html.erb
  • app/views/モデル名/new.html.erb
  • app/views/モデル名/_form.html.erb
  • test/controllers/モデル名_controller_test.rb
  • app/helpers/モデル名_helper.rb
  • test/helpers/モデル名_helper_test.rb
  • app/views/モデル名/index.json.jbuilder
  • app/views/モデル名/show.json.jbuilder
  • app/assets/javascripts/モデル名.js.coffee
  • app/assets/stylesheets/モデル名.css.scss
  • app/assets/stylesheets/scaffolds.css.scss

scaffoldによって作成されたファイルを削除するやり方

rails generate (g) scaffoldで 作成したファイルはコマンドから削除することができます。
scaffoldで作ったファイルを削除する際のコマンドは、以下のとおりです。

 rails destroy モデル名

作成したファイルを削除するケースはさまざまですが、一番多いケースはモデル名を間違って作成してしまった場合です。 ただ、destroyコマンドを使うと rails generate (g) scaffold で作成したファイルをすべて削除してしまいます。別のケースとして、Model関連のファイルは削除したいが、ControllerやViewは残したいというケースもあるでしょう。

そのような場合は、以下のコマンドでModelに関連するファイルのみを削除できます。

  rails destroy model モデル名

また、Controller、Viewのみ削除した場合は以下のコマンドを実行すればOKです。

  rails destroy controller モデル名
  rails destroy view モデル名

Rails scaffold Contollerについて

場合によっては、Modelだけ先にすでに存在していることもあります。このようなときは、Rails scaffold Controllerが便利です。 Rails scaffold Controllerを実行すると、Model以外のファイルを作成してくれます。

コマンドは以下のとおりです。

  rails generate scaffold controller モデル名

まとめ

本記事ではscaffoldの意味からはじまり、使い方と学習におけるメリット・デメリットについて解説しました。 また、scaffoldによって生成されたファイルをコマンドからすべて削除する、または一部削除する方法について触れました。
さらにrails scaffold controllerによって、MVCモデルのViewとControllerだけを生成する方法にも触れました。「scaffold」または「scaffold controller」を理解して使いこなすことで、よりRuby on Railsを楽しめるようになるでしょう。

この記事のキーワードに関する勉強会・イベントを探す

TECH PLAYでは、ITエンジニア向けの勉強会・イベント情報を提供しています。
興味のある方はぜひご参加ください。


おすすめのコラム