2ステップで超簡単！devise導入方法！！(rails5版)

どうもこんにちは！
今回初投稿のこの記事では、deviseを使ってログイン機能の実装方法をお伝えします。
インストールから実際に表示させてログインするまでの流れを解説したいと思います。

#deviseとは
そもそもdeviseとは何でしょうか。
deviseは、ログイン機能やユーザ登録機能などを簡単に実装できるgemのことです。
初期状態では、**emailとパスワード**を設定してログイン、サインアップすることができます。
会員機能を実装したい際にはぜひ使いたいgemですね！

#ステップ１：deviseをインストール
まずはdeviseをインストールしましょう。


Gemfileの一番下に「gem 'devise'」を書き込みます。

```Ruby:Gemfile
gem 'devise'
```
追加したgemをアプリケーションに読み込ませます。
以下をターミナルで打ち込みましょう。

```
$ bundle install
```
そしてdeviseの初期設定を行います。

```
$ rails g devise:install
```
以下のような表示になればインストールは成功です！
<img width="631" alt="スクリーンショット 2020-06-11 17.47.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495367/ea4d0640-8c83-de09-edbb-c6de07d489c2.png">


#ステップ２：ログイン画面を表示する
それでは実際にログイン画面を表示していきましょう。
今回は、ユーザ情報を保存するためのユーザーテーブルをデータベース内に作っていきます。
テーブル名は「User」です。
以下をターミナルに打ち込みましょう。

```
$ rails g devise User
```
本来、１からテーブルを作成する場合はテーブルと一緒にカラムも作成してあげる必要がありますが、deviseを使用すると**ユーザーテーブルとカラムを自動的**に作成してくれます。
実際に作成されたマイグレーションファイルを確認してみましょう。

```ruby:db/migrate/（年月日時分秒）_devise_create_users.rb
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :email,              null: false, default: "" #メールアドレス
      t.string :encrypted_password, null: false, default: "" #パスワード

      ## Recoverable
      t.string   :reset_password_token
      t.datetime :reset_password_sent_at

      ## Rememberable
      t.datetime :remember_created_at

      ## Trackable
      # t.integer  :sign_in_count, default: 0, null: false
      # t.datetime :current_sign_in_at
      # t.datetime :last_sign_in_at
      # t.string   :current_sign_in_ip
      # t.string   :last_sign_in_ip

      ## Confirmable
      # t.string   :confirmation_token
      # t.datetime :confirmed_at
      # t.datetime :confirmation_sent_at
      # t.string   :unconfirmed_email # Only if using reconfirmable

      ## Lockable
      # t.integer  :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
      # t.string   :unlock_token # Only if unlock strategy is :email or :both
      # t.datetime :locked_at


      t.timestamps null: false
    end

    add_index :users, :email,                unique: true
    add_index :users, :reset_password_token, unique: true
    # add_index :users, :confirmation_token,   unique: true
    # add_index :users, :unlock_token,         unique: true
  end
end
```
ログイン機能に必要なカラムは、メールアドレスとパスワードです。メールアドレスはt.string :email,……の行、パスワードはt.string :encrypted_password,……の行です。

確認ができたら、このファイルをデータベースへマイグレーションします。

```
$ rails db:migrate
```

ここまでやれば準備完了です！
最後にブラウザで表示してみましょう。

rails s でサーバーを起動し、URLの後ろに**「/users/sign_in」**を入力してログイン画面を開きましょう。
<img width="266" alt="スクリーンショット 2020-06-11 19.08.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495367/305c0048-15f8-07b0-8c6b-48b7b825df2c.png">
このように表示されるはずです。
続いてURLの後ろに**「/users/sign_up」**を入力してサインアップ画面を開きましょう。
<img width="315" alt="スクリーンショット 2020-06-11 19.10.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/495367/6eb364d1-b13f-be00-3a50-0504895d220f.png">

この表示がされれば完成です。
あとはお好きなように書き換えてオリジナルのサイトを作りましょう！
#　
最後までお読みいただきありがとうございました！
今後さらに詳しい記事や発展的な内容を書いていきたいと思いますので、読んでいただけると嬉しいです。
ツイッターもやってます。日常のつぶやきやごく稀に情報発信もしておりますので、フォローしてくださると喜びます☺️→@saketi_sei