# 計測結果 — 第 06 章 example-2

実行環境: Linux 6.18 / Python 3.x(標準ライブラリのみ)

## 抽出結果(主目的)

```
=== 業務ルール抽出 ===
  処理ファイル : 2 個 (.java + .cs)
  抽出した定数 : 13 個
  抽出時間     : <1 ms
```

### 抽出された定数の例

**OrderService.java から:**

| 定数名 | 値 | 業務上の意味 |
|--------|-----|------------|
| SHIPPING_REMOTE | 1500 | 北海道・沖縄の送料 |
| SHIPPING_NORMAL | 800 | それ以外の送料 |
| SHIPPING_FREE_THRESHOLD | 10000 | 送料無料の境界 |
| MEMBER_DISCOUNT_RATE | 0.05 | 会員割引 5% |
| BULK_DISCOUNT_THRESHOLD | 30000 | 大口割引の境界 |
| BULK_DISCOUNT_RATE | 0.03 | 大口割引 3% |
| TAX_RATE | 0.10 | 消費税率 |

**PaymentService.cs から:**

| 定数名 | 値 | 業務上の意味 |
|--------|-----|------------|
| FAILURE_THRESHOLD | 3 | 24 時間以内 3 回失敗で要確認 |
| FAILURE_WINDOW_HOURS | 24 | 失敗判定の窓 |
| SINGLE_PAYMENT_LIMIT | 500,000 | 単発決済上限 |
| MONTHLY_LIMIT_B2B | 5,000,000 | 月次上限(B2B) |
| MONTHLY_LIMIT_RETAIL | 1,000,000 | 月次上限(個人) |
| RETRY_INTERVAL_MINUTES | 15 | 再試行間隔 |
| MAX_RETRIES | 3 | 最大再試行回数 |
| FEE_RATE | 0.036 | 決済手数料率 |
| FEE_FIXED | 30 | 決済手数料固定額 |

## 機械抽出の限界

このスクリプトが取れるのは **コードに書かれているもの** だけ:

| 取れる | 取れない |
|--------|---------|
| 定数の名前と値 | なぜその値なのか |
| 直前の行コメント | コメントに書かれていない暗黙の前提 |
| JavaDoc / DocString | 「実は障害対応で別ルートがある」みたいな運用知 |
| 関数のシグネチャ | 過去のリリースで変わった仕様の経緯 |

なので、**機械抽出 → Claude に補完依頼 → 担当者ヒアリングで確定**
という 3 段階になる。

## 章本文との対応

> 担当者の空き時間でやると 6 ヶ月〜1 年。Claude に全コードベースを
> 渡して一気にやれば、**1 週間で 80%**。

このフォルダは **6 ヶ月→数 ms** の機械抽出層を実演する。実プロジェクトでは:

1. **このスクリプトで定数と JavaDoc を抽出**(数秒)
2. **Claude に `legacy/` 全体を渡して暗黙ルールも書き起こし**(数時間)
3. **担当者と読み合わせ**(数日)

合計 **1 週間で 80%** に到達する道筋。

## 来月の運用

新しいコードが入ったら:

```bash
make all  # → out/RULES.md を再生成
git diff out/RULES.md  # 何が増えたかレビュー
```

新規ルールが入ると Markdown に表として現れるので、レビューで気づく。
**「いつの間にか追加された定数」を見逃さない**。

## 再現手順

```bash
# 標準ライブラリだけで動く
make clean && make all
```
