• #日記
  • #Nuxt
  • #Vue
  • #ライフプラン
  • #CSS
開発daily-logメモ

2026年1月17日の開発日記

今日は人生計画シミュレーターのUI実装に集中した日だった。Excelで作成していたライフプランシミュレーターをWebアプリに移植する作業を進め、多くの技術的な課題を解決した。

今日やったこと

1. 人生計画シミュレーターのUI実装

Nuxt 4でExcelのライフプランシミュレーターをWebアプリに移植した。方針は「見た目(UI)を先に作り、後からロジックとデータを繋ぐ」。

主な成果:

  • ミラーカラム(3段階ナビゲーション)を実装
  • サマリー画面を段階損益形式のマトリックステーブルに変更
  • ウォーターフォールチャートで生涯年収の流れを可視化
  • 年次収支テーブルで42年分のデータを一覧表示
  • 矢印キーでタブ内ナビゲーションを実装

詳細: Nuxt 4で人生計画シミュレーターのUIを実装する


2. CSSのstickyヘッダー問題を解決

Flexboxレイアウト内でposition: stickyが効かない問題に遭遇。Flexboxの高さ制約が正しく伝播しないことが原因だった。

解決策:

  • 親要素にmin-height: 0を追加
  • スクロールコンテナを明確に設定

詳細: CSSでテーブルヘッダーを固定する


3. Nuxtキャッシュ問題の解決

CSSの変更がブラウザに反映されない問題が発生。ハードリフレッシュでも直らなかった。

解決策:

  • 開発サーバーを停止
  • .nuxtフォルダを削除
  • サーバーを再起動

Nuxtのビルドキャッシュはサーバー側にあるため、ブラウザのキャッシュクリアだけでは不十分。

詳細: Nuxtでスタイルが反映されない時は.nuxtフォルダを削除する


4. URLルーティング設計の検討

ナビゲーション状態をURLで共有したいという要件に対し、クエリパラメータとパスベースのどちらを選ぶか検討した。

結論:

  • 「同じデータの異なるビュー」→ クエリパラメータ
  • 「別々のコンテンツ」→ パスベース

今回はシミュレーターの表示状態共有なのでクエリパラメータを採用。

詳細: URLルーティング設計:クエリパラメータとパスベースの使い分け


今日の学び

  • Flexbox内でstickyを使う場合はmin-height: 0が必須
  • Nuxtのスタイル問題は.nuxt削除で解決することが多い
  • URL設計は「リソースか状態か」で判断する
  • UIを先に作ってロジックを後から繋ぐ方が効率的

明日やること

  • Excelデータを読み込んでハードコード値を置き換え
  • 入力フォームから値を変更できるようにする
  • 計算ロジックの実装

関連記事