• #日記
  • #eurekapu-nuxt4
  • #Excel講座
  • #Cloudflare Access
  • #AutoHotkey
daily-log

2026年4月8日の開発日記

朝5時からeurekapu-nuxt4のExcel講座移行に取りかかり、日が暮れる頃にはExcel講座60ファイル・110セクションの移行、CF精算表ワークシートの完全移植、Cloudflare Accessの限界に突き当たってプライベートサイトを別プロジェクトに切り出す判断まで、一気に駆け抜けた一日だった。

今日やったこと

1. Excel講座の大規模移行とUI改善(eurekapu-nuxt4)

朝一番にCF精算表ワークシートの移植から着手。Piniaストア接続が通り、593件のテスト全パスを確認してからExcel講座本体の移行に突入した。60ファイル・110セクションをサブエージェント並列で変換し、Phase 0(メディアアセット)からPhase 7(検証)まで一気に完了。

TheaterViewerに4つの大きな改善を入れた: inlineTopicsモード(アコーディオン式トピック列統合)、stageHtml(概要テーブル+クリック遷移)、SyntaxCard(関数構文表示)、VideoSubtitlePlayer(字幕同期プレイヤー)。

UIバグも5件潰した。セクション戻りナビゲーションバグ、コンテンツ幅のmax-width、テキスト-画像間の空白、スクロール余白、プレースホルダー画像の誤配置。

主な成果:

  • CF精算表ワークシート完全移植(29ファイル、8,622行追加、593テスト全パス)
  • Excel講座60ファイル・110セクション移行完了
  • TheaterViewer 4機能追加
  • 演習ページ35件の移行計画策定
  • WordPress CDN動画の生存確認(curl日本語URLエンコーディング問題で404に見えたが実際は200 OK)

詳細: Excel講座60ファイル・110セクションをNuxt4に移植した一日の全記録


2. Cloudflare Accessとプライベートサイト分離(mdx-playground)

/private以下にCloudflare Accessをかけたが、SSG + SPA遷移でアクセス制御をバイパスされる問題が発覚。ミドルウェアでフルページリロードを挟んだが、プリレンダリングされたHTMLにコンテンツが平文で含まれている以上、根本解決にならない。結局apps/privateとして別プロジェクトに分離し、private.eurekapu.comにデプロイした。

主な成果:

  • SSGのセキュリティ特性を理解(プリレンダリング = 平文HTML公開)
  • apps/privateミニマルNuxtアプリ構築(コンポーネント共有)
  • private-eurekapu Cloudflare Pagesプロジェクト作成・デプロイ
  • トップページに鍵アイコン(opacity 0.4)で控えめな導線追加

詳細: Cloudflare AccessとSSGの相性問題から別プロジェクト分離に至るまで


3. AutoHotkey Excel全ウィンドウ一括配置(misc-dev)

ウルトラワイドモニターで散らばるExcelウィンドウを、Stream Deckのボタン一発でモニター中央(1920x1080)に揃えるスクリプトを作成。バッチのhere-string問題、1プロセス複数ウィンドウの壁、EnumWindows + XLMAINクラス列挙、SW_SHOWNORMALによるリサイズ対応と、4段階の試行錯誤を経て完成。

主な成果:

  • excel-center.bat + excel-center.ps1 作成
  • EnumWindowsで全Excelウィンドウ(8個)を一括配置
  • Stream Deckから即実行可能

詳細: Excel全ウィンドウをウルトラワイドモニター中央に一括配置するStream Deck用スクリプト


4. Excel ViewerのHyperFormulaエラー修正(mdx-playground)

Excel ViewerでSheetJS + HyperFormulaの数式再計算が#LIC!エラーになる問題。licenseKey: 'gpl-v3'の明示指定で解消。配列数式(INDEX/MATCH等)が#VALUE!になるHyperFormulaの制約も確認。

詳細: Excel Viewer: HyperFormulaで#LIC!と#VALUE!エラーが出る原因と対処


今日の試行錯誤

#テーマ試したこと結果気づき
1セクション戻りバグnavigateToMajorの遷移先を確認常に?ci=0(先頭)に飛んでいた?last=1パラメータで最後のスライドに飛ばす対応
2テキスト-画像間空白min-height: autoに変更解消せず.theater自体がflex: 1で全体を埋めていた。flex: 0 1 autoで解決
3プレースホルダー画像旧ファイルと突き合わせ旧ファイルにはテキストのみ、画像なしAI移行時にExcel演習スクリーンショットを無関係なセクションに配置していた
4WordPress CDN 404curlで動画URLを叩いた404が返った日本語URLのエンコーディング問題。英語パスやURLエンコード済みパスは200 OK
5SSGセキュリティミドルウェアでフルリロードSPA遷移は防げたHTMLソース表示でコンテンツが丸見え。プリレンダリング=平文公開
6wranglerデプロイ失敗wrangler pages deploy distプロジェクト未作成エラーwrangler pages project createが先に必要
7production branch不一致デプロイがPreview環境に本番URLで表示されない--production-branch mainだが実際はmaster--branch=mainで解決
8Codex使用制限codex exec実行レートリミットエラーChatGPT Plusサブスク期限切れが原因。更新で復活

今日の学び

  • SSGサイトでアクセス制御が必要なコンテンツは、同一プロジェクト内のルーティングで分けるのではなく、プロジェクトごと分離するのが最も確実
  • flex: 1が意図しない余白を生むパターン。レイアウトデバッグではまずflexの成長係数を疑う
  • AI(サブエージェント)にデータ変換を任せると、手元にある画像を「とりあえず入れておく」挙動をする。旧ファイルとの突き合わせ検証は必須
  • WordPress CDNのcurl確認で404が返っても、日本語URLエンコーディングの問題を疑う。ブラウザでは正常に表示される場合がある

明日やること

  • Excel講座: millerExcelFunctions.tsのプレースホルダー画像を旧ファイルと突き合わせ修正
  • Excel講座: 演習ページ35件の移行実装(memo/2026-04-08/excel-exercises-migration-plan.md
  • Excel講座: SyntaxCardコンポーネントの全セクション適用確認
  • Codex: 復活したCodexでExcel講座移行計画を再レビュー

関連記事