Akademisches Studien- und Fristenmanagement mit Quellenprüfung, Datenschutz und realistischer Handlungsplanung.
The English summary is being prepared. Showing the original description.
体系的な 6 段階デバッグプロトコル。クイックチェック、孤立テスト、20分ルール、バグレポートテンプレートを備えた構造化アプローチ。
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
日本語 —
bugfix-protocolの公式日本語版。
症状の分析から検証まで — バグに対する構造化されたアプローチ。 目的のない手探りの修正を防ぎ、持続可能な修正を保証します。
| フェーズ | 名称 | 目的 | 最大時間 |
|---|---|---|---|
| 1 | クイックチェック | 明白な原因を排除 | 2分 |
| 2 | 診断 | 根本原因を特定 | 10分 |
| 3 | 孤立テスト | バグを再現可能にする | 5分 |
| 4 | 修正 | 最小限の修正 | 10分 |
| 5 | 検証 | 修正の検証 + 副作用の確認 | 5分 |
| 6 | ドキュメント化 | 知識を保存 | 2分 |
20分ルール: 20分経っても進展がない場合は、アプローチを変更するか助けを求めてください。
深掘りする前に — 最も一般的な原因を確認します:
__pycache__ を削除して再起動# キャッシュのクリア
find . -name "__pycache__" -type d -exec rm -rf {} + 2>&1
find . -name "*.pyc" -delete 2>&1
# インポートの確認
python -c "import modulename"
# 構文の確認
python -m py_compile file.py
git diff, git log --oneline -10プロジェクトに応じて、専用の診断スクリプトが役立つ場合があります:
| ツール | 目的 |
|---|---|
import_diagnose.py | インポート問題の分析 |
method_analyzer.py | メソッドシグネチャの確認 |
env_checker.py | 内部環境変数/パスの検証 |
注: プロジェクト固有の診断ツールを作成するか、既存のものを使用してください。 重要なのは体系的なアプローチであり、特定のツールではありません。
# 1. Print デバッグ (シンプルだが効果的)
print(f"DEBUG: variable={variable!r}, type={type(variable)}")
# 2. ブレークポイント (対話型)
breakpoint() # Python 3.7+
# 3. 拡張トレースバック
import traceback
traceback.print_exc()
# 4. Print の代わりにロギングを使用
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug(f"State: {state!r}")
目標: 最小限のコードでバグを再現する。
# test_bug.py — 最小再現テスト
"""
Bug: [簡潔な説明]
Expected: [期待される動作]
Actual: [実際の動作]
"""
# 最小限のセットアップ
# ... 必須要素のみ
# バグトリガー
# ... バグを引き起こす正確なコード
# 期待される結果
# assert result == expected, f"Got {result}"
git bisect start, git bisect bad, git bisect good <commit># 悪い例: 症状のみの処理
try:
result = broken_function()
except: # すべてを無視
result = default_value
# 良い例: 根本原因の修正
def broken_function():
if input_data is None: # 実際の原因: None チェックの欠落
return default_value
return process(input_data)
| カテゴリ | 典型的な修正 |
|---|---|
| None/Null | ガード節: if x is None: return default |
| インデックスエラー | 境界チェック: if i < len(lst) |
| 型エラー | 明示的な変換: str(x), int(x) |
| インポートエラー | パスの修正、パッケージのインストール |
| エンコーディング | UTF-8 を明示的に指定: encoding='utf-8' |
| 競合状態 | ロック/ミューテックス、または順序の変更 |
| 状態バグ | 初期化の確認、リセットの追加 |
# ユニットテスト
python -m pytest tests/ -v
# 影響を受けるテストのみ
python -m pytest tests/test_module.py -v -k "test_name"
# 型チェック
python -m mypy file.py
# リント
python -m flake8 file.py
## Bug Report: [簡潔なタイトル]
**Date:** YYYY-MM-DD
**Severity:** critical / high / medium / low
**Component:** [モジュール/ファイル]
### Symptom
[ユーザーが見る現象 / エラーメッセージ]
### Root Cause
[技術的な根本原因]
### Fix
[変更内容 + 理由]
### Affected Files
- `file1.py` — [変更点]
- `file2.py` — [変更点]
### Prevention
[今後、この種のバグを防ぐにはどうすればよいか?]
fix: [修正の簡潔な説明]
Cause: [一言で言えば根本原因]
Fix: [変更された内容]
Test: [検証方法]
このセクションは PyQt6/PySide6 を使用したデスクトップ GUI プロジェクトに関連します。
| トラップ | 問題 | 解決策 |
|---|---|---|
| Signal-Slot 切断 | シグナルが接続されているがハンドラーが実行されない | ハンドラー内で print、シグネチャの確認 |
| スレッドセーフ | ワーカースレッドからの GUI 更新 | QMetaObject.invokeMethod またはシグナルを使用 |
| レイアウトの崩れ | ウィジェットが非表示/配置ミス | widget.show()、レイアウト階層の確認 |
| イベントループのブロック | GUI がフリーズする | 長時間の操作を QThread に移動 |
| ガベージコレクション | ウィジェットが突然消失する | 参照を self.widget として保持 |
# ウィジェット階層のダンプ
def dump_widget_tree(widget, indent=0):
print(" " * indent + f"{widget.__class__.__name__}: {widget.objectName()}")
for child in widget.findChildren(QWidget):
if child.parent() == widget:
dump_widget_tree(child, indent + 2)
# シグナルのデバッグ
from PyQt6.QtCore import QObject
original_connect = QObject.connect
def debug_connect(self, *args, **kwargs):
print(f"CONNECT: {self.__class__.__name__} -> {args}")
return original_connect(self, *args, **kwargs)
バグ発見?
|
v
[フェーズ 1: クイックチェック] ── 明白? -> 修正
|
v
[フェーズ 2: 診断] ────────────── 原因明確? -> フェーズ 4
|
v
[フェーズ 3: 孤立テスト] ──────── 再現可能? -> フェーズ 4
| |
| 再現不可?
| |
| ログを追加し、
| 再発を待つ
v
[フェーズ 4: 修正] ─────────────── 最小限 + 理解済み
|
v
[フェーズ 5: 検証] ────────────── テスト成功? -> フェーズ 6
| |
| テスト失敗? -> フェーズ 4 へ戻る
v
[フェーズ 6: ドキュメント化] ──── バグレポート + コミット
20分経過しても行き詰まっている場合:
git stash で完全に出直すNo reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Akademisches Studien- und Fristenmanagement mit Quellenprüfung, Datenschutz und realistischer Handlungsplanung.
The English summary is being prepared. Showing the original description.
Aktives Lernen, Erarbeitung von Fachinhalten und strukturierte Erstellung von Synthesen.
The English summary is being prepared. Showing the original description.
Prüfungsvorbereitung, Selbsttests, Probeklausuren und systematische Fehleranalyse.
The English summary is being prepared. Showing the original description.
Acceptance & Commitment Therapy (ACT) nach Steven Hayes: Hexaflex-Modell mit den sechs Kernprozessen psychischer Flexibilität.
The English summary is being prepared. Showing the original description.
Terapia de Aceptación y Compromiso (ACT) según Steven Hayes: modelo Hexaflex con los seis procesos nucleares de la flexibilidad psicológica.
The English summary is being prepared. Showing the original description.
スティーブン・ヘイズによるアクセプタンス&コミットメント・セラピー(ACT):心理的柔軟性の6つのコアプロセスを備えたヘキサフレックス・モデル。
The English summary is being prepared. Showing the original description.