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
Dash0
Navigate your OpenTelemetry resources, investigate incidents and query metrics, logs and traces on Dash0.
VSCode Maestro MCP
The most comprehensive MCP server for VS Code — 100+ tools across 25 categories. File ops, terminal, git, LSP providers (hover, completion, definition, references), and more. Free core + premium features.
paytoll-mcp
Access 20+ DeFi, crypto, and AI endpoints through micro-payments. Get Aave rates, build DeFi transactions, fetch crypto prices, resolve ENS names, search Twitter, and query LLMs - all paid per-call with USDC on Base. No API keys needed, payment is the auth
Website Generator MCP
An example MCP server designed for deployment on Cloudflare Workers, supporting both remote and local setups.
MemGPT MCP Server
A server that provides a memory system for LLMs, enabling persistent conversations with various providers like OpenAI, Anthropic, and OpenRouter.
WOOFi Pro
Provides over 40 comprehensive trading tools for WOOFi Pro and Orderly Network integration.
Wrapping MCP server with Express
A simple example of wrapping an MCP server with Express for web integration.
Remote MCP Server (Authless)
An example of a remote MCP server deployable on Cloudflare Workers without authentication.
Sentry
Official MCP server for Sentry.
Accordo MCP Server
Provides dynamic YAML-driven workflow guidance for AI coding agents with structured development workflows, progression control, and decision points.