ソフトウェア要求仕様書 (SRS)
sounya — ペット健康管理アプリケーション
| 項目 | 内容 |
|---|---|
| ドキュメントバージョン | 0.1.0 (Draft) |
| 作成日 | 2026-02-12 |
| 規格準拠 | IEEE 830-1998 |
| ステータス | 概要レベル(段階的に詳細化予定) |
目次
1. はじめに
1.1 目的
本ドキュメントは、ペット健康管理アプリケーション「sounya」のソフトウェア要求仕様を定義する。本書はIEEE 830-1998に準拠し、開発チーム・ステークホルダー間で要件の共通認識を確立することを目的とする。
現在は概要レベルとして主要機能と全体像を定義し、開発の進行に伴い各セクションを段階的に詳細化する。
1.2 スコープ
sounya は、ペット(初期フェーズでは猫)の健康情報を一元管理するアプリケーションである。
本システムは以下の4つのコンポーネントから構成される:
| コンポーネント | 概要 | 対象ユーザー |
|---|---|---|
| サーバー (API) | バックエンド REST API | - |
| Web 管理画面 | 運用管理パネル | 運用担当者 |
| Web (PWA) | プログレッシブ Web アプリ | 飼い主 |
| Flutter アプリ | モバイルネイティブアプリ | 飼い主 |
スコープ内:
- 猫の健康管理機能(体重・食事・通院・ワクチン・症状・投薬)
- 飼い主向けのペット情報管理
- 家族間のデータ共有
- 通知・リマインド機能
- 運用管理画面
スコープ外(将来検討):
- 猫以外のペット対応(犬、小動物など)
- 獣医・動物病院スタッフ向け機能
- 収益化機能(課金・サブスクリプション)
- 外部サービス連携(動物病院システム等)
1.3 用語定義・略語
| 用語 | 定義 |
|---|---|
| PWA | Progressive Web App。ブラウザ上で動作し、ネイティブアプリに近い体験を提供する Web アプリケーション |
| SRS | Software Requirements Specification(ソフトウェア要求仕様書) |
| マジックリンク | メールで送信される認証用の一時的なログインリンク(現時点では採用せず、6桁ワンタイムコード方式を採用) |
| ワンタイムコード | メールで送信される6桁の認証コード。有効期限は10分 |
| ペットオーナー | ペットの飼い主。本システムの主要エンドユーザー |
| 家族メンバー | ペットオーナーによって招待され、同一ペットのデータを共有するユーザー |
| 運用担当者 | 管理画面を通じてシステムを運用・管理するスタッフ |
1.4 参考文献
- IEEE Std 830-1998 — IEEE Recommended Practice for Software Requirements Specifications
- IEEE Std 29148-2018 — Systems and software engineering — Life cycle processes — Requirements engineering
- RFC 9457 — Problem Details for HTTP APIs(エラーレスポンス形式)
1.5 概要
本書のセクション2では製品の全体像、セクション3では具体的な要件を記述する。現在は概要レベルの記述であり、各セクションは開発フェーズの進行に合わせて詳細化される。
2. 全体説明
2.1 製品の位置づけ
sounya は独立した新規プロダクトである。外部システムとの連携は初期フェーズでは行わない。
2.1.1 システム構成図
┌─────────────────────────────────────────────────┐│ クライアント ││ ││ ┌─────────────┐ ┌──────────┐ ┌─────────────┐ ││ │ Web 管理画面 │ │ Web(PWA) │ │ Flutter App │ ││ │ (運用担当者) │ │ (飼い主) │ │ (飼い主) │ ││ └──────┬──────┘ └────┬─────┘ └──────┬──────┘ ││ │ │ │ │└─────────┼──────────────┼───────────────┼──────────┘ │ │ │ └──────────────┼───────────────┘ │ HTTPS (REST API) ▼ ┌──────────────────────────────┐ │ API サーバー │ │ Bun + Hono + OpenAPI │ └──────────────┬───────────────┘ │ ▼ ┌──────────────────────────────┐ │ PostgreSQL │ │ (Drizzle ORM) │ └──────────────────────────────┘2.1.2 技術スタック
| レイヤー | 技術 |
|---|---|
| ランタイム | Bun |
| Web フレームワーク | Hono |
| バリデーション | Zod |
| API 仕様 | OpenAPI |
| ORM | Drizzle |
| データベース | PostgreSQL |
| コンテナ | Docker |
| モバイル | Flutter |
| Web (PWA / 管理画面) | TBD |
2.2 製品機能の概要
2.2.1 認証・アカウント管理
- メールアドレス + 6桁ワンタイムコードによるパスワードレス認証
- 登録とログインの統一フロー(未登録メールは自動登録)
- セッションCookieによるセッション管理(マルチデバイス対応)
2.2.2 ペット管理
- ペットプロフィールの登録・編集・削除
- 1ユーザーにつき複数ペットの登録
- 猫の基本情報(名前、品種、生年月日、性別、避妊/去勢状態、写真など)
2.2.3 健康記録
- 体重管理 — 体重の記録・推移グラフ表示
- 食事記録 — フード種類・量・時間の記録
- 通院履歴 — 受診日・病院・診察内容・費用の記録
- ワクチン履歴 — 接種日・種類・次回予定日の記録
- 症状・体調記録 — 日々の体調変化・気になる症状の記録
- 投薬管理 — 薬の種類・用量・投薬スケジュールの管理
2.2.4 通知・リマインド
- ワクチン接種時期のリマインド通知
- 投薬スケジュールのリマインド通知
- 通院予定のリマインド通知
2.2.5 データ共有
- 家族メンバーの招待・管理
- 同一ペットのデータを家族間で共有
- 共有メンバーの権限管理(閲覧/編集)
2.2.6 管理画面(運用担当者向け)
- ユーザー管理(一覧・詳細・停止)
- システム統計・ダッシュボード
- マスタデータ管理(品種、ワクチン種類等)
- お知らせ・通知管理
2.3 ユーザー特性
| ユーザー種別 | 特性 | 技術レベル |
|---|---|---|
| ペットオーナー(飼い主) | 猫の飼い主。日常的にペットの健康を気にかけている。スマートフォンを日常的に使用する。 | 一般(非エンジニア) |
| 家族メンバー | ペットオーナーに招待された家族。同居/別居を問わない。 | 一般(非エンジニア) |
| 運用担当者 | システムの運用・管理を担当するスタッフ。 | 中程度(基本的なWebアプリ操作が可能) |
2.4 制約条件
- 初期フェーズは猫のみを対象とする
- パスワードレス認証(6桁ワンタイムコード)のみを採用する
- 獣医・動物病院スタッフ向け機能は初期スコープに含まない(将来的に統合可能と判断された場合に検討)
- サーバーサイドは Bun + Hono エコシステムで構築する
2.5 前提条件と依存関係
- ユーザーはメールアドレスを保有していること
- モバイルユーザーは iOS / Android デバイスを使用すること
- PWA ユーザーはモダンブラウザ(Chrome, Safari, Firefox, Edge の最新2バージョン)を使用すること
- メール送信のための外部サービス(SendGrid, AWS SES 等)が利用可能であること
- プッシュ通知のための外部サービス(FCM 等)が利用可能であること
3. 具体的要件
注記: 本セクションは現在概要レベルで記述している。各要件は開発フェーズの進行に合わせてIEEE 830の完全なフォーマット(要件ID、優先度、検証方法等)に詳細化する。
3.1 外部インターフェース要件
3.1.1 ユーザーインターフェース
| プラットフォーム | 要件概要 |
|---|---|
| Web (PWA) | レスポンシブデザイン。スマートフォンでの利用を主とし、タブレット・PCにも対応。オフライン時の基本閲覧機能。 |
| Flutter アプリ | iOS / Android ネイティブ対応。OS標準のUIガイドラインに準拠。プッシュ通知対応。 |
| Web 管理画面 | デスクトップブラウザでの利用を主とする。レスポンシブ対応は必須ではない。 |
3.1.2 ソフトウェアインターフェース
| インターフェース | 概要 |
|---|---|
| REST API | OpenAPI 仕様に準拠。JSON形式でのリクエスト/レスポンス。 |
| データベース | PostgreSQL。Drizzle ORM を介してアクセス。 |
| メール送信 | 外部メール送信サービス(TBD)との連携 |
| プッシュ通知 | Firebase Cloud Messaging (FCM) 等(TBD)との連携 |
3.2 機能要件
FR-001: ユーザー登録 / FR-002: ログイン
メールアドレス + 6桁ワンタイムコードによるパスワードレス認証。登録とログインは同一フロー(未登録メールは自動登録)。
詳細: specs/auth.md | DB: design/db-schema.md
FR-003: ペット登録
ユーザーは1匹以上の猫を登録できる。登録情報には名前、品種、生年月日、性別、避妊/去勢状態、写真を含む。
詳細: specs/pet.md | DB: design/db-schema.md
FR-004: 体重記録
ユーザーはペットの体重をグラム単位(整数)で日時とともに記録できる。1日に複数回の記録が可能で、記録にはメモを添えられる。記録された体重は一覧APIで日付範囲を指定して取得でき、クライアント側で時系列グラフを描画する。
詳細: specs/weight.md | DB: design/db-schema.md
FR-005: 食事記録
ユーザーはペットの食事内容(フード名、種類、量、時間)を記録できる。
詳細: specs/meal.md | DB: design/db-schema.md
FR-006: 通院履歴管理
ユーザーは通院記録(受診日、病院名、診察内容、費用)を登録・管理できる。次回予定日を記録し、FR-010の通院リマインド起点とする。
詳細: specs/vet-visits.md | DB: design/db-schema.md
FR-007: ワクチン履歴管理
ユーザーはワクチン接種記録(接種日、ワクチン種類、次回予定日)を登録・管理できる。
詳細: specs/vaccination.md | DB: design/db-schema.md
FR-008: 症状・体調記録
ユーザーはペットの日々の体調や気になる症状を記録できる。症状カテゴリ(マスタデータ)または自由入力で症状を分類し、3段階の重症度(軽度/中度/重度)を設定する。
詳細: specs/health-log.md | DB: design/db-schema.md
FR-009: 投薬管理
ユーザーは投薬情報(薬名、用量、頻度、期間)を登録し、投薬スケジュールを管理できる。実際の投与記録(投薬ログ)も記録でき、飲み忘れ防止や通知連携(FR-010)の基礎データとなる。
詳細: specs/medication.md | DB: design/db-schema.md
FR-010: 通知・リマインド
システムはワクチン接種時期、投薬スケジュール、通院予定について、設定されたタイミングでユーザーに通知を送信する。配信チャネルはプッシュ通知(FCM)・アプリ内通知・メール通知の3種類。通知設定はペット×通知タイプ単位でカスタマイズ可能(リマインド日数・送信時刻・チャネルのON/OFF)。
詳細: specs/notification.md | DB: design/db-schema.md
FR-011: 家族共有
ユーザーはメールアドレスで家族メンバーを招待し、ペットデータを共有できる。共有メンバーには閲覧権限または編集権限を付与できる。
FR-012: 管理画面 — ユーザー管理
運用担当者はユーザーの一覧表示、詳細閲覧、アカウント停止を行える。
FR-013: 管理画面 — マスタデータ管理
運用担当者は猫の品種、ワクチン種類などのマスタデータを管理できる。
FR-014: 管理画面 — ダッシュボード
運用担当者はユーザー数、登録ペット数などのシステム統計を確認できる。
3.3 非機能要件
3.3.1 パフォーマンス
- API レスポンスタイム: 95パーセンタイルで500ms以内(TBD)
- 同時接続ユーザー数: TBD
3.3.2 セキュリティ
- 通信は全て HTTPS で暗号化する
- セッショントークン有効期限: 7日、リフレッシュトークン有効期限: 30日
- ワンタイムコード有効期限: 10分、最大試行回数: 3回
- Cookie属性: HttpOnly, Secure, SameSite=Lax,
__Host-プレフィックス - IPベースのレートリミット: 1分あたり100リクエスト
- メールアドレスの登録有無を外部に漏らさない設計
- 個人情報・ペット情報は適切にアクセス制御する
3.3.3 可用性
- TBD(SLA目標を今後定義)
3.3.4 保守性
- OpenAPI 仕様によりAPIドキュメントを自動生成する
- Docker によるコンテナ化で環境の再現性を確保する
3.3.5 移植性
- Docker コンテナによりクラウド環境を問わずデプロイ可能とする
付録
A. 開発フェーズ(案)
| フェーズ | 内容 | 対象 |
|---|---|---|
| Phase 1 | サーバー API + 認証基盤 | バックエンド |
| Phase 2 | ペット登録・健康記録の基本機能 | API + PWA |
| Phase 3 | 通知・リマインド機能 | API + PWA |
| Phase 4 | 家族共有機能 | API + PWA |
| Phase 5 | Flutter アプリ | モバイル |
| Phase 6 | 管理画面 | Web 管理画面 |
フェーズ構成は暫定であり、優先度に応じて変更される可能性がある。
B. 今後の拡張候補
- 猫以外のペット(犬、小動物等)への対応
- 獣医・動物病院スタッフ向け機能
- 収益化機能(フリーミアム/サブスクリプション)
- 外部サービス連携(動物病院システム、ペット保険等)
- AI による健康アドバイス機能
C. 本ドキュメントの更新計画
本ドキュメントは IEEE 830 の全セクションを段階的に詳細化する。以下のセクションが今後追加・拡充される予定:
- 3.2 各機能要件の詳細化(要件ID、優先度、入出力、検証方法)
- 3.3 非機能要件の数値目標確定
- データモデル定義(ER図)
- API エンドポイント一覧
- 画面遷移図・ワイヤーフレーム
- テスト計画
本ドキュメントは IEEE Std 830-1998 に準拠して作成されています。