AohashiLab / Design Doc
2026-04-22
AOHASHI LAB / DESIGN DOCUMENT v0.1

究極の個人秘書 × チームメール監視
独立実験環境 設計書

既存の dev-home を超える「タスク中心・AIリコメンド・文脈チャット」の個人秘書と、企業チームのメールを認証して未返信や未タスク化を検出する「えげつない方」。本番環境を一切触らない独立ラボとして設計する。

① Task Dashboard ② Team Mail Watcher 独立環境(lab.aohashi.net) Google Workspace OAuth Claude API

目次 / TABLE OF CONTENTS

  1. プロジェクト概要と目的
  2. 事例調査サマリ
  3. ①タスクダッシュボード 設計
  4. ②チームメール監視 設計
  5. 独立環境の構成
  6. ロードマップ(3フェーズ)
  7. リスクと対策
  8. 今日決めたい論点

先に動くデモを触る

設計書を読むより、動くものを見た方が早い。デモは単一HTMLなのでローカルで完結。

① タスクダッシュボード・デモ → ② チームメール監視・デモ →

01 プロジェクト概要と目的 OVERVIEW

aohashi.dev/dev-home/ は「タブ切替型のリンク集」に近い状態。今回のラボでは、タスク単位で情報が集約され、AIが能動的に次の一手を示し、その場で相談できる「**タスク中心の個人秘書OS**」を作る。さらにその思想を応用してチームメールの放置を検出する「管理者視点の監視レイヤ」を派生させる。

① 究極の個人秘書

斉藤さん個人向け。dev-homeの再定義。

  • タスクにホバー→関連資料がスッと出る
  • タスクごとにAIが「次の一手」を3択で提示
  • 右下チャット窓でそのタスクの文脈込みの相談
  • 記憶・資料・カレンダー・メールを横断参照

② チームメール監視

企業リーダー向け。個人秘書の「えげつない版」。

  • チーム全員のメールをOAuthで認証
  • 24h / 48h 放置を検出してアラート
  • 未タスク化のメールをリーダーに通知
  • Slack DM で朝夕ダイジェスト+赤はリアルタイム

コンセプトの関係

STEP 01
個人秘書(①)
斉藤さん一人のタスク・メール・資料を束ねて「次の一手」を提示
STEP 02
同じエンジンをチームに拡張(②)
複数人のメールを見て「放置」「未タスク化」をチームリーダーへ
STEP 03
将来像
既存「役員秘書AI」「ASAPメールAI」と合流、パッケージ化
本番環境には触らない
aohashi.net / secretary-ai-dev.aohashi.net / ASAP Cloud Run(本番稼働中)には一切手を入れない。全て新規の独立環境で進める。事故ってもロールバック不要な設計が前提。

02 事例調査サマリ BENCHMARK

海外20製品+国内3製品を調査。ここで得た「使えるパターン」と「避けるべき罠」を次章の設計に織り込んでいる。

2.1 ①個人秘書まわりのインタラクション事例

Linear(Peekパネル)
リストでタスクを選んでスペースキー → 右側400〜500px幅に全詳細が出る。クリック不要・キーボードで完結。
採用
Mem.ai(Heads Up)
書いている最中に関連ノートが右に自動で浮上。汎用AIではなく「自分の記憶」を引く設計。
採用
Coda AI(Contextスコープ)
チャット上部に「このページだけ / doc全体 / 選択範囲」のドロップダウン。AIが何を見ているか明示。
採用
Todoist Task Assist
タスクごとに「サブタスク分解」「実行のコツ」「書き直す」の3チップ。長文で返さない潔さ。
採用
ClickUp Brain
タスク画面右上の「Ask」ボタン。モーダルに候補プロンプト+入力欄。コンテキスト自動付与。
採用
Cursor(@mention)
`@file` `@codebase` `@Docs` でAIの参照先をタイピング指定。マウス不要。
採用
Sunsama / Notion AI
右下固定のチャットアイコン → 押すとサイドパネル → 拡張で全画面。段階的開示。
採用
Motion / Reclaim
AIの動きは「裏で自動最適化」(受動)。ユーザは結果だけ見る。全部をこの方針にはしない(不透明すぎる)。
一部参考

