Search

検索したいワードを入力してください

2019年03月04日

ScaffoldをRailsで使う方法をわかりやすく解説!

RailsにおいてScaffoldはとても便利なものです。しかし使い方が分からない方も多いのではないでしょうか。この記事では実際にRailsのブログアプリをScaffoldを使用して制作します。Scaffoldについて勉強したい方は是非読んでみてください。

Scaffoldとは?

RailsにおいてScaffoldとはCreate(生成)、Read(読み取り)、Update(更新)、Delete(削除)の機能を一気に構築してくれるコマンドであり、簡単にアプリの雛形を作ってくれます。

これらの機能はどんなアプリでも使う基本的なもので、よくまとめてCRUDと呼ばれます。Macだとターミナル、WindowsだとコマンドプロンプトでScaffoldコマンドを打ちます。

$ bin/rails g scaffold モデルの名前 データ名:データの型

Scaffoldを使うメリット

Scaffoldを使うことによって迅速にRailsアプリケーションを作成することができます。まだ開発に慣れていない初心者の方でも簡単に機能を実装してRailsアプリを開発することができるので便利なコマンドです。

短期間の開発にもこのコマンドは役に立つことがあるので、Scaffoldを使用するメリットは多いです。

実際にブログアプリを作ってみよう

実際にRuby on RailsのScaffold使い、簡単なブログアプリを作ってみます。実際に公開する場合にはセキュリティ対策が必要なのでこんなに簡単ではありませんが、今回はあくまで便利さを体感するためなので、説明は省きます。

本格的にRuby on Railsの勉強を始めてから学んでいきましょう。

Railsアプリを立ち上げる

※この記事ではMacBookを使用してブログアプリを作成しています。

まず、最初にRailsアプリを作成しましょう。
ターミナルにて、以下のコマンドを打ちます。(Windowsだとコマンドプロンプト)
アプリ名はblog_appにします。

Railsアプリを作成します。
$ rails new blog_app

作成したアプリのディレクトリに移動します。
$ cd blog_app

Scaffoldコマンドでアプリの機能を自動生成する

作成したアプリのディレクトリに移動しましたら、早速Scaffoldコマンドを
ターミナルで打って行きます。

タイトル、内容、カテゴリー、画像のデータをScaffoldで生成します。
$ rails g scaffold post title:string body:text category:string image:string

このコマンドを打つことによってコントローラー、モデル、ビュー、マイグレーションファイル、ローティングなどが一気に生成されます。

そして全てのmigrationファイルをデータベースに反映するために以下のコマンドを打ちます。
$ rails db:migrate

これまでのコマンドによって登録、削除、編集、更新などの機能が追加されました。
よって記事を投稿することができます。

Scaffoldで作ったアプリで画像を表示してみよう

画像を表示するためにHTMLの表示のコードを少し変えます。
プロジェクトの中にあるファイルを編集します。
blog_app/app/views/posts/index.html.erb のファイルを以下に編集します。

22行目あたりにある以下のコード

<%= post.category %>


このコードに変更します。

<img src="<%= post.image %>" ,width="150" height="100" border="0" >


他に、blog_app/app/views/posts/show.html.erbの21行目辺りにある画像表示のコードも上に書いてあるコードに差し替えます。
そしてサーバーを立ち上げてwebページを表示すると画像が表示されています。

Railsサーバーを立ち上げてアプリを動かす

ここまでやったらサーバーを立ち上げて表示するか確かめます。
ターミナルにて以下のコマンドを入力します。

$ rails s

ターミナルのログが以下になっていればサーバーは立ち上がっています。
最後の文がUse Ctrl-C to stopとなっていれば良いです。

=> Booting Puma
=> Rails 5.1.6.1 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.0 (ruby 2.5.0-p0), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

Webページを開こう

今回は、Google Chromeを使用して作成したページを確認します。
Google Chrome を開いてhttp://localhost:3000/postsと打ちます。

そして赤い文字でエラー文が表示されていなかったら上手く行っている証拠です。

※サーバーを止める時は,ターミナルにてcontrol + cの2つを押せばサーバーは止まります

ブログを投稿してみよう

開いたページにNew Postというボタンがあるのでそのボタンを押して記事を投稿してみます。

タイトル、内容、カテゴリー、画像URLを入力してCreate Postボタンを押します。
次に確認画面が表示されるので、下にあるバックボタンを押すと一覧画面に戻ります。

これで実際に先ほど書いた内容が投稿されました。

エラーが出たら:Gemfileを編集しよう

ここでは、ターミナルにて$ rails sと打ち、webページにてlocalhost:300と打ち込んでエラーメッセージが表示された方のみ行ってください。

Gemfileを編集してsqlite3のバージョンを指定します。

ターミナルにて以下のコマンドを打ちます。(Windowsだとコマンドプロンプト)

Gemfileを編集する。
・Macの場合
$ vi Gemfile

・Windowsの場合
$ notepad Gemfile

