daily-log

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/notebookloadURLexecuteJavaScript で HTML を抜き出し cheerio でパース、という pass-through 認証方式だった。Chrome 拡張 + DevTools MCP で実装する場合との差分も並べた。

主な成果:

  • Obsidian Kindle プラグインの認証・スクレイピング・差分同期の構造を整理
  • Chrome 拡張 + DevTools MCP 経路との比較表を作成

詳細: Obsidian Kindle Highlights プラグインの実装メモ


今日の試行錯誤

#テーマ試したこと結果気づき
1Kindle 巡回スクショの順序デフォルト順で OCR目次が抜けた撮影順が逆だった → 画像順序をプログラムで反転
2Chrome 拡張 UI の映り込みUI を常時表示のまま撮影OCR にゴミが混ざる撮影中だけ Floating Panel を退避する形に変更
3OCR 背景色黒背景で撮影図として識別される領域が落ちた次回から白背景+黒文字で撮影に統一
4Kindle 拡張アイコンクリッククリック必須UI自動化に組み込めずamazon.co.jp 訪問時に表示する Floating Panel に切り替えて解消
5Plan E Phase F-1financial-statements の Vue → HTML 化useI18n / slot scope / 動的 component で中止純粋テキストでも i18n/slot を使っていれば HTML 化対象外、と判断軸を更新
6Vue vs HTML の置き場「全部 Vue でいい」発言バンドルに乗る純粋テキストは HTML に、インタラクティブは Vue に、というルールを CLAUDE.md 化
7タスクスケジューラ空振り朝7時に PC スリープポートフォリオシートが更新されずmake-diary の末尾でチェーン実行、--skip-if-today-success で二重実行回避
8Turso migration ハングconn.sync() で待ち戻ってこないBytes Synced クォータ 75% 警告で、sync が真犯人と特定
9AI メモリ図解「太もも」イメージ図を入れる案表現が強すぎて本論が霞む太もも図は削除、構造転換の流れだけ SVG 3 枚に絞った
10Winbond 表記「ウィンボンド」のみで検索ローマ字で引っかからない表記を全社統一して両方からヒットする状態に

今日の学び

  • 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週間モニタリング

関連記事