オブジェクト指向言語でのクラス設計の基本を、Rubyの観点から網羅した素晴らしい本です。
“説明する内容の とても基本的な事を綴(つづ)る事には一貫して起承転結させている”と言えば お分かりいただけるでしょうか。
貴方のプログラミング技術が素直であればあるほど この本の解説はすんなり読み取れるでしょう。
ただし、他のレビュワーの方々が折に指摘されている通り、翻訳には変に突っかかった独特の癖があります。
私が読みますに、恐らくは直訳で一貫していて意訳を一切含めていないのが原因だと思います。
これは捕捉ですが、例えば、一般的に見慣れない蛍光板が街に設置されていて、誰かが
It can view result as message.
と言えば、これは「実はアレ、メッセージボードなんだ」という意味になりますが、これを直訳のままにすれば「それは結果をメッセージとして表示できるようにしている」となりますね。
訳された方がワザとやっておられるのかは定かではありませんが、それさえ把握できれば普通に読めます。
購入オプション
Kindle 価格: | ¥3,608 (税込) |
獲得ポイント: | 36ポイント (1%) |

無料のKindleアプリをダウンロードして、スマートフォン、タブレット、またはコンピューターで今すぐKindle本を読むことができます。Kindleデバイスは必要ありません 。詳細はこちら
Kindle Cloud Readerを使い、ブラウザですぐに読むことができます。
携帯電話のカメラを使用する - 以下のコードをスキャンし、Kindleアプリをダウンロードしてください。
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方 Kindle版
(概要)
オブジェクト指向設計の名著として名高い“Practical Object-Oriented Design in Ruby”,待望の翻訳版!使いこなせるようになるととても便利なオブジェクト指向ですが,「なんとなく」の理解で使っていると,大きな罠にかかってしまいます。本書は,保守性を上げて運用コストを下げるアプリケーションをつくるために,クラス設計から基本概念,継承のテクニック,ダックタイプ,そしてテスト設計まで,幅広くカバーしています。オブジェクト指向言語を使用するすべての人におすすめの1冊です。
(こんな方におすすめ)
・オブジェクト指向プログラミングをしたことがある人
・オブジェクト指向設計に悩んでいる人
(目次)
第1章 オブジェクト指向設計
第2章 単一責任のクラスを設計する
第3章 依存関係を管理する
第4章 柔軟なインターフェースをつくる
第5章 ダックタイピングでコストを削減する
第6章 継承によって振る舞いを獲得する
第7章 モジュールでロールの振る舞いを共有する
第8章 コンポジションでオブジェクトを組み合わせる
第9章 費用対効果の高いテストを設計する
オブジェクト指向設計の名著として名高い“Practical Object-Oriented Design in Ruby”,待望の翻訳版!使いこなせるようになるととても便利なオブジェクト指向ですが,「なんとなく」の理解で使っていると,大きな罠にかかってしまいます。本書は,保守性を上げて運用コストを下げるアプリケーションをつくるために,クラス設計から基本概念,継承のテクニック,ダックタイプ,そしてテスト設計まで,幅広くカバーしています。オブジェクト指向言語を使用するすべての人におすすめの1冊です。
(こんな方におすすめ)
・オブジェクト指向プログラミングをしたことがある人
・オブジェクト指向設計に悩んでいる人
(目次)
第1章 オブジェクト指向設計
第2章 単一責任のクラスを設計する
第3章 依存関係を管理する
第4章 柔軟なインターフェースをつくる
第5章 ダックタイピングでコストを削減する
第6章 継承によって振る舞いを獲得する
第7章 モジュールでロールの振る舞いを共有する
第8章 コンポジションでオブジェクトを組み合わせる
第9章 費用対効果の高いテストを設計する
- 言語日本語
- 出版社技術評論社
- 発売日2016/9/2
- ファイルサイズ5430 KB
商品の説明
内容(「BOOK」データベースより)
著者略歴 (「BOOK著者紹介情報」より)
メッツ,サンディ
ソフトウェア・アーキテクトとして、デューク大学にて毎日コードを書いている。デューク大学のチームでは、15年以上進化しつづけてきた大規模なオブジェクト指向アプリケーションを抱える顧客の、実際の問題を一丸となって解決している。現在、ノースカロライナのダーラム在住
高山/泰基
株式会社Misoca勤務。西日暮里.rbのメンバー(本データはこの書籍が刊行された当時に掲載されていたものです) --このテキストは、jp_oversized_book版に関連付けられています。
ソフトウェア・アーキテクトとして、デューク大学にて毎日コードを書いている。デューク大学のチームでは、15年以上進化しつづけてきた大規模なオブジェクト指向アプリケーションを抱える顧客の、実際の問題を一丸となって解決している。現在、ノースカロライナのダーラム在住
高山/泰基
株式会社Misoca勤務。西日暮里.rbのメンバー(本データはこの書籍が刊行された当時に掲載されていたものです) --このテキストは、jp_oversized_book版に関連付けられています。
登録情報
- ASIN : B01L8SEVYI
- 出版社 : 技術評論社 (2016/9/2)
- 発売日 : 2016/9/2
- 言語 : 日本語
- ファイルサイズ : 5430 KB
- Text-to-Speech(テキスト読み上げ機能) : 有効
- X-Ray : 有効
- Word Wise : 有効にされていません
- 本の長さ : 475ページ
- Amazon 売れ筋ランキング: - 114,566位Kindleストア (の売れ筋ランキングを見るKindleストア)
- - 4,087位コンピュータ・IT (Kindleストア)
- - 4,809位工学 (Kindleストア)
- - 8,269位コンピュータ・IT (本)
- カスタマーレビュー:
著者について
著者をフォローして、新作のアップデートや改善されたおすすめを入手してください。

