LoginSignup
0
1

More than 1 year has passed since last update.

RailsのScaffoldを使って3分でwebアプリを作ってみる

Last updated at Posted at 2021-09-16

Ruby on Railsのscaffoldを使って最速でwebアプリケーションを構築してみます。

#Scaffoldとは

まずはRuby on Railsのscaffoldとは何かについて解説します。

scaffoldとは、Railsに備わっているコマンドの1つで、ルーティングやコントローラー(controller)、ビュー(view)、モデル(model)とテーブル(データベース)の記述やファイルなどを自動で作成してくれるコマンドです。

本来、scaffoldは建築現場の足場やビルの窓を拭くときに使用される吊り足場を意味しているそうです。
Ruby on Railsのscaffoldにおいても、アプリケーションの足場であるMVC(上記で紹介したModel-View-Controller)等を指し示し、それらを簡単に自動生成してくれるそうです。

つまり、scaffold を使用することで、コントローラーやモデルを作成する手間を省くことができます。

scaffoldを使って作成されるルーティングは、Railsが定める7つのアクションになります。(index・show・new・edit・create・update・destroyアクションの7つです。)

以上がRails scaffoldについての簡単な説明になりますが、さすがにこれだけでは分かりにくいので、以下からは実際にRailsのscaffoldを使って、WEBアプリケーションを作ってみます。

#実装
実際にScaffoldを使ってアプリケーションを作ってみます。

まずはターミナル上で次のコマンドを打ち込みます。
すでに作成中のアプリがある場合は飛ばしてしまっても問題ないです。

rails new testapp

次にディレクトリを移動します。

cd testapp

ここからScaffoldを利用します

【scaffoldのコマンド書式】

rails g scaffold モデル名 カラム名①:データの型① カラム名②:データの型②・・・

上記の書式に沿って、モデル、カラムを設定しましょう。
今回は簡単にTweetモデルにcontentカラムのみが実装されるように記述していきます。

rails g scaffold Tweet content:string

このコマンドでmodel、controller、viewすべてが作成されました。
最後に

rails db:migrate

こちらを打ち込みmigreteします。
これで完成です。とっても簡単ですね。

#動作確認
最後に、どんなものが完成したのかを確認します。
まずは、アプリのディレクトリ上で

rails s

と打ち込みます。

起動が確認できたら、Chromeなどのブラウザで

http://localhost:3000/tweets

上記のURLを直接入力します。

スクリーンショット 2021-09-17 0.05.09.png

このような画面が出たら成功です。
画面上の NewTweetから飛び、
なにか投稿を入力してみましょう。

投稿がうまくいけば下記のような画面になるはずです。
スクリーンショット 2021-09-17 0.05.32.png

編集や削除などの機能も勝手に実装されていることが分かります。

##まとめ
今回Scaffoldを使ったwebアプリケーション構築の簡単な例を示してみました。

大規模なアプリ開発時にはあまり使えませんが、軽くテスト用のアプリを作りたかったり、 個人開発の小規模なアプリであれば開発スピートに大きく貢献してくれる便利な機能だと思います、ぜひ活用して効率的な実装をしてみて下さい。

ただ、個人的にはMVCモデルの流れやScaffoldでどんなコードが自動で実装されるのかを理解しないまま使ってしまうと今後の開発が大変になってしまうので、初めてアプリを作る方などは自分でひとつひとつ実装するのも良い手かなと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1