📋 前提条件
ℹ️ 事前準備
- Firebase Console でプロジェクトを開いている
- Authentication でユーザーを作成済み
- ユーザーのUID(User ID)をメモしている
📝 UID(User ID)の確認方法
-
Firebase Console を開く
https://console.firebase.google.com/ -
Authentication → Users タブ
左メニューから「Authentication」をクリック
上部の「Users」タブを選択 -
ユーザー一覧を確認
作成したユーザー(例: patient@test.com)の行が表示される -
UIDをコピー
ユーザーの行にある「User UID」の値をコピー
例: abc123def456ghi789...
🔥 手順1: Firestoreの準備
Firestoreが未作成の場合
-
Firestore Database を開く
Firebase Console 左メニュー → 「Firestore Database」をクリック -
Create database ボタンをクリック
画面中央の「Create database」ボタンをクリック -
ロケーション選択
推奨 asia-northeast1 (Tokyo)
「Next」をクリック -
セキュリティルール選択
開発用 Start in test mode
「Enable」をクリック
⚠️ セキュリティルールについて
「Start in test mode」は誰でもデータを読み書きできる状態です。開発・テスト専用です。本番運用時は必ずセキュリティルールを設定してください。
🗂️ 手順2: usersコレクション作成
2-1. コレクション作成
-
Start collection ボタンをクリック
Firestoreの画面で「+ Start collection」ボタンをクリック -
Collection ID を入力
ポップアップが表示される
┌────────────────────────────┐ │ Start a collection │ ├────────────────────────────┤ │ Collection ID │ │ ┌────────────────────────┐ │ │ │ users │ │ ← ここに「users」と入力 │ └────────────────────────┘ │ │ │ │ [Cancel] [Next] │ └────────────────────────────┘
-
「users」と入力して Next
Collection ID にusersと入力
「Next」ボタンをクリック
👤 手順3: 患者ドキュメント作成
3-1. ドキュメントID入力
✅ 重要
Document ID には、Authenticationでメモした患者のUIDを入力します。
┌────────────────────────────────────┐ │ Add its first document │ ├────────────────────────────────────┤ │ Document ID │ │ ┌────────────────────────────────┐ │ │ │ [患者のUIDを貼り付け] │ │ ← AuthenticationのUIDをコピペ │ └────────────────────────────────┘ │ └────────────────────────────────────┘
3-2. フィールド追加(患者用)
以下の順番で1つずつフィールドを追加します。「+ Add field」をクリックするごとに新しい行が追加されます。
| 順番 | Field(フィールド名) | Type(型) | Value(値) |
|---|---|---|---|
| ① | name |
string | テスト患者 |
| ② | email |
string | patient@test.com |
| ③ | age |
number | 65 |
| ④ | role |
string | patient |
| ⑤ | therapistId |
string | (空欄のまま) |
| ⑥ | dailyGoal |
number | 8000 |
| ⑦ | createdAt |
timestamp | (自動入力される) |
| ⑧ | updatedAt |
timestamp | (自動入力される) |
⚠️ Type(型)の選択に注意
age,dailyGoal→ numbercreatedAt,updatedAt→ timestamp- その他 → string
3-3. 詳細な入力手順
-
① name フィールド
Field:name
Type:string(デフォルト)
Value:テスト患者 -
「+ Add field」をクリック
新しい行が追加される -
② email フィールド
Field:email
Type:string
Value:patient@test.com - 「+ Add field」をクリック
-
③ age フィールド
Field:age
Type:number← プルダウンで選択
Value:65 -
④〜⑧ も同様に追加
上記の表を参照して、すべてのフィールドを追加 -
Save ボタンをクリック
画面下部の「Save」ボタンをクリック
✅ 完了
患者ドキュメントが作成されました。Firestoreの画面に戻り、usersコレクション内に1件のドキュメントが表示されます。
👨⚕️ 手順4: セラピストドキュメント作成
4-1. 新しいドキュメント追加
-
Add document をクリック
Firestore画面のusersコレクション内で「+ Add document」をクリック -
Document ID を入力
AuthenticationでメモしたセラピストのUIDを貼り付け
4-2. フィールド追加(セラピスト用)
| 順番 | Field(フィールド名) | Type(型) | Value(値) |
|---|---|---|---|
| ① | name |
string | テストセラピスト |
| ② | email |
string | therapist@test.com |
| ③ | age |
number | 35 |
| ④ | role |
string | therapist |
| ⑤ | createdAt |
timestamp | (自動入力される) |
| ⑥ | updatedAt |
timestamp | (自動入力される) |
⚠️ role フィールドは完全一致必須
role の値は therapist と正確に入力してください。
- ❌ Therapist(大文字)
- ❌ "therapist"(引用符付き)
- ✅ therapist(小文字、引用符なし)
-
上記の表に従ってフィールドを追加
「+ Add field」を使って1つずつ追加 -
Save ボタンをクリック
すべてのフィールドを入力したら保存
✅ 完成イメージ
Firestoreの users コレクションに以下のように2つのドキュメントが表示されます:
users (コレクション)
├── abc123def456... (患者のUID)
│ ├── name: "テスト患者"
│ ├── email: "patient@test.com"
│ ├── age: 65
│ ├── role: "patient"
│ ├── therapistId: ""
│ ├── dailyGoal: 8000
│ ├── createdAt: [Timestamp]
│ └── updatedAt: [Timestamp]
│
└── xyz789ghi012... (セラピストのUID)
├── name: "テストセラピスト"
├── email: "therapist@test.com"
├── age: 35
├── role: "therapist"
├── createdAt: [Timestamp]
└── updatedAt: [Timestamp]
🔍 確認方法
Firestore で確認
-
Firebase Console → Firestore Database
左メニューから「Firestore Database」を開く -
users コレクションを展開
2つのドキュメント(患者とセラピスト)が表示される -
各ドキュメントをクリック
フィールドの内容を確認
アプリでログインテスト
📱 患者アプリ
cd C:\Users\kawag\work\rehab_monitoring_project
C:\flutter\bin\flutter.bat run -d chrome
Email: patient@test.com
Password: Patient123!
👨⚕️ セラピストアプリ
cd C:\Users\kawag\work\rehab_monitoring_project
C:\flutter\bin\flutter.bat run -d chrome --target=lib/main_therapist.dart
Email: therapist@test.com
Password: Therapist123!
❌ よくあるエラー
エラー1: "Permission denied"
原因
Firestoreのセキュリティルールが厳しすぎる
解決策- Firestore → 「Rules」タブを開く
- 以下のルールに変更(テスト用):
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
- 「Publish」ボタンをクリック
エラー2: "User not found"
原因
FirestoreのDocument IDとAuthenticationのUIDが一致していない
解決策- FirestoreのDocument IDがAuthenticationのUIDと完全一致しているか確認
- UIDをコピペする際にスペースが入っていないか確認
- 前後に余計な文字がないか確認
エラー3: roleフィールドが効いていない
原因
roleの値が正確でない(大文字小文字、スペース、引用符など)
解決策patientまたはtherapistと完全一致させる- すべて小文字で入力
- 前後にスペースが入っていないか確認
- 引用符(" や ')を付けない