• #日記
  • #Nuxt4
  • #OCR
  • #yomitoku
  • #Gemini API
  • #ランディングページ
  • #消費税
daily-log

2026年2月7日の開発日記

3つのプロジェクトを同時に進めた一日。book-knowledge-baseではPDF書籍をWebで読めるリーダーをゼロから立ち上げ、mdx-playgroundでは消費税パターンの帳票ビューアーで方針転換を経験し、tax-lpでは業種別ランディングページの基盤を一気に構築した。

今日やったこと

1. book-knowledge-base: PDF書籍リーダーの構築

Gemini APIで「創業手帳 Ver.99」(112ページ)をOCR処理し、SQLiteに格納。Nuxt 4 + pnpmでMiller Columns(3カラム)レイアウトの書籍ビューアを構築した。npmの依存関係問題でハマったが、pnpmに切り替えて解決。

主な成果:

  • Gemini APIによるPDF OCRパイプライン構築
  • Miller Columnsレイアウトの書籍ビューア(左: 書籍一覧、中: ページ一覧、右: 本文)
  • SQLite + Server Routesによるデータ配信

詳細: 蔵書ナレッジベースの構築 - Gemini OCRとNuxt 4で書籍PDFをWebリーダーにする


2. book-knowledge-base: yomitoku OCR変換と画像表示改善

Gemini APIでは図表が消えてしまう問題があったため、日本語特化OCRツール「yomitoku」で同じPDFを再処理。112ページを約3分で処理し、478枚の図画像を抽出。日本語ファイル名の問題、Nuxt 4のpublicディレクトリ問題、OCR出力の不要な<br>タグ、装飾アイコンのフィルタリングなど、実運用で直面する課題を一つずつ潰した。

主な成果:

  • yomitokuによるMarkdown変換(図表保持)
  • 装飾アイコンの面積ベースフィルタリング(65,000px²閾値)
  • /yomitoku スラッシュコマンドの作成
  • Gemini版(sogyo-techo)とyomitoku版(sogyo-techo-md)の共存

詳細: yomitoku OCR変換と画像表示改善


3. book-knowledge-base: スクロールカクつき修正

書籍ビューアで矢印キーによるページ切替時に中カラムが一番上にジャンプする問題を修正。scrollIntoViewが親要素のスクロール位置にまで影響していたのが原因で、scrollTopの直接制御方式に切り替えた。

主な成果:

  • scrollIntoViewgetBoundingClientRect + scrollTop 直接制御
  • ジャンプなしのスムーズなページ追従

詳細: 書籍ビューアのスクロールカクつき修正


4. mdx-playground: 消費税パターン帳票ビューアー

消費税パターンページに帳票プレビュー機能を追加。最初はSVGで仕訳表を描画する方向で実装したが、ユーザーから「イメージが違う」とフィードバックを受けて方針転換。参照用のReact JSXファイルを基に、HTML/CSSで4種類の証憑テンプレート(請求書・領収書・返還請求書・販売明細書)を作成した。Phase 2(本体統合)は複雑さから凍結。

主な成果:

  • 4種類の証憑テンプレート(Invoice, Receipt, CreditNote, SalesStatement)
  • voucher-types.ts / voucher-mapper.ts のデータ変換レイヤー
  • デモページ /tax-patterns/voucher-demo
  • 浮動小数点誤差・輸出免税売上の修正

詳細: 消費税パターン帳票ビューアー実装記録


5. tax-lp: 業種別ランディングページ構築

税務コンサルティング向けの業種別LPプロジェクトをゼロから構築。Nuxt 4 + Tailwind CSSで、localhostサブドメインによる業種切替、マークダウン記事のLP統合、不動産LP専用デザイン、記事システム、ページトランジションまで一気に実装した。

主な成果:

  • Nuxt 4 + pnpm + Tailwind CSS + @nuxt/content でプロジェクト初期化
  • localhostサブドメインで業種切替(beauty, freelance, fudosan 等)
  • ターゲット業種の戦略的選定(Tier A〜D、13業種)
  • 不動産LP専用コンポーネント群
  • 記事一覧・個別記事ページ・ヘッダーナビゲーション
  • forward/back方向検知付きページトランジション
  • EYANCAテンプレートの調査と割り当て計画

詳細: 業種別LPサイト構築


今日の学び

  • pnpmはnpmより信頼性が高い — npmのオプショナル依存バグ(oxc-parserのネイティブバインディング問題)がpnpmでは発生しない
  • scrollIntoViewの落とし穴 — 親要素のスクロール位置にまで影響するため、スクロールコンテナ内ではscrollTop直接制御が安全
  • OCR後処理が本番 — yomitokuのOCR自体は3分で終わるが、画像パス修正・不要タグ除去・装飾フィルタリングなどの後処理に2時間かかった
  • 方針転換は早めに — SVG仕訳表で突き進まず、ユーザーフィードバックで即座にHTML/CSS証憑テンプレートに切り替えたのは正解
  • NuxtLinkとスムーススクロールは相性が悪い — NuxtLinkの内部ハンドラが先に発火するため、<a> + @click.prevent + navigateToの組み合わせが必要

明日やること

  • tax-lp: EYANCAテンプレートのダウンロードと各業種への適用
  • tax-lp: フリーランスクリエイター枠のLP作成
  • tax-lp: マークダウン記事のLP統合の残り業種対応
  • book-knowledge-base: 他の書籍のインポート検討

関連記事