841-biborokuWebフロントエンドの備忘録

GEMINI.md指示書 × Gemini CLI × Playwrightで作るリダイレクトチェッカー

Gemini CLIにPlaywrightを使ったリダイレクトチェッカーを生成させるために作成したGEMINI.mdの指示書記録です。

実装コードではなくGEMINI.mdにどんな指示を書き、どのような流れで完成させたかをまとめています。

事前準備

  • GEMINI.md:実装に必要な指示をまとめる
  • CSVデータ:リダイレクト元とリダイレクト先のURL一覧
  • .env:リダイレクト元ドメインとリダイレクト先ドメインの設定
  • 要件整理
    • 一度にテスト可能な実行ファイル
    • 成功・失敗をログとして出力
    • ドメインが変わっても使い回し可能

期待する成果物

  • 一気にテストできる実行ファイル
  • 成功・失敗のログ
  • ドメインが変わっても使いまわし可能

試した流れ

  1. Gemini CLIにGEMINI.mdを読み込ませ、実装を依頼
  2. 出来上がったコードをテスト実行
  3. わざと失敗するデータを入れて再実行
  4. 失敗が検出されなかったため、失敗時の処理を追加指示
  5. 再テストし、失敗も正しく判定されることを確認
  6. 追加・変更した内容をGEMINI.mdに反映するよう指示
  7. 完成

GEMINI.md

# Basic rule
- デフォルトの言語を日本語とする。

# 301リダイレクトチェッカー

## 1. プロジェクト概要

このプロジェクトは、`list/redirect.csv` に定義されたURLリストに基づき、Webサイトの301リダイレクトが正しく設定されているかを自動で検証します。

Playwrightを利用して実際にブラウザで各URLにアクセスし、リダイレクト先が期待通りであるかを確認します。

## 2. 必要な設定

テストを実行する前に、以下の2つのファイルを設定する必要があります。

### a. `.env` ファイル (環境変数)

リダイレクト元とリダイレクト先のドメインを指定します。このファイルが存在しない場合、またはドメインが設定されていない場合は、テストは実行されません。

**例:**
```
SOURCE_DOMAIN=https://example.com
TARGET_DOMAIN=https://new-example.com
```

### b. `list/redirect.csv` ファイル (チェック対象リスト)

チェックしたいURLのパスをCSV形式で記述します。

- **1列目:** リダイレクト元のパス
- **2列目:** 期待されるリダイレクト先のパス

**例:**
```csv
/old-page-1,/new-page-1/
/old-page-2,/new-page-2/
```

## 3. 実行方法

プロジェクトのルートディレクトリで以下のコマンドを実行すると、リダイレクトチェックが開始されます。

```bash
node check-redirects.js
```

## 4. 処理の流れ

1.  `npm install``playwright``dotenv` パッケージをインストールします。(初回のみ)
2.  `.env` ファイルから `SOURCE_DOMAIN``TARGET_DOMAIN` を読み込みます。
3.  `list/redirect.csv` からリダイレクトのリストを1行ずつ読み取ります。
4.  各行について、以下の処理を順に実行します。
    - **リダイレクト元URL:** `${SOURCE_DOMAIN}` + `(CSVの1列目のパス)`
    - **期待されるリダイレクト先URL:** `${TARGET_DOMAIN}` + `(CSVの2列目のパス)`
5.  Playwrightを使い、ヘッドレスブラウザでリダイレクト元URLにアクセスします。
6.  実際に遷移した先のURLと、期待されるリダイレクト先URLを比較し、成否を判定します。

## 5. 結果の確認

実行結果は、コンソールに出力されると同時に `result.txt` ファイルに保存されます。

- **[成功]**: リダイレクトが期待通りに機能した場合。
- **[失敗]**: リダイレクト先が期待と異なった場合。
- **[エラー]**: URLへのアクセス中に問題が発生した場合。

### 停止条件

テスト中に **3件連続で** `[失敗]` または `[エラー]` が発生した場合、サーバー側の設定に問題がある可能性が高いと判断し、テストは自動的に中断されます。

まとめ

  • GEMINI.mdに要件をまとめておくと、再生成や修正時に同じ指示を使い回せる
  • 成功例だけでなく、失敗例を含めた検証が品質向上に役立つ
  • 指示書と修正履歴を残しておくと、次回同様の実装をするときに時間短縮できる

シェア