ブログ一覧へ戻る

Sprint Cycle 10では、インフラ基盤の確定品質保証体制の構築に集中した。Cloudflare DNS 5レコードの設定完了でmisebanai.comが本番稼働し、AI推論パイプラインの統合状況を確認、統合テスト基盤を構築して全8テスト合格、コードクリーンアップで警告ゼロを達成した。

地味だが不可欠な「守り」のスプリント。プロダクションに向けた土台固めが完了した。

スプリント成果サマリー

5
DNSレコード設定
8
テスト合格数
0
cargo check 警告
8
削除ファイル数

1. misebanai.com DNS設定完了

1
Cloudflare DNS 5レコード + SSL Full(Strict)

misebanai.comのDNS設定をCloudflareで完了し、全レコードの疎通を確認した。SSL設定はFull(Strict)モードを採用し、Cloudflare - Fly.io間のエンドツーエンド暗号化を実現。

  • Aレコード -- Fly.ioのIPv4アドレスを指定
  • AAAAレコード -- Fly.ioのIPv6アドレスを指定
  • CNAME (www) -- wwwサブドメインをルートドメインに転送
  • CNAME (_acme-challenge) -- SSL証明書の自動更新用DNS-01チャレンジ
  • TXT (_fly-ownership) -- Fly.ioのドメイン所有権証明

HTTPS 200 OK -- misebanai.comへのアクセスが正常に完了することを確認済み。

前回のSprint Cycle 9でドメイン取得とFly.io接続の基本設定を行ったが、DNS-01チャレンジやTXT所有権証明など細かい設定が残っていた。今回で全レコードを確定し、SSL証明書の自動更新も含めた完全な本番運用体制が整った。

DNSは「設定して終わり」ではない。証明書の自動更新、所有権証明、IPv6対応まで含めて初めて本番品質になる。

2. AI推論パイプライン確認

2
YOLOv8n ONNXモデルによる人物検出統合

フレーム処理パイプラインにYOLOv8n ONNXモデルによる人物検出が既に統合済みであることを確認した。mock/realの切り替えはfeature flagで制御されており、本番環境への切り替えはフラグの変更だけで完了する。

  • モデル -- YOLOv8n(Nano)、ONNXフォーマット
  • 推論パス -- フレーム受信 → 前処理 → ONNX推論 → 後処理 → 人物カウント
  • 切り替え -- feature flagでmock/realを制御
  • 統合箇所 -- フレーム処理パイプラインに直接組み込み済み

AI推論パイプラインは既にCycle 9以前の開発で基本実装が完了していた。今回はその統合状態を改めて確認し、mock/real切り替えの動作検証を行った。YOLOv8nはNanoモデルのため推論速度が高速で、エッジデバイスでのリアルタイム処理に適している。

feature flagによるmock/real切り替え設計は、開発時にはmockで高速にテストを回し、本番ではrealモデルを使うという運用を可能にしている。テスト環境と本番環境の差異を最小限に抑えつつ、開発効率を維持するための重要なアーキテクチャ判断だ。

3. 統合テスト追加

3
API統合テスト3件追加、全8テスト合格

API層の品質保証のため、統合テストを3件追加した。既存テストと合わせて全8テスト合格を確認。

  • Health Check テスト -- GET /health の応答確認。サーバーの正常起動を検証
  • Pricing Tier テスト -- 料金プラン情報APIの応答確認。Free/Starter/Pro/Enterpriseの4プランが正しく返却されることを検証
  • 認証なしフレーム送信 401テスト -- 認証トークンなしでフレームデータを送信した場合に401 Unauthorizedが返ることを検証

統合テストは「正常系」と「異常系」の両方をカバーしている。特に認証なしフレーム送信の401テストは、セキュリティの基本であるアクセス制御が正しく機能していることを自動検証する。このテストがなければ、認証バイパスのリグレッションに気付けない。

テストは「動く」ことだけでなく「拒否する」ことも検証せよ。不正なリクエストを正しく弾けることが、セキュリティの第一歩。

4. コードクリーンアップ

4
未使用コード警告修正 + 一時ファイル削除

プロダクションに向けたコードの清掃を実施。cargo checkの警告をゼロにし、不要な一時ファイルを削除した。

  • scanner.rs -- 未使用コードの警告を修正。dead codeアノテーションの追加ではなく、実際の不要コードを削除
  • 一時DNSスクリプト8件削除 -- Sprint Cycle 9で使用したDNS設定用の一時スクリプトをリポジトリから除去
  • cargo check 警告ゼロ -- プロジェクト全体でコンパイラ警告がゼロであることを確認

一時スクリプトの放置は技術的負債の温床だ。DNS設定が完了した時点で不要になったスクリプト8件を即座に削除した。「後で消す」は永遠に来ない。完了したタスクの後始末はその場で行う。

cargo check警告ゼロは、Rustプロジェクトにおける品質の基準線だ。警告を放置すると、本当に重要な警告が埋もれる。ゼロ警告ポリシーを維持することで、新たな問題を即座に検出できる状態を保つ。

まとめ

Sprint Cycle 10 で確立したこと

Sprint Cycle 10は派手な新機能の追加ではなく、プロダクション運用に必要な「守り」の施策に集中した。DNS設定の完了、テスト基盤の構築、コードの清掃。地味だが、これらが整っていなければスケールアップは不可能だ。

基盤が堅牢であれば、その上に何でも建てられる。逆に、砂上の楼閣はどれだけ速く建てても崩れる。

次回予告

次のスプリントでは、プロダクトの中核機能をさらに前進させる。

Coming Next

ミセバンAI -- 既存カメラがAI店長に変わる

小規模店舗のための次世代AI分析。
先着30店舗のクローズドベータ、まもなく募集開始。