2 ポイント 投稿者 GN⁺ 2025-01-14 | 1件のコメント | WhatsAppで共有
  • デイビッド A. ウィーラーのレビュー

    • デイビッド J. アガンズの『Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems』は、ソフトウェアおよびハードウェア開発者にとって必読のデバッグ書として評価されている。
    • この本は特定の技術ではなく、バグを見つけて修正するための基本原則を説明しており、初心者や中級開発者にとって特に有用である。
    • 本書は「9つのルール」を中心に構成されており、各ルールの説明と適用方法が収められている。
  • 9つのルール

    • システムを理解する: マニュアルを読み、基礎を理解し、ツールをうまく活用することが重要である。
    • 失敗を再現する: 失敗を再現し直し、断続的なバグの原因を見つけることが重要である。
    • 考えるのをやめて観察する: まずデータを収集し、推測に頼らない。
    • 分割統治: 問題の範囲を絞り込みながら解決し、識別しやすいテストパターンを使う。
    • 一度に1つずつ変更する: 重要な要素を分離し、テスト条件を1つずつ変更する。
    • 監査記録を残す: 実行した作業と結果を記録し、あらゆる細部が重要になり得ることを理解する。
    • プラグを確認する: 前提としていることを疑い、ツールをテストする。
    • 新しい視点を得る: 新たな洞察を得て、経験の声に耳を傾けることが重要である。
    • 直っていなければ修正されたことにはならない: 問題が本当に解決されたか確認し、原因を修正する。
  • 本書の長所と短所

    • 本書はデバッグの基本原則に集中しており、他の技術書とは一線を画している。
    • 断続的な問題への対処方法について、実践的な助言が含まれている。
    • 本書の付録には、関連Webサイトとポスターのダウンロードリンクがある。
    • 惜しい点として、すべてのルールと下位ルールを1ページにまとめた一覧がないこと、また特定技術に関する具体的な助言が不足していることが挙げられる。
  • 結論

    • この本はデバッグの基本原則を学ぶ、あるいは思い出すのに役立ち、初心者と専門家の両方に有益である。
    • デイビッド A. ウィーラーはこの本を強く推薦しており、基本原則の重要性を強調している。

1件のコメント

 
GN⁺ 2025-01-14
Hacker Newsの意見
  • バグのあるコードを修正したくなる誘惑は強いが、壊れたコードを直すよりも、動いているコードを壊してしまうほうが簡単である。クリスマス電球の例のように、最小限の動作する例から始めて問題を見つけるのが効果的である

  • 問題解決で重要なのは慌てないことである。明晰な思考が必要であり、優れたマネージャーは問題解決に集中できるよう支援してくれる

  • git bisect は複数のコミットの中から問題を引き起こしたコミットを見つけるのに有用である。特に大規模なコードベースで問題を素早く見つけられる

  • システムを理解することは重要だが、すべてのマニュアルを読むのは非現実的である。実用的なアプローチが必要である

  • 正しいファイルを正しいマシンで編集することが重要である

  • 問題解決の思考法を養うために勧められている本:

    • "The Martian" by Andy Weir
    • "Zen and the Art of Motorcycle Maintenance"
    • "The Three-Body Problem"
    • "To Engineer Is Human" by Henry Petroski
    • "Surely You're Joking, Mr. Feynman!"
  • 追加のルール:

    • 「自分のミスを疑え」。まずコード変更を疑うべきである
    • 「バグを見つけたら、それに関連するほかの問題も探せ」。同種の問題が別の場所でも発生している可能性がある
    • 「ユーザーと保守プログラマーを優先して最適化せよ」
  • CI にバグをテストとして追加し、リグレッションを防ぐべきである。修正の前後で CI が失敗し、その後成功することを確認しなければならない

  • デバッグ後も作業は終わりではない。各バグについて次の3つの質問をすべきである:

    1. このミスはほかの場所にもあるか?
    2. このバグの背後に隠れている次のバグは何か?
    3. この種のバグを防ぐために何をすべきか?
  • 最小限の設定で問題を再現することが重要である。ほとんどの場合、こうすることでバグを見つけられる。コードを半分に分けて、正確にどの部分が間違っているのかを見つけるのが効果的である