採用するベストプラクティス(①)

  1. スペースキーでPeekパネル(Linear式)— タスク選択→Space→右パネル450px幅。
  2. 関連資料の自動サーフェス(Mem.ai式)— タスク選択時、右パネル下半分にSlack/Drive/過去タスクの候補が浮上。
  3. AI提案は3チップ(Todoist式)— 長文禁止。[分解][コツ][締切]のような3ボタン。
  4. Contextドロップダウン(Coda式)— チャット上部に「このタスク/このプロジェクト/全体」の明示切替。
  5. @mention(Cursor式)— チャットで @タスク @資料 @人 を補完付きで指定。
  6. 右下フローティング→サイドパネル→全画面(Sunsama / Notion式)— チャットの段階開示。
避けるアンチパターン
全画面モーダルのAI提案(文脈が切れる)/チャットをトップの主役にする(タスク一覧が埋もれる)/長文回答(読まれない)/関連資料をタスク本文に勝手に埋め込む(信頼を失う)/コンテキスト範囲を隠す(誤答が怖い)。

2.2 ②メール監視まわりの製品事例

Front
SLA/時間ゴールで「inboundが最後なら未返信」を判定。スレッド最終発言者ロジックが最も成熟。
参考
Missive
本文を自社DBに保存する代わりにSLA機能が強い。プライバシー重視なら非保存型が別の選択。
参考
Hiver
Gmail内で共有ラベル方式。本物のGmail委任は使わない。HIPAA対応で医療系に強い。
参考
Gmelius / Loop Email
各メンバーが自分のGmailでOAuth同意。パスワード共有を回避する設計。
採用方針
Yaritori(国内)
ワンクリックOAuth連携、「未対応/対応中/対応済」のステータスUI。国内中小向け標準。
参考
メールディーラー(国内)
国内最普及。返信漏れ・二重返信防止が主眼。2FA/SSO/IP制限は有料オプション。
参考

03 ① タスクダッシュボード 設計 TASK DASHBOARD

画面の主役は「タスク一覧」。AIも資料もチャットも、タスクを中心に周りに配置する。現行dev-homeは「タブ切替でリンクを並べる」構造だが、ここから「タスクを選ぶと全てが追随する」構造に転換する。

3.1 画面レイアウト

3カラム構成

┌──────────┬────────────────────┬──────────────────┐
│          │                    │  COMPANION PANEL  │
│  SIDEBAR │   TASK LIST        │  (450px幅)       │
│  (240px) │                    │                  │
│          │   - カード形式      │  [上半分]          │
│  ・今日   │   - 優先度で並ぶ    │   タスク詳細+     │
│  ・今週   │   - hoverで軽い    │   AI次の一手3チップ│
│  ・全て   │     ツールチップ   │                  │
│  ・記憶   │   - Spaceで右に    │  [下半分]          │
│  ・資料   │     Peek展開       │   関連資料(自動   │
│          │                    │   サーフェス)     │
└──────────┴────────────────────┴──────────────────┘
                                       ┌────────┐
                                       │ 💬 Chat│ ← 右下固定
                                       └────────┘
                                  クリックで右Panelを拡張

3.2 主要インタラクション

トリガー挙動元ネタ
タスクhover軽いツールチップ(期限・担当・優先度のみ)Linear
タスククリック右Companionパネルが該当タスクに切り替わるLinear Peek
Space選択中タスクをモーダル的にプレビュー拡張Linear
E or ダブルクリックタスク編集モードLinear
⌘Lチャットをそのタスク文脈で開くCursor
⌘Kコマンドパレット(検索・作成・移動)Linear / Raycast
[次の一手]チップAIが3案を0.5秒で出す。長文禁止Todoist
関連資料クリック別タブで開く(Drive / Slack / Gmail)Mem.ai

3.3 データモデル(MVP)

