Sakiのプログラミング学習ブログ

プログラミングについて学んだことや、学習の振返りを書いています。

週報 4/5(月)~4/11(日)

週報 4/5(月)~4/11(日)

4/5(月)~4/11(日)の一週間の学習の振り返りをざっくり。 先週の3/29(月)~4/4(日)の週報を書いてないのでそちらもざっくり振り返る。

今週の学習時間

ラクティス外の学習・勉強会への参加は含めない。 目標達成🎉

日付 目標 実際
4/5(月) 2:00 0:00
4/6(火) 2:00 1:45
4/7(水) 2:00 3:15
4/8(木) 6:00 5:15
4/9(金) 2:00 3:15
4/10(土) 6:00 7:15
4/11(日) 6:00 7:30
合計 26:00 28:15

先週

3/29(月)

やったこと

考えたこと

朝活した🌟必要なページはほぼ完成したと思う!

3/30(火)

やったこと

  • 昨日の日報提出
  • i18n課題の再提出
  • URLがusers/editの理由を知る。 →/users/:id/editだと、ログイン中のユーザが自分以外を編集しようとしていないか?をチェックする認可の処理が必要になる。実際のアプリケーションの自分のユーザーページのURLを見たら、current_user/editusers/settingsになっていた。なるほど〜

考えたこと

今日は早起きに失敗してしまったので、ほとんど学習できなかった。ずっと読みたいと思ってて一ヶ月ほど積ん読していた本を読み始めた💪 学習に集中できない時に少しずつ読み進めたい。

3/31(水)

やったこと

  • 画面遷移図の変更
  • ログインしたらユーザー一覧にリダイレクトさせたい→できず
  • ユーザー編集画面で更新した情報が、更新できてないことに気づいた→未解決のまま
  • ログイン前に/books に行けないようにする:before_actionを使う
  • 夜は友人と会う約束があったので学習せず。

考えたこと

  • やりたいことを都度検索して記事のコードをその場その場でコピペしても、その場しのぎの解決になっていて、自分が理解していないと意味がない&Qiita記事は前提がそれぞれ違うし間違っている可能性もあるので、やめる。
  • Railsの仕組みを分かってなさすぎる。今、Railsの仕組みがわかっていないのにdeviseを導入しているから、コードを書くときに、Railsのもともとの機能をつかえばいいのかdeviseを使えばいいのか分からず、混乱している状態。
  • 他の方の日報を見ていると、deviseあたりで、「Railsを全然分かってないので、書籍などで体系的に学んだほうがいいかも」と感じている方をチラホラ見かけたので、私もそうすることにした。
  • 教材が色々あって迷ったが、独習Railsがとても分かりやすいので一通り目を通すことにした。一回目を通すと、詰まったときにあそこに書いてあったな〜と思い出せるので、頭の中にインデックスを貼る方式で読もうと思う。が、devise課題に関係ありそうなところは自分のコード見つつしっかり読む。
  • 明日から独習Rails読む💪

4/1(木)

やったこと

  • 独習Railsを読む
    • 1章
      • 設定より規約
      • リソースフルルーティング
      • MVCモデル
    • 2章は実際にコードを書くときに読む
    • 3章途中まで
      • rails sしたら再びwebpackerのエラー

考えたこと

  • 私含めてみなさんが、「Railsはいろいろやってくれていて、どういう仕組みでこうなったか分からない」となるのは、この設定より規約という基本理念からきているのか〜なるほど。deviseも導入したらすぐにユーザー登録・ログイン/ログアウト機能・ユーザー編集ができてて、びっくりしてたけど、この理念からきていたのか。
  • プログラミング言語には、設定重視だったり、規約が多すぎたり色々な言語があるらしいが、webアプリを作るにあたって1から全部の設定を書くより、「どのwebアプリでもこの機能は使うよね」、というものがデフォルトでオンになっている方が、毎回同じ設定を1から書くより効率的でよさそうと思った。Railsが色々やってくれている仕様になっている理由が分かってちょっとスッキリ
  • 今日はたくさん寝たはずなのに学習中も眠くてあんまり集中できなかったのが辛かった。今週はそんな週だと割り切るようにする。

4/2(金)~5(月)

おやすみ😪

今週

4/6(火)

やったこと

  • 独習Rails:3章読む
  • モデルはデータベース自身のことではなく、データベースを便利に扱えるようにデータベースとやり取りする役割を持つ。 →モデル=DBと勘違いしていた。

考えたこと

  • 忘れかけていたscaffoldを思い出せた。初めてscaffoldを実行したときよりも深く理解できていると思う。
  • 2日の金曜から4日間学習していなかった💦元気が出てきたので今日からまたがんばる。「ちょっとずつでいいから毎日やる」を実行するのって結構難しい。
  • devise課題のコードの現況や残りのタスクがどうだったのか日にちがあいて、忘れかけているので進捗確認する。

4/7(水)

やったこと

  • 独習Rails3章で気になったことを調べた
    • before_actionとは
    • form_withヘルパー
      • form_withとform_forのちがい
      • deviseはform_forで書かれいるが、現場ではform_withに書き直しているのか? →メンターさんにコメントで教えていただいた。現場ではすぐに全部form_forをなくそうというほど急ぎで対応はしていないようだ。
  • たまった日報の提出

