{"componentChunkName":"component---src-templates-post-template-js","path":"/posts/oop-books","result":{"data":{"markdownRemark":{"id":"6bcfa1b5-2612-506e-885a-6d7e43fb8839","html":"<p>プログラミングを学んでいると「オブジェクト指向」という単語に遭遇しますが、その意味や活用法を理解するのは簡単ではありません。</p>\n<p>この記事では、そんな「オブジェクト指向」を学ぶための定番書籍を紹介します。</p>\n<h2 id=\"オブジェクト指向でなぜつくるのか-第3版-知っておきたいoop、設計、アジャイル開発の基礎知識\" style=\"position:relative;\"><a href=\"#%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%A7%E3%81%AA%E3%81%9C%E3%81%A4%E3%81%8F%E3%82%8B%E3%81%AE%E3%81%8B-%E7%AC%AC3%E7%89%88-%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%8A%E3%81%8D%E3%81%9F%E3%81%84oop%E3%80%81%E8%A8%AD%E8%A8%88%E3%80%81%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E9%96%8B%E7%99%BA%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98\" aria-label=\"オブジェクト指向でなぜつくるのか 第3版 知っておきたいoop、設計、アジャイル開発の基礎知識 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><a href=\"https://amzn.to/2T4oUUq\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識</a></h2>\n<p><a href=\"https://www.amazon.co.jp/dp/B092HDFJKK/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=oshimayuki0d-22&linkId=32c0bd0cc0cd1e60fe24e972479ce2d5&language=ja_JP\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B092HDFJKK&Format=_SL160_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li2&amp;o=9&amp;a=B092HDFJKK\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>オブジェクト指向の解説書です。</p>\n<p>プログラミングとしてのオブジェクト指向の話から、プログラミングにとどまらない考え方についても解説されています。</p>\n<p>オブジェクト指向がイマイチ分からずにいる、という方に非常にオススメの書籍です。</p>\n<p>2021 年 4 月 15 日に第 3 版が出ているので、購入するのにちょうど良いタイミングかもしれません。</p>\n<h2 id=\"リファクタリング第2版-既存のコードを安全に改善する\" style=\"position:relative;\"><a href=\"#%E3%83%AA%E3%83%95%E3%82%A1%E3%82%AF%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E7%AC%AC2%E7%89%88-%E6%97%A2%E5%AD%98%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%AE%89%E5%85%A8%E3%81%AB%E6%94%B9%E5%96%84%E3%81%99%E3%82%8B\" aria-label=\"リファクタリング第2版 既存のコードを安全に改善する permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><a href=\"https://amzn.to/3x2Az4M\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">リファクタリング(第2版): 既存のコードを安全に改善する</a></h2>\n<p><a href=\"https://www.amazon.co.jp/dp/B0827R4BDW/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=oshimayuki0d-22&linkId=85aef22737b66fc1ae905bbf3de9639f&language=ja_JP\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B0827R4BDW&Format=_SL160_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li2&amp;o=9&amp;a=B0827R4BDW\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>ソフトウェアの振る舞いを変えずにコードを改善する「リファクタリング」の解説書です。</p>\n<p>オブジェクト指向のプラクティスを生かしつつ、コードを改善する方法などが解説されています。</p>\n<p>第 1 版のサンプルコードは Java で、第 2 版のサンプルコードは JavaScript です。</p>\n<p>オブジェクト指向を利用した具体的なコードの書き方を学びたい場合にオススメです。</p>\n<h2 id=\"増補改訂版java言語で学ぶデザインパターン入門\" style=\"position:relative;\"><a href=\"#%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%89%88java%E8%A8%80%E8%AA%9E%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%85%A5%E9%96%80\" aria-label=\"増補改訂版java言語で学ぶデザインパターン入門 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><a href=\"https://amzn.to/3ir593S\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">増補改訂版Java言語で学ぶデザインパターン入門</a></h2>\n<p><a href=\"https://www.amazon.co.jp/dp/B00I8ATHGW/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=oshimayuki0d-22&linkId=512122cbc4446bbfef63f156e9a92d32&language=ja_JP\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B00I8ATHGW&Format=_SL160_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li2&amp;o=9&amp;a=B00I8ATHGW\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>Java で GoF のデザインパターンを解説した書籍です。</p>\n<p>GoF のデザインパターンのもとの本である『<a href=\"https://amzn.to/3daO77d\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">オブジェクト指向における再利用のためのデザインパターン</a>』よりも、こちらの方が読みやすくなっています。</p>\n<p>姉妹本として『<a href=\"https://amzn.to/3z3OmtE\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編</a>』という書籍もあります。</p>\n<p>実践的なプログラミングではマルチスレッドの知識も必要になるので、マルチスレッド編もオススメです。</p>\n<h2 id=\"オブジェクト指向設計実践ガイド-rubyでわかる-進化しつづける柔軟なアプリケーションの育て方\" style=\"position:relative;\"><a href=\"#%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E8%A8%AD%E8%A8%88%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-ruby%E3%81%A7%E3%82%8F%E3%81%8B%E3%82%8B-%E9%80%B2%E5%8C%96%E3%81%97%E3%81%A4%E3%81%A5%E3%81%91%E3%82%8B%E6%9F%94%E8%BB%9F%E3%81%AA%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E8%82%B2%E3%81%A6%E6%96%B9\" aria-label=\"オブジェクト指向設計実践ガイド rubyでわかる 進化しつづける柔軟なアプリケーションの育て方 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a><a href=\"https://amzn.to/2TOwoeG\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方</a></h2>\n<p><a href=\"https://www.amazon.co.jp/dp/B01L8SEVYI/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=oshimayuki0d-22&linkId=080a0a13b477b6b3e578102a0a1cd63a&language=ja_JP\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B01L8SEVYI&Format=_SL160_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=oshimayuki0d-22&language=ja_JP\" ></a><img src=\"https://ir-jp.amazon-adsystem.com/e/ir?t=oshimayuki0d-22&amp;language=ja_JP&amp;l=li2&amp;o=9&amp;a=B01L8SEVYI\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>Ruby を使い、オブジェクト指向を設計原則から解説した書籍です。</p>\n<p>継承と委譲のメリット・デメリットがしっかり解説されていたり、テストにおけるモジュールの利用について書かれていたり、評判通りの素晴らしい書籍です。</p>\n<p>ダックタイピングやモジュールを活用した、Ruby らしいコードについても学ぶことができます。</p>\n<p>タイトルにある「実践」の言葉の通り、初心者向けではなく、特に Java などの言語で登場する「インタフェース」の考え方を理解していないと、なかなか理解が難しいかもしれません。</p>\n<h2 id=\"その他\" style=\"position:relative;\"><a href=\"#%E3%81%9D%E3%81%AE%E4%BB%96\" aria-label=\"その他 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>その他</h2>\n<p>以上、オブジェクト指向に関する定番書籍を紹介してきました。</p>\n<p>その他、700 ページくらいある分厚い本ですが、『<a href=\"https://amzn.to/2PNXctZ\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">アジャイルソフトウェア開発の奥義 第2版 オブジェクト指向開発の神髄と匠の技</a>』も有名です。</p>\n<h2 id=\"関連分野について\" style=\"position:relative;\"><a href=\"#%E9%96%A2%E9%80%A3%E5%88%86%E9%87%8E%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6\" aria-label=\"関連分野について permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>関連分野について</h2>\n<p>オブジェクト指向を学ぶ際は、前提としてコーディングの基本的なプラクティスをおさえておいた方がいいです。</p>\n<p>コーディングの原則を学ぶための書籍は、以下の記事にまとめています。</p>\n<ul>\n<li><a href=\"https://www.kanzennirikaisita.com/posts/coding-principle-books\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">コーディングの原則を学ぶための書籍まとめ</a></li>\n</ul>\n<p>オブジェクト指向についてより発展的な解説をしている分野としては、ドメイン駆動設計 (DDD) やアプリケーションアーキテクチャが挙げられます。</p>\n<p>それぞれ以下の記事に書籍をまとめているので、興味がある方は参照ください。</p>\n<ul>\n<li><a href=\"https://www.kanzennirikaisita.com/posts/ddd-books\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">【難易度別】ドメイン駆動設計 (DDD) の書籍 +α のまとめ</a></li>\n<li><a href=\"https://www.kanzennirikaisita.com/posts/application-architecture-books\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">アプリケーションアーキテクチャに関する書籍 4 冊の紹介</a></li>\n</ul>","fields":{"slug":"/posts/oop-books","tagSlugs":["/tag/oop/"],"autoRecommendPosts":["java-practical-books","computer-why-series","coding-principle-books","refactoring-rearchitecting-books"]},"frontmatter":{"date":"2021-04-28T08:07:20.650Z","description":"プログラミングを学んでいると「オブジェクト指向」という単語に遭遇しますが、その意味や活用法を理解するのは簡単ではありません。\nこの記事では、そんな「オブジェクト指向」を学ぶための定番書籍を紹介します。","tags":["oop"],"title":"オブジェクト指向の定番解説書まとめ","socialImage":null,"recommendPosts":["https://www.kanzennirikaisita.com/posts/coding-principle-books","https://www.kanzennirikaisita.com/posts/ddd-books","https://www.kanzennirikaisita.com/posts/application-architecture-books","https://www.kanzennirikaisita.com/posts/software-developer-books-index"]}}},"pageContext":{"slug":"/posts/oop-books"}},"staticQueryHashes":["251939775","3942705351","401334301"]}