プライム無料体験をお試しいただけます
プライム無料体験で、この注文から無料配送特典をご利用いただけます。
非会員 | プライム会員 | |
---|---|---|
通常配送 | ¥410 - ¥450* | 無料 |
お急ぎ便 | ¥510 - ¥550 | |
お届け日時指定便 | ¥510 - ¥650 |
*Amazon.co.jp発送商品の注文額 ¥3,500以上は非会員も無料
無料体験はいつでもキャンセルできます。30日のプライム無料体験をぜひお試しください。
¥3,608¥3,608 税込
発送元: Amazon.co.jp 販売者: Amazon.co.jp
¥3,608¥3,608 税込
発送元: Amazon.co.jp
販売者: Amazon.co.jp
¥1,109¥1,109 税込
配送料 ¥330 6月3日-5日にお届け
発送元: プラスワン.コム【インボイス適格請求書発行対応】 販売者: プラスワン.コム【インボイス適格請求書発行対応】
¥1,109¥1,109 税込
配送料 ¥330 6月3日-5日にお届け
発送元: プラスワン.コム【インボイス適格請求書発行対応】
販売者: プラスワン.コム【インボイス適格請求書発行対応】
無料のKindleアプリをダウンロードして、スマートフォン、タブレット、またはコンピューターで今すぐKindle本を読むことができます。Kindleデバイスは必要ありません。
ウェブ版Kindleなら、お使いのブラウザですぐにお読みいただけます。
携帯電話のカメラを使用する - 以下のコードをスキャンし、Kindleアプリをダウンロードしてください。
オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方 大型本 – 2016/9/2
Sandi Metz
(著),
髙山 泰基
(翻訳)
{"desktop_buybox_group_1":[{"displayPrice":"¥3,608","priceAmount":3608.00,"currencySymbol":"¥","integerValue":"3,608","decimalSeparator":null,"fractionalValue":null,"symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"k2yfd7s8tT8Q8ouBcckAyO54Fl7l%2FCoerQAFBBA1sm1Z9qdwEzWUKO1u4uhdKOFcB%2Bb7ktrfem%2FmNLtIzTTfMWqgqhxtaXmClur9KhhtgILJDWaSyTaNi3%2Fc%2Flz9Mw97nDhrUH2NFOI%3D","locale":"ja-JP","buyingOptionType":"NEW","aapiBuyingOptionIndex":0}, {"displayPrice":"¥1,109","priceAmount":1109.00,"currencySymbol":"¥","integerValue":"1,109","decimalSeparator":null,"fractionalValue":null,"symbolPosition":"left","hasSpace":false,"showFractionalPartIfEmpty":true,"offerListingId":"k2yfd7s8tT8Q8ouBcckAyO54Fl7l%2FCoeUaCIkfpxWpM12QGWrctWngc2c7RpkPndp1q7nDfVBNVchcJYZmX70F%2FafBstCu91xavyQx4NCt47uAxgAB1s7LoOO8FV947Fq7m2m2aBE96oz6%2BRfkOqi9%2BJU8P4o8jMA4RhGwjin5SuKzWUGC%2BqWA%3D%3D","locale":"ja-JP","buyingOptionType":"USED","aapiBuyingOptionIndex":1}]}
購入オプションとあわせ買い
オブジェクト指向設計の名著として名高い“Practical Object-Oriented Design in Ruby"、待望の翻訳版! 使いこなせるようになるととても便利なオブジェクト指向ですが、「なんとなく」の理解で使っていると、大きな罠にかかってしまいます。本書は、保守性を上げて運用コストを下げるアプリケーションをつくるために、クラス設計から基本概念、継承のテクニック、ダックタイプ、そしてテスト設計まで、幅広くカバーしています。オブジェクト指向言語を使用するすべての人におすすめの1冊です。
- 本の長さ304ページ
- 言語日本語
- 出版社技術評論社
- 発売日2016/9/2
- 寸法18.3 x 1.8 x 23.2 cm
- ISBN-10477418361X
- ISBN-13978-4774183619
よく一緒に購入されている商品
対象商品: オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
¥3,608¥3,608
最短で6月2日 日曜日のお届け予定です
残り10点(入荷予定あり)
¥2,640¥2,640
最短で6月2日 日曜日のお届け予定です
在庫あり。
¥3,278¥3,278
最短で6月2日 日曜日のお届け予定です
在庫あり。
総額:
当社の価格を見るには、これら商品をカートに追加してください。
ポイントの合計:
pt
もう一度お試しください
追加されました
一緒に購入する商品を選択してください。
この商品をチェックした人はこんな商品もチェックしています
ページ 1 以下のうち 1 最初から観るページ 1 以下のうち 1
登録情報
- 出版社 : 技術評論社 (2016/9/2)
- 発売日 : 2016/9/2
- 言語 : 日本語
- 大型本 : 304ページ
- ISBN-10 : 477418361X
- ISBN-13 : 978-4774183619
- 寸法 : 18.3 x 1.8 x 23.2 cm
- Amazon 売れ筋ランキング: - 231,116位本 (本の売れ筋ランキングを見る)
- - 315位開発技法
- - 753位ソフトウェア開発・言語
- - 5,225位電気・通信 (本)
- カスタマーレビュー:
著者について
著者をフォローして、新作のアップデートや改善されたおすすめを入手してください。
著者の本をもっと発見したり、よく似た著者を見つけたり、著者のブログを読んだりしましょう
-
トップレビュー
上位レビュー、対象国: 日本
レビューのフィルタリング中に問題が発生しました。後でもう一度試してください。
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関係
・テストコード
-将来の変更に備えつつ不変的な単位でコードを書く
まだまだ理解は足りませんが、体系的に知識を得たので、必要に応じて戻ってこれると思います。
今のタイミングで読んでおいて良かったです。
2019年3月20日に日本でレビュー済み
Amazonで購入
rubyはオブジェクト指向言語で、さらにrubyならではのオブジェクト指向的なプログラムの書き方、クラスオブジェクトの設計の仕方というがあります。
この本は「rubyでオブジェクト指向プログラミングをするならせめてこういう設計でやれ」という手法について教えてくれてます。
筆者は教えるのがとてもうまいです。自分を完璧の権化のように見せることなく、ごく平凡な発想で作ったクラスの例を出してから話を始めます。そしてそのように最初に設計してしまうのも、別に間違いではないと言うのです。必要な要素をすべて見越すことなどできないと言い切ります。
それからそうした設計の欠点がどういうふうに現れ出し、その結果どういう設計が求められ、それをrubyでやるならどうするか、という手順を踏んでプログラムの進化する様を見せてくれます。なので、とても腑に落ちて理解できました。
これを読まなくてもrubyのプログラムは、はっきり言って、できると思います。
でもこれを読んだ後なら「なぜそのようにクラスを書くのか」ということに対してベストプラクティスを基にした一定の根拠を持てるようになるでしょう。
ゆえにrubyを使ってプログラムを書くなら必読級の著作と思います。
この本は「rubyでオブジェクト指向プログラミングをするならせめてこういう設計でやれ」という手法について教えてくれてます。
筆者は教えるのがとてもうまいです。自分を完璧の権化のように見せることなく、ごく平凡な発想で作ったクラスの例を出してから話を始めます。そしてそのように最初に設計してしまうのも、別に間違いではないと言うのです。必要な要素をすべて見越すことなどできないと言い切ります。
それからそうした設計の欠点がどういうふうに現れ出し、その結果どういう設計が求められ、それをrubyでやるならどうするか、という手順を踏んでプログラムの進化する様を見せてくれます。なので、とても腑に落ちて理解できました。
これを読まなくてもrubyのプログラムは、はっきり言って、できると思います。
でもこれを読んだ後なら「なぜそのようにクラスを書くのか」ということに対してベストプラクティスを基にした一定の根拠を持てるようになるでしょう。
ゆえにrubyを使ってプログラムを書くなら必読級の著作と思います。
2018年10月21日に日本でレビュー済み
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されたモジュールが複数あった場合のメッソドの探査は最後にインクルードされたモジュールから探査される。
・継承とコンポジションの利用の判断
継承はメッセージの委譲コストが楽になるが、オブジェクト間の階層構造により依存関係を強く持つことになる。
コンポジションは小さなオブジェクト単位を作るため、責任範囲が明快。階層構造から独立しているので見通しが良くなる。
2018年3月27日に日本でレビュー済み
Amazonで購入
オブジェクト指向言語でのクラス設計の基本を、Rubyの観点から網羅した素晴らしい本です。
“説明する内容の とても基本的な事を綴(つづ)る事には一貫して起承転結させている”と言えば お分かりいただけるでしょうか。
貴方のプログラミング技術が素直であればあるほど この本の解説はすんなり読み取れるでしょう。
ただし、他のレビュワーの方々が折に指摘されている通り、翻訳には変に突っかかった独特の癖があります。
私が読みますに、恐らくは直訳で一貫していて意訳を一切含めていないのが原因だと思います。
これは捕捉ですが、例えば、一般的に見慣れない蛍光板が街に設置されていて、誰かが
It can view result as message.
と言えば、これは「実はアレ、メッセージボードなんだ」という意味になりますが、これを直訳のままにすれば「それは結果をメッセージとして表示できるようにしている」となりますね。
訳された方がワザとやっておられるのかは定かではありませんが、それさえ把握できれば普通に読めます。
“説明する内容の とても基本的な事を綴(つづ)る事には一貫して起承転結させている”と言えば お分かりいただけるでしょうか。
貴方のプログラミング技術が素直であればあるほど この本の解説はすんなり読み取れるでしょう。
ただし、他のレビュワーの方々が折に指摘されている通り、翻訳には変に突っかかった独特の癖があります。
私が読みますに、恐らくは直訳で一貫していて意訳を一切含めていないのが原因だと思います。
これは捕捉ですが、例えば、一般的に見慣れない蛍光板が街に設置されていて、誰かが
It can view result as message.
と言えば、これは「実はアレ、メッセージボードなんだ」という意味になりますが、これを直訳のままにすれば「それは結果をメッセージとして表示できるようにしている」となりますね。
訳された方がワザとやっておられるのかは定かではありませんが、それさえ把握できれば普通に読めます。
2020年6月14日に日本でレビュー済み
Amazonで購入
Rubyの機能を用いたサンプルコードがしばしば登場するため、他の言語の利用者は文法や読み替えにある程度集中力を割かなければなりません。
しかし内容的には、他のOOP言語でも使える基本的・実践的なテクニック(継承、移譲の使い分けやダックタイピングの考え方など)が掲載されておりますので、Ruby利用者以外でも役立つ知識が得られるかと思います。
しかし内容的には、他のOOP言語でも使える基本的・実践的なテクニック(継承、移譲の使い分けやダックタイピングの考え方など)が掲載されておりますので、Ruby利用者以外でも役立つ知識が得られるかと思います。
2020年3月15日に日本でレビュー済み
Amazonで購入
Javaである程度オブジェクト指向のイメージはついていました。自分の中でパターンがほぼできているレベルです。知らない用語が多くあったので人に説明するときに使えそうです。
2018年11月27日に日本でレビュー済み
Amazonで購入
他のレビューでも指摘されているように、内容は基礎的なものが中心です。
すでにJava等でオブジェクト指向の入門本を読んでいる場合は復習となる内容。
また、翻訳があまり良くなく、原文もなかなか冗長な文章なので頭に入ってきにくい...
よく思うのが、スッキリ綺麗なコードを書く人が書籍を執筆すると冗長で非常に読みづらくなる現象は何なんだ...(汗
英語版の方では2018年の8月に新版が出ているため、英語に抵抗がない人はそちらも。
全くの初学者出ない場合、リファクタリングRubyやオブジェクト指向のこころなどの書籍と比較検討をオススメ。
すでにJava等でオブジェクト指向の入門本を読んでいる場合は復習となる内容。
また、翻訳があまり良くなく、原文もなかなか冗長な文章なので頭に入ってきにくい...
よく思うのが、スッキリ綺麗なコードを書く人が書籍を執筆すると冗長で非常に読みづらくなる現象は何なんだ...(汗
英語版の方では2018年の8月に新版が出ているため、英語に抵抗がない人はそちらも。
全くの初学者出ない場合、リファクタリングRubyやオブジェクト指向のこころなどの書籍と比較検討をオススメ。