20201017_アウトプット

アプトプット画像

学んだこと(5時間半)

なぜビュー反映させる時に、raw(文字列)をする必要があるの?

  • クロスサイトスクリプティングXSS:Cross Site Scripting)が関係していた。

  • クロスサイトスプリクティングとは、フォームなどのユーザーが自由に入力できる場所に、JavaScriptやhtmlの罠を仕掛け、罠のスプリクトを実行した人の個人情報が盗んだり、悪意のあるソフトウェアに感染させたりする仕組みのこと。

  • それを防ぐには、ユーザーが自由に記入できる場所において、悪意のあるプログラムを書けないようにする。

  • 書けないようにするために、入力値を制限する方法や、エスケープ処理といって特殊文字(<・>・&等)をただの文字列にする必要がある。

  • エスケープ処理に使えるのがrawメソッド。「<」「>」「&」のような文字を「&lt;」「&gt;」「&amp;」のような無害な文字列に置き換えることができる。

こちらの記事が分かりやすく勉強になりました。
(一部、引用させていただきました。)

viewを深堀り

  • form_withやlink_to等、ビューで使える「ヘルパーメソッド」の戻り値は、HTMLの要素(文字列)になるよ

  • すでに用意されているヘルパーメソッド以外にも、自作することができるよ

  • その時に、「Helper」と呼ばれるモジュールを活用しよう(この中に、繰り返し同じ処理を記述することによって、ビューの可読性が上がるよ)

【application_helper.rbの記述】
module ApplicationHelper
  def sample
    # sampleというヘルパーメソッドです
  end
end
【index.html.erbの記述 メソッド名書くだけでOK】
<%= sample %>

忘れていたcollectionとmemberの違い

  • そもそも、collectionとmemberはルーティングに設定するもの

  • ワード検索を設定したい時は入れ子構造で設定するよ(入れ子構造で設定するのは、今回7つのアクションがあってのワード検索だから)

アクション rails routesで見たときの違い
collection :idつかない
member :idつく

つまり、検索ヒット後に、:id指定が必要なページにいくのかどうかで決める。


controllerを深堀り

  • コントローラーは「リクエストを受け取り、レスポンスを返すこと」が仕事なので、細かいデータの処理を行う仕事は、モデルに任せよう(曖昧検索・ワード検索・DBからのデータ取得等)

  • モデルに任せる以外にも「サービスクラス」という概念もあるよ

  • サービスクラスとは、モデルに記述処理を切り出せる機能のことだよ

ブラウザにおける情報の一時記憶

  • セッションとは、Webサービスにおいて情報を一時的に記憶しておく仕組みだよ(買い物のかご情報など)

  • コントローラーにハッシュに値を追加するような記述で使用できる(クッキーストアにハッシュ形式で保存される)

  • 実はdeviseにその機能が実装されており、だからログイン時に前に記入した情報が残っていた

class TestsController < ApplicationController
 def index
  session[:sample] = 1
 end
end
  • クッキー(Cookie)とは、「ブラウザ」が持っているデータを保存できる領域のこと(データベースじゃないよ!!)

  • クッキーストアとは、Ruby on Railsでセッションを用いる際の、デフォルトの保存先のこと。この保存先はセッションストレージと呼ぶことが一般的。

レスポンスの復習

  • レンダリングとは、指定したHTMLのビューファイルを画面に描画すること

  • JSON(ジェイソン)とは、データを扱う場合のフォーマットのこと。



積み残し(復習したいこと)



感想

  • 教室に行くと集中できる。理由を考えたところ、人とのスペースが十分にあることと、椅子の座りごごちがいいことと、プログラマーを目指す仲間とたまに話して息抜きできるためだと思う。

  • 今日はオンラインでしか会ったことのない方と会えて嬉しかった。個人アプリを見せてくれた。スマートなところがで素敵で、MVCを活かした設計だった。

  • 共通点の多い、私と同じ悩みを持っている方とお話しできて嬉しかった。勇気をもらえた。悩みとは、どんな時も「勉強しなきゃ‥」と心のどこかでずーっと感じていたり、上手にリフレッシュできないという悩み。

  • 上記悩みについて、最低限の時間を目標として、それ以上の時間はボーナスタイムにした方が自分にはあっているのかも。(そうすることで、それ以外の時間は休んでもいいんだよ、と自分を許すというか)

  • オブジェクト指向に関する概念をもっと知識を深めたくて、隙間時間に「オブジェクト指向でなぜつくるのか(平澤 章 著)」の本を読み始めた。まだ始めの部分だが、以前は「機能」中心に作っていて、更新や手直しをすることがとても大変だったこと。そこからパーツ分けをするようになりオブジェクト指向のおかげで「楽になっていった」こと。まだ始めの部分だけど「なぜ」が分かりやすくて、勉強になる。