# Python 実務チェックリスト（実装/レビュー用）

## 可読性

- 変数名は「役割」が分かるか（`data`/`tmp`/`result` の濫用がないか）
- 条件分岐は単純か（複雑なら早期return、関数分割、`match` を検討）
- 内包表記は読みやすいか（複雑なら `for` に戻す）

## 安全性（例外・境界・入力）

- 入力値の検証は境界（外部I/O直後）で行っているか
- 例外メッセージに「文脈」があるか（`raise ... from e` を使えているか）
- `except Exception:` を使うなら、理由と処理（ログ/再送出/終了）が妥当か

## I/O とパス

- パス操作は `pathlib.Path` を使えているか
- エンコーディングが明示されているか（特にテキストI/O）
- ファイル/ネットワークは `with` などで後始末漏れがないか

## データ構造

- 集計は `Counter` / `defaultdict` で簡潔にできないか
- `dataclass` 等で「データの形」を明示できないか

## 型・設計

- 関数の入出力が型ヒントで説明されているか（特に公開関数/境界）
- 関数は単一責務で、テストしやすい単位に分割されているか

## ログ・運用

- `print` ではなく `logging` を使うべき場所ではないか
- ログに機密情報（トークン/個人情報/パスワード）が出ないか

## テスト

- 主要ロジックが副作用から分離され、単体テストが書けるか
- 例外系（不正入力、外部I/O失敗）をテストできているか
