0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

タスク管理が続かない人へ。AIと育てるTodoアプリ「PiyocoTodo」の全機能&設計解説

Posted at

はじめに

「タスク管理アプリ、入れたけど続かない」そんな経験ありませんか?

PiyocoTodoは、タスクをこなすと“ぴよこ”が成長し、AIが励ましてくれる新感覚のTodoアプリです。React + TypeScript + Expressで構築し、AI、音声、ゲーミフィケーション、コラボレーションをフルに盛り込んでいます。

この記事では、PiyocoTodoの設計思想から全機能、技術実装のハイライトまでを解説します。


アプリ概要と特徴

  • タスク完了で“ぴよこ”が経験値を獲得し、6段階に成長
  • AIが時間・天気・行動に応じて励ましメッセージを生成(Groq API)
  • VOICEVOXによる音声再生(150種類以上)
  • コスチューム変更でAIの口調や性格が変化
  • チームでのタスク共有&ロール管理
  • PWA対応&スマホ最適化
  • Google Calendar / 天気API連携
  • Stripeによるサブスクリプション管理

技術スタック

分類 技術
フロント React / TypeScript / Material-UI / TanStack Query / React Router / @dnd-kit
バックエンド Express / Node.js / Prisma / SQLite / Passport.js
外部API Groq (AIメッセージ) / VOICEVOX (音声) / Google Calendar / OpenWeatherMap / Stripe

実装ハイライト

1. ぴよこの成長 × 経験値システム

const effortLevelXP = { 1: 5, 2: 8, 3: 10, 4: 15, 5: 25 };
const requiredXP = currentLevel * 100;
  • タスク完了に応じてぴよこが成長(🥚→🐤→🐓)
  • 経験値はタスク難易度に比例
  • スキン17種(着物/侍/姫/紳士など)で見た目も性格も変化

タスク=報酬の構図で「やる気の可視化」を実現


2. AIパーソナリティ × Groq API

const context = {
  taskTitle: "プレゼン資料作成",
  effortLevel: 5,
  timeOfDay: "morning",
  weather: "sunny",
  combo: 3,
  levelUp: true
};
  • AIは「時刻・天気・連続実行・難易度」などから動的にメッセージ生成
  • コスチュームごとに口調が変化

例:着物ぴよこ → 「素晴らしいですわ。朝から3連続完了とは流石ですわね」

AIが“行動を評価してくれる存在”として機能


3. VOICEVOX連携で音声出力

await playVoiceMessage(piyocoMessage, speakerId);
  • 150種類以上のキャラ音声(ずんだもん等)
  • fetch → Blob → Audio再生で即応
  • スピーカーIDはユーザー設定可能

テキストだけじゃない、“音声で励まされる”体験を実現


4. チームコラボレーション機能

enum CollaboratorRole { OWNER, EDITOR, VIEWER }
  • タスクごとの担当者設定
  • ロール制で編集・閲覧範囲制御
  • Google Calendarとコラボ別に同期
  • TanStack Queryでリアルタイム更新

「チームでのタスク共有」がスムーズに


5. ルーチン自動化(cronベース)

const routine = {
  executionTime: "07:00",
  frequency: "daily",
  weekdays: [1, 2, 3, 4, 5],
  taskTemplate: { title: "日報作成", effort_level: 3 }
};
  • タイムゾーンごとに自動生成
  • 日報・ウィークリーレビューなど習慣化をサポート

6. PWA対応(オフライン&インストール)

self.addEventListener('fetch', (event) => {
  event.respondWith(fetch(event.request).catch(() => caches.match(event.request)));
});
  • スマホでもホーム画面に追加可能
  • オフラインでも使用可能(Network First)

7. プレミアムサブスクリプション(Stripe)

機能 無料版 プレミアム版
ぴよこレベル上限 10 50
ガントチャート
限定スキン 一部 全解放
  • Stripe Webhookで状態同期
  • 顧客IDごとにDBで判定し、機能制限切り替え

設計の工夫ポイント

  • Prismaで全モデルをスキーマ管理(User, Task, List, Routine)
  • 型安全なAPI通信(フロント⇔バック)
  • TanStack Queryで楽観的更新&キャッシュ管理
  • Lazy + Suspenseで画面単位の遅延読み込み
  • セキュリティ:CSRF対策 / トークン暗号化 / レート制限

今後の展望

  • WebSocket通知&チャット機能
  • AIによる「次のタスク提案」
  • React Nativeアプリ版
  • データエクスポート(CSV/JSON)
  • PostgreSQL + Redisへの移行

まとめ

PiyocoTodoは「タスク管理の継続」をゴールに、ゲーミフィケーション×AI×UXを徹底設計したアプリです。

  • ✅ タスクが可視化され
  • ✅ やる気が育成として表現され
  • ✅ AIが言葉と声で褒めてくれる

“続かない”を“楽しい”に変えるTodo体験を、ぜひ試してみてください。


参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?