• WebCampPro_インタビュー
    未経験から上京し、エンジニアとしてチームラボグループに転職!【WebCampPro卒業生インタビュー】
    2018.03.10
  • WebCampPro_インタビュー
    未経験でも寿司職人からWebデザイナーになった!ホスピタリティでスクールを支える宮脇トレーナー
    2017.05.26
  • WebCamp_インタビュー
    「自信の持てるスキルを得たい!」内定辞退した女子大生がプログラミングを学習したワケ。
    2018.04.28
  • WebCamp_インタビュー
    時間や場所にとらわれず自由に働くために必要なスキルとは?【WebCamp卒業生インタビュー】
    2018.01.26
  • WebCamp_インタビュー
    【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
    2018.01.15
  • WebCampPro_インタビュー
    未経験31歳からエンジニア転職を実現【実際に聞いてみた】
    2017.04.01
  • WebCamp_インタビュー
    【卒業生インタビュー】台湾で月間100万UUの訪日旅行メディアを手掛けるCEOが、プログラミングを学んで得たものとは?
    2018.01.15
  • WebCampPro_インタビュー
    自分で稼ぐ力をつけるため、新卒5年目の営業マンがエンジニアに転職!【WebCampPro転職者インタビュー】
    2018.02.02
  • WebCamp_インタビュー
    「1カ月頑張ればこの先が見えてくる」地元メディアを立ち上げたママさん
    2017.07.20
  • WebCamp_インタビュー
    “未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
    2017.10.04
  • WebCamp_インタビュー
    【WebCamp受講生インタビュー】起業準備中にCEOが気がついたプログラミングスキルの重要性とは?
    2017.12.25

◆当サイトで人気のプログラミング教室のおすすめランキングはこちら!
プログラミングは独学では非効率で、時間を無駄にするリスクがあります。効率的なカリキュラムで学べるスクールを受講しましょう。

Web Camp【マンツーマンサポート】1ヶ月短期集中でプログラミングを学ぶスクール
1ヶ月通い放題・メンター常駐の教室環境でWebサービス等作りたい方
TechAcademyオンラインで開講しているプログラミングスクール
オンラインでどこでも学べる!/教室に行くのが忙しい人でも安心!
Tech Camp教養としてのITスキルを学べるスクール
Webデザイン/AI(人工知能)/IOS/Androidアプリ制作/VRを学びたい方!
WebCampPro転職保証付き!エンジニアとして転職したい人におすすめ!
未経験からプロのエンジニアを3ヶ月で目指すプログラミングスクールです。
11月生募集中!当社人気の転職保証コース
プログラミング学習から転職成功まで導く、当社人気のWebCamp Proコース。
10月生は満員となっております。11月生募集に向け、お早めの申込みをオススメします。
プログラミング未経験でもエンジニア転職を絶対成功させたい
スキルを身に着けて人生を自ら切り開きたい
上記にあてはまる方は、ぜひご検討ください!

はじめに

Railsは「rails new」コマンド1つでWebアプリケーションに必要な最低限のファイルを生成して、ひな形を作ってくれます。

そのため、Rubyや他の言語から移ってきた人は、その簡単さに拍子抜けしてしまうほどです。

しかし、「rails new」コマンドでは、まだWebアプリケーションとしてカバーしておくべきRESTfulな機能のすべてが揃うわけではありません。もっと、より実用的で汎用的なWebアプリケーションを作るためには、まだまだファイルを追加して実装していく必要があるのです。

そのため、Railsアプリケーションを作ってみたけれども、一般的なWebアプリケーションとかけ離れた構成になってしまい、他の人からはとても読みにくいプログラムになってしまうことがあります。

そんなときは、「scaffold」を使ってみましょう。

RESTfulなWebアプリケーションのひな形を作ってくれる「scaffold」であれば、基本的なベースはできていますので、自分の実装したい機能に集中して開発することができます。

もちろん、初心者が「動くWebアプリケーション」をもとに、動かしながら学習するのにも、scaffoldはうってつけです。

今回は、そんな「scaffold」について、詳しく解説していきます。

scaffoldでお手軽Webアプリケーション

scaffoldは、Railsアプリケーションに以下の4つの機能を追加してくれるコマンドです。

機能 説明
create 新規作成
read 読み出し
update 更新
destroy 削除

