個人開発 / MVP開発中・TestFlight内部配信

「今日、子どもとどう過ごそう?」を、
5分で決められるアプリ。

天気・予算・親の体力・子どもの興味——バラバラの条件をミックスして、いま現実にできる「あそび体験」を提案する、保護者のためのiOSアプリです。

SwiftUI FastAPI PostgreSQL Cloudflare Tunnel Codemagic CI TestFlight AIエージェント駆動開発
アプリの世界観を見る 開発の見せ所へ
WHY

「どこ行く?」が決まらないまま、
土曜の朝が過ぎていく。

子どもとの休日は楽しいはずなのに、行き先を決めるまでがいちばん疲れる。あそびミックスは、この「意思決定コスト」に絞って作られています。

🌀

条件がいつもバラバラ

天気、予算、移動手段、親の体力、子どもの気分。検索サイトはスポットは教えてくれても、「今日のうちの条件」では絞ってくれません。

調べているうちに午前が終わる

候補を見つけても、営業しているか、予約は要るか、雨でも大丈夫かの確認で時間が溶ける。決められないまま「また今度ね」に。

📅

情報の鮮度が命

子連れのお出かけ情報は、イベント終了・時間変更・予約枠の変化が激しい。古い情報を信じて出かけた失敗は、親の信頼を一発で失います。

5分
DECISION TIME

🎯 KPIは機能数ではなく「意思決定時間」

家庭内パイロットの完了条件を「アプリ起動から5分以内に、今日の予定を決められること」と定義。3回の実利用検証で「候補を実際の行動判断に使えるか」を記録票つきで確認するプロセスを設計し、実施済みです。機能を足すことではなく、保護者の朝の5分を取り戻すことをゴールにしています。

iOS APP

水彩の街を眺めていたら、
今日のあそびが灯っている。

検索結果のリストではなく、「あそびマップ」から始まる体験。SwiftUIで、絵本のような世界観と実用性を両立させました。

9:41
きょう 0円 徒歩・自転車 体力すくなめ
🏠
🌳
📚
🎪
そとあそび

大宮公園で どんぐり&まつぼっくり さがし

🚶 徒歩12分💰 0円✅ 予約不要
☀️ きょうの天気なら気持ちいいはず

※ 実装済みホーム画面(あそびマップ + 推薦カルーセル)の構成を再現したイメージ

🗺️

あそびマップ

推薦された体験が、水彩の街にピンとして灯る。ピンチ・ドラッグで探索でき、ピンとカードの選択が連動してぽんっと弾みます。

🎛️

条件ミックス

今日/今週末/今月 × 予算 × 天気 × 移動手段 × 親の体力 × 興味タグ。未指定の条件は家庭プロフィールから自動補完します。

📌

保存 と 実施メモ

気になる体験を保存し、実際にやってみた記録を実施メモに。家庭の「あそびの履歴」が次の推薦の材料になります。

🎯

季節ビンゴ

「春のあそびビンゴ」のように、季節ごとのあそびをビンゴ形式で。子どもと一緒に埋めたくなる仕掛けです。

🤝

失敗に寄り添う接続設計

Wi-Fi切断・スリープ復帰・サーバ再起動を想定し、再接続導線とエラー文言を人の言葉で設計。設定復旧フローはUIテストで担保しています。

川辺で親子が水あそびをしている水彩イラスト
晴れた日は川へ
0円・徒歩圏のリアルな提案
雨の日に家の中で親子が工作をしている水彩イラスト
雨なら家で工作
悪条件でも「逃げ道」を出す
科学館で父親と子どもが展示を見ている水彩イラスト
学びたい日は科学館へ
興味タグ×学び志向の推薦
公園の遊具で父親と子どもが遊んでいる水彩イラスト
体力があまってる日は公園
親の体力も条件のひとつ

アプリ内イラストはすべてAI生成。スタイル定義を「スキル」として整備し、量産しても世界観が崩れない仕組みにしています。

AI ENGINEERING

AIを使う場所使わない場所を、
設計で決める。

このプロダクトのAI活用は2層あります。プロダクトの中でのAIの役割設計と、開発プロセスそのもののAIエージェント活用です。

プロダクト内のAI

AIに「事実」を語らせない、
反ハルシネーション設計

子連れのお出かけは、料金や予約要否をひとつ間違えるだけで実害が出るドメイン。だからAIの権限を意図的に絞りました。

  • 事実の選定はルールベース。候補抽出→ハードフィルタ→スコアリング→カテゴリ配分まで、決定的なロジックで実装。
  • AIの役割は表示コピーの整形に限定。料金・日時・公式URL・予約要否をAIが「創作」する余地を構造的に排除。
  • AI呼び出しはすべてログに記録。プロバイダ設定はDeveloper API(scope分離されたトークン)でのみ変更可能。
  • 条件正規化 + SHA-256ハッシュのキャッシュ設計。プロフィール更新でバージョンが上がり、キャッシュが自然に無効化される仕組み。
開発プロセスのAI

契約とテストでAIを縛る、
エージェント駆動開発

設計・実装・検証の大部分をAIエージェント(Claude / Codex)と協働。ただし「任せ方」に一貫したルールを敷いています。

  • 先に契約を固める。OpenAPI仕様と設計ドキュメント21本を先行整備し、AIはその契約の中で実装する。
  • 1タスク = 成果物 + 実装 + 検証 + コミット。T04〜T31のバックログを完了条件つきで定義し、迷子にならない開発単位を維持。
  • 検証スクリプト41本で人間が判定。AIの成果は verify_all.sh からリリースゲートまで、再現可能なスクリプトで確認。
  • イラスト生成もスキル化。水彩スタイルの定義を再利用可能なスキルとして整備し、世界観の統一を仕組みで担保。

