Skip to content
mitty1293 edited this page May 6, 2026 · 1 revision

アプリケーション技術要件定義(改訂版:タイムトラッカーMVP)

1. プロジェクト概要

  • 目的: 学習や作業の時間を記録・可視化するタイムトラッカーアプリの開発。
  • ターゲット: 個人利用、および将来的なストア(Google Play / App Store)での一般公開。
  • アーキテクチャ方針: サーバーレス(バックエンド非保持)。ユーザーデータは完全に端末のローカル環境で完結させ、開発者側でのデータ管理責任をゼロにする。

2. 技術スタック(フロントエンド・環境)

  • ベースフレームワーク: React Native
  • 開発ツールチェーン: Expo
  • 開発言語: TypeScript
  • UI構築: React Hooks (useState, useEffect 等) による状態管理、および必要に応じたUIコンポーネントライブラリ。

3. データ管理・永続化(ローカルファースト)

  • データベース: expo-sqlite
  • スキーマ設計(初期MVP構成):
    • Activities テーブル(計測対象)
      • id: 主キー
      • name: 計測対象の名前(例: "React Native学習", "読書")
    • TimeLogs テーブル(計測記録)
      • id: 主キー
      • activity_id: Activities テーブルへの外部キー
      • start_time: 計測開始日時
      • end_time: 計測終了日時
      • duration: 計測時間(秒数など。集計用)

4. データのエクスポート・インポート機能(ユーザー主導のバックアップ)

  • ファイル操作: expo-file-system
    • バックアップ用のSQLiteファイルまたはJSONファイルの生成・一時保存。
  • エクスポート: expo-sharing
    • 端末内のデータを書き出し、ユーザー自身のGoogle DriveやiCloud、ローカルフォルダ等へ共有(退避)させる。
  • インポート: expo-document-picker
    • ユーザーが外部ストレージに退避させたバックアップファイルを選択・読み込み、アプリ内のデータを復元する。

5. コア機能要件(MVP: Minimum Viable Product)

  1. Activity(計測対象)管理:
    • 計測対象(Activity)の作成、編集、削除機能。名前のみのシンプルな構成とする。
  2. タイムトラッカー機能:
    • 選択したActivityに対するタイマーの開始・停止。
    • 計測完了時に TimeLogs テーブルへ記録を保存。
  3. データ集計・表示機能:
    • 日別、およびActivity別の作業時間合計の算出とリスト表示。
  4. データバックアップ・復元:
    • 上記の仕組みを用いた手動でのデータエクスポートとインポート機能。

6. 将来的な拡張の余地(現段階では要件外)

  • Todo機能への拡張: Activities テーブルに is_completed フラグ等を追加し、完了した項目を非表示にするタスク管理機能への昇華。
  • バックグラウンド処理/通知: アプリがバックグラウンドにある状態でのタイマー継続や、長時間経過時の通知。
  • UIの拡張: Activityに対するテーマカラーやアイコンの追加設定。