Ruby on Rails

出典: フリー教科書『ウィキブックス(Wikibooks)』

はじめに[編集]

このチュートリアルでは、Ruby on Railsを使用してWebアプリケーションを開発する方法を学びます。Ruby on Railsは、Web開発に必要な多くの機能を提供し、開発を迅速かつ効率的に行うことができるため、非常に人気があります。

このチュートリアルでは、Ruby on Railsの基礎と関連技術を学びます。

このチュートリアルでは、以下の技術やツールを使用します。

  1. Ruby 3.0
  2. Ruby on Rails 7.0
  3. SQLiteデータベース

このチュートリアルは、完全な初心者向けではありませんが、基本的なプログラミングの知識があれば、理解することができます。 また、このチュートリアルでは、MVCやORMの基礎も学ぶことができます。


環境構築[編集]

Ruby on Railsをインストールするために必要なソフトウェアの環境構築について説明します。この章では、Windows、macOS、FreeBSD、およびGNU/Linuxのディストリビューションについて説明します。

Windows[編集]

Rubyのインストール
  1. RubyInstallerのダウンロードページ(https://rubyinstaller.org/downloads/)を開きます。
  2. バージョン2.7系列のRubyInstallerをダウンロードします。
  3. ダウンロードしたRubyInstallerを実行し、インストールウィザードに従ってインストールを行います。
Gemのアップデート
  1. コマンドプロンプトを開きます。
  2. 以下のコマンドを入力します。
    gem update --system
    
Railsのインストール
  1. コマンドプロンプトを開きます。
  2. 以下のコマンドを入力します。
    gem install rails
    

macOS[編集]

Rubyのインストール
  1. Homebrewのインストールがまだの場合、以下のコマンドでインストールします。
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
    
  2. Homebrewを使ってRubyをインストールします。
    brew install ruby
    
Gemのアップデート
gem update --system
Railsのインストール
gem install rails

FreeBSD[編集]

Railsのインストール
以下のコマンドを実行して、Railsをインストールしてください。
sudo pkg install www/rubygem-rails70

FreeBSDでは、Ports Cllection に Ruby / Gems / Rails のパッケージがあるので、Rails をインストールすると依存関係に従い Ruby と Gems が自動的にインストールされます。

GNU/Linuxのディストーション[編集]

Rubyのインストール
  1. ターミナルを開き、以下のコマンドを入力します。
    sudo apt-get update
    sudo apt-get install ruby-full
    
    ここではパッケージマネージャーにAPTを仮定していますが、異なるパッケージマネージャーを使っている場合は、パッケージマネージャーのコマンド名とRubyのパッケージ名が異なります。
Gemのアップデート
  1. ターミナルを開き、以下のコマンドを入力します。
    gem update --system
    
Railsのインストール
  1. ターミナルを開き、以下のコマンドを入力します。
    gem install rails
    

以上で、Ruby on Railsの環境構築が完了しました。注意点として、SQLiteを使用する場合は、各OSにあったSQLiteのインストール方法を行う必要があります。

  1. アプリケーションの骨格を作成する
  2. データベースを作成する
  3. モデルを作成する
  4. ビューを作成する
  5. コントローラを作成する
  6. ユーザー認証機能を実装する
  7. テストを書く

Ruby on Rails とは[編集]

Ruby on Rails(以下 Rails)は、Webアプリケーションの開発に特化したオープンソースのフレームワークです。Ruby on Railsを使用すると、簡単に効率的なWebアプリケーションを開発することができます。

Railsには多数の特徴がありますが、以下に詳しく説明します。

  1. コンベンション・オーバー・コンフィギュレーション (Convention over Configuration)
    Railsでは、開発者が可能な限り少ない設定でアプリケーションを構築できるように、多くのコンベンションが定義されています。このため、設定ファイルなどの手作業が減り、開発効率が向上します。
  2. MVCアーキテクチャ
    Railsは、MVC (Model-View-Controller)アーキテクチャを採用しています。これは、アプリケーションのロジック、データモデル、ビュー(ユーザーに表示される情報)を分離することで、保守性や拡張性が向上するためです。
  3. Scaffolding
    Railsでは、Scaffoldingと呼ばれる機能を使うことで、データモデルのCRUD操作に必要なコントローラやビューを自動生成することができます。これにより、基本的な機能を迅速に実装することができます。
  4. RESTfulルーティング
    Railsでは、RESTfulなルーティングをサポートしています。これにより、URIをリソースにマッピングすることができ、より直感的で使いやすいAPIを構築することができます。
  5. ActiveRecord
    Railsのデータモデルには、ActiveRecordと呼ばれるORM (Object-Relational Mapping)が使用されます。これにより、Rubyのオブジェクトとデータベースのテーブルをマッピングすることができ、データモデルの操作が容易になります。
  6. テストフレームワーク
    Railsには、テストフレームワークが組み込まれています。これにより、単体テストや統合テストを簡単に実装できます。また、Railsは、TDD (Test-Driven Development)やBDD (Behavior-Driven Development)をサポートしており、品質の高いアプリケーションを開発するための基盤を提供します。
  7. コミュニティ
    Railsは、オープンソースのフレームワークであり、多数のコミュニティが存在しています。これにより、情報共有や問題解決が容易です。

Hello, Rails[編集]

この章では、新しい Rails アプリケーションを作成し、簡単な Web ページを表示する方法を学びます。

まず、RoR をインストールする必要があります。このチュートリアルでは、Ruby 2.7 と Rails 7.0 を使用します。これらがインストールされていることを確認してください。

次に、新しい Rails アプリケーションを作成します。コマンドラインで以下のコマンドを実行します。

rails new hello_app

これにより、新しい Rails アプリケーションが作成され、必要なファイルが生成されます。次に、アプリケーションのルートディレクトリに移動し、サーバーを起動します。

cd hello_app
rails server

サーバーが起動したら、ブラウザで http://localhost:3000/ を開きます。すると、デフォルトの Rails のウェルカムページが表示されます。

次に、独自のページを作成しましょう。ルートディレクトリにある config/routes.rb ファイルを開き、以下のように編集します。

config/routes.rb
Rails.application.routes.draw do
  root 'application#hello'
end

これにより、ルートパス / にアクセスすると、application_controller.rb 内の hello アクションが呼び出されるようになります。次に、application_controller.rb を開き、以下のように編集します。

application_controller.rb
class ApplicationController < ActionController::Base
  def hello
    render html: "Hello, Rails!"
  end
end

このコードでは、hello アクションが定義され、HTML の "Hello, Rails!" というテキストが表示されます。最後に、ブラウザで http://localhost:3000/ を開き、新しく作成した "Hello, Rails!" ページが表示されることを確認してください。

この章では、新しい Rails アプリケーションを作成し、簡単な Web ページを表示する方法を学びました。次の章では、データベースを使用した Web アプリケーションの作成方法を学びます。

データベースとモデル[編集]

この章では、SQLiteデータベースを使用して、Ruby on Railsアプリケーションのモデルを設計する方法について説明されています。SQLiteは、軽量でポータブルなデータベースであり、小規模なアプリケーションに適しています。

まず、データベースを設定するために、config/database.ymlファイルを編集する必要があります。以下は、SQLiteデータベースを使用する場合の例です。

config/database.yml
development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000
  • 上記の例では、development環境において、SQLite3を使用しています。databaseフィールドは、データベースの場所を指定するために使用されます。ここでは、db/development.sqlite3というファイルにデータベースを保存するように設定されています。

次に、データベースにテーブルを作成する必要があります。Railsには、Active Recordと呼ばれるORM(Object-Relational Mapping)があり、これを使用して、Rubyクラスとデータベーステーブルを関連付けることができます。

例えば、以下のようなusersテーブルを作成するためのマイグレーションを作成することができます。

rails generate migration CreateUsers

上記のコマンドを実行すると、db/migrate/xxxxxx_create_users.rbというファイルが作成されます。このファイルに、以下のようなコードを記述して、usersテーブルを作成することができます。

db/migrate/xxxxxx_create_users.rb
class CreateUsers < ActiveRecord::Migration[6.1]
  def change
    create_table :users do |t|
      t.string :name
      t.string :email

      t.timestamps
    end
  end
end

上記のコードでは、Active Recordのcreate_tableメソッドを使用して、usersテーブルを作成しています。このテーブルには、nameとemailという2つのカラムが含まれています。また、Active Recordのtimestampsメソッドを使用して、created_atとupdated_atという2つのカラムが自動的に作成されるようになっています。 以上で、SQLiteデータベースを使用して、Ruby on Railsアプリケーションのモデルを設計する方法について説明しました。データベースの設定とテーブルの作成は、Railsのコマンドを使用して簡単に行うことができます。

CRUDの実装[編集]

CRUDは、Create(作成)、Read(読み取り)、Update(更新)、Delete(削除)の頭文字をとったものです。


  1. まず、RoRプロジェクトを作成します。
    rails new myapp
    
  2. 次に、データベースを作成します。
    rails db:create
    
  3. データベースにテーブルを作成するためのマイグレーションを生成します。
    rails generate migration CreateBooks
    
  4. 生成されたマイグレーションファイルを編集して、テーブルのカラムを定義します。
    class CreateBooks < ActiveRecord::Migration[6.1]
      def change
        create_table :books do |t|
          t.string :title
          t.string :author
          t.text :description
          t.integer :price
    
          t.timestamps
        end
      end
    end
    
  5. マイグレーションを実行して、テーブルをデータベースに作成します。
    rails db:migrate
    
  6. 生成されたモデルを編集して、テーブルにアクセスする方法を定義します。
    class Book < ApplicationRecord
    end
    
  7. ルーティングを設定して、コントローラのアクションにルーティングします。
    Rails.application.routes.draw do
      resources :books
    end
    
  8. コントローラを生成して、CRUDアクションを作成します。
    rails generate controller Books
    
  9. 生成されたコントローラを編集して、CRUDアクションを実装します。
    class BooksController < ApplicationController
      def index
        @books = Book.all
      end
    
      def show
        @book = Book.find(params[:id])
      end
    
      def new
        @book = Book.new
      end
    
      def create
        @book = Book.new(book_params)
    
        if @book.save
          redirect_to @book
        else
          render 'new'
        end
      end
    
      def edit
        @book = Book.find(params[:id])
      end
    
      def update
        @book = Book.find(params[:id])
    
        if @book.update(book_params)
          redirect_to @book
        else
          render 'edit'
        end
      end
    
      def destroy
        @book = Book.find(params[:id])
        @book.destroy
    
        redirect_to books_path
      end
    
      private
        def book_params
          params.require(:book).permit(:title, :author, :description, :price)
        end
    end
    
  10. ビューを作成して、CRUDアクションの結果を表示します。
    <h1>Books</h1>
    
    <table>
      <thead>
        <tr>
          <th>Title</th>
          <th>Author</th>
          <th>Description</th>
          <th>Price</th>
          <th colspan="3"></th>
        </
    

MVCの概念[編集]

MVC(Model-View-Controller)は、RoRのアプリケーション開発において重要な概念です。MVCは、Webアプリケーションの設計パターンで、アプリケーションの内部の構造とそれらが相互作用する方法を定義します。

MVCは、以下の3つのコンポーネントから構成されます。

  • Model(モデル)- データの取得と保存を処理します。データベースとのやり取りやバリデーションのチェックなどを担当します。
  • View(ビュー)- ユーザーが表示する画面やHTMLの生成を担当します。コントローラから渡されたデータを基に画面の表示内容を決定します。
  • Controller(コントローラ)- ユーザーからのリクエストを受け取り、それに応じた処理を実行します。具体的には、Modelからデータを取得し、Viewに渡すなどの処理を担当します。

MVCは、アプリケーションを構成するコンポーネントを分離することで、コードの再利用性を高め、メンテナンス性を向上させます。また、MVCにより、アプリケーションをより効率的に開発することができます。

Ruby on Railsは、MVCアーキテクチャを採用しており、このアーキテクチャをサポートするフレームワークです。RoRにおいては、コントローラがルーティングを担当し、ビューにデータを渡すなどの処理を行います。モデルによって、データベースとのやり取りが行われます。

Scaffolding[編集]

Ruby on RailsのScaffoldingは、Webアプリケーションのベースとなるコードを自動生成するための機能です。Scaffoldingを使用することで、CRUD(Create、Read、Update、Delete)操作に必要なコードを自動的に生成することができます。これにより、Webアプリケーションを素早く作成することができます。 Scaffoldingを使用するには、ターミナルまたはコマンドプロンプトで以下のコマンドを入力します。

rails generate scaffold ModelName attribute1:type attribute2:type ...

ここで、ModelNameは自分が作成するモデルの名前で、attribute1、attribute2などは、そのモデルが持つ属性の名前と型を指定します。 このコマンドを実行すると、以下のものが自動的に生成されます。

  • データベースマイグレーションファイル
  • モデルファイル
  • コントローラファイル
  • ビューファイル

これらのファイルは、Webアプリケーションのベースとなるコードを自動生成するのに役立ちます。ただし、自動生成されたコードは、アプリケーションの要件に合わせてカスタマイズする必要があります。

RESTfulなルーティング[編集]

Ruby on Railsは、Webアプリケーションの開発に特化したMVCフレームワークです。Railsは、RESTfulなWebサービスを構築するための強力な機能を提供しており、RESTfulなルーティングはその中でも重要な機能の1つです。

RESTfulなルーティングは、HTTPメソッド(GET、POST、PUT、DELETEなど)に基づいて、アプリケーション内のリソースに対する操作を定義する方法です。これにより、WebアプリケーションのURLが意味のあるものになり、開発者やユーザーがアプリケーションの動作を理解しやすくなります。

Railsでは、RESTfulなルーティングを簡単に設定できます。ルーティングは、config/routes.rbファイルで設定されます。例えば、以下のようなルートを定義することができます。

config/routes.rb
resources :articles

このルートを定義すると、以下のようなURLが生成されます。

  • GET /articles - 記事の一覧を表示するためのページ
  • GET /articles/:id - 特定の記事を表示するためのページ
  • POST /articles - 新しい記事を作成するためのページ
  • PUT /articles/:id - 特定の記事を更新するためのページ
  • DELETE /articles/:id - 特定の記事を削除するためのページ

RESTfulなルーティングを使用することで、コントローラーの設計やビューの作成などの開発プロセスがシンプルになり、より効率的にWebアプリケーションを構築できるようになります。


テスト駆動開発(TDD)[編集]

TDDの基本的な概念とRailsアプリケーションでTDDを実践する方法を説明します。

静的なページの作成[編集]

Railsで静的なページを作成する方法を学びます。

レイアウトの作成[編集]

Railsでレイアウトを作成して、ページ間で共通の要素を共有する方法を学びます。

ユーザー認証機能の実装[編集]

Railsでユーザー認証機能を実装する方法を学びます。

アップロード機能の実装[編集]

Railsでファイルアップロード機能を実装する方法を学びます。