版数: 1.1  |  更新日: 2026-06-07

開発ログ

本ページは、設計方針の変更・協議の経緯・実装の進捗を時系列で記録する開発ログです。 検証計画や 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 /healthPOST /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.1WBS基本設計
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 で確認する方が効率的 runbookindex
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)

進捗 2026-06-03 〜 2026-06-05

検証計画・設計 HTML 資料、WBS・ガントチャート、リポジトリルールを整備。MS-0 達成。

サーバー実装着手・runbook v1.0 作成

進捗 2026-06-05

server/(FastAPI + PostgreSQL + docker-compose)、 scripts/test-feedback.ps1runbook-phase1-server.html v1.0 を作成。 当初は Tunnel 新規構築(horse-feedback)を想定。

プライベート PC へ開発環境移行

環境変更 2026-06-07

リポジトリをプライベート PC(Windows 11)へ移行し初回コミット(2c6f420)。 開発の主戦場を自宅 Windows PC とする。

協議: PoC Cloudflare Tunnel の再利用可否

協議・決定 2026-06-07

論点: WBS 1.1.1 の Tunnel 構築を一から行うか、 過去 PoC(C:\Dev\PoC_スマート農業環境構築)の資産を活用するか。

  • PoC 記録および疎通確認により、https://api.dammy-otoko.com/ping が応答(Tunnel 稼働中)と確認
  • Named Tunnel poc-api-tunnel、Public Hostname api.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 更新(手順変更を文書化)

方針変更 2026-06-07

runbook-phase1-server.html を v1.1 に更新。 新規 Tunnel 作成手順を「スキップ可能」に変更し、実施順序を Docker 起動 → ローカル API 疎通 → cloudflared 移行 に並べ替え。 WBSindex・README を同期。

Docker Desktop インストール

進捗 2026-06-07

Windows 11 に Docker Desktop 4.76.0 をインストール(共有アカウントではなく personal アカウント向けの設置)。 初回起動時の Docker Hub サインインはスキップ(ローカル compose 利用のみのため不要)。 インストール先: %LOCALAPPDATA%\Programs\DockerDesktop\

WBS 1.1.2 / 1.1.3 ローカル疎通完了

進捗 2026-06-07

以下を確認済み。

  • 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)

課題・対応 2026-06-07

事象: 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 残)

予定 2026-06-07 〜
  1. server/.envTUNNEL_TOKEN を PoC の poc-api-tunnel トークンに設定
  2. Raspberry Pi 上の cloudflared を停止(二重コネクタ回避)
  3. 本 PC で docker compose --profile tunnel up -d cloudflared
  4. test-feedback.ps1 -BaseUrl "https://api.dammy-otoko.com" で MS-1 確認

手順詳細: Phase1 サーバー手順 セクション 6

課題: TUNNEL_TOKEN に Tunnel ID(UUID)を設定

課題・対応 2026-06-07

事象: 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 達成

進捗 2026-06-07

以下を確認し、WBS 1.1 および MS-1 を完了とした。

  • Raspberry Pi(~/poc-api)で sudo docker compose stop cloudflared(サービス名 cloudflared
  • 本 PC で docker compose --profile tunnel up -d cloudflaredUp(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 を付けて失敗

課題・対応 2026-06-07

事象: git add . 後に git push -m "..." を実行し unknown switch 'm'

原因: コミットメッセージ用の -mgit commit のオプション。 add の次は push ではなく commit が必要。

対応: git commit -m "..."git push の順で実行。 詳細: Phase1 ナレッジ K-14

WBS 1.2.1 / 1.2.2 Flutter スタブ実装

進捗 2026-06-07

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)