20200921_アウトプット
学んだこと(Railsテストコード・Rubyの復習)
テストコードの流れ(結合コード)
- binding.pryを挙動確認したい直前でいれる
- コマンド内で試す
- あっていたらVSコードに反映させる
上記の流れを理解できた。「true」が出たときや思い通りの動きをすると嬉しい(笑)
サポートモジュールについて
繰り返し行う挙動をまとめることができる機能。Rspecに入っている。
- 繰り返す機能を切り出す(spec配下にディレクトリとファイルの作成する)
- 読み込み体制を整える(rails_helper.rbのコメントアウト解除と、configの追加)
- 同じ挙動を繰り返していた部分を、1.に置き換える。
の3ステップで行う。ポイントとしては、
- 切り出したモジュールのファイル名はスネークで表記し、それを読み込む側(ファイル内のモジュール名や、ヘルパーファイル内の記載)はアッパーキャメルで表記する。
- モジュール側と、置き換えられる側はメソッド名と引数の関係になっている。
多数多の関係について
- エンティティとは、サービスで扱われるデータ自体のこと。
- ハッシュタグや、チャットルーム機能などの、”多数多”になる関係のデータベースは「中間テーブル」を作成して対応する。
- 「中間テーブル」を作成するモデルには、has_manyに加えて、throughオプション(その中間テーブルを”通って”・”経由して”の意味)をプラスする。
threwオプション日本語的にもわかりやすいと思った。
組み合わせの数だけレコードが蓄積されるということで莫大な数になるのでは?!とも感じた。
rubyの復習
- あらゆる「モノ」の動作を「メソッド」という(話す、歩く、食べる、笑う、加速する、減速する、数字をカウントする、文字列を数列に変える等)
- クラスに定義するメソッドは、クラスメソッドと、インスタンスメソッドの2種類ある。
- 異なる結果を返す動作=「インスタンスメソッド」(車の色・重量)
- 共通の結果を返す動作=「クラスメソッド」(車が走る)(self.メソッド名で表記)
- 同じクラス内の、別のインスタンスメソッド内でも使用可=「インスタンス変数」(@つき)
- 記述してあるインスタンスメソッド内でしか使用できない=「ローカル変数」
- 代入したい時には、引数を使って外から情報を引き渡す。
- 定義した変数が使える範囲のことをスコープと呼ぶ。
- Rubyではeachメソッドの時にdo endが省略できるが、それがRailsになった時、省略した際、動くときと動かない時がある。それは、省略してもシンプルな構造であれば、Railsが読み解けるが、複雑な構造の時には、判断できないため。冗長な記載を防ぐために部分テンプレートにしたり、処理を一つのモジュールにしたりすることは大切だが、単語の省略というのは可読性のためにもしないことが多いと学んだ。
理解が浅いところ(つみ残し)
- ヘルパーメソッド(フォーム)
- ハッシュ・シンボルの概念 → 10%くらい理解進んだ
- タグ・セレクタ・id
感じたこと
昨日の戦略を実践。
迷わず、プログラミングの学ぶ方法の選択と集中できたのがよかった。
予め、こなす作業時間を決めておくと、「あと何時間」とゲーム感覚になるのが楽しい。(決めた時間を超えた後の学習は、達成感とボーナスタイムの感覚もある。)
一気に勉強していたのでこんがらがっていたが、rubyの復習を始めたことで、「配列やハッシュ、シンボル・def endなどのメソッド・変数等」rubyの基本的な部分と、Rails特有の「MVC(アクティブレコードなどを含む)」と、「gemによる便利機能(deviseやrspec等)」などが、パズルのように組み合わさって、一つのアプリケーションができる、という全体像が見えた気がした。
次のチャットアップを作る時は、全体を俯瞰しながら進めようと思う。
フワッと概念は理解し始めたが、具体的な細かい部分がかけなくていつもエラーになってしまい悔しいので、基礎部分の書き方をプロゲートなどで補う。