ソフトウェアエンジニアの不定期ログ

雑多 作業、学習ログ多め。

「プロを目指す人のためのRuby入門」を読み終わった。

f:id:nabeatsu1:20171210192706j:plain 一度読んだから汚く移ってる😥

伊藤淳一さん(@jnchito)の「プロを目指す人のためのRuby入門」を終えることが出来ました。 Rubyを触ったばかりのころからQiitaの記事でお世話になっていたのでこの本が発売されるということを聞いた時からやってみたいと思っていました。

学習時の自分のスキル

メディア事業をやっている企業で管理職をやりながら、3月から基本情報の勉強がてらにCASL2の勉強を始めたのがプログラミングの初めての経験。

その後5月から未経験でプログラマとして転職。業務で学習時間を設けてもらった後にRuby on Railsで小規模な社内システムを開発。その後RailsでWebアプリケーションを制作した後にAPIを作って、iOSからそのAPIを利用するためのアプリをSwiftで2月完成目標に開発中。

「プロを目指す人のためのRuby入門」を始めたきっかけ

  • 最低限のRubyの知識は業務の過程で身に付けたものの、わからないことがあった時はその都度周辺の知識を含めて調査という感じで開発を続けていたので、このあたりで一度Rubyの体系的知識を頭に入れておきたかった。

  • テストコードを今まで書かずにコーディングしていて、そろそろテストコードの書き方を勉強しようと思っていた。

  • Railsアプリケーションの開発をしているのにRubyについて場当たり的な対応で得た知識のままでいるのはどうかと思った。

進め方

  • 1度目ということで記載されているプログラムは全て自分の環境でも書いてみる

読んだだけで使えるようにならないのはプログラミングを始めてから身に沁みているので、必ずこれは行うようにしました。

  • 紹介されていたリンク等を1度は目を通す

これは単純に楽しいからです。以前読んだReal World HTTPの時にもそう感じたので今回も紹介されたリンクは積極的に読んでみることにしました。覚えようとはしていないです。

nabeatsu.hatenablog.com

このようなやり方で進めたので、読み終えるまでに2週間程度かかってしまいました。 もっと気楽に1周した方が良かったのかなぁとちょっと思ったりしました。

使用頻度が少ないと事前に記載されている

個人的にはテスト駆動開発を体験出来るということと並んでありがたいと感じたところです。

一通りの機能が同じペースで紹介されていると、全部を覚えなければいけないような気分になって進めるのが億劫になってしまいます。

ですが、この本では使用頻度が少ない、実際の業務ではこういう風に書くことが多い、などという風に説明されているので、読む時に「この書き方はあまり使われないみたいだから写経して動いて納得出来たら次に進もう。」みたいな感じで進めることが出来ました。

知ってはいるし使い方もなんとなくわかるみたいな分野を体系的に学ぶことが出来る

ハッシュ、シンボル、正規表現、繰り返し処理等、Rubyを使ってコーディングをする上で避けては通れないものです。

業務でRubyを書いているので、最低限使えているつもりでしたが、一通り写経して解説を読み、例題としてプログラムを書いていると今までのコードの反省点がいくつも浮かんできました。

特にたくさんのページが割かれていた配列やクラス等、使用頻度が高いオブジェクトに関する体系的な知識は実際のコーディングにすぐに反映されるのではないかなと思います。

テスト駆動開発を体験出来た。

独特な書き方(DSL)のRSpecではなくMinitestというフレームワークを使ってテストコードを書いてから、実際のコードを書き始めます。

Minitestはテストコードを書いた経験がなかった自分でも簡単に感じ、なおかつテストコードの便利さも実感出来るものでした。

業務やプライベートではRailsで開発をしているのでRailsでModelに書く処理にテストコードを書く時はどのように書くのだろうという疑問は残りましたが、これはいずれ自分で学習することにします。

話は逸れますが伊藤さんはRSpecの本の翻訳もされていたそうなので、自分がSwiftのアプリ開発を終える頃に最近のバージョンに合わせた新版を出してくれないかなあと期待しています。

読み終えた後

一度写経して読んだからといって全てを覚えられるはずがないので、配列を使ったコードを書く時にさっと読み直したりということが既に何度かあります。

一度やっただけあってどのあたりに目的の処理が書いてあるか検討が付くので、Rubyを書く時には机の上に置いたままになりそうです…。

当面はこの本やレファレンスを適宜参照しながら今まで書いてきたコードのリファクタリングをしたり、趣味で開発しているRailsのアプリケーションのコードを書きながらRubyに繰り返し触れることで、学習を進めていこうかなと考えています。

おまけ:発売後すぐに学習を始めて良かったこと

SwiftとそのIDEXcodeのアップデート直後に業務で学習と開発をスタートした時に感じた辛さなのですが、本に書かれているコードがバージョンの違いで動かないということが何度もありました。

書かれている内容自体の理解に努めたいのにそれ以前の所で詰まってしまうのは結構なストレスでした。

これはこの本特有の良いところではありませんが、Rubyで現在業務で使っているバージョンで解説もされているのは非常に助かりました。