はじめに

編集

このチュートリアルでは、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
    
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でファイルアップロード機能を実装する方法を学びます。