Flutterで健康管理アプリ (Health Management App)を開発_No.2
傍観者k
投稿日: 2026年02月25日 03:03
# API サマリー表 - クイックリファレンス
## 全 API 一覧(49 エンドポイント)
| # | 分類 | エンドポイント | メソッド | 機能 | 主な操作テーブル |
|---|------|------|------|------|----------|
| 1 | 認証 | `/auth/register` | POST | ユーザー登録 | users, user_auth, app_settings |
| 2 | 認証 | `/auth/login` | POST | ユーザーログイン | user_auth |
| 3 | 認証 | `/auth/refresh-token` | POST | トークン更新 | user_auth |
| 4 | ユーザー | `GET /users/{id}` | GET | ユーザー情報取得 | users |
| 5 | ユーザー | `PUT /users/{id}` | PUT | ユーザー情報更新 | users |
| 6 | ユーザー | `DELETE /users/{id}` | DELETE | ユーザー削除 | users(カスケード削除) |
| 7 | 服薬 | `POST /medications` | POST | 服薬記録作成 | medications |
| 8 | 服薬 | `GET /medications` | GET | 服薬一覧取得 | medications |
| 9 | 服薬 | `PUT /medications/{id}` | PUT | 服薬記録更新 | medications |
| 10 | 服薬 | `DELETE /medications/{id}` | DELETE | 服薬記録削除 | medications |
| 11 | 服薬 | `GET /common-medications` | GET | 常用薬一覧取得 | common_medications |
| 12 | 服薬設定 | `GET /medication-settings?date=yyyy-MM-dd` | GET | 当日有効な服薬設定取得 | medication_settings |
| 13 | 服薬設定 | `POST /medication-settings` | POST | 服薬設定作成 | medication_settings |
| 14 | 血圧設定 | `GET /blood-pressure-rules?date=yyyy-MM-dd` | GET | 当日有効な血圧測定ルール取得 | blood_pressure_measurement_rules |
| 15 | 血圧設定 | `POST /blood-pressure-rules` | POST | 血圧測定ルール作成 | blood_pressure_measurement_rules |
| 16 | 血圧設定 | `GET /blood-pressure-rules/{id}` | GET | 血圧測定ルール詳細取得 | blood_pressure_measurement_rules |
| 17 | 血圧設定 | `PUT /blood-pressure-rules/{id}` | PUT | 血圧測定ルール更新 | blood_pressure_measurement_rules |
| 18 | 血圧設定 | `DELETE /blood-pressure-rules/{id}` | DELETE | 血圧測定ルール削除 | blood_pressure_measurement_rules |
| 14 | 血圧 | `POST /blood-pressures` | POST | 血圧記録作成 | blood_pressures |
| 15 | 血圧 | `GET /blood-pressures` | GET | 血圧一覧取得 | blood_pressures |
| 16 | 血圧 | `GET /blood-pressures/statistics` | GET | 血圧統計取得 | blood_pressure_stats |
| 15 | 気分 | `POST /moods` | POST | 気分記録作成 | moods |
| 16 | 気分 | `GET /moods` | GET | 気分一覧取得 | moods |
| 17 | 気分 | `GET /moods/statistics` | GET | 気分統計取得 | mood_stats |
| 18 | 気分設定 | `GET /mood-rules?date=yyyy-MM-dd` | GET | 当日有効な気分記録ルール取得 | mood_recording_rules |
| 19 | 気分設定 | `POST /mood-rules` | POST | 気分記録ルール作成 | mood_recording_rules |
| 20 | 気分設定 | `GET /mood-rules/{id}` | GET | 気分記録ルール詳細取得 | mood_recording_rules |
| 21 | 気分設定 | `PUT /mood-rules/{id}` | PUT | 気分記録ルール更新 | mood_recording_rules |
| 22 | 気分設定 | `DELETE /mood-rules/{id}` | DELETE | 気分記録ルール削除 | mood_recording_rules |
| 18 | 受診 | `POST /hospital-visits` | POST | 受診記録作成 | hospital_visits |
| 19 | 受診 | `GET /hospital-visits` | GET | 受診一覧取得 | hospital_visits |
| 20 | 受診 | `PUT /hospital-visits/{id}` | PUT | 受診記録更新 | hospital_visits |
| 21 | 受診 | `DELETE /hospital-visits/{id}` | DELETE | 受診記録削除 | hospital_visits |
| 22 | 予約 | `POST /hospital-appointments` | POST | 予約作成 | hospital_appointments |
| 23 | 予約 | `GET /hospital-appointments` | GET | 予約一覧取得 | hospital_appointments |
| 24 | 予約 | `PUT /hospital-appointments/{id}` | PUT | 予約更新 | hospital_appointments |
| 25 | 予約 | `DELETE /hospital-appointments/{id}` | DELETE | 予約キャンセル | hospital_appointments |
| 26 | 常用病院 | `POST /favorite-hospitals` | POST | 常用病院追加 | favorite_hospitals |
| 27 | 常用病院 | `GET /favorite-hospitals` | GET | 常用病院一覧取得 | favorite_hospitals |
| 28 | 常用病院 | `PUT /favorite-hospitals/{id}` | PUT | 常用病院更新 | favorite_hospitals |
| 29 | 常用病院 | `DELETE /favorite-hospitals/{id}` | DELETE | 常用病院削除 | favorite_hospitals |
| 30 | 設定 | `GET /app-settings` | GET | アプリ設定取得 | app_settings |
| 31 | 設定 | `PUT /app-settings` | PUT | アプリ設定更新 | app_settings |
| 32 | フィードバック | `POST /feedback` | POST | フィードバック送信 | user_feedback |
| 33 | フィードバック | `GET /feedback` | GET | フィードバック一覧取得 | user_feedback |
| 34 | 統計 | `GET /statistics/today` | GET | 本日サマリー取得 | today_summary |
| 35 | 統計 | `GET /statistics/period` | GET | 週次/月次統計取得 | blood_pressure_stats, mood_stats |
| 36 | 同期 | `POST /sync-logs` | POST | 同期ログ記録 | sync_logs |
| 37 | 同期 | `GET /sync-logs` | GET | 同期状態取得 | sync_logs |
---
## データベーステーブル利用統計
| テーブル名 | 作成 | 読込 | 更新 | 削除 | 関連 API 数 |
|------|------|------|------|------|----------|
| users | 1 | 1 | 1 | 1 | 3 |
| user_auth | 1 | 3 | 1 | - | 3 |
| medications | 1 | 1 | 1 | 1 | 4 |
| medication_settings | 1 | 1 | 0 | 0 | 2 |
| blood_pressure_measurement_rules | 1 | 2 | 1 | 1 | 5 |
| blood_pressures | 1 | 2 | - | - | 3 |
| mood_recording_rules | 1 | 2 | 1 | 1 | 5 |
| moods | 1 | 2 | - | - | 3 |
| hospital_visits | 1 | 1 | 1 | 1 | 4 |
| hospital_appointments | 1 | 1 | 1 | 1 | 4 |
| favorite_hospitals | 1 | 1 | 1 | 1 | 4 |
| app_settings | 1 | 1 | 1 | - | 2 |
| user_feedback | 1 | 1 | - | - | 2 |
| common_medications | - | 1 | - | - | 1 |
| sync_logs | 1 | 1 | - | - | 2 |
| blood_pressure_stats(View) | - | 3 | - | - | 1 |
| mood_stats(View) | - | 2 | - | - | 1 |
| today_summary(View) | - | 1 | - | - | 1 |
---
## 操作種別ごとの分類
### 作成操作(C - Create)- 14 API
```
POST /auth/register
POST /medications
POST /medication-settings
POST /blood-pressure-rules
POST /blood-pressures
POST /mood-rules
POST /moods
POST /hospital-visits
POST /hospital-appointments
POST /favorite-hospitals
POST /feedback
POST /sync-logs
```
### 読込操作(R - Read)- 21 API
```
GET /users/{id}
GET /medications
GET /common-medications
GET /medication-settings?date=yyyy-MM-dd
GET /blood-pressure-rules?date=yyyy-MM-dd
GET /blood-pressure-rules/{id}
GET /blood-pressures
GET /blood-pressures/statistics
GET /mood-rules?date=yyyy-MM-dd
GET /mood-rules/{id}
GET /moods
GET /moods/statistics
GET /hospital-visits
GET /hospital-appointments
GET /favorite-hospitals
GET /app-settings
GET /feedback
GET /statistics/today
GET /statistics/period
GET /sync-logs
POST /auth/login
POST /auth/refresh-token
```
### 更新操作(U - Update)- 9 API
```
PUT /users/{id}
PUT /medications/{id}
PUT /blood-pressure-rules/{id}
PUT /mood-rules/{id}
PUT /hospital-visits/{id}
PUT /hospital-appointments/{id}
PUT /favorite-hospitals/{id}
PUT /app-settings
```
### 削除操作(D - Delete)- 8 API
```
DELETE /users/{id}
DELETE /medications/{id}
DELETE /blood-pressure-rules/{id}
DELETE /mood-rules/{id}
DELETE /hospital-visits/{id}
DELETE /hospital-appointments/{id}
DELETE /favorite-hospitals/{id}
```
---
## 機能モジュールごとの分類
### 認証モジュール(3 API)
- 登録、ログイン、トークン更新
### ユーザー管理(3 API)
- 取得、更新、削除
### 服薬管理(7 API)
- 記録 CRUD + 常用薬一覧 + 服薬設定(当日取得/作成)
### 血圧管理(8 API)
- 測定ルール CRUD(当日取得を含む)+ 記録、一覧、統計
**バックエンド補完推奨(現行フロント呼び出しとの整合)**
```php
Route::prefix('blood-pressures')->group(function () {
Route::post('/', [BloodPressureController::class, 'store']);
Route::get('/', [BloodPressureController::class, 'index']);
Route::get('/statistics', [BloodPressureController::class, 'statistics']);
// 編集・削除シナリオに必要
Route::get('/{id}', [BloodPressureController::class, 'show']);
Route::put('/{id}', [BloodPressureController::class, 'update']);
Route::delete('/{id}', [BloodPressureController::class, 'destroy']);
});
```
> 補足:現在 app_health クライアントは `PUT /blood-pressures/{id}` と `DELETE /blood-pressures/{id}` を呼び出しています。
### 気分管理(8 API)
- 記録ルール CRUD(当日取得を含む)+ 記録、一覧、統計
### 受診管理(4 API)
- 記録 CRUD
### 予約管理(4 API)
- 予約 CRUD
### 常用病院管理(4 API)
- 病院 CRUD
### 設定管理(2 API)
- 取得、更新
### フィードバック管理(2 API)
- 作成、取得
### 統計モジュール(2 API)
- 本日サマリー、週次/月次統計
### データ同期(2 API)
- 記録、同期状態取得
---
## データベース構成チェックリスト
- [x] users(ユーザー基本情報)
- [x] user_auth(認証情報)
- [x] medications(服薬記録)
[x] medication_settings(服薬設定)✅ **新規追加**
[x] blood_pressure_measurement_rules(血圧測定ルール)✅ **新規追加**
[x] mood_recording_rules(気分記録ルール)✅ **新規追加**
[x] hospital_visits(受診記録)✅ **新規追加**
[x] hospital_appointments(予約記録)✅ **新規追加**
[x] favorite_hospitals(常用病院)✅ **新規追加**
[x] user_feedback(ユーザーフィードバック)✅ **新規追加**
- [x] favorite_hospitals(常用病院)✅ **追加**
- [x] common_medications(常用薬)
- [x] weight_records(体重記録)
- [x] app_settings(アプリ設定)
- [x] user_feedback(ユーザーフィードバック)✅ **追加**
- [x] sync_logs(同期ログ)
**追加テーブルの説明:**
- `medication_settings`:服薬設定(時間帯、期間、リマインド)
- `blood_pressure_measurement_rules`:血圧測定ルール(測定時間、期間、リマインド)
- `mood_recording_rules`:気分記録ルール(記録時間、期間、リマインド)
- `hospital_visits`:受診管理(診断、治療、処方など)
- `hospital_appointments`:予約管理(予約日時、状態など)
- `favorite_hospitals`:常用病院管理(病院のクイック選択)
- `user_feedback`:ユーザーフィードバック収集(機能提案、バグ報告)
---
## デプロイ推奨
### 開発環境初期化
```bash
mysql -u root -p < init.sql
```
### インデックス作成後の確認
```sql
SELECT * FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = 'health_app';
```
### ユーザーと権限作成
```sql
-- アプリ用ユーザー
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'strong_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON health_app.* TO 'app_user'@'localhost';
-- 読み取り専用ユーザー(レポート)
CREATE USER 'report_user'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT ON health_app.* TO 'report_user'@'localhost';
```
---
## 性能最適化の提案
1. **統計情報の定期更新**
```sql
ANALYZE TABLE medications, blood_pressures, moods;
```
2. **同期ログの定期クリーンアップ**
```sql
DELETE FROM sync_logs WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);
```
3. **バックアップ戦略**
```sql
-- 日次バックアップ
mysqldump -u root -p health_app > health_app_$(date +%Y%m%d).sql
```
---
**最終更新:** 2026-02-19
**総 API 数:** 49
**データベーステーブル数:** 14(ビューを含む)
**補助テーブル数:** 8
**ビュー数:** 3
最終更新: 2026年03月06日 05:26