これらの機能は、Webアプリケーションの基本だと言われていますので、ほとんどの場合、「作らなければいけない」ものです。

しかし、「rails new」で作成したRailsアプリケーションは、「You're on Rails!」の画面を表示するだけですのです。そんな状態のRailsアプリケーションに上記の機能を追加するのは、初心者にはハードルの高いものでしょう。(初心者でなくても、面倒なものです)

それを、scaffoldはコマンド1つでやってくれますので、とても心強い味方と言えます。

では、実際に動かしながら詳細を確認していきましょう。

scaffoldの使い方

scaffoldは、Railsアプリケーションに上記の機能を追加するものですので、まずは通常通りにプロジェクトを作成します。

ここでは、「C:\Rails」に作成することにしますので、ディレクトリを移動します。

cd C:\Rails

そして、Railsアプリケーションを作成しましょう。「scaf_test」という名前にします。

rails new scaf_test

ここまでで、Railsアプリケーションのひな形ができましたので、ディレクトリ移動します。

cd scaf_test

この状態で、サーバー起動して、「localhost:3000」などにアクセスすれば、見慣れた画面を見ることができるでしょう。念のため、確認しておきます。

rails s

サーバーが起動しているのを確認して、ブラウザ上で「localhost:3000」へアクセスすれば、「You're on Rails!」画面が表示されることを確認してください。

ここまでは前準備です。(念のため、サーバーは停止してください)

では、実際にscaffoldを使ってみます。ここでは、氏名とメールアドレス、電話番号を登録するWebアプリケーションを作ってみます。

まずは以下のコマンドを入力してみてください。

rails generate scaffold User name:string email:string phone:string

以下のようなメッセージが表示され、前述した4つの機能を実現するディレクトリやファイルが生成されました。

rails generate scaffold User name:string email:string phone:string
      invoke  active_record
      create    db/migrate/20180916061510_create_users.rb
      create    app/models/user.rb
      invoke    test_unit
      create      test/models/user_test.rb
      create      test/fixtures/users.yml
      invoke  resource_route
       route    resources :users
      invoke  scaffold_controller
      create    app/controllers/users_controller.rb
      invoke    erb
      create      app/views/users
      create      app/views/users/index.html.erb
      create      app/views/users/edit.html.erb
      create      app/views/users/show.html.erb
      create      app/views/users/new.html.erb
      create      app/views/users/_form.html.erb
      invoke    test_unit
      create      test/controllers/users_controller_test.rb
      create      test/system/users_test.rb
      invoke    helper
      create      app/helpers/users_helper.rb
      invoke      test_unit
      invoke    jbuilder
      create      app/views/users/index.json.jbuilder
      create      app/views/users/show.json.jbuilder
      create      app/views/users/_user.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/users.coffee
      invoke    scss
      create      app/assets/stylesheets/users.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.scss

ただし、このままではまたデータベースにテーブルができていませんので、テーブルを作成するために次のコマンドを実行します。

rake db:migrate

この工程は忘れがちなので、注意してください。

ここまでで、scaffoldを使って基本的な機能を実装したRailsアプリケーションが完成しました。

scaffoldの構文

先ほど実行したコマンドの構文を説明しておきましょう。

rails generate scaffold モデル名 カラム名:型 カラム名:型 カラム名:型 ..

モデル名は、扱うデータの名称だと考えれば分かりやすいでしょう。この名称をもとにデータベースにテーブルが作成され、ViewやControlなども生成されます。

そのあとに、空白区切りで、「カラム名:型」が続きます。これがデータベースに登録するデータになります。(「カラム名:型」の数に制限はありませんので、必要なだけ追加しておきましょう)

カラム名はフィールド名や属性などと呼ばれますが、この名称を使ってデータベースの値を取得、設定します。

型は、値の型です。整数や文字列、日付など、格納するデータに合わせたものを設定しておきましょう。型については、以下のように数種類あります。

説明
string 文字列
text 改行を含む長い文字列
integer 整数
float 浮動小数
decimal 精度の高い小数
datetime 日時
timestamp より細かい日時
time 時間
date 日付
binary バイナリデータ
boolean Boolean型

未経験から上京し、エンジニアとしてチームラボグループに転職!【WebCampPro卒業生インタビュー】
2018-03-10 14:42
今回の記事では、たまたま見たテレビ番組がきっかけでエンジニアに興味を持ち、WebCampProを受講して見事転職を決めた中村さんにインタビューしました。 <プロフィール> 中村 駿...

