2026年6月18日の開発日記
朝から Kindle Cloud Reader の取り込みパイプラインに張り付き、Chrome 拡張で1ページ目から最終ページまで巡回スクショ → OCR → Turso 投入の流れを /yomitoku-kindle 一発で回せる状態まで持っていった。途中で「目次照準が逆」の罠を踏み、画像順序を反転して再 OCR したり、撮影中に Chrome 拡張 UI が映り込む問題を別ウィンドウ分離で抜けたり、罠を一つずつ抜けた一日だった。並行して Eurekapu の Nuxt4 移行で「インタラクティブは Vue、純粋テキストは HTML」のルールを言語化し、make-diary には朝7時のタスクスケジューラが空振りした日の保険として /update-portfolio をチェーン実行する仕組みを足した。
今日のタイムライン

今日やったこと
1. Kindle Cloud Reader 取り込みパイプラインの完成
Kindle 本を裁断するわけにいかないので、Chrome 拡張機能 chrome-extension-kindle が1ページずつスクショを撮って /yomitoku パイプラインに渡す形に統合した。途中で目次のページ順が逆になっていてバグり、画像順序を反転してから再 OCR で復旧。撮影中に拡張 UI が映り込む問題は、撮影開始時に Floating Panel を一時退避する形に変えて解消した。
主な成果:
/yomitoku-kindleスラッシュコマンドが Chrome 拡張トリガー → OCR → Turso 投入 →/restructure-bookまで自動チェーン- read.amazon.co.jp/notebook の内部 API からハイライト・メモを正規化 JSON で取得し
kindle_library/kindle_highlightsテーブルへ - Chrome 拡張 UI に Floating Panel 追加(クリック不要で操作可能、撮影中は退避)
詳細: Kindle Cloud Reader 取り込みパイプラインの完成
2. Eurekapu Nuxt4 移行: コンテンツの HTML 化ルール策定
Plan E Phase F-1 で financial-statements カテゴリを Vue から外部 HTML 化しようとしたところ、useI18n・slot scope・動的 component を踏んで中止判定。代わりに「インタラクティブ教材は Vue、純粋な解説テキストは HTML」という判断軸を CLAUDE.md に書き残した。純粋テキストを Vue にするとバンドルが重くなる、という観点を言語化できた。
主な成果:
- Phase F-1 のゲートチェックで Plan E をいったん凍結
- CLAUDE.md に「Vue vs HTML」の判断軸を追記し、議論ドキュメントへの参照を残した
- 過去 Vue コンテンツのうち「Vue 残置」「HTML 化候補」のテーブルを整理
詳細: Eurekapu Nuxt4 移行のコンテンツHTML化ルール
3. make-diary に /update-portfolio をチェーン化
毎朝7時の Windows タスクスケジューラが PC スリープで空振りする日が出ていたので、make-diary の最後で /update-portfolio を呼ぶようにして保険を二重化した。--skip-if-today-success フラグで当日成功実行があれば 1 行スキップする設計にしたので、タスクスケジューラと make-diary 経由が二重で叩いてもポートフォリオシートは破壊されない。今朝の分はタスクが空振りしていたので、make-diary 経由で手動実行して回収した。
主な成果:
- ユーザーレベルの
/update-portfolioスラッシュコマンドを新設 make-diaryの Step 12 に--skip-if-today-success付きでチェーン実行を追加.last-success-dateファイルで二重実行を回避
詳細: make-diary に /update-portfolio をチェーン化した話
4. Turso Bytes Synced クォータ警告 → HTTPオンリーへ寄せる判断
Turso から「Bytes Synced が組織クォータの 75% を超えた」警告が届いた。conn.sync() で migration スクリプトがハングする現象も並行して起きていて、Embedded Replica の sync が原因だと点と点がつながった。月リセットまではまだ余裕があるので、急ぎ全切替はせず HTTP オンリーで使う用途と Embedded Replica で使う用途を切り分ける方針に落とした。
主な成果:
- Turso Cloud のアナリティクスを Chrome DevTools 経由で確認
- migration ハングの真犯人を sync 周りと特定
- 用途別に HTTP オンリー / Embedded Replica を使い分ける運用ルールを暫定で決定
詳細: Turso Bytes Synced 75%警告と HTTPオンリー化の判断
5. Winbond ローマ字表記対応と AI メモリ構造転換の記事化
Winbond Electronics の NOR フラッシュが NVIDIA サプライチェーンに参入する報を受けて memory-makers の Winbond ページを開こうとしたら、「ウィンボンド」でしか検索に引っかからない状態に気づいた。社名表記をローマ字でも引けるように整え、並行して「AI メモリサイクルは PC 時代 30 年 + スマホ時代 15 年が 7 年に圧縮された構造的大転換」という観点で SVG 図解付きの記事を起こした。
主な成果:
- /memory-makers/winbond のローマ字表記対応
- AI メモリサイクル記事 + SVG 3 枚で図解を公開(AIメモリサイクルはまだ「3合目」)
- doc-communication + svg-diagram + content-management の3スキル併用フロー
詳細: Winbond表記対応とAIメモリサイクル構造転換の記事化
6. 冨樫義博「短編小説を長編に膨らませる」アイデア術の解析
夜の作業として、冨樫義博がインタビューで語った「短編小説を読んで長編に膨らませる」発言のファクトチェックに入った。レベルEに出てくる「江戸川美穂・筒井雪隆・ディスクン星人」などの作家名露出を起点に、ハンターハンターの設定がどの短編から育ったかを推測まで進めた。引用元(ヘタッピマンガ研究所R STEP16)と推測を明示的に区切る形で公開記事化。
主な成果:
- 発言の出典をヘタッピマンガ研究所R STEP16 と特定
- レベルE = 露骨な引用、ハンターハンター = 隠喩的な引用、という引用レイヤーの差を整理
- 玩具修理者・ファッションモデル・ヘルレイザーなど、原典→作中表現の対応をピンポイントで突き合わせ
7. Obsidian Kindle プラグインの実装メモを公開記事化
Kindle Cloud Reader からハイライトを取る別経路として、Obsidian の hadynz/obsidian-kindle-plugin がどう実装しているかを実装ファイルから読み解いた。Electron remote.BrowserWindow で Amazon にユーザーログインさせて cookie を persist:kindle-highlights partition に保持、hidden BrowserWindow で read.amazon.xx/notebook を loadURL → executeJavaScript で HTML を抜き出し cheerio でパース、という pass-through 認証方式だった。Chrome 拡張 + DevTools MCP で実装する場合との差分も並べた。
主な成果:
- Obsidian Kindle プラグインの認証・スクレイピング・差分同期の構造を整理
- Chrome 拡張 + DevTools MCP 経路との比較表を作成
詳細: Obsidian Kindle Highlights プラグインの実装メモ
今日の試行錯誤
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | Kindle 巡回スクショの順序 | デフォルト順で OCR | 目次が抜けた | 撮影順が逆だった → 画像順序をプログラムで反転 |
| 2 | Chrome 拡張 UI の映り込み | UI を常時表示のまま撮影 | OCR にゴミが混ざる | 撮影中だけ Floating Panel を退避する形に変更 |
| 3 | OCR 背景色 | 黒背景で撮影 | 図として識別される領域が落ちた | 次回から白背景+黒文字で撮影に統一 |
| 4 | Kindle 拡張アイコンクリック | クリック必須UI | 自動化に組み込めず | amazon.co.jp 訪問時に表示する Floating Panel に切り替えて解消 |
| 5 | Plan E Phase F-1 | financial-statements の Vue → HTML 化 | useI18n / slot scope / 動的 component で中止 | 純粋テキストでも i18n/slot を使っていれば HTML 化対象外、と判断軸を更新 |
| 6 | Vue vs HTML の置き場 | 「全部 Vue でいい」発言 | バンドルに乗る | 純粋テキストは HTML に、インタラクティブは Vue に、というルールを CLAUDE.md 化 |
| 7 | タスクスケジューラ空振り | 朝7時に PC スリープ | ポートフォリオシートが更新されず | make-diary の末尾でチェーン実行、--skip-if-today-success で二重実行回避 |
| 8 | Turso migration ハング | conn.sync() で待ち | 戻ってこない | Bytes Synced クォータ 75% 警告で、sync が真犯人と特定 |
| 9 | AI メモリ図解 | 「太もも」イメージ図を入れる案 | 表現が強すぎて本論が霞む | 太もも図は削除、構造転換の流れだけ SVG 3 枚に絞った |
| 10 | Winbond 表記 | 「ウィンボンド」のみで検索 | ローマ字で引っかからない | 表記を全社統一して両方からヒットする状態に |
今日の学び
- Kindle Cloud Reader からの取り込みは「撮影」「OCR」「DB 投入」「目次整形」の4工程で、どこか1工程で順序が崩れるだけで全部やり直しになる。順序チェックを早い段階でかける
- Vue ファイルに置くか HTML に置くかは「インタラクティブかどうか」で線を引くと迷わない。判断軸を CLAUDE.md に置いたら、次セッションで悩まなくなる
- タスクスケジューラと make-diary の二重トリガーは、
.last-success-dateのような単純なファイルで二重実行を弾けば素直に作れる - Turso の Embedded Replica は「速さと引き換えにバイト量を食う」もので、用途ごとに sync するかしないかを選べばクォータも安定する
- 引用記事は「出典」「推測」を明示的に区切ると公開しても安心して読める
明日やること
- /yomitoku-kindle で続きの書籍を取り込み(白背景に変えてから OCR 精度を確認)
- Phase F-1 中止を踏まえた Plan E の方向再検討
- Turso Bytes Synced の推移を1週間モニタリング