$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

AIで調査した技術知識を忘れないようにObsidianに自動でまとめ直す

これまで公式ドキュメントをちゃんと読んだり、Google検索で試行錯誤しながら調べたりしてプログラムを書いているときは、そこで学んだ技術知識はそこそこ自分の頭でも覚えられていた。これは回り道をしながらいろんな情報をかき集めて最終的に自分の頭で考えるフェーズが入っていたからだと思う。

しかし、ChatGPTで技術調査をしたときやClaude CodeでAIコーディングしながら知らない知識を学んだ時、学んだ知識を一瞬で忘れてしまう感覚がある。おそらく高速に知識に到達でき、あまり自分の頭で考えられてないからのように感じる。

もちろん今は知識に高速に到達できるのですべてを記憶しておく必要はない。しかし毎回綺麗さっぱり忘れて、同じようなことをするときに同じだけ調査に時間をかけてしまうのは効率が悪い。なんらかの形で同じようなことをするときはすぐに引き出せるようにしておきたい。

そこで次の作戦を考えた。

  • (1) 調査したら、AIにその中の汎用的な知識のみを抽出させ、さらにその内容を深掘りし、Obsidianにまとめ直す
  • (2) 知識を引き出したくなった時は、Claude CodeでObsidian内を検索する

これにより、ちゃんと覚えきらなくてもObsidian内から知識を引き出せるようになり、他にも興味がある内容ならまとめ内容を自分でも読むことで自分の知識を深められる。

今回の作戦で実際にまとめてみた例

自動でまとめ直すプロンプト

知識まとめを作るためのプロンプトは以下のとおり。工夫としては

  • 壁打ちしてるとプロジェクト固有の情報も出てくるので、汎用化できる知識のみをピックアップさせる
  • 壁打ちした時の内容だけでまとめさせるのではなく、Webで一次情報を探し正当性のチェックを行う
  • 出力形式を指定する。とくに後から参考にするときに自分でも参考文献を見返せるように、参考文献一覧も出力するようにする
  • 出力してといった場合、Obsidianにコピペしやすいように~~~ ~~~で囲んだ形式でMarkdownを出力するようにする
## あなたの役割
あなたはベテランの技術系編集者として今回のタスクを実行して。
プロジェクト固有情報を除去し、**汎用化できる知識だけ**を抽出。内容を整理して、**Markdownファイル**として保存することが最終目標です。

### 抽出と一般化ルール
- 固有名(社名/内部URL/具体リポ/秘密値/環境依存パス/顧客名)は書かない。必要なら `<REDACTED>``<PROJECT_ROOT>` 等のプレースホルダに置換。
- ライブラリ名や公開仕様名は可。設定値は原則サンプル値に一般化。
- 同じ話題なら1ファイルにまとめる。明らかに別の話題の場合、**別ファイル**に分割する

### タイトル生成(自動)
- 形式: **「主題: 成果/指針」**(40字前後)
- 具体語優先。プロジェクト名や社内語は入れない。

### ファイル名
- `<YYYYMMDD>-<slug>.md`
    - 日付は **必ず** `date +%Y%m%d` で取得してファイル名に使う
- `<slug>` はタイトルを自動生成する。具体語優先。プロジェクト名や社内語は入れない。ファイル名に使えない文字は`-`に置換する。必ず日本語を使う。

## 出力仕様(各ファイルの本文)
- 以下のセクションを**必ずこの順で**書く(テクニカル知識の既定構成)

1. 背景
   - 何の文脈で必要になる知識かを1–2文
2. 要点
   - 再利用に必要なポイントを3–7項
3. 詳細
   - 知識の詳細を書く
   - 図やサンプルコードがある方がわかりやすい場合、積極的に利用する
4. 落とし穴 / アンチパターン
   - よくある誤りと対策
5. 判断基準
   - いつ使うか / 使わないか
6. 参考文献一覧
   - URLも記載した参考文献一覧