Task {
  id, title, description, status, priority,
  due_at, created_at, updated_at,
  linked_resources: [                 // 手動+自動検出
    { type: 'drive'|'slack'|'gmail'|'url', id, label, preview }
  ],
  ai_recommendations: [               // 直近の生成キャッシュ
    { chip: 'decompose'|'tips'|'deadline', content, generated_at }
  ],
  chat_history: [                     // タスクごとに分離
    { role, content, created_at }
  ],
  source: 'manual'|'email'|'calendar'|'ai_suggested'
}

3.4 AI機能の内部

次の一手(3チップ)

タスク選択時、右パネル上半分に3ボタンを常に表示。押されたら Claude API を呼ぶ。押されないうちは呼ばない(コスト最小化)。

  • [分解する] → サブタスク3〜5個
  • [実行のコツ] → 最初の15分で何をするか
  • [締切を詰める] → 現実的な期限+根拠

関連資料サーフェス

タスク選択のたびに Drive / Slack / Gmail / 過去タスクをベクター検索。上位3件を表示。サーフェスだけでAI呼ばず。

  • embeddings は週次バッチで更新
  • 本文キャッシュは持たず、検索時にメタデータのみ取得

文脈チャット

右下 → サイドパネル → 全画面の段階開示。上部にContextドロップダウン。

  • ContextスコープでAIに渡す情報量を切替
  • @でタスク・資料・人を参照補完
  • 会話はタスクIDに紐付けて保存

3.5 CLAUDE.md「AI最小化」原則との整合

プログラム優先の判断
・「タスク一覧の並び」「期限計算」「優先度カラー」「関連資料候補の取得」は全てプログラム側で完結。
・AIに投げるのは「次の一手3チップを押した瞬間」と「チャット入力」だけ。
・LLM呼び出しは1アクション1回のみ、コスト上限を可視化。

04 ② チームメール監視 設計 TEAM MAIL WATCHER

「全員のメールを裏で読んで、放置を検出してリーダーにアラート」。技術は ASAP メールAI の仕組みを下敷きにしつつ、**複数アカウント対応**と**本文非保存設計**を足す。

4.1 認証方式の比較と決定

方式仕組み長所短所採否
Gmail OAuth 2.0
(各社員が同意)
社員が「アプリにGmailを許可」 透明性◎
失効が簡単
社員の明示同意
各自クリックが必要
restricted scopeはCASA審査対象
採用
サービスアカウント
+ ドメイン全体委任
管理者が一括許可 社員の操作不要 権限強大=漏洩被害大
監査要件重い
不採用
IMAP/SMTP直接 メアド+パスワード どのプロバイダでも動く パスワード保管リスク
基本認証は廃止方向
不採用
CASA審査について
Gmail の gmail.readonly は restricted scope。ただし「内部アプリ」設定で青橋ドメイン内限定なら審査不要。将来の外販時に初めてCASA Tier2(有料・毎年更新)が必要になる。今回のラボは内部アプリで進める。

4.2 未返信判定ロジック(疑似コード)

FOR thread IN inbox(直近30日):

  # Step 1: そもそも返信が要るか(全部if文で判定)
  IF List-Unsubscribe ∈ headers        → SKIP(メルマガ)
  IF Auto-Submitted: auto-generated     → SKIP(自動返信)
  IF my_address ∈ BCC only              → SKIP(情報共有)
  IF sender ∈ known_bot_list            → SKIP

  # Step 2: 最終発言者チェック
  IF thread.last_message.direction == 'outbound':
    CONTINUE(既に返信済み)

  # Step 3: 営業時間換算の経過
  elapsed = business_hours(now - last_inbound.received_at)
  IF 24h ≤ elapsed < 48h                → status = WARN(黄)
  IF elapsed ≥ 48h                      → status = ALERT(赤・リーダー通知)

  # Step 4: 曖昧ケースだけAIに聞く(CLAUDE.md AI最小化原則)
  IF status == WARN AND 件名に「FYI」「確認不要」等あり:
    ask_LLM("このメールは返信必須か?") → 1トークンでY/N補正

ポイント:ステップ1〜3は全部プログラムで完結。AI呼び出しは境界ケースだけ。CLAUDE.mdの「if文 > LLM」方針に厳密に沿う

4.3 アーキテクチャ

