← 一覧に戻る
chibabot REST API 拡張計画 — チバとの会話をもっと便利に
2026年3月3日 00:30 更新
一言でいうと
チバの機能を REST API(汎用的な窓口)で公開し、誰でもどこからでも使えるようにする
なぜこれが必要なのか
現在、Claude Code からチバに質問する方法は1つだけ — 「単発で質問して、単発で回答をもらう」こと。前に何を聞いたかの文脈は残らないし、会話履歴を検索したり、スレッド(話題ごとのまとまり)で管理することもできない。
一方、スマホのチャットアプリ(chibabot-PWA(チバ専用のスマホ向けWebアプリ))には、スレッド管理・メッセージ検索・会話のエクスポート(書き出し)・画像からの文字読み取りなど、便利な機能がすでにたくさんある。
なぜ MCP ではなく REST API なのか
当初はMCP(AIツール専用の通信規格)で機能を公開する計画だったが、方向転換した。理由は「制御権」の問題。
MCP(ツール定義で使い方を固定)
「チバに質問する」機能 → question しか渡せない。RAG検索件数を変えたい、記憶検索をスキップしたいなど、使う側の自由がない。提供側が「こう使え」と決める
REST API(パラメータで機能を柔軟に公開)
「チバに質問する」API → question, ragLimit, includeContext, systemPromptOverride... 何をどう組み合わせるかは使う側が決められる。パラメータを増やすだけで機能拡張できる
REST API(プログラム同士が会話する窓口)なら、Claude Code・PWA・将来のアプリなど、あらゆるクライアントが同じエンドポイント(受付窓口)を叩ける。MCPは将来、この REST API の薄いラッパー(包み紙)として追加する。
何が変わるのか
今まで
- 単発の質問しかできない
- 会話の流れが残らない
- 過去の質問を探せない
- スマホアプリでしかスレッド管理できない
拡張後
- スレッド(話題別の部屋)で会話を続けられる
- 過去の会話を横断検索できる
- Markdown/JSONで会話を書き出せる
- 画像から文字を読み取って質問に使える
追加される10個のAPIエンドポイント
エンドポイントとは「プログラムがリクエストを送る宛先」のこと。以下の10個が新たに使えるようになる。
| エンドポイント | できること |
POST /api/threads/:id/ask | チバに質問する(スレッドの文脈付き。RAG検索件数やプロンプトも指定可能) |
POST /api/threads | 新しいスレッド(話題の部屋)を作成する |
GET /api/threads | スレッド一覧を取得する(ページ送り対応) |
GET /api/threads/:id | スレッドの詳細情報を取得する |
PATCH /api/threads/:id | スレッドの名前変更・ピン留め・アーカイブ |
DELETE /api/threads/:id | スレッドを削除する(復元可能な安全削除) |
GET /api/threads/:id/messages | スレッド内のメッセージ履歴を取得する |
GET /api/messages/search | 全スレッドを横断してメッセージを検索する |
POST /api/threads/:id/export | 会話をMarkdown/JSONで書き出す |
POST /api/ocr | 画像から文字を読み取る(OCR(画像から文字を読み取る技術)) |
実際のClaude Codeでの使い方イメージ
言葉だけだとピンとこないと思うので、実際にClaude Code上でどんな対話になるか、具体例を見てみて。
例1: スレッドを作って相談する
You: 「あやか」って子のスレッド作って。初デートの相談したい
→ POST /api/threads { title: "あやか", emoji: "👩" }
スレッド「あやか」(👩) を作成したわ。threadId: abc-123
You: あやかのスレッドでチバに聞いて。「来週初デートなんだけど、表参道でランチのいい店ある?」
→ POST /api/threads/abc-123/ask { question: "来週初デート...", ragLimit: 5 }
チバの回答: 「表参道なら◯◯がオススメだぜ。初デートのランチは...」
※ この会話はスレッド「あやか」に自動保存される
例2: 別のスレッドに切り替える
You: スレッド一覧見せて
→ GET /api/threads?status=all
📌 あやか (👩) — 最終更新: 5分前
まい (🌸) — 最終更新: 3日前
恋愛テクニック全般 (📚) — 最終更新: 1週間前
You: まいのスレッドでチバに聞いて。「2回目のデートに誘うLINE、どう送ればいい?」
→ POST /api/threads/def-456/ask { question: "2回目のデート..." }
チバの回答: 「まいちゃんとの前回の会話を踏まえると...」
※ 「まい」のスレッドの過去の会話を文脈として使うので、あやかの話は混ざらない
例3: 過去の会話を検索する
You: 全スレッドで「LINE」について検索して
→ GET /api/messages/search?query=LINE
検索結果 3件:
[まい] チバ: 「LINEは即レスしすぎないのがコツ...」
[あやか] あなた: 「LINEの頻度ってどれくらいがいい?」
[恋愛テクニック全般] チバ: 「LINE交換のタイミングは...」
!
スレッドでコンテキスト(文脈)が分離される
スレッドごとに会話が独立しているので、「あやか」のスレッドで聞いたことは「まい」のスレッドには影響しない。チバに質問するときは必ず「どのスレッドで」を指定する仕組みなので、意図しない文脈の混在(コンテキスト汚染)が起きない。スレッド名は完全に自由 — 女の子の名前、シチュエーション名、何でもOK。
たとえば「あやか」のスレッド詳細を GET /api/threads/:id で取得すると、タイトル・絵文字・ピン留め状態・メッセージ件数・最終更新日時が返ってくる。GET /api/threads/:id/messages でメッセージ履歴を取得すれば、あやかとの会話内容(自分の質問とチバの回答)が直近100件分まるごと出力される。Claude Code が自動的にこの情報を参照して、文脈を理解した上で次のアクションを提案できるようになる。
MCP ラッパーは Phase 3 で追加: REST API が完成した後、Phase 3 で MCP ツール/リソース(AIツール専用の薄い包み紙)を追加する。Claude Code は Phase 1 の時点からスキル(SKILL.md という指示書)経由で REST API を直接叩けるので、MCP を待つ必要はない。
データの保存場所
会話データの保存先として、D1(Cloudflareが提供するクラウド上のSQLiteデータベース)を新たに導入する。これまでPWAではスマホ内部(IndexedDB(ブラウザ内蔵のデータベース))にデータを保存していたが、D1を正本(データの「原本」)にすることで、Claude Code・PWA・将来のネイティブアプリなど、どこからアクセスしても同じデータを参照できるようになる。
!
なぜD1なのか
現在使っている
KV(キー・バリュー型のシンプルな保存庫)は「いつかデータが反映される」タイプで、「Aさんが書いたデータをBさんがすぐ見られる」保証がない。会話の履歴は順序が大事なので、「書いたら即座に反映される」D1のほうが適している。
セキュリティ設計
12回のCodex(OpenAIのAIレビューツール)レビューで徹底的に鍛えた安全設計。主なポイントは以下の通り。
ユーザー認証とアクセス制御
- トークン認証: 毎回のリクエストに「チケット」(Bearer トークン)を添える。サーバーは暗号化ハッシュ(元に戻せない変換)で照合するので、トークンが漏れにくい
- 行レベル制御: すべてのデータベースクエリ(問い合わせ)に「このユーザーのデータだけ」という条件を強制的に追加。他人のスレッドは絶対に見えない
- ID列挙耐性: 「他人のスレッドID」を推測して入力しても、「見つかりません」としか返さない。「権限がありません」とは言わないので、IDが存在するかどうかも漏れない
画像読み取り時の安全対策(SSRF防御)
画像URLを受け取って文字を読み取る機能では、悪意のあるURLで内部ネットワークにアクセスされないよう多層防御を施している。
- httpsのみ許可(暗号化されていない通信は拒否)
- プライベートIPアドレス(社内ネットワーク向けのアドレス)へのアクセスを全て拒否
- 画像以外のデータは受け取らない(Content-Type検証)
- 10秒のタイムアウトとサイズ上限で、大量データを送りつける攻撃を防止
実装ステップ(4フェーズ)
1
基盤構築(D1 + REST API コアエンドポイント7個)
データベースの作成、ユーザー認証、スレッド管理とチバへの質問APIを実装する。これだけで「スレッドでチバと会話する」基本体験が完成する。Claude Code からはスキル(SKILL.md)経由で即座に利用可能。
2
検索・エクスポート + スキル SKILL.md
横断検索と会話エクスポートのAPIを追加。Claude Code から REST API を叩く手順を記述したスキル(SKILL.md)も作成する。過去の会話を「あのとき何て言ってたっけ?」と探せるようになる。
3
MCP ラッパー + OCR + 権限細分化
REST API の上に MCP ツール/リソース(AIツール専用の薄い包み紙)を追加。画像文字読み取り機能も追加。トークンごとの権限細分化も行う。
4
PWA との同期(将来)
PWA(スマホアプリ)の保存先をD1に切り替えて、スマホとClaude Codeで同じ会話データを共有できるようにする。REST API なので PWA はそのまま同じエンドポイントを叩くだけ。
ポイント
Codex 12回レビュー済み: OpenAIのAIレビューツールに12ラウンド(合計39件以上の指摘を解消)のレビューを受けてLGTM(問題なし判定)を獲得。セキュリティ・データ整合性・パフォーマンスの3方面から徹底的に検証された設計。
PWAの機能をそのまま移植しない: Push通知(ブラウザ固有機能)、オフラインキュー(クライアント側の責務)、非同期プロキシ(Claude Codeでは不要)など、MCPに不向きな機能は意図的に除外している。必要な機能だけを、MCPに適した形で再設計した。
YAGNI原則: 日本語の全文検索は、Phase 1 では「部分一致検索」というシンプルな方法で始める。個人利用(数千〜数万件)なら十分な速度。データ量が増えて遅くなったらPhase 4で高度な検索方式に切り替える。