{"componentChunkName":"component---src-templates-post-template-js","path":"/posts/refactoring-rearchitecting-books","result":{"data":{"markdownRemark":{"id":"72dc5a35-5513-5f64-b202-f421ac58b1f5","html":"<p>ソフトウェア開発は単純に継続していっても複雑さが増すばかりであり、コードやアーキテクチャを改善すべき場面は頻繁に訪れます。</p>\n<p>この記事では、そんなコードの改善・アーキテクチャの改善について書かれた書籍をそれぞれ紹介していきます。</p>\n<h2 id=\"コードの改善に関する書籍\" style=\"position:relative;\"><a href=\"#%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E6%94%B9%E5%96%84%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E6%9B%B8%E7%B1%8D\" 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<h3 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-%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%EF%BC%88%E7%AC%AC2%E7%89%88%EF%BC%89\" 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/3cyxmlD\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">リファクタリング 既存のコードを安全に改善する（第2版）</a></h3>\n<p><a href=\"https://www.amazon.co.jp/dp/B0827R4BDW/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=oshimayuki0d-22&linkId=5a9b6f54e6ce8634faa91d7ee0653266&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>サンプルコードは JavaScript ですが、紹介されている手法は言語によらず利用可能なものが多いです。</p>\n<p>様々なプラクティスがカタログ的にまとまっており、実践でも役立てやすい、オススメの書籍です。</p>\n<h3 id=\"レガシーコード改善ガイド\" style=\"position:relative;\"><a href=\"#%E3%83%AC%E3%82%AC%E3%82%B7%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E6%94%B9%E5%96%84%E3%82%AC%E3%82%A4%E3%83%89\" 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><a href=\"https://amzn.to/3cwJ8ND\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">レガシーコード改善ガイド</a></h3>\n<p><a href=\"https://www.amazon.co.jp/dp/B01AN97W08/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=oshimayuki0d-22&linkId=253cdf6b6fca31a30d40c9df9028ad56&language=ja_JP\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B01AN97W08&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=B01AN97W08\" 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<blockquote>\n<p>私にとって、レガシーコードとは、単にテストのないコードです。</p>\n</blockquote>\n<p>という 1 つの答えを示しているのも特徴です。</p>\n<h2 id=\"アーキテクチャの改善に関する書籍\" style=\"position:relative;\"><a href=\"#%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3%E3%81%AE%E6%94%B9%E5%96%84%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E6%9B%B8%E7%B1%8D\" 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<h3 id=\"レガシーソフトウェア改善ガイド\" style=\"position:relative;\"><a href=\"#%E3%83%AC%E3%82%AC%E3%82%B7%E3%83%BC%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E6%94%B9%E5%96%84%E3%82%AC%E3%82%A4%E3%83%89\" 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><a href=\"https://amzn.to/3ivPrVj\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">レガシーソフトウェア改善ガイド</a></h3>\n<p><a href=\"https://www.amazon.co.jp/dp/B01MSLAFPT/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=oshimayuki0d-22&linkId=a2eaeebc8c239b2624c10ad922f0d251&language=ja_JP\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=B01MSLAFPT&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=B01MSLAFPT\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>ここまでに紹介した書籍よりも、もう少し広い範囲での改善に関する書籍です。</p>\n<ul>\n<li>アプリケーションのモジュール化やマイクロサービス化</li>\n<li>開発環境やビルド、デプロイの改善</li>\n</ul>\n<p>などについて書かれています。</p>\n<p>具体的なツールやコードを挙げながら解説されているので、状況を想像しやすいです。</p>\n<h3 id=\"進化的アーキテクチャ-絶え間ない変化を支える\" style=\"position:relative;\"><a href=\"#%E9%80%B2%E5%8C%96%E7%9A%84%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3-%E7%B5%B6%E3%81%88%E9%96%93%E3%81%AA%E3%81%84%E5%A4%89%E5%8C%96%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B\" 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><a href=\"https://amzn.to/3zgZWlu\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">進化的アーキテクチャ ―絶え間ない変化を支える</a></h3>\n<p><a href=\"https://www.amazon.co.jp/dp/4873118565/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=oshimayuki0d-22&linkId=5ce592a8daef7f485cf3fdb2e4e9dd5a&language=ja_JP\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4873118565&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=4873118565\" 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<h3 id=\"モノリスからマイクロサービスへ-モノリスを進化させる実践移行ガイド\" style=\"position:relative;\"><a href=\"#%E3%83%A2%E3%83%8E%E3%83%AA%E3%82%B9%E3%81%8B%E3%82%89%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%B8-%E3%83%A2%E3%83%8E%E3%83%AA%E3%82%B9%E3%82%92%E9%80%B2%E5%8C%96%E3%81%95%E3%81%9B%E3%82%8B%E5%AE%9F%E8%B7%B5%E7%A7%BB%E8%A1%8C%E3%82%AC%E3%82%A4%E3%83%89\" 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><a href=\"https://amzn.to/3iwBNRK\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">モノリスからマイクロサービスへ ―モノリスを進化させる実践移行ガイド</a></h3>\n<p><a href=\"https://www.amazon.co.jp/dp/4873119316/ref=as_li_ss_il?ie=UTF8&linkCode=li2&tag=oshimayuki0d-22&linkId=602c1e6ef189179dcae14c8f2fad2056&language=ja_JP\" target=\"_blank\"><img border=\"0\" src=\"//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4873119316&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=4873119316\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"border:none !important; margin:0px !important;\"></p>\n<p>『<a href=\"https://amzn.to/3x9Do46\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">マイクロサービスアーキテクチャ</a>』の著者による、モノリスからマイクロサービスへの移行に関する書籍です。</p>\n<p>マイクロサービスへの移行の際に使える様々なパターンがまとめられています。</p>\n<p>序盤ではそもそもマイクロサービスにするべきなのか、といったことも語られており、本当にマイクロサービスを採用するべきかを検討する際にも非常に参考になります。</p>\n<p>マイクロサービスには特有の検討事項も多いので、実際にマイクロサービス化する際は『<a href=\"https://amzn.to/3isBasx\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">マイクロサービスパターン［実践的システムデザインのためのコード解説］</a>』なども読むのがオススメです。</p>\n<h2 id=\"おわりに\" style=\"position:relative;\"><a href=\"#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB\" 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<p>オブジェクト指向に関する書籍は <a href=\"https://www.kanzennirikaisita.com/posts/oop-books\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">こちら</a> にまとめているので、是非ご覧ください。</p>","fields":{"slug":"/posts/refactoring-rearchitecting-books","tagSlugs":["/tag/architecture/"],"autoRecommendPosts":["microservices-books","oop-books","linux-learning-roadmap","cpu-books"]},"frontmatter":{"date":"2021-06-10T13:51:40.282Z","description":"ソフトウェア開発は単純に継続していっても複雑さが増すばかりであり、コードやアーキテクチャを改善すべき場面は頻繁に訪れます。\nこの記事では、そんなコードの改善・アーキテクチャの改善について書かれた書籍をそれぞれ紹介していきます。","tags":["architecture"],"title":"コードの改善・アーキテクチャの改善に関する書籍まとめ","socialImage":null,"recommendPosts":["https://www.kanzennirikaisita.com/posts/oop-books","https://www.kanzennirikaisita.com/posts/books-about-what-is-production-ready","https://www.kanzennirikaisita.com/posts/software-developer-books-index"]}}},"pageContext":{"slug":"/posts/refactoring-rearchitecting-books"}},"staticQueryHashes":["251939775","3942705351","401334301"]}