テスト実行

早速、サーバーを起動してアクセスしてみましょう。ただし、ルート設定は変更されていませんので、「localhost:3000」にアクセスしても、変化はありません。

scaffoldは、機能追加しますが、画面遷移などについてはまったく関知しませんので、その点はプログラムするなり設定変更しなければいけません。そのため、今のところは、追加された機能の画面に直接アクセスします。

なお、追加された画面は「app/view」に追加されたディレクトリの中に格納されているerbファイルです。今回は、usersディレクトリが追加され、その中に以下の4つのファイルが生成されています。

app/views/users/index.html.erb # 一覧表示(read,destroy)
app/views/users/edit.html.erb  # 編集(update)
app/views/users/show.html.erb  # 詳細表示(read)
app/views/users/new.html.erb   # 新規登録(create)
app/views/users/_form.html.erb # 編集や登録などのフォームのベース

これらが、追加された4つの機能と入力フォームを実現するファイルです。

なお、追加されるディレクトリ名やその他のファイルに付加される文字列は、scaffoldで指定したモデル名の複数形になりますので、覚えておいた方がスムーズに理解できるでしょう。

では、一覧表示画面にアクセスしてみましょう。一覧表示はindex.htmlですので、usersディレクトリにアクセスすれば自動的に表示されます。

ブラウザで、「localhost:3000/users」にアクセスしてください。

残念ながら、まだ登録していませんので、一覧は空欄で以下のようにタイトルだけが表示されています。

「New User」というリンクで、新規登録画面へ遷移しますので、そこで登録してみましょう。

登録すると、詳細表示画面へ遷移します。

「back」のリンクをクリックすれば、一覧画面へ遷移し、登録されていることが分かります。

「Edit」のリンクをクリックすれば、編集画面へ遷移しますし、「Destroy」のリンクをクリックすることで、削除もできるようになっています。

画面はとてもシンプルで最低限のものですが、このように4つの機能がコマンド1つで搭載されました。

追加されたファイル

scaffoldの動作は確認できましたので、ここから詳細を見ていくことになりますが、その前に追加されたファイルをまとめておきます。

前述したViewの5ファイル以外にも、重要なファイルがいくつも追加されていますので、前述したscaffoldコマンド実行時の出力結果をもとに紹介しましょう。

モデル、データベース関連

まず、モデルとマイグレーションファイルです。

db/migrate/20180916061510_create_users.rb  # マイグレーションファイル(データベースへのアクセスの要です)
app/models/user.rb                         # モデルファイル(各種の処理を記載する処理の中心になるファイルです)

モデルは、Railsアプリケーションの中心となる考え方の1つで、データベースとのやりとりを行う機能を実装します。そのため、様々な処理をこのファイルに追記することになるでしょう。

テスト関連

Railsは、標準でテスト用の環境を提供してくれています。scaffoldでも同様に、テスト用の処理を記載するファイルとサンプルデータを格納するファイルを生成します。

test/models/user_test.rb                   # モデルのtest環境用のテスト処理ファイル
test/fixtures/users.yml                    # test用サンプルデータ
test/controllers/users_controller_test.rb  # コントローラのtest環境用のテスト処理ファイル
test/system/users_test.rb                  # システムtest環境用のテスト処理ファイル

ルート設定

ファイルではありませんが、「config/routes.rb」に以下の定義を追加し、HTTPリクエストとURLによって、処理するアクションを登録しています。

resources :users

※詳しくは、【Rails入門説明書】routesについて解説を参照してください

コントローラ関連

Railsのもうひとつの重要な機能がコントローラです。コントローラはブラウザとView、モデルとの仲立ちをする機能ですので、このファイルにも、様々な処理を記述することになります。

app/controllers/users_controller.rb

ビュー関連

Railsの3つの中心的な機能の最後が、ビューです。表示関連の処理をまとめているビューのファイルは、Railsアプリケーションの印象やUIに大きな影響を与える部分ですので、最後まで調整されることの多いファイルです。

app/views/users
app/views/users/index.html.erb
app/views/users/edit.html.erb
app/views/users/show.html.erb
app/views/users/new.html.erb
app/views/users/_form.html.erb

ヘルパー

