アラフォーがお金持ちになるためエンジニア目指すブログ

お金も根性も学歴もないアラフォーまきのがエンジニアになってお金持ち目指すよ!

侍エンジニア塾 17回目の授業

どうも、アラフォーまきのです。
今日は17回目の授業!早速書いていきます。

授業の前に

コードが複雑になり始めたので、メンターさんと「どこまでできた?」「何がわからない?」のやりとりがスムーズにいくように考えました。

いままで

  • 進捗を問われた時、思い出しながらいままでやったことを伝えていた。

  →報告に過不足がでた

  • 聞きたいことはMacのスティッキーズにメモをしているので、それを聞いていた。

  →思いついたらすぐメモできるのがスティッキーズのいいところ
  →付箋なので、項目ごとに付箋を分けられるのがよかった
  →だけど付箋だからちょっと長い文章は見辛い。
  →実際どのビュー、どのアクション、どのコントローラ、どのモデル、どのヘルパーに書いたものの質問かをメモしていなかった
  →該当箇所を見つけるのに時間がかかっていた

今回から

テキストエディタに以下の項目を並べた

1:やったこと
→完了できたこと。
→どの部分ができたのか、ファイル名を残す。

2:やっていること
→いま作業中になっていること。
→どの部分の事か、ファイル名を残す。
→考察・気づいた事など残す。

3:相談すること
→メンターさんへ相談したいこと。
→どの部分の事か、ファイル名を残す。
→自分はどう考えて何をやったのか具体的に残す。
→参考資料があるならそのURLを残す。

4:やること
→今のアプリに今後書かねばならない事。
→気になる事があればメモする。
→参考資料があるならそのURLを残す。


これで、だいぶメンターさんへ伝わるのが早くなりました。

自分が時間を割いているだけでなく、先方にも時間を割いてもらっている。
当然、相談事はスムーズに進むように、準備しておくべきですよね。

いままでは、あらかじめ課題が決まっていたから、こうですって見せればよかった。

相談事も「課題のここが」と明確に伝えられた。

でも、「卒業制作を進める」というざっくりした課題になったので、「これもやった」「あれもやった」「そのせいでここがこうなった」「よってあそこの紐付けが…」と、連鎖的に話が広がるように。

しばらくの間、何度か「ここができました!えっと…確かこのコードの部分…ちがうな…えっと…」を繰り返してました。

だけど、ようやく「こうやって該当箇所探すの無駄!進捗報告があやふなのアカン!」と思えるようになり、こうやってきちんと記録を残して共有するという考えになれました。

実装しようとして忘れている箇所もたくさんあったので、一目で「これ!」とわかるメモを用意しないとダメだって、ようやく気がつきました。

メンターさんとのやりとりをスムーズにすることが、自分の時間の無駄を省くことにつながる。

それに、やるべきことが見えるので、この後はこのスタイルでやっていきます。

ちなみに、今私のデスクトップこんな感じです。

f:id:MmRevorution:20181221133939p:plain

左側のスティッキーズ群…
一番上→ショートカットメモ。覚えたら消す
その下の細いやつ→ブログに載せようと思ってるメモ
一番下→Gitに記録するためのメモ

真ん中のテキストエディタ
→さっきのやったこと・やっていること・相談すること・やることのメモ

今日の授業

前置きが長くなりました。

今日は以下を教わりました。

ストロングパラメータとparamsでデーターを受け取ることについて

→悪意あるデーターを受け取らないようにするのがストロングパラメータ
→privateメソッドにするのが一般的
→しかしname = params[:name]のように一行ずつ書くやり方だって別に構わない。
→一行ずつ手書きしても、書いた値以外は受け取らな(受け取れない)から。
→でも、コード的に一行ずつ書いてコード量が増えるのは美しくない。
→ストロングパラメータが推奨されるのはそういう理由もある。
→受け取り許可= permitに入れるものは、別に入力フォームの内容だけではない。
→URLに入っているuser_idなども、受け取りたいなら受け取り許可をする。


【実際のコード work_controller.rb】

def create
  work = Work.new(work_params)
end

private
  def work_params
    params.require(:work).permit(:comment, :title, :user_id)
  end

workモデルのworksテーブルにあるカラムの内、comment, title,user_idに入るデーターは受け取りますよ、という内容。
但し、受け取りデーターはworkのcommentといったハッシュでなきゃ受け取らないよということらしい。

データーをcreateした時のコンソールのログを見るとこうなってる。
確かにハッシュになってるみたい。