[各社員のGmail] Gmail API watch()(日次renew) [Google Cloud Pub/Sub Topic] push subscription [Cloud Run: mail-sla-watcher](独立プロジェクト aohashi-lab) ├─ メタデータ取得(件名・From・To・CC・時刻のみ) ├─ 本文は判定必要時だけ取得 → メモリ処理 → 即破棄 ├─ Firestore に「スレッド状態」を保存(本文NG) └─ Cloud Scheduler(朝9時・夕18時)でバッチ集計 [Slack Bot: aohashi-lab-mailwatch] ├─ 朝/夕ダイジェスト → 各メンバーDM ├─ 赤アラート(48h超)→ #team-alert に即時投稿 └─ リーダー向けダッシュボード(lab.aohashi.net/mailwatch)

4.4 プライバシー設計(最重要)

本文を保存しない

Firestoreにはメタデータ(件名・差出人・時刻・スレッドID・状態)のみ。本文はCloud Run内のメモリで処理→破棄。

リーダーが見られる範囲

デフォルトは「件名+差出人+経過時間」まで。本文を見るには個別のトグル、かつ社員への通知(「あなたのメールが〇件本文閲覧されました」を週次通知)。

同意とログ

入社時+年1回OAuth同意。アクセスログは1年、スレッド状態は90日、以降自動削除。

日本APPI的な注意
業務メールは会社資産なので監視は可能だが、就業規則にモニタリング条項(目的・責任者)が必須。青橋の場合は社内規程に一文追加しておくことを推奨(テスト段階は saito@bluebridge.me と sales@bluebridge.me だけなので実質問題なし)。

4.5 チームリーダー視点のダッシュボード

要素挙動
ヘッダKPI本日のチーム全体の放置件数、赤アラート件数、改善率
メンバーカード1人1カード。未返信件数、赤/黄の内訳、最古の放置経過時間
メンバー詳細クリックでドリルダウン。件名一覧、経過時間、タスク化ボタン
タスク化「このメールをタスクに」で ①側のタスクダッシュボードに連携
Slack通知プレビュー右サイドに「DMで飛ぶ文面」を表示
一時停止各メンバーが /mute 3d で自己申告停止(有給対応)

4.6 アラート疲れ対策

05 独立環境の構成 ISOLATED LAB

本番(aohashi.net、secretary-ai-dev、ASAP Cloud Run)は一切触らない。新しいサブドメイン・新リポジトリ・新GCPプロジェクトを立て、事故ってもロールバック不要な設計にする。

レイヤ既存(触らない)新規作成(ラボ)
ドメイン aohashi.net / secretary-ai-dev.aohashi.net lab.aohashi.net(新サブドメイン)
フロントリポ AOHASHILLC/aohashi-portal AOHASHILLC/aohashi-lab(新規)
フロントホスト Cloudflare Pages: aohashi-portal Cloudflare Pages: aohashi-lab(新プロジェクト)
バックエンドリポ AOHASHILLC/asap-mail-ai
AOHASHILLC/secretary-engine
AOHASHILLC/mailwatch-lab(新規・Python/Flask)
バックエンド Cloud Run(GCP: aohashi-infra) Cloud Run(GCP: aohashi-lab)(新プロジェクト)
Secret aohashi-infra Secret Manager aohashi-lab Secret Manager(独立)
Slack 既存 aohashi ワークスペース 既存使い回し、ただし #lab-alert 新規チャンネル
認証(ダッシュボード) Basic認証(secretary-ai-dev) Cloudflare Access(Google SSO、青橋ドメインのみ)
ローカル作業パス ~/aohashi-portal / ~/asap-mail-ai / ~/secretary-engine ~/aohashi-lab/~/mailwatch-lab/
GCPプロジェクト分離の根拠
既存 aohashi-infra(ASAP本番)と同居させると、誤操作でASAP本番を止めるリスクがある。新規GCPプロジェクト aohashi-lab を切れば、Billing/IAM/Secret全てが完全独立。月数百円で済むので分けない理由がない。

06 ロードマップ ROADMAP

承認後のスケジュール案。各フェーズはゲート判定。前フェーズが動かない限り次には進まない。

