すくらっぷ あんど びるどー(したい)

日々やった事のメモとかまとめ。

AI秘書付きライフログシステム「SQ-REPORT」をGoogle Antigravityで作成した

自分の栄養管理・タスク・使用時間を把握して、AIがアドバイスをするシステムを作ってもらった

欲しかった機能

欲しかった機能としてはデータを取得、可視化して、それに対して分析をしてくれる。

  • PC作業監視: 何のソフトに何時間使ったかを秒単位で記録。
  • 食事分析: 画像を撮るだけでAIがカロリーやPFCバランスを算出。
  • タスク&予定: やるべきこと(Task)と、決まった時間(Schedule)を統合管理。
  • AI秘書/メイド: 全データに基づき、Geminiが人格を持ってアドバイス。

技術スタック

アーキテクチャ

  • Backend: Python (Flask) + SQLite3
  • Frontend: Vanilla JS + HTML5 + CSS3 (Grid Layout)
  • Monitoring: Win32 API を用いた自作Pythonスクリプト
  • AI: Google Gemini API (Gemini 1.5 Flash / gemini-flash-latest)

UIデザイン

ダッシュボードは「情報の密度」と「視認性」の両立を目指しました。 画面を「分析層」「実行層」「対話層」の3段に分け、流れるように状況が把握できるレイアウトをCSS Gridで構築。

らしい。
細かいところは知らない(バカ)
とりあえず欲しかったのを頼んだ。細かい部分で指定はしていな……いやちょっとしたな。
もともとGemini に作っていたプロンプトが先にある。

syurainu.com

これが先にあって、これを使ってアプリのひな形を考えさせている。

# Role: 高度システムアーキテクト 兼 Webコンポーネント設計士

## 目的
PCの「アクティブウィンドウの使用時間」を計測し、そのデータを基にAI秘書が生活習慣を監査・報告する「QOL向上支援システム」のプロトタイプを作成してください。

## 1. 実装要件(データ取得部)
Pythonを使用し、非侵入型(情報を取得するだけ)のロジックを作成せよ。
- 5秒ごとに最前面のウィンドウタイトルを取得。
- 同じアプリが継続している時間を累積。
- アプリ名、開始時間、経過時間をローカルの SQLite データベースに保存。
- 使用ライブラリ: pygetwindow, psutil, sqlite3

## 2. デザイン規範(可視化部)
取得した統計データを表示するためのHTML/CSSを分離して生成せよ。
- デザイン原則(整列・対比)を適用。
- マテリアルデザインのElevation(影)を用いたカードUI。
- モバイル・デスクトップ両対応(Flexbox使用)。
- 項目:アプリ名、合計使用時間、使用率(プログレスバー)。

## 3. ロジック監査(秘書・メイド判定)
以下の条件に基づき、収集データからAIが生成すべきメッセージの「思考プロセス」を設計せよ。
- 【秘書モード】SNSやエンタメ系アプリの合計が2時間を超えた場合:論理的なリスク指摘。
- 【メイドモード】合計作業時間が8時間を超え、かつ夜22時以降の場合:休息の提案。

## 出力形式
1. Pythonの監視スクリプト(最小構成)
2. SQLiteのテーブル定義SQL
3. 統計表示用のHTML/CSS
4. AIフィードバック用のプロンプトテンプレート

これを元に行っている。

Gemini APIの統合

単に応答を返すだけでなく、「今日の活動履歴すべてをプロンプトに流し込む」設計にこだわりました。 「今日はプログラミングを5時間して、昼はラーメンでしたね。午後は少し散歩して、夕食はタンパク質を多めにしましょう」といった、文脈(コンテキスト)に基づく会話を実現しています。

また、無料枠を維持するために gemini-flash-latest を活用。 開発中、モデル名の不整合による 404 エラーに直面しましたが、APIがサポートするモデルを動的に取得するデバッグスクリプトを自作して乗り越えました。

無料枠云々は僕が怖いからです。

大切なことなので二度言った図
怖いよー!CSSとかライブラリとかは調べればいいけど、APIキーを使用して稼働するのどこまで無料で動いてくれるんだよ!ホンマにずっと無料でいてくれるのか!?
なもんで初めはAIをGeminiにするつもりがなかった。
理由としては

  • いつまで稼働するか分からないものにAPIキーつっこんだものを作りたくない。忘れそう。恐怖(一番)
  • そもそも分析をするのは客観視が欲しかった。
  • 主なデータとしては使用時間と食事の画像分析からの栄養価が知りたい。
  • AIの機能はサブどころかおまけに過ぎない。ただ他者視点として導入したかった。(そもそも判断くだっても僕が実行しないと思われる) 

これらの理由から当初は入れるつもりがなかった。
のだが……色々やってデバックやっても求める結果にならなかったので、分かっているもので構築したが正しい。APIキーの取得とかもう分かっているし、自分の知識内で収まるのがGemini だったが正しい。
分っているのでこれをつっこんだ。まぁなんとかなるやろ(最悪APIキーなくせばいい)。

完成品

完成したダッシュボード

  • 左を見れば、PCでの活動成果と栄養状態。
  • 中央を見れば、進行中のミッション。
  • 右を見れば、今日一日のタイムライン。
  • 下を見れば、AI秘書

なんだけど、実際にはどこまで使えるかは分からん。
タスクあたりはもっと改善いるかも。元々カンバン形式のタスク管理をアナログで緩やかにやっていて、それがなんだかんだで便利だったから入れてるだけなので、それに近いことが出来ればいいか程度でいれてるし。
PCを起動しないとできないっていうデメリットもある。これが面倒で使わなくなるなら、オミットするかもしれない。

タスクが作業ログになるのは単純に何をやって来たのかが今までやってきておもしろかったから。
これもアナログで紙片に一つだけのタスクをかいて、終わったら壁にペタペタ張るというのが楽でそれに近く、なおかつタイムライン型式でやればログになるなという考えで行っている。
このタスク周りは運用しないと分からない。

まとめ

とりあえず色々できて、あとは運用してみるだけだが、ちょっと分からん。
その内ライブラリ使えなくなって動かんとかありえそう。