38歳が『達人プログラマー(第2版)』を読んでClaude Code時代に再確認した「何を書かないか」の判断軸3つ:DRY・直交性・信頼性の原則を一人開発に適用する

AI生成コード全盛期に『達人プログラマー』を読み直した理由

2025年、Claude CodeやGitHub Copilotが当たり前になった今、コードは「書く」より「選ぶ」行為に近づいている。AIが提案するコードをそのまま採用すればサイトは動く。だが動くだけのコードと、保守できるコードは別物だ。

私は urinosuke.com と urisol.com という2つのサイトをClaude Codeで構築・運用している。開発初期はAIの提案を無批判に受け入れ、結果として重複コードと密結合だらけの構造を量産した。リファクタリングの際、判断基準が欲しくなり『達人プログラマー(第2版)』を手に取った。

本書はREST設計やフレームワーク選定のような技術トレンドではなく、何を書き、何を書かないかという普遍的判断軸を扱っている。Claude Code時代だからこそ、この「書かない技術」が効いてくる。

実装した3つの判断軸

1. DRY原則——重複を許容しない設計

DRY(Don’t Repeat Yourself)は「同じ知識を2箇所に書かない」原則。私の初期実装では、Astro Content Collectionsのスキーマ定義とMarkdownのfrontmatterが二重管理になっていた。記事カテゴリを追加するたびに両方を修正する必要があり、片方を忘れてビルドエラーを起こすことが頻発した。

対策として、カテゴリ定義をsrc/content/config.tsの単一ファイルに集約し、frontmatterはそこから自動生成する仕組みに変更。categoriesの選択肢もここで一元管理している。修正箇所が1箇所になり、エラーは消えた。

Claude Codeは「動くコード」を優先して生成するため、重複を含んだ提案をしてくることが多い。そのコードを採用する前に「この知識は他のどこかに書いてあるか?」と自問する習慣が、DRY原則の実装になる。

2. 直交性——変更の影響範囲を局所化する

直交性とは「一箇所の変更が他に波及しない」設計。本書では「ヘリコプターの操縦桿の例」が印象的だった。理想的な設計では、前進・上昇・旋回の各操作が独立しており、一つの操縦桿を動かしても他の動作に影響しない。

私のサイトでは、記事生成スクリプト(generate-post.py)が記事本文の生成・保存・Git操作・X投稿の4つを1つの関数で処理していた。記事内容のフォーマットを変えたいだけなのに、Git周りのコードまで触る必要があり、修正のたびにリスクが増えていた。

リファクタリングで4つの責務を別関数に分離し、それぞれが独立して動くよう変更。記事フォーマットの修正はMarkdown生成関数のみで完結するようになり、他の処理への影響はゼロになった。

AI生成コードは「とりあえず動く一枚岩」になりがちだ。それを採用する前に「この変更がどこまで波及するか?」を確認し、影響範囲が広すぎる場合は関数分割を指示する。この問いかけが直交性の担保になる。

3. 信頼性——エラーを早期に検出する設計

本書の「契約による設計」章では、事前条件・事後条件・不変条件を明示してエラーを早期に検出する重要性が語られている。私はこれをPythonの型ヒントとAstroのスキーマ検証に適用した。

generate-post.pyでは、APIレスポンスのJSON構造を型ヒントで明示し、必須キー(title, slug, body等)の存在を実行前にチェック。Claude APIが予期しない形式を返した場合、記事ファイルを生成する前にエラーで停止する。

Astro側では、Content Collectionsのスキーマでcategoriesenumとして定義し、不正なカテゴリ名が入った時点でビルドを止める。この2段構えで、無効な記事がサイトに混入する経路を塞いだ。

AIが生成するコードは「動作確認済み」の保証がない。人間が書く以上にエラー検出の仕組みを厚くする必要がある。型・スキーマ・アサーションを挟むことで、AI生成コードの信頼性を担保できる。

AI時代に「達人プログラマー」が効く理由

本書が1999年初版、2020年に第2版が出た今も読まれ続けているのは、技術トレンドではなく判断の原則を扱っているからだ。Claude CodeもGitHub Copilotも、この原則を自動適用してはくれない。

私がこの本から得たのは「AIの提案を採用する前に自問する3つの質問」だった。

  1. この知識は他のどこかに書いてあるか?(DRY)
  2. この変更がどこまで波及するか?(直交性)
  3. エラーを早期に検出する仕組みはあるか?(信頼性)

この3つを通過したコードだけを採用する。結果、リファクタリングの頻度は減り、新機能追加のコストは下がった。

Claude Code時代だからこそ、「何を書かないか」を判断する原則が要る。その原則の教科書として、『達人プログラマー(第2版)』は20年経っても現役だ。

関連書籍

参考

← ブログ一覧へ戻る