20210328_アウトプット(Ruby)

アプトプット画像

1%の成長(昨日の自分の知識より1%成長する)

  • Wantedlyの「将来やってみたいこと」「やったこと」を追記・投稿(1時間)

  • ゼロから分かるRuby入門(チャプター1から4まで)(4時間)

  • paizaのスキルチェック(1時間)

  • SPI(1時間30分)

新しい発見

ゼロからわかるRuby入門

簡単なプログラムをかく
  • pメソッドはデバッグの道具として使う。(プログラムの機能として意図して表示するときはputs)

🤔(どうして?)
pメソッドが唯一、戻り値が「引数のオブジェクト」になるからだよ。(putsメソッドは改行ありでnil、printメソッドは改行なしでnilとなる。nilじゃどこが間違えているのか分からない。)

  • エラーメッセージの時に、コロン(:)で区切られた数字は、プログラムの何行目でエラーが起きたのかを教えてくれる。
条件分岐
  • 慣習的に末尾に?がつくメソッドはtruefalseで返すことが多い。even?(偶数か?)、odd?(奇数か?)

  • 後置ifのときはend不要。

  • elsifは複数書けるが、書きすぎると読みづらくなる。そんなときは、&&||caseを検討しよう。

内容 選択肢がこんな時に使う
if 二択
case 三択以上
  • 「一つ選ぶ」はcase 変数と定義。caseを書かないときは、whenの後に条件をかく。

  • case文のとき、複数に合致するものがない時の選択肢としてelse。

繰り返し
  • 慣習的に、ブロックを複数行で書くときは、do ~ end、一行で書くときは、{ ~ }

  • 「条件付き繰り返し」が`while

case 変数
when 候補1
  変数の値が候補1の時と等しい時の処理(複数行書くことも可能)
when 候補2
  変数の値が候補2の時と等しい時の処理(複数行書くことも可能)
end

変数を書かずに、「候補1」や「候補2」に条件を書くことも可能。(wallet >= 500)

while 条件
  条件を満たしている間、繰り返し実行する処理
end
  • ブロックの時のようにdoは不要。

  • 「繰り返し実行する処理」の戻り値を元に「条件」を判定する。なので条件が「変数 < 2」だった時、1週目の時の戻り値は「1」なので、「2」まで実行されることがスッキリ。

配列

- 配列の中身のオブジェクトクラスはバラバラでも可能(例 文字列、整数、小数点が入った配列)

  • 変数を使わずにメソッドを呼び出すことも可能
p ["牛乳", "お茶"].first  #=> "牛乳"
要素の追加 メソッド
末尾に追加① push
末尾に追加② <<
先頭に追加 unshift
要素の削除 メソッド
末尾の要素を1つ削除 pop
先頭の要素を1つ削除 shift
  • popメソッドとshiftメソッドは、削除した要素を返す。

  • |はパイプと読む。

感想・振り返り

  • 「全部頑張らないと」のように、変に自分を追い詰める癖を改善したいので、1%の成長項目を追加してみた。「1%進めよう」という気持ちでやってみたら、「変な焦り」に囚われることなく、一つずつ出来て良かった。
  • 昨日、ルビィのぼうけんを読んでいて、最後の鳥井さんのコメントにあった「よく観察すること」「その中からパターンを見つけること」「小さいことから始めて大きくしていくこと」に励まされた。あとビットの世界の絵がとても可愛い。素敵だ。
  • Rubyを書くことがまだまだ下手な自分を受け入れよう。Ruby入門の本から始めてみて着実に成長しよう。
  • 今思うとここ一週間を振り返って「自分はエンジニアに向いていないのかもしれない」「なんでこんなにコード書けないんだろう」と「自分ができる感覚が持てない」ことが一番辛かった。
  • 「出来る気が持てない」と、やる気やモチベーションが大きく低下することを実感した。
  • 「出来る実感」を持つにはどうしたらいいか。今何が出来る?小さく成長するにはどうしたらいい?
  • なぜ書けないのか?①何より自信がない。②問題を細かく「順序進行」「繰り返し」「条件分岐」に分ける力が弱いのでは。③型がふわっとした理解。特に、メソッドへの引数の渡し方・クラス・ブロック引数・モジュールあたりの知識の理解がまだまだ。
  • 嬉しかったのは、基礎を4までだけど、行なってからpaizaを解いてみたら解けるようになったこと。楽しくなってきた。ちょっとずつ自信つけていこう。