ロジックバグ
アプリがエラーなしで動くが、間違った結果を出力する場合。
ロジックバグとは?
ロジックバグとは、アプリがクラッシュしたりエラーを表示したりしないが、間違った結果を出す場合です。例:
- 合計が正しく計算されない
- リストが間違った順序でソートされる
- 日付が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に説明する最も良い方法は何ですか?