はじめに:僕の知識はもう時代遅れかもしれない?
プログラマとして、毎日コードを読み書きし続けて約20年。
自分の中には何が良いコードで、何が悪いコードなのか、明確な基準があるし、どうして良いのか、どうして悪いのかを人に説明できる自信もあります。
が、ここ最近は「自分のこれまでの知識や経験」がその判断基準になっており、あまり積極的に新しい情報を外部からインプットしていませんでした。
ネットを見ていると「良いコードとは or 悪いコードとは」を論じてそうな新しい技術書がちょこちょこ発売されています。
もしかすると僕の知識は古くなってるかもしれない、最近の技術書を読むと僕の知らない新しい観点を学べるかもしれない、そう思って以下の4冊を購入してみました。
- Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考(2023年2月発売)
- Tidy First? ―個人で実践する経験主義的ソフトウェア設計(2024年12月発売)
- 改訂新版 良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方(2024年12月発売)
- 良いコードの道しるべ 変化に強いソフトウェアを作る原則と実践 (2025年5月発売)
このエントリではこれら4冊の本を読んだ感想を書いてみます。
【もくじ】
で、どうだった?
実際読んでみた感想ですが・・・良いコード・悪いコードの基準やテクニックは、意外とあまり変わってないですね (あれ?)。
どの本も「うん、せやな」「たしかに、そう」と思う内容がほとんどで、「しまったわー、もっと早く勉強しておけば良かったわー」と思うような目新しい内容はありませんでした。
・・・って書くと、この4冊をdisってるように聞こえるかもしれませんが、そういう意味ではありません!
あくまで「ベテランの僕から見ればだいたいわかっていたことばかり」という話であって、この業界に入って間もない若手エンジニアのみなさんが読んだら、まだまだ意識できていないポイントがたくさん載っているはずです。
ですので、これから貪欲に成長していきたいと思っている若手エンジニアのみなさんは、ぜひ手に取って読んでみてほしいです!
簡単に各書籍の紹介と感想を
が、それだけで終わってしまうと、どの本がどんな内容なのかわからないと思うので、個人的な感想とともに各書籍の内容を簡単に紹介しようと思います。
なお、書籍の紹介順は僕が考える「若手エンジニアへのオススメ順」です。
🥇良いコードの道しるべ 変化に強いソフトウェアを作る原則と実践
2025年5月に発行されたばかりの新しい本です。
今回読んだ4冊の中では一番読みやすいので、いわゆる「ジュニアエンジニア」のみなさんは、まずこの本を読んでみるのがいいと思います。
書籍内で使われている言語はKotlinですが、難しいコードは出てこないので雰囲気でだいたいわかりますし、ところどころに「Kotlin解説コラム」が入るので、Kotlinを知らない人でも大丈夫です。
僕がふだんコードレビューで指摘しているような内容がたくさん出てくるので、僕のコードレビューを受ける人は事前にこれを読んでおくといいかもしれません(苦笑)。

🥈改訂新版 良いコード/悪いコードで学ぶ設計入門 ―保守しやすい 成長し続けるコードの書き方
以前からネットとかでよく見かけていたので、いつか読もう読もうと思っていたものの、後回しにし続けていたら、いつの間にか改訂版が出ていました(2024年12月発売)。
さすがベストセラーになるだけあって、「あー、こういうコード、よくあるね」「そうそう、こう書き替えた方がいいよね」と同意できる内容がたくさん載っていました。よくこんなにあるある事例を集めたもんだなあ。
読む前はもっと難しい本なのかと思っていましたが、基本的な事項も多く、説明もわかりやすいので、思ったよりも易しい本だと感じました。
書籍内で使われている言語はJavaです。
各サンプルコードには詳しい説明が入るので、Javaを知らない人でもだいたいわかるはず。
あえて難点を挙げるとすれば、悪いコードのことを「悪魔」とか「クソコード」みたいに呼ぶのはちょっと言葉が強すぎるように感じたところでしょうか。
人前でそういう言葉を使うと現場の雰囲気が悪くなりそう(それって俺の書いたコードのことか?みたいに思われかねない)なので、なるべく控えましょうね。

🥉Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考
こんなコードはダメだから、こういうふうに書こう、という実践的な考え方やテクニックを豊富なサンプルコードと詳しい解説で説明してくれる本です。
書籍内で使われている言語はJavaやC#っぽい雰囲気の擬似コード。
とても実践的で詳しいんですが、そのぶんボリュームも大きく、プログラミングを始めて間もない人が読むとちょっと消化不良を起こすかもしれません😅

Tidy First? ―個人で実践する経験主義的ソフトウェア設計
僕みたいな歴の長いエンジニアは足を向けて寝られない大御所プログラマ、ケントベック大先生の新刊です。
どんなありがたいお話が書いてあるんだろう?と思ってワクワクしながら読んでみたのですが、短いエッセイ集みたいな感じで、なんかちょっと肩透かしをくらいました💧
第1部の「整頓」ではコーディングに関連する話題が出てくるのですが、あまり目新しい内容はなく、第2部「管理術」と第3部「理論」は、抽象的な話が多くていまいちピンと来ませんでした。
もしかすると人によっては「さすがケントベック先生!」と思うのかもしれませんが、残念ながら僕の中ではこの4冊の中では一番オススメ度が低かったです……。(すいません 🙏)

