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

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

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

どうも、アラフォー詰めが甘いまきのです。

今日の授業も終わったので忘れる前に記録しちゃいましょう!

 

 

 

今回のコードレビュー

概ねお褒めに預かりました!ペースも想定よりかなり早いとのこと。

やったぜ。かなりプログラミングの勉強優先してるもんね。

飯よりプログラミングだからね、今の私(病的)

 

改善点としてあげてもらったのは2つ。

 

1つめ timesを使った繰り返し

問題は以下でした。

f:id:MmRevorution:20180920093236p:plain

で、私が書いたコードがこちら

f:id:MmRevorution:20180920093316p:plain

 

\ \ 1.times / / 

 

timesとは一体なんだったのか(笑)

timesの意味がないやん。なんだ1回だけ繰り返すって(笑)

 

いや、この後の問題では変数使って代入して…ってコード普通にかけてるのに、なぜかここではその発想ができなくて「え…?1ってこと?え?意味なくない?でも3.times doにしたら全員3回ずつ出てきちゃうんですけど…」ってなってた(笑)

 

アホ(笑)

 

2つめ 変数名

代入するための変数を適当につけていたので、今後は意味を持たせる&内容がわかる変数にするといいよとのこと。

 

これが私が書いたコード。

f:id:MmRevorution:20180920095154p:plain

変数がaとかiになってます。

aはもうなんでもいいからとりあえず入れてみるか、というノリでかいた変数。

iはindexのiだけど、確かに他人が読んでもわからないわ。

 

ということでとりあえずこんな感じに修正。

f:id:MmRevorution:20180920095328p:plain

iはcountへ、 aはuserへ直しました。

 

メンターさんからは、

 

「変数名ってのは超大事で、優秀なプログラマはここがとても素晴らしい。誰がみてもわかるし、誤解がない書き方になってる。

変数名にはかなり時間をかける。なんなら途中で違和感感じれば戻って直すほど重視している部分だから、これから書くコードでは重要視してみてね!」

 

と教わりました。

 

progateでも確かに変数名大事って言ってた。

でもそこまでとは思ってなかったので、これからは意識してみよう!

 

本日の授業① インクリメント・デクリメント

count += 1みたいに、一つずつ増やして処理するのをインクリメントっていうんだそう。逆に1つずつ減らすことで処理するのをデクリメント。ほーん。 

 

本日の授業② クラス

 クラスといえば、progateでなんだかふわっとわかったような?そうでないような?なんかこうかけばいいらしいみたいな?というレベルだった私。

 

それでも、さすがメンターさんに直接指導いただけるとかなりスッキリ納得できた。

 

メンターさんの授業を参考に書いてみたのがこちら。

 

f:id:MmRevorution:20180920103706p:plain

 

まずはたい焼きの金型 = クラスを定義した

f:id:MmRevorution:20180920103918p:plain

 

たい焼きを焼く金型部分がclassなんだそうで。

クラスを作るときは…

1:クラス(金型)をなんていう名前にするか決める

2:持たせる情報(どんなたい焼きが焼ける金型なのか)を決める

3:もしなにか動作させたいのならdefとかで動きを決めてあげる

という3段構造が基本なんだそうです。

 

私はこのクラスを使うと、たい焼きの商品名と、中身が何かと、値段を教えてくれるようにしてみます。

 

1:クラス(金型)をなんていう名前にするか決める

たい焼きについてなので、クラス名はTaiyakiと決定。安直か(笑)

 

2:持たせる情報(どんなたい焼きが焼ける金型なのか)を決める

どんなたい焼きが焼けるのかを決めるにはattr_accessorを使うそうです。

このattrを、どうしてもatterってかいちゃうまきのは、こいつのせいで3分無駄にしました(笑)

 

attrってのは、attribute / アトリビュート。属性とか特性とかそんな意味だそうです。

私は、たい焼きの商品名と、中身の具についてと、値段を情報としてもてるようにしてみました。
 
accessorはアクセスできるよ!というような意味だそうで、設定した属性にクラスの外から情報を与えてあげることもできるし、情報を受け取ることもできると。
(これについてはまた後日。書き出したら長くておわらなくなっちゃった笑)
 

3:もしなにか動作させたいのならdefとかで動きを決めてあげる

このままでは、たい焼きに商品名・具・値段の情報を持てるようにできたけれど、それだけになちゃっているので、その情報をお見せできるようにdefを使って動き=関数を決めてあげます。
 
このたい焼きクラスを使うと、「これは(商品名)です。中身は(具)で、値段は(値段)です。いかがですか?」と表示するように書きました。
 
これで金型は完成!
 
たい焼きを焼いていく

たい焼きの種類はとりあえず2種類、あんこのたい焼きとクリームのたい焼きにしてみました。

f:id:MmRevorution:20180920105858p:plain

 

9行目(あんこ)・15行目(クリーム)

あんこ用の情報を書く部分をanko、クリーム用の情報を書く部分をcreamという名前にして、それぞれを上記のように決めてあげました。

anko = Taiyaki.newで、たい焼きクラスから新しいたい焼きを一つ焼き始めます。

同じようにcream = Taiyaki.newでもう一つ新しくたい焼きを焼きましょう。

 

10〜12行目(あんこ) 16〜18行目(クリーム)

 たい焼きクラスには商品名(name)、具(gu)、値段(price)の3つの情報を持たせてあげているので、あんこ・クリームのたい焼きさんにそれぞれ3つの情報を詳しく決めてあげます。

 

(最高級あんこって日本語おかしいけど気にするな!こまけぇこたぁいいんだよ!)

 

13行目(あんこ) 19行目(クリーム)

 たい焼きクラスには、defでそのたい焼きについて表示する動作を作ってあげました。

そのdefでそれぞれのたい焼きさんの情報を表示してもらうため、anko.print_dataとcream.print_dataを書いてあげました。

 

ankoで決めた情報を使って、たい焼きクラスのdef print_dataをうごかしてね!と。

 

で、クリームのたい焼きも大好きなので同じようにたい焼きクラスの金型を使って中身がクリームのたい焼きもcream=Taiyaki.newで焼いていきます。

 

 

焼き上がり

ターミナルでコードを実行! 

まきのがたい焼きを焼いてくれというので、ターミナルさんが焼いてくれました。

f:id:MmRevorution:20180920112758p:plain

 

上手に焼けたんでない?

 

今回の課題

ということで、コードレビューうけて新たにクラスをお勉強したわけですが、実は前回の授業では教科書「たのしいRuby」上では第1部に当たる1章〜3章までを終えていて、レビュー受けたのはその内容に当たる部分。

 

今回は教科書でいう第2部の4章から…の予定だったけれど、おそらく内容を読んでメンターさんの問題をとけば大丈夫だからということで、予定をすっ飛ばして超重要ポイント「クラス」の講義になりました。

 

なので今回の課題は…

  • 4章  オブジェクト・変数・定数 自習&問題集
  • 5章  判断条件 自習&問題集
  • 6章  繰り返し 自習&問題集
  • 7章  メソッド 自習&問題集
  • 8章  クラスとモジュール 復習&問題集
  • 9章  演算子 自習&問題集
  • 10章 エラー処理と例外 自習&問題集

です。多いなおい!

 

本日の余談

授業中に突然メンターさんとの通信が落ちてびっくりした。

 

私の通信環境ポケットWi-Fiのみだから、「私か!!ついに落ちたか!光回線契約か!うわどうしよどこにしよう!」と一瞬で頭の中を駆け巡りましたよ。

 

でも実際はそんなことはなくて、メンターさんがバックグラウンドでしてた作業が思いの外重かったらしく、メンターさんのPCが落ちてしまったとのこと(笑)

 

毎回こんな感じでなにかしら起こるんで笑える(笑)

 

あと、授業終了ごとに侍塾からメールがきて、「今回の授業どうだった?」というアンケートに答えるようになってる。

今回もメールきてるんでこの後回答します。

 

まとめ

とりあえずクラスについてざーーーっとやった感じです。

無事あんことクリームのたい焼きが焼けました。よかった!

 

あと次回までの課題がかなり多いけれど、いままでの感じからなんとなくどうにかなりそうな気がしてる。

 

とりあえずこれから銀だこにたい焼き買いに行ってきます(笑)