cheery本を読んでみて良かったこと
・クラスとモジュールの概念を掴むことができた。
・Procオブジェクトの便利さを再認識
・使えるメソッドの量が増えた
1、ruby内の全てのデータはオブジェクトである。
rubyの全てのデータはオブジェクトだという事は知っていたけど、あまり深くは理解してなかった。オブジェクトは何かしらのクラスに所属している。これを理解することにより、「クラス」というものをより強く意識することができるようになった。「クラス」を意識することにより、役割ごとに処理をまとめることができるようになった。
2、クラスとインスタンス
クラスとインスタンスを意識することにより、クラスメソッドやインスタンスメソッドを意識して使うことができるようになった。インスタンスにどういう属性を持たせるべきか、このインスタンスはクラス内部だけでしか呼ばれないか、もしくは外部でも呼ばれるようにしたいか。(public、private、protected)外部からも呼ばれるようにするためには、アクセサメソッドを定義するなど、一連の流れを掴めるようになった。
3、クラスの継承
今までは、クラスの継承が中々パッと思い浮かばなかったが、コードを各際にまずは何か既存で使えそうなものがないかを考えれるようになった。スーパークラスとサブクラスには明確な関係性があるか、意味の分からない継承をしようとしていないかがわかるようになった。
4、module全般についての知識が高まった。
そもそもmoduleについての知識がものすごく曖昧だった。しかし、moduleがどういう時に使われるのかが明確になった。
モジュールの用途は以下のような時である。
・継承を使わずにクラスにインスタンスメソッドを追加する、もしくは上書きする(include、prependなど)
・複数のクラスに対して共通の特異メソッド(クラスメソッド)を追加する。(extend)
・クラス名や定数名の衝突を防ぐために名前空間を作る。
・関数的メソッドを定義する。
・シングルトンオブジェクトのように扱って設定値などを保持する。
5、Procオブジェクトの便利さを再認識
今まではProcオブジェクトの名前を知っているぐらいで、実際にどう使うかは曖昧だった。procとラムダの違いなんて気にしたこともなかった。チェリー本では、Procについての情報量が多かったので、しっかりと使い方を学ぶことができた。
# ブロック処理ができるラムダの作成はとても簡単
add_lambda = ->(a, b) { a + b }
add_lambda.call(10, 20) # => 30
6、使えるメソッドが増えた
cherry本の中で色々なメソッドが出てくるので、コード書き写してく時に自然と使い方を学べるのはとてもgoodでした。
例:inject, rjust, scan, values_at, chars, split, with_indexなどなど。
## 良かったこと総括
rubyの中での概念、処理の流れなどを理解することができたことが一番良かった。メソッドの探索方法や例外処理が発生した時の処理の手順やクラスの継承など。こういう概念の部分は一見すぐには役立ちそうではないけど、プログラミングをしていく上でこういった概念を理解しているか、いないかで頭の中の整理のされ方が変わってくると思うので、概念を理解することを意識してcherry本を読むことがすごい大事なことだったと思う。あと、ちょくちょく出てくる例題問題は実際に手を動かして、何も見ずに解けるようにするだけでただ本を読むよりかは、何か得られるものがあると思う。
cherry本を読んでも分からないこと。解決できなかったこと。課題。
・1つ1つの概念やメソッドの使い方を理解できたが、暗記したわけではないので、パッと使うことができない。誰かに指摘された時に、あー、そのメソッドを使えばいいのか!というレベル。数あるメソッドの中から、このメソッドをこのタイミングで使う!という絶妙な使い方はやはり仕事の業務をする上で覚えていく感じになるのだと思う。
・言葉では理解できていても、実際に手取り足取り使えるようにはならない。業務を通して、レビューを受けて、徐々に脳に浸透させていくしかないかと。それか、「cherry本」の内容を踏まえて、簡単なプログラムを自分で作ってみるとか。
・どこまで深掘りすべきなのか。
・これは個人的に苦手だなと感じたところだが、「演算子を独自に再定義する」的なことがあまり理解できていないので、もうちょっと調べる必要がある。例えば、comparableモジュールの<=>の再定義とか