『プロを目指す人のためのRuby入門』を読みました。

皆様こんにちは、Amiaです。

私はここ何週間かでタイトルにもある通り『プロを目指す人のためのRuby入門』を読んでいました。
じっくりと読んでいましたが、一週目ですとやはり理解の浅い部分があります。
そのためアウトプットと定着率を上げるためにも今回は学んだこと等を記事としてまとめていきたいと思います。

よろしければ最後までご覧になっていただければと思います。

⚫︎良かった点

1.実際に手を動かしながら学べる

サンプルコードや例題が各章で用意されているため、実際にコーディングしながら学ぶことができます。
そのため、ただ読むだけの時よりも定着率が格段に上がると思います。

2.他の言語と異なる部分が記載されている

Rubyでのコーディング方法やRuby特有の仕様と他の言語の異なる部分が比較して記載されているため、他の言語の経験者の方でも混乱することなく進められるのではないかと思います。

3.現場目線の実践的知識が記載されている

筆者の方は「あのとき、こんなふうに説明してくれたら良かったのに!」や「このテクニックはもっと早く知っておきたかった!」と感じたポイントをに盛り込んで執筆されたとのことです。
現場で通用する実践的な知識・ノウハウが至る所に散りばめられており、使用頻度頻度の多い部分や少ない部分に触れられていました。そのためしっかり覚えておくべき部分と頭の片隅に入れておく程度よい部分がわかり減り張りを付けて読むことができます。

⚫︎学んだこと

「第2章 Rubyの基礎を理解する」

この章では主に下記について学びました。始めからかなりのボリュームがありました。
Rubyに関する基礎知識
・文字列
・数値
・真偽値と条件分岐
・メソッドの定義
・その他の基礎知識
基礎となる重要な部分が記載されているため、あやふやな部分がなくなるまで読み返したい章でした。

「第3章 テストを自動化する」

この章では主に下記について学びました。テストを自動化するためにはテスト用のフレームワーク(テスティングフレームワーク)を利用します。本書ではMinitestを利用しました。
・Minitestの基本
FizzBuzzプログラムのテスト自動化

「第4章 配列や繰り返し処理を理解する」

この章では主に下記について学びました。この章もかなりのボリュームがありました。
・配列
・ブロック
・範囲(Range)
・さまざまな繰り返し処理
・繰り返し処理用の制御構造
配列やブロックはRubyにおいて利用頻度が非常に高い機能だそうです。配列に用意された豊富なメソッドを使いこなせば使いこなすほど、簡潔なRubyプログラムが書けるようになるはずとのとことなので理解するまで読み込んでいきたいですね。

「第5章 ハッシュやシンボルを理解する」

この章では主に下記について学びました。
・ハッシュ
・シンボル
ハッシュも配列と同様に利用頻度が非常に高いとのことです。こちらの章もしっかりと知識を定着できるように読み返したいですね。

「第6章 正規表現を理解する」

この章では主に下記について学びました。
正規表現そのものについて
Rubyにおける正規表現オブジェクト
正規表現については書籍の筆者の方が書いた下記の記事がとても勉強になります。
正規表現についてよくわからない方は是非一読ください。
qiita.com qiita.com qiita.com qiita.com

「第7章 クラスの作成を理解する」

この章では主に下記について学びました。
オブジェクト指向プログラミングの基礎知識
・クラスの定義
・selfキーワード
・クラスの継承
・メソッドの可視性
・定数
・さまざまな種類の変数
・クラス定義やRubyの言語仕様に関する高度な話題
クラスの定義はオブジェクト指向言語にとって根幹となる機能なため、こちらも中々ボリュームがありましたね。

「第8章 モジュールを理解する」

この章では主に下記について学びました。
・モジュールの概要
・モジュールを利用したメソッド定義(includeとextend)
・モジュールを利用した名前空間の作成
・関数や定数を提供するモジュールの作成
・状態を保持するモジュールの作成
・モジュールに関する高度な話題
大規模なプログラムやオープンソースライブラリの開発に関わる場合はモジュールの知識は必須とのことでした。まだ理解が浅い部分があるため再度読み返したいと思います。

「第9章 例外処理を理解する」

この章では主に下記について学びました。
・例外の捕捉
・意図的に例外を発生させる方法
・例外処理のベストプラクティス
例外処理は「ここぞ!」というときにだけ使う機能で、やみくもにrescueを連発したり捕捉すべきでない例外を捕捉したりしてはいけないということがよくわかりました。
これは、かえって問題の多いプログラムができあがってしまうためですね..

「第10章 yieldとProcを理解する」

この章では主に下記について学びました。
・ブロックを利用するメソッドの定義とyield
・Procオブジェクト
この章は「プログラミング初心者にとってはちょっとハードルが高いかもしれません」と書かれている通り私自身難しく感じました。

「第11章 パターンマッチを理解する」

この章では主に下記について学びました。
・パターンマッチの基本
・パターンマッチの利用パターン
・ガード式や1行パターンマッチなどの応用的な使い方
パターンマッチはcase文によく似た、ver3.0から本格的に導入された新しい構文です。前章とは打って変わり理解しやすい内容となっていました。

「第12章 Rubyデバッグ技法を身につける」

この章では主に下記について学びました。
・バックトレースの読み方
・よく発生する例外クラスとその原因
・プログラムの途中経過を確認する方法
・汎用的なトラブルシューティング方法
この章はデバッグ方法やトラブルシューティング方法等が記載されていました。プログラミングにエラーやバグは付きものなため、何度も読み返し解消するためのテクニックを身に付けていきたいです。

「第13章 Rubyに関するその他のトピック」

この章では主に下記について学びました。
・日付や時刻の扱い
・ファイルやディレクトリの扱い
・特定の形式のファイルを読み書きする
環境変数や起動時引数の取得
・非推奨機能を使ったときに警告を出力する
・eval、バッククオートリテラル、sendメソッド
・Rake
・gemとBundler
Rubyにおける型情報の定義と型検査(RBS、TypeProf、Steep)
・「Railsの中のRuby」と「素のRuby」の違い
この章では様々な内容が記載されていました。まだ全ては理解できていないためまた読み返したいと思います。

⚫︎難しく感じた部分

本書は入門書と書かれていますが、筆者の方も仰っているようにプログラミングの基礎部分は理解している前提で書かれています。そのためプログラミング完全初学者には読み進めるのが難しい内容ではないかと思います。
私はプログラミング学習サイトで一度大まかな全体像や基礎を学んでから読みました。それでもやはり難しいと感じる部分はありました。

⚫︎最後に

「学んだこと」の部分で今回記載した内容については全て挙げるとボリュームが膨大になってしまうため一部に過ぎません。
私自身まだ本書の内容を全てを完璧に理解できていません。再度読み返し深い知識にしていきたいと思います。
気になった方は是非購入を検討してみてはいかがでしょうか。