Skip to content

Commit f797451

Browse files
authored
Merge pull request #194 from jphacks/ouita
dd
2 parents 64c26c7 + 5bbf0b2 commit f797451

9 files changed

Lines changed: 1794 additions & 795 deletions

File tree

docs/architecture.md

Lines changed: 531 additions & 0 deletions
Large diffs are not rendered by default.

docs/diagrams/README.md

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
# アーキテクチャ図をスライドに貼る方法
2+
3+
このディレクトリには恋AIプロジェクトのMermaid図が含まれています。以下の方法でスライドに貼り付けることができます。
4+
5+
## ファイル一覧
6+
7+
- `overall-architecture.mmd`: 全体アーキテクチャ図
8+
- `conversation-flow.mmd`: 会話フローシーケンス図
9+
- `tech-stack.mmd`: 技術スタック図
10+
11+
## 方法1: Mermaid Live Editor (推奨)
12+
13+
最も簡単で高品質な方法です。
14+
15+
1. **Mermaid Live Editorを開く**: https://mermaid.live/
16+
2. 該当する`.mmd`ファイルの内容をコピー
17+
3. エディタに貼り付け
18+
4. 右上の「Actions」→「Export」から形式を選択:
19+
- **SVG**: ベクター形式、拡大しても劣化しない(最推奨)
20+
- **PNG**: 高品質ラスター画像、背景透過可能
21+
- **PDF**: スライドソフトによっては直接貼り付け可能
22+
5. ダウンロードしてスライドに挿入
23+
24+
### 推奨設定
25+
- **PowerPoint/Keynote**: SVGまたはPNG(高解像度)
26+
- **Google Slides**: PNGまたはSVG
27+
- **LaTeX Beamer**: PDF
28+
29+
## 方法2: VS Code拡張機能
30+
31+
リアルタイムプレビューしながら作業できます。
32+
33+
### 必要な拡張機能
34+
- **Markdown Preview Mermaid Support** (bierner.markdown-mermaid)
35+
- **Mermaid Editor** (tomoyukim.vscode-mermaid-editor)
36+
37+
### 手順
38+
1. VS Codeで該当の`.mmd`ファイルを開く
39+
2. コマンドパレット(Ctrl/Cmd+Shift+P)→「Mermaid Editor: Preview」
40+
3. プレビュー画面で右クリック→「Copy Image」または「Export to PNG/SVG」
41+
4. スライドに貼り付け
42+
43+
## 方法3: Markdown経由でプレビュー
44+
45+
1. [architecture.md](../architecture.md)をVS Codeで開く
46+
2. プレビューモード(Ctrl/Cmd+Shift+V)で表示
47+
3. 図を右クリック→「画像をコピー」
48+
4. スライドに貼り付け
49+
50+
※この方法は解像度が低い場合があるため、重要なプレゼンには方法1を推奨
51+
52+
## 方法4: オンラインツール
53+
54+
### Mermaid Chart (https://www.mermaidchart.com/)
55+
- アカウント登録が必要
56+
- 高度な編集機能とチーム共有機能あり
57+
- PNG/SVG/PDFエクスポート可能
58+
59+
### Kroki (https://kroki.io/)
60+
- アカウント不要
61+
- URLにMermaidコードを埋め込んで画像生成
62+
- 例: `https://kroki.io/mermaid/svg/[base64エンコードされたコード]`
63+
64+
## 方法5: スライドソフト内蔵のMermaidサポート
65+
66+
一部のスライドツールはMermaidを直接サポートしています。
67+
68+
### Slidev (Markdown製スライド)
69+
```markdown
70+
```mermaid
71+
graph TB
72+
...
73+
```
74+
```
75+
76+
### Reveal.js
77+
```html
78+
<section>
79+
<pre class="mermaid">
80+
graph TB
81+
...
82+
</pre>
83+
</section>
84+
```
85+
86+
### Marp (Markdown製スライド)
87+
```markdown
88+
---
89+
marp: true
90+
---
91+
92+
# スライドタイトル
93+
94+
```mermaid
95+
graph TB
96+
...
97+
```
98+
```
99+
100+
## トラブルシューティング
101+
102+
### 日本語が文字化けする
103+
- Mermaid Live Editorを使用(フォント対応済み)
104+
- エクスポート時にフォント埋め込みオプションを有効化
105+
106+
### 図が大きすぎる/小さすぎる
107+
- Mermaid Live Editorで「Configuration」→「Scale」を調整
108+
- SVGの場合、スライド側で自由にリサイズ可能
109+
110+
### 色を変更したい
111+
- `.mmd`ファイルの`classDef`部分を編集
112+
- または、Mermaid Live Editorの「Configuration」→「Theme」で変更
113+
114+
## 推奨ワークフロー
115+
116+
プレゼン用途別の推奨方法:
117+
118+
| 用途 | 推奨方法 | フォーマット |
119+
|------|---------|------------|
120+
| 社内プレゼン | Mermaid Live Editor | PNG (透過背景) |
121+
| 学会発表 | Mermaid Live Editor | SVG または PDF |
122+
| ポスター | Mermaid Live Editor | SVG (高解像度) |
123+
| ドキュメント | Markdown内埋め込み | Mermaid コード |
124+
| Webサイト | Mermaid.js直接レンダリング | Mermaid コード |
125+
126+
## 参考リンク
127+
128+
- Mermaid公式ドキュメント: https://mermaid.js.org/
129+
- Mermaid Live Editor: https://mermaid.live/
130+
- Mermaid構文チートシート: https://jojozhuang.github.io/tutorial/mermaid-cheat-sheet/
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
sequenceDiagram
2+
participant User as ユーザー
3+
participant Frontend as フロントエンド<br/>(Next.js)
4+
participant Backend as バックエンド<br/>(Hono/Workers)
5+
participant ElevenLabs as ElevenLabs API
6+
participant Gemini as Gemini 2.5 Flash
7+
participant DB as PostgreSQL
8+
participant Storage as Supabase Storage
9+
10+
User->>Frontend: 音声入力
11+
Frontend->>Frontend: AudioRecorder録音
12+
Frontend->>Backend: POST /api/stt
13+
Backend->>ElevenLabs: 音声→テキスト変換
14+
ElevenLabs-->>Backend: テキスト
15+
Backend-->>Frontend: 認識テキスト
16+
17+
Frontend->>Backend: POST /api/conversation/generate
18+
Note over Backend: 親密度システム判定<br/>(shy/friendly/open)
19+
Backend->>Gemini: AI応答生成リクエスト<br/>(persona, シチュエーション含む)
20+
Gemini-->>Backend: AI応答テキスト
21+
Backend-->>Frontend: AI応答
22+
23+
Frontend->>Backend: POST /api/tts
24+
Backend->>ElevenLabs: テキスト→音声変換
25+
ElevenLabs-->>Backend: 音声ファイル
26+
Backend->>Storage: 音声ファイル保存
27+
Storage-->>Backend: 保存完了
28+
Backend-->>Frontend: 音声URL
29+
30+
Frontend->>Frontend: Web Audio API<br/>周波数分析(FFT)
31+
Frontend->>Frontend: VRMアバター<br/>リップシンク制御
32+
33+
par 表情分析
34+
Frontend->>Frontend: MediaPipe<br/>478点ランドマーク検出
35+
Frontend->>Frontend: 笑顔・視線分析
36+
end
37+
38+
Frontend->>Backend: POST /api/sessions/:id/messages
39+
Backend->>DB: メッセージ保存
40+
41+
Frontend->>Backend: POST /api/sessions/:id/gestures
42+
Backend->>DB: GestureMetrics保存
43+
44+
User->>Frontend: セッション終了
45+
Frontend->>Backend: POST /api/conversation/feedback
46+
Backend->>Gemini: フィードバック生成<br/>(会話履歴+ジェスチャーメトリクス)
47+
Gemini-->>Backend: 評価・改善点
48+
Backend->>DB: Feedback保存
49+
Backend-->>Frontend: フィードバック
50+
Frontend->>User: フィードバック表示
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
graph TB
2+
subgraph "クライアント層"
3+
User[ユーザー]
4+
Partner[パートナー]
5+
Camera[カメラ]
6+
Mic[マイク]
7+
end
8+
9+
subgraph "フロントエンド - Next.js 15 on Vercel"
10+
subgraph "主要ページ"
11+
SimPage[/simulation<br/>AI会話シミュレーション]
12+
FeedbackPage[/feedback<br/>フィードバック表示]
13+
PracticePage[/practice<br/>練習予約]
14+
PartnerPage[/partner<br/>パートナーダッシュボード]
15+
SessionPage[/session<br/>セッション詳細]
16+
TestCallPage[/test-call<br/>通話テスト]
17+
end
18+
19+
subgraph "コアフック"
20+
UseConversation[useConversation<br/>会話管理]
21+
UseFacialAnalysis[useFacialAnalysis<br/>MediaPipe表情分析]
22+
UseLipSync[useLipSync<br/>Web Audio APIリップシンク]
23+
UseVRM[useVRM<br/>VRM制御]
24+
UseAgoraCall[useAgoraCall<br/>Agoraビデオ通話]
25+
end
26+
27+
subgraph "3D/UI層"
28+
VRMAvatar[VRMアバター<br/>React Three Fiber]
29+
MediaPipe[MediaPipe<br/>478点顔ランドマーク]
30+
AudioRecorder[AudioRecorder<br/>音声録音]
31+
end
32+
end
33+
34+
subgraph "バックエンド - Hono on Cloudflare Workers"
35+
subgraph "APIルート"
36+
SessionsAPI[/api/sessions<br/>セッション管理]
37+
ConversationAPI[/api/conversation<br/>AI会話生成]
38+
FeedbackAPI[/api/feedback<br/>フィードバック生成]
39+
SpeechAPI[/api/stt, /api/tts<br/>音声処理]
40+
AgoraAPI[/api/agora/token<br/>トークン生成]
41+
PartnersAPI[/api/partners<br/>パートナー管理]
42+
AuthAPI[/api/auth<br/>Better Auth]
43+
end
44+
45+
subgraph "サービス層"
46+
ConversationService[conversation.ts<br/>ビジネスロジック]
47+
AIClient[ai-client.ts<br/>Gemini APIクライアント]
48+
STTService[stt.ts<br/>STT/TTS処理]
49+
end
50+
end
51+
52+
subgraph "データベース層 - Supabase"
53+
PostgreSQL[(PostgreSQL)]
54+
Storage[(Supabase Storage<br/>音声ファイル)]
55+
end
56+
57+
subgraph "外部サービス"
58+
Gemini[Google Gemini 2.5 Flash<br/>AI会話・フィードバック]
59+
ElevenLabs[ElevenLabs API<br/>TTS/STT]
60+
Agora[Agora RTC<br/>ビデオ通話]
61+
end
62+
63+
subgraph "データモデル - Prisma"
64+
Conversation[Conversation<br/>会話セッション]
65+
Message[Message<br/>メッセージ履歴]
66+
Feedback[Feedback<br/>フィードバック]
67+
GestureMetrics[GestureMetrics<br/>表情・視線データ]
68+
HumanPartnerSession[HumanPartnerSession<br/>人間パートナーセッション]
69+
HumanPartnerFeedback[HumanPartnerFeedback<br/>パートナーフィードバック]
70+
PracticeSlot[PracticeSlot<br/>予約枠]
71+
UserModel[User<br/>ユーザー]
72+
end
73+
74+
%% クライアント → フロントエンド
75+
User --> SimPage
76+
User --> FeedbackPage
77+
User --> PracticePage
78+
Partner --> PartnerPage
79+
Camera --> MediaPipe
80+
Mic --> AudioRecorder
81+
82+
%% フロントエンド内部フロー
83+
SimPage --> UseConversation
84+
SimPage --> UseFacialAnalysis
85+
SimPage --> UseVRM
86+
UseConversation --> AudioRecorder
87+
UseFacialAnalysis --> MediaPipe
88+
UseVRM --> VRMAvatar
89+
UseLipSync --> VRMAvatar
90+
91+
TestCallPage --> UseAgoraCall
92+
SessionPage --> UseAgoraCall
93+
94+
%% フロントエンド → バックエンド
95+
UseConversation --> SpeechAPI
96+
UseConversation --> ConversationAPI
97+
FeedbackPage --> FeedbackAPI
98+
PracticePage --> PartnersAPI
99+
PartnerPage --> PartnersAPI
100+
UseAgoraCall --> AgoraAPI
101+
SimPage --> SessionsAPI
102+
103+
%% バックエンド内部フロー
104+
ConversationAPI --> ConversationService
105+
FeedbackAPI --> ConversationService
106+
ConversationService --> AIClient
107+
SpeechAPI --> STTService
108+
109+
%% バックエンド → 外部サービス
110+
AIClient --> Gemini
111+
STTService --> ElevenLabs
112+
AgoraAPI --> Agora
113+
114+
%% バックエンド → データベース
115+
SessionsAPI --> PostgreSQL
116+
ConversationService --> PostgreSQL
117+
STTService --> Storage
118+
PartnersAPI --> PostgreSQL
119+
AuthAPI --> PostgreSQL
120+
121+
%% データモデルリレーション
122+
Conversation --> Message
123+
Conversation --> Feedback
124+
Conversation --> GestureMetrics
125+
HumanPartnerSession --> HumanPartnerFeedback
126+
HumanPartnerSession --> PracticeSlot
127+
UserModel --> HumanPartnerSession
128+
129+
%% スタイリング
130+
classDef frontend fill:#61dafb,stroke:#333,stroke-width:2px,color:#000
131+
classDef backend fill:#f39c12,stroke:#333,stroke-width:2px,color:#000
132+
classDef database fill:#2ecc71,stroke:#333,stroke-width:2px,color:#000
133+
classDef external fill:#e74c3c,stroke:#333,stroke-width:2px,color:#fff
134+
classDef model fill:#9b59b6,stroke:#333,stroke-width:2px,color:#fff
135+
136+
class SimPage,FeedbackPage,PracticePage,PartnerPage,SessionPage,TestCallPage,UseConversation,UseFacialAnalysis,UseLipSync,UseVRM,UseAgoraCall,VRMAvatar,MediaPipe,AudioRecorder frontend
137+
class SessionsAPI,ConversationAPI,FeedbackAPI,SpeechAPI,AgoraAPI,PartnersAPI,AuthAPI,ConversationService,AIClient,STTService backend
138+
class PostgreSQL,Storage database
139+
class Gemini,ElevenLabs,Agora external
140+
class Conversation,Message,Feedback,GestureMetrics,HumanPartnerSession,HumanPartnerFeedback,PracticeSlot,UserModel model

