[{"data":1,"prerenderedAt":961},["ShallowReactive",2],{"tag-articles-nuxt":3},[4,10,14,19,23,27,32,36,41,45,50,55,60,65,70,75,80,85,89,93,97,101,106,111,116,120,125,129,134,138,143,149,154,158,163,167,171,176,181,186,191,195,200,204,208,213,217,222,226,230,234,238,243,247,252,256,261,266,270,274,280,284,289,293,297,303,307,313,317,322,327,331,335,340,345,349,354,359,363,367,371,376,381,385,389,393,398,402,407,412,417,422,426,431,436,440,445,449,454,459,464,469,474,479,484,488,493,498,503,507,511,515,519,524,529,533,538,543,548,552,556,560,565,569,574,578,583,588,593,598,602,607,612,617,621,626,631,636,641,645,649,654,659,664,668,673,677,681,686,690,694,699,703,707,711,715,720,724,728,732,736,741,745,749,754,759,763,768,772,777,781,786,791,795,800,804,809,813,818,823,827,831,836,841,845,850,855,859,863,867,872,877,882,886,890,895,900,905,909,913,917,922,926,930,935,940,944,948,952,957],{"title":5,"description":6,"path":7,"publishedAt":8,"updatedAt":9},"Nuxt Content + MDX サイトの要件整理","コンテンツ運用と拡張を見据えた技術要件と運用ルールのまとめ","/nuxt-content-mdx-requirements","2025-10-01T00:00:00.000Z",null,{"title":11,"description":12,"path":13,"publishedAt":8,"updatedAt":9},"Nuxt Content + MDX サイトの初期構築手順","Nuxt 3 と Nuxt Content を使ったメモサイトのセットアップと構成例","/nuxt-content-mdx-setup-guide",{"title":15,"description":16,"path":17,"publishedAt":18,"updatedAt":9},"Nuxt Content ルーティング仕様メモ（2025-10-02）","Nuxt Contentのルーティング仕様とフロントマター設定のガイド","/content-routing-guide","2025-10-02T00:00:00.000Z",{"title":20,"description":21,"path":22,"publishedAt":18,"updatedAt":9},"Nuxt Content の SQLite アーキテクチャ解説","Nuxt Content v3 がどのように SQLite を使ってコンテンツを管理し、Markdown ファイルの変更を検知してデータベースを更新するかの詳細解説","/nuxt-content-sqlite-architecture",{"title":24,"description":25,"path":26,"publishedAt":18,"updatedAt":9},"フロントマター表示トラブルシューティング（2025-10-02）","Nuxt Contentでフロントマターが表示されない問題の原因と解決方法","/troubleshooting-frontmatter-display",{"title":28,"description":29,"path":30,"publishedAt":31,"updatedAt":9},"Nuxt Content: ファイル監視と自動更新の仕組み","Nuxt Content v3のファイル監視とSQLite自動更新の仕組みを詳しく解説","/nuxt-content-file-watch-and-auto-update","2025-10-04T00:00:00.000Z",{"title":33,"description":34,"path":35,"publishedAt":31,"updatedAt":9},"Nuxt Content: SQLite フィールドマッピング仕様","Nuxt Content v3 のマークダウンファイルから SQLite データベースへのフィールドマッピング詳細仕様","/nuxt-content-sqlite-field-mapping",{"title":37,"description":38,"path":39,"publishedAt":40,"updatedAt":9},"カスタムVueページの追加方法","pagesディレクトリにVueファイルを追加して記事一覧に自動表示する方法","/how-to-add-custom-vue-pages","2025-10-05T00:00:00.000Z",{"title":42,"description":43,"path":44,"publishedAt":40,"updatedAt":9},"Nuxt Pages と Nuxt Content の統合仕組み","pagesディレクトリとcontentディレクトリの違い、SQLiteの役割、記事一覧への統合方法を包括的に解説","/nuxt-pages-and-content-integration",{"title":46,"description":47,"path":48,"publishedAt":49,"updatedAt":9},"パンくずメニューとディレクトリ一覧機能の実装","Nuxt Contentサイトにおけるパンくずメニューとディレクトリ一覧機能の実装方法と問題解決","/breadcrumb-and-directory-listing-implementation","2025-10-06T00:00:00.000Z",{"title":51,"description":52,"path":53,"publishedAt":54,"updatedAt":9},"Nuxt Contentでのマークダウン画像管理","VS Codeプレビュー、ローカル開発、Cloudflareデプロイメントの3つの環境で画像を正しく表示する方法","/nuxt-content-image-handling","2025-10-17T00:00:00.000Z",{"title":56,"description":57,"path":58,"publishedAt":59,"updatedAt":9},"サイトSEO診断サマリー","2025-10-25 時点での Nuxt Content サイトにおける検索最適化課題と優先アクション","/site-seo-diagnosis","2025-10-25T00:00:00.000Z",{"title":61,"description":62,"path":63,"publishedAt":64,"updatedAt":9},"Excel風行番号表示機能の実装状況","マークダウンコンテンツにExcel風の行番号を追加する機能の実装進捗と問題点","/excel-style-line-numbers-implementation","2025-10-26T00:00:00.000Z",{"title":66,"description":67,"path":68,"publishedAt":69,"updatedAt":9},"デバウンス処理と本文検索の実装ガイド","Nuxt Contentの検索機能にデバウンス処理とFlexSearchによる全文検索を実装した詳細解説","/search-implementation","2025-11-01T00:00:00.000Z",{"title":71,"description":72,"path":73,"publishedAt":74,"updatedAt":9},"Nuxt 3 Excel Viewer実装ガイド - Vue + SheetJSによるExcel表示機能","Nuxt 3でSheetJS (XLSX.js)を使用したExcel Viewerの実装方法と、特定ファイルの自動読み込み機能の技術ドキュメント","/excel-viewer-implementation","2025-11-09T01:00:00.000Z",{"title":76,"description":77,"path":78,"publishedAt":79,"updatedAt":9},"Excel Viewer with HyperFormula - 動的セル編集と再計算の実装ガイド","HyperFormulaを使用してExcelファイルを読み込み、セルを動的に編集して数式の再計算を行う実装方法を解説","/excel-viewer-hyperformula-implementation","2025-11-12T00:00:00.000Z",{"title":81,"description":82,"path":83,"publishedAt":84,"updatedAt":9},"コーディング規約ビューア実装アプローチの比較","ハッシュベースナビゲーションと動的ルーティングの比較検討","/coding-standards-viewer-approach-comparison","2025-11-18T00:00:00.000Z",{"title":86,"description":87,"path":88,"publishedAt":84,"updatedAt":9},"コーディング規約ビューアページのバグ分析と修正計画","Ctrl+キーボードショートカットとスクロール機能が動作しない問題の原因と解決策","/coding-standards-viewer-bugs-analysis",{"title":90,"description":91,"path":92,"publishedAt":84,"updatedAt":9},"コーディング規約ビューアのTOC開閉バグ修正","Cloudflareデプロイ後にTable of Contentsの開閉ができなくなった問題の原因と解決方法","/coding-standards-viewer-toc-reactivity-fix",{"title":94,"description":95,"path":96,"publishedAt":84,"updatedAt":9},"Draw.io動的埋め込み：採用した実装方法","Draw.ioファイルをVueコンポーネントに動的埋め込みする際に採用したサーバーミドルウェア方式の解説","/drawio-embedding-implementation",{"title":98,"description":99,"path":100,"publishedAt":84,"updatedAt":9},"Draw.ioファイルの動的埋め込み調査レポート","Draw.ioファイルをVueコンポーネント内で動的に読み込んで表示する方法の調査結果と実装方法","/drawio-dynamic-embedding-research",{"title":102,"description":103,"path":104,"publishedAt":105,"updatedAt":9},"Mermaid図がWeb上で表示されない問題の調査と対応方針","Nuxt ContentでMermaidダイアグラムがMarkdownプレビューでは表示されるが、実際のWebページでは表示されない問題の原因調査と解決方針","/mermaid-diagram-display-issue","2025-11-20T00:00:00.000Z",{"title":107,"description":108,"path":109,"publishedAt":110,"updatedAt":9},"Cloudflare Pages デプロイエラー解決：_routes.json の100文字制限対応","Cloudflare Pagesへのデプロイ時に発生する「_routes.jsonのルールが100文字を超えている」エラーの原因と恒久的な解決方法","/cloudflare-pages-routes-100-char-limit-fix","2025-11-26T00:00:00.000Z",{"title":112,"description":113,"path":114,"publishedAt":115,"updatedAt":9},"Cloudflare PagesでリロードするとNuxtページが404になる問題の調査と解決","Cloudflare Pagesにデプロイした動的ルートのNuxtページで、初回アクセスは成功するがF5リロードすると404エラーが発生する問題の原因調査プロセスと、_routes.jsonの除外ルール修正による解決策","/cloudflare-pages-reload-404-fix","2025-11-27T00:00:00.000Z",{"title":117,"description":118,"path":119,"publishedAt":115,"updatedAt":9},"マークダウンページの目次がスクロール時に固定表示されない問題","position: stickyが機能せず、目次がスクロールで消える問題の調査と修正","/table-of-contents-sticky-issue",{"title":121,"description":122,"path":123,"publishedAt":124,"updatedAt":124},"ブログ記事カレンダービュー実装報告","Googleカレンダー風UIでブログ記事を月次カレンダー表示する機能の実装計画と結果報告 - CSS Grid列幅問題の解決とmin-width 0テクニック","/blog-calendar-view-implementation","2025-11-28T00:00:00.000Z",{"title":126,"description":127,"path":128,"publishedAt":124,"updatedAt":124},"シンタックスハイライトが効かない問題の調査と対応","Nuxt Content v3でマークダウンファイルのコードブロックにシンタックスハイライトが適用されない問題の詳細な調査記録と解決方法","/syntax-highlighting-issue-investigation",{"title":130,"description":131,"path":132,"publishedAt":133,"updatedAt":133},"Nuxt Content + Pages ハイブリッドアーキテクチャ：プロジェクト要件定義書","Nuxt Content（Markdown + SQLite）とNuxt Pages（Vue）を組み合わせたハイブリッドCMSアーキテクチャの完全ガイド。新規プロジェクトとしてゼロから構築するための要件定義を含む","/nuxt-hybrid-content-architecture","2025-11-29T00:00:00.000Z",{"title":135,"description":136,"path":137,"publishedAt":133,"updatedAt":133},"WordPress から Nuxt + Cloudflare への完全移行ガイド","WordPress を廃止し、Nuxt 3 + @nuxt/content + Cloudflare Pages でブログとログサイトを統合する完成形アーキテクチャと具体的な移行ステップ","/wordpress-to-nuxt-cloudflare-migration",{"title":139,"description":140,"path":141,"publishedAt":142,"updatedAt":142},"Cloudflareデプロイの自動化スクリプト追加","pnpm build と wrangler pages deploy を1コマンドで実行できるように package.json にスクリプトを追加した手順と注意点","/deploy-script-setup","2025-12-01T00:00:00.000Z",{"title":144,"description":145,"path":146,"publishedAt":147,"updatedAt":148},"サイトマップ実装の対応方針","@nuxtjs/sitemapモジュールを使用したサイトマップ実装の調査結果と実装完了報告","/sitemap-implementation-plan","2025-12-02T00:00:00.000Z","2026-01-05T00:00:00.000Z",{"title":150,"description":151,"path":152,"publishedAt":153,"updatedAt":153},"Nuxt Content v3：D1データベースは本当に必要なのか？","wrangler.tomlにD1を設定しているのに、実際には使われていなかった事実。Nuxt Content v3のSQLiteデータフローを正確に理解する","/nuxt-content-d1-not-used","2025-12-05T00:00:00.000Z",{"title":155,"description":156,"path":157,"publishedAt":153,"updatedAt":153},"ページ遷移が遅い問題：SSR vs SSG の選択ミス","Nuxt Content + Cloudflare Pages構成で、ページ遷移に2-3秒かかる問題の原因分析と解決策。なぜSSRがデフォルトになっていたのか、ブログサイトにSSGが適切な理由を解説","/ssr-vs-ssg-page-transition-slow",{"title":159,"description":160,"path":161,"publishedAt":162,"updatedAt":162},"ブログ一覧→記事ページ遷移が遅い問題の調査","ブログ一覧から記事ページへの遷移に1秒以上かかる問題を調査。Nuxtの過剰なプリフェッチが原因と判明","/blog-page-transition-slow-investigation","2025-12-06T00:00:00.000Z",{"title":164,"description":165,"path":166,"publishedAt":162,"updatedAt":9},"Blog再読み込みで一覧が消える＆記事遷移が遅い調査メモ","Cloudflare Pages 本番で発生したブログ一覧非表示と初回遷移遅延の原因と対応の記録","/blog-reload-and-slow-transition-investigation",{"title":168,"description":169,"path":170,"publishedAt":162,"updatedAt":162},"NuxtLinkのprefetchとは何か：理解と最適な設定","NuxtLinkのprefetch機能の仕組み、あるべき設定、過剰なプリフェッチによるパフォーマンス問題とその対策を解説","/nuxt-prefetch-guide",{"title":172,"description":173,"path":174,"publishedAt":175,"updatedAt":175},"Nuxt開発サーバーの「Failed to resolve dependency」警告を解消する","Nuxt Content使用時にViteが出すoptimizeDeps関連の警告メッセージを消す方法","/nuxt-vite-optimize-deps-warning","2025-12-09T00:00:00.000Z",{"title":177,"description":178,"path":179,"publishedAt":180,"updatedAt":180},"SQLiteから財務データを読み込む実装方針","koyfin.dbに格納された財務データをVueページで表示するための実装アプローチ比較","/sqlite-financial-data-implementation","2025-12-12T00:00:00.000Z",{"title":182,"description":183,"path":184,"publishedAt":185,"updatedAt":185},"Nuxt SSRエラー対策: データ分割とClientOnly","大きなデータファイルを扱うページでSSRエラーを回避する方法","/nuxt-client-only-guide","2025-12-15T00:00:00.000Z",{"title":187,"description":188,"path":189,"publishedAt":190,"updatedAt":9},"Nuxt ContentでMDXが使えない理由","Nuxt Content v3ではMDXがサポートされておらず、代わりにMDC（Markdown Components）を使用する必要がある","/nuxt-content-mdx-investigation","2025-12-16T00:00:00.000Z",{"title":192,"description":193,"path":194,"publishedAt":190,"updatedAt":190},"サービス高速立ち上げの技術選定ガイド: Streamlit vs FastAPI+htmx vs Nuxt","プロトタイプ・MVP開発における技術スタック選定。サービス特性に応じた最適解を比較","/tech-stack-comparison",{"title":196,"description":197,"path":198,"publishedAt":199,"updatedAt":199},"Eurekapu移行計画: Nuxt 2 → Nuxt 3 + Vuetify 3","cockpit-nuxt-vuetifyプロジェクトをNuxt 3 + Vuetify 3へ段階的に移行するための詳細計画","/eurekapu-nuxt3-migration-plan","2025-12-18T00:00:00.000Z",{"title":201,"description":202,"path":203,"publishedAt":199,"updatedAt":199},"財務データ全量表示の遅延読み込み設計","SQLiteから生成したJSON APIによる財務データテーブルの遅延読み込み実装","/raw-metrics-lazy-loading",{"title":205,"description":206,"path":207,"publishedAt":199,"updatedAt":199},"Google Search Console 404エラー調査","Search Consoleで報告された404エラーとインデックス登録数の問題を調査・分析","/search-console-404-investigation",{"title":209,"description":210,"path":211,"publishedAt":212,"updatedAt":212},"OGP画像自動生成 実装ガイド","SNSでシェア時にタイトル+アイコンを含む画像を自動生成する機能の実装ガイド","/ogp-image-generation-plan","2025-12-23T00:00:00.000Z",{"title":214,"description":215,"path":216,"publishedAt":212,"updatedAt":9},"robots.txt構文エラーの修正","Cloudflareが追加するContent-signalディレクティブによるrobots.txt構文エラーの解決方法","/robots-txt-syntax-error-fix",{"title":218,"description":219,"path":220,"publishedAt":221,"updatedAt":9},"CI OOM 調査メモ（Nuxt / Cloudflare Pages）","GitHub Actions で発生する Node.js heap OOM の試行と結果、次の方針","/ci-oom-investigation","2025-12-24T00:00:00.000Z",{"title":223,"description":224,"path":225,"publishedAt":221,"updatedAt":9},"動的OGP画像生成の実装ガイド - Satori + Cloudflare Workers","クイズ結果などユーザー固有のデータを含むOGP画像を動的に生成する方法。Satori、Resvg、日本語フォント対応まで解説","/dynamic-ogp-image-generation-guide",{"title":227,"description":228,"path":229,"publishedAt":221,"updatedAt":9},"Nitroプリセット変更: cloudflare-pages-static → cloudflare-pages","動的OGP画像生成のためにNitroプリセットを変更した理由と影響","/nitro-preset-change",{"title":231,"description":232,"path":233,"publishedAt":221,"updatedAt":9},"Nuxt 3: build vs generate の違い","nuxt buildとnuxt generateの本質的な違いを理解する","/nuxt-build-vs-generate",{"title":235,"description":236,"path":237,"publishedAt":221,"updatedAt":221},"Nuxt 3のapp/dataとpublicディレクトリの使い分け","Nuxt 3プロジェクトにおけるデータファイルの配置場所について、app/dataとpublicディレクトリの違いと使い分け基準を解説","/nuxt-data-directory-guide",{"title":239,"description":240,"path":241,"publishedAt":242,"updatedAt":242},"Cloudflare Workers Routes でOGPシェアURLのSEO問題を解決","Workers Routes を使って、メインドメインのURLでWorkerを実行する方法。静的サイトでも動的OGPを実現","/cloudflare-workers-routes-ogp-solution","2025-12-25T00:00:00.000Z",{"title":244,"description":245,"path":246,"publishedAt":242,"updatedAt":242},"OGPシェアURL改善計画 - SEO効果を最大化する設計","SNSシェア時のURLがWorkers.devドメインになっている問題の分析と、メインドメインでOGPを動的生成する改善策","/ogp-share-url-seo-improvement",{"title":248,"description":249,"path":250,"publishedAt":251,"updatedAt":251},"JリーグページのSEO改善: 動的ルーティング導入提案","62クラブ個別のURLを生成し、各クラブ名でのSEO効果を高める設計案","/jleague-seo-dynamic-routes","2025-12-26T00:00:00.000Z",{"title":253,"description":254,"path":255,"publishedAt":251,"updatedAt":251},"トレイリングスラッシュによるURL重複インデックス問題","Google Search Consoleで同一ページがスラッシュあり・なしで重複登録される原因と解決策","/trailing-slash-duplicate-index",{"title":257,"description":258,"path":259,"publishedAt":260,"updatedAt":260},"ブラウザキャッシュでページが表示されない問題の解決","Nuxt + Cloudflare Pages環境でデプロイ後にページが表示されない問題とブラウザキャッシュの関係について","/browser-cache-troubleshooting","2025-12-28T00:00:00.000Z",{"title":262,"description":263,"path":264,"publishedAt":265,"updatedAt":9},"GitHub Actionsデプロイエラー - Jリーグクラブページ500エラー","GitHub ActionsでのNuxt generate時に特定のJリーグクラブページがランダムに500エラーになる問題","/github-actions-deploy-error","2025-12-31T00:00:00.000Z",{"title":267,"description":268,"path":269,"publishedAt":265,"updatedAt":265},"ブログ記事のマークダウンコピー機能を実装","PC表示で共有ボタンとマークダウンコピーボタンを追加。frontmatterを除外した本文のみをコピーできる機能","/markdown-copy-feature",{"title":271,"description":272,"path":273,"publishedAt":265,"updatedAt":9},"useOgMetaヘルパーのビルドエラー調査","NuxtコンポーザブルuseOgMetaがSSGビルド時に500エラーを引き起こす問題の調査記録","/useogmeta-build-failure-analysis",{"title":275,"description":276,"path":277,"publishedAt":278,"updatedAt":279},"SSGスケーラビリティ課題 - 長期運用における考慮事項","静的サイト生成（SSG）の長期運用で発生するメモリ制限問題と、ハイブリッドレンダリングなどの対策オプション","/ssg-scalability-challenges","2026-01-01T00:00:00.000Z","2026-01-02T00:00:00.000Z",{"title":281,"description":282,"path":283,"publishedAt":279,"updatedAt":9},"Nuxtビルド最適化：341ページを137秒でSSG","devtools無効化とキャッシュ活用で208秒から137秒に短縮。プリレンダリング並列化の仕組みとハードウェアアップグレードの費用対効果を解説。","/nuxt-devtools-optimization",{"title":285,"description":286,"path":287,"publishedAt":288,"updatedAt":9},"Google Search Consoleでインデックス率が低い問題の調査","サイトマップに343ページ送信してインデックス76ページしかない問題を調査。初期仮説のtrailing slash問題ではなく、SSGプリレンダリングの問題が根本原因だった。","/google-index-improvement","2026-01-04T00:00:00.000Z",{"title":290,"description":291,"path":292,"publishedAt":148,"updatedAt":9},"Nuxt useAsyncDataのキャッシュ問題：クライアントナビゲーション時にデータが古い","ページ遷移時にuseAsyncDataがキャッシュを返し、最新のデータが反映されない問題をdedupe: 'defer'で解決","/blog-calendar-cache-issue",{"title":294,"description":295,"path":296,"publishedAt":148,"updatedAt":9},"東京散歩ルートマップ - Nuxt/Vue移行プロジェクト仕様書","東京の散歩ルートを地図上に表示するインタラクティブなWebアプリケーションの要件定義書。Nuxt 3 + Vue 3 + Leafletで実装。","/nuxt-walking-map-spec",{"title":298,"description":299,"path":300,"publishedAt":301,"updatedAt":302},"Google Search Console 404エラーの原因：Nuxt SSGのcrawlLinksで発見されないページ","Google Search Consoleで大量の404エラーが報告された原因を調査。Nuxt SSGのcrawlLinksによるプリレンダリングの仕組みと、リンクされていないページが発見されない問題を解説。","/gsc-404-ssg-issue","2026-01-06T00:00:00.000Z","2026-02-03T00:00:00.000Z",{"title":304,"description":305,"path":306,"publishedAt":301,"updatedAt":9},"@nuxt/content「UNIQUE constraint failed: _content_pages.__hash__」エラーの原因と解決策","Nuxt devサーバー起動時に発生するSQLiteのUNIQUE制約エラーの原因調査と解決方法。コンテンツファイル削除後にキャッシュが残ることで発生する問題を解説。","/nuxt-content-sqlite-unique-constraint",{"title":308,"description":309,"path":310,"publishedAt":311,"updatedAt":312},"cockpit-nuxt-vuetify Nuxt 4 移行計画（新規プロジェクト方式）","Nuxt 2プロジェクトを新規Nuxt 4プロジェクトとしてゼロから構築し、必要な機能を段階的に移植する計画","/nuxt2-to-nuxt4-migration-plan","2026-01-07T00:00:00.000Z","2026-02-15T00:00:00.000Z",{"title":314,"description":315,"path":316,"publishedAt":311,"updatedAt":9},"TODOビュー機能 実装計画","ブログにプロジェクト別TODOビューを追加する実装計画。frontmatterにproject_nameを追加し、プロジェクトごとにグループ化表示する。","/todo-view-implementation-plan",{"title":318,"description":319,"path":320,"publishedAt":321,"updatedAt":9},"Tax Assistant：Claude Codeスラッシュコマンド設計","Nuxt 3 + Python + SQLiteで構築する税理士業務支援システムのCLIコマンド設計。仕訳自動提案、レシートOCR、マネーフォワード連携を実現する9つのスラッシュコマンドを定義。","/tax-assistant-commands","2026-01-08T00:00:00.000Z",{"title":323,"description":324,"path":325,"publishedAt":326,"updatedAt":9},"UIデザイン原則ページのURL同期・シェア機能 実装計画","Miller Columns UIを維持しながら、URLをパスベースで同期させてシェア可能にする設計方針と実装計画","/design-principles-url-sync-plan","2026-01-10T00:00:00.000Z",{"title":328,"description":329,"path":330,"publishedAt":326,"updatedAt":9},"Nuxt 4 + @nuxt/content の開発サーバー起動が遅い原因と対策","Nuxt 4と@nuxt/contentを使ったプロジェクトで開発サーバーの起動に7〜8秒かかる原因を分析し、改善できる点とそうでない点を整理した","/nuxt-dev-startup-time",{"title":332,"description":333,"path":334,"publishedAt":326,"updatedAt":9},"PlaywrightでVueコンポーネントをOGP画像に変換する","Cloudflare Workersでの動的OGP生成から、Playwrightによる静的OGP画像生成に移行した経緯と実装方法","/playwright-ogp-screenshot",{"title":336,"description":337,"path":338,"publishedAt":339,"updatedAt":9},"2026年1月12日の開発日記 - Nuxt 4移行とDBリファクタリング","Tax AssistantをNuxt 4へ移行し、DBテーブル名をフロー別に再設計。デザイン原則は番号体系をカテゴリー別連番に変更し、49件のリダイレクト設定を完了。OCR Checkerは3カラムテーブルで比較UIを実装","/2026-01-12-diary","2026-01-12T00:00:00.000Z",{"title":341,"description":342,"path":343,"publishedAt":344,"updatedAt":9},"NuxtでMiller Columns UIを実装する - macOS Finderライクな階層ナビゲーション","Vue 3/Nuxt 4でmacOS FinderのカラムビューをイメージしたMiller Columns UIを実装。3ペインレイアウト、キーボードナビゲーション、ループ移動などの実装過程を記録。","/miller-columns-ui","2026-01-13T00:00:00.000Z",{"title":346,"description":347,"path":348,"publishedAt":344,"updatedAt":9},"OCRバリデーションUIの3カラムレイアウト実装","Nuxt 4でOCR結果とサブエージェント読取値を比較する3カラムテーブルUIを実装。APIデータが表示されない問題のトラブルシューティングも記録。","/ocr-validation-ui",{"title":350,"description":351,"path":352,"publishedAt":353,"updatedAt":9},"人生計画ExcelをWebアプリに移植する設計と実装方針","20シートからなる人生計画Excelファイルを、Nuxt 4とミラーカラムUIを使ってWebアプリ化する計画。フロントエンド先行開発、冗長バッファ設計、Scoped CSSなど、具体的な設計方針を記録。","/life-plan-webapp-migration","2026-01-16T00:00:00.000Z",{"title":355,"description":356,"path":357,"publishedAt":358,"updatedAt":9},"2026年1月17日の開発日記 - 人生計画シミュレーターUI実装","Nuxt 4で人生計画シミュレーターのUIを実装。ミラーカラム構成、段階損益テーブル、ウォーターフォールチャートを作成。CSSのstickyやNuxtキャッシュ問題も解決。","/2026-01-17-diary","2026-01-17T00:00:00.000Z",{"title":360,"description":361,"path":362,"publishedAt":358,"updatedAt":9},"Nuxt 4で人生計画シミュレーターのUIを実装する","ミラーカラム構成のナビゲーション、段階損益形式のサマリーテーブル、ウォーターフォールチャートを実装した開発記録。","/life-plan-simulator-ui",{"title":364,"description":365,"path":366,"publishedAt":358,"updatedAt":9},"Nuxtでスタイルが反映されない時は.nuxtフォルダを削除する","Nuxt開発中にCSSの変更が反映されない問題の原因と解決方法。ブラウザのキャッシュクリアでも直らない場合は.nuxtフォルダの削除が有効。","/nuxt-cache-troubleshoot",{"title":368,"description":369,"path":370,"publishedAt":358,"updatedAt":9},"URLルーティング設計：クエリパラメータとパスベースの使い分け","SPAのナビゲーション状態をURLに反映させる際、クエリパラメータとパスベースのどちらを選ぶべきか。人生計画シミュレーターの実装を例に解説。","/query-params-vs-path-routing",{"title":372,"description":373,"path":374,"publishedAt":375,"updatedAt":9},"Nuxt 3のcomposablesディレクトリ完全ガイド - componentとの違いと使い分け","Nuxt 3で導入されたcomposablesディレクトリの仕組みと、componentとの違いを解説。Nuxt 2からの移行ポイントや自動インポートの活用方法も紹介します。","/nuxt3-composables-guide","2026-01-21T00:00:00.000Z",{"title":377,"description":378,"path":379,"publishedAt":380,"updatedAt":9},"Nuxt/Vueで選択行をURLクエリパラメータに同期する実装","テーブルの選択行をURLに保持し、ブラウザバックで位置を復元する方法。クレカ明細ビューの実装例。","/nuxt-url-sync-selected-row","2026-01-22T00:00:00.000Z",{"title":382,"description":383,"path":384,"publishedAt":380,"updatedAt":9},"実装計画管理ページの新規作成 - 5カラムカンバンボードUI","memo/とCLAUDE.md plans/ディレクトリからfrontmatter付きMarkdownを読み取り、ステータス別に表示する/plansページを実装","/plans-page",{"title":386,"description":387,"path":388,"publishedAt":380,"updatedAt":9},"仕訳ルールUI改善：書類タイプ別の件数表示と条件付きカラム表示","ミラーカラムUIで書類タイプに応じた収支区分カラムの表示制御と、ルール件数の可視化を実装した記録","/shiwake-rules-ui-improvements",{"title":390,"description":391,"path":392,"publishedAt":380,"updatedAt":9},"Vue.jsで帳票画像ナビゲーションUIを共通コンポーネント化する","複数タブで重複していた帳票画像のナビゲーションUIを共通コンポーネントに切り出し、UIを統一した実装記録","/vue-image-navigation-panel",{"title":394,"description":395,"path":396,"publishedAt":397,"updatedAt":9},"2026年1月26日の開発日記 - 月シミュレーター完成と税務アシスタントUI大改修","PR#55の月シミュレーター対応、日食・月食機能追加、tax-assistantのデザインシステム分割・勘定科目マスターDB化実装、3つの計画書策定を完了した充実の1日","/2026-01-26-diary","2026-01-26T00:00:00.000Z",{"title":399,"description":400,"path":401,"publishedAt":397,"updatedAt":9},"月の満ち欠けシミュレーター機能強化 - Tailwind CSS変換からSEO対応まで","PR#55のレビュー対応として、Tailwind CSSからscoped CSSへの変換、日食・月食シミュレーターの新規追加、アクセシビリティ改善、ユニットテスト追加までの一連の開発ログ","/moon-simulator-enhancement",{"title":403,"description":404,"path":405,"publishedAt":406,"updatedAt":9},"検索ページ（/search）パフォーマンス改善計画","全記事のbody ASTを一括取得している検索ページの読み込み速度を改善するための実装計画","/search-page-performance-plan","2026-01-29T00:00:00.000Z",{"title":408,"description":409,"path":410,"publishedAt":411,"updatedAt":9},"連結精算表インタラクティブビューアーの設計と実装 - Miller Columnsで連結会計を可視化する","Miller Columns（4カラム）パターンで連結精算表をインタラクティブに操作できるビューアーを実装した。3階層ナビゲーション、個別財務諸表の勘定式レイアウト、矢印キーナビ、テストによるデータ検証まで。","/consolidated-worksheet-viewer-2026-02-01","2026-02-01T00:00:00.000Z",{"title":413,"description":414,"path":415,"publishedAt":416,"updatedAt":9},"Basic English 850 語彙学習サイトを1日で実装した記録","Ogden の Basic English 850 語を学べるインタラクティブな学習サイトを、Miller Column レイアウト・クイズエンジン・音声再生付きで実装した開発ログ","/basic-english-850-implementation","2026-02-10T00:00:00.000Z",{"title":418,"description":419,"path":420,"publishedAt":421,"updatedAt":9},"Nuxt Content v3 + Cloudflare Pages で直リンク時に404になる問題の解決","Nuxt Content v3をCloudflare Pagesに静的デプロイすると、URLを直接入力したときだけ404になる。原因はトレイリングスラッシュによるuseAsyncDataのキー不一致だった。","/nuxt-content-cloudflare-404-fix","2026-02-11T00:00:00.000Z",{"title":423,"description":424,"path":425,"publishedAt":421,"updatedAt":9},"WordPressブログをNuxt 3 + Cloudflare Pagesに移行した記録","ponponpopopoon.com（17ページ・169記事）をWordPressからNuxt 3 + @nuxt/content v3に移行。Pythonクローリング、日本語ファイル名問題、permalinkルーティング、SSG設定、404トラブルシューティングまでの全工程をまとめた。","/pon-blog-wordpress-to-nuxt3-migration-2026-02-11",{"title":427,"description":428,"path":429,"publishedAt":430,"updatedAt":9},"Tokyo Soundscapeプロジェクト立ち上げ -- 企画書からスライド生成、リポジトリ作成まで","東京の環境音を記録するTokyo Soundscapeプロジェクトの立ち上げ作業ログ。マークダウン企画書のPowerPoint変換、Google Driveアップロード、Nuxtプロジェクトの初期構築までを記録する。","/tokyo-soundscape-launch-2026-02-13","2026-02-13T00:00:00.000Z",{"title":432,"description":433,"path":434,"publishedAt":435,"updatedAt":9},"収録カレンダーとスポット管理の実装 -- 年間スケジュール可視化とセキュリティ対策","Tokyo Soundscapeプロジェクトの収録カレンダー（年間一覧表）とスポット管理機能を実装。GPS座標の公開リスク対策、useSpotCalendar composable、桜スポット追加、年間サマリー自動計算などの作業ログ。","/recording-calendar-spot-management-2026-02-14","2026-02-14T00:00:00.000Z",{"title":437,"description":438,"path":439,"publishedAt":312,"updatedAt":9},"2026年2月15日の開発日記 - 音アーカイブ2031コンセプトサイト構築とEurekapu移行始動","音アーカイブの5年後ビジョンサイトをNuxtで構築し5,850件のライブラリデータを自動生成。再開発フィールドワークマップのUI改善。Eurekapu Nuxt 4移行プロジェクトも始動した1日。","/diary-2026-02-15",{"title":441,"description":442,"path":443,"publishedAt":444,"updatedAt":9},"2026年2月18日の開発日記 - 音アーカイブの方向転換と大量実装","ステレオテストページのVue移植、TASCAMフィールドレコーディングの追加、山手線30駅ページの実装と没判定、法的調査を経たマネタイズ方針の転換、フィールドワークマップの大幅拡充と庭園マップの新規作成など、盛りだくさんの一日。","/2026-02-18-diary","2026-02-18T00:00:00.000Z",{"title":446,"description":447,"path":448,"publishedAt":444,"updatedAt":9},"ステレオサウンドテストページをVue 3/Nuxtで実装 - Web Audio APIによる左右チャンネル出し分け","ReactのJSXで作ったステレオテストページをVue 3 + Nuxtに移植。StereoWaveCanvasコンポーネントの新規作成、Web Audio APIによるL/Rチャンネル分離、Chrome DevTools MCPでの動作確認まで。","/stereo-wave-canvas-vue-2026-02-18",{"title":450,"description":451,"path":452,"publishedAt":453,"updatedAt":9},"Nuxtプロジェクトのセキュリティレビューと依存関係の脆弱性を全件修正した","セキュリティ・パフォーマンス・SREの3視点で並列レビューを実施し、パストラバーサル防御の追加と依存関係のCritical/High脆弱性を全て解消した記録。","/security-review-vulnerability-fix-2026-02-26","2026-02-26T00:00:00.000Z",{"title":455,"description":456,"path":457,"publishedAt":458,"updatedAt":9},"Nuxt SSGビルドエラーを3つ潰して本番デプロイを復旧した","Cloudflare Pagesで2月22日以降の記事が消えていた原因を追い、importパスの階層不足・Date型のsplit問題・未コミットコンテンツの3つを修正して本番復旧した記録","/nuxt-ssg-build-fix-2026-03-05","2026-03-05T00:00:00.000Z",{"title":460,"description":461,"path":462,"publishedAt":463,"updatedAt":9},"2026年3月6日の開発日記 - エウレカプの利用規約を構造から見直した","eurekapu-nuxt4のログインページ刷新と利用規約の13条→14条への構造改定。make-diaryコマンドのファイル名規則も修正","/2026-03-06-diary","2026-03-06T00:00:00.000Z",{"title":465,"description":466,"path":467,"publishedAt":468,"updatedAt":9},"音声ファイル管理基盤の整備 - Git除外・R2配信・dev middleware構築","152個の音声ファイルをpublic/audioからaudio-assets/に移行し、.gitignoreで除外。dev server middlewareとuseAudioUrl composableで開発・本番のURL解決を一元化。Cloudflare R2へのアップロードとデプロイ手順の文書化まで。","/audio-asset-management","2026-03-16T00:00:00.000Z",{"title":470,"description":471,"path":472,"publishedAt":473,"updatedAt":9},"Cloudflare R2カスタムドメイン × Web Audio API: ブラウザのメディアキャッシュが引き起こすCORS地獄","R2カスタムドメインからクロスオリジン音声をWeb Audio APIで処理する際、ブラウザのメディアキャッシュがcors/no-corsリクエストを分離せずCORSエラーを起こす問題と、3段階CORS検証 + キャッシュバスターによる解決策","/cloudflare-r2-cors-web-audio-api","2026-03-17T00:00:00.000Z",{"title":475,"description":476,"path":477,"publishedAt":478,"updatedAt":9},"ライブラリなしで全文検索つきCF実務リファレンスページを構築した記録","TursoDBから130キーワードを取得し、2カラムレイアウト・レベルフィルター・条文ポップオーバー・矢印キーナビを備えた検索可能なリファレンスページをVanilla実装した開発ログ","/cf-reference-page-development","2026-04-20T00:00:00.000Z",{"title":480,"description":481,"path":482,"publishedAt":483,"updatedAt":9},"Amazon書籍メタデータを841件取得しNuxt書棚UIで一覧化した1日の試行錯誤","Dropbox連番管理の書籍PDF935冊について、Amazonの星評価・レビュー数・出版社・ISBN等のメタデータを取得し、Nuxtの書棚UIで一覧化した記録。PA-API失敗、Chrome DevTools MCP並列不可、agent-browser並列スタックを経て、curl_cffiのTLS偽装による10並列HTTP直叩きで1秒/件のスループットに到達した1日","/amazon-book-metadata-shelf-ui","2026-04-28T00:00:00.000Z",{"title":485,"description":486,"path":487,"publishedAt":483,"updatedAt":9},"2026年4月28日の開発日記 - feature-slidesスキル新設、書籍OCR1181ページ、Amazon書棚UIまで1日で組み上げた","別リポジトリ eurekapu-nuxt4 でCFWS v2の構造解説スライドを reveal.js で組む過程から汎用スキル feature-slides まで一気に成立させ、Excel忠実再現グリッドと範囲外枠ハイライトまで詰めた。並行して book-knowledge-base 側で yomitoku を5冊・1181ページに通して Turso DB に1057チャンク登録、Amazon の星評価・メタデータを 935件中 841件取得して Nuxt の書棚UI で公開した。SVG図解の作業も svg-diagram スキル v2 として書籍画像→SVG変換ワークフローを追記。","/2026-04-28-diary",{"title":489,"description":490,"path":491,"publishedAt":492,"updatedAt":9},"連結会計レッスンの仕訳モーダルを3部構成に拡張：個別→連結あるべき→連結修正の差分検算","連結会計I-2-1〜I-3-3の6設例で、個別上の処理を前提条件エリアに追加し、JournalEntryModalを3部構成（個別／連結あるべき／連結修正）に再設計。bookRowId単位で『② − ① = ③』を自動検算し、Codexレビューで方針転換した過程を含めて記録する。","/consolidated-3part-modal-expansion","2026-05-01T00:00:00.000Z",{"title":494,"description":495,"path":496,"publishedAt":497,"updatedAt":9},"case100 書籍79論点をVueページに一括移植。レスポンシブと仕訳帳UIを一緒に整える","Excel→TypeScript パイプラインで生成した79論点を Vueページ として一括出力。PCワイド画面では仕訳カード縦並び、狭い画面ではタブ形式に切り替えるレスポンシブUIも実装","/2026-05-03-case100-vue-migration","2026-05-03T00:00:00.000Z",{"title":499,"description":500,"path":501,"publishedAt":502,"updatedAt":9},"財務3表コクピット：ホバー連動ハイライトとグレースケール合計行の改善","BS/PL/CSのセル間Z軸浮き上がり・ホバー連動ハイライトを3ペア色分けで実装。合計行の黒背景+白文字をGLグレースケール+黒文字に置き換え、verify.mjsの照合方式も刷新した。","/cockpit-cell-highlight-greyscale","2026-05-06T00:00:00.000Z",{"title":504,"description":505,"path":506,"publishedAt":502,"updatedAt":9},"CT Logとbot対策：AI検索で参照されたいならBot Fight Modeを入れてはいけない","CT Log経由のbotスキャン対策を調べていたら、Bot Fight ModeがAI検索クローラーも弾く可能性があるとわかった。税理士事務所など「AI検索で見つかりたい」サイトに向いている代替策を整理した。","/ct-log-bot-and-ai-search",{"title":508,"description":509,"path":510,"publishedAt":502,"updatedAt":9},"2026年5月6日の開発日記 - ずんだもん音声132本を一括生成してR2にデプロイした日","財務3表コクピットのZ軸ハイライト改善、22取引アニメーションのSMIL化、VOICEVOXずんだもん音声132ステップの一括生成とCloudflare R2デプロイまで完走した1日。","/2026-05-06-diary",{"title":512,"description":513,"path":514,"publishedAt":502,"updatedAt":9},"22取引アニメーション：Nuxtコンポーネント登録ミスとSMIL花火アニメーション","pathPrefix: false で22取引SVGをすべて表示できるようにし、買掛金発生シーンの花火アニメーションをCSS transformからSMILに切り替えた試行錯誤の記録。","/transaction-animation-nuxt-smil",{"title":516,"description":517,"path":518,"publishedAt":502,"updatedAt":9},"ずんだもん音声解説を財務3表コクピットに組み込む：132ステップ一括生成とR2デプロイ","VOICEVOXのずんだもん（speaker_id=3）で財務3表コクピットの全解説音声132ステップを一括生成。読み誤りを繰り返し修正しながらR2にデプロイするまでの記録。","/voicevox-zundamon-audio-r2",{"title":520,"description":521,"path":522,"publishedAt":523,"updatedAt":9},"簿記学習アプリのコンテンツ改善：リンク修正・SVG座標ずれ・学習法ページリライト・複式簿記入門タブ化","レッスンリンクの誤リンク修正、No6アイコンのX座標ずれ修正、study-methodページの対比構造廃止、複式簿記入門に6取引タブコンポーネントを追加した1日の記録。","/eurekapu-nuxt4-boki-content","2026-05-07T00:00:00.000Z",{"title":525,"description":526,"path":527,"publishedAt":528,"updatedAt":9},"Nuxt 3 簿記アプリを多言語化 — Codex 4thレビューと ElevenLabs 英語音声生成","eurekapu-nuxt4 に @nuxtjs/i18n を入れて317ページ分のルートを ja/en に分け、ElevenLabs で英語ガイド音声を10問まで生成した1日の作業ログ。Codex 再帰レビュー、Phase 一気実行、preprocess の拡充の経緯を記録。","/eurekapu-i18n-with-elevenlabs","2026-05-08T00:00:00.000Z",{"title":530,"description":531,"path":532,"publishedAt":528,"updatedAt":9},"将棋盤インタラクティブデモを Vue で実装：Codex/Gemini で局面読み取り、shogidb2 から75手復元するまで","棋譜パーサーとSVG駒で将棋盤を動かすデモを Vue で組んだ記録。Codex CLI と Gemini で初手の局面を読み取らせて誤判定を踏み、shogidb2 から KIF を引き直して75手の実戦譜を復元、TransitionGroup の transform 上書きで折れて配色ハイライトに切り替えた1日。","/shogi-board-demo-with-kifu-db",{"title":534,"description":535,"path":536,"publishedAt":537,"updatedAt":9},"Cloudflare Pages SSG の OOM を Excel 教材データ分離で根本対応した話 — Codex 再帰レビューと SSR fetch 404 の突破","Cloudflare Pages の SSG ビルドが Node ヒープ 2GB を突き抜けて exit 134 で落ち続けた問題を、Excel 教材データの TS import → JSON fetch 分離で根本対応した。top.vue manifest は 490KB から 18KB に痩せ、10コース 616KB が public/ 配信に逃げた。Codex 再帰レビュー3回、Windows サンドボックス問題の根本対応、SSR fetch 404 のハマりまでを記録する。","/excel-data-separation-cloudflare-ssg-oom","2026-05-10T00:00:00.000Z",{"title":539,"description":540,"path":541,"publishedAt":542,"updatedAt":9},"簿記3級クイズの『着弾アニメ』ON/OFFトグル追加とハイライト残留バグ修正 — フィードバック往復で削るスコープを絞った","/quiz/practice の解答アニメーションで、前問の青ハイライトが消えないまま次問の着弾が始まるバグを修正。pendingApply 中に clearChanged を適用する形に変えた。さらに『着弾アニメが速すぎる/しつこい』のフィードバックを受けてON/OFFトグルを追加。最初はカウントアップもハイライトも全部止めようとしたら『カウントアップとハイライトとdelta popupは残せ、fly-pillだけ切れ』と差し戻され、対象を絞り直した。ESLint既存エラー2件は別タスクに切り出して Codex レビュー通過済み。","/quiz-animation-toggle-fix","2026-05-11T00:00:00.000Z",{"title":544,"description":545,"path":546,"publishedAt":547,"updatedAt":9},"2026年5月12日の開発日記 - SVG対照表とTurso DB取り込み、財務諸表クイズの並列展開","Notion書籍データのTurso取り込み、1286枚のSVG↔Kindle原稿対照、財務諸表クイズPhase 3並列展開、GA4設置とドメイン取り違えの修正まで、AIと役割分担しながら一日を回した記録。","/2026-05-12-diary","2026-05-12T00:00:00.000Z",{"title":549,"description":550,"path":551,"publishedAt":547,"updatedAt":9},"財務諸表クイズの実装 - SVGハイライト連動と左右2カラムレイアウト","BS/PL/CFのブラケット構造SVGをスキル化し、クイズ回答に応じてマゼンタで該当箇所を強調する財務諸表学習ページを実装。書籍2026年版の取り込みからPhase 3のサブエージェント並列展開まで。","/financial-statements-quiz",{"title":553,"description":554,"path":555,"publishedAt":547,"updatedAt":9},"GA4設置とドメインの取り違え - runtimeConfig一元化と運営体制のドキュメント化","Nuxt 4 プロジェクトに GA4 を設置する作業の途中で、AI が思い込みで別ドメインを書いた。気づいた瞬間、設定ファイル3箇所を修正し、絶対URLを runtimeConfig に集約し、運営体制を CLAUDE.md に明文化した。","/ga4-domain-and-ops-docs",{"title":557,"description":558,"path":559,"publishedAt":547,"updatedAt":9},"Notionの裁断書籍データをTurso DBに取り込むパイプライン構築","Notionからエクスポートした所得税解説書のHTML群をTurso DBに取り込み、既存のyomitokuパイプラインに合流させた一日。Codexレビューを3周回し、画像URL書き換えとタイトル重複の根本解決まで進めた記録。","/notion-export-to-turso-db",{"title":561,"description":562,"path":563,"publishedAt":564,"updatedAt":9},"Eurekapuのデプロイが9.3分に伸びた話：R2リダイレクト移行と、Codexに3回ダメ出しされた計画書","Eurekapu-NUXT4のデプロイ時間が9.3分まで伸び、dist/総量248MB・5195ファイルまで肥大化していた。R2画像移行→dynamic importの順で計画を立てたら、Codexレビューに『順序が逆』『dynamic importは Worker バンドルから消えない』『$fetch('/content/...')はSSRで404』と3点まとめて致命傷を指摘され、計画を全面改訂。最終的に _redirects 方式でR2にリダイレクトする形に落として、wrangler pages deployだけで完結する流れに揃えた。最後、ビルド中にファイルを編集してapp-styles.B3Vj9TBQのハッシュ不整合に引っかかった反省も書いておく。","/deploy-optimization-r2-redirects","2026-05-13T00:00:00.000Z",{"title":566,"description":567,"path":568,"publishedAt":564,"updatedAt":9},"2026年5月13日の開発日記 - 教科書プロジェクト立ち上げ・都道府県クイズ・デプロイ高速化","Eurekapuの決算書教科書プロジェクトを起こし、Codexレビューを何度も往復しながら計画を固めた。都道府県農作物クイズはUIの細かい指示を10往復こなして仕上げた。デプロイ9.3分問題はR2画像移行と_redirectsで詰めた。","/2026-05-13-diary",{"title":570,"description":571,"path":572,"publishedAt":573,"updatedAt":9},"投資判断クイズを2カラムレイアウトへ移行：1ページ完成→コンポーネント化→横展開","Part 2投資判断クイズの18ページを2カラムUXに移行する作業ログ。スペース過多の違和感から要件を掘り起こし、QuizPageとInvestmentTopicPageに切り出して横展開した。","/investment-quiz-2col-refactor","2026-05-14T00:00:00.000Z",{"title":575,"description":576,"path":577,"publishedAt":573,"updatedAt":9},"都道府県クイズを書籍まるごと横展開する計画書を起草した","昨日作った都道府県・主産地クイズの続きを進めるため、Turso DBに登録済みの『日本国勢図会 2024/25』を直接Claude Codeに調べさせて、全40章＋付録から5フェーズの拡張計画書を起こした。","/prefecture-quiz-expansion-plan",{"title":579,"description":580,"path":581,"publishedAt":582,"updatedAt":9},"都道府県クイズに統計編12ページを増設し、89問へ拡張した日","Phase 1の4ページ24問から、人口・地理・製造業・貿易・財政・観光・教育・防災まで合計12ページ89問へ拡張。Codexレビューで10件の致命的誤りを修正したログ。","/prefecture-quiz-statistics-12pages","2026-05-15T00:00:00.000Z",{"title":584,"description":585,"path":586,"publishedAt":587,"updatedAt":9},"教科書とクイズを Part 1/2 の2カラムに整え、ローカルのマークダウンビューアまで作った","決算書を読む教科書とクイズの index を Part 1/2 の2カラムに直し、ローカル専用のマークダウンビューアを生やし、目次のスクロール追従ハイライトまで仕込んだ早朝の積み残し潰し。","/textbook-quiz-twocolumn-memo-viewer","2026-05-18T00:00:00.000Z",{"title":589,"description":590,"path":591,"publishedAt":592,"updatedAt":592},"NVIDIA Q1 FY27 書き起こしを作りながら、/blog の SPA キャッシュ・Breadcrumb・画像モーダル・SVG チャートをまとめて整備した日","NVIDIA Q1 FY27 決算説明会の全文書き起こし（Motley Fool 出典）を作るタイミングで顕在化した4つの表示問題を順番に潰した記録。/blog 一覧の payload キャッシュで新記事が出ない問題、/blog の Breadcrumb が現在ページ扱いでリンクが消える問題、記事内画像のクリック拡大モーダル化、セグメント別売上の積み上げ棒＋分離棒＋QoQ/YoY の SVG チャートを記事内に追加した一連を整理する。","/nvidia-page-rendering-fixes","2026-05-22T00:00:00.000Z",{"title":594,"description":595,"path":596,"publishedAt":597,"updatedAt":9},"章を切り替えてもスクロールが先頭に戻らないバグ：表示中のスクローラーを掴み損ねていた真因を突き止めるまで","キャッシュフロー計算書の教材で、ページ最下部まで読んでから次の章に切り替えても本文が前章のスクロール位置を引きずるバグを修正。refが非表示側のスクローラーを指していた真因にたどり着くまでの試行錯誤を記録する。","/cashflow-lesson-scroll-reset-fix","2026-05-26T00:00:00.000Z",{"title":599,"description":600,"path":601,"publishedAt":597,"updatedAt":9},"2026年5月26日の開発日記 - 非表示スクローラーのバグ退治とAmazon画像のかき集め","章を切り替えても先頭に戻らないスクロールバグの真因を掘り当て、家電記事用のAmazonカードを作って商品画像をブラウザ自動操作でかき集めた一日。","/2026-05-26-diary",{"title":603,"description":604,"path":605,"publishedAt":606,"updatedAt":9},"「テーブルに状態を持たせてはいけない」を、会員データを操作して3設計を見比べる教材に仕立てた","状態カラムの上書き・イベント記録・状態テーブル分割の3設計を、同じ会員データに同じ操作を流し込んで同時に動かし、履歴がどう残る／消えるかを見比べられるインタラクティブ教材を作った話。ロジックは純粋関数に隔離した。","/state-vs-events-interactive-lesson","2026-05-27T00:00:00.000Z",{"title":608,"description":609,"path":610,"publishedAt":611,"updatedAt":9},"公開データに残った出典表記を消し、積み残しの統合機能を実装した","別プロジェクトの積み残しを棚卸しし、公開スライドに残っていた書籍の出典表記をコンプラ事故として最優先で消した。読み上げ台本が本番表示されていた落とし穴と、計画書の未作成分を全部実装するまでの記録。","/content-attribution-cleanup-and-integration","2026-05-30T00:00:00.000Z",{"title":613,"description":614,"path":615,"publishedAt":616,"updatedAt":9},"2026年5月31日の開発日記 - tool-call-malformedと一日戦い抜いた","ツール呼び出しが一日中崩れ落ちる中、サブエージェントと引き継ぎドキュメントで乗り切った日。microGPT会計教材、旅行ガイド量産、GAAP評価拡充、CDPログイン手順化まで詰め込んだ。","/2026-05-31-diary","2026-05-31T00:00:00.000Z",{"title":618,"description":619,"path":620,"publishedAt":616,"updatedAt":9},"microGPTを会計の言葉で読み切る教材を作った日","200行のGPT実装を、予実管理や配賦や感応度といった会計の言葉に翻訳して読み切るためのインタラクティブ教材をNuxtで実装した。malformedが連発した末に引き継ぎドキュメントとサブエージェントへ切り替えた一日の記録。","/microgpt-accounting-textbook",{"title":622,"description":623,"path":624,"publishedAt":625,"updatedAt":9},"非公開記事一覧をGoogleにインデックスさせない仕組みを点検した話","/blog/unpublished に置いた非公開記事を検索エンジンに載せたくない。noindex meta を入れる前に、本番ビルドから6経路で除外し本番URLを404にする既存実装が要件を満たしていると分かった点検記録。","/unpublished-noindex","2026-06-01T00:00:00.000Z",{"title":627,"description":628,"path":629,"publishedAt":630,"updatedAt":9},"メモリーメーカー動向ハブを新設し、DRAM市場シェアの推移を可視化した一日","サムスン電子とSK Hynixの個別ページを揃えたメモリーメーカー動向ハブを新設。会社ごとに違う決算データの構造をどう吸収したか、過去8四半期のDRAM市場シェアをどう可視化したかを記録する。","/memory-makers-hub-dram-share","2026-06-02T00:00:00.000Z",{"title":632,"description":633,"path":634,"publishedAt":635,"updatedAt":9},"Nuxt の pnpm generate を measure-deploy.ps1 でフェーズ別に計測した","Cloudflare Pages デプロイの所要時間がどこで膨らんでいるか掴めず、PowerShell スクリプトで pnpm generate と wrangler deploy をフェーズ別に計測した。途中で pnpm generate が exit 1 で落ち、原因を verify-blog-payload.mjs まで追いかけ、Opus 4.7 1M context にモデルを切り替えてから Codex でレビューを受けて締めた一日。","/nuxt-build-deploy-time-measurement","2026-06-04T00:00:00.000Z",{"title":637,"description":638,"path":639,"publishedAt":640,"updatedAt":9},"/blog のカレンダーが一瞬光って消える hydration mismatch を payload null 化で突き止めた","Cloudflare Pages にデプロイした /blog で当月の記事27本が一切表示されない。SSR の HTML には載っているのに、ブラウザで見ると一瞬出てから空に化ける。原因は queryCollection の戻り値が payload reducer で null に落ちることだった。plain POJO に詰め替えて修復し、再発防止ルールを .claude/rules/ に固定した。","/blog-payload-null-root-fix","2026-06-05T00:00:00.000Z",{"title":642,"description":643,"path":644,"publishedAt":640,"updatedAt":9},"2026年6月5日の開発日記 — beat-monitoring を /make-diary 一発で回し、memory-makers に台湾系3社を足した日","AVGO Q2 を翌朝の make-diary に組み込む自動チェーン化、HOOD と TSM の追加、Apacer / Phison / Etron / TSMC のチャート整備、/blog の hydration 問題の根本対策、chord-rush のメロディー化、水木しげると CUDA、3D カメラ × ロボの試算まで——詰め込んだ1日。","/2026-06-05-diary",{"title":646,"description":647,"path":648,"publishedAt":640,"updatedAt":9},"memory-makers ページに台湾系3社（Apacer / Phison / Etron）と TSMC・Samsung のチャートを足した日","Samsung のセグメント売上を積み上げ棒に揃え、Apacer・Phison・Etron を新規追加し、TSMC を含めて月次売上＋EPS チャートを差し込んだ。漢字社名が頭に入らないので、表記順をローマ字優先に直した。","/memory-makers-tw-fabless-add-and-charts",{"title":650,"description":651,"path":652,"publishedAt":653,"updatedAt":9},"Micron個別ページを作った（工場マップ＋月間キャパシティ詳細）","/memory-makers/micron を新規作成。USA / Japan / Taiwan の工場地図をSVGで描き、Fab別の月間キャパシティ推移を5マイルストーンで可視化した。3カラムから上下レイアウトへ作り直し、会計四半期に暦月併記を足すまでの過程をまとめる。","/micron-fab-page-with-capacity-map","2026-06-07T00:00:00.000Z",{"title":655,"description":656,"path":657,"publishedAt":658,"updatedAt":9},"Google Search Console 分析で見つけた機会キーワードに即日対応した記録 ― 解説記事の量産と SEO 修正を1日で消化する","GSC の過去28日データを Claude Web に分析させたら CTR 2.3%・平均掲載順位8.4 という「表示はされるが選ばれない」状態が判明。機会キーワードへの解説記事量産と SEO 修正を同日に実行した作業ログ。","/gsc-opportunity-keywords-execution","2026-06-09T00:00:00.000Z",{"title":660,"description":661,"path":662,"publishedAt":663,"updatedAt":9},"数学参考書をOCRで全文DB化し、その日のうちにインタラクティブ教材へ変換した記録","100トピック構成の数学参考書をAI OCRでTurso DBに取り込み、別冊解答の統合まで構造を整理。午後は目次から適性を判定してクイズ・解説コンテンツ13本を試作した一日の記録。","/math-textbook-interactive-content","2026-06-10T00:00:00.000Z",{"title":665,"description":666,"path":667,"publishedAt":663,"updatedAt":9},"蔵書DBから財務DD学習コンテンツを自作する——解説とクイズをローカル限定で組み上げた記録","Turso DBに格納した財務DDの専門書2冊をソースに、解説5章＋クイズ38問の学習コンテンツをローカル限定で構築。表示確認漏れや解説不足の指摘を経て増強した試行錯誤の記録。","/zaimu-dd-learning-content",{"title":669,"description":670,"path":671,"publishedAt":672,"updatedAt":9},"簿記学習ノートの演習を自作問題集ベースに再設計し、クラウド会計風の帳簿アプリを実装した日","自動生成した70問を捨てて検証済みの自作仕訳問題集に演習を置き換えた記録。長大ページの分割、学習方法ページの不整合解消、紙の帳簿前提の出題への違和感から仕訳帳・総勘定元帳・補助元帳をテーブルで再現する帳簿アプリも新規実装した。","/bookkeeping-notes-practice-redesign","2026-06-11T00:00:00.000Z",{"title":674,"description":675,"path":676,"publishedAt":672,"updatedAt":9},"Synthesia風「降ってくる音符」のピアノアプリをWeb Audio + Canvasで作った——実装の詳細メモ","音符バーが上から降ってきて鍵盤に届くと音が鳴るピアノビジュアライザー /piano-roll の実装記録。曲データの持ち方、88鍵レイアウト計算、落下バーの座標系、Web Audioによるピアノ音合成、運指番号表示、楽譜データの入手方法やMIDIキーボード対応の展望まで。","/piano-roll-implementation",{"title":678,"description":679,"path":680,"publishedAt":672,"updatedAt":9},"スクショ1枚からSynthesia風ピアノロールWebアプリを作ってもらった日——88鍵Canvas＋Web Audio合成＋運指表示","「ピアノアプリ作ってもらいたいんですけど」と画像1枚を見せたところから、Synthesia風ピアノロール /piano-roll が完成するまでの記録。再生時計が止まる謎、devサーバーの古いコード配信、公開化で見つかったOGメタタグ不足14件の一括修正まで。","/piano-roll-web-app",{"title":682,"description":683,"path":684,"publishedAt":685,"updatedAt":9},"Excel解析から始める不動産投資収益シミュレーションWebアプリの設計と実装","1法人2物件の不動産投資収益シミュレーションExcelを解析し、Single Source of Truthを徹底した論理設計に引き直してWebアプリ化。計算エンジンの回帰テスト44本とExcel風シート表示までの記録。","/fudosan-simulation-webapp","2026-06-12T00:00:00.000Z",{"title":687,"description":688,"path":689,"publishedAt":685,"updatedAt":9},"小学校算数のインタラクティブ学習コンテンツを作る - 蔵書DBから全12章60セクションを一気に構築","Turso DBに取り込んだ算数の参考書を素材に、教具・図解入りのインタラクティブ学習コンテンツを構築した記録。表示崩れの修正ループ、小5の子どもとの会話のコンテンツ反映、パンくず一括追加まで。","/oshieru-sansu-interactive",{"title":691,"description":692,"path":693,"publishedAt":685,"updatedAt":9},"不動産登記簿の解説コンテンツを全8章に展開し実物謄本のデータ化に着手","Turso DBに取り込んだ登記簿の参考書から解説ページを作成。原本そのままの見た目を再現したテーブル表示を調整し、第8章まで全章をコンテンツ化。実物の土地謄本のテーブルデータ化にも着手した記録。","/tokibo-registry-content-expansion",{"title":695,"description":696,"path":697,"publishedAt":698,"updatedAt":9},"コーディング原則ページのUX大改修：Bad/Good横並び・フローチャート・ベン図抽象化・難易度レベル付け","Vue製のコーディング原則ページに4つの大型UX改善を入れた1日。Bad/Good横並び、前提条件フローチャート、ベン図による光と影（ド・モルガン）の抽象化、全62トピックへの初級・中級・上級レベル付けまでを Codex レビュー込みで進めた記録。","/coding-principles-ux-overhaul","2026-06-13T00:00:00.000Z",{"title":700,"description":701,"path":702,"publishedAt":698,"updatedAt":9},"memory-makersに日本の機械受注「電子計算機等」統計を追加した話","内閣府の機械受注統計（電子計算機等）をmemory-makersの統計情報セクションに追加した。半導体製造装置の需要動向を追うつもりが、2017年6月の表章変更で『電子計算機+半導体製造装置』の合算でしか取れないと判明したワークフローと発見の記録。","/japan-computer-orders-statistics-added",{"title":704,"description":705,"path":706,"publishedAt":698,"updatedAt":9},"Nuxt Content の database lock と auto-import 衝突によるビルドエラー - dev起動失敗から measure-deploy で再発するまでの2連続","dev server 起動時に @nuxt/content が SQLite を握れず落ちた。裏で pnpm generate が走っていたのが真因。さらに同じ日の午後、auto-import 衝突を避けるため export const を内部 const に降格させたら、明示 import していたページ側を直し忘れて measure-deploy.ps1 がビルドエラーで止まった。","/nuxt-content-db-lock-and-auto-import-conflict",{"title":708,"description":709,"path":710,"publishedAt":698,"updatedAt":9},"AIっぽくないWebデザインで3業種サイトを業種別にリビルド - ワークショップ用プロンプトに学びを還流","和菓子舗・美容室・飲食店の3業種サイトを、共通テンプレートを廃止して業種固有の独立デザインに作り直した。frontend-designスキルで既視感の強いSaaS定番を避け、地図埋め込み・電話ボタン・クチコミ調査までを一気に追加し、ワークショップのサイト作成プロンプトに反映した記録。","/three-business-sites-anti-ai-design",{"title":712,"description":713,"path":714,"publishedAt":698,"updatedAt":9},"不動産登記簿の実例ページを dev 限定で実装し、git 履歴から個人データを浄化した日","土地謄本の解説ページを Nuxt 上で実装する過程で、private データを誤って git にプッシュしたことに気づき、filter-repo で履歴ごと消した。Codex レビュー、リークスキャンの postgenerate 化、紙芝居 SVG タイムラインまでを 1 日で詰めた記録。","/tokibo-jitsurei-private-data-and-svg-timeline",{"title":716,"description":717,"path":718,"publishedAt":719,"updatedAt":9},"カメラの露出シミュレーターを Nuxt のページに移植して、SS/F値/ISO の三角関係を体感する","logcamera.com の露出シミュレーターを参考に、シャッタースピード・絞り・ISO の3パラメータをスライダーで動かせるブラウザシミュレーターを Vue ページとして実装した。最初は『SS を変えると明るさだけが変わってブレが出ない』バグに気づき、効果学習モードと露出学習モードの2モードに分けて解決した記録。","/camera-exposure-simulator","2026-06-14T00:00:00.000Z",{"title":721,"description":722,"path":723,"publishedAt":719,"updatedAt":9},"不動産投資ガイド /fudosan-toshi に5STEP構成のイントロを足し、9章すべてにパンクズを通した","tokibo の intro パターンを fudosan-toshi に転用し、9章を「全体観 / 何を買うか / 仕組み / 運営と出口 / 拡大とリスク」の5STEPでグルーピングしたイントロページを追加した。あわせて、ハブから章ページまで13ページに layout 経由でパンクズを差し込んで戻り導線を統一した記録。","/fudosan-toshi-intro-5step",{"title":725,"description":726,"path":727,"publishedAt":719,"updatedAt":9},"宅建オリジナル教科書プロジェクト Phase 1.5 着手 — 金型 5_1『宅地建物取引業・免許』の本文 + SVG 17 枚をサブエージェント並列で生成した","宅建オリジナル教科書（6 分野 × 49 カテゴリ）の Phase 0（設計確定）から Phase 1.5（金型カテゴリ 5_1『宅地建物取引業・免許』の本文と SVG 17 枚生成）まで一気に着手した。Phase 0 でハブシェル・トップカード・進捗ダッシュボードを揃え、Phase 1 で 6 分野の章立てマスター（H2 227 個 / H3 310 個 / SVG 537 枚）をサブエージェント 6 並列で生成。Phase 1.5 で 5_1 の本文と SVG を並列起動した直後にユーザーから『本文まだできてないってこと？』と指摘されて進捗計画書をまとめ直した一日の記録。3 月 21 日に作った宅建 SVG の手順を思い出すくだりも含む。","/takken-textbook-phase-1-5-start",{"title":729,"description":730,"path":731,"publishedAt":719,"updatedAt":9},"ガイド /tokibo に第1〜8章を俯瞰する『イントロダクション』を入れて、各章へのSVG地図リンクを埋め込んだ","/tokibo の入口に独立した導入ページを置き、1枚のSVG地図と章別カードで全体構成を見せる。地図のカードをクリックすると章ページへ飛び、各SVGをクリックするとモーダルで拡大、ESCで閉じる挙動を他ページと揃えた。","/tokibo-introduction-chapter",{"title":733,"description":734,"path":735,"publishedAt":719,"updatedAt":9},"社内 AI デモページ3本に Müller-Brockmann グリッドを当てる — 写真の高さがガタついたのは subgrid と box-sizing と translateY のせい","社内 AI ワークショップで作った3つのデモページ（お菓子店・美容室・飲食店）を、Müller-Brockmann グリッドシステムのスキルで12列モジュラーグリッドに乗せ替えた。最初は subgrid 継承ミスでカードが縦に並び、写真の高さも揃わず画面がガタついた。検証ハーネスを最初から回さず目視で済ませたのが直接の敗因。verify を走らせて 0px 一致まで詰めたあと、ナビ追加・サイドバー削除まで一気通貫で整えた記録。","/tsukumi-demo-grid-layout",{"title":737,"description":738,"path":739,"publishedAt":740,"updatedAt":9},"Cloudflare Pages の 1MB Worker bundle 制限に当たって構成図A〜Dを書きながら設計判断を整理した","Nuxt 4 アプリの SSR Worker bundle が gzip 後 3.18 MiB まで膨らんで Cloudflare Pages の制限を超過した。プラン A/B/C/D を構成図に起こして比較し、最終的に HTML を public/ に直配置する Plan D へ収束させ、Phase 1 を本番デプロイするまでの設計判断と試行錯誤の記録。","/cloudflare-pages-workers-bundle-architecture","2026-06-16T00:00:00.000Z",{"title":742,"description":743,"path":744,"publishedAt":740,"updatedAt":9},"2026年6月16日の開発日記 - Cloudflare の1MB壁とNuxtビルド20分の壁、両方に頭をぶつけた日","Cloudflare Pages の Worker bundle 1MB制限と Nuxt の20分ビルドにそれぞれ別プロジェクトで衝突した日。Aプランで撤退してドキュメントに残し、本棚は10冊単位で取り込み続け、scatter は FCF 軸を生やして完了させた。","/2026-06-16-diary",{"title":746,"description":747,"path":748,"publishedAt":740,"updatedAt":9},"Nuxt Content v3 でビルド時間20分の壁に並列化で挑んだが意味なかった話","Cloudflare Pages へのデプロイで Nuxt Content v3 のビルド時間が20分に膨らんだ。タグページ削除で13分台まで落とせたが、そこからさらに concurrency: 8 で並列化を試したら逆に遅くなった。Nitro の prerender が worker_threads 未対応で並列化が効かないと判明するまでの試行錯誤を記録する。","/nuxt-build-time-parallel-investigation",{"title":750,"description":751,"path":752,"publishedAt":753,"updatedAt":9},"書棚のKindle蔵書識別と漫画フィルタを整える","shelfページにKindleバッジを追加し、シリーズもの集約と漫画フィルタで一覧の見通しをよくした。BLOODY MONDAYのregexバグ、紙本のチ。問題、イラスト技法書の扱いに寄り道した記録。","/kindle-bookshelf-ui-improvements","2026-06-19T00:00:00.000Z",{"title":755,"description":756,"path":757,"publishedAt":758,"updatedAt":9},"キオクシア決算サマリー記事公開と beat-monitoring/285A の途中対応 — アナリストコンセンサスがない銘柄をどう扱うか","2026年6月25日の開発ログ。マイクロン FY26 Q3 と同じフォーマットでキオクシア（東証プライム: 285A）の FY25 Q4 決算サマリー記事を公開し、IR データブックから24四半期分の財務 TS データも整備した。続けて /beat-monitoring/285A にデータを反映しようとしたところ、キオクシアにはまともなアナリストコンセンサスが取れていないことが判明。Kioxia だけ『前Q時点の会社ガイダンス vs 実績』に切り替える方針へ移行し、BeatExpectationsChart と 285A.json の構造を読み始めたところで時間切れ。明日続きをやるための持ち越しメモ。","/kioxia-fy25-q4-summary-and-beat-monitoring-todo","2026-06-25T00:00:00.000Z",{"title":760,"description":761,"path":762,"publishedAt":758,"updatedAt":9},"Micron Q3 FY26 決算をbeat-monitoringとearnings-dynamicsに手作業で反映した記録","Micron Technology（MU）のFY26 Q3決算発表日に、Koyfin Step 0がChrome DevTools不調でスキップされた状態から、beat-monitoringとearnings-dynamicsの両ページに実績$41.5B vs コンセンサス$35.84BとQ4ガイダンス$50Bを手で流し込んだ作業ログ。Q4 FY26ボタンが出ないバグの原因がfocusQuartersフィルタだった件、バー並び順を予想→ガイダンス→実績に整えた件、divider lineを最後の実績Qの右端に変えた件、IRサマリーカード新規作成、SCA 5年契約1→7件のファクト確認まで。","/micron-q3-fy26-beat-monitoring-coverage",{"title":764,"description":765,"path":766,"publishedAt":767,"updatedAt":9},"Cloudflare Pages はもう Workers の中に住んでいる ― Static Assets 統合後の地図","「Pages 推奨」だったのに、いつのまにか「Workers の Static Assets が推奨」に変わっていた。Pages が廃止されるのか、Workers と何が違うのか、自分の2プロジェクトはどうなるのかを Before / After の図で整理した。","/cloudflare-pages-to-workers-static-assets","2026-06-29T00:00:00.000Z",{"title":769,"description":770,"path":771,"publishedAt":767,"updatedAt":9},"Nuxt Content の記事タイトルが本文に出ない問題を DocPage 側の自動分岐で解消した","frontmatter の title が画面に出ず読みづらかった問題を、DocPage.vue 側で本文 AST の h1 有無を見て自動補完するロジックで潰した。単一描画点に閉じ込めた判断の記録。","/docpage-auto-title-display",{"title":773,"description":774,"path":775,"publishedAt":776,"updatedAt":9},"/blog のカレンダーに make-diary 自動生成バッジを追加した","ブログ一覧で make-diary コマンド製の日記と手書き記事を見分けられるよう、BlogCalendar と ArticleTable に小さなバッジを追加した。スキーマは触らず、既存の category: diary を読み替えただけで済んだ。","/blog-make-diary-badge-ui","2026-06-30T00:00:00.000Z",{"title":778,"description":779,"path":780,"publishedAt":776,"updatedAt":9},"2026年6月30日の開発日記 - つくみセミナードラフトとSVG 17枚スライド","ai-position-mapとつくみセミナーをSVG化、クリエ塾の年間カレンダー登録、/blogにmake-diaryバッジ追加、Xブックマーク9387件から生成AIネタ719件抽出。","/2026-06-30-diary",{"title":782,"description":783,"path":784,"publishedAt":785,"updatedAt":9},"過去記事に散らばったSVG図版を一覧するギャラリービューアを作った","ブログ記事に埋め込んだSVG図版が増えすぎてどの記事にあるか思い出せなくなった。全画面グリッドとスライド形式の2パターンのビューアを実装し、生成スクリプトの抽出漏れも直して335枚を新しい順に俯瞰できるようにした。","/svg-gallery-viewer","2026-07-01T00:00:00.000Z",{"title":787,"description":788,"path":789,"publishedAt":790,"updatedAt":9},"消費税のインタラクティブ教材をNuxtで構築 — 調査エージェント2本を並行で走らせてコースページを実装した","素材収集と実装の器調査をバックグラウンドエージェントで並行実行し、縦スクロールのコース型ページ・採点ロジック・演習コンポーネントを実装。導線がゼロだった発見と検証の記録。","/consumption-tax-course-build","2026-07-02T00:00:00.000Z",{"title":792,"description":793,"path":794,"publishedAt":790,"updatedAt":9},"スクショ1枚でバグ修正、執筆エージェント9体で教材づくり — レッスンサイトにClaude Codeスキル作成講座を追加した日","運営する学習レッスンサイトのチャプター表示バグをスクショ1枚の報告で直してコミットさせた。続けて、Claude Codeのスキル作成を学ぶ新レッスンを執筆エージェント9体の並列で構築。セッションリミットでの中断・再開と、進捗ドキュメントを残しての切り上げまでの記録。","/lessons-chapter-bug-and-skill-lesson",{"title":796,"description":797,"path":798,"publishedAt":799,"updatedAt":9},"韓国半導体輸出ページに6月分を反映 - PDF取得失敗の原因特定とチャート表示検証の往復","月次更新している韓国半導体輸出統計ページに2026年6月分を反映した記録。PDF取得失敗の原因がUser-Agent欠落だと突き止めて更新コマンドを整備し、dev環境での表示検証で「チャートに6月がない」問題を切り分けた。","/korea-chip-exports-june-update","2026-07-03T00:00:00.000Z",{"title":801,"description":802,"path":803,"publishedAt":799,"updatedAt":9},"レッスンページの表示改善 — テーブルは余白で区切り、コードブロックは折り返してhighlight.jsで着色する","自作講座のレッスンページで、境界線のないテーブルと横スクロールバーの出るコードブロックを直した記録。罫線ではなく余白と薄いグレー背景で区切り、pre/codeの折り返しとhighlight.jsのクライアント遅延ロードまで整えた。","/lesson-page-table-code-formatting",{"title":805,"description":806,"path":807,"publishedAt":808,"updatedAt":808},"pnpm generate が exit 134 で落ちた日——ヒープOOMと検証スクリプト偽陽性の二段落ち","SSGビルドが同じ朝に2回、別々の理由で落ちた記録。1回目はV8ヒープ4GB上限到達のOOM（exit 134）、2回目はビルド時検証スクリプトの除外リスト更新漏れによる偽陽性。それぞれの切り分け手順と修正、再発防止策をログ付きで残す。","/generate-oom-and-verify-false-positive","2026-07-04T00:00:00.000Z",{"title":810,"description":811,"path":812,"publishedAt":808,"updatedAt":9},"韓国半導体輸出ページに速報値チャートを拡充した - DRAM/NAND単価・SSD/MCPをPDF速報から反映","韓国の月次輸出統計PDF（速報）からDRAM/NAND輸出単価チャートを新設し、SSD・MCPの速報値も反映。モーダル拡大の統一、X軸表記の変更、欠損月の可視化まで進めた記録。","/korea-chip-export-flash-charts",{"title":814,"description":815,"path":816,"publishedAt":817,"updatedAt":9},"2026年7月6日の開発日記 - 学習ゲート付き開発ループを1日で実装して全リポジトリに広げた","AIに書かせたコードを理解せずにコミットできなくする学習ゲートを設計から実装・実運用テストまで通した1日。問題集アプリPhase 2-3、仕事の型の記事化、ChatGPT Proへの拡張ブリッジも。","/2026-07-06-diary","2026-07-06T00:00:00.000Z",{"title":819,"description":820,"path":821,"publishedAt":822,"updatedAt":9},"トップページにGitHub草風ヒートマップを実装、テスト18,440件全パス化とKRW単位ラベルの根本修正","ブログトップにGitHubのコントリビューショングラフ風の投稿ヒートマップを実装。ユニットテストの失敗34件を1件ずつ切り分けて全パスにし、KRW銘柄に$Bラベルが付くバグだけは生成パイプラインから直した記録。","/contribution-heatmap-and-krw-label-fix","2026-07-13T00:00:00.000Z",{"title":824,"description":825,"path":826,"publishedAt":822,"updatedAt":9},"講座ページに「前へ/次へ」フッターナビを標準装備 - スマホで行き止まりになる問題とSVG 105件の本番未アップロード修正","スマホ表示の講座ページに次へ進むボタンがなく行き止まりになっていた。調査するとSVG 105件が本番CDNに未アップロードだったことも発覚。git worktreeで共通フッターナビを実装し、レイアウト側で全コンテンツに自動描画するまでの記録。","/lesson-footer-nav-and-mobile-fixes",{"title":828,"description":829,"path":830,"publishedAt":822,"updatedAt":9},"月次統計カードにNEWバッジを実装 - データ鮮度で自動点灯・自動消灯させる","台湾旅行で5日空いた統計チェーンを再開し、39銘柄の決算スナップショットと台湾ODM月次売上6月分を反映。更新銘柄を探す手間をなくすため、dataUpdatedAtによるNEWバッジの自動減衰ロジックを実装した記録。","/memory-makers-new-badge",{"title":832,"description":833,"path":834,"publishedAt":835,"updatedAt":9},"デザインシステム基礎講座を磨き込んだ一日——ターゲット別モックアップ・9ステップ実践LP・ハンバーガーメニュー実装","自作のデザインシステム基礎講座を丸一日改善した記録。同じ健康管理アプリをターゲット別に組み分けた比較モックアップ、良い情報設計の9ステップを実践したLPとスクロールスパイ、章扉画像15枚、ハンバーガーメニュー実装、JSON再生成の罠まで。","/design-system-course-refinement","2026-07-14T00:00:00.000Z",{"title":837,"description":838,"path":839,"publishedAt":840,"updatedAt":9},"語源英単語アプリの例文を作り込んだ日 — 実写画像から抽象イラストへの方針転換・単語のマゼンタ強調・Piper TTSの再生ボタン","例文画像の生成方針を実写風から抽象イラスト風に切り替えて章単位で量産し、例文中の見出し語をマゼンタで強調。英→日/日→英クイズの分離、Piper TTSを1文だけ試してから音声再生ボタンを本実装するまでの記録。","/gogen-eitango-example-images-and-audio","2026-07-15T00:00:00.000Z",{"title":842,"description":843,"path":844,"publishedAt":840,"updatedAt":9},"herdr Windowsベータ導入とFeliCa勤怠構想、Claude Code警告の退治まで — 開発ツールと環境整備の一日","AIエージェント用ターミナルマネージャherdrのWindowsベータ導入、手持ちのRC-S380で勤怠管理を作る構想の記事化、Claude Code起動警告の原因調査、非公開記事のパンくず修正、devサーバー復旧までの記録。","/herdr-felica-and-env-fixes",{"title":846,"description":847,"path":848,"publishedAt":849,"updatedAt":9},"英語の図解Artifactを日本語化して単独Vueページで公開するまで - AI導入5ステップの移植記録","claude.aiで共有されていた英語の図解「Steps of AI Adoption」をChrome経由で読み取って日本語訳し、横4カラム/縦1列を切り替えられる単独Vueページとして本番公開するまでの記録。","/ai-adoption-steps-page","2026-07-17T00:00:00.000Z",{"title":851,"description":852,"path":853,"publishedAt":854,"updatedAt":9},"2026年7月19日の開発日記 - 朝に足した内部リンクが夕方のビルドを3倍遅くしていた","Search Console分析から内部リンク553ページを実装した数時間後、デプロイが26分に膨張。犯人は自分の施策だった。TTS音声7,700ファイル生成、先行指標統計4本の毎朝チェーン組み込みも。","/2026-07-19-diary","2026-07-19T00:00:00.000Z",{"title":856,"description":857,"path":858,"publishedAt":854,"updatedAt":9},"Google Search Console分析から内部リンク実装へ — Nuxtブログに関連記事セクションとタグページ553枚を一日で載せた","検索パフォーマンスが伸びない原因をGoogle Search Consoleで棚卸ししたら、技術ではなく内部リンク構造だった。関連記事の選定ロジックとタグページを実装し、デプロイ・本番確認・コミットまで一日で通した記録。","/gsc-internal-linking-implementation",{"title":860,"description":861,"path":862,"publishedAt":854,"updatedAt":9},"NuxtのSSGビルドが3倍遅くなった原因調査 — 差分ビルドではなくプリレンダー共有キャッシュで立て直す","デプロイが26分に膨らんだ原因を過去計測と突き合わせて調査。関連記事とタグページが毎回全記事を引き直すO(N²)構造を特定し、差分ビルドを見送って全件クエリの1回化とタグ逆引き索引の共有を計画・実装するまでの記録。","/ssg-prerender-fullscan-cache",{"title":864,"description":865,"path":866,"publishedAt":854,"updatedAt":9},"Piper TTSで英単語3,859語の音声を無料生成 ― GPUより効いたバッチモード11倍速と自動発音モード","英単語レッスンサイトの単語と例文にローカルTTSで音声を付けた記録。生成の遅さの原因はGPU不足ではなくモデル読み直しのオーバーヘッドで、バッチ入力モードへの切り替えで11倍速に。PCレイアウトの余白調整とページ遷移時の自動発音モードも実装した。","/vocab-lesson-tts-and-ui-modes",{"title":868,"description":869,"path":870,"publishedAt":871,"updatedAt":9},"語源英単語トレーナーに想起練習を実装し、ストリーム型クイズUXを移植するまで","英単語の反復学習がなぜ退屈なのかを想起練習の理屈から捉え直し、語源英単語アプリに『今日の復習』トレーナーを実装した。迷いやすかった入り口を整理したあと、別プロジェクトで見つけた選択→即判定→自動スクロールのUXを実装メモ経由で移植した一日の記録。","/gogen-eitango-stream-quiz-ux","2026-07-20T00:00:00.000Z",{"title":873,"description":874,"path":875,"publishedAt":876,"updatedAt":9},"語源英単語4000語をどう一覧化するか — Codex実装の停滞からナビゲーション統合まで","eurekapu-nuxt4の語源英単語講座に4000語一覧・語根ファミリーページを作った日。Codexへの実装委任が3時間止まり、Sonnet 5に実装させてCodexにレビューさせる形へ切り替えた判断と、全語を割り振れなかった理由を振り返る。","/gogen-eitango-word-list-navigation","2026-07-21T00:00:00.000Z",{"title":878,"description":879,"path":880,"publishedAt":881,"updatedAt":9},"Cloudflare PagesとWorkers Static Assetsの違い、エッジキャッシュが効く仕組み","Cloudflare PagesとWorkers Static Assetsの関係、静的サイトでオリジンが叩かれない仕組み、GitHub Actionsとデプロイの関係を、mdx-playgroundの実際の設定を例に整理する","/cloudflare-pages-workers-static-assets","2026-07-22T00:00:00.000Z",{"title":883,"description":884,"path":885,"publishedAt":881,"updatedAt":9},"eurekapu-nuxt4の積み残し解消：lint・依存脆弱性ゼロ化から語源単語ページ再構成まで","前日からの積み残し3件（未push・lint・表示確認）を片付けたら、Dependabot警告10件のゼロ化、既存バグの発見、語源単語ページのセクション統合、スクロールバー自動追従の実装まで芋づる式に広がった一日の記録。","/eurekapu-nuxt4-maintenance-catchup",{"title":887,"description":888,"path":889,"publishedAt":881,"updatedAt":9},"Webサービスの技術構成 2026年版 — Vue.js/Nuxt/Astroの使い分けとその理由","個人的な技術選定メモをVue.jsベースに統一し、React+ViteとNext+Viteの関係、Vue+ViteとNuxtの分かれ目、Astroとの使い分け、Workers直接とHonoの使い分け、DB・ストレージ・メール配信の規模別実例までを整理する","/web-tech-stack-2026",{"title":891,"description":892,"path":893,"publishedAt":894,"updatedAt":9},"「汎用的にはAstro」は何を指しているのか","静的サイトの技術選定でAstroが「汎用的」と評される理由を、Nuxtとの比較で整理する。汎用性には機能の広さと適合度という二つの軸があり、勝つ側が違うだけである","/astro-vs-nuxt-general-purpose","2026-07-23T00:00:00.000Z",{"title":896,"description":897,"path":898,"publishedAt":899,"updatedAt":9},"簿記学習サイトのクイズ入口をハブ化 — 問題文UIから矢印キー移動まで一気に整理した","Nuxt移行版の簿記学習サイトで仕訳問題集まわりを統合。勘定科目名を独立表示する問題文UI、矢印キーでの問題移動、簿記と英単語を分けるハブ画面の再設計まで、Opus 5のサブエージェントを並列で回した一日の記録。","/bookkeeping-quiz-hub-redesign","2026-07-25T00:00:00.000Z",{"title":901,"description":902,"path":903,"publishedAt":904,"updatedAt":9},"全18講に触って動くシミュレーターを入れた日 — PR12本のレビューから講座導線の作り直しまで","宙に浮いていた12本のPRをサブエージェントに並列レビューさせてマージし、トップページの導線を一覧ページ経由に組み直したあと、講座の全18講に触って動くシミュレーターを入れた一日の記録。","/code-course-interactive-rollout","2026-07-26T00:00:00.000Z",{"title":906,"description":907,"path":908,"publishedAt":904,"updatedAt":9},"語源英単語コースの手触りを直した一日 - 音の鳴り方から、設定のユーザー別DB保存まで","矢印キーでのページ移動時に単語・例文の音声を鳴らし分けるチェックボックスを付け、誤答のときだけ例文と情景画像を出すようにした。あわせてブラウザ保存だった設定をログイン済みユーザー単位でDBに移し、別ブラウザでも同じ設定が戻る状態にするまでの記録。","/etymology-learning-ux-and-settings-sync",{"title":910,"description":911,"path":912,"publishedAt":904,"updatedAt":9},"インタラクティブ教材を1枚に集約し、本文の線を減らした日","翻訳記事に埋め込んだ15個の教材をブラウザで全部動かして原文と突き合わせ、体験だけを集めた一覧ページを新設した記録。薄いグレー文字と意味のない枠線を落として本文を読める状態に戻し、外部サイトへ直リンクしていた画像10枚をローカルに引き取るまで。","/interactive-content-consolidation",{"title":914,"description":915,"path":916,"publishedAt":904,"updatedAt":9},"本番切替の前に移行先サイトを仕上げた日 — 画像の謎、フォームの文字化け、トップページの作り直し","DNS切替の前に移行先サイトを全ページレビュー。コンセプトページの画像が出ない原因、お問い合わせメールが2通目から文字化けした理由、トップページを深掘りしたくなる作りに変えるまでの記録。","/wordpress-site-final-polish",{"title":918,"description":919,"path":920,"publishedAt":921,"updatedAt":9},"Herokuを止められるか、nuxt generate を4回回して確かめた — 旧Nuxt 2アプリ静的化の実測","Herokuで動かしている旧Nuxt 2の学習アプリを静的化できるか、コードを読ませて4回ビルドを回した記録。関門はOpenSSLではなくメモリだった。失敗6ルートの正体、参照402箇所の全件照合、Cloudflare Pagesの制限確認まで。","/app-static-build-heroku-retirement","2026-07-27T00:00:00.000Z",{"title":923,"description":924,"path":925,"publishedAt":921,"updatedAt":9},"苦手な語だけを解き直すページを作った日 - 正解1回で消える穴と、自動再生設定のD1同期漏れ","連続正解が1回入るとカウントが0に戻り、慢性的に落としている語ほど一覧から消える。通算の取りこぼし回数で切り直して苦手語ページを実装し、あわせて片方だけDB同期から漏れていた自動再生設定を1系統に統合するまでの記録。","/weak-words-page-and-d1-settings-sync",{"title":927,"description":928,"path":929,"publishedAt":921,"updatedAt":9},"移行サイトのSEO・AI-SEO改善を1日で回した — 画像altを480件、記事の要点を203本、OG画像を署名付きに","WordPressからNuxtへ移した個人サイトのSEO/AI-SEO改善を朝から夜まで進めた記録。動的OG画像の本番投入、apex転送先の変更、サブエージェント並列でのメタ改訂、画像altをAIに図を読ませて埋めるまで。","/wordpress-nuxt-ai-seo-phase-c",{"title":931,"description":932,"path":933,"publishedAt":934,"updatedAt":9},"Vueページは必ずWorkerバンドルに載る — 静的HTML化と「島マウント」でCloudflare Workersの上限から逃げる","Cloudflare Workersのバンドル上限に当たったので、レッスンページを外部HTMLへ書き出した1日の記録。月$5で3→10 MiBに上げられるが上げず、コンテンツの切り分けから始めた。ClientOnlyがSSRに痕跡を残さない問題、世代トークン、ピクセル比較でしか見つからないCSS欠落。","/worker-bundle-reduction-content-islands","2026-07-29T00:00:00.000Z",{"title":936,"description":937,"path":938,"publishedAt":939,"updatedAt":9},"自作会計システムに消費税を通した日。composable の await 連続で Nuxt コンテキストが消えた","「これ何のプロジェクトでしたっけ」から棚卸しを始め、積み残し7件を一気に実装した記録。消費税対応をスキーマからUIまで通し、Chrome DevTools MCP が繋がらず Playwright に切り替え、画面の不具合は composable 内の await 連続が原因だった。","/accounting-system-consumption-tax-phase6","2026-07-30T00:00:00.000Z",{"title":941,"description":942,"path":943,"publishedAt":939,"updatedAt":9},"開発環境のバックアップを仕上げ、復旧手順をスキル化してGitHubで版管理する","前日の積み残しから開発環境バックアップの残り2論点を決め、復旧の手順書そのものをユーザーレベルのスキルにして日次でGitHubへ載せた記録。動画ダウンロード失敗の切り分け、ffmpegのPATH訂正、ビルドを落とした並行実行までを含む一日。","/claude-env-backup-and-restore-skill",{"title":945,"description":946,"path":947,"publishedAt":939,"updatedAt":9},"2026年7月30日の開発日記 - 3つのリポジトリに同じ問いを投げた朝","「昨日の積み残しって何でしたっけ」を3つのリポジトリで聞いて回った日。消費税対応を通し、Workerのバンドルを287KiB空け、AMDのTAM記事を書き、配布済みChrome拡張の中身を読み、環境バックアップを仕上げた。","/2026-07-30-diary",{"title":949,"description":950,"path":951,"publishedAt":939,"updatedAt":9},"Cloudflare Worker のバンドル削減2日目、外部HTML化で287KiB空けて miller-viewer 島は予測の1割だった","Cloudflare Workers のバンドル上限に向けた削減の続き。教科書12章を外部HTMLへ出して margin を656.3から943.3 KiB に広げ、次に miller-viewer 島33ページを切り出したが削減は予測の10.4%で止まった。CSSの接頭辞衝突と、grep が自分自身を消した事故の記録。","/nuxt-worker-bundle-reduction-miller-viewer",{"title":953,"description":954,"path":955,"publishedAt":956,"updatedAt":9},"dev サーバーを止めずにデプロイできるよう、Nuxt のビルド出力先と Content DB を分けた","所要時間計測スクリプトがガードで止まったのをきっかけに、pnpm dev と pnpm generate が共有していた .nuxt と Content の SQLite を分離した。ついでに走りっぱなしのプロセスを一覧する /procs も作った。","/deploy-while-dev-running","2026-07-31T00:00:00.000Z",{"title":958,"description":959,"path":960,"publishedAt":956,"updatedAt":9},"2026年7月31日の開発日記 - 消えたファイルの原因を物証で特定した日","2日前に消えたファイルの原因を、一時ディレクトリに残っていた出力から特定した。ほかにランチェスター戦略の2段スキル化と実機テスト、決算コメントの原文検算とチャート化、蔵書データベースの運用整備、dev を止めずにデプロイできる構成への変更。","/2026-07-31-diary",1785654920803]