6.1 KiB
6.1 KiB
| name | description | type |
|---|---|---|
| ツールアプリ差別化実装計画 | Posimai ツールカテゴリ各アプリへのエコシステム連携・差別化機能の実装計画(優先順位付き) | project |
背景・目的
ツールカテゴリ(digest/clean/timer/lens/diff/roadmap)は現状「汎用ツール + Posimaiデザイン」止まりで、 エコシステムとの連携がゼロ。Posimaiらしさを出すために以下の実装を優先順位順に進める。
Why: 各ツールが Pulse/Brain/Journal/Maps 等の他アプリと連携することで、 「使って終わり」から「記録・蓄積・振り返り」のループが完成する。
How to apply: 実装前に必ず現在のアプリコードを全文読んでから着手する。
実装優先順位と内容
1位: posimai-timer — Pulse連携 + セッションログ
実装内容:
- タイマー終了時(カウントダウン)に「集中セッション終了モーダル」を表示
- 何をやったか(テキストメモ、任意)
- エネルギーレベル(1-5 スライダー or タップ選択)
- 気分(1-5) → これを Pulse と同じ localStorage スキーマで保存する
- セッション履歴ビューを追加(サイドバーに「履歴」ナビ追加)
- 日付ごとのセッション一覧(時刻・時間・メモ・エネルギー)
- 今週の合計集中時間を冒頭に表示
- Habit と同じ週ヒートマップで可視化(日別集中時間)
Pulse との連携方式:
- Pulse の localStorage キー:
posimai-pulse-entries(data-app-id="posimai-pulse" 配下) - Timer が直接同じキーに書き込むのではなく、Timer 独自キー
posimai-timer-sessionsに保存 → Pulse アプリ側で Timer セッション連携を将来追加する方が正しい設計 → 今回は Timer 内にセッション記録・閲覧機能を完結させる
UI ルール:
- 終了モーダルは既存のデザインシステム(--surface, --border, --accent)を使う
- モーダルはシンプル。テキスト入力 + エネルギー選択(5段階)のみ。送信 or スキップ
- ヒートマップは Habit アプリと同じロジックで実装(7列 × N行グリッド、今週ハイライト)
2位: posimai-diff — 履歴保存 + Journalへ送信
実装内容:
- 比較履歴の永続化
- 「保存」ボタンでタイトル付き保存(localStorage:
posimai-diff-history) - 履歴ビュー(サイドバー「履歴」)で過去の比較を再読み込み
- 最大20件保存(古いものから削除)
- 「保存」ボタンでタイトル付き保存(localStorage:
- Journalへ送信ボタン
- 差分結果エリアの右上に「Journal へ送る」ボタン
- クリックで Posimai Journal(
https://posimai-journal.vercel.app)を?body=パラメータ付きで別タブで開く (差分テキスト + 比較元タイトルを body に含める)
3位: posimai-lens — Maps連携ボタン
実装内容:
- EXIF に GPS 座標が含まれる場合、「Mapsで開く」ボタンを表示
- クリックで
https://posimai-maps.vercel.app/?lat=XX&lng=YY&label=ファイル名を別タブで開く - Maps 側が
?lat=&lng=&label=を受け取ってピン表示できるか事前確認が必要 (Maps の現コードを読んで対応の有無を確認してから実装する)
- クリックで
- 撮影設定メモのお気に入り登録
- 「この設定をお気に入りに追加」ボタン(localStorage:
posimai-lens-favorites) - お気に入りビューで設定名 + F値/SS/ISO 一覧
- 「この設定をお気に入りに追加」ボタン(localStorage:
4位: posimai-digest — Brainへ保存
実装内容:
- 要約結果エリアの右下に「Brain に保存」ボタン
- クリックで Synology Brain API に POST
- エンドポイント:
POST /brain/api/articles - body:
{ title: (元URLのタイトルor先頭40文字), content: 要約テキスト, url: 元URL, source: "digest" } - API キーは既存の
posimai_api_keyを使用(localStorage から取得)
- エンドポイント:
- 保存成功時はトースト表示「Brain に保存しました」
5位: posimai-clean — 現状維持
現時点では追加機能の優先度が低いため対応しない。
実装前に必ず確認すること(CLAUDE.md ルール抜粋・特に重要なもの)
- 絵文字は一切使わない(コード・HTML・コメント・トースト文言すべて)
- lucide@latest を使わない →
@0.344.0固定 - アクセントカラーは
var(--accent)を使う。#6EE7B7のハードコード禁止 - SW でクロスオリジン GET をキャッシュしない(Brain API 等の外部 API は必ずネットワーク経由)
- 底面固定要素には
env(safe-area-inset-bottom)を付ける - 外部リンクには
rel="noopener"を付ける(target="_blank"とセット) - デプロイは
npm run deploy(=git push gitea main && git push github main)vercel --prodは直接実行しない - デプロイ後は Dashboard Timeline に追記して Dashboard もデプロイする(規模問わず必須)
lucide.createIcons()は早期 return の後に呼ばない(アイコンが空になるバグ防止)
デプロイ手順(毎回)
cd posimai-[app]
git add .
git commit -m "feat: ..."
npm run deploy # git push gitea main && git push github main
# その後必ず Dashboard Timeline 更新
cd ../posimai-dashboard
# src/app/timeline/page.tsx の EVENTS 配列に追記
git add src/app/timeline/page.tsx
git commit -m "chore: update timeline"
npm run deploy
各アプリの現状(2026-03-23 確認)
| アプリ | 現状 | Pulse/Brain API連携 |
|---|---|---|
| posimai-timer | ストップウォッチ + カウントダウン。履歴なし | なし |
| posimai-diff | テキスト差分のみ。保存機能なし | なし |
| posimai-lens | EXIF読み取り + 履歴。GPS表示あり(テキスト) | なし |
| posimai-digest | Gemini API 要約 + 履歴。APIキー設定あり | なし |
| posimai-clean | URLクリーン + 履歴 | なし |