docs/diagrams/tech-stack.mmd

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
graph LR
2+
subgraph "フロントエンド技術"
3+
NextJS[Next.js 15<br/>React 19]
4+
R3F[React Three Fiber<br/>Three.js]
5+
VRM[@pixiv/three-vrm<br/>VRMモデル]
6+
MediaPipeLib[MediaPipe<br/>顔分析]
7+
WebAPIs[Web APIs<br/>Speech/Audio]
8+
Agora1[Agora RTC SDK]
9+
end
10+
11+
subgraph "バックエンド技術"
12+
Hono[Hono Framework]
13+
Workers[Cloudflare Workers]
14+
ZodOpenAPI[@hono/zod-openapi]
15+
BetterAuth[Better Auth]
16+
end
17+
18+
subgraph "データ層"
19+
Prisma[Prisma ORM]
20+
PrismaAccelerate[Prisma Accelerate]
21+
Supabase[Supabase<br/>PostgreSQL + Storage]
22+
end
23+
24+
subgraph "AI/外部サービス"
25+
Gemini2[Google Gemini<br/>2.5 Flash]
26+
ElevenLabs2[ElevenLabs<br/>TTS/STT]
27+
Agora2[Agora RTC]
28+
end
29+
30+
NextJS --> R3F
31+
R3F --> VRM
32+
NextJS --> MediaPipeLib
33+
NextJS --> WebAPIs
34+
NextJS --> Agora1
35+
36+
Hono --> Workers
37+
Hono --> ZodOpenAPI
38+
Hono --> BetterAuth
39+
40+
Hono --> Prisma
41+
Prisma --> PrismaAccelerate
42+
PrismaAccelerate --> Supabase
43+
NextJS --> Prisma
44+
45+
Hono --> Gemini2
46+
Hono --> ElevenLabs2
47+
Hono --> Agora2

0 commit comments

Comments
 (0)