PHASE 00 / 準備
独立環境セットアップ
新リポジトリ2本作成
Cloudflare Pages 新プロジェクト
GCP aohashi-lab 新規作成
lab.aohashi.net DNS
Cloudflare Access で Google SSO
Hello World 疎通確認
想定: 1〜2日
PHASE 01 / 個人秘書
①タスクダッシュボードMVP
タスクCRUD + Peekパネル
関連資料サーフェス(Drive/Gmail)
AI次の一手3チップ
右下チャット窓(文脈付き)
コマンドパレット ⌘K
想定: 5〜10日
PHASE 02 / チームメール
②メール監視MVP
Gmail OAuth 同意フロー
Pub/Sub + Cloud Run 判定
未返信判定ロジック(if文ベース)
Slack DM 朝夕ダイジェスト
リーダーダッシュボード
想定: 7〜14日

ゲート判定基準

07 リスクと対策 RISK

#リスク影響対策
01 OAuth Tokenの漏洩 社員メール全件閲覧権限の流出 Secret Manager保管/30日ローテ/Cloud Runサービスアカウント分離/アクセスログ監査
02 社員のプライバシー反発 労務問題・心理的安全性低下 就業規則明示/本文非保存/リーダー向けUIは件名のみがデフォルト/本文閲覧時は本人へ通知
03 誤検出(メルマガ等を未返信判定) 「使えない」と評価され離脱 List-Unsubscribe等のヘッダ判定を確実に/初月はホワイトリスト手動育成
04 Gmail APIレート超過・watch失効 通知が届かない障害 watch更新を日次cron/失敗時 #lab-alert 通知/指数バックオフ
05 CASA審査トリガー(外販時) 年数十万円+数ヶ月の審査 初期は内部アプリ限定/外販は別フェーズで再設計
06 Claude API コスト爆発 月額数万〜数十万の想定外課金 AI呼び出し箇所を限定/Haiku 4.5をデフォルト/日次コスト上限Alert/CLAUDE.md AI最小化原則
07 本番環境への誤影響 aohashi.net / ASAP停止 GCPプロジェクト分離/リポジトリ分離/サブドメイン分離/wranglerプロジェクト分離

08 今日決めたい論点 DECISIONS

設計を前に進めるには、斉藤さんの判断が必要なポイントが8つある。推奨案(★)を提示しているが、変更可能。

  1. ドメイン名

    ラボ環境の公開URL。recommended は短く覚えやすい方。

    lab.aohashi.net next.aohashi.net sandbox.aohashi.net r2.aohashi.net
  2. GCPプロジェクト分離

    本番 aohashi-infra と同居するか、新プロジェクトを切るか。

    新プロジェクト aohashi-lab を作成 既存 aohashi-infra 内で別サービス
  3. 着手順

    ①②どっちから攻める?

    Phase 0 → ① → ②(段階的) 並行 ②は別会話に分離
  4. ①のタスク入力源

    タスクはどこから来る?複数選択可。

    手入力(優先) Gmail抽出 Googleカレンダー Slack DM 現行dev-homeからインポート
  5. ①の関連資料ソース

    どこまで横断検索する?

    Google Drive Gmail Slack Notion ローカルMarkdown
  6. ②のテスト対象アカウント

    最初に接続するテスト用Gmailを教えてください。

    saito@bluebridge.me sales@bluebridge.me 他に保有のテストアカウント → 列挙してください
  7. ②の本文保存ポリシー

    本文をFirestoreに保存するか。

    保存しない(メタデータのみ) 保存する(暗号化・90日削除)
  8. ②のリーダー宛アラート先

    チームリーダー(saito@)にはどのチャネルで飛ばす?

    Slack DM Slackチャンネル(#lab-alert) メール ダッシュボード内通知のみ
次のアクション
上記8論点に回答いただければ、Phase 0(独立環境セットアップ)から着手できる。 動くイメージは ①デモ②デモ で先に触れる。

動くデモで挙動を確認

設計意図が最も伝わるのはデモ。ホバー・クリック・チャットを実際に触って違和感があれば教えてください。

① タスクダッシュボード → ② チームメール監視 →