ロジックバグ

アプリがエラーなしで動くが、間違った結果を出力する場合。

ロジックバグとは?

ロジックバグとは、アプリがクラッシュしたりエラーを表示したりしないが、間違った結果を出す場合です。例:

  • 合計が正しく計算されない
  • リストが間違った順序でソートされる
  • 日付が1日ずれて表示される
  • フィルタが表示すべきでないアイテムを表示する
  • カウンタが数字を飛ばす

ロジックバグはエラーメッセージがないため厄介です。アプリは動いているように見えます — ただ間違ったことをしているだけです。

ロジックバグの見つけ方

ポイントは期待値と実際の値を具体的な数値で比較することです:

悪い説明良い説明
「合計がおかしい」「$10のアイテムを3つ追加。期待値: $30。実際: $20。」
「ソートが壊れている」「最新順のはずだが、3月1日が3月5日より前に表示される。」
「日付がおかしい」「3月5日を入力したが、アプリは3月4日と表示する。」

具体的であるほど、Claudeはバグを早く見つけられます。

ロジックバグをClaudeに説明する

期待値と実際の値でロジックバグを報告
Claudeプロンプト
my-app-name: ロジックバグを見つけました。 期待値: $10のアイテムを3つ追加すると、合計は$30になるはず。 実際: 合計が$20と表示される。 計算が間違っているようです。合計が計算されている箇所を見つけて修正してください。
Claudeにデータフローを追跡してもらう
Claudeプロンプト
my-app-name: リストページのアイテムが間違った順序で表示されます。日付順(最新が最初)のはずですが、ランダムな順序で表示されます。 データの取得とソートが行われている箇所を見つけて、ソート順を修正してください。
日付がおかしい場合
Claudeプロンプト
my-app-name: 日付が期待より1日早く表示されます。例えば、3月5日を入力すると3月4日と表示されます。 タイムゾーンの問題かもしれません。日付の処理を調査して修正してください。

よくある原因

  • オフバイワンエラー: カウントが0から始まるべきところ1から始まる、またはループの回数が1多い/少ない
  • タイムゾーンの問題: UTCとローカルタイムの変換で日付が1日ずれる
  • ソート方向の間違い: 昇順のはずが降順、またはその逆
  • フィルタロジックの間違い: 「AND」のはずが「OR」、または比較演算子の間違い
  • nullチェックの欠如: 値が欠落またはundefinedの場合に計算が壊れる

ロジックバグの予防

Claudeに検証を追加してもらいましょう:

Claudeに計算を検証してもらう
Claudeプロンプト
my-app-name: [ページ名]ページの計算ロジックを確認してください。合計、平均、カウントが正しく計算されているか確認したいです。テストケースやconsole.logを追加して検証してください。

クイズ

Quiz

ロジックバグをClaudeに説明する最も良い方法は何ですか?