0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

第6章「品質の番人を雇った夜」

0
Posted at

第6章「品質の番人を雇った夜」― AIツール60本を個人で品質管理するのは無理だと気づいた話

本番の死活監視なしで60本のAI APIを運用するとどうなるか、実録です。

この記事は、個人開発サービス CheckMe(checkme.run) の開発物語です。

問題の発見:「誰も気づかずに壊れていた」

ユーザーから「古語変換が壊れてる」という声が届いた。確認したら確かにエラーを吐いて動かない。修正できたのは声をいただいてから2日後だった。

このサービスには現在60本以上のAI APIツールが稼働している。1人で全部の死活確認をするのは物理的に不可能だ。

n8n Watchdog の設計

n8n(自動化ワークフローツール)を使い、2時間おきに全エンドポイントをシナリオテストする仕組みを構築した。

// app/config/scenario_tests.json(一部)
[
  {
    "name": "古文変換テスト",
    "path": "/words/kobun",
    "data": {"text": "今日はとても良い天気です"}
  },
  {
    "name": "なぞかけテスト",
    "path": "/owarai/nazokake",
    "data": {"theme": "プログラミング"}
  },
  ...
]

テスト定義をJSONで管理することで、追記するだけで監視対象を増やせる設計にした。

SET(Software Engineer in Test)の採用

シナリオテストの設計・拡張・エラー分類を担当するAIペルソナ「SET」を採用した。

彼が設計した品質基準:

レベル 症状 アクション
Critical AI API全断 / 500エラー連発 n8n通知 → 即対応
Warning 特定ツールのキャッシュ不整合 ログに記録 → 次デプロイ時に修正
Info レスポンスタイム劣化 週次レビューで確認

スモークテストの実装

deploy後の動作確認にスモークテストを追加した。

# scripts/smoke_test.py(一部)
TESTS = [
    {"name": "古文変換", "path": "/words/kobun", "data": {"text": "春はあけぼの"}},
    {"name": "なぞかけ", "path": "/owarai/nazokake", "data": {"theme": ""}},
    {"name": "AIストーリー", "path": "/docs/sakubun", "data": {"text": "テスト入力"}},
]

X-Smoke-Test: 1 ヘッダーを付けることで、AIコールログ・使用統計に計上されない。固定入力なので2回目以降はキャッシュヒット → APIコストゼロ。

この章のエンジニア向けポイント

  • 60本のAPIを手動で死活確認するのは不可能。自動化は必須
  • n8nは個人開発の監視自動化に最適(ローカルで動く・無料)
  • シナリオテストはJSONで定義 → 追記だけで拡充できる設計にする
  • スモークテストには専用ヘッダーを付けて本番ログを汚さない

次章では、「ClaudeとのYESマンループ」に気づいてGeminiを外部顧問として採用する話になる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?