Ruby on Rails
はじめに
[編集]このチュートリアルでは、Ruby on Railsを使用してWebアプリケーションを開発する方法を学びます。Ruby on Railsは、Web開発に必要な多くの機能を提供し、開発を迅速かつ効率的に行うことができるため、非常に人気があります。
このチュートリアルでは、Ruby on Railsの基礎と関連技術を学びます。
このチュートリアルでは、以下の技術やツールを使用します。
- Ruby 3.0
- Ruby on Rails 7.0
- SQLiteデータベース
このチュートリアルは、完全な初心者向けではありませんが、基本的なプログラミングの知識があれば、理解することができます。 また、このチュートリアルでは、MVCやORMの基礎も学ぶことができます。
環境構築
[編集]Ruby on Railsをインストールするために必要なソフトウェアの環境構築について説明します。この章では、Windows、macOS、FreeBSD、およびGNU/Linuxのディストリビューションについて説明します。
Windows
[編集]- Rubyのインストール
- RubyInstallerのダウンロードページ(https://rubyinstaller.org/downloads/)を開きます。
- バージョン2.7系列のRubyInstallerをダウンロードします。
- ダウンロードしたRubyInstallerを実行し、インストールウィザードに従ってインストールを行います。
- Gemのアップデート
- コマンドプロンプトを開きます。
- 以下のコマンドを入力します。
gem update --system
- Railsのインストール
- コマンドプロンプトを開きます。
- 以下のコマンドを入力します。
gem install rails
macOS
[編集]- Rubyのインストール
- Homebrewのインストールがまだの場合、以下のコマンドでインストールします。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
- 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のインストール
- ターミナルを開き、以下のコマンドを入力します。
sudo apt-get update sudo apt-get install ruby-full
- ここではパッケージマネージャーにAPTを仮定していますが、異なるパッケージマネージャーを使っている場合は、パッケージマネージャーのコマンド名とRubyのパッケージ名が異なります。
- Gemのアップデート
- ターミナルを開き、以下のコマンドを入力します。
gem update --system
- Railsのインストール
- ターミナルを開き、以下のコマンドを入力します。
gem install rails
以上で、Ruby on Railsの環境構築が完了しました。注意点として、SQLiteを使用する場合は、各OSにあったSQLiteのインストール方法を行う必要があります。
- アプリケーションの骨格を作成する
- データベースを作成する
- モデルを作成する
- ビューを作成する
- コントローラを作成する
- ユーザー認証機能を実装する
- テストを書く
Ruby on Rails とは
[編集]Ruby on Rails(以下 Rails)は、Webアプリケーションの開発に特化したオープンソースのフレームワークです。Ruby on Railsを使用すると、簡単に効率的なWebアプリケーションを開発することができます。
Railsには多数の特徴がありますが、以下に詳しく説明します。
- コンベンション・オーバー・コンフィギュレーション (Convention over Configuration)
- Railsでは、開発者が可能な限り少ない設定でアプリケーションを構築できるように、多くのコンベンションが定義されています。このため、設定ファイルなどの手作業が減り、開発効率が向上します。
- MVCアーキテクチャ
- Railsは、MVC (Model-View-Controller)アーキテクチャを採用しています。これは、アプリケーションのロジック、データモデル、ビュー(ユーザーに表示される情報)を分離することで、保守性や拡張性が向上するためです。
- Scaffolding
- Railsでは、Scaffoldingと呼ばれる機能を使うことで、データモデルのCRUD操作に必要なコントローラやビューを自動生成することができます。これにより、基本的な機能を迅速に実装することができます。
- RESTfulルーティング
- Railsでは、RESTfulなルーティングをサポートしています。これにより、URIをリソースにマッピングすることができ、より直感的で使いやすいAPIを構築することができます。
- ActiveRecord
- Railsのデータモデルには、ActiveRecordと呼ばれるORM (Object-Relational Mapping)が使用されます。これにより、Rubyのオブジェクトとデータベースのテーブルをマッピングすることができ、データモデルの操作が容易になります。
- テストフレームワーク
- Railsには、テストフレームワークが組み込まれています。これにより、単体テストや統合テストを簡単に実装できます。また、Railsは、TDD (Test-Driven Development)やBDD (Behavior-Driven Development)をサポートしており、品質の高いアプリケーションを開発するための基盤を提供します。
- コミュニティ
- 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(削除)の頭文字をとったものです。
- まず、RoRプロジェクトを作成します。
rails new myapp
- 次に、データベースを作成します。
rails db:create
- データベースにテーブルを作成するためのマイグレーションを生成します。
rails generate migration CreateBooks
- 生成されたマイグレーションファイルを編集して、テーブルのカラムを定義します。
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
- マイグレーションを実行して、テーブルをデータベースに作成します。
rails db:migrate
- 生成されたモデルを編集して、テーブルにアクセスする方法を定義します。
class Book < ApplicationRecord end
- ルーティングを設定して、コントローラのアクションにルーティングします。
Rails.application.routes.draw do resources :books end
- コントローラを生成して、CRUDアクションを作成します。
rails generate controller Books
- 生成されたコントローラを編集して、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
- ビューを作成して、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でファイルアップロード機能を実装する方法を学びます。