masayuki5160's diary

滋賀県大津市に住むソフトウェアエンジニアの日常

ソフトウェア工学を学ぶ時のおすすめの本まとめ

本記事ではソフトウェア工学、ソフトウェアエンジニアリングを学ぶ際のおすすめ書籍をまとめます。あくまで僕個人が博士の学位を取得し、これまで学んできた中でお薦めしている書籍ですのでその辺りはご容赦ください。内容についても随時アップデートしていく予定です。

それでは以下どなたかの参考になれば幸いです。

※ 2025年5月13日 公開

※ 2025年5月14日 目次更新

※ 2025年7月17日 新たに執筆した書籍 会社員として働きながら博士号を取った記録〜社会人として学び直した4年間 に関して追記

まずはこの一冊

2冊あげていますが、どちらの書籍でも良いです。

ソフトウェア工学

僕個人のお話をすると、1冊目の岸田先生らの書籍" ソフトウェア工学 "をよく読んでいました。たまたま一番はじめに手に取ったのがこの本だったから、ということがその理由です。一番読んだのがこの本です。

ソフトウェア工学の基礎 改訂新版

2冊目の玉井先生の本" ソフトウェア工学の基礎 改訂新版 "もおすすめです。僕は改訂版から読んだのですが、とてもわかりやすいです。内容としては1冊目の岸田先生らの書籍とそこまで差はないと思います。

玉井先生の本で僕が好きな点は、日本におけるソフトウェア工学の発展についての記述が多い点、またどう技術が発展してきたかを経緯を含めて説明している点です。全体的に背景や経緯をしっかり説明するような仕上がりになっているので、そういった点が僕は好きですし、素晴らしい点だと思っています。

まとめ

いずれにせよ、二つともおすすめできるので、どちらか一方をしっかり読み、残りの一冊は興味のあるところだけさっと読む程度が良いかと思います。これらの本を読むだけでソフトウェア工学、ソフトウェアエンジニアリングの全体像はつかめるはずです。

要求定義、要件定義などの工程に興味がある方へ

要求工学概論

要求定義の工程に興味がある方も多いでしょう。要求定義に関しては、"要求工学概論:要求工学の基本概念から応用まで トップエスイー基礎講座 "をおすすめします。

他にも良い書籍があるかとは思いますが、僕個人はこちらの書籍を何度も読みました。トップエスイーで扱っている教材?であるので、そういう意味でもアカデミックと実践の場のことを考えたちょうど良い塩梅になってるように思います。ソフトウェア界隈はこの辺り、絶妙な距離感なのかなと思っているので、これくらいのバランスの本が良いのかもと思っています。

なお、トップエスイーとは、については以下を参照ください。

www.topse.jp

ソフトウェア設計に興味がある方へ

実践ソフトウェアアーキテクチャ

ソフトウェアの設計は花形というか興味がある方多いと思います。僕もソフトウェアエンジニアの仕事をはじめたときは自分で技術選定をしながらなんでも作れるようになりたいと思っていました。

そんなソフトウェア設計を学ぶ本は意外に少ないように思ってます。

最近になって良い本がいろいろ出てきてはいますが、少し前までは "実践ソフトウェアアーキテクチャ "がそれかと思います。

が、この本はなかなか難解で一人で読み進めるのも難しいと思います。元の書籍 "Software Architecture in Practice (SEI Series in Software Engineering) (English Edition)"は英語ですが購入ができますが、そもそも内容が難しい上に英語というのは苦しい。英語が得意な方や、英語の勉強で利用したい方におすすめします。こちらは改訂版が出ていますが、日本語への翻訳版はないです。

アーキテクチャの教科書

もちろん興味がある方は上記書籍をおすすめしますが、前述した通り難解なので、まずは以下書籍"アーキテクトの教科書 価値を生むソフトウェアのアーキテクチャ構築"をおすすめします。まずこの書籍を読み、全体像を把握した上でさきほどの書籍に挑むと良いかと思います。事前の知識というか、ソフトウェア工学、ソフトウェアエンジニアリングにおけるソフトウェア設計という分野がどういったことに関心があるのか、ということを把握しておくと読みやすいはずと思っています。

Design It!

"実践ソフトウェアアーキテクチャ"を読む前に例えば以下の書籍"Design It! ―プログラマーのためのアーキテクティング入門"を読むことも良いかと思います。同じようにソフトウェア工学におけるソフトウェア設計という分野がどんなことに関心があるのか、ということがさらに理解が深まると思います。ここまで読むと、書籍実践ソフトウェアアーキテクチャも自分の関心のある部分だけ拾い読みができるかと思います。分厚い本なのでまずはそれで十分だと思います、その後は必要に応じて読む程度で普通は良いです。

かんたんUML入門

オブジェクト指向に関する話題をここで出そうか悩んだのですが、それは実装工程の話題に譲り、ソフトウェアモデリング(モデリング)の書籍をここで紹介することとします。

モデリングは現在においては意識することなく多くの方が利用している技術だと思います。ただ、モデリングとは何か、モデルを利用することによる利点は何か、ということをしっかり把握した上でモデリングという技術を扱うとより良いでしょう。この辺りについては前述の書籍 "ソフトウェア工学ソフトウェア工学の基礎 改訂新版" で学べます。ぜひそちらを参照ください。

何はともあれUMLを学ぶのが良いのですが、僕が時折みる書籍"かんたん UML入門[改訂2版]"を紹介しておきます。他にも良い書籍はあるのだろうと思いますが、基本的なUMLのモデルを学ぶためにはこちらの書籍でも十分わかりやすいと判断しました。

実装工程に興味のある方へ

オブジェクト指向でなぜつくるのか

オブジェクト指向について、難解そうな本はいくつもありますが、しっかり理解できるわかりやすい本だとこちらの "オブジェクト指向でなぜつくるのか 第3版 知っておきたいOOP、設計、アジャイル開発の基礎知識 "だと思いました。まずこちらの本を読むことをお勧めします。

Java言語で学ぶデザインパターン入門

さらに興味がある方は以下"Java言語で学ぶデザインパターン入門第3版"のようなデザインパターンに関する書籍を読むと良いでしょう。

ただ、デザインパターンについては言語の進化なども踏まえると現時点で強くお勧めできるような本は思いつかず。今でも勉強になることは多いですし、ソフトウェア工学の発展においてオブジェクト指向を実装時にどううまく活用できるかのレシピとしては非常に素晴らしい貢献だと理解していますが、現在の状況を踏まえると良い本が浮かびませんでした(僕が知らないだけの可能性も高いです)。だからこそ実装工程における成果に個人個人で差があるのでしょうし、多くの人を惹きつける面白さがあるのだと思います。

LeanとDevOpsの科学

さて、こちらの書籍 "LeanとDevOpsの科学[Accelerate] テクノロジーの戦略的活用が組織変革を加速する impress top gearシリーズ"、よく知られていると思うのですが、DevOpsの話題はソフトウェア工学の中でも大事なテーマで、それらを学ぶにはこの本がいいのかなと考えています。実践者にとっては直接参考になるような話題は少ない本かもしれないですが、アカデミックな立場の視点で読むと非常に素晴らしい本だと感じるのではと思います。

実践者にとってはなぜDevOpsが重要かを改めて理解するためには良い本になります。現場での業務ですぐ役立つものではないですが、例えばステークホルダーへの説明や、なにかしらの外部発表、登壇時に参照すると良いかもしれません。

デバッグの理論と実践

こちらはデバッグに関する書籍 "デバッグの理論と実践 ―なぜプログラムはうまく動かないのか"です。デバッグは実装工程における重要なテーマですが、あまり体系立てて説明されている書籍は少ない印象です。おそらく多くの方は実装経験を積みながら身につけるスキルかと思いますが、改めてデバッグとは、を学ぶことは良い気づきがあるでしょう。アカデミックの本かというとそうではないように思ってますが、大学院時代に講義で利用した書籍ですのでこちらの書籍を紹介しておきます。

テスト工程に興味のある方へ

ソフトウェアテストのセオリー

テストに関するアカデミックな書籍はしっかり読んだことないのですが、基本がしっかりまとまっているのはこちらの書籍 "ソフトウェアテストのセオリー "だと思っています。日立製作所に所属する研究員の方たちが中心に執筆されている本で、参照している文献についてもしっかり述べられており、なおかつ内容もとてもわかりやすいです。

一方でなかなかに濃い内容になってますので、気合を入れて向き合う必要はあると思います。

ソフトウェアテスト教科書 JSTQB Foundation

JDTQBが出しているシラバス(テスト技術者資格制度 Foundation Level シラバス)もおすすめです。大元のシラバスを読むのが良いですが、それはそれでなかなかに難解なので、例えば以下のような教科書"ソフトウェアテスト教科書 JSTQB Foundation 第5版 シラバス2023対応"を利用するのが良いでしょう。

より深くソフトウェア工学、ソフトウェアエンジニアリングを知りたい方へ

実践ソフトウェアエンジニアリング

ここからはイメージとしては辞書のようなものとして気になる箇所のみ調べる際に手元においてると良いかな、という書籍です。もちろん興味がある方はぜんぶ読むと良いですが、とても内容が濃いのでつまみ読みするくらいで良いかと。

まずはこちらの書籍"実践ソフトウェアエンジニアリング (第9版)"。定期的に改訂されており、それもあって世界中で信頼されているソフトウェア工学、ソフトウェアエンジニアリングに関する書籍です。まさに先人の知恵が詰まりまくっている書籍。手元に一冊持っておくと良いでしょう。

「本書は米国においての第1版が発行(1982年)されて以来、世界累積300万部を超えるベストセラーの最新刊である第9版の邦訳書です。ソフトウェア同様、改良が続けられているソフトウェアエンジニアリングの「最良の手法」を解説している書籍であり、現役のソフトウェアエンジニアならびに学生諸氏におすすめする1冊です。

引用:https://www.amazon.co.jp/dp/B09MSZQB5Y

ソフトウェアエンジニアリング基礎知識体系 SWEBOK V3.0

"ソフトウェアエンジニアリング基礎知識体系 ―SWEBOK V3.0―"はソフトウェア工学に関する共通の知識体系をまとめているSWEBOKの書籍。今はV4.0まで出てるはずですが、まだ日本語版はない?ようです。共通の認識を作るというのはなかなか難しいわけですが、それに取り組んでいるのがこのSWEBOKというわけです。なにかしらの教育教材や研究者の方などは手元に一冊あると良いでしょう。界隈の人の共通認識がなんなのか、という点の拠り所としてこれ以上ないと思います。

モダン・ソフトウェアエンジニアリング

書籍 "モダン・ソフトウェアエンジニアリング"もおすすめです。Jacobsonらが中心となり書かれている本で、ソフトウェア工学をリードしてきた著者らが何に課題を感じているかがわかります。そして、それに対する著者らのアプローチがまとまっている書籍です。序盤の章では辛辣な著者らのコメントがあったりするのですが、それがまた面白い書籍です。僕が好きな本の一つです。

Managing Technical Debt

"Managing Technical Debt: Reducing Friction in Software Development (SEI Series in Software Engineering) (English Edition)"もおすすめな書籍です。タイトル通り、技術負債をどうマネジメントするか、付き合っていくかということをテーマに掲げています。Technical Debtは多くの現場でも課題となると思いますが、学会でも注目を集めるテーマの一つです。この書籍では実践事例を通してまとめたアプローチを学ぶことができます。英語版のみですが、興味のある方はぜひ一度目を通してみると良いでしょう。本書を通して、マクロな視点でTechnical Debtという課題をとらえてみると実務の場でも落ち着いて課題と向き合うことができるのではないでしょうか。

番外編

Evaluating Software Architectures: Methods and Case Studies

番外編として、僕自身が博士課程の際に一番お世話になった&読み解くのに苦労した書籍を紹介して終わります。それが以下"Evaluating Software Architectures: Methods and Case Studies (SEI Series in Software Engineering)"です。

ソフトウェアアーキテクチャと組織に関する論文を書いていたのですが、その際にソフトウェアアーキテクチャの評価方法について学ぶ必要がありました。なかなかそういった書籍やまとまった文献は少なく、たまたま見つけたのがこちらの書籍でした。当時の僕にとっては知識不足のためさっぱりついていけない本でしたが、何度も読み、先生方ともお話しさせてもらう中でなんとか読み解けた書籍でした。今では参照することはほぼないですが、それでも思い出が詰まっているので手元においている一冊です。

この時の苦労があったので、"Design It! ―プログラマーのためのアーキテクティング入門"など若干難解なアーキテクチャの書籍も読み進めるのが楽だったように思います。

終わりに

いかがでしたでしょうか。興味のある書籍が見つかれば幸いです。僕自身もまだまだ勉強中ですが、これまでの経験を踏まえてYoutubeチャンネルでもソフトウェア工学に関するお話をしていますのでよければご覧ください。

www.youtube.com

おまけ1)社会人博士として過ごした日々を書籍にまとめました

社会人を続けながら修士課程、博士過程に挑戦したことを書籍にまとめました。どうやったら学位を取れるか、というHow to本ではないのですが、社会人学生や博士の学位に興味がある方の参考になれば幸いです。

 

 

おまけ2)おすすめ記事:ソフトウェアエンジニアの体調管理

ソフトウェアエンジニアも体が資本。若い時と同じくらい、とまではなかなか難しいかもしれませんが、体力があれば考え続けることもできます。

というわけで個人的におすすめしている体調管理術についてご紹介している記事を置いておきます。向き不向きはあると思うのでご注意いただきたいですが、これからも楽しくソフトウェアを作ることをしていきたい方にはお勧めです。ご覧いただければ幸いです。

masaytan.com