PAWLANDは、犬の性格・行動・安全条件を整理し、ペットホテルや保育園での相性評価と部屋割りを支援するシステムです。
デモとソースコード
- 動作確認用デモ
- [GitHubリポジトリ](https://github.com/NoSea41oceanV/AI-HACK-2020609
「気の合う相手がいたら」から考えた課題 🐶
開発の出発点は、**「うちの子にも、気の合う相手がいたらいいな」**という素朴な思いでした。
犬にも性格や好きな遊び方があり、相性の良い犬と過ごすことで、普段とは違う楽しそうな姿を見せることがあります。その一方で、相性を十分に確認しないまま同じ空間で過ごすことには不安もあります。
特に、旅行や仕事で愛犬をペットホテルや保育園へ預けるとき、飼い主には次のような心配があります。
- ほかの犬と無理なく過ごせるか
- 怖い思いやストレスを感じていないか
- 苦手なことや普段の様子が、スタッフへ正しく伝わっているか
- どのような理由で同じ部屋の犬が決められたのか
この不安を減らすには、飼い主が知っている「普段のその子」と、施設で確認できる「当日のその子」をつなぎ、相性や注意点を分かりやすくする必要があります。
施設側では、複数の犬を同じ空間で預かるために、性格、活動量、遊び方、体格差、ほかの犬への反応、注意事項などを短時間で比較しなければなりません。経験豊富なスタッフはこれらを総合して判断できますが、その知識は個人の経験に依存しやすく、複数頭の判断理由まで共有するのは簡単ではありません。
そこで、飼い主の不安を減らしながら、施設スタッフの判断を支援することを課題として、相性評価と部屋割りを行う仕組みを実装しました!
実装したシステム
システムの基本的な流れは次のとおりです。
- 施設が、飼い主用の登録URLまたはQRコードを案内する
- 飼い主が、犬の性格・遊び方・注意事項などを入力する
- AIが回答と画像から特徴を構造化する
- コードで全ペアの相性と安全条件を評価する
- 条件を満たす組み合わせから部屋割り案を作る
- スタッフが理由と当日の様子を確認し、最終判断する
飼い主向けには登録フォームだけを公開し、施設側の画面では「今日見る犬」「プロフィール」「相性カルテ」「部屋割り案」を確認できる構成にしています。
飼い主向けの登録画面。普段の性格、遊び方、注意事項などを入力します。
施設スタッフ向けの「今日の運営」画面。当日の預かり犬、部屋の定員、編成状態を確認できます。表示されている犬は架空データです。
入力しやすさとデータの構造化
飼い主に専門用語を入力してもらうのではなく、普段の様子を思い出しやすい質問を用意しました。
- 初めて会う犬にはどう近づくか
- おもちゃをほかの犬が取ろうとしたらどう反応するか
- 楽しくなると、どのような行動をするか
選択式の回答に加えて、自由記述と写真も入力できます。
AIはこれらの情報から、性格傾向・遊び方・注意点と、相性計算に利用する7軸の特徴量を整理します。自由記述をそのまま判定に使うのではなく、後続処理で扱える形に変換するのがAIの主な役割です。
スタッフは、点数だけではなく次の情報も相性カルテから確認できます。
- 相性が良いと判断した要素
- 同室時に注意したい要素
- AIが整理した性格傾向
- 飼い主の回答と施設での観察結果
「相性カルテ」画面。評価項目、AIが整理した7軸、判定根拠、ほかの犬との相性を確認できます。
AIと決定ロジックの責務を分ける 🤖
安全に関わる判断を、生成AIの回答だけで確定しない設計にしました。
| 担当 | 処理内容 |
|---|---|
| AI | 回答や画像から、性格・遊び方・注意点・7軸の特徴量を構造化する |
| コード | 全ペアの比較、相性点の計算、同室不可、体格差、部屋定員などを判定する |
| スタッフ | 提案理由と当日の状態を確認し、部屋割りを最終決定する |
AIの出力が想定した形式でない場合は成功扱いにせず、同室不可などの安全条件をAIの文章で上書きできないようにしています。
注意: このシステムは獣医療上の診断や安全保証を行うものではありません。スタッフの判断材料を整理するためのシステムです。
相性計算と部屋割り
相性評価では、登録されている犬の組み合わせを全ペア比較します。
主な評価対象は、活動量、体格、遊び方、社会性、資源防衛傾向、AIが整理した7軸の性格特徴です。単に似ている犬を集めるのではなく、まず全ペアに相性スコアを付け、その結果と安全条件を使って、全体として相性が高くなる部屋割りを探索します。
ただし、相性スコアが高くても、次の条件に該当する場合は同室候補から除外します。
- 明示的な同室不可の指定がある
- 許容できない体格差がある
- 部屋の定員を超える
- 登録された注意事項と矛盾する
安全条件を満たす割り当てが作れない場合は、無理に案を確定しません。「割り当て不可」と理由を返し、スタッフに判断を戻します。 🛡️
システム構成
フロントエンドは React / TypeScript / Vite、データ保存は Firebase Cloud Firestore、公開には Firebase Hosting を使用しました。
AI分析はブラウザから直接呼び出さず、Cloudflare Workersを経由してOrcaRouterへ送ります。これにより、APIキーをブラウザへ置かず、外部AIへ送信できる項目をWorker側でも制限できます。
PAWLANDの実構成。飼い主・スタッフ画面、Firebase、Cloudflare Workers、OrcaRouterの責務とデータ境界を示しています。
| 分類 | 使用技術 |
|---|---|
| フロントエンド | React / TypeScript / Vite |
| データベース | Firebase Cloud Firestore |
| 公開 | Firebase Hosting(Sparkプラン) |
| AIゲートウェイ | Cloudflare Workers(Freeプラン) |
| AIルーティング | OrcaRouter |
外部AIへ送るデータの境界 🔐
飼い主の氏名や連絡先は施設での管理に必要なためFirestoreへ保存しますが、AI分析には送りません。
| AIへ送るもの | AIへ送らないもの |
|---|---|
| 犬の性格 | 飼い主の氏名 |
| 遊び方 | 飼い主の連絡先 |
| 注意事項 | 音声 |
| 写真 | 元の動画ファイル |
| 動画から抽出した少数の静止画 | AI分析に不要な情報 |
動画は、ブラウザで少数の静止画を抽出してから送信します。元動画と音声は外部AIへ送信せず、写真や動画を永続保存するストレージも今回の構成では使用していません。
ハッカソンの評価項目を設計に反映
AI HACK 2026の評価項目は、実装時のチェック項目として利用しました。
セキュリティ
- APIキーをCloudflare WorkerのSecretで管理する
- 飼い主の個人情報をAIへ送信しない
- 飼い主用フォームと施設用画面を分離する
コストパフォーマンス
- FirebaseはSparkプランの範囲で利用する
- Cloudflare WorkersはFreeプランの範囲で利用する
- ルールで判定できる処理はコード側で行い、AIの利用範囲を特徴の構造化に絞る
信頼性・堅牢性
- AI出力の形式を検証する
- 安全条件は決定的なコードで判定する
- 条件を満たす部屋割りがない場合は、割り当て不能として停止する
自律性
登録、AI分析、全ペア比較、部屋割り、当日の観察、再提案までを一つの流れにしています。ただし、安全に関わる最終判断はスタッフが行います。
独自性
単発の性格診断で終わらせず、飼い主の事前情報、施設での観察、相性評価、スタッフの判断をつなぎます。判断結果を「その犬を理解するためのデータ」として蓄積できる構成です。
検証した内容
架空の犬を使い、次の一連の流れを確認しました。
登録 → AI分析 → 相性評価 → 部屋割り案の生成 → スタッフによる確定
また、画面確認用に6頭分のサンプルデータを用意し、複数頭の比較と部屋割りを確認できる状態にしています。
今回の検証はハッカソン向けのデモ環境で行ったものです。実際の施設での有効性や安全性を確認した結果ではないため、現場運用前には追加の検証が必要です。
今後の技術的な改善 🌱
現在の構成を実運用へ近づけるため、次の改善を考えています。
1. 相性評価の検証と重みの更新
スタッフの最終判断や、その後の観察結果を教師データとして蓄積し、7軸を含む各評価項目の重みを検証します。スコア計算のバージョンも保存し、同じ入力から同じ結果を再現できるようにします。
2. 部屋割り最適化の拡張
頭数や部屋数が増えた場合でも、定員と安全条件を守りながら全体の相性を高められるよう、探索方法と計算量を評価します。割り当て不能の理由も、スタッフが再調整しやすい形で表示します。
3. 当日の観察を使った再計画
興奮度、疲労、ほかの犬への反応などをスタッフが記録し、その日の状態に合わせて相性と部屋割りを再計算する流れを強化します。
4. 認証とテナント分離
今回のデモは1施設・1利用者を前提としています。複数施設で利用する場合は、Firebase Authentication、施設単位のデータ分離、Firestore Security Rulesの強化が必要です。
5. コストと運用状況の可視化
AI分析1回あたりの入力サイズ、実行回数、失敗率を計測し、無料枠の範囲で安定運用できるか確認します。再試行やタイムアウト時の処理も継続して改善します。
まとめ
PAWLANDでは、生成AIを最終判断者にせず、曖昧な回答や画像を構造化する役割として利用しました。相性計算、安全条件、部屋割りはコードで扱い、最後はスタッフが確認します。
AIが得意な処理と、決定的なルールで守る処理を分けることで、判断理由を確認できる相性評価・部屋割り支援システムを形にできました!




