# コーディング規約 (Coding Standards)

基本方針として PEP 8 および Ruff の自動チェックに準拠する．本ガイドでは PEP 8 でカバーされないプロジェクト固有のルールのみ定義する．

## フォーマット (Formatting)

- フォーマッター・リンター: Ruff（`ruff.toml` で設定済み）
- 行長: 88 文字（`ruff.toml` で設定済み）
- クォート: ダブルクォート `"`

## 命名規則 (Naming)

PEP 8 に準拠する．

| 対象 | 形式 | 例 |
| --- | --- | --- |
| モジュール | `snake_case` | `uniformity.py` |
| 関数・変数 | `snake_case` | `calc_cov` |
| 定数 | `UPPER_SNAKE_CASE` | `DEFAULT_ROI_SIZE` |
| クラス | `PascalCase` | `UniformityResult` |

## import 順序 (Import Order)

Ruff（`isort` 互換）で自動整列する．順序:

1. 標準ライブラリ
2. サードパーティ（numpy，cv2，colour 等）
3. プロジェクト内モジュール

## 型ヒント (Type Hints)

- 関数の引数と戻り値に型ヒントを付ける
- NumPy 配列は `numpy.ndarray` を使用する

```python
def calc_cov(image: numpy.ndarray) -> float:
```

## コメント (Comments)

- 「何をしているか」ではなく「なぜそうしているか」を書く
- 論文・規格への参照がある場合はコメントに明記する

```python
# CIE ΔE2000 を使用（CIEDE2000, CIE 142-2001）
delta_e = colour.delta_E(lab1, lab2, method="CIE 2000")
```

## docstring

- 公開関数には Google スタイルの docstring を付ける

```python
def load_image(path: str) -> numpy.ndarray:
    """PNG 画像を読み込み RGB 配列として返す．

    Args:
        path: 画像ファイルのパス．

    Returns:
        RGB 画像の NumPy 配列（H x W x 3, uint8）．
    """
```
