Yuki Matsumoto

To be engneer soon / Ruby on Rails

ログイン機能を作成する(パート1:セッションとCookieについて)

2019-02-22 Yuki MatsumotoRuby on Rails

今日はRailsに関する技術書を2冊買ったので学んだ内容をブログに綴ろうと思います。今回はRuby on Rails 速習実践ガイドで学んだ内容の一部をアウトプットがてら書いていきます。まずは1,2,3章は飛ばして4章から進めていきます。理由としては3章まではだいたい今までの学習でカバーできており、余計な学習時間を割きたくないので、必要な内容を手っ取り早く理解していこうと思います。具体的にはログイン機能を作っていきます。今回作る自作アプリには正直必要ない機能ですが、練習も込めて実装していきます。

セッションとCookieについて

セッションとCookieについて軽く説明します。

セッションについて

webアプリケーションはブラウザからサーバーへHTTPリクエストを送り、HTTPレスポンスを受けて画面を表示します。HTTPリクエストを繰り返し行うことで順番に操作を行っていきます。しかしHTTPはステートレス(状態を保持しないプロトコル)なため、同じユーザーから送られてきたリクエストから次のリクエストへ情報を引き継ぐことができません。そのためwebアプリケーションではサーバー側にセッションという仕組みを用意して、1つのブラウザから連続して送られる一連のリクエストの間で”状態”を共有できるようにしています。

Railsではコントローラーからsessionメソッドを呼び出すことでセッションにアクセスできる。セッションにデータを入れるには任意のキーを指定し値を格納します。

session[:user_id] = @user.id

値を取り出す場合は以下のように書く。

@user.id = session[:user_id]

Cookieについて

セッションがアプリケーションサーバー側で独自に実行される仕組みであるのに対して、CookieはブラウザとWebサーバーの間でやりとりされるため、より汎用的な仕組みです。CookieはWebサーバーからwebブラウザ側へCookie情報を送信 -> 受信 -> 送信 -> 受信 -> 利用 -> 更新 -> 保存のステップを経ます。

Railsの場合はcookieというメソッドをブラウザから受け取り、送り返すCookie情報にアクセスし、データを取得したり設定することができます。基本的にはセッションの利用で事足りるため、直接Cookieを操作することはあまりないです。また、Railsではセッションデータの保管場所を複数の中から選ぶことができますが、デフォルトではその保管場所もCookieとなっています。

まとめ

今回はセッションとCookieについて学びました。座学となってしまい、実際に手を動かしてコードを書くことができませんでした。明日はUserモデルを作っていこうと思います。今作っているアイデア投稿アプリはこのログイン機能が実装できたら完成とします。3月には次のアプリ作成に取り掛かります。