考えたこと

  • deviseのコードの意味がわかってきて嬉しい。
  • form_forを理解できた

4/8(木)

やったこと

  • 独習Rails3章
    • 部分テンプレート
      • renderメソッド
      • deviseの部分テンプレート
    • モデルに使えるメソッド
    • 「登録する」ボタンをクリックした時に裏側で何がおこっているか(時系列)
  • deviseについて調べた
    • deviseはデフォルトだとモデル,コントローラ,ビューが無い状態→カスタマイズしたければrails gで作成する
    • rails g devise User は何をしてるのか?
    • rails g devise:viewsrails g devise:views usersのちがい →READMEを読んでもよく分からず。 →メンターさんに、「後者を使うのはscoped viewというもので、管理者ユーザを別モデルのadminsにする場合などに、usersとadminsでそれぞれ別のviewを使いたかったりして、そういうとき使うというイメージ」と教えていただいた。

考えたこと

  • 今回の課題はモデルが一つなので、rails g devise:viewsの実行が正しいと分かった。Qiita記事など見ると、モデルが一つの場合でもrails g devise:views <モデル名>を実行している記事があり、どう使い分けたらいいか悩んでいたが、正しい情報をメンターさんに教えていただけてよかった。 なんとなくviews/users/の直下にdeviseのviewsもあった方がいいかなと思って、rails g devise:viewsを消してrails g devise:views usersを実行しなおそうとしていたので、実行する前にしれてよかった。
  • 私がdeviseで詰まっているメインの原因は、実装したいことをdeviseを使ってやればいいのか、Railsにもともと備わっている仕組みでやればいいのか分からないところだと思う。詰まったところを解決できそうなところはとくに重点的に読みたいので残りの要件とか課題を整理しようと思う。

4/9(金)

やったこと

考えたこと

  • deviseのカスタマイズ方法 https://github.com/heartcombo/devise/tree/master/app ここを見れば、deviseのコントローラやビューのコードが見れて、デフォルトの状態だとこのコードが参照される。 最初、 rails g devise:viewsやrails g devise:controllers を実行したらカスタマイズできることを知らなくて、deviseのコントローラやビューを探しても該当するコードがアプリケーションに無くて混乱した。 Railsの設定より規約の理念を知ってからこの仕様にしっくりきている。
  • READMEをがんばって読んだ!一次情報大事。 Qiita記事のコードを安易にコピペしない。

4/10(土)

やったこと

devise課題

  • deviseのコントローラをカスタマイズする
  • アプリの利用にはログインを必須にする
  • リダイレクト先を設定する
  • ユーザー情報を更新できない問題を解決
  • 更新時のリダイレクト先を自分のユーザー詳細画面にする
    • 書いたコードの意味を調べる
  • パスワードを忘れたらパスワード再設定メールを送信してパスワードを再設定できる
    • letter_opener_gem導入
  • i18n
    • devise-i18nのREADMEを読む
    • rails g devise:i18n:locale jadevise.views.ja.ymlを作成

考えたこと

  • 初めてdeviseを導入したときはコードの意味がわかってなかったが、今日はRailsの仕組みを理解した上で、READMEを見ながらコードの意味を理解して課題を進められた。成長を感じる💪
  • 詰まっていて後回しにしていたタスクを全部実装できた!うれしい🎉

考えたこと

  • 独習Rails読み勧めてから課題に戻ろうか迷ったが、意外とRailsへの理解が進んでいて、詰まっていたタスクを実装することができた。progateと独習Railsのおかげだ。嬉しい!成長を感じる😆

4/11(日)

やったこと

  • devise課題
    • i18n
    • Gitでの疑問
    • 提出🎉
  • 日報提出
    • 4/9(金)
    • 4/10(土)
    • 4/11(日)
  • 先週と今週の週報を書いた(この記事)

考えたこと

deviseの課題を提出できた🎉 この課題を通してRailsの仕組み、deviseの使い方への理解を深められたので嬉しい。

今週の振り返り

✅ できたこと/できるようになったこと

  • deviseの課題を提出できた🎉
  • Railsとdeviseの仕組みがわかってきた
  • devise,letter_opener_web,devise-i18nのREADMEを翻訳しながら読んだ
  • 遅延評価勉強法を実践できている。「全部理解してから始めたい病」を克服できている✨ 勉強が苦手な人向けの「遅延評価勉強法」 : けんすう日記 分からないことだらけの課題と向き合うよりも、教科書を順に読んでいくほうが、壁に当たることもなく、メンタル的にも楽だが、要件を実装するために情報収集している時が一番身になっていると感じるので、これからもこの方法を実践していく💪
  • 学習時間が目標を上回った。

✅ "こうしたらもっと良かった"と思うこと

来週の目標

  • devise課題の合格
  • omniauth課題
    所要時間の目安は12時間だが、この辺からRailsラクティスが難易度が上がるらしく、また独習Railsを読んでRailsを理解する必要がありそうなので、提出目標は、2週間後の4/25(日)にする。