"work"=>{"title"=>"タイトルです", "comment"=>"コメントです"}, "commit"=>"登録する", "user_id"=>"1",}

paramsを一行ずつ手書きすると↓のようになる。

【work_controller.rb】

work = Work.new(
title: params[:work][:title],  #workのtitleなので[:wok][:title]になる
comment: params[:work][:comment], #workのcommentなので[:wok][:comment]になる
user_id: params[:user_id],   #user_idはworkに限ったものではないので[:work]がいらない
)

→workの、となるのはhtml.erbでform_withを書いた時にworkモデルを指定したから。
→from_withでモデルを指定していることで、editの時に前回入力した値を編集画面に表示できている。
→モデル指定で今回は@workを指定している。
→workモデルのworksテーブルにあるカラムに入力内容を保存するから。
→workモデルのworksテーブルにある内容を選択肢にもしているし。

【実際のコード work_controller/new.html.erb】

<%= form_with(model: @work,
url: {controller: :work, action: :create, user_id: @user.id},
method: :post,
local: true) do |form| %>
Railsのhumanizeメソッド

→複数形や単数形、yをiに変えて複数形などに自動変換する機能
→人間が読めるように言葉を変換してくれている

boolean型

→trueかfalseの2択だが、DBで見ると0か1が入ってる
(DB Browser for SQLiteで見てます)
→DBのソフトによる
→Railsの中ではbooleanとしてデーターのやりとりができていれば、DBのソフトでどう表示されようと別に構わない

時間により挨拶を変えるコード

→これから実装予定だったけれど、たまたま見てもらうことができた。
→Railsは日時をグリニッジ天文台に合わせている。
→日本とグリニッジ天文台のあるイギリスでは9時間の時差がある。
→webアプリは海外からも当然見える。
→仮に日本人が対象で日本語のアプリであったとしても、そんなの関係ない。
→この辺りはwebアプリ開発の時は考えたほうがいい部分。
→TwitterやFacebookはサインアップ時に国の入力があり、実はそこで時間をどう表示するか設定もできている。
→今回はとりあえず日本時間にしたい。やり方は2通り。
 →DBも表示も日本時間にする
 →DBは基本通り、表示だけ日本時間にする

【実際のコード:表示だけ日本時間】

def greeting
  now = Time.now.hour
  morning = (5..11).include?(now) 
  lunchtime = (12..14).include?(now) 
 evening = (15..18).include?(now)

  if morning 
          "おはようございます"
      elsif lunchtime
          "こんにちは"
      elsif evening
          "いい夕方ですね"
      else
          "こんばんわ"
  end
end

Time.nowで今の時間が拾える。

Time.now.hourでいまの時間のうち「○時」の○の部分だけ拾える。

それをnowへ代入した。nowは現在の時刻の上○時の○だけが入ってる。

あとは各時刻を朝・昼など区分でわけて、
もしその時刻だったらどう挨拶するかを書いていく。

この時、最初はnight枠があったのだけれど、
morning, lunchtime, eveningに入らない19時〜朝の4時台はぜんぶ夜扱いなので、コード上ではelseとなる。

だから、わざわざ夜night枠を書く必要なし!

まとめ

次が今年最後の侍塾です。
早いもんだよまったく。

メンターさんは「だいぶ成長したなあって思いますよ」と言ってくれて、自分も最初に比べたら確かにわかることが増えたので、ある程度は成長できたんだろうなって思うんです。

だけど、最初に比べたら成長してるってのは当然の話。
だってこれだけ手厚く指導いただいてるんですもん。

それを考えれば、私は多分進捗としては芳しくない。
もっと先に進めたはず。

理想が高いんではなくて本当にそう思うから、もっと頑張ります。
私がこうして頑張るのは、都内の1Kに大人二人暮らしでとってもしんどいから。

すっごく不便してるんです、生活。
大人二人が1Kって、本当に逃げ場がないんですよ。

引っ越せばいいと思うでしょ?彼が嫌がっててできないんです。
今私は彼に経済的に依存して生きているから、彼がNOならNOなんです。

こんな人生を終わりにしたいから、まずは経済的に自立したいのが一番の願いなんです。

自分の幸せを最優先で生きるためには、自分がやらないとだめなんですよ。

この辺は語り出すと止まらないのでとりあえずおしまい!
これからまた頑張って勉強します!

YDK!YDK!やればできるこ!がんばりゃーおっしゃー!