ちなみに僕はどんな本を読んできたのか?
最近出た本もそこまで大きく変わってないなあ、と思ったのであれば、じゃあ僕自身はどんな技術書を読んできたんでしょうか?
ちょっとこれまでに読んだ本を振り返って、「良いコード・悪いコード」を学ぶために役立った本をピックアップしてみました。
CODE COMPLETE
今となっては「リーダブルコード」を手に取る人が多いと思いますが、僕がこの業界に入った頃はまだ「リーダブルコード」は発売されていませんでした。
CODE COMPLETEはイメージ的には「リーダブルコード」よりももっと詳しくて、もっといろんな話題をカバーしている「リーダブルコードの上位互換」みたいな本です。
この本を初めて読んだとき、良いコードと悪いコードってこんなに明確に説明できるもんなんだ!と、めちゃくちゃ衝撃を受けたのを今でもハッキリと覚えています。



リファクタリング
今となっては当たり前の用語になっている「リファクタリング」という言葉を普及させた名作中の名作です。
20年前は「動いているコードは壊れるから触るな」という思想が一般的でしたが、「動いているコードでも、もっときれいにできるなら書き直せ=リファクタリングしろ」という考え方はかなりエポックメイキングでした。
単に改善のテクニックを説明するだけでなく、パターン化(カタログ化)している点も素晴らしいですね。

達人プログラマー
Don’t Repeat Yourself、いわゆる「DRY原則」はこの本から生まれました。
DRY原則に限らず、こんにちでは当たり前になっている、ITエンジニアのプラクティスがたくさん紹介されている本です。

増補改訂版 Java言語で学ぶデザインパターン入門
オブジェクト指向プログラミングの文脈でときどき登場する「デザインパターン」をわかりやすく解説してくれている本です。
オリジナルの書籍は「オブジェクト指向における再利用のためのデザインパターン」という本なのですが、Javaで易しく説明してくれている結城浩先生バージョンの方が僕としてはお勧めです。
デザインパターンはたくさんあるので全部覚えなくてもいいですが、ファクトリメソッド、デコレータ、ファサード、プロキシ、アダプタ、コマンド、ステート、ストラテジー、テンプレートメソッドあたりは日常業務でもたまに使ったりするので、教養として頭の片隅に入れておくのがいいと思います。


アジャイルソフトウェア開発の奥義 第2版
「単一責任の原則(SRP)」「オープン・クローズドの原則(OCP)」「パッケージ設計の原則」など、ある程度規模の大きいプログラムをきれいに整理整頓しやすくするための原理・原則を詳しく教えてくれる本です。
こういった話題は今回僕が読んだ本にも載っていました。
なので、僕が読むと「あー、それ知ってる〜!」となるわけですね。

ふつうのHaskellプログラミング
純粋な関数型言語を学ぶと、値が不変であることや、関数に副作用がないことのメリット(というかむしろ、変更可能な値や副作用を持つ関数のリスク)を感じ取ることができ、日々のプログラミングにおける意識が変わります。
Rubyのような非関数型言語を使うときでも、「値はなるべく不変にすること」「メソッドには副作用は持たせないこと」といった心がけを徹底すれば、堅牢でバグを起こしにくいプログラムを書くことができます。

ちなみに:僕が期待してた内容ってどんなの?
たとえば、最近ではGoやRust、Reactといった言語やフレームワークが流行しています(あ、もはや最近とは言わない?)。
こうした言語やフレームワークは、僕がこれまで慣れしんできたJava、C#、Ruby、Ruby on Railsなどとはパラダイムが結構異なるイメージがあります(実はそうでもない??)。
なので、こういった言語やフレームワークが主流になってきたことで、世間一般の「良いコード・悪いコード」の基準もこうした言語やフレームワークに合わせて変わってきてるんじゃないかな?と予想していました。
今回僕が読んだ4冊の本に期待していたのはそういった「新しい時代の良いコード・悪いコードの判断基準」です(が、特段変わっていなかった💧)。
でも、僕が期待していた内容は、きっと「GoやRust(あるいはReact)におけるベストプラクティス」でしかなく、言語やフレームワークを限定せずに「良いコード・悪いコード」として一般化できるほどの共通性は持っていないのかもしれませんね。
ちなみに、今月発売された「Software Design 2025年7月号」にはRustの入門記事が載っていて、ふだんRustを使っていない僕としては「へえ〜、これが巷でときどき耳にする所有権ってやつかあ」と勉強になりました(このレベルの知識でどうもすいません 😅)。
![Software Design (ソフトウェアデザイン) 2025年7月号 [雑誌] Software Design (ソフトウェアデザイン) 2025年7月号 [雑誌]](https://m.media-amazon.com/images/I/514Ym1Fj9WL._SL500_.jpg)
余談:「良いコード・悪いコード」の将来?
最近では生成AIにコードを読み書きさせる事例が増えてきています。
もしかすると数年後には「良いコード・悪いコード」の基準が「人間が読み書きしやすいコード」ではなく、「AIが読み書きしやすいコード」に移り変わっていくのかもしれないなあ、とぼんやり考えたりしています。
なので数年後こそ、「ヤバい、僕の知識は完全に古くなってた!!😱」と慌てることになるのかもしれません。
(さて、どうなるやら??)
まとめ
というわけで、このエントリでは最近僕が買った「良いコード」を改めて学ぶための技術書を4冊紹介してみました。
良いコードと悪いコードの判断基準はしっかり自分の中にありますか?
なぜそのコードが良いのか、なぜそのコードが悪いのか、自分の言葉でしっかり説明できますか?
上の質問に自信をもって「YES」と答えられなかった人は、ぜひこのエントリで紹介した技術書を手に取ってみてください!
あわせて読みたい
新しい技術は次から次に登場してきますが、エンジニアとして基礎となる部分については、意外と賞味期限が長かったりします。
その昔書いた以下のエントリも、もしかすると今のみなさんの参考になるかもしれません。
blog.jnito.com
blog.jnito.com
あ、そういえば去年もこんな本(「プログラマー脳」と脳に収まるコードの書き方」)を読んでましたね。
blog.jnito.com
Views: 0