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?

ひょんなことからアプリを作ることになった話(2)

0
Posted at

jl9isl.jpg

開発記録 #02 ── 「AIにAIへの指示書を書かせる」

前回のあらすじ

CLIからRAGを叩きたかった。
でもそもそも会話ログが手元にない。
ブラウザの怪しい拡張機能を調べていたら「自作したほうがいい」という結論になった。

今回は、その「自作」をどう進めたか、という話だ。


自分でコードを書くつもりは、なかった

正直に言う。

Tampermonkeyのユーザースクリプト、MutationObserver、SHA-256ハッシュ、Blob生成……
やることはわかった。
でも自分で一から書くつもりはなかった。

そのためのCopilotだ。

ただ、「会話を自動保存するスクリプト書いて」と丸投げすると、だいたいひどいものが出てくる。
曖昧な指示には曖昧なコードが返ってくる。これはどのAIでも同じだ。

だから先にChatGPTと設計を詰めて、仕様書レベルのプロンプトを作ってからCopilotに渡すことにした。


ChatGPTが仕様書を書いた

「ではCopilotに指示してください」と頼んだら、ChatGPTがそのまま使える指示書を出してきた。

内容を要約するとこうだ:

スクリプト名: Universal Local AI Chat Auto Saver

対象URL:

  • https://chat.openai.com/*
  • https://claude.ai/*
  • https://gemini.google.com/*
  • https://grok.com/*

セキュリティ要件:

  • @grant none(外部通信不可)
  • fetch・XMLHttpRequest・WebSocket・Firebase・外部CDN、すべて禁止
  • データはブラウザ内にのみ存在すること

動作:

  1. MutationObserver でDOMの変化を監視
  2. 1500ms変化が止まったら「AI応答完了」と判断
  3. 会話テキストを抽出してMarkdown整形
  4. SHA-256ハッシュで重複チェック(同じ内容なら保存しない)
  5. Blobでローカルダウンロード

保存フォーマット:

---
source: {hostname}
url: {full URL}
timestamp: {ISO8601}
hash: {sha256}
---

(会話本文)

ファイル名: AIChat-{hostname}-{YYYYMMDD-HHmmss}.md

モジュール構成:

  • observeChanges()
  • extractText()
  • computeHash()
  • shouldSave()
  • saveMarkdown()

明示的に禁止されていることまでリストアップされていた。
「クラウド同期・アカウントログイン・IndexedDB・外部ストレージAPI」、全部NG。


この指示書、なぜここまで細かいのか

AIにコードを書かせるとき、一番やらかすのがセキュリティ要件の抜けだ。

「ローカル保存してね」と言っても、
便利だと思ってfetchを使い始めたり、
外部ライブラリをCDNから読み込んだり、
平気でやってくる。

だから「禁止事項」を明示するのは、指示書設計の基本だ。

それと、モジュール名を具体的に指定したのも意味がある。
関数名が決まっていると、後でデバッグするときに話が早い。
computeHash()がうまく動いてない」と言えば、どこの問題かすぐわかる。


AIに指示書を書かせて、別のAIに渡す

ここで少し立ち止まって考えてみると、なかなか奇妙な構造だ。

  • ChatGPT(会話相手)が設計を手伝い
  • Copilot(コーディング担当)がスクリプトを書き
  • そのスクリプトが、ChatGPTやClaudeやGeminiの会話を保存する

AIがAIへの指示書を書いて、そのコードがAIの会話を収集する。

別に深い意味はないが、2026年らしい光景だと思う。


次回予告

Copilotに仕様書を渡した。
スクリプトは出てきた。

動かなかった。

次回は、どこで詰まって、どう直したか、の話をする。
MutationObserver はAIサービスのSPAと相性が悪い、という話も出てくる。

ちなみに、まだアプリは完成していない。


開発記録 #02 了
続きは #03 で。

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?