Devise導入ガイド:Rails 7/8対応のインストール〜初期設定手順【保存版】
生徒
「Railsでログイン機能を作りたいんですが、何から始めればいいですか?」
先生
「RailsではDeviseという仕組みを使うと、ログインやログアウトを簡単に作れます。」
生徒
「プログラミング初心者でも使えますか?」
先生
「大丈夫です。家の鍵を付ける感覚で、順番に設定すれば動きます。」
1. RailsとDeviseの基本を知ろう
Railsとは、Webアプリケーションを作るための道具箱のような存在です。ログイン機能や会員登録など、よく使う機能を効率よく作れるように設計されています。RailsではMVCという考え方を使います。これは、画面、処理、データを役割ごとに分ける設計方法です。
DeviseはRails用の認証機能をまとめたライブラリです。認証とは「この人は本当に本人か」を確認する仕組みで、IDとパスワードのチェックを想像すると分かりやすいです。Deviseを使うと、ログイン、ログアウト、パスワード管理、メール確認までまとめて用意できます。
2. 開発環境を準備する
まずは開発環境を整えます。開発環境とは、アプリを作るための作業机のようなものです。Railsを動かすにはRubyという言語とBundlerという部品管理の仕組みが必要です。
RubyはRailsの心臓部分で、Bundlerは必要な部品を自動で集めてくれる係です。DeviseもBundlerを通して追加します。Node.jsやデータベースも必要ですが、ここでは「Railsが動く状態」を作れている前提で進めます。
3. Railsプロジェクトを作成する
Railsアプリはrails newという命令で作ります。これは新品のノートを一冊用意するイメージです。中には最初からたくさんのフォルダが入っています。
rails new devise_sample
cd devise_sample
この中にあるappフォルダが、実際にコードを書く場所です。設定ファイルやデータベース設定も最初から用意されているので、初心者でも迷いにくくなっています。
4. Deviseをインストールする
次にDeviseを追加します。これは家に防犯システムを取り付けるような作業です。まずGemfileという一覧表にDeviseを書きます。
gem 'devise'
その後、Bundlerでインストールします。
bundle install
インストールが終わったら、Deviseの初期設定を行います。
rails generate devise:install
これでDeviseの基本設定ファイルが作成されます。
5. ユーザーモデルを作成する
ユーザー情報を保存するために、ユーザーモデルを作ります。モデルとは、データを保管する箱の設計図です。
rails generate devise User
この命令で、ユーザー用のテーブルとモデルが作られます。名前、メールアドレス、暗号化されたパスワードなどが自動で用意されます。
rails db:migrate
これでデータベースにユーザー用の箱が完成します。
6. ルーティングとログイン確認
ルーティングとは、URLと処理を結びつける地図のようなものです。Deviseを入れると、ログインや登録用のURLが自動で追加されます。
Rails.application.routes.draw do
devise_for :users
end
これだけで、ログイン画面や新規登録画面が使えるようになります。
7. コントローラでログイン必須にする
ログインしている人だけが見られる画面を作るには、コントローラで制限をかけます。コントローラは操作係のような存在です。
class ArticlesController < ApplicationController
before_action :authenticate_user!
def index
end
end
これでログインしていない人は、自動的にログイン画面へ案内されます。
8. ビューでログイン状態を表示する
ビューは画面表示を担当します。Deviseではログイン中かどうかを簡単に確認できます。
<% if user_signed_in? %>
<p>ログイン中です</p>
<% else %>
<p>ログインしていません</p>
<% end %>
これで画面に応じた表示を切り替えられます。
9. Deviseを使うメリットと注意点
Deviseを使う最大のメリットは、安全な認証機能を短時間で導入できる点です。パスワードは自動で暗号化され、メール確認機能も簡単に追加できます。
一方で、自動生成されるファイルが多いため、最初は戸惑うかもしれません。しかし「鍵付きの家が最初から完成している」と考えると安心です。