ヘルパーを活用することで、ビューのメンテナンス性が格段に上がります。usersのビューで繰り返し記載するようなHTMLがあれば、このファイルにヘルパーを追記することで、変更に強いWebアプリケーションにできます。

app/helpers/users_helper.rb

SCSS

表示画面のスタイルを設定するCSSがまとまっているファイルです。こちらも、ビューの変更に合わせて修正することが多くなるでしょう。

app/assets/stylesheets/scaffolds.scss

その他

これらのファイルは基本的に変更するシーンはあまりないかもしれませんが、jsonのテンプレートやjavascriptなどを修正や処理追加する場合は、これらのファイルを参照することになります。

app/views/users/index.json.jbuilder
app/views/users/show.json.jbuilder
app/views/users/_user.json.jbuilder
app/assets/javascripts/users.coffee
app/assets/stylesheets/users.scss

コツコツ独学×スクールで実践。未経験からエンジニアに転職!【WebCamp卒業生インタビュー】
2018-03-22 23:28
今回の記事では、独学でPHPを1年半学習し、その後WebCampを受講して未経験からエンジニアへと転職された佐々木さんにお話を伺いました。 <プロフィール> 佐々木 祐樹 さん(2...

scaffoldはRESTfulなWebアプリケーションを作る

ここまでで、scaffoldの使い方と詳細を説明しました。

しかし、scaffoldはなぜ4つの機能を簡単に追加できるようにしているのかが分からなければ、ただの便利機能に過ぎません。

ここからは、scaffoldの存在意義について、解説していきましょう。

CRUD?

scaffoldが追加してくれる機能は、冒頭で紹介した以下の4つです。

機能 説明
create 新規作成
read 読み出し
update 更新
destroy 削除

scaffoldが追加しているこれらの機能は、それぞれの頭文字をとって「CRUD」と呼ばれており、Rails以外のWebアプリケーションでも、標準的に採用されています。

それは、この4つの機能がWebアプリケーションの基本となる機能だからです。

つまり、Webアプリケーションの大前提として、CRUDに対応しているわけです。そうすることで、自分が関与していないWebアプリケーションを操作したり解析したりする場合に、余計な調査や確認をすることなく、扱うことができるようになります。

こういった、Webアプリケーション全体で共通の仕様のようなものをRESTと呼びます。

RESTというのは、数多くのWebアプリケーションで採用されているガイドラインで、上述のようにWebアプリケーション全体の開発効率を上げるために提唱されました。

このRESTに対応したWebアプリケーションのことを「RESTfulなWebアプリケーション」と呼びます。

なお、RESTfulの条件には、CRUDの実装以外に、ブラウザからの呼び出しにどう対応するかという点もあります。それは、HTTPリクエスト(GET、POST、PUT、PATCH)+URLをもとに、適切な処理を施すということです。

その点についても、scaffoldは抜かりなく、「config/routes.rb」に追記されている「resources :users」で対応しています。(routesの詳細は【Rails入門説明書】routesについて解説を参照してください)

つまり、scaffoldはRESTfulなWebアプリケーションを作るためのひな形を作ってくれる機能というわけです。

“未経験”でもたった1ヶ月で営業からエンジニアとして転職!『WebCamp』受講者インタビュー
2017-10-04 10:26
今回の記事では、未経験からWebCampを1ヶ月受講し、その後エンジニアとして転職をした喜田さんにお話を伺いました。 <プロフィール> 喜田 大介 さん (28歳) 大学時代はプ...

scaffoldは、初心者は使うな?

scaffoldについて検索していると、scaffoldは「初心者が使わない方が良い」といった趣旨のサイトに出くわすことがあります。

これは、なぜなのでしょうか?

答えは簡単です。

scaffoldが、「Railsで重要なMVC(Model-View-Controller)についてすべて自動で準備してくれる」からです。

scaffoldを使うことで、MVCを理解せずとも、決まったファイルに処理を記載することで、それなりに動くRailsアプリケーションを作ることができます。

そのため、Railsの中心的な考え方をきちんと理解することなく、表面的な小手先の技術ばかりの学習をして、中級者技術者になったつもりになってしまうことに、警告を発しているのです。

もちろん、サービスを提供するためには、表面的な部分も重要です。むしろ、一般の人たちを訴求するには、そこに力を入れるのは当然かもしれません。

しかし、プログラムというのは、1つの処理を実現する方法がいくつも存在するものです。そのため、中心となる考え方を理解していなければ、最適な実現手段を選択することができず、思わぬ不具合を生んでしまうことが少なくありません。外部とのやりとりが多くなりがちなWebアプリケーションであれば、なおさらでしょう。

そのため、中心となる考え方が理解できていない間は、scaffoldのような自動生成される仕組みを使わない方が良い、ということなのです。

しかしながら、自動で最適な実装のひな形を使ってくれるscaffoldを使うことで、MVCの正しい姿を学習することも可能とも言えます。

自動で作れるものは自動で作り、正しい形を見て理解を進めるという方法も悪くありません。

ぜひ、ツールをうまく作って、効率よく学習を進めていきましょう。

まとめ

Railsのscaffoldについて、解説しました。

scaffoldは、とても手軽にRailsアプリケーションにデータベースとのアクセス機能を追加してくれる便利なツールです。

もちろん、すべてのRailsアプリケーションで利用できるわけではありませんが、RESTfulなWebアプリケーションのひな形を自動で作ってくれるというのは、とても効率の良いことです。

特に、Railsの学習を進めるときに、余計な失敗をして時間を使ってしまうようなこともなく、スムーズに学習環境を整えられるというのは、大きな利点でしょう。

ぜひ、scaffoldをうまく活用して、Railsの学習を効率よく進めていきましょう。


・scaffoldはRailsアプリケーションにCRUD機能を追加する
・Railsアプリケーションを生成してから、scaffoldを導入する
・scaffoldを導入したあと、「rake db:migrate」を忘れないこと
・RESTfulなWebアプリケーションには、CRUD機能とHTTPリクエスト+URLで処理を分岐する機能がある
・手を抜くためではなく、正しい姿をしっかりと理解するために、scaffoldを活用すること

WebCampOnline プログラミングコースについて

WebCampでは、「どこでも学べる」オンラインコースを開講しています。

初心者・未経験の方でもわずか1ヶ月でプログラミングの基礎を学び、アプリケーション開発をすることができます。

WebCampOnlineが選ばれる3つの理由

1.学習の仕方がわからなくても安心!初心者に寄り添った学習カリキュラム

これから学習を始める初心者の方や、独学で挫折してしまった方に向けて、アプリケーション作成をゴールとする一気通貫したカリキュラムを提供しています。2500名を輩出しているWebCampだからこその教室でのリアルな受講生の声を反映し、オンラインコースでも初心者に寄り添った学習体験をご提供いたします。

2.つまずいたらすぐ解決!プロのエンジニアに質問し放題

プログラミング学習で挫折する理由の多くは「つまずいた時に聞ける人がいない」ことです。オンラインコースでは、現役エンジニアやプロ講師に、すぐにチャットでの質問が可能です。つまずきをすぐに解消できるので、挫折せずに学習を継続することができます

3.1ヶ月間で終わらなくても大丈夫!カリキュラムは"卒業後"も"無料"で利用可能

受講したいけど、仕事が急に忙しくなるかもしれないから受講するか迷っている・・・そんな方も多いのではないでしょうか?ご安心ください。カリキュラムは期間終了後も「無料」で使うことができます。また、しっかり学習時間を確保した方も、振り返って学習することでプログラミングスキルがご自身に馴染んできます。

▼まずは無料でWebデザインのカリキュラムを体験しよう!

【インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!

ブラジルから帰国し技術をつけようとRubyエンジニアを目指してWebCampでRubyを学び、見事Webエンジニアとして転職を果たした田中さんにお話を伺いました。

Rubyの学習がしたい。基礎をしっかりと理解したい

転職のサポートがほしい

と考えている方はぜひお読み下さい。

【WebCamp卒業生インタビュー】1ヶ月でRubyをゼロから学び、Webエンジニアとして転職!
2018-01-15 13:23
今回の記事では、WebCampで1ヶ月間Rubyを学習し、Webエンジニアとして転職した卒業生の田中さんにお話を伺いました。 <プロフィール> 田中 デニス 昭彦さん(...
関連キーワード
Ruby on Railsの関連記事
  • 【Rails入門説明書】enumについて解説
  • 【Rails入門説明書】link_toについて解説
  • 【Rails入門説明書】Bootstrapについて解説
  • 【Rails入門説明書】scaffoldについて解説
  • 【Rails入門説明書】validationsについて解説
  • 【Rails入門説明書】routesについて解説
おすすめの記事