技術仕様書
Kinobo Monthly v1.1.0 | 株式会社Kinobo
最終更新日: 2026年4月6日
1. サービス概要
| 項目 | 内容 |
| サービス名 | Kinobo Monthly(キノボマンスリー) |
| コンセプト | AIチャットボットによるマンスリーマンション案内・物件提案サービス |
| URL | https://monthly.horiki-hd.co.jp |
| 運営 | 株式会社Kinobo |
| ターゲット | ビジネス出張者、英語/中国語圏の観光客、受験のための母子 |
| 対応言語 | 日本語・英語・中国語 |
| 物件データ | 全国3,000件(17エリア・33属性) |
2. システムアーキテクチャ
バックエンド
Python 3.12
FastAPI 0.135
uvicorn (ASGI Server)
aiosqlite (非同期DB)
LLMエンジン
Google Gemini API
Model: gemini-2.5-flash
Fallback: gemini-2.0-flash
最終フォールバック: ルールベース応答
データベース
SQLite 3
テーブル: sessions, messages,
recommended_properties, ratings
フロントエンド
Vanilla JavaScript (ES6+)
CSS3 Custom Properties
レスポンシブデザイン
イベント委譲パターン
インフラ
VPS: Ubuntu 24.04 (2GB)
Caddy (Reverse Proxy + TLS)
systemd (Process Manager)
Let's Encrypt (HTTPS)
セキュリティ
CSP / HSTS / X-Frame-Options
Rate Limiting (per IP)
Input Sanitization
Brute-force Protection
3. 機能一覧
| 機能 | 説明 | 状態 |
| AIチャット | Gemini APIによる自然言語での物件案内 | 稼働中 |
| 選択式入力 | クイックオプションボタンによる簡易入力 | 稼働中 |
| 自由記述入力 | テキスト入力による自由な質問 | 稼働中 |
| 物件検索・提案 | エリア・予算・間取り等によるフィルタリング | 稼働中 |
| 物件カード表示 | サムネイル付き物件情報カード | 稼働中 |
| 物件詳細モーダル | カードクリックで全属性表示 | 稼働中 |
| エリア情報 | 17エリアの路線・駅・生活情報を3言語で提供 | 稼働中 |
| 3言語対応 | 日本語・英語・中国語のUI切替 | 稼働中 |
| 連絡先収集 | チャット終了時に名前・電話・メール取得 | 稼働中 |
| 営業用履歴 | 全チャットログ・顧客情報・提案物件の閲覧 | 稼働中 |
| ダッシュボード統計 | セッション数・言語別・評価・人気物件 | 稼働中 |
| CSVエクスポート | 顧客リストのCSVダウンロード | 稼働中 |
| 満足度評価 | 5段階星評価 | 稼働中 |
| 空室API連携 | リアルタイム空室確認 | 将来対応 |
| 物件画像 | 実際の物件写真表示 | 将来対応 |
4. API仕様
| エンドポイント | メソッド | 説明 | レート制限 |
/api/session | POST | 新規チャットセッション作成 | 10回/分 |
/api/chat | POST | チャットメッセージ送信・AI応答取得 | 20回/分 |
/api/contact | POST | 顧客連絡先保存 | 5回/分 |
/api/rating | POST | 満足度評価保存 | 5回/分 |
/api/areas | GET | エリア一覧取得 | 30回/分 |
/api/properties/search | GET | 物件検索 | 30回/分 |
5. データベース設計
| テーブル | カラム | 用途 |
| sessions | id, language, customer_name, customer_phone, customer_email, status, created_at, updated_at | チャットセッション管理 |
| messages | id, session_id, role, content, metadata, created_at | チャット履歴 |
| recommended_properties | id, session_id, property_no, property_name, created_at | 提案物件記録 |
| ratings | id, session_id, score, created_at | 満足度評価 |
6. 物件データ構造(33属性)
| カテゴリ | 属性 |
| 基本情報 | No., 物件名, 所在地, エリア |
| アクセス | 最寄り駅1, 徒歩, 最寄り駅2, 徒歩 |
| 部屋情報 | 間取り, 面積(㎡), 築年月, 階数 |
| 料金 | 1日賃料(税込), 清掃費(税込), 寝具代 |
| 通信 | ネット環境, ネット種別 |
| セキュリティ | オートロック, TVモニター付, 宅配BOX |
| 設備 | EV, 独立洗面台, 浴室乾燥, 温水便座, 洗濯機, ガス, コンロ口数, 冷蔵庫, 電子レンジ, 炊飯器, 掃除機 |
| 周辺 | 近隣施設, 備考 |
7. 対応エリア
| エリア | 物件数 | 日額目安 |
| 東京都心(六本木・赤坂・銀座) | 353件 | ¥4,170〜¥18,410 |
| 東京城南(品川・目黒) | 243件 | ¥3,640〜¥16,130 |
| 東京城東(浅草・錦糸町) | 265件 | ¥2,740〜¥12,290 |
| 東京城西(渋谷・新宿) | 158件 | ¥3,520〜¥14,110 |
| 東京多摩(立川・吉祥寺) | 203件 | ¥2,500〜¥11,070 |
| 東京城北(池袋) | 94件 | ¥3,010〜¥12,210 |
| 神奈川横浜 | 193件 | ¥2,920〜¥14,270 |
| 神奈川川崎 | 144件 | ¥3,060〜¥13,370 |
| 神奈川湘南 | 108件 | ¥2,500〜¥9,280 |
| 千葉 | 176件 | ¥2,500〜¥11,470 |
| 大阪キタ(梅田) | 147件 | ¥3,330〜¥14,400 |
| 大阪ミナミ(なんば) | 116件 | ¥3,170〜¥14,070 |
| 大阪その他 | 156件 | ¥2,590〜¥10,910 |
| 京都 | 171件 | ¥2,990〜¥13,160 |
| 福岡(博多・天神) | 162件 | ¥2,520〜¥10,010 |
| 仙台 | 151件 | ¥2,500〜¥9,150 |
| 北海道札幌 | 160件 | ¥2,500〜¥8,720 |
8. セキュリティ対策
| 対策 | 実装内容 |
| HTTPS | Caddy + Let's Encrypt 自動証明書管理 |
| セキュリティヘッダー | CSP, HSTS, X-Frame-Options, X-Content-Type-Options, Referrer-Policy |
| レート制限 | IP別・エンドポイント別の制限(20〜5回/分) |
| 入力サニタイズ | 最大長制限、制御文字除去、言語バリデーション |
| ブルートフォース防止 | 管理画面ログイン試行制限(5回/5分) |
| パス遮断 | .env, .git, wp-admin等へのアクセスを404 |
| API非公開 | FastAPI /docs, /redoc 無効化 |
| APIキー管理 | systemd環境変数で管理(コード内非記載) |
| noindex | 全ページに noindex, nofollow 設定 |
9. LLM設定
| 項目 | 設定値 |
| プライマリモデル | gemini-2.5-flash |
| フォールバック1 | gemini-2.5-flash → gemini-2.0-flash |
| フォールバック2 | ルールベース応答(API不通時) |
| temperature | 0.8 |
| topP | 0.95 |
| topK | 40 |
| maxOutputTokens | 2048 |
| 思考モード | 無効(thinkingBudget: 0) |
| API料金 | 無料枠: 15 RPM / 従量課金: 低コスト |
10. デプロイ構成
| 項目 | 詳細 |
| VPS | xvps.ne.jp / Ubuntu 24.04 / 2GB RAM / 3 vCPU |
| IP | 210.131.222.181 |
| ポート | 8003(内部)→ Caddy経由で80/443公開 |
| systemdサービス | monthly.service(自動起動・自動再起動) |
| ログ | /var/log/caddy/monthly.log(10MB×5ローテーション) |
| デプロイ方法 | tar + scp + systemctl restart monthly |
11. 同様のサービスを構築する手順
- データ準備: 物件データをExcel(33カラム)で整理 →
openpyxlでJSON変換
- バックエンド: FastAPI + aiosqlite でチャットAPI・履歴管理を実装
- LLM統合: Gemini APIのgenerateContentエンドポイントを呼び出し。システムプロンプトに物件データとエリア知識を含める
- フロントエンド: 軽量SPAでチャットUI。選択式+自由記述のハイブリッド入力。イベント委譲パターンで動的ボタン対応
- 多言語: フロントi18n辞書 + LLMシステムプロンプトの言語別切替
- セキュリティ: レート制限・入力サニタイズ・セキュリティヘッダー・HTTPS
- デプロイ: VPS + Caddy (HTTPS自動) + systemd (プロセス管理)
- 営業連携: パスワード付き履歴ページで営業担当者がチャット内容を確認・CSVエクスポート
12. 開発チーム
| 役割 | 担当 |
| プロダクトオーナー | 堀木遼(株式会社Kinobo 代表取締役) |
| ディレクター / PM | Claude Code (AI) |
| アーキテクト | Claude Code (AI) |
| フロントエンド / バックエンド | Claude Code (AI) |
| デザイン / レビュー | Claude Code (AI) |
| 営業コンサルタント | Claude Code (AI) — エリア知識・接客フロー設計 |