学習の書き留め プログラミング勉強中

プログラミングで学んだことを日記として残して行こうと思います

今日の学習

今日学んだこと 2021/01/16

学習項目

MVC応用

学習内容

View

railsのコントローラーでの処理後、レスポンスでHTMLが表示されるのはAction Viewという仕組みを搭載しているから。
Action Viewとは、ざっくりいうとビューの機能がまとまっているもの
これによってビューファイルが見れるようになっている。
注意としては、ビューファイルがそのまま表示されているわけではなく、ビューファイルの内容がAction Viewにまとめられてブラウザに返却されているということ。
また、コントローラーで取得したインスタンス変数はビューファイルでそのまま使えているように見えているが、実際は裏側で色々と複数のメソッドを経て読み替えられた後、再度同じインスタンス変数としてセットされて使用している。

ヘルパーメソッドについて

ヘルパーメソッドの仕組み自体はざっくりいうと、例えば、<%= link_to %>で書いた場合、< a hlef >となるように処理されている。
んで、このヘルパーメソッドは自作が可能。 Helperというヘルパーメソッドを作成できるモジュール(インスタンスを生成できないクラス、主にメソッドようかな、多分)が app/helpers に用意されている。 そこに def メソッド名 ~ end で定義するとビューファイルで、<%= メソッド名 %>で使用することができる。

Controller

railsのコントローラーがコントローラーの機能を果たすのはコントローラーの機能ではなく正確にはAction Controller という機能を搭載しているため。なんか説明がよくわからんけど、、、笑 コントローラーの役割はリクエストを受け取り、レスポンスをかえすことであるため、細かい処理はモデルに記述するのが好ましい。
そうすることで、可読性を上げることができる。

サービスクラス

また、モデルに記述する際に処理が複雑になる場合、モデルの記述が複雑になる。そういった場合はサービスクラスに切り出すのが好ましい。 app/servicesを作成し、内容のわかるファイル名を作成する。

# app/services/sample.rb

class Sample
  def self.sample(text)
    # 切り出したい処理
  end
end

# app/controllers/sample_controller.rb

class SampleController < ApplicationController
  def sample
    @sample = Sample.sample(params[:text])
  end
end

セッションとクッキーについて

自動ログインだったり、一時的に自分の情報が保存されている経験があると思う。
これはセッションとクッキーの二つで成り立っている。

セッション

Webサービスにおいて情報を一時的に記憶しておく仕組みのこと。
rails では ssession[:sample] と記述することで行うことができる。

クッキー

焼くやつじゃないです。お菓子でもないです。じゃあなにそれ美味しいの?と言われても食べ物じゃないです(笑)
最近のサイトだとクッキーを使用していいですかとか聞かれるんじゃないかな?多分あれのこと。
クッキーとはブラウザが持っているデータが保存できる領域のこと。
ブラウザにあるセッションの情報の保存場所のことをクッキーと呼ぶ。
rails ではデフォルトでCookieStoreに保存されている。

セッションとクッキーの違いについて

なにが違うのかというと、セッションはあくまで仕組み、技術をさしている。ユーザー情報をを一時的に保存するまでのやりとり。
クッキーは場所を指しているということ。一時的に情報を保存している場所のこと。

Model

rails ではモデルの機能を実現するためにActive Modelを搭載している。
また、モデルによるデータベースの操作はActive Recordによって実現しているが、この技術はORMという技術に分類される。ActiveRecord自体はテーブル操作する際に使うプログラムをまとめたもののことを指す。

ORM

RDBのデータを、オブジェクト指向プログラミング言語でオブジェクトとして使用するために変換する技術

RDBSQL

Relational Database(リレーショナルデータベース)の略語。
関係データベースと訳され、データを複数の表として管理し、表と表の関係を定義することで、複雑なデータの関連性を扱えるようにしたデータベース管理方式。
今回では、フツーにデータベースと思って良いと思われ。
実際にRDB、データベースを操作しているのはSQLと呼ばれる言語。
つまり、ActiveRecordなどのORMのメソッドは、SQLに変換されるためテーブルの操作が可能になる。

SQLの命令には大きく3つに分類されており、
データを定義するDDL(Data Definition Language)
→DBやテーブルを作成、削除
データを操作するDML(Data Manipulation Language)
→データを探す、登録する、更新する
データを制御するDCL(Data Control Language)
→変更を確定する、取り消す
になる。

まとめ

かなりrailsのコアの部分について学習したと思う。ここにげない。railsに振り回されるのではなく、今後も付き合っていくためにゆっくり自分に落とし込んでいく。