目的:このドキュメントは、Personifyで使用するすべての概念・用語を一意に定義し、 以降の ③境界決定・④UML・⑦実装 においてAIへの指示が一貫して機能することを目的とする。
⚠️ 【実装に合わせた変更点 — 2026-03-21】
Turn/Question/Answer/ChatHistoryはDBテーブルとしては廃止。チャット履歴はクライアントメモリ(Zustand)で管理し、ページリロードでリセットされる
- ペルソナ選択は「常に最低3人」から「最低1体・最大3体」に変更。Settingsページでドラッグ&ドロップまたはタップで選択
- LLMプロバイダーをOpenAIからGroq(Llama 3.3 70B)に変更
- ペルソナ設定はlocalStorageに保存
| 用語(日本語) | 用語(英語/コード上の名称) | 定義 | 混同しやすい用語 |
|---|---|---|---|
| ユーザー | User |
このアプリを利用する人。ゲストとログインユーザーの2種別が存在する | 「アカウント」とは異なる。ユーザーはアカウントを持つ前段階も含む |
| ゲスト | Guest |
アカウント登録・ログインをせずにアプリを利用しているユーザー。チャット履歴の保存・カスタムペルソナの作成はできない | 「未登録ユーザー」とは呼ばない |
| ログインユーザー | AuthenticatedUser |
アカウント登録・ログイン済みのユーザー。全機能を利用できる | 「会員」「登録ユーザー」とは呼ばない |
| アカウント | Account |
ログインユーザーが保有する、認証情報・設定・履歴を紐づける単位 | 「ユーザー」はアプリ利用者全体を指し、「アカウント」はその中のログイン済みの実体を指す |
| ペルソナ | Persona |
AIが回答する際に纏う人格・役割・キャラクターの定義。システムプロンプト・名前・イラストをセットで持つ | 「キャラクター」「エージェント」「ボット」とは呼ばない。コード上では必ず Persona を使う |
| プリセットペルソナ | PresetPersona |
アプリ側があらかじめ用意したペルソナ。全ユーザーが共通で利用できる | カスタムペルソナと区別するため、コード上では PresetPersona を使う |
| カスタムペルソナ | CustomPersona |
ログインユーザーが任意の設定で作成したペルソナ。作成者のアカウントにのみ紐づく | プリセットペルソナとコードレベルで明確に分離する |
| チャット | Chat |
ユーザーがペルソナとの一連のやり取り全体。ペルソナはSettingsページで事前に選択(最低1体・最大3体)。未設定時はプリセットから2体を自動選択。会話履歴はクライアントメモリのみで管理(DB保存なし・リロードでリセット) | 「会話」「スレッド」「セッション」とは呼ばない |
| ターン | ~~Turn~~ |
廃止。元々はチャット内の1回の質問→回答サイクルを表していたが、DB保存廃止に伴いコード上の概念としては使用しない。会話履歴はZustandの conversationHistory(ChatMessage[])でフラットに管理 |
— |
| 質問 | Question |
ユーザーが入力するテキスト。クライアントメモリ上で { role: 'user', content: string } として保持 |
「メッセージ」「プロンプト」とは呼ばない |
| 回答 | Answer |
1つのペルソナが Question に対して返すテキスト。クライアントメモリ上で { role: 'assistant', content: string } として保持 |
「レスポンス」「メッセージ」「リプライ」とは呼ばない |
| 会話履歴 | conversationHistory |
ペルソナごとの会話メッセージの配列。Zustandの Map<string, ChatMessage[]> で管理。ページリロードでリセットされる。DBには保存しない |
「ログ」「チャット履歴」とは呼ばない。旧概念の ChatHistory はDB保存前提だったため廃止 |
| レート制限 | RateLimit |
1ユーザーあたりの単位時間内のチャット実行回数の上限。APIコスト増大を防ぐためサーバーサイドで管理する | 「利用制限」とは呼ばない |
User は Guest または AuthenticatedUser のいずれか一方であるAuthenticatedUser は 1つの Account を持つAccount は 0個以上の CustomPersona を持つ~~Account は 0個以上の ChatHistory を持つ~~ → 廃止(チャット履歴はDB保存せずクライアントメモリのみ)Chat は必ず 1つ以上の Persona に紐づく(最低1体・最大3体。Settingsページで事前に選択)Chat の会話履歴は conversationHistory(Zustand Map)でペルソナごとに管理ChatMessage({ role: 'user' | 'assistant', content: string })として保持Persona は PresetPersona または CustomPersona のいずれかである