「i」を押してインサートモードに入ります。
キーボードの十字キーを使用して上から12行目くらいにあるgem 'sqlite3'
gem 'sqlite3' , '~> 1.3.6'と書き変えます。

書き終わったら「Escキー」 → 「:」 → 「wq」 の順に押して行きます。

以上のことが終わったら$ bundle iとターミナルで打ちます。
そしてまたサーバーをたちあげwebページを表示して見てください。

CRUD機能って何?

CRUD機能とは、Create(登録)、Read(参照)、Update(更新)、Delete(削除)機能をまとめた表現です。

Scaffoldでは、このCRUD機能を迅速に実装することができます。今回作成した、ブログのシステムでは記事を登録し、登録した記事を参照することができます。そして作成した記事を修正したり記事を削除することもできます。

以上の機能をScaffoldのコマンドを打ち込むことによって実装することができました。

RESTFULって何?

まず、REST(REpresentational State Transfer)とはWebサービスの設計モデルです。パラメータを指定して特定のURLにアクセスするとXML(またはJSON)で応答されます。リソースを扱うための考え方です。

このRESTの設計原則に則ったWebサービスをRESTFULなサービスと言います。RESTFULなサービスは、GoogleやYahoo!やTwitterなどがあります。

Scaffoldを使うデメリット

このようにシンプルなアプリなら簡単に作れてしまう便利なScaffoldですが、便利さの裏にはさまざまな問題もあります。

Scaffoldを使うデメリットについてみてみましょう。

Scaffoldを使うデメリット1:無駄なコードが多い

Scaffoldを使用すると、blog_app/app/views/posts/ファイル名.json.jbuilder と行ったファイルが生成されています。

JSONのAPIを必要とするRailsアプリでなければこのファイルは必要ありません。他にも不要なcssファイルも生成されます。

このような不要なファイルが生成されるのもScaffoldのデメリットの1つと言えるでしょう。

Scaffoldを使うデメリット2:便利すぎて学びが少ない

Scaffoldはコマンドを打てば、簡単に機能を実装することができます。しかし、中身の処理を詳しく勉強しなくてもScaffoldを使えば簡単に機能を実装することができるので勉強する必要性が低くなってしまいます。

これは、RailsアプリをScaffoldを使用して作成した場合、何かエラーが起こったとしても対処できなくなる可能性があるのでScaffoldに頼りすぎるのは問題と言えます。

Scaffoldを使用しながら処理の勉強をしていくのが良いと考えます。

まとめ

いかがでしたか?

この記事では、実際にRailsのブログアプリを作成してScaffoldの機能や利便性を説明しました。

Railsアプリを開発する時は、必ずScaffoldを使用して機能を実装する必要はありません。自分で1から機能を実装してRailsアプリを開発することもとても勉強になります。

セキュリティの問題などもあるので、Scaffoldを使うとしても最小限にとどめ、できる限り自分で開発したり、gemを活用するようにしましょう。

Railsはとても便利で開発しやすく、勉強量が少なくてもWebアプリケーションを開発することができますがしっかりとその処理の中身を勉強すれば、よりクオリティの高いWebアプリケーションを開発することができます。

簡単ではありませんが続ければいつかはものになりますので、頑張ってください。

【PR】多くの人がプログラミングを諦めてしまう理由をご存知ですか?



近年プログラミングを勉強する人が増えています。

プログラミング学習者の多くは独学から取り組もうとしますが、だいたい80%ほどは3ヶ月も続かずに諦めてしまいます。早い人は1日目で。

多くの人がプログラミングを独学しようとして諦める理由は、次の3つ。
●モチベーションが維持できない
●エラーの原因・解決方法が分からない
●どう学習すればよいか分からない

TechBoostというプログラミングスクールでは、みんなと一緒にプログラミングをするのでモチベーションの維持ができ、分からないことがあればマンツーマンで教えてくれ、徹底的に研究された初心者向けの教材が揃っています。

TechBoostを卒業後、実際にエンジニアとして転職した方もいるほど。

本気でプログラミングを学びたい方は、一度無料のカウンセリングでご相談ください。プログラミングを嫌いになる前に。

tech boostについて

オーダーメイド型の学習コンテンツを提供する「tech boost」 は、エンジニアのキャリア支援に特化したサービスを複数展開している株式会社Branding Engineerが運営しているプログラミングスクールです。最短3ヶ月間で、未経験から『プログラミングの基礎』、『実際に業務で必要となるスキル』、『今のトレンドとなっている知識』まで学べ、ご希望の方にはプロのキャリアアドバイザーによる就業支援を行うことができます。

tech boost卒業生インタビュー

tech boostの卒業生の声を聞きました。あなたがプログラミングを学びたい理由を、一度考えてみてください。
営業→Javaエンジニア→Rubyエンジニアと転向し、第一志望のFinTech企業で働く山下さん
元営業、ビジネスのわかるエンジニアを目指す菅原さん
サンフランシスコに交換留学し、シリコンバレーのVCでインターン中の梅本さん
予備校の営業から半年でエンジニア転職を果たした小田島さん

tech boostの口コミ



Related