Rails

【Rails】秒速でアプリケーション開発できる、scaffoldの使い方を簡単にまとめてみた

Rails

 

今回は、手っ取り早くアプリケーションを開発することができるRailsの機能、scaffold(スキャフォールド)について簡単に解説したいと思います。コマンド1つでMVCを自動的に作成してくれる便利な機能ですが、頭を使わずにアプリケーションが作れてしまうため、Rails初学者は学習のためにも使用しないことをおすすめします。

この記事はMVCの流れを完全に理解しているRails中級者向けです。

scaffoldとは

scaffoldとは、Railsアプリケーションに必要なルーティング・コントローラー・モデル・ビューまとめて作成してくれる機能のことで、個人開発やアプリケーション開発の練習としてよく用いられます。

scaffoldを使用するコマンドは以下のようになります。scaffoldでは引数に対応したテーブル定義や、モデルクラス、そのモデルに対応するCRUD操作を行うためのルーティングやビューが生成されます。

$ rails g scaffold モデル名 カラム名
CRUDとは、データ処理の基本的な処理であるCREATE(生成)/READ(読み取り)/UPDATE(更新)/DELETE(削除)を総称したものです。

 

ちなみにscaffoldを直訳すると「(建設現場などの)足場」という意味になります。

Railsでアプリケーションの骨組みを作り、scaffoldで足場を固めるってイメージかな。

scaffoldの使い方

では実際にscaffoldを使って簡単なアプリケーションを作成してみましょう。まずは以下のコマンドで、新規アプリケーションを立ち上げます。

$ rails new scaffold-app -d mysql

今回開発するアプリケーションの環境は以下のようになります。

  • アプリケーション名:scaffold-app
  • Rails:6.0.3.1
  • Ruby:2.6.5
  • DB:MySQL

 

では次に、scaffoldのコマンドを使って必要なファイルを一括で生成してみましょう。今回はArticleモデルとurlカラム・postカラムを作成し、簡単な投稿機能を持ったアプリケーションを開発していきます。

先ほど作成したscaffold-appのディレクトリに移動し、以下のコマンドを打ち込みましょう。

$ cd scaffold-app
$ rails g scaffold Article url:string post:string

 

するとこのようにコードの雛形が一括生成されるはずです。

Running via Spring preloader in process 39573
      invoke  active_record
      create    db/migrate/20200615114159_create_articles.rb
      create    app/models/article.rb
      invoke    test_unit
      create      test/models/article_test.rb
      create      test/fixtures/articles.yml
      invoke  resource_route
       route    resources :articles
      invoke  scaffold_controller
      create    app/controllers/articles_controller.rb
      invoke    erb
      create      app/views/articles
      create      app/views/articles/index.html.erb
      create      app/views/articles/edit.html.erb
      create      app/views/articles/show.html.erb
      create      app/views/articles/new.html.erb
      create      app/views/articles/_form.html.erb
      invoke    test_unit
      create      test/controllers/articles_controller_test.rb
      create      test/system/articles_test.rb
      invoke    helper
      create      app/helpers/articles_helper.rb
      invoke      test_unit
      invoke    jbuilder
      create      app/views/articles/index.json.jbuilder
      create      app/views/articles/show.json.jbuilder
      create      app/views/articles/_article.json.jbuilder
      invoke  assets
      invoke    scss
      create      app/assets/stylesheets/articles.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.scss

 

続いて以下のコマンドでデータベースの立ち上げとマイグレートを行います。

$ rails db:create
$ rails db:migrate

 

では「rails server」でサーバーを立ち上げ、実際にどのような挙動をするのか見てみましょう。しかし今の状態でloacalhost:3000にアクセスしても、Railsの初期画面が表示されるだけかと思います。

$ rails s
Rails初期画面

 

この原因は、アクセス先(URL)が間違っているためです。「rails routes」を実行し、どのURLにアクセスすればいいのか確認しましょう。

$ rails routes
rails routesの出力結果
見づらい場合は画像をクリックすると拡大できるよ。

 

2行目に着目してください。2行目の出力結果から分かるように、GETメソッドで/articlesにアクセスすることでarticlesコントローラーのindexアクションを作動させることができます。

では実際に「localhost:3000/articles」と打ち込んでみましょう。このようなビュー(indexページ)が表示されるはずです。

indexページ

 

「New Article」を押すと、URLとPOSTを入力できる画面に遷移すると思います。

URLとPOST

 

ここでURLとPOSTを入力し「Create Article」をクリックすると、トップページにそれらの情報が表示されるようになります。

トップページ

 

このようにscaffoldの機能を使えば、簡単なアプリケーションをサクッと作ることができます。今はシンプルですが、ここに画像投稿機能をつけたり、いいね機能をつけてみたり、ビューをアレンジしてみたりとカスタマイズも無限大です。

動作確認

では最後に、先ほど作成したアプリケーションがどのような挙動をするのか見ていきましょう。

Image from Gyazo

まとめ

  • scaffoldとは、Railsアプリケーションに必要なルーティング・コントローラー・モデル・ビューまとめて作成してくれる機能のこと
  • scaffoldの記述方法は「rails g scaffold モデル名 カラム名」となる
  • CRUDとは、データ処理の基本的な処理であるCREATE/READ/UPDATE/DELETEを総称したもの

 

 

今回は手っ取り早くアプリケーションを開発することができるscaffold(スキャフォールド)の使い方について解説しました。新しい機能実装をテストしてみたい、すぐにでもアプリケーションを立ち上げたいといった場合に便利な機能なので、このように簡単に開発ができることをぜひ覚えておいてください。