【Rails】Railsプロジェクトの新規作成【初学者】

はじめに

Ruby on Rails(または単にRails)は、Rubyというプログラミング言語で設計・開発されたWebアプリケーションフレームワークです。一般的に、Webアプリケーションをイチから作成するには膨大な量のコードを書く必要があります。Webアプリケーションフレームワークは、Webアプリケーション開発で必要になるであろう機能のほとんどを初めから用意しており、Webアプリケーションが簡単に開発できるようになっています。そして、Webアプリケーションフレームワークの中でも人気のあるのがRailsです。

本記事では、Railsアプリを作成する方法について説明します。

Railsのインストール

開発環境の準備

Railsを動作させるために必要なソフトウェアをいくつかインストールする必要があります。なお、Windowsの場合は以下のRuby Installer for Windowsをインストールすることで、Railsの開発環境をセットアップできます。

M1チップ搭載Macで開発環境を構築するには以下の記事を参照してください。

Ruby

Railsに必要なRubyバージョンは2.5.0以降です。Rubyをインストールするには、以下のコマンドを実行します。

$ brew install ruby

後々のことを考慮するとrbenvを使ってRubyをインストールすることをおすすめします。rbenvは複数バージョンのRubyをインストールすることができ、簡単にバージョンを切り替えることができます。

# rbenvのインストール
$ brew install rbenv

# rbenvの初期化
$ rbenv init

ターミナルを再起動して設定を有効にします。

rbenvを使ってRubyをインストールするには、以下のコマンドを実行します。

# インストール可能な安定バージョン一覧を表示
$ rbenv install --list

# Rubyをインストール
$ rbenv install 2.6.3

# インストールしたバージョンを表示
$ rbenv versions
* system
  2.6.3 (set by /path/to/.ruby-version)

# バージョンを切り替え
$ rbenv global 2.6.3

# 現在のバージョンを表示
$ rbenv version
2.6.3 (set by /path/to/.ruby-version)

SQLite3

Macを使っている場合、SQLiteは初めからインストールされています。Windowsを使っている場合、上記のRuby Installer for Windowsの中にSQLite3も含まれています。

Node.js

以下のページからインストーラーをダウンロードしてインストールします。

Yarn

YarnはNode.jsのnpmパッケージを使用してインストールします。そのため、上記のNode.jsのインストールが完了してから以下のコマンドを実行してください。

$ npm install --global yarn

Railsのインストール

Railsをインストールするには、以下のコマンドを実行します。

$ gem install rails

以上でRailsアプリを作成する準備ができました。

Railsをはじめよう

Railsアプリの作成

Railsアプリを作成するには、以下のコマンドを実行します。

$ rails new AppName

上記のコマンドを実行すると、ディレクトリ配下に指定したアプリ名のディレクトリが作成され、その中にRailsアプリに必要な機能がインストールされます。今後、いくつもRailsアプリを作成することを想定し、適当なディレクトリに開発用のディレクトリを作成し、その中にRailsアプリを作成していくことをおすすめします。

$ mkdir ~/Products

利用可能なオプション

Railsアプリ作成コマンドを実行すると、環境にもよりますが、コマンド完了まで数分待つ必要があります。これは、Railsアプリを構成するすべての機能をインストールしているためです。しかし、必ずしもそれらすべてが万人に必要な機能とは限りません。Railsアプリの作成コマンドには様々なオプションが用意されており、オプションを指定することで特定の機能をスキップしたりすることができます。利用可能なすべてのオプションは--helpオプションを指定すると確認できます。

$ rails new --help

例えば、Railsアプリ作成時にWebpackerをスキップするには以下のコマンドを実行します。

$ rails new AppName --skip-webpack-install

以下のように、オプションを列挙したファイル(以下の例の場合、Options.txt)を指定することもできます。

$ rails new AppName --rc=Options.txt

また、以下のコマンドを実行することで、ほとんどすべての機能のインストールをスキップすることができます。

$ rails new AppName --minimal

ほとんどすべての機能のインストールをスキップするため、コマンドは数秒で完了します。スキップした機能は後から追加することもできるため、最小限の構成で始めて後から必要な機能を追加していくということが可能です。

以下は--minimalオプションを指定して作成したRailsアプリのGemfileです。

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.6.3'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main'
gem 'rails', '~> 6.1.4', '>= 6.1.4.1'
# Use sqlite3 as the database for Active Record
gem 'sqlite3', '~> 1.4'
# Use Puma as the app server
gem 'puma', '~> 5.0'
# Use SCSS for stylesheets
gem 'sass-rails', '>= 6'
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  gem 'listen', '~> 3.3'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

Railsアプリを作成したら、統合開発環境などで開きます。以下はVisual Studio CodeでRailsアプリを開く例です。

$ code AppName

テストサーバーの起動

Webアプリケーションの開発は、常にテストサーバーを起動して画面を確認しながら行っていくのが普通です。作成したばかりのRailsアプリですが、テストサーバーを起動して動作確認をしてみましょう。テストサーバーの起動コマンドは、必ずRailsアプリのディレクトリに移動してから実行してください。

# Railsアプリのディレクトリに移動
$ cd /path/to/AppName/

# テストサーバーを起動
$ rails server

テストサーバーが起動するまで数秒待ちます。テストサーバーが起動し、http://localhost:3000/にアクセスすると、以下のような画面が表示されます。

基本的にテストサーバーは常に起動している状態で大丈夫です。Railsアプリに変更を加えた場合でも、画面を更新するだけで即座に変更が反映されます。ただし、以下の場合はテストサーバーの再起動が必要になるのでご注意ください。

  • 新しくGemを追加した場合
  • モデル・データベースを変更した場合
  • 初期化設定を変更した場合