著者の本をもっと発見したり、よく似た著者を見つけたり、著者のブログを読んだりしましょう
この本を読んだ購入者はこれも読んでいます
ページ: 1 / 1 最初に戻るページ: 1 / 1
カスタマーレビュー
5つ星のうち4.4
星5つ中の4.4
66 件のグローバル評価
評価はどのように計算されますか?
全体的な星の評価と星ごとの割合の内訳を計算するために、単純な平均は使用されません。その代わり、レビューの日時がどれだけ新しいかや、レビューアーがAmazonで商品を購入したかどうかなどが考慮されます。また、レビューを分析して信頼性が検証されます。
トップレビュー
上位レビュー、対象国: 日本
レビューのフィルタリング中に問題が発生しました。後でもう一度試してください。
2018年3月27日に日本でレビュー済み
違反を報告する
Amazonで購入
20人のお客様がこれが役に立ったと考えています
役に立った
2018年11月27日に日本でレビュー済み
Amazonで購入
他のレビューでも指摘されているように、内容は基礎的なものが中心です。
すでにJava等でオブジェクト指向の入門本を読んでいる場合は復習となる内容。
また、翻訳があまり良くなく、原文もなかなか冗長な文章なので頭に入ってきにくい...
よく思うのが、スッキリ綺麗なコードを書く人が書籍を執筆すると冗長で非常に読みづらくなる現象は何なんだ...(汗
英語版の方では2018年の8月に新版が出ているため、英語に抵抗がない人はそちらも。
全くの初学者出ない場合、リファクタリングRubyやオブジェクト指向のこころなどの書籍と比較検討をオススメ。
すでにJava等でオブジェクト指向の入門本を読んでいる場合は復習となる内容。
また、翻訳があまり良くなく、原文もなかなか冗長な文章なので頭に入ってきにくい...
よく思うのが、スッキリ綺麗なコードを書く人が書籍を執筆すると冗長で非常に読みづらくなる現象は何なんだ...(汗
英語版の方では2018年の8月に新版が出ているため、英語に抵抗がない人はそちらも。
全くの初学者出ない場合、リファクタリングRubyやオブジェクト指向のこころなどの書籍と比較検討をオススメ。
2020年7月10日に日本でレビュー済み
Amazonで購入
ソフトウェア・アーキテクトとして30年以上の経験を持つSandi Mets 氏の著書です。
「オブジェクト指向」って、プログラミングの世界では普通に使われている言葉なんですが、プログラミング初心者の私には全然その姿が見えませんでした。
学生時代に勉強したプログラミング言語のBasic、FORTRANは手続き型言語でしたし、趣味でいじっていたEXCELマクロのVBAも小さいものばかりだったので必要としませんでした。
今回、RubyやRuby on Railsを真剣に取り組み始めて、他人のコードを見て???となるばかり。
そこで評判も良く、Rubyを使って説明している本書に挑戦してみることにしました。
【本書で学べること・考えること】
・オブジェクト指向プログラミングの利点
・単一責任のクラスの決定
・不必要な依存の断ち切り
・柔軟なインターフェイスの定め方
・ダックタイピング
・上手な振る舞いの適用
・コンポジションによるオブジェクト作成
・費用対効果の高いテスト設計
読んでみての感想です。
元の説明が冗長的な上に直訳的な日本語訳なので、なかなか読解が難しい本です。
絶対の正解があるわけでなく、概念的な内容なので、より難解です。
ただ、説明がRubyのコードで書かれているので、コードを読めば内容が理解できる点も良かったです。
今の自分のスキル、知識では、全部を理解することはできませんでした。
ただ、読む前と読んだ後では、確実にコードの見方や書き方が変わったと思います。
(Rubocopがメソッドの行数が多いと注意してくる理由が分かりました。)
自分の理解した内容としては、以下の通りです。
・オブジェクト指向の目的
SOLID、DRY、デメテルの法則としった原則に基き、将来的に変更や拡張のコストを下げる柔軟性の高いソフトウェア設計を行う
・注意点
-クラスは単一責任
-依存関係は疎結合に
-パブリックインターフェイスを明示
・設計手法
-ダックタイピング
-継承 is-a関係
-モジュール
-コンポジション has-a関係
・テストコード
-将来の変更に備えつつ不変的な単位でコードを書く
まだまだ理解は足りませんが、体系的に知識を得たので、必要に応じて戻ってこれると思います。
今のタイミングで読んでおいて良かったです。
「オブジェクト指向」って、プログラミングの世界では普通に使われている言葉なんですが、プログラミング初心者の私には全然その姿が見えませんでした。
学生時代に勉強したプログラミング言語のBasic、FORTRANは手続き型言語でしたし、趣味でいじっていたEXCELマクロのVBAも小さいものばかりだったので必要としませんでした。
今回、RubyやRuby on Railsを真剣に取り組み始めて、他人のコードを見て???となるばかり。
そこで評判も良く、Rubyを使って説明している本書に挑戦してみることにしました。
【本書で学べること・考えること】
・オブジェクト指向プログラミングの利点
・単一責任のクラスの決定
・不必要な依存の断ち切り
・柔軟なインターフェイスの定め方
・ダックタイピング
・上手な振る舞いの適用
・コンポジションによるオブジェクト作成
・費用対効果の高いテスト設計
読んでみての感想です。
元の説明が冗長的な上に直訳的な日本語訳なので、なかなか読解が難しい本です。
絶対の正解があるわけでなく、概念的な内容なので、より難解です。
ただ、説明がRubyのコードで書かれているので、コードを読めば内容が理解できる点も良かったです。
今の自分のスキル、知識では、全部を理解することはできませんでした。
ただ、読む前と読んだ後では、確実にコードの見方や書き方が変わったと思います。
(Rubocopがメソッドの行数が多いと注意してくる理由が分かりました。)
自分の理解した内容としては、以下の通りです。
・オブジェクト指向の目的
SOLID、DRY、デメテルの法則としった原則に基き、将来的に変更や拡張のコストを下げる柔軟性の高いソフトウェア設計を行う
・注意点
-クラスは単一責任
-依存関係は疎結合に
-パブリックインターフェイスを明示
・設計手法
-ダックタイピング
-継承 is-a関係
-モジュール
-コンポジション has-a関係
・テストコード
-将来の変更に備えつつ不変的な単位でコードを書く
まだまだ理解は足りませんが、体系的に知識を得たので、必要に応じて戻ってこれると思います。
今のタイミングで読んでおいて良かったです。
ベスト1000レビュアー
Amazonで購入
・クラスの単一責任化(クラス間が疎結合なコードを書く)
- クラスにメソッドを追加する時にそのクラスが知るべき情報なのかを自問自答する。
- 疎結合にしておかないと、1つの修正が他のクラスへの影響し、ひいてはサービスの品質へと繋がる。
- 単一責任化することで、疎結合同士のクラスとなる。この情報はどのクラスに聞けばわかるか(クラス間の依存関係)容易になり、変更が容易なアプリケーションの土台へと繋がる。
・単一責任の考慮不足の場合に起こり得るアンチパターンとして、本当は他のクラスから聞き出せばいいのに、自身のクラス内に取り込んでしまう場合。その場合、メソッドの引数に知りたい情報を持っているオブジェクトを注入し、クラスが必要以上の情報を持たないよう疎結合な設計にする。
・修正が発生した際にコストを掛けずに改修したい
- 依存性の高い設計にしないこと。よくあるアンチパターンとして、is_a?、kind_of?、responds_to?、case文でオブジェクトの種類毎にロジックを分岐させている場合要注意
- 依存性を減らした設計ができないか(ダックタイピング)を検討し、各クラスに同じメソッドを実装、別クラスへの切り出し、ポリモーフィックの利用を考えてみる。
・継承先で継承元と疎結合になるよう適宜フックメッセージを使う
どんなプログラマーでもsuperの送り忘れはあり得る。superの利用忘れは継承元への依存が高いことを意味する。
そこで、継承元にフックメソッドを用意し、結合度を低減させ変更に強くする
・メソッド探査パスへの理解
extendしたメソッドとincludeしたモジュール群に定義されたメソッドの場合、extendした方が先に探査される。
また、includeされたモジュールが複数あった場合のメッソドの探査は最後にインクルードされたモジュールから探査される。
・継承とコンポジションの利用の判断
継承はメッセージの委譲コストが楽になるが、オブジェクト間の階層構造により依存関係を強く持つことになる。
コンポジションは小さなオブジェクト単位を作るため、責任範囲が明快。階層構造から独立しているので見通しが良くなる。
- クラスにメソッドを追加する時にそのクラスが知るべき情報なのかを自問自答する。
- 疎結合にしておかないと、1つの修正が他のクラスへの影響し、ひいてはサービスの品質へと繋がる。
- 単一責任化することで、疎結合同士のクラスとなる。この情報はどのクラスに聞けばわかるか(クラス間の依存関係)容易になり、変更が容易なアプリケーションの土台へと繋がる。
・単一責任の考慮不足の場合に起こり得るアンチパターンとして、本当は他のクラスから聞き出せばいいのに、自身のクラス内に取り込んでしまう場合。その場合、メソッドの引数に知りたい情報を持っているオブジェクトを注入し、クラスが必要以上の情報を持たないよう疎結合な設計にする。
・修正が発生した際にコストを掛けずに改修したい
- 依存性の高い設計にしないこと。よくあるアンチパターンとして、is_a?、kind_of?、responds_to?、case文でオブジェクトの種類毎にロジックを分岐させている場合要注意
- 依存性を減らした設計ができないか(ダックタイピング)を検討し、各クラスに同じメソッドを実装、別クラスへの切り出し、ポリモーフィックの利用を考えてみる。
・継承先で継承元と疎結合になるよう適宜フックメッセージを使う
どんなプログラマーでもsuperの送り忘れはあり得る。superの利用忘れは継承元への依存が高いことを意味する。
そこで、継承元にフックメソッドを用意し、結合度を低減させ変更に強くする
・メソッド探査パスへの理解
extendしたメソッドとincludeしたモジュール群に定義されたメソッドの場合、extendした方が先に探査される。
また、includeされたモジュールが複数あった場合のメッソドの探査は最後にインクルードされたモジュールから探査される。
・継承とコンポジションの利用の判断
継承はメッセージの委譲コストが楽になるが、オブジェクト間の階層構造により依存関係を強く持つことになる。
コンポジションは小さなオブジェクト単位を作るため、責任範囲が明快。階層構造から独立しているので見通しが良くなる。
2019年3月20日に日本でレビュー済み
Amazonで購入
rubyはオブジェクト指向言語で、さらにrubyならではのオブジェクト指向的なプログラムの書き方、クラスオブジェクトの設計の仕方というがあります。
この本は「rubyでオブジェクト指向プログラミングをするならせめてこういう設計でやれ」という手法について教えてくれてます。
筆者は教えるのがとてもうまいです。自分を完璧の権化のように見せることなく、ごく平凡な発想で作ったクラスの例を出してから話を始めます。そしてそのように最初に設計してしまうのも、別に間違いではないと言うのです。必要な要素をすべて見越すことなどできないと言い切ります。
それからそうした設計の欠点がどういうふうに現れ出し、その結果どういう設計が求められ、それをrubyでやるならどうするか、という手順を踏んでプログラムの進化する様を見せてくれます。なので、とても腑に落ちて理解できました。
これを読まなくてもrubyのプログラムは、はっきり言って、できると思います。
でもこれを読んだ後なら「なぜそのようにクラスを書くのか」ということに対してベストプラクティスを基にした一定の根拠を持てるようになるでしょう。
ゆえにrubyを使ってプログラムを書くなら必読級の著作と思います。
この本は「rubyでオブジェクト指向プログラミングをするならせめてこういう設計でやれ」という手法について教えてくれてます。
筆者は教えるのがとてもうまいです。自分を完璧の権化のように見せることなく、ごく平凡な発想で作ったクラスの例を出してから話を始めます。そしてそのように最初に設計してしまうのも、別に間違いではないと言うのです。必要な要素をすべて見越すことなどできないと言い切ります。
それからそうした設計の欠点がどういうふうに現れ出し、その結果どういう設計が求められ、それをrubyでやるならどうするか、という手順を踏んでプログラムの進化する様を見せてくれます。なので、とても腑に落ちて理解できました。
これを読まなくてもrubyのプログラムは、はっきり言って、できると思います。
でもこれを読んだ後なら「なぜそのようにクラスを書くのか」ということに対してベストプラクティスを基にした一定の根拠を持てるようになるでしょう。
ゆえにrubyを使ってプログラムを書くなら必読級の著作と思います。
2017年7月8日に日本でレビュー済み
Amazonで購入
オブジェクト指向設計に関する本というと、どうしてもJavaが取り上げられがちであるが、この書籍ではオブジェクト指向をRubyで学ぼうという取り組みをしている。Kindleではなく大型本として購入したが、驚いたのは思ったよりも本の分量が少なく、それにもかかわらずオブジェクト指向のエッセンスがしっかりと盛り込まれているということ。最初から分厚く難解な言葉で満たされた本を読むよりも、まず最初にこの本をきっかけによりオブジェクト指向設計をかじってみるのも相当にアリだ。