UI Prototype
A modern web application prototype built with React, TypeScript, and Material-UI, featuring authentication, internationalization, and Figma integration.
UI Prototype
📖 概要
このプロジェクトは、モダンな感じを目指したReact + TypeScript + Material-UI (MUI)を使用したWebアプリケーションです。認証機能、多言語対応、テスト環境、MSW(Mock Service Worker)を使ったモックAPI、Figma MCPサーバーとの連携などの機能を含んでいます。
✨ 主な特徴
- 🔐 認証システム: 認証とセッション管理
- 🌍 多言語対応: 日本語・英語対応(react-i18next)
- 🧪 包括的テスト: Vitest + React Testing Library + Playwright E2E
- 🎭 モックAPI: MSW による開発時のAPIモック
- 🎨 Figma連携: MCP サーバーによるデザインアセット取得
- 📱 レスポンシブデザイン: モバイル・デスクトップ対応(そんなにできてない)
🛠 技術スタック
- Frontend: React 19, TypeScript
- UI Framework: Material-UI (MUI)
- Build Tool: Vite
- State Management: TanStack Query (React Query)
- Routing: React Router
- Testing: Vitest, React Testing Library, Playwright
- Mocking: MSW (Mock Service Worker)
- Internationalization: react-i18next
- Code Generation: Orval (OpenAPI)
- Package Manager: pnpm
🚀 クイックスタート
前提条件
- Node.js (v22) ※プロジェクトにより自動管理
- pnpm (v10.12.4) ※プロジェクトにより自動管理
バージョン管理:
- Node.js:
.npmrcにより v22.17.0 が自動ダウンロード・使用- pnpm:
packageManagerフィールドにより v10.12.4 を推奨開発者が手動でバージョンを管理する必要はありません。
インストールと実行
# 依存関係のインストール
pnpm install
# E2Eテスト用ブラウザのインストール(初回のみ)
pnpm test:e2e:install
# 環境変数の設定(オプション)
cp .env.sample .env
# .envファイルを編集してAPI URLなどを設定
# OpenAPIスキーマからコードとモックを生成(初回またはスキーマ更新時)
pnpm gen:api
# 開発サーバーの起動
pnpm dev
アプリケーションは http://localhost:5173 で起動します。
📁 プロジェクト構成
src/
├── adapters/ # 外部サービスとの接続層
│ ├── axios.ts # HTTP クライアント設定
│ ├── generated/ # OpenAPI から生成されたコード
│ ├── mocks/ # MSW モック定義
│ └── repositories/ # データアクセス層
├── app/ # アプリケーション設定
│ ├── providers/ # Context Providers
│ ├── router/ # ルーティング設定
│ └── types/ # アプリケーション型定義
├── domain/ # ビジネスロジック層
│ ├── constants/ # 定数定義
│ ├── errors/ # エラー型定義
│ ├── models/ # ドメインモデル
│ └── utils/ # ユーティリティ関数
├── i18n/ # 国際化設定
│ ├── config.ts # i18n 設定
│ ├── hooks/ # 翻訳フック
│ └── locales/ # 言語ファイル
└── presentations/ # プレゼンテーション層
├── components/ # 共通コンポーネント
├── hooks/ # カスタムフック
├── layouts/ # レイアウトコンポーネント
└── pages/ # ページコンポーネント
アーキテクチャの特徴
- Clean Architecture: ドメイン駆動設計の原則に基づいた層分離
- Repository Pattern: データアクセスの抽象化
- Provider Pattern: 依存性注入とコンテキスト管理
- Custom Hooks: ビジネスロジックの再利用性
🔧 主要機能
認証システム
- JWT ベースの認証
- セッション管理と自動更新
- ログイン/ログアウト機能
- 認証状態に基づくルーティング
多言語対応
- 日本語・英語対応
- react-i18next による動的言語切替
- 型安全な翻訳キー
API通信
- Axios ベースのHTTPクライアント
- OpenAPI スキーマからの自動生成
- エラーハンドリングとリトライ機能
🧪 テスト
テスト実行
# 単体テスト(Vitest)
pnpm test # 全テスト実行
pnpm test:watch # ウォッチモード
pnpm test:coverage # カバレッジ付き実行
pnpm test:related src/path/to/changed-file.tsx # 関連テストのみ実行
# E2Eテスト(Playwright)
pnpm test:e2e:install # ブラウザインストール(初回のみ)
pnpm test:e2e # 全E2Eテスト実行
pnpm test:e2e:ui # インタラクティブモード
pnpm test:e2e:debug # デバッグモード
E2Eテストの詳細:
playwright/README.mdを参照してください。初回実行時:
pnpm test:e2e:installでPlaywrightブラウザ(Chromium、Firefox、WebKit)をインストールしてください。
テスト戦略
- 単体テスト: コンポーネント、フック、ユーティリティ関数のテスト
- 統合テスト: ページレベルでのユーザーインタラクションテスト
- E2Eテスト: Playwright による実際のブラウザでのエンドツーエンドテスト
- 関連テスト実行:
test:relatedコマンドによる効率的なテスト実行- 変更されたファイルに関連するテストファイルのみを自動検出・実行
- CI/CD環境での高速なフィードバックループを実現
- 並列実行(shard)によるテスト時間の短縮
- モック戦略:
- MSW による API レスポンスのモック
- Repository レベルでの部分的なモック
- テストユーティリティによる共通化
テスト構成
src/__fixtures__/: テスト用のヘルパーとモックデータsrc/__tests__/: アプリケーションレベルのテスト- 各ディレクトリの
__tests__/: コンポーネント・フック単体のテスト
🔌 MCP (Model Context Protocol) 連携
このプロジェクトでは、MCP サーバーを使用して AI ツールと連携し、開発を効率化できます。
設定ファイル
プロジェクトでは2種類のMCP設定ファイルを使用します:
.mcp.json: Claude Code プロジェクト単位の MCP 設定.vscode/mcp.json: VSCode / GitHub Copilot 用の MCP 設定
両方のファイルは同じ MCP サーバーを設定していますが、異なるツールで使用されます。
利用可能なMCPサーバー
1. Figma MCP サーバー
Figma デザインファイルから直接アセットを取得できます。
セットアップ:
Figma の Personal Access Token を設定に追加してください:
{
"servers": {
"figma": {
"type": "http",
"url": "https://mcp.figma.com/mcp"
}
}
}
利用方法:
AI ツールで Figma デザインからコンポーネントを実装:
Figma URL: https://www.figma.com/file/YOUR_FILE_KEY/...
このFigmaデザインを参考に、LoginButtonコンポーネントを実装してください。
- styled.tsx にスタイル定義をまとめる
- Material-UIベースで実装
- レスポンシブ対応
- Figmaの色・サイズ・余白を反映
利用可能な機能:
- Figma ファイルのレイアウト情報取得
- Figma からの画像・アイコンダウンロード
2. Playwright MCP サーバー
E2Eテストの自動生成とブラウザ操作を支援します。
セットアップ:
既に設定済みです。.vscode/playwright-config.json で設定をカスタマイズできます。
{
"servers": {
"playwright": {
"type": "stdio",
"command": "pnpm",
"args": [
"dlx",
"@playwright/mcp@latest",
"--config",
".vscode/playwright-config.json"
]
}
}
}
利用方法:
AI ツールで Playwright テストを生成・実行:
ログインページのE2Eテストを作成してください。
- メールとパスワードを入力
- ログインボタンをクリック
- ダッシュボードにリダイレクトされることを確認
利用可能な機能:
- Playwright テストコードの自動生成
- ブラウザ操作のスクリプト作成支援
- Page Object Model パターンの実装支援
🔧 開発ツール詳細
MSW (Mock Service Worker) セットアップ
開発時のAPIモックを使用するための設定:
# MSWの初期化(公開ディレクトリにService Workerファイルを生成)
pnpm msw:init
このコマンドにより public/mockServiceWorker.js が生成され、ブラウザでのAPIモックが有効になります。
利用可能なスクリプト
pnpm dev # 開発サーバー起動
pnpm build # プロダクションビルド
pnpm type-check # 型チェック
pnpm lint # ESLint実行
pnpm format:check # Prettierによるフォーマットチェック(チェックのみ)
pnpm format:fix # Prettierによるコードフォーマット(コードを自動整形)
pnpm preview # ビルド結果をプレビュー
pnpm test # テスト実行
pnpm test:run # watch モードなしで実行
pnpm test:coverage # カバレッジ付きテスト
pnpm test:related # 関連テストのみ実行(指定ファイルに関連するテストを検出)
pnpm gen:api # OpenAPIからコードとモックを生成
pnpm msw:init # MSW Service Worker初期化
コード生成 (Orval)
OpenAPI スキーマからAPIクライアントとMSWモックを自動生成:
# OpenAPI スキーマから型とAPIクライアント、MSWモックを生成
pnpm gen:api
Orvalにより以下が自動生成されます:
- APIクライアント:
src/adapters/generated/に型安全なAPIクライアント - TypeScript型定義: OpenAPIスキーマに基づいた型定義
- MSWモック:
src/adapters/mocks/handlers/にモックハンドラー
設定ファイル: schema/orval.config.ts
環境変数設定
プロジェクトでは環境変数を使用してAPI URLなどを設定できます:
# .env.sampleをコピーして.envファイルを作成
cp .env.sample .env
利用可能な環境変数:
VITE_API_BASE_URL: API のベースURL(デフォルト:http://localhost:3000/api)
環境別の設定例:
# 開発環境
VITE_API_BASE_URL=http://localhost:3000/api
# 本番環境
VITE_API_BASE_URL=https://api.your-domain.com/api
# ステージング環境
VITE_API_BASE_URL=https://staging-api.your-domain.com/api
環境変数は自動的にAxiosのbaseURLとMSWモックハンドラーの両方に適用されます。
開発環境の設定
- ESLint: コード品質の維持
- TypeScript: 型安全性の確保
- Vite: 高速な開発体験
- pnpm: 効率的なパッケージ管理
संबंधित सर्वर
Scout Monitoring MCP
प्रायोजकPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
प्रायोजकAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
MCPControl
Programmatically control Windows mouse, keyboard, window management, screen capture, and clipboard operations.
Chrome Debug MCP Server
Control Chrome with debugging capabilities, userscript injection, and extension support.
Infercnv-MCP
Infer Copy Number Variations (CNVs) from single-cell RNA-Seq data using a natural language interface.
Last9
Seamlessly bring real-time production context—logs, metrics, and traces—into your local environment to auto-fix code faster.
Hello World MCP Server
A simple Hello World MCP server built with FastMCP, serving as a basic example.
JADX-AI-MCP
A JADX decompiler plugin that integrates with MCP to provide live reverse engineering support using LLMs.
Rust Docs MCP Server
Query up-to-date documentation for Rust crates.
MasterMCP
A demonstration tool showcasing potential security attack vectors against the Model Control Protocol (MCP).
Sugar
Autonomous AI development system for Claude Code with task queue management and workflow automation.
Hackle
Query A/B test data using the Hackle API.