人生45日目
Railsチュートリアル⑾2週目
⑾ってこんなにほっそりしてるのか…。
主にメイラーの使い方を学んだ。本当に学べてるか?
だんだん難しくなってきて、1日1章がやっとですね。2週目なのに。
「じゃあ、/usersと/user/:idの統合テスト書いてみよっか」とかいう爆発的に時間がかかる演習が突然出てきたのでこれは明日に回すことにした。
知らなかったことをノートに書いて、中のコードは出来るだけ自分で打ってみるスタイルでやってる。(いわゆる写経)
ノートにも書いてるからW写経だ!!!!!
2週目も終わりが見えてきた、早く自分で何か作りたい。
1つ作り終えたら復習をかねて3週目をやりつつ、チュートリアルの解説なんかもできればいいなと思った。
なんでも勉強には「ラーニングピラミッド」っていうのがあるらしく、人に教えるのが一番勉強になるらしい。
人に教える場合、その内容の定着率は9割にも及ぶとか。Railsチュートリアル解説したら実質俺がチュートリアルやん!
チュートリアル山順平って呼んで!!!!!
人生44日目
Railsチュートリアル⑽2週目
indexページ実装・ユーザー削除機能実装。
これでRESTの要件を満たしたページができたらしい。
やればやるほど、Railsってすげーんだなってなる。
<% @users.each do |user| %> <%= render user %> #パーシャル呼び出し <% end %> これを <%= render @users %> だけで呼び出せる(sugosugiru)
これの何がやべーって、パーシャルも含めて呼び出せること。
中でどう動いてるのかすごくきになるので、2週目完走後調べてみようと思う。
Heroku死んでた
そういえば今日、チュートリアルの章末でデプロイしようとしたらできなくて、なんでだろうなと思ってTwitterで検索してみたらHerokuさんが落ちてた。
RailsチュートリアルもHerokuアプリみたいで、繋げなくなってしまったので今日はここまで!!(大義名分を得た)
人生43日目
Railsチュートリアル(10)2週目
2/3くらいまでやった。かなり複雑になってきた。
この辺まで来ると最初の方にやったことを覚えてないのでメソッド名にピンとこなかったりするので大変である。
1週したはずなのに初見のような内容が多い。あ、テスト飛ばしたからだ。
今は読めばわかるっていう段階になってるので成長してるのでは、と思う。
早く2週目を終えてポートフォリオ作りたい。
就活にポートフォリオ関係なくね?派と必須派がいるみたいで怖い。
SES反対派と賛成派もいる。
僕はSESからキャリアスタートしようと思ってるしポートフォリオも作ります。
逆張りおじさんが蔓延るおかげ?で「人生は自分で選べ」という本質が浮き彫りになってる気がする。
人生42日目
Railsチュートリアル⑼2週目
この章難しくね!?!?!?!??!?!?!?!?うわあああああ!!!!!
ってなった。ややモヤなのでこの辺りはもう一周やっておきたいかなあ。
JavaScript(2)Progate
結構簡単だと思ってたけどややこしさの片鱗が出てきた。
テンプレートリテラル
Rubydでいう変数展開。
`hoge${piyo}huga`
"`"バッククォートで囲まないといけないところ、"${}"を"#{}"と間違えちゃったりが多い。慣れだろう。がんばろ。
人生41日目
Railsチュートリアル⑼2週目
半分くらいまでやった。ちょっとサボりすぎちゃったかもしれない。
正直言ってかなり難しい。あんまり理解できないので明日は9章の頭から復習します。
今日の学び
attr_accessorについて
railsチュートリアルの内容でいえば、「ユーザーオブジェクトに仮想的な属性を付与する」ために使っている。
外部から属性を読み書きできるようにするためのもの。
attr_accessorはattr_writerとattr_readerを合わせたもの。
辞書によると「access 」は 「コンピューターで,記憶装置や周辺機器にデータの書き込みまたは読み出しをすること」。
今回も完全に合致している。
思うに、メソッドがどうなっているかわかりにくい時はまず辞書で単語の意味を調べてみて、それからGoogleで検索して記事を読むほうが圧倒的に理解が早い。
今後もこの方法で勉強していきたいと思った。
今日の困り
本質的なことじゃないのかもしれないけど、一度うーんと思うと前に進めない。
user_idとかなんども出てくるけどユーザーオブジェクトにそんな属性ないしこれってなんだっけ?←これで30分止まる
Railsがよしなにしてくれる部分と、自分がどっかで定義した変数がごっちゃになってしまう。
多分慣れなんだと思うけど、結構大変である。
人生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で学んだことを活かせるのでいい感じだった。
結構楽しいし、スイスイ進むので明日からこっちもちょっとずつやっていこうと思いました。
人生39日目
なんか人生の日数に対して記事数がおかしくね?と気づいたのが昨日。
やってしまっていたので調整しておいた。なんなら昨日やったのRailsチュートリアル6章なのに5章とか書いてるし、深夜のブログ執筆の危険性を表している。
Railsチュートリアル⑺
7章からRailsのことばかりになってくるチュートリアルくん。
1週目のsample_appを見るに、この辺から心が折れてるっぽい。
ネットリと舐め回して5時間くらいで走破。わからない部分を徹底的に潰した。
RESTアーキテクチャの話が出てくるんだけど、これがまあわかりにくい。
なぜかというと言葉の表す範囲が広すぎる(定義が曖昧)から。
感覚的に掴んで、人によっては意味合いも違ってくるため文脈で判断するしかなさそう。
RESTアーキテクチャが〜って日常的にエンジニアが言ってるのかはわからんけども。
学び
本格的にRailsみが増してきたので7章以降は学びもここに記すことにする。
"assert_select"なんでも指定できる
assert_select "div#id_name"
<div id = "id_name">
が存在することを宣言assert_select "div.class_name"
<div class = "class_name">
が存在することを宣言assert_select 'form[action="/signup"]'
<form action = "/signup">
が存在することを宣言
(form_forメソッドで送信先urlを明示的に指定すると、それに対応したアクションを呼び出すformタグが生成される)
URLの違和感
例えばユーザー登録に失敗した際など。
ルートが以下のようになっていると…
get '/signup', to: 'users#new' resources :users
ユーザー登録ページのURLは/signup
でusers#new
には対応するビューがある(登録ページなので当たり前)
登録情報の送信先は名前つきルートのルールに従うと、users_path
になる。
users_path
に対応しているのはusers#create
なのだが、createアクションにはビューがない。(作ることはできる)
ここで登録に失敗すると、見た目は変わらないのにURLが/users
となるのでなんだか気持ち悪い。(幾らかのエラーメッセージも添えられてる)
なのでルートを
get '/signup', to: 'users#new' post "/signup", to: "users#create" resources :users
のようにすることで、ユーザー登録に失敗した場合などでもURLは変わることがない。
多分これは運用・管理していく際にわかりやすいっていうのと、使用者にアプリケーションの構造を知られてしまうことになるというのが大きな理由だと思う。(違うかも)
紙のノートにもメモってることなので焼き直しみたいになっちゃってるけど、まあなんども反芻するのは悪いことではないと思う。
なんか間違ってたりしたら物好きな人がコメントしてくれるシステム欲しい。
システムの名は「人脈」。
俺には実装されていなかったのである・・・。