# バッチ設計書 17-autofix.yml

## 概要

本ドキュメントは、GitHub Actionsによる自動コード修正ワークフロー `.github/workflows/autofix.yml` のバッチ設計書である。PR時にeslint --fixとprettierを実行し、autofix-ciで自動修正コミットを作成する。

### 本バッチの処理概要

プルリクエスト作成・更新時に自動的にコードフォーマット修正を適用するワークフローである。eslint --fixによるlintルール違反の自動修正とprettierによるコードフォーマットの統一を行い、autofix-ci/actionにより修正内容を自動コミットする。

**業務上の目的・背景**：PRのコードフォーマットやlintルール違反を自動的に修正し、開発者が手動でフォーマット修正を行う手間を削減する。コードスタイルの統一をCI/CDパイプラインで自動化することで、レビュアーはロジックに集中でき、フォーマットに関する指摘が不要になる。

**バッチの実行タイミング**：プルリクエストの作成・更新（synchronize）時に自動実行される。

**主要な処理内容**：
1. リポジトリのチェックアウトと開発環境のセットアップ
2. `pnpm run lint --fix` によるeslint自動修正の実行
3. `pnpm run format` によるprettierフォーマットの実行
4. `autofix-ci/action` による修正内容の自動コミット

**前後の処理との関連**：本ワークフローは他のCIワークフロー（ci.yml等）とは独立して動作する。autofix-ci/actionがPRに自動コミットを作成するため、ci.ymlのpushトリガーにより再度テストが実行される可能性がある。

**影響範囲**：PRのソースコードに直接フォーマット修正コミットが追加される。

## バッチ種別

CI/CD（コード自動修正）

## 実行スケジュール

| 項目 | 内容 |
|-----|------|
| 実行頻度 | イベント駆動（PR時） |
| 実行時刻 | 指定なし（イベント発生時） |
| 実行曜日 | 指定なし |
| 実行日 | 指定なし |
| トリガー | pull_request |

## 実行条件

### 前提条件

| 条件 | 説明 |
|-----|------|
| GitHub Actionsランナー | ubuntu-latestが利用可能であること |
| permissions | contents: read |
| PUPPETEER_SKIP_DOWNLOAD | 'true' に設定（不要なChromiumダウンロードを抑制） |

### 実行可否判定

プルリクエストイベント発生時に無条件で実行される。リポジトリやブランチによるフィルタリングはない。

## 入力仕様

### 入力パラメータ

| パラメータ名 | 型 | 必須 | デフォルト値 | 説明 |
|-------------|-----|-----|-------------|------|
| なし | - | - | - | ワークフロー入力パラメータなし |

### 入力データソース

| データソース | 形式 | 説明 |
|-------------|------|------|
| ソースコード | Git | PRのソースコード |
| .node-version | テキスト | Node.jsバージョン指定ファイル |

## 出力仕様

### 出力データ

| 出力先 | 形式 | 説明 |
|-------|------|------|
| PRブランチ | Gitコミット | autofix-ciによる自動修正コミット |

### 出力ファイル仕様

autofix-ci/actionにより、eslint --fixおよびprettierで修正されたファイルが自動コミットされる。

## 処理フロー

### 処理シーケンス

```
1. チェックアウト（actions/checkout@v6）
2. pnpmインストール（pnpm/action-setup@v4.2.0）
3. Node.jsセットアップ（actions/setup-node@v6）
4. 依存関係インストール（pnpm install）
5. eslint自動修正（pnpm run lint --fix）
6. prettierフォーマット（pnpm run format）
7. 自動修正コミット（autofix-ci/action）
```

### フローチャート

```mermaid
flowchart TD
    A[PR イベント] --> B[チェックアウト / セットアップ]
    B --> C[pnpm install]
    C --> D[pnpm run lint --fix]
    D --> E[pnpm run format]
    E --> F{修正あり?}
    F -->|あり| G[autofix-ci: 自動コミット]
    F -->|なし| H[変更なし]
    G --> I[ワークフロー完了]
    H --> I
```

## データベース操作仕様

### 操作別データベース影響一覧

データベース操作なし。

## エラー処理

### エラーケース一覧

| エラーコード | エラー種別 | 発生条件 | 対処方法 |
|------------|----------|---------|---------|
| - | lint実行失敗 | eslintの自動修正不可能なエラーが存在する場合 | 手動でlintエラーを修正する |
| - | フォーマット失敗 | prettierの実行が失敗した場合 | prettierの設定を確認する |

### リトライ仕様

| 項目 | 内容 |
|-----|------|
| リトライ回数 | なし |
| リトライ間隔 | - |
| リトライ対象エラー | - |

### 障害時対応

autofix-ci/actionが失敗した場合は、ローカルで `pnpm run lint --fix` と `pnpm run format` を手動実行し、修正をコミットする。

## トランザクション仕様

| 項目 | 内容 |
|-----|------|
| トランザクション範囲 | なし |
| コミットタイミング | eslint --fixとprettier実行後に一括コミット |
| ロールバック条件 | - |

## パフォーマンス要件

| 項目 | 内容 |
|-----|------|
| 想定処理件数 | 1ジョブ |
| 目標処理時間 | GitHub Actionsの実行時間制限内 |
| メモリ使用量上限 | GitHub Actionsランナーのデフォルトリソースに依存 |

## 排他制御

明示的な排他制御設定なし。同一PRに対して複数のworkflow実行が並行する可能性がある。

## ログ出力

| ログ種別 | 出力タイミング | 出力内容 |
|---------|--------------|---------|
| lint結果 | eslint実行時 | eslint --fixの修正内容 |
| フォーマット結果 | prettier実行時 | prettierの修正内容 |
| コミット結果 | autofix-ci実行時 | 自動コミットの成功/変更なし |

## 監視・アラート

| 監視項目 | 閾値 | アラート先 |
|---------|-----|----------|
| ワークフロー実行結果 | 失敗時 | GitHubリポジトリの通知設定に依存 |

## 備考

- `autofix-ci/action` は特定のコミットハッシュ（`635ffb0c9798bd160680f18fd73371e355b85f27`）でピン止めされている
- `PUPPETEER_SKIP_DOWNLOAD: 'true'` が設定されており、不要なChromiumダウンロードを抑制している
- npmレジストリURL（`https://registry.npmjs.org`）が設定されているが、パッケージのパブリッシュは行わない
- autofix-ci/actionは修正がない場合はコミットを作成しない
