体重133キロからのプログラミング

体重はちょっと減って今125キロです。

人生40日目

Railsチュートリアル(8)2週目

基本的なログイン機構を実装する章。
sessionの使い方とかfixtureを用いたテストの方法など。
じっくり読んでるので理解はできるけど、モヤッとくる部分が浮き彫りになる形だった。
moduleとclassとか、incrudeとrequireとか。
結構調べて色々読んだのでややモヤくらいになった。

 今日の学び

params[:session][:email]のような入れ子ハッシュについて

sessionメソッドを使ってcookieにログイン情報を書き込むことを学ぶあたりの話。
恥ずかしながらRubyの基本的な部分もおぼろげなままやっていて、この辺りの書き方?にちょっと違和感があったので納得するまで調べた。
まず、Railsチュートリアルではフォームの入力内容をparams[:session]で受け取る。(form_for(:session ....)となっているため)
そして入力情報は
{email: "hogeeeee@fugamail.com", password:"boooooooom" }
のような形でparams[:session]に渡される。
つまりこれは
params{session: {email: "hogeeeee@fugamail.com", password: "boooooooom" }}
という構造になっている。
ハッシュのキーと値はそれぞれ対応していて、params[:session]で取り出せる。
[:session]の中には入力内容のハッシュが入っている。
それもまたキーと値が対応しているため、たとえばメールアドレスを取り出したければparams[:session][:email]のようにすればいい。
文章にすればこれだけのことなんだけど、感覚だけでやってるとモヤっときてしまった。

moduleとclass、includeとrequire

初学者は結構この違いが分からず混乱してしまうようで、ぼくも漏れなくそのひとりです。
完全解決とまではいかないものの、ややモヤくらいにできた。
開発用語で調べて記事を読むと色んな表現があってわかりづらかったので、まずは辞書で調べた。

module

ソフトウエアやハードウエアを構成する部分のうち,独立性が高く,追加や交換が容易にできるように設計された部品。

class

オブジェクト指向プログラミングにおいて,オブジェクトの構造を記述するための抽象データ型。属性とメソッドにより定義される。

「module」は処理そのもののこと、という感じで書いてた記事があったが、なるほどなという感じだった。
辞書にもあるが、「module」は「部品」であり「class」は「構造」なのだから全く別物なんだな。うん。(ややモヤ)
「module」は「include」で「ミックスイン」することで組み込むことができる(変換でミックス院ってなって花京院コラ作りたくなった)
「class」は「A<B」のようにすることで「継承」して使うことができる。確かにこの辺も「違う」。
ちなみに「require」は「外部ファイルやライブラリ」を読み込むために使うので「include」とは全然違う。

結局のところ、「違うものなんだな」ってことだった。
これをそれぞれ別のものとして扱うことによるメリットはパッと思いつくものではないが、それは触っていくうちに分かることであって、さわる前からビクビクしなきゃいけないようなことじゃない、っていうことにしてややモヤながら先に進むことにした。

JavaScript(1)(Progate)

JSもさわり始めた。やっとかよって感じですが、複数言語並行することで混乱しないかなっていう心配があって今日まで触らなかった。
結果全く混乱することもなく、むしろRubyで学んだことを活かせるのでいい感じだった。
結構楽しいし、スイスイ進むので明日からこっちもちょっとずつやっていこうと思いました。