トップページの作成

上記の「テストサーバーの起動」セクションで確認した画面は、トップページを作成していない場合に表示されるデフォルトの画面です。このデフォルトの画面をオリジナルのトップページに変更していきましょう。

トップページを作成するには、最低でもコントローラーの作成、ビューの作成、ルーティングの設定を行う必要があります。

コントローラーの作成

コントローラーを作成するには、以下のコマンドを実行します。

$ rails generate controller Statics index

上記のコマンドを実行すると、app/controllers/ディレクトリ配下にstatics_controller.rbファイルが作成されます。

statics_controller.rb

class StaticsController < ApplicationController
  def index
  end
end

StaticsControllerクラスの中にindexというメソッド(Railsではアクションとも呼びます)がひとつ含まれています。indexアクションの中には何も記述されていませんが、Railsはコントローラー名とアクション名から自動的にレンダリングするビューを決定します(「暗黙的なレンダリング」という)。この場合、コントローラー名はStaticsでアクション名はindexなので、app/views/statics/ディレクトリ配下のindex.html.erbファイルを自動的にレンダリングします。

コントローラーについて詳しくは以下の記事を参照してください。

ビューの作成

ビューはコントローラー作成時に自動で作成されます。作成されたビューを変更します。app/views/statics/ディレクトリ配下のiindex.html.erbファイルを以下のように変更します。

index.html.erb

<h1>Railsをはじめよう</h1>

ビューについて詳しくは以下の記事を参照してください。

ルーティングの設定

ルーティングはコントローラー作成時に自動で追加されます。しかし、自動的に作成されたルーティングでは不十分なので、変更を加える必要があります。config/ディレクトリ配下のroutes.rbファイルを以下のように変更します。

routes.rb

Rails.application.routes.draw do
  # 以下を修正
  get '/', to: 'statics#index'
end

なお、上記はルートのルーティングを設定しているため、以下のように記述することもできます。

routes.rb

Rails.application.routes.draw do
  # 以下を修正
  root 'statics#index'
end

ルーティングについて詳しくは以下の記事を参照してください。

動作確認

オリジナルのトップページが作成できたので動作確認を行いましょう。テストサーバーを起動していない場合は起動し、http://localhost:3000/にアクセスすると、Railsのデフォルト画面から「Railsをはじめよう」とだけ表示する画面に変わったかと思います。これくらいの変更なら、テストサーバーの再起動を行わなくても画面を更新するだけで変更が反映されます。

まとめ

世の中にはたくさんのWebアプリケーションフレームワークが存在しますが、Railsはその中でも特に人気があります。当ブログにはRailsの使い方をイチから学習するための特設ページがあります。Railsを使ってWebアプリケーションを作ってみたいと思った方はぜひご覧いただければと思います。

関連記事

【Rails】Paranoiaを使用した論理削除(ソフトデリート)
# はじめに Paranoiaは、Railsアプリケーションで論理削除(ソフトデリート)を実現するためのGemです。 論理削除は、データベースのレコードを物理的に削除するのではなく、削除フラグを設定することで「削除済み」とみなす方法です。こ [...]
2024年7月20日 21:33
【Rails】activerecord-multi-tenantを使用したマルチテナントアプリケーションの作成
# はじめに マルチテナントアプリケーションでは、複数の顧客(テナント)が同じアプリケーションを利用するため、データの分離が必要です。 activerecord-multi-tenantは、このようなマルチテナント環境をサポートするための便 [...]
2024年7月18日 16:50
【Rails】RubyとRailsにおけるattr_reader, attr_writer, attr_accessorの概念と使用方法
# はじめに RubyとRailsの開発において、`attr_reader`,`attr_writer`,`attr_accessor`は非常に便利なメソッドです。これらは、クラス内でインスタンス変数に対するゲッターおよびセッターメソッドを簡単に [...]
2024年7月17日 18:11
【Rails】RubyとRailsにおけるyieldの概念と使用方法
# はじめに RubyとRailsにおける`yield`は、メソッドやテンプレートの中で動的にコードブロックを実行する能力を提供し、これによってコードの再利用性と拡張性が大幅に向上します。本記事では、RubyとRailsにおける`yield`の概 [...]
2024年7月17日 13:15
【Rails】AASMを使用してオブジェクトの状態遷移を効率的に管理
# はじめに Railsアプリケーションにおいて、オブジェクトの状態管理は重要な課題の一つです。AASM (Acts As State Machine) gemは、複雑な状態遷移を効率的に管理します。本記事では、AASMの基本的な使い方を解説して [...]
2024年7月16日 18:00
【Rails】RSpec + Swagger + rswagでアプリケーションのAPIをテストおよびドキュメント化する方法
# はじめに Railsアプリケーションの開発において、APIのテストとドキュメント化は重要な要素です。 RSpecはテストフレームワークとして広く利用されており、SwaggerはAPIの設計とドキュメント化を支援します。これらを統合するr [...]
2024年7月16日 14:27
【Rails】mailcatcherを使用して開発環境でメール送信をテストする方法
# はじめに mailcatcherは、開発環境でのメール送信をキャプチャするためのツールです。ローカルで送信されたメールをブラウザ上で簡単に確認できるようにします。mailcatcherをRailsアプリケーションで使用する方法について説明しま [...]
2024年7月15日 16:37
【Rails】impressionistを使用してページビューやクリック数を追跡する方法
# はじめに impressionist Gemを使用してRailsアプリケーションでページビューやクリック数を追跡する方法について説明します。 # 実装方法 ## impressionist Gemのインストール まず、impre [...]
2024年7月15日 14:18