eviry tech & service blog

「株式会社エビリー」の社員ブログです。弊社では、クラウド型動画配信サービス「millvi」、ソーシャル動画データ及び分析サービス「kamui tracker」、YouTube総合メディア「かむなび」を開発・提供しています。https://eviry.com/

オブジェクト指向設計実践ガイド ~Rubyでわかる進化し続ける柔軟なアプリケーションの育て方~ を読んだ

これは旧eviry tech blogから移行した記事です。

kamuitracker開発のhashimotoです。
オブジェクト指向設計実践ガイド ~Rubyでわかる進化し続ける柔軟なアプリケーションの育て方~ を読みました。

概要

オブジェクト指向設計についてRubyを使って体系的に説明している本。
オブジェクト指向とは何か・なぜオブジェクト指向設計なのかという基本的なことから、SOLID原則や各種デザインパターンなどオブジェクト指向設計において重要な考え方まで書かれています。
ただし、原則やデザインパターンの学習というよりは、具体的な事例(コード)とその問題点を考え、オブジェクト指向設計の考え方で設計しなおし、柔軟なコードにリファクタしていきながら設計の考え方を学んでいく、というより実践的な内容になっています。

各章ごとにオブジェクト指向設計での重要な考え方が取り上げられます。

  • 単一責任のクラス設計
  • オブジェクトの依存関係
    • 疎結合なオブジェクト設計のテクニック
  • 柔軟なインターフェースをつくる
    • 拡張・再利用しやすいインターフェースをどのようにつくるか
  • ダックタイピングで変更コストを削減する
  • 継承で振る舞いを共有する
    • 抽象的な振る舞いをスーパークラスへ昇格させる
  • モジュールで振る舞いを共有する
    • クラスの継承とモジュールのインクルードの使い分け
  • コンポジションでオブジェクトを組み合わせる
    • 継承とコンポジションそれぞれのメリット・デメリット
  • コスパの良いテスト設計
本書はパターンについての本ではありません。しかし、パターンを理解するための準備と、適切に選び使うための知識は身につけることができるでしょう。

上記引用で言われているように、本書はデザインパターンを学ぶ本ではありません。
設計に問題があるコードの何が問題なのかを理解し、問題に対してそのパターンを選ぶ理由はなんなのか、というオブジェクト指向設計の考え方・それを実際に活用していく方法について学ぶ本だと思います。

感想

  • オブジェクト指向設計についてRubyを使ったコードで解説されているので、Rubyしかわからん、みたいな人も理解しやすいと思います。
  • 実際に問題のあるコードをリファクタリングしてより良い設計に修正していく、という流れを追いながら学べるので、理解がしやすい。
  • 設計の問題点と種々の原則・パターンを通してオブジェクト指向設計の考え方が体系的に学べるので、オブジェクト指向についてなんとなーくしか理解していない人は読むと良いと思います。