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