📑

プロを目指す人のためのRuby入門(チェリー本)を読んだ感想

2023/04/21に公開

はじめに

プロを目指す人のためのRuby入門(通称チェリー本)を読んで感じた点を各章毎に述べていきたいと思います。
https://gihyo.jp/book/2021/978-4-297-12437-3

第一章本書を読み進める前に

タイトル通り本書全体について解説されています。
第二章以降での内容について、実際に手を動かしながら読み進めてもらえるように環境のセットアップについても丁寧に解説されているところが印象的でした。私自身も実際に手を動かすことは重要だと考えているのでこういった点はありがたいと思いました。

第二章Rubyの基礎を理解する

基本的なRubyの書き方のルールとFizzBuzzプログラムについて学習しました。
内容としてはRuby特有の書き方やルール等を細かく説明してくれていると感じました。
第一章の内容で説明されていたのですが、基本的な構文(変数、条件分岐、繰り返し等)については理解されている人を対象読者としているため、基本的な変数の考え方等の解説はあまりなく初学者にとっては難しく感じるかもしれません。
ここで難しいと感じる人はより基本的な内容を別の教材等で一度学習をしてから戻ってくるのが効率的ではないかと考えます。
超個人的な意見ではありますがProgateがオススメです!!

また、良いなと感じた点としてRubyで可能な書き方を複数説明しながらも実際の現場ではこういう使い方は良くない等、実践を見据えながらの解説がされていました。
良くある「いろいろな書き方ができるのはわかったが結局どの書き方がええんや!?」ということにはなりずらいのかなと感じました。

第三章テストを自動化する

印象としては自動テストについてずいぶん速く触れるのだなと感じました。
早いうちに自動テストについて学び本書の中で実践していくことで慣れさせる目的だと思いました。
自動テストがあることでリファクタリングを行った際にも素早く実装が問題ないことを確認できて効率的だと思いました。
これまでの章でも感じましたが本書は実務を強く意識されており、まさしく本のタイトル(プロを目指す人のためのRuby入門)を体現しているように感じました。
この章でも実際に第二章で作成したプログラムの自動テストを作成する流れになっており手を動かしながら進められる点は理解を深められました。

第四章配列や繰り返し処理を理解する

配列の操作方法の複数の方法を解説しており、配列の操作を行うためにブロックという概念が出てきましたが他ではあまり見ない記法だと感じました。
このあたりはやはりRubyを初めて学習する人からすると難しいポイントだと感じます。
とにかく記法が独特に感じます。
throw、catchが例外処理でない点などはいつまでたっても慣れなさそうな気がしました。

第五章ハッシュやシンボルを理解する

ハッシュはこれまで学んできた言語でも同じような考え方があったのでイメージを持ちやすかったですが、シンボルは慣れるのに時間がかかりそうだと感じました。
特にキーワード引数と書き方が似ている点やコロンの位置が変わったりなどなれるまではかなり混乱しそうだと思います。
この章でも場面に応じて使い分けるような書き方や現在は非推奨となっているような書き方まで紹介してくれています。
これから様々なRubyのコードを読んでいく上で「こんな書き方があったな~」と気づける良い学びになったと思う反面、非推奨なコードの書き方を自分自身でわざわざ選んですることはないので、複数の書き方を知ったことで慣れるまで「どの書き方が良いんだっけ?」と迷う場面もでてきそうです。

第六章正規表現を理解する

これまでにも正規表現は何度も使用したことがあったが、使用するときに毎回調べながら正規表現を使っており体系立てて学習をしたことがなかったが、しっかりと学ぶいい機会になったと思う。
書籍中で紹介している筆者のQiitaがとても勉強になった。

第七章クラスの作成を理解する

オブジェクト指向に関連する解説がメインとなっている章でした。
オブジェクト指向自体は馴染みがあり、大きな考え方としてはスっと入ってくる内容でした。
演算子(| ^ & == 等々)の挙動を独自に再定義できる点は特に不思議な感覚だが利用頻度はそんなに多くないように思うので必要なときに思い出せるようにしておきたい。
Rubyならではだなと感じた点としては以下のようなものがあった。

  • selfの記述位置でクラス自身を表したり、インスタンス自身を表わすか変化する
  • 多重継承はできない。(ただし、ミックスインを利用して似たことは実現可能)
  • 可視性はpublic、protected、privateの3種類
  • 定数に再代入可能

また、コードの途中で改ページをしている箇所が数カ所ありちょっと読みづらさを感じた。

第八章モジュールを理解する

基本的にモジュールはインスタンス化する必要のないようなメソッドを実装するためのものと理解しました。活用方法もかなり多くとても便利そうでしたが、その分使いこなすのもとても難しそうでした。
モジュールを利用して名前空間の作成を行うことができることも学びました。

第九章例外処理を理解する

例外処理は例外が発生した際にプログラムを中断せずに続行したい場合に使用するもの。
無暗やたらになんでも例外処理を実装するのではなく、その必要性を考慮したうえで実装する必要があることも学習しました。

第十章yieldとProcを理解する

yieldとProcはブロックに関連したものだと学習しました。個人的にはこれまでの章の中で一番難しく感じました。
下記の2点がポイントになってくるのかなと思いました。

  • yieldはブロックを使用するメソッドを作成したいときに利用ができる
  • Procクラスはブロックそのものを表す
    実際に活用するのは今後実践していく中で身に染み込ませていきたいです!

第十一章パターンマッチを理解する

パターンマッチはcase文のを簡潔に書ける構文だと学習しました。
複雑な条件を指定することもできるので活躍する場面は多そうに感じました。
ただし、Ruby3.0ではまだまだ実験的に導入されている機能が多いことは留意が必要。

第十二章Rubyのデバッグ技法を身に着ける

バックトレースの読み方、よく発生する例外、デバッガの使い方を学習しました。
これまでの章でも記載されているようなエラーが発生してうまく動かないケースがあったので、
先にこの章を読んでおくのもありだなーと感じました。
VSCodeのプラグインでリッチなデバッガもあるようなので利用するのが楽しみです。
トラブルシューティング方法の中に「パソコンの前から離れる」というものがあったのもおもしろかったです。
これは結構経験がある人が多いんじゃないかと感じました。
私はお風呂に入ってる最中に急にひらめくということがよくあります。

第十三章Rubyに関するその他のトピック

この章ではRubyに関連する内容について解説する章となっていました。
Railsについても触れており、今後Railsも学習をしていく予定なので非常にためになる内容でした。
Railsではrequireを記述しなくても自動的に読み込んでくれたり、いい感じにしてくれるようです。
こういった点はRubyから丁寧に学習していないときっとRailsの仕様なのか、Rubyの仕様なのかわからないままだったんじゃなかと思います。

全体を通して

率直に言ってボリュームがすごかったです!
各章で手を動かす例題があったり、書き方一つとっても様々な書き方を紹介しており、頭がパンクしそうになりました。
到底身についたといえるレベルにはなっていませんが、間違いなく今後学習を進めていくうえではためになったと思います。
Rubyを書く時にこの本に書いてあったことを思い出し、よりよいコードが書けるように邁進していきたいと思います。

Discussion