開発ログ
本ページは、設計方針の変更・協議の経緯・実装の進捗を時系列で記録する開発ログです。 検証計画や WBS の「計画」と本ログの「実績」が乖離した場合は、本ログと関連資料を同期します。 設計理解・エラー解決のナレッジは Phase1 ナレッジ に集約しています。
1. 現在地サマリー(2026-06-07)
| 区分 | 状態 | 備考 |
|---|---|---|
| WBS 1.1 サーバー環境構築 | 完了 | 1.1.1〜1.1.3 すべて完了 |
| WBS 1.1.2 FastAPI + DB + Storage | 完了 | Windows PC 上で docker compose up 成功。コンテナ稼働中 |
| WBS 1.1.3 FB 受信 API(localhost) | 完了 | GET /health・POST /feedback 確認済み |
| WBS 1.1.1 PoC Tunnel 再利用 | 完了 | Pi cloudflared 停止 → 本 PC(Docker)で接続。公開 URL: https://api.dammy-otoko.com |
| MS-1(Tunnel 経由 FB 受信) | 達成 | test-feedback.ps1 -BaseUrl "https://api.dammy-otoko.com" で HTTP 201・Storage 保存確認 |
| WBS 1.2.1 Flutter プロジェクト | 完了 | app/ 作成。F-01〜F-03 実装済み(端末検証は 1.2.3) |
| 次の WBS | 1.2.3 未着手 | 実機から Tunnel 経由 FB 送信 |
2. 方針変更・決定事項一覧
| 日付 | 変更内容 | 理由 | 影響資料 |
|---|---|---|---|
| 2026-06-07 | Cloudflare Tunnel を新規構築せず PoC の poc-api-tunnel を再利用 |
PoC(スマート農業)で Named Tunnel・DNS 移管・固定ドメインが確立済みかつ稼働中のため | runbook v1.1、WBS、基本設計 |
| 2026-06-07 | サーバーホストを Raspberry Pi からWindows 11 PCへ変更 | 本プロジェクトの開発環境をプライベート PC に移行。馬体診断 FB API を同一 PC で運用 | runbook、詳細設計 C-02 |
| 2026-06-07 | WBS 1.1 の実施順序を変更(ローカル API 疎通 → Tunnel 移行) | Tunnel 基盤は既にあるため、先に API 実装の正しさを localhost で確認する方が効率的 | runbook、index |
| 2026-06-07 | 公開 URL を api.dammy-otoko.com に統一(当初案の api.example.com は不採用) |
PoC で有効なドメインをそのまま利用 | runbook |
| 2026-06-07 | test-feedback.ps1 の JSON 送信方式を変更(一時ファイル経由) |
Windows の curl.exe -F でインライン JSON が壊れる事象を確認 |
scripts/test-feedback.ps1 |
3. 時系列ログ
プロジェクト準備完了(WBS 0)
検証計画・設計 HTML 資料、WBS・ガントチャート、リポジトリルールを整備。MS-0 達成。
サーバー実装着手・runbook v1.0 作成
server/(FastAPI + PostgreSQL + docker-compose)、
scripts/test-feedback.ps1、
runbook-phase1-server.html v1.0 を作成。
当初は Tunnel 新規構築(horse-feedback)を想定。
プライベート PC へ開発環境移行
リポジトリをプライベート PC(Windows 11)へ移行し初回コミット(2c6f420)。
開発の主戦場を自宅 Windows PC とする。
協議: PoC Cloudflare Tunnel の再利用可否
論点: WBS 1.1.1 の Tunnel 構築を一から行うか、
過去 PoC(C:\Dev\PoC_スマート農業環境構築)の資産を活用するか。
- PoC 記録および疎通確認により、
https://api.dammy-otoko.com/pingが応答(Tunnel 稼働中)と確認 - Named Tunnel
poc-api-tunnel、Public Hostnameapi.dammy-otoko.com → http://api:8000が本プロジェクトの docker-compose と整合 - DNS 移管(Squarespace → Cloudflare)は PoC で完了済み
決定: Tunnel・DNS・Hostname は再利用し、作業範囲を「cloudflared の接続先を Pi から Windows PC へ移す」に限定する。
参照: Manus 作業記録(Raspberry Pi PoC)、 PoC ナレッジ資料(Phase 1-4)
runbook v1.1・WBS 更新(手順変更を文書化)
runbook-phase1-server.html を v1.1 に更新。 新規 Tunnel 作成手順を「スキップ可能」に変更し、実施順序を Docker 起動 → ローカル API 疎通 → cloudflared 移行 に並べ替え。 WBS・index・README を同期。
Docker Desktop インストール
Windows 11 に Docker Desktop 4.76.0 をインストール(共有アカウントではなく personal アカウント向けの設置)。
初回起動時の Docker Hub サインインはスキップ(ローカル compose 利用のみのため不要)。
インストール先: %LOCALAPPDATA%\Programs\DockerDesktop\
WBS 1.1.2 / 1.1.3 ローカル疎通完了
以下を確認済み。
docker compose up -d --build db api成功GET /api/v1/health→{"status":"ok"}POST /api/v1/feedback→ HTTP 201、画像はdata/storage/に保存
課題: test-feedback.ps1 の JSON 送信失敗(Windows)
事象: curl.exe -F "inference_result={...}" で API が
inference_result must be valid JSON を返す。
原因: Windows の curl にインライン JSON を渡すとエスケープが壊れる。
Set-Content -Encoding utf8 使用時は BOM が付き JSON パースも失敗。
対応: scripts/inference.json を
[System.IO.File]::WriteAllText で生成し、
-F "inference_result=<...json" で送信するようスクリプトを修正。
次の作業(WBS 1.1.1 残)
server/.envのTUNNEL_TOKENを PoC のpoc-api-tunnelトークンに設定- Raspberry Pi 上の cloudflared を停止(二重コネクタ回避)
- 本 PC で
docker compose --profile tunnel up -d cloudflared test-feedback.ps1 -BaseUrl "https://api.dammy-otoko.com"で MS-1 確認
手順詳細: Phase1 サーバー手順 セクション 6
課題: TUNNEL_TOKEN に Tunnel ID(UUID)を設定
事象: cloudflared が Provided Tunnel token is not valid. で
Restarting (255)。Tunnel 経由は Cloudflare error 1033。
原因: TUNNEL_TOKEN に Tunnel ID(UUID 形式)を設定していた。
必要なのは Zero Trust → Configure で取得する eyJ... 形式の Connector トークン。
対応: Cloudflare ダッシュボード(Docker タブまたは Windows 手順内のトークン)から
正しいトークンを server/.env に設定。cloudflared.exe の Windows ネイティブインストールは不要
(本プロジェクトは Docker コンテナで運用)。
詳細: Phase1 ナレッジ K-03
WBS 1.1.1 完了・MS-1 達成
以下を確認し、WBS 1.1 および MS-1 を完了とした。
- Raspberry Pi(
~/poc-api)でsudo docker compose stop cloudflared(サービス名cloudflared) - 本 PC で
docker compose --profile tunnel up -d cloudflared→Up(precheck 成功) curl.exe https://api.dammy-otoko.com/api/v1/health→{"status":"ok"}test-feedback.ps1 -BaseUrl "https://api.dammy-otoko.com"→ HTTP 201、data/storage/に画像保存
次: WBS 1.2 スタブ Android アプリ。端末からの FB 送信検証(1.2.3)は Flutter 実装後に実施。
課題: Git push に -m を付けて失敗
事象: git add . 後に
git push -m "..." を実行し unknown switch 'm'。
原因: コミットメッセージ用の -m は git commit のオプション。
add の次は push ではなく commit が必要。
対応: git commit -m "..." → git push の順で実行。
詳細: Phase1 ナレッジ K-14
WBS 1.2.1 / 1.2.2 Flutter スタブ実装
app/ に Flutter スタブを作成し、F-01〜F-03 を実装。
- F-01 ギャラリー画像選択(
image_picker) - F-02 ダミー推論(ラベル A/B/C、スコア 0.75〜0.99)
- F-03 FB 送信(
POST /api/v1/feedback、デフォルト URL:https://api.dammy-otoko.com) flutter analyze/flutter test成功
残: WBS 1.2.3 — 実機でアプリを起動し Tunnel 経由で FB 送信を確認。
cd app
flutter run
4. 関連リソース
| 種別 | 参照先 |
|---|---|
| PoC 記録(ローカル) | C:\Dev\PoC_スマート農業環境構築\ |
| Manus 作業記録 | RaspberryPiを用いたサーバ/クライアント構築と実現性検証 |
| Phase1 ナレッジ | phase1-knowledge.html |
| 現行 runbook | runbook-phase1-server.html(v1.3) |