個人開発・iOSアプリ

恋の裁判所(コイサバ)

担当

企画・要件定義からデザイン・実装・リリースまで一気通貫(個人開発)

期間

2026

使用技術

React NativeTypeScriptSupabasePostgreSQLEdge FunctionsAI / LLMIAPOAuth
恋の裁判所(コイサバ) — 1
恋の裁判所(コイサバ) — 2
恋の裁判所(コイサバ) — 3
恋の裁判所(コイサバ) — 4

概要

カップルが恋愛の揉め事を匿名で「公開裁判」にかけると、他のユーザー(陪審員)が有罪・無罪・どっちもどっちの三択で投票し、AIが裁判官口調の判決文まで書くiOSソーシャルアプリ。日本市場向けに、企画・デザイン・フロントエンド・バックエンド・リリースまで一人で担当。 React Nativeの27画面と独自デザインシステム、Supabase(Postgres・RLS・Edge Functions 11本・pg_cron)上のAI判決パイプライン。

担当業務

  • 01

    React Native + TypeScript のフロントエンド — 27画面、独自デザインシステム、DynamicColorIOSによるダークモード。tsc・eslint・jest 221件のパスを常時の基準として維持。

  • 02

    Supabaseバックエンド設計 — Postgres・RLS・Edge Functions(Deno)11本・pg_cron。AI判決パイプラインは複数プロバイダのフェイルオーバー構成、プロンプトはDBに分離してアプリ再配布なしで差し替え可能。

  • 03

    リリース前に中核フローをピボット(企画判断)。当初案は「投稿 → 締切まで待つ → 締切後にようやくAIが民意を要約」で、締切は3日(72時間)だった。新規アプリで3日後の再訪を期待するのは賭けが大きいと判断し廃止。現行は、作成者が公開前にAI判定を受け、確認してから公開可否を決める流れ。投票の締切は36時間 — 夜のプライムタイムを2回カバーする長さに設定。

  • 04

    同じピボットでコスト構造も転換。締切後の全件自動生成(cronバッチ)を廃し、タップ時に1回生成してキャッシュする方式へ — 誰も開かない投稿にトークンを使わない。オンデマンドのEdge Functionは verify_jwt + RLS委譲、冪等キャッシュ、429・503処理、fail-closed、ユーザーあたり24時間30件のキャップ。

  • 05

    App Store審査 §1.2(同意していない第三者を大衆が裁く)への対応を、「両者の主張を必須にする」ではなく匿名性そのもので設計。写真アップロードを廃して絵文字アバターに置き換え、UGC画像のモデレーションと権限ラベルの負担をゼロに。陪審員番号はユニークなランダム6桁(登録時トリガー・衝突時は再抽選)— 従来のハッシュ %9999 方式は衝突検出がなく廃止。

  • 06

    リリース前の自主セキュリティ監査で、ソーシャルログインが保存したプロフィール画像URLが未ログインの公開APIレスポンスにそのまま含まれていたことを発見(影響1件)。画面上は絵文字にフォールバックするため目視QAでは絶対に捕まらない漏れだった。アプリ側の保存停止・出口関数のホワイトリストフィルタ(レガシー行までカバー)・カラムのCHECK制約の3重で遮断。公開経路のカラムは「アプリが何を入れるか」ではなく「何が入り得るか」で判断する、という規則として文書化。

  • 07

    Apple・Google・LINEの3種ログイン(LINEは公式サポートがなくカスタムEdgeで自前実装)、IAPのレシート サーバー検証、App Store審査対応(アカウント削除・Privacy Manifest・ATT)。審査期間中は共有DB・Edge Functionの変更を全面的に凍結するリリース規律を適用。

  • 08

    ドキュメントがコードとずれて誤った判断を招いた経験から(537コミット中「訂正」コミット23件の最多要因)、機械が検査する事実表を導入。主要な設定値をコードから抽出して文書と突き合わせるテストを置き、コードを変えると先に文書側が落ちる構成に。

成果

企画・デザイン・開発・リリースまで、一人で完遂したプロダクション級のiOSアプリ。2026年8月15日 App Store 公開。