Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Ruby on Railsのスキャフォールディングとは?基本の使い方を徹底解説

スキャフォールディングとは何か?

Railsを学び始めたばかりの方なら、「アプリケーション開発を始めるにはまず「scaffold(スキャフォールド)」を生成する必要がある」という記述を目にしたことがあるかもしれません。

実はとても簡単で、rails g scaffoldコマンド一つで実行できます。

では、スキャフォールディングとは一体何なのでしょうか?

「スキャフォールディング(足場)とは、建設・保守・修理などの作業を行う作業員を支えるために用いられる仮設構造物である。」— Wikipedia

これをRailsに当てはめると、こうなります。

スキャフォールドとは、Railsプロジェクトの基本的な構造を形成する、自動生成されたファイル一式のことです。

生成されるファイルには以下が含まれます:

  • コントローラ
  • モデル
  • 標準的なコントローラアクション(index、edit、show、new)に対応するビュー
  • 新しいルート
  • データベースを準備するためのマイグレーション

それでは、実際の例を見ていきましょう!

Rails Scaffoldコマンドの基本的な使い方

ここでは、書籍に関するWebサイトのプロジェクトをスキャフォールディングする例を紹介します。

rails g scaffold books

コマンドを実行すると、作成されていくファイルの詳細が大量に画面を流れていきます。

この例では以下が生成されます:

  • BooksController
  • Bookモデル
  • config/routes.rbファイルに追加されるresources :booksルート
  • テスト関連の一連のファイル
  • app/views/books配下のビューファイル(合計5つ)

そう、かなりの量のファイルが一度に作られるのです。

もしスキャフォールディング直後に取り消したい場合は、次のコマンドを使います。

rails d scaffold books

「d」は「destroy(破棄)」の意味です。

ただし、このコマンドはスキャフォールディングで作成されたファイルを削除しますので、実行前によく確認してください。

次のステップ:

スキャフォールドで生成したコードを使う前に、マイグレーションを実行してデータベースのスキーマを更新する必要があります。

rails db:migrateコマンドを実行しましょう。

エラーメッセージが表示されなければ準備完了です。これで新しいRailsアプリケーションの基本構造、あるいは新機能に必要なモデル・ビュー・対応するコントローラの土台が手に入りました。

続いて:

rails serverを実行します。

ブラウザでlocalhost:3000/booksを開けば、結果を確認できるはずです!

フィールドを指定してスキャフォールディングする方法

デフォルトの設定では…

モデルにはタイムスタンプのフィールドしか含まれません。つまり、書籍(または扱う任意のモデル)について記録できるのは、作成日時や更新日時だけということになります。

追加フィールド付きでスキャフォールディングするには、次のようにします:

rails g scaffold books title:string author:string publication_year:integer

このように生成すれば、3つのフィールドを持つモデルが使えるようになります。

  • タイトル(title:文字列型)
  • 著者(author:文字列型)
  • 出版年(publication_year:整数型)

データベースのタイムスタンプだけの場合よりも、ずっと実用的ですね。

ちなみに:

この構文は、rails g migrationでマイグレーションを作成するときに使うものと同じです。

特定のコンポーネントだけを生成する

スキャフォールディングは、現時点では不要なファイルまでまとめて作成してしまうことがあります。

しかし心配いりません。Railsでは、rails g(gはgenerateの略)コマンドを使えば、コントローラなど個別のコンポーネントだけを生成できます。

具体例:

  • rails g controller Fruit(コントローラのみ生成)
  • rails g model Fruit name:string color:string(モデル+マイグレーションを生成)
  • rails g migration CreateBook title:string year:integer(マイグレーションのみ生成)

スキャフォールディングやジェネレータを使う大きなメリットの一つは、すべてのファイルが正しい命名規則に従って作成される点です。これにより奇妙なエラーメッセージを避けられ、手動でファイルを作成する手間も省けます。

補足:

使う予定のない自動生成ファイルは削除しておくのが良いプラクティスとされています。「g controller」などのジェネレータを使った後は、作成されたファイルの一覧を確認し、不要なものを整理しておきましょう。

まとめ

この記事では、Railsのスキャフォールディングについて学びました。これを活用すれば、練習用の新しいRailsアプリケーションを素早く立ち上げることができます。

学習が進むにつれて、スキャフォールディングに頼らなくなる場面もあるでしょう。それでも、必要なときに個別のコントローラ、モデル、ビューファイルを生成することは可能です。

最後までお読みいただきありがとうございました!🙂

  1. Rubyのマトリックス(行列)とは?配列・Matrixクラス・Daruを使いこなす完全ガイド

    マトリックス(行列)とは、表計算ソフトのようなデータを格納・操作するための2次元(2D)配列のことです。 マトリックスが活躍する場面: チェスやオセロなど、テーブルゲームの盤面を表現する 統計処理やデータ分析を行う グラフやプロットを生成する マトリックスは非常に強力なデータ構造なので、その使い方をマスターしておくと開発の幅が大きく広がります。この記事では、Rubyでマトリックスを扱う3つの方法——配列、Matrixクラス、そしてDaru gem——を順番に解説していきます。 Rubyでマトリックスを作成する方法 最もシンプルな方法は、配列の入れ子(ネスト)を使ってマトリックスを作ることで

  2. Ruby on Railsとは?初心者にもわかる仕組み・魅力・学び方を徹底解説

    Ruby on Railsとは? Ruby on Rails(略称:RoR)は、世界で最も人気のあるオープンソースのWebアプリケーションフレームワークです。プログラミング言語「Ruby」をベースに構築されており、シンプルなサイトから大規模で複雑なサービスまで、幅広いWebアプリケーションの開発を支援します。 そもそもフレームワークとは? フレームワークとは、ソフトウェア開発の際に土台となる構造を提供してくれるコードやツール、ユーティリティの集合体です。あらかじめ用意された構造に沿ってコードを書くことで、プログラムが整理され、保守性も高まります。正しく使いこなせるようになれば、開発作業は格段に