思想は一貫して、「AIに任せる範囲を、契約とテストで縛る」
速度は借りて、品質の責任は人間が持つ。

ARCHITECTURE & OPS

Mac mini 1台を、
「運用できるプロダクション」に育てる。

個人開発でも、落ちたら直る・追跡できる・安全に公開できる基盤を整備。家庭内LANのMVPから、TestFlight外部配信まで同じコードベースで運用しています。

📱

iPhone
SwiftUI App

MVVM / XCUITest E2E / 再接続リカバリ

☁️

Cloudflare Tunnel

外部公開時のみ経由 / レートリミット / LAN時はWi-Fi直結

⚙️

FastAPI on Mac mini

launchd常駐 / 3種トークン認証 / 公開時はdocs閉鎖

🗄️

PostgreSQL

migration管理 / seed分離 / E2E用の隔離DB

🚀 CI/CD — Codemagic → TestFlight 署名証明書の取得からIPAビルド、ビルド番号の自動加算、TestFlight配信までをCIで自動化。バックエンドのseed検証もパイプラインに組み込み。
🖥️ 管理コンソール + 非同期ジョブ イベントの下書き→修正→公開→ライフサイクルを管理するAdmin API群と、ジョブワーカー・操作履歴を実装。推薦データを安全に更新できます。
🔄 L3鮮度パイプライン(下で詳説) 地域の一次情報を定期取得し、差分検知→ドラフト→人間レビュー→公開。「情報の鮮度が命」への回答です。
🚦

リリースゲート

隔離したPostgreSQLでAPI検証 → 管理コンソールのdry-run → L3公開/修正/ライフサイクル → SwiftUI XCUITestまでを一気通貫で流すE2Eプロファイル。リリース前の「全部つないで動くか」を1コマンドで判定します。

🔎

観測性 — 追える、けど覗かない

JSON Linesの構造化ログにX-Request-IDがAPI応答まで貫通。一方でトークン・リクエスト本文・IP・子どものメモは記録しないことを明文化。障害切り分けとプライバシーを両立します。

🔁

自動復旧

APIとトンネルをlaunchdで常駐化し、Mac mini再起動・プロセス停止から自己回復。iOS側もWi-Fi切断・スリープ復帰後の再接続をUIテストで担保しています。

🛡️

公開時の防御

App / Admin / Developerの3種トークン + scope判定で権限を分離。公開環境ではOpenAPIドキュメントを閉じ、ヘルス応答の情報量も削減。Cloudflareのレートリミットも設計済みです。

🔄 大宮L3鮮度パイプライン — Human-in-the-loopのデータ運用

推薦の信頼はデータの鮮度で決まる。大宮エリアの一次情報を対象に、自動化と人間レビューを組み合わせた更新パイプラインを実装しました。

1
定期取得

地域情報ソースを優先度つきで巡回取得

2
差分検知

コンテンツのハッシュ比較で変化だけを抽出

3
ドラフト生成

変更点からイベント下書きを自動作成

👤 人間レビュー
4
確認・修正

事実確認と修正を経てはじめて公開可能に

5
公開・再検証

推薦へ反映後も再検証ジョブで鮮度を監視

🧪 バックエンドテスト 185+

推薦コア・管理コンソール・ジョブワーカーまで、テストファイル48本で契約を固定。

📲 実機E2E

シミュレータに加え、LAN接続の実機iPhoneで保存〜メモ削除までのタップ操作E2Eを自動化。

👨‍👩‍👧 家庭内パイロット

自動テストでは測れない「本当に決められるか」を、実利用3回の記録票で検証済み。

📐 ドキュメント駆動

API契約・テスト設計・運用手順まで設計ドキュメント21本。実装と同一タスク内で同期。

ROADMAP

現在地と、これから。

MVPは開発途中です。できていること・これからやることを正直に分けて示します。

完了 — 2026.06 上旬

設計とコア実装

OpenAPI契約・推薦ロジック仕様・DB設計を先行整備。決定的な推薦コア、条件正規化とキャッシュ、SwiftUI MVPの主要画面を実装。

完了 — 2026.06 中旬

LAN家庭内パイロットと運用基盤

家庭内LANで実運用を開始。構造化ログ、launchd自動復旧、実機受入テスト、再接続リカバリを整備し、実利用3回のパイロット検証を実施。

完了 — 2026.06 下旬

TestFlight配信と鮮度パイプライン

Codemagic CIで署名〜TestFlight配信を自動化し、公開リハーサルを完了。大宮L3鮮度パイプライン、管理コンソール、リリースゲートを実装。

🚧 いまここ

T31: TestFlight実機受入と外部テスト開始判定

TestFlight経由の実機受入テストを行い、家族・知人枠での外部テストを開始できるかを判定するフェーズ。ここを越えると「自宅の外」で使われ始めます。

計画 — 外部テスト期

外部テスターの利用データで推薦を磨く

複数家庭の利用を通じて推薦品質と情報鮮度の運用を検証。天気APIの自動取得、実距離計算の導入を予定。

計画 — 拡大期

エリア拡大とAIコピー生成の本番投入

大宮で確立したL3パイプラインを他エリアへ横展開。反ハルシネーションのガードレールを維持したまま、AIによる表示コピー生成を本番へ。その先にApp Store公開を見据えます。

※「計画」の項目は現時点で未実装の構想です。実装済みの範囲と混ざらないよう、明確に分けて記載しています。

27タスク
完了バックログ
(T04–T30)
185+
バックエンド
テスト関数
41
検証・運用
スクリプト
21
設計
ドキュメント
2.5万行
Python
バックエンド
4.9千行
SwiftUI
iOSアプリ

2026年7月時点のリポジトリ実測値