Help us understand the problem. What is going on with this article?

【Ruby】OOPを学ぶためのおすすめ書籍1選

More than 1 year has passed since last update.

「オブジェクト指向プログラミング(OOP)って言葉自体はなんとなく知っているけど、じゃあ実際のコーディングの場面でどうしたら良いのかはあんまり腹落ちしてないんだよなぁ〜」という方、
または「多少動くコードは書けるようになってきたんだけど、もう少し良い実装ができるようになりたいなぁ〜(何が良い実装なのかはよく分かってないけど)」という方に、
是非とも一読いただきたい本があるので(受け売りですが...)まとめました。
皆さんのエンジニアライフのお役に立てれば幸いです。 :innocent:

対象者

  • RubyなどのOOP言語を実務で使いはじめた方
  • OOPに関して言葉は知っているけど、ぶっちゃけその利点が分かっていない方
  • 手続き型プログラミングとの違いがよく分かっていない方
  • 動くコードは多少かけるようになってきたけれど、自分の書いているコードが良いコードであるかの自信のない方

何か

私がオススメしてやまない本は、オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方 です。
英語版はPractical Object-Oriented Design: An Agile Primer Using Ruby (2nd Edition)です。
*英語版は最近2ndエディションが出たようです。

Rubyを題材にしており、オブジェクト指向プログラミングを実現するためのメンタルモデルを養うことのできる(と、私が考えている)本です。
基本的にはSOLIDと呼ばれる考え方を中心に、柔軟なインターフェースを実装するための考え方を順を追って説明していきます。

何が凄いか

オブジェクト指向を身に着ける目的は変更に強いシステム(変更に対するコストが少ないシステム)を作ることです。
今求められている機能を実装しつつ、将来の可能性を考慮できる実装をするためには、手続き型プログラミングではなくてオブジェクト指向の考え方が必要になります。

OOPの考え方を身につけるには着眼点を変える必要があるのですが、その観点を執拗なくらい丁寧に解説してくれています。

またこの本ではヨロシクないコード(手続き型プログラミング)からスタートして徐々にコードを改善していく(OOPへの移行)ように順序立てられているので、プログラムを考える際の思考の流れを身につけることができるのではないかと思います。
また、ヨロシクないコードの例に挙がっている例の中には「こんなコード見たことある(というか自分も実装してた)!」ものが多々あるので、今後のコーディングにすぐに役立つことが多いです。

これを読むとどんな嬉しいことがあるか

  • 意図を持って実装をすることができるようになる
    • なんと無く処理を分割したりするのでは無く、なぜ・このように・この場所で実装するのかを理解しながら手を動かせるようになる
    • つまり、エンジニアとしてのレベルが1~2段階は上がる(ちゃんと実践すれば初級者から中級者に昇格できると思います)
      • つまり、自身の市場価値が上がる
  • 他人の書いたコードをレビューする際には根拠を持って指摘できるようになる
    • 今までなんと無く「こうした方がいいんじゃない?」と思っていたことが、OOPの考え方に沿って指摘できるようになる。

雑感

私はこの本に出会うまでOOPの言葉の意味はなんと無く分かっている程度で、実際に設計やコーディングする際に何をどうすれば良いのかはよく分かっていませんでした。
OOPの言う所のクラスやポリモフィックなどの言葉はなんとなく知っていましたが、「じゃあそれをコードに落とし込むとどうなるのか?それをするとどんな嬉しいことがあるのか?」というところはよく分かっていませんでした。

この本を読んで実務で実践することで、エンジニアとしてのレベルが1~2段階は確実に上がったと思っています。
理由としては、転職活動で技術課題に取り組んだ際に面接担当のエンジニアから「この考え方良いね」と言って頂いた点はほぼ全て、本書から学んだOOPの基本に沿った実装をしていたおかげであるからです。
また、それが高じてより良いお仕事を頂けるようにもなりました。

結局、どの言語やフレームワークを使うにしろ、それらの根本にはOOPなどの基礎的な思想があり、それを理解できていないと十分な設計や実装はできないのだなという考えに至りました。

最後に、私はこの本を物凄くオススメしていますが、別にこちらの著者のお知り合いでもなければスポンサーでもありません。
ただ純粋に、この本にはエンジニアとしてのスキルを上げるために必要なエッセンスが詰まっていると考えているので、啓蒙活動をしているだけです。 :innocent:

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away