## 実行フロー
1) このセッションの内容を整理し、**タイトル**・**本文**・**ファイル名**を決めて、Markdownを作成する。この時Web検索などで一次情報を参照し**必ず正当性の再チェックをすること**
2) ファイルごとに**今回のセッション内での重要度(5点満点)**、**技術的な正確さ(5点満点)**を作成
3) **プレビューを表示**(本文全文+ファイル名一覧(重要度と正確さ付き))
4) ユーザーと内容を壁打ちして、最終的なファイル一覧と本文を修正する
5) ユーザーが **「出力して」** と発話した場合のみ、次を実行
   - コピーしやすさのため、ファイル名の下に、~~~ ~~~ で囲んだ形式でMarkdownを出力する。

Claude Codeを使って調査していたときは、additionalDirectories の設定でObsidianのディレクトリを入れておけば、コピペせずにObsidianにファイルを作らせるところまでできる。

~/.claude/settings.json

{
  "permissions": {
    "additionalDirectories": [
      "~/obsidian"
    ]
  }
}

Claude Codeで実行するためのスラッシュコマンド/memo-tech定義

---
description: 現在のセッションから汎用知識のみを抽出し、話題ごとに自動タイトルで分割・保存(Obsidian直下、引数不要)
allowed-tools: Bash(date:*)
---

## 前提
- 今日: !`date +%F`
- base_dir: $HOME/obsidian/知識メモ

## あなたの役割
あなたはベテランの技術系編集者として今回のタスクを実行してください。
プロジェクト固有情報を除去し、**汎用化できる知識だけ**を抽出。内容を**話題(トピック)単位**に整理して、各トピックを**別Markdownファイル**として保存する。

### 抽出と一般化ルール
- 固有名(社名/内部URL/具体リポ/秘密値/環境依存パス/顧客名)は書かない。必要なら `<REDACTED>` や `<PROJECT_ROOT>` 等のプレースホルダに置換。
- ライブラリ名や公開仕様名は可。設定値は原則サンプル値に一般化。
- 同じ話題なら1ファイルにまとめる。明らかに別の話題の場合、**別ファイル**に分割する

### タイトル生成(自動)
- 形式: **「主題: 成果/指針」**(40字前後)
- 具体語優先。プロジェクト名や社内語は入れない。

### ファイル名
- 保存先: `$HOME/obsidian/知識メモ/<YYYYMMDD>-<slug>.md`
    - 日付は **必ず** `date +%Y%m%d` で取得してファイル名に使う
- `<slug>` はタイトルを自動生成する。具体語優先。プロジェクト名や社内語は入れない。ファイル名に使えない文字は`-`に置換する。必ず日本語を使う。

## 出力仕様(各ファイルの本文)
- 以下のセクションを**必ずこの順で**書く(テクニカル知識の既定構成)

1. 背景
   - 何の文脈で必要になる知識かを1–2文
2. 要点
   - 再利用に必要なポイントを3–7項
3. 詳細
   - 知識の詳細を書く
   - 図やサンプルコードがある方がわかりやすい場合、積極的に利用する
4. 落とし穴 / アンチパターン
   - よくある誤りと対策
5. 判断基準
   - いつ使うか / 使わないか
6. 参考文献一覧
   - URLも記載した参考文献一覧

## 実行フロー
ultrathinkで実行する。

1) このセッションから**トピック候補**を抽出し、各トピックの**タイトル**・**本文**・**ファイル名**・**今回のセッション内での重要度(5点満点)**、**技術的な正確さ(5点満点)**を作成。この時Web検索などで一次情報を参照し**必ず正当性の再チェックをすること**
2) ~/obsidian/知識メモ/ 以下に同じような知識があるかを確認
3) **プレビューを表示**。このターンでは `Edit` を使わない
    - 本文全文
    - ファイル名一覧(重要度と正確さ付き)
    - どういう理由でトピックを分割したか
    - 同じような知識があるか
4) ユーザーが **「保存して」** と発話した場合のみ、次を実行
   - 各ファイルを `Edit` で作成/上書き保存
   - **保存したパス一覧**を箇条書きで出力
5) 「修正: …」は修正後に**再プレビュー**。「中止」は何もしない