Skip to content

Conversation

takuya-okamoto-esm
Copy link

概要

プロジェクト引き継ぎ後の開発環境構築と、Amplify依存に関する技術的課題の調査・対応を実施しました。本PRでは実装した内容の共有と、今後の開発方針について関係者との協議を求めます。

🎯 目的

  1. 開発環境の復旧: モック認証により基本的な開発継続を可能にする
  2. 技術的課題の明確化: Amplify依存箇所の包括的調査
  3. 開発方針の決定: 関係者との協議による最適な開発アプローチの選択

📋 実装内容

✅ 1. モック認証システムの実装

  • 問題: 引き継ぎ時にAmplify認証エラーで開発が停止
  • 対応: SSR対応のモック認証システムを実装
  • 結果: ログイン〜アプリケーション画面への遷移が正常動作

主な変更:

  • app/lib/amplify-mock.ts: モック認証ライブラリ
  • app/routes/auth/login-mock.tsx: モックログイン画面
  • app/routes/protected/layout.tsx: Cookie + localStorage でのSSR対応
  • 環境変数 VITE_USE_MOCK_AUTH による切り替え機能

✅ 2. テスト環境の大幅拡充

  • 14 → 74テスト (60テスト追加、430%増加)
  • 高いコードカバレッジ: 重要なコンポーネント・ユーティリティを網羅

追加されたテスト:

  • app/lib/utils.ts: cn関数のクラス結合・競合解決 (11テスト)
  • app/hooks/use-mobile.ts: レスポンシブ検出フック (9テスト)
  • app/components/ui/use-toast.ts: トースト状態管理 (15テスト)
  • app/components/account-card.tsx: アカウント表示 (12テスト)
  • app/components/ui/multi-select.tsx: 複数選択UI (13テスト)

✅ 3. 開発環境の整備

  • Node.js v20環境: React Router v7の要件に対応
  • Playwright E2E: ブラウザ自動テストの環境構築
  • 包括的ドキュメント: 開発・テストガイドの整備

🔍 4. Amplify依存調査と課題発見

発見された課題:

  • アカウント一覧画面で Cannot read properties of undefined (reading 'list') エラー
  • 原因: モック認証環境でAmplifyクライアント (client.models.Account.list()) の実行失敗

調査結果:

  • Amplify依存箇所: 約30ファイル
    • 高影響度: 8ファイル (認証・クライアント設定)
    • 中影響度: 15ファイル (全データ操作ページ)
    • 低影響度: 7ファイル (型定義のみ)

📊 開発方針の選択肢

詳細は docs/logs/20250705_Amplify依存調査と開発方針検討レポート.md を参照

Option A: 全面モック化

  • 工数: 15-20営業日
  • メリット: 完全ローカル開発、AWS費用ゼロ
  • デメリット: 大規模実装、本番差異リスク、メンテナンス負荷

Option B: Amplify環境構築 (推奨)

  • 工数: 2-3営業日
  • メリット: 既存資産活用、本番整合性、短期構築
  • デメリット: クラウド依存、AWS学習コスト

🤝 関係者への相談事項

1. 前開発者への質問

  • 使用していたAWS環境の詳細
  • Amplify選択の技術的背景
  • 環境構築のサポート可能性

2. 開発方針の決定

  • Option A: 全面モック化 (20営業日)
  • Option B: Amplify環境構築 (3営業日) 👈 推奨

3. リソース・予算

  • AWS開発環境の予算承認
  • 学習時間の確保
  • スケジュールへの影響

📈 現在の状況

✅ 動作確認済み

  • モック認証フロー
  • ホーム画面表示
  • 基本的なナビゲーション
  • 全74テストの成功

⚠️ 一部制限あり

  • アカウント一覧: 暫定的にモック対応 (PR未含、方針決定待ち)
  • プロジェクト・技術管理: 同様のエラーが予想される

🎯 次のステップ

  1. 開発方針の決定 (本PRでの協議)
  2. 選択された方針の実行
  3. 全機能の動作確認

🔗 関連ドキュメント

📝 レビューポイント

  1. 技術的妥当性: 実装アプローチの適切性
  2. 開発方針: Option A vs Option B の選択
  3. 工数・スケジュール: 見積もりの妥当性
  4. リスク評価: 各選択肢のリスク受容度

このPRは開発方針の協議を目的としており、方針決定後に適切な実装を進めます。
関係者の皆様のご意見・ご判断をお願いいたします。

🤖 Generated with Claude Code

takuya-okamoto-esm and others added 13 commits June 23, 2025 22:37
- CLAUDE.mdの追加(プロジェクト概要、開発コマンド、アーキテクチャ情報)
- 設計書群の追加・更新
  - システム設計書: Node.js v20+要件の追記
  - 技術アーキテクチャ: 開発環境セットアップ手順の詳細化
  - データベース設計書: 実装状況の確認と更新
  - API設計書: GraphQL仕様とTypeScript型定義
- 要件定義書の追加

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
AWS環境なしで開発を継続できるようモック認証を実装:
- サーバーサイドレンダリング対応のモック認証チェック
- Cookieベースの認証状態管理
- モックログイン画面の追加
- ログアウト機能のモック対応

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- .nvmrc: Node.js v20指定
- .node-version: nodenv用設定
- .autorc: 自動環境切り替えスクリプト

React Router v7要件のNode.js v20.x環境を簡単に設定可能に

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- test/フォルダ構造を定義(unit, integration, e2e, manual)
- E2Eシミュレーションスクリプトを追加
- 手動テスト手順書を追加
- test/README.mdでテスト整理ルールを文書化

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- モック認証システム実装作業報告.md
- PlaywrightE2E検証環境構築作業報告.md

実装の経緯、技術的詳細、今後の展開を文書化

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- login.tsxでモック認証時に/login-mockへリダイレクト
- routes.tsにlogin-mockルートを追加
- root.tsxでモック認証時はAmplify設定をスキップ
- Authenticator.Providerの配置を修正

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- README.mdにNode.js v20環境の設定手順を追加
- .gitignoreに環境変数ファイルを追加
- 開発環境セットアップの詳細化

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- @vitejs/plugin-react、@testing-library/user-eventを追加
- vitest.config.ts設定ファイルを追加
- モック認証システムのユニットテスト (9テスト)
- nav-userコンポーネントのテスト (4テスト)
- 開発時のテスト・検証ガイドを作成
- 全14テストが成功する環境を構築

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
追加されたテスト:
- app/lib/utils.ts: cn関数のクラス結合・競合解決テスト (11テスト)
- app/hooks/use-mobile.ts: レスポンシブ検出フックテスト (9テスト)
- app/components/ui/use-toast.ts: トースト状態管理テスト (15テスト)
- app/components/account-card.tsx: アカウントカード表示テスト (12テスト)
- app/components/ui/multi-select: 複数選択UIコンポーネントテスト (13テスト)

総テスト数: 74テスト (60テスト追加)
全テスト成功、高いコードカバレッジを実現

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
プロジェクト全体のAmplify依存箇所(約30ファイル)を包括的に調査し、
開発方針の選択肢を比較検討したレポートを作成。

主な内容:
- モック認証実装からデータ操作エラー発見までの経緯
- Amplify依存箇所の詳細分析(高/中/低影響度別)
- 全面モック化 vs Amplify環境構築の比較
- 工数見積もりとリスク評価
- 推奨方針(Amplify環境構築)の根拠
- 関係者への確認事項と次のアクションプラン

前開発者および関係者との協議用資料として活用予定。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- 未使用パラメータに_プレフィックスを追加してlintエラーを解決
- app/lib/amplify-mock.ts: credentials → _credentials
- app/routes/auth/login-mock.tsx: err → _err

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- npm run formatでコード全体のフォーマットを統一
- CIで発生していたPrettierエラーを解決

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- 技術知識がない関係者向けにAmplifyの基本概念を説明
- 当プロジェクトでの問題の背景と解決策を詳述
- 今後の開発方針選択の判断材料を提供
- レストランの例えなど理解しやすい説明を採用

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant