Excelって名前しか知らないPCに不慣れな感覚派22歳プログラミング完全未経験者がRubyを習得するまでの軌跡。Part3

実践編
--
progateのRubyのレッスンは全５章。高校以来こういう小難しいものとは無縁だったわたしからすると少々不安が多かったが実際はこんな感じだった

【3章】
---

最低限の用語
---
**メソッド**　　　　　モノに対する**複数**の命令。〔♂←（壁ドンメソッドをプラグラム）→♂’♀|〕　壁ドンと入力すると〔〕の中の一連の動作がポンッとでてくる。中身（近寄る、ドンと手をつく、囁く）
**引数**　　　　　　ピンとこないけどメソッドに対する追加情報、メソッドに色がでる。上の例だと〔♂←（壁ドンメソッドをプラグラム）→♂’♀|〕壁ドンメソッド**の中だけ**の登場人物を指定できる。注意点は壁ドンメソッドの外では使えない。メソッドに引数を設定したら引数を渡さないとエラーになる。

**スコープ**　　　　　変数（引数とかも）の使える範囲。上の例だと壁ドンメソッドの引数（廊下）とか（ドン！）は壁ドンメソッドの中なら通じるけど他の朝食メソッドとかだったら、え!?何の音!?ってなるから使えない。
**戻り値**　　　　　　数学みたいな言葉だけど簡単。壁ドンメソッドをした結果返ってくる返事。（ドキドキ）（ビンタ）（照れ//） 注意点は（ドキドキ）とかを表現するのに（感情）とか変数を用意すること。
**キーワード引数**　　　引数を呼び出す時どれがなに表してるかわかりやすくする表記[犬:（ポチ）,猫:（タマ）,豚:（ブウ）]


最低限の命令
--
**def-method-end**
**return**　　　　　　戻り値を返すで有名だけどこれ以降のメソッドは処理されない。


やってて感じたこと
---
1. **戻り値を返すときとただメソッドを使うときなにがちがうの？**。→メソッドだけの時は壁ドン！で終わり。戻り値を返す時は壁ドン！→（ドキドキ）までプログラミングされるってこと。
2. **真偽値の知らなかったこと**trueだったらそのまま実行falseだったらelseがなければなにも実行しない。 ps.1-13に書いてあった。


【4章】
--

最低限の用語
--
**クラス**　　　　　　順位とか格を表してるように感じるけどそうじゃない。プログラムの設計図のこと 
**インスタンス**　　　日清の３分でできるラーメンみたいだけどちがう。設計図（クラス）からつくられたモノ。プラモデルみたいな感じ
**シンボル**　　　　　今までのイメージは鍵の目印だったのにインスタンスでもつかうの！？

**インスタンスメソッド**　設計図（クラス）で作ったペッパー（インスタンス）に対する命令ex.手をふる　設計図（クラス）の中に書く


最低限のコマンド
--
**class-end**　　　class-Namae-end
**attr_acccessor- :変数（インスタンス）**
**変数 = Class.new**　　魔法みたいなもの。インスタンスを実体として召喚するイメージ。
**initialize**（メソッド）　　モノ（インスタンス）を生成した後に自動で呼び出される命令。料理が卓に来た時の湯気みたいなもの。
**require "./menu"**  　　ファイルを呼び出す。よくわからない。　　
**gets.chomp**　　　　　名前を入力してくださいとかのあれ


やってて感じたこと
--
1. インスタンス変数がよくわからない。変数多すぎ。
2. 4-10では答えをみて６０％しかわからなかった。何度かやろう。     
3. 4の12,13は他のファイルから変数呼び出したりで1度ではスッキリ理解できなかった。またやろう。

         
【5章】
--

最低限の用語
--
**継承**　　　すごい壮大な何かのように感じるがそんなことはない。前に作った設計図（クラス）から新たな設計図（クラス）を作るということ　ex.ロボット（クラス）から継承！→ドラえもん（クラス）、ガンダム（クラス）ペッパー（クラス）....
**オーバーライド**　　　　上の例だとロボット（クラス）から作られたドラえもん（クラス）等には共通で手を振る（メソッド）があるとしてガンダム（クラス）では手を振るんじゃなくてビームを出そう！→ガンダム（クラス）の手を振る（メソッド）をビームを出す（メソッド）にオーバーライド！→ガンダム（クラス）はビームを出すようになる※手は振らなくなる
**クラスメソッド**　　　　　インスタンスメソッドとは表記が違うがいまいち違いがわからない。書式〈def Class.method〉 ヒントがあった。クラスメソットはクラスにインスタンスメソッドインスタンスに対して呼び出す。
最低限の命令
--

**class-ClassB>ClassA-end**
**super**　　　　ロボット（クラス）の手を振る（メソッド）がドラえもん（子クラス）でそのまま使えるようになる。そのままだから速度も振る角度も親クラスのまま。

今回のデットロック
--
if count >= 1 && Menu.is_discount_day?
２つ目の条件がtrueだったらと表したかったから　{Menu.is_discount_day? = true}としたのがミスだった。真偽値はtrueだったら実行しfaleseだったら実行しないから、あえて=trueとか書いてはいけないのだろう。

やってて感じたこと
--

1.メソッドだけを呼び出しても動かない。インスタンス.メソッドじゃないとダメ。スコープってやつ？
2.superを使うとき直後に（）を置かないとエラーが出る　super() ◯　super ()✖︎
3.クラスの中にはRubyに最初から用意されてるクラスがある。プログラムの書き方が異なるから注意が必要だ。
4.条件が２つあるときは「&&」で繋げる。忘れてた。



今後の予想
--

1.progateではRubyコースの最後にdateクラスというものをやったがつまりはdate(設計図)の使い方を勉強しよう！ということだ。ということは今後〇〇クラス（設計図）というのがたくさんでてくるかもしれないがどれも全て設計図だということ。使い方はそれぞれ違うだろうし役割もたくさんあるだろうが「クラス」を抑えていれば理解できるし問題ない。
2.1〜５章までに説明を理解するための用語はおそらくほぼ出尽くした。これを叩き込めば説明を理解することは可能で説明に対して自分で線引きできるようになるはずだ。期間は未定だがこれを心に叩き込んでから次のステップにいこうとおもう。


【復習編】
--

一通り終わって感じたのは理解度としては70％だということ。参考書籍をパラーっと見た感じほぼprogateの中にでてきた語が説明を読む上で80％カバーしていたこと。これらのことからもう少し足場を固めてから次にいこうとおもう。具体的な復習範囲だが
1. 1章の12-if文から最後まで
2. 2章３-last
3. 3章1-last
4. 4章1-last
5. 5章1-last


復習期間中の気づき
--
1章-2章
--
**1.**　計算式でよくやってしまうのが [7*7=49]と（＝）を普段のように１つだけ入力することでエラーになる。正しくは[7*7==49]としなくてはいけない。
**2.**　**配列**や**インデックス番号**を使うときのかっこは**[]**
**3.**　変数の使える範囲は定義したところをガッツリ探すしかない。定義した場所をめちゃくちゃ意識でeasy
**4.**　ハッシュのときはかっこは「{}」鍵付きだから出っぱってる。
**5.**　ハッシュ(書き方１)ではキーにも「""」で囲う必要があるし、「=>」でキーと値を繋ぐ必要がある。　:name（書き方２）に慣れてたから忘れてた。
**6.** 　引数とかで（:A,:B,:C）と使うから要素A,B,Cとしてしか式を見てなかったけど、本来はハッシュつまり要素の鍵だということを忘れてたよ。シンボル自体は鍵、中身は箱の中（鍵の繋がり先）　2-7
**7.**　シンボル付きのキーを呼び出す時のかっこは「[]」　　変数[シンボル]
**8.**　nilとfalseはほぼ一緒　処理は全く同じ

3章-4章
--
**1.**　putsとか入力しなくても使えるコマンドがあったり混乱したが、おそらく入力しだだけで命令できるのはメソッドだけ。メソッド（命令１、命令２）となっているから。
**2.**　メソッドは複数の命令をまとめたものだということ。これすっかり抜けてた。
**3.**　メソッドの引数はメソッドの中でしか使えない。メソッドの中で定義した変数も。3−５
**4.**　まだ完全ではないが戻り値は　メソッドが戻り値を呼び出す→戻り値は呼び出したメソッドに帰ってくる。→帰ってきた戻り値を入れる箱（変数）を用意して呼び出したメソッドと繋げる。