Skip to content

irohamo/SchedulingAssistant

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

413 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ココメイト

予定管理に「疲労」「睡眠」「移動」の観点を加え、無理のないスケジュール作成と 「心のゆとり」 を支援するモバイルアプリです。


主な機能

ホーム画面

  • エネルギー残量表示 — 今日の体力を 0〜100% のバッテリーで可視化
  • マスコット「ココ」 — エネルギー残量に応じて4段階の表情に変化(アプリアイコンも連動)
  • 今日のスケジュール一覧 — 開始・終了時間、場所、移動時間、疲労度を一覧表示

パーソナライズされたレコメンド

  • 疲労・睡眠・移動時間を考慮した 最適な時間帯を最大3つ提案
  • 各候補に マッチ率 を表示(おすすめ / 安定ペース / 高負荷)
  • 提案ごとの エネルギー推移グラフ で影響をプレビュー

カレンダー(月 / 週 / 日ビュー)

  • アラート機能 — 予定を追加することで負担が過大になる場合に、未然にアラートで通知。
  • 月ビュー — 疲労ヒートマップで忙しさを色で可視化。日付タップでボトムシート、そこから日ビューへ遷移
  • 週ビュー — タイムグリッド上にイベントブロック + 終日予定も表示
  • 日ビュー — 1時間ごとのエネルギー推移バーチャート + タイムライン形式の予定表示 + 移動時間の表示
  • 年月ピッカー — 全ビュー共通。ヘッダータップで年月選択モーダルを開き、遠い月へ即ジャンプ。週・日ビューでは月選択→日付選択の2ステップ

移動時間の自動算出

  • Google Routes API とApple MapKitで前後の予定間の 移動時間を自動計算
  • 7種の交通手段に対応(徒歩 / 自転車 / 電車 / バス / 車 / バイク / タクシー)
  • 日ビューではイベント間に 移動カード を表示

疲労フィードバックと学習

  • イベント後フィードバック — 4段階の絵文字評価(元気 → とても疲れた)+ メモ
  • 1日の終わりフィードバック — その日全体の疲労を4段階で評価
  • フィードバックを蓄積し、個人に合わせた 疲労予測の精度を継続的に改善
  • イベントタイトルごとの統計で、繰り返す予定の疲労を学習

通知

  • 予定リマインダー(10分前)
  • フィードバック催促(予定終了5分後)
  • 睡眠アラート
  • エネルギー枯渇警告(残量30%以下)

その他

  • Google Calendar 双方向同期 — 増分syncTokenで効率的に同期
  • 場所オートコンプリート — Google Places API で場所を検索・選択
  • オフライン対応 — AsyncStorage によるローカルキャッシュ。オフラインでも閲覧可能
  • データリセット — Firestore + キャッシュの全データ削除(Google Calendar は影響なし)

技術スタック

フロントエンド(モバイル)

技術 バージョン 用途
React Native 0.83.2 クロスプラットフォームUI
Expo 55.0.0 開発・ビルド基盤
TypeScript 5.9.2 型安全な開発
Expo Router 55.0.5 ファイルベースルーティング
React Native Reanimated 4.2.1 ボトムシートアニメーション
React Native Gesture Handler 2.30.0 スワイプ・ジェスチャー操作

バックエンド

技術 バージョン 用途
Firebase Cloud Functions 6.6.0 サーバーレスAPI
Firebase Admin SDK 13.6.0 Firestore管理
Node.js 20 ランタイム

Google 技術の活用

本アプリは 10種類以上の Google 技術 を統合的に活用しています。

認証・データ基盤

技術 活用内容
Google Sign-In OAuth 2.0 によるワンタップログイン。Calendar API のアクセストークンも同時取得
Firebase Authentication Google プロバイダによるユーザー管理
Cloud Firestore ユーザー設定・イベントメタデータ・フィードバック・学習データの永続化
Cloud Functions AI処理のサーバーレス実行基盤

Google Calendar 連携

技術 活用内容
Google Calendar API 予定の双方向同期(読み取り・作成・更新・削除)。syncToken による増分同期で効率化。初回は6ヶ月分を取得

地図・位置情報

技術 活用内容
Google Routes API 前後の予定間の移動時間を自動算出。Distance Matrix v2 を使用し、5種の交通手段(徒歩/自転車/車/バイク/タクシー)に対応
Google Places API 予定追加時の場所オートコンプリート。セッションベースのトークン管理で効率的にAPI呼び出し
Google Geocoding API 初期設定で入力した自宅住所を座標に変換。移動時間計算の基点として使用

AI(Vertex AI)

技術 活用内容
Vertex AI Embeddings (gemini-embedding-001) イベントタグのベクトル埋め込みを生成。コサイン類似度(閾値0.72)で既存タグとのセマンティックマッチングを実現し、類似タグの重複を防止
Vertex AI Generative (gemini-2.5-flash-lite) イベントタイトルからのタグ自動提案(3〜4候補を生成)

セットアップ

前提条件

  • Node.js 20+
  • Expo CLI
  • Firebase プロジェクト
  • Google Cloud プロジェクト(Calendar API, Routes API, Places API, Geocoding API, Vertex AI を有効化)

環境変数

mobile/.env に以下を設定:

# Firebase
EXPO_PUBLIC_FIREBASE_API_KEY=
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=
EXPO_PUBLIC_FIREBASE_PROJECT_ID=
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=
EXPO_PUBLIC_FIREBASE_APP_ID=
EXPO_PUBLIC_FIREBASE_FUNCTIONS_REGION=asia-northeast1

# Google OAuth
EXPO_PUBLIC_GOOGLE_WEB_CLIENT_ID=
EXPO_PUBLIC_GOOGLE_IOS_CLIENT_ID=
EXPO_PUBLIC_GOOGLE_IOS_URL_SCHEME=

# Google Maps / Routes / Places
EXPO_PUBLIC_GOOGLE_MAPS_API_KEY=

起動

# モバイルアプリ
cd mobile
npm install
npx expo start

# Cloud Functions
cd functions
npm install
npm run deploy

Google Sign-In はネイティブモジュールを使用するため、実機または development build での確認を推奨します。


プロジェクト構成

SchedulingAssistant/
├── mobile/                    # React Native (Expo) アプリ
│   ├── app/                   # 画面(Expo Router)
│   │   ├── (tabs)/            # タブ画面(ホーム/カレンダー/設定)
│   │   ├── addevent.tsx       # 予定追加・編集
│   │   ├── suggest.tsx        # AIレコメンド
│   │   ├── feedback.tsx       # イベントフィードバック
│   │   ├── daily-feedback.tsx # 1日の終わりフィードバック
│   │   └── setup.tsx          # 初期設定・オンボーディング
│   ├── services/              # ビジネスロジック(23モジュール)
│   │   ├── fatigue.ts         # 疲労計算エンジン
│   │   ├── energy.ts          # エネルギー算出
│   │   ├── recommendation.ts  # レコメンドエンジン
│   │   ├── travel-time.ts     # 移動時間算出
│   │   ├── calendar-sync.ts   # Google Calendar同期
│   │   └── ...
│   ├── components/            # UIコンポーネント
│   ├── hooks/                 # カスタムフック
│   ├── repositories/          # データアクセス層
│   ├── types/                 # TypeScript型定義
│   └── constants/             # 定数・デフォルトデータ
├── functions/                 # Firebase Cloud Functions
│   └── src/index.ts           # Vertex AI連携(タグ提案・埋め込み・文章生成)
└── firebase.json              # Firebase設定

About

予定管理が苦手な人の無理のないスケジュール作成と「心のゆとり」を支援するアプリ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors