Ruby on Railsでユーザー認証機能を実装したいのだけれど、どのようにすればいいのか分からないという方はいないでしょうか?
ユーザー認証を一から構築しようとすると手間がかかりますし、セキュリティ面を考慮して一からプログラムを作ろうとすると複雑になりがちです。
そこで、ある程度きちんと作られたライブラリを利用することで比較的簡単にユーザー認証を実装することができます。
ここでは「Devise」というユーザー認証ライブラリの使い方を解説していきます。
是非、最後まで読んで頂けたらと思います。
目次
1.deviseとは?
ユーザー登録が必要なWebサイトは世の中にたくさんあるかと思います。
ユーザー登録機能を導入することで「ユーザー毎に表示するコンテンツを変えることができる」、「不適切な投稿を防ぐことができる」など様々なメリットがあります。
このような時に用いられるのがユーザー認証というシステムです。
私たちも普段使用している機能なので想像がつくかと思いますが、ユーザー認証システムとは予めidやパスワードが登録されたユーザーのみが利用できるようにする機能のことです。
一からユーザー認証システムを作ることもできますが、セキュリティ面を考えると少し心配ですよね。
例えば、個人情報が流出してしまうと大変な問題につながってしまうかと思います。
そこで「devise」というライブラリを導入することである程度きちんと作られたユーザー認証システムを導入することができます。
具体的にdeviseを利用することで以下のような機能を実装することができます。
- サインアップ機能
- サインイン機能
- アカウント編集機能
- パスワード変更機能
- メール認証機能
- アカウントロック機能
2.deviseのGemを実行する
このページはWebアプリケーションの作成、Modelの作成、indexアクションの作成を終えているという前提でお話を進めていきます。
ユーザー認証機能である「devise」という機能はRailsに標準で組み込まれているわけではありません。
そのため、別途「devise」をインストールする必要する必要があります。
インストールするためにRubyGemというRubyのパッケージ管理プログラムを利用します。
まず始めに「WebApp」というWebアプリケーションの「Gemfile」というファイルを探して開いてみましょう。
「Gemfile」というファイルを開いたら、末尾に「gem ‘devise’」という文言を追記してください。
このように記述したら、「WebApp」というWebアプリケーションに移動してコマンドプロンプトから以下のように実行してください。
bundle installを実行すると必要なライブラリがインストールされます。
次のコマンドプロンプトが打てるまで作業を待ちましょう。
これが完了すればdeviseのGemを実行完了です。
3.deviseのインストールと設定を行う
次にdeviseのインストール作業を行います。
これをコマンドプロンプトから行うので、以下のように実行してください。
これでWebAppというアプリケーション内にdevise利用のための設定ファイルが作成され、deviseが利用できる状態になります。
次にdeviseという機能を生成します。
以下のようにコマンドプロンプトを実行してください。
deviseの後のuserはdeivse用のモデルの名前です。
上記のようにコマンドプロンプトを実行することで認証機能を使用できるようになります。
route.rbには「devise_for :users」が追記されます。
devise_forはdeviseのヘルパーメソッドです。
devise_forのあとにモデル名を指定すると必要なルーティングを自動で行ってくれます。
「devise_fo :user」と追記されることで以下のようなルーティングが自動生成されます。
次にモデルを生成したのでマイグレーションする必要があります。
マイグレーションファイルを見てみましょう。
マイグレーションファイルを見るとdeviseで定義されたモジュール設定が記述されています。
どのようなモジュール設定があるのか確認してみましょう。
DatabaseAuthenticate
データベースに保存されたパスワードの検証とパスワード暗号化を行います。
Recoverable
パスワードのリセットを行います。
Trackable
サインイン回数・時刻・IPアドレスの保存を行います。
Confirmable
メール送信による登録確認を行います。
Lockable
一定回数ログインに失敗した際のアカウントロックを行います。
Timeoutable
一定時間経つと自動でログアウトさせる機能です。
Omniauthable
twitterやFacebookなどのSNS認証を追加する機能です。
Validates
Emailやパスワードのバリデーションを追加する機能です。
以下のようにコマンドプロンプトから実行しましょう。
これでuserテーブルが生成され、deviseの機能が利用可能な状態となりました。
4.deviseのビューの作成を行う
次にdeviseのビューの作成を行いましょう。
以下のようにコマンドプロンプトから実行しましょう。
これを実行することでビューが一発で生成されます。
色々と自動生成されましたが、フォルダ毎に内容を見ていきましょう。
confirmations | メール認証を行うためのものです。 |
---|---|
mailer | メールで連絡する操作を行うためのものです。 |
passwords | パスワード作成、変更などの操作を行うためのものです。 |
sessions | ログインを行うためのものです。 |
shared | リンク作成のコードをまとめたものです。 |
unlocks | ロックされたアカウント解除のためのものです。 |
これらdeviseを利用するために必要なものなので、しっかりと覚えておきましょう。
5.deviseのヘルパーメソッド
deviseをインストールすることでヘルパーメソッドを利用することができます。
よく使用するヘルパーメソッドを見ていきましょう。
current_user
現在ログインしているユーザーのレコードを取得できます。
user_signed_in?
ユーザーがサインインしているかどうかを判定できます
authenticate_user!
ログイン済ユーザーのみにアクセス許可を行うことができます。
6.Ruby on Railsを学ぶことができるオススメの教材
Ruby on Railsを学習している皆様にオススメの教材をご紹介させていただきます。
現場で使える Ruby on Rails 5速習実践ガイド
以下の本はRuby on Railsの学習を一通り終えてある程度知識を身につけた方にオススメしたい本です。
「現場で使える Ruby on Rails 5速習実践ガイド」は現場で実際にどのように使われているのかという視点も交えて解説されています。
そのため、初心者の方が次のステップに進むために最適な本となっていますので、オススメです。
これらの本で是非学習を進めてみてはいかがでしょうか?
レベル別におすすめの本も紹介していますので、どのような本がオススメか知りたい方はこちらもご覧になって下さい。

Udemy
UdemyではRuby on Railsを学ぶことができる講座を多数取り扱っています。
以下の記事でRuby on Railsを学ぶことができるオススメの講座をまとめていますので、よかったらご覧になって下さい。

プログラミングスクール
TechAcademy、WebCamp、CodeCamp、Tech CampなどでRuby on Railsを学ぶことができます。
それぞれ無料体験も行っているので、どのようなものか試してみるのもいいでしょう。
以下の記事で各プログラミングスクールをまとめているのでこちらもよかったらご覧になってください。









7.ポイント
- deviseは認証機能を実装できるGemのことです。
- 「rails g devise モデル名」と実行することでモデル作成を行うことができます。
- 「rails g devise:views モデル名」と実行することでビュー作成を行うことができます。