AI DEVELOPMENT CASE STUDY

74冊の読書メモを、
自分を映す7層のレポートに。

Kindleに書き溜めた1,900件超のハイライトと手書きメモを、Python抽出 × Claude定性分析の分業で 「価値観パターン」「横断テーマ」「人生の指針」など7層の示唆ドキュメントに変換。 さらに日記データと照合し、半期ごとの「人生設計書」としてレポート化するワークフローの全記録です。

74冊+
分析対象の書籍
1,906
手書きメモ(ブロック)
2,209
自由記述(自分の言葉)
7層+統合
示唆ドキュメント
SECTION 01

つくったもの

読書のハイライトは溜まる一方で、半年後には何を読んだかも思い出せない——。 その「読んで終わり」を解消するため、Kindleの全ハイライト・手書きメモを構造化し、 7層の示唆ドキュメント(手書きメモ全集 / 価値観パターン分析 / 横断テーマ集 / 人生の指針 / ほか)として Obsidianに出力するワークフローを構築しました。

さらにこの示唆と日記データ(月次レポート)を突き合わせ、 「本で宣言したことが実生活でどれだけ実行されたか」を照合する半期ごとの 統合レポート「人生設計書」を生成しています。

CONCEPT
Kindleハイライトは「理想の自分」の設計図。日記は「実際に生きた自分」の実況記録。 両者を重ねて初めて、何が本物で何が幻想だったかが見える。
SECTION 02

システム全体フロー

データの流れと担当の分離に注目してください。機械的な工程と解釈が必要な工程を明確に分けています

人間 Kindleで読書しながらハイライト+手書きメモ 「学び」「肝に」「To Do」などのタグ付きメモを読みながら書き込む。この積み重ね(74冊・1,906件)が全ての素材。
自動同期 Obsidianプラグインで全ハイライトをMD化 Kindle Highlights プラグインが書籍ごとのMDファイル(YAMLメタデータ+本文)を kindle/highlight/ に自動同期。
Python extract_notes.py で構造化抽出 正規表現でハイライト本文とメモをペア抽出 → annotations.json。さらに自由記述(自分の言葉)だけを濃縮した voice_only.md を生成。LLMの解釈を混ぜない純粋な機械処理
人間 Phase 0 — 現状確認(分析前の必須ステップ) メモには書いた時期の文脈がある。「今と状況が違うメモはあるか」を確認してから分析に入る(詳細はSECTION 04)。
Claude Code 7層の定性分析ドキュメントを生成 voice_only.md(約30K字)を読み、価値観の軸・葛藤・語彙のクセを抽出 → 横断テーマ比較 → 10指針+30日プランへ統合。出力はすべてObsidianのMD。
Claude Code 日記×Kindleの統合レポート「人生設計書」 日記の月次レポートと7層の示唆を照合し、「本での宣言 vs 実生活での実行」のスコアカードを含む半期レポートを生成。
人間(読書・現状確認) 自動同期(Obsidian) Python(機械抽出) Claude Code(定性分析)
SECTION 03

設計のキモ — 機械抽出とLLM解釈の分離

教材ジェネレーター(別事例)と共通する思想ですが、 このプロジェクトでは「数えられるものはPython、意味を読むのはClaude」という分離を最初に決めています。

PHASE ① — PYTHON

母集団の生成は純粋な機械処理

  • 1,906ブロックを正規表現で抽出し、カテゴリ×書籍×タグで整理した「手書きメモ全集」を自動生成
  • LLMの解釈を一切混ぜないのがルール。集計・分類だけを行う
  • 新しい本が増えたらスクリプト再実行で全再生成できる(再現性)
性質: 決定的・何度でも再実行可能
PHASE ②〜④ — CLAUDE

解釈は「自分の声」だけを素材に

  • ハイライト(著者の言葉)は使わず、自由記述メモ(自分の言葉)2,209件だけを濃縮した voice_only.md を読ませる
  • 価値観の軸・葛藤・語彙の指紋を抽出し、横断テーマ→総合指針へ段階的に統合
  • プロンプトを調整しながら何度も対話する、泥臭い工程
性質: 定性的・人間との対話で磨く
KEY INSIGHT
著者の名言をいくら集めても「自分」は見えてこない。 ハイライトではなく、その横に書いた自分のメモこそが分析対象。 この切り分け(voice_only.md の生成)が、分析の質を決めた一番の設計判断でした。
SECTION 04

人間の関与 — Phase 0「現状確認」

このワークフローで最も重要な人間の役割は、分析の前にあります。 読書メモは書いた時期の文脈を持っており、数年分を一括で分析すると 「当時の悩み」を「現在の課題」として扱ってしまう危険があるためです。

  • 分析開始前に必ず「今と状況が違うメモはあるか」「仕事・住まい・家族などで最近大きく変わったことは」をユーザーに確認する
  • 分析結果には「当時 vs 現在」を併記し、古い文脈の指針を現在に持ち込まない
  • 状況が変わったら②④(価値観分析・指針)だけを差分更新する。過去の分析は消さず「時系列の注記」を追加する形で残す
LESSON
AIは渡されたテキストを「現在の事実」として扱う。データの鮮度・文脈の管理は人間の仕事。 これを仕組み(Phase 0 の必須化・確認テンプレート)としてワークフローに組み込んでいます。
SECTION 05

実際のプロンプト・ルール(全文)

指示はチャットに都度書くのではなく、HANDOFF ドキュメント(AIへの引き継ぎ書)として ファイル化しています。その主要部分を掲載します(固有名詞のみ一般化)。

① Phase 2 で Claude に抽出させる項目(分析の設計図)

HANDOFF-life-insights.md — Phase 2: 価値観パターン分析
voice_only.md(自由記述メモの濃縮版・約30K字)を Claude が全部読む

→ 以下を Claude が抽出して書く:
- **7つの軸**(自由・家族・行動・健康・内省・職業 など。データ次第で変動)
- **6つの葛藤**(軸の対立として浮かぶ二項)
- **語彙の指紋**(頻出表現とその意味)
- **お守り本TOP10**(メモ件数順)
- **結論:あなた像 1行サマリ**

⚠️ 必ず「当時 vs 現在」を併記。Phase 0 でユーザーから聞いた現状変化を反映。

② やってはいけないこと(5箇条)

HANDOFF-life-insights.md — 🚫 やってはいけないこと
1. 古い文脈のメモを現在の課題として書かない — 過去の悩みは過去の文脈で扱う
2. Phase 1(機械生成)に LLM の解釈を混ぜない — 純粋な抽出に留める
3. 本のハイライト本文を Phase 2 の素材にしない — 「自分の声」だけを使う。
   voice_only.md を生成して、それを読む
4. メモリを読まずに開始しない — 文脈がない状態で書くと、
   過去の指針を繰り返すだけになる
5. 新しいメモタグを勝手に追加しない — タグ一覧は既存タグ+家族分で運用。
   追加するならユーザー確認

③ セッション開始時の確認テンプレート

HANDOFF-life-insights.md — ユーザーへの最初のメッセージ
人生の示唆ドキュメントを更新します。まず現状確認を:

1. 前回(XXXX-XX-XX)から変わったこと(仕事・住居・家族・健康など)はありますか?
2. ハイライトメモのうち「今と状況が違うな」というカテゴリはありますか?
3. 4ファイル全部更新 / ②④だけ更新 / ①の母集団だけ再生成、どれを希望しますか?

④ 抽出スクリプトの中核(extract_notes.py 抜粋)

ハイライト本文(— location: を含む行)とユーザーメモをブロック単位でペア抽出する部分です。 全コードは HANDOFF に埋め込まれており、/tmp/ に置いて実行するだけで再現できます。

extract_notes.py — パース部(抜粋)
HIGHLIGHT_RE = re.compile(r"^(.*?)\s+—\s+location:\s*\[")

def parse_file(path):
    text = path.read_text(encoding="utf-8")
    # YAMLメタデータから書名・著者を取得
    m = re.search(r"kindle-title:\s*(.+)", text)
    ...
    body = text.split("## Highlights", 1)[1]
    blocks = re.split(r"\n---\n", body)   # --- 区切りで1ブロック
    for block in blocks:
        highlight, annotations = None, []
        for line in lines:
            mh = HIGHLIGHT_RE.match(line)
            if mh:
                highlight = mh.group(1).strip()   # 著者のハイライト
            else:
                annotations.append(line.strip())  # 自分の手書きメモ
        if annotations:   # メモ付きブロックだけを対象にする
            yield {"book": title, "category": path.parent.name,
                   "highlight": highlight, "annotations": annotations}
SECTION 06

運用の仕組み — HANDOFF ドキュメント

このワークフローの再現性を支えているのが HANDOFF-life-insights.md(563行)です。 冒頭にこう書いてあります: 「次のセッションのClaudeが、このファイル1つを読めば全工程を理解・再現できる。スクリプトコードも全部埋め込みなので、別ファイルを探さなくていい」

  • Pythonスクリプト3本を全文埋め込み — スクリプトは /tmp/ 実行で永続化せず、HANDOFFが唯一のソース
  • Phase 0〜4 の手順・出力フォーマット規約・禁止事項を1ファイルに集約
  • 変更履歴を末尾に持ち、更新したら追記するルール
  • フォルダの CLAUDE.md には「この系統の依頼が来たら作業前に必ずHANDOFFを読むこと」とだけ書き、詳細はHANDOFFに委譲

差分更新の方針(ファイルごとに更新戦略を決めておく)

ファイル更新方針
① 手書きメモ全集新しい本・メモが増えたらスクリプト再実行で全再生成
② 価値観パターン分析状況変化があったら「当時 vs 現在」を追記(全書き直ししない)
③ 横断テーマ集基本不変(著者の見解は変わらない)。新しい本の追加時のみ追記
④ 総合・人生の指針状況変化があったら古い指針を打ち消して新指針を追加

「古い分析を消すと、過去の自分を再認識する価値が失われる」ため、消さずに注記を重ねるのが原則です。

SECTION 07

成果物の全体像

タグ体系(読書中に書き込む手書きメモの分類)

タグ意味
学び知的に重要と判定した箇所
肝に過去の失敗と紐付いた戒め
To Do即実行を宣言した行動
気づき盲点を突かれた瞬間
ハッとした感情的な衝撃
家族タグ(3種)娘・息子・母それぞれへの応用メモ

生成された示唆ドキュメント群(Obsidian内)

ドキュメント役割
① 手書きメモ全集母集団。1,906件をカテゴリ×書籍×タグで整理(機械生成)
② 価値観パターン分析鏡。自分の軸・葛藤・語彙のクセ
③ 横断テーマ集賢人会議。テーマ別に複数著者の見解を比較し自分のメモと照合
④ 総合・人生の指針行動。10の指針+30日プラン
⑤〜⑦ 発展分析リマインダー&未解決の問い / 時系列の人格変化 / 影の自己分析
カテゴリ別示唆 ×10全11カテゴリをカバーする補完分析
書籍別レポート ×2574冊すべての復習用まとめ+示唆
統合レポート「人生設計書」日記×Kindleの照合による半期レポート(実行スコアカード付き)

統合レポートの構成イメージは デモ版(架空データ)で確認できます。

SECTION 08

まとめ — 持ち帰れる3つの学び

数えられるものはPython、意味を読むのはLLM

1,906件の抽出・集計をLLMにやらせるとコストも精度も悪い。機械処理と定性分析を最初に切り分けることで、再現性と分析の深さを両立できます(教材ジェネレーター事例と共通の思想)。

分析対象は「著者の言葉」ではなく「自分の言葉」

ハイライト全文ではなく、その横に書いた手書きメモだけを濃縮して渡す(voice_only.md)。素材の切り分けひとつで、出てくる分析が「本の要約」から「自分の鏡」に変わります。

HANDOFF=AIへの引き継ぎ書で再現性を担保する

手順・スクリプト全文・禁止事項・確認テンプレートを1ファイルに集約しておけば、数ヶ月後の別セッションでも同じ品質で再実行できます。「AIとの作業の引き継ぎ書」を残すのは人間のチームと同じです。

統合レポートのデモ → 読書×日記 人生設計書(架空データ版) / 姉妹編 → 機械学習教材ジェネレーターの開発プロセス