はじめに
概要
若手ソフトウェアエンジニアにおすすめしたい本をまとめた。
凡例
難易度
- ★☆☆☆☆:1~3年目向け
- ★★☆☆☆:
- ★★★☆☆:4~6年目向け
- ★★★★☆:
- ★★★★★:7年目以降向け
おすすめ度
- ★☆☆☆☆:趣味レベル
- ★★☆☆☆:
- ★★★☆☆:余力のある方向け
- ★★★★☆:
- ★★★★★:必読
Clean Architecture [ Robert C.Martin ]
IT業界でお馴染みのボブおじさんの力作。
データベースやフレームワーク等の”details” に依存せずにアーキテクチャを組み上げる方法論を説明する記事を1冊にまとめた本。
IT業界には大きく2つの派閥がある。1つはボブに代表されるプロダクトのコーディングを重んじるクラフトマン達、もう1つはプロセスの理論を重んじるエンジニア達。
ボブは、コーディングを重視するという観点で、多様な事例をUMLやコードで示しつつ、クラフトマン達に自説を訴えかける。
「派生開発」を成功させるプロセス改善の技術と極意 [ 清水吉男 ]
日本人が考案した世界ではマイナーなソフトウェア開発プロセス。
いま世界では、どうやっているんだろう。
特に金融とかのミッションクリティカルなエンタープライズではどうか。
XDDPが考案された2000年初頭と比べると様々なツールや開発プロセスが巷に溢れている。そっちの方がこうりついいんじゃないか?
テスト
JSTQB Foundation [ 大西 建児 ]
国際的なテストの資格ISTQBの日本版。海外とも互換性があるので国際的に通用する資格。
しかし日本ではマイナー。情報処理技術者試験に”テスト”がないように、日本ではテストの体系的教育が軽視されている。
JSTQB Foundation の試験範囲は実務的かつ基本的なことばかり。新卒社員とかに受けさせた方がいいんでね?
ちまたのPython本に物申したい。”で、どうやってテストすんの?”、と。
本書は、ディープラーニングだの、セキュリティだのと言った流行りのバズワードは一切出てこない。
淡々とテスト駆動のためのテクニック、特にpytest フレームワークを解説するだけだ。
しかし、テスティングフレームワークを使いこなすのは、コーディングの中でも最も重要で、最もややこしいものだ。
筆者の語り口は、オライリーのように気取ったところもなく、論文のように堅苦しいこともない。
中級者向けにおすすめの一冊だ。
ドメイン駆動設計入門 [ 成瀬 允宣 ]
Eric EvansやRobert C.Martinの書を引用しつつ、ともすれば抽象的でわかりにくいドメイン駆動設計の要諦を、きちっと説明しきった入門書。
まさに巨人の上に立つ本と言える。
ドメインオブジェクトを形成する値オブジェクト、エンティティ、ドメインサービス、インフラストラクチャを担当するリポジトリ、ユースケースを担当するアプリケーションそしてこれらの依存関係を簡素化するファクトリ、集約、仕様。様々な概念をわかりやすく説明しきっている。
実践プログラミングDSL ドメイン特化言語の設計と実装のノウハウ [Debasish Ghosh]
比較的実践的なドメイン固有言語(DSL)の入門書。
Java、Scala、Ruby及びGroovy等の複数言語のDSLの実装方法を幅広く紹介する。
DSL云々以前の基本的な文法の説明はしてくれないので、読者に要求される技術レベルは高い。 が、日本であまり普及していないDSLを幅広く知るには、最善の一冊。
ビジネス
IT負債 [ 室脇 慶彦 ]
日本はIT負債を清算できないままWithコロナ時代に突入。ハンコ文化、紙文化などの古い商習慣を引きずりつつ、政財界の思惑が絡み合い、日本は前に進めないまま滅びつつある。
最近のテレビを見ていると「世界から尊敬される日本」とか「世界に広まる日本文化」などの威勢の良い言葉が目立つ。
しかし、世界から”まねぶ”ことを忘れ、過去の栄光にすがっていては前に進むことなどできない。過去のIT”資産”をすべて捨てるほどの覚悟を持って血を流しながら進むしかないのである。
リーダーシップ
リーダーシップを多角的に分析した稀有な本。
たかだか254ページで、およそすべての観点からリーダーのあるべき姿を分析している。
その内容は、組織メンバーの分析から、リーダー自身の節制、酒癖、食堂のマナーにまで至る。
その心は、海軍とは生き方そのものであり、リーダーとは全人格的で一生の修練を要する難事、ということに尽きる。
OODA LOOP [ チェット リチャーズ ]
OODAループはボイド元海軍大佐が空戦経験を昇華して提唱した、米軍ドクトリンの根幹をなす戦略だ。
OODAループをPDCAサイクルの亜種のように軽く見て本書を開いた者は、おそらく痛い目を見るだろう。
OODAループは単なる方法論ではなく、組織文化と一体化して自ら改善していく戦略にほかならない。
そこにはPDCAサイクルで否定された暗黙知や属人化が闊歩していた。
訳者が述べているようにPDCAでは対応しきれないAI時代に読みたい一冊。
アメリカ海軍に学ぶ「最強のチーム」のつくり方 [ マイケル・アブラショフ ]
ペルシャ湾洋上での著者の体験談は、太平洋のはるか彼方に住む私に、不思議な説得力をもたらした。
縦割組織、硬直的制度、年功序列、非正規労働者増加など、米海軍と日本企業には実に共通点が多い。
また、名言の宝庫でもある。
- すばらしいアイデアを採り入れるのに要する時間は、たったの五分だ
- どんな小さな提案であっても、いいアイデアは惜しみなくほめ、その提案者の"実績"として高く評価した
- 本当に重要なもの以外、規則は"厳然たる法"としてではなく、"指針"として扱われるべきである
- きみたち全員が艦長だ!
アメリカ海軍に学ぶ「最強のリーダー」 [ マイケル・アブラショフ ]
前作の「最強のチーム」とは打って変わって、本書では他業種の優れたリーダーの経験談を織り交ぜながら、理想のリーダー像を語る。
筆者の所属していた米国海軍は、タテ割で閉鎖的な組織、硬直的な雇用制度、年功序列な賃金制度など、実は日本の大企業と共通項の多い組織だ。
だからこそ、本書には日本の大企業にも受け入れやすい方法が溢れている。
筆者は言う、「数字を達成するために働くというのはわかる。
しかし、それがなんだというのだ?」と。
経営手法やガバナンスのタテマエばかりが先行した、平成最後の年に読みたい一冊。
インフラ
絵で見てわかるITインフラの仕組み [ 山崎 泰史 ]
良書。
ITインフラを構成する個別の製品には踏み込まず、製品のウラにある理論や共通概念にフォーカスしてまとめられた、末長くツカエル一冊。
それだけだと抽象的過ぎてわかりにくくなりがちだが、一例としてOracleのDBやCiscoのスイッチなどの有名製品を挙げて解説してくれるのが有難い。
新人研修にも使えそうだ。
わかりやすい。
多少図表が見にくい部分はあるが、それを補って余りある論理性と網羅性を有する。
さすがはNTTデータといったところか。
クラウド時代にもそれなりに通用する内容。
この種の、COTSや開発手法に依存しないソフトウェア工学的な考えができるようになりたいものだ。
DevOps
Ansible実践ガイド [ 北山晋吾 ]
Ansibleの特徴はSimple, Powerful, Agentless。
Orchestration, Configuration Management, Provisioning の3種類のタスクをより簡便に実現している。
とにかく、カンタンに自動化してくれるし、RedHat, inc.が商用版を提供しるから、OSS版もサポート手厚い。
DevOps導入指南 [ 河村 聖悟 ]
割とDevOps初期に出版された日本語文献。
概念的なところからツールの使い方までカバー。
ただし開発環境がSaaS前提なので、諸々の理由でSaaSを使えない人は悲しい気持ちになる。
GitLab実践ガイド [ 北山晋吾 ]
GitLabは単にGitリポジトリの管理ツールだと思っていた。
しかし、GitLabはDevOpsを支えるConvOpsを実現したチャット、デプロイメントパイプラインなどを含む複合的なツールであった。
この本ではそういったさまざまな視点でGitLabを徹底的に活用する方法が示されている。
エンジニアのためのGitの教科書 [ リクルートテクノロジーズ ]
Gitの基本的な使い方の本。
最初の150ページくらいは初学者向け、本格的な場面で活用できるのは最後の50ページくらい。
Gitの使い方をクイックに学びたい人向けの本。
基本的なテクニックを詳解した本。
習うより慣れろ、というタイプの人には不要。
チーム開発実践入門 [池田 尚史,藤倉 和明,井上 史彰]
もはやソフトウェア業界の常識となったCI/CDの基礎知識からツールの使い方までトータルにサポートしてくれる一冊。
SEにもPGにもおすすめできる。
ただし、今となってはDevOpsに着目した本がいっぱいあるのでそっちのほうがモダンかも。
フロントエンド
UIデザインの心理学 [Jeff Johnson]
心理学のみならず、脳科学や神経学的な知見を元に、優れたUI(ユーザーインターフェース)とは何かを論じた名著。
本書は、多数の心理学等の論文を引用しつつも、UIの実装例とエンジニアが理解しやすい比喩を使って、具体的かつ実践的に説明している。
エンジニアにとって、デザイナーとの会話の橋渡しとなりうる素晴らしい本である。
ノンデザイナーズ・デザインブック [Robin Williams]
“20年ずっと売れ続けている”という帯の煽り文句に惹かれて購入。
簡潔な4つの法則だけで良いデザインとは何か、を解説。
読者は、デザインの改善事例と豊富な練習問題を通じて、法則を身につけられる。
実務的で売れるのも納得。
一人から始めるユーザーエクスペリエンス [LEAH BULEY]
「理解のない人たちのために働くのは、もううんざりだ」ー著者のリア・バーレイは、掲示板に投稿されたUXデザイナの悲嘆から語り始める。
彼女はユーザエクスペリエンス(UX)を「いかにそのテクノロジーが使いやすいかどうか」と定義し、UXをデザイン、リサーチ、グラフィック及びフロントエンドなどを含む広大な複合領域ととらえる。
彼女の言を借りれば、UXデザイナのマインドセットがこの雑多な領域を1つにまとめ、27のメソッドがUXデザイナのマインドセットをすべての関係者に影響を与えるのに役立つだろう。
バックエンド
マイクロサービス入門 [長瀬嘉秀,田中明,松本哲也]
マイクロサービスとは何か?という理論面から、どのようにデザイン、コーディングをするのか?といった実践面まで幅広い。
実用的。
マネジメント
ソフトウェア見積り [ スティーブ マコネル ]
ソフトウェア見積もりの基本が身につく本。
開発現場では驚くほど原始的手法で見積もりが行われていて、大抵は気合と感に頼っている。
著者はその現場に一石を投じる。
正確なソフトウェア見積もりには、見積もり時期、過去プロジェクトの統計情報、新規プロジェクトの計測データなどを使う。
その背景にあるのは「数えられるものを数える」という唯1つの原則である。
ベンダー・マネジメントの極意 [ 長尾清一 ]
フェルミ推定力養成ドリル [ ローレンスワインシュタイン,ジョン・A.アダム ]
技術者や科学者は実験を通じて得られた少ない情報からより、多くのことを推論してそれを検証する。
これがフェルミ推定に他ならない。
本書では「政治集会に設置する仮設トイレの数は?」といった実用的?な多数の例題を通じて、フェルミ推定を身につけることができる。
SCRUM BOOT CAMP THE BOOK [西村 直人,永瀬 美穂,吉羽 龍太郎]
すっと頭の中に入ってくる本。
あっという間に読み終わった。
スクラムの基本から具体的な実践を想定したアドバイスまでマンガを交えながら解説している。
最も大事な点は、プロダクトオーナー(責任者)とスクラムマスター(教育者)の役割を分けること、タイムボックスを必ず守ること、開発チーム全体で計画と目標を共有することの3点だろう。
SCRUMMASTER THE BOOK [Zuzana Sochova]
筆者が述べているように、スクラムマスターはスクラムの中で最もわかりにくく、最も重要なロールだ。
筆者によれば、スクラムマスターは、6つのメタスキル(スキルを身につけるための学習スキル)をベースに、6つのコンピタンスを持つ。
中でも、最も重要なコンピタンスがアジャイル、コーチング、ファシリーテーションだ。
アジャイルによる開発経験をもとに、ファシリテーションでチームをまとめ、コーティングでチームを成長させる。
それがスクラムマスターの役割だ。
組込みシステム
リアルタイムシステムとその応用 [ 白川洋充 ]
きわどい時間定理とスケジューリング理論を数学的に詳解した2つとない本。
組み込み技術者やミドルウェア技術者に必要な知識が体系的に身につく。
HPC
ソフトウェア開発入門 [佐藤 文俊, 加藤 千幸]
本書では、世にも珍しいHPCあるいはシミュレーションソフトウェアと呼ばれる分野に特化したソフトウェア工学の入門書である。
シミュレーションソフトウェア開発には、要件は明瞭だが作業計画が立てにくく、また開発者がソフトウェア工学の基礎知識をしばしば欠いているという特徴がある。
本書はそのような状況を打開すべく一石を投じたものである。