はじめに
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アプリケーションを作ってみたいと思った方はぜひご覧いただければと思います。