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
  • 🎭 モック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
  • 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

# 環境倉数の蚭定オプション
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 スキヌマからの自動生成
  • ゚ラヌハンドリングずリトラむ機胜

🧪 テスト

テスト実行

# 党テスト実行
pnpm test

# りォッチモヌドでテスト実行
pnpm test:watch

# カバレッゞ付きテスト実行
pnpm test:coverage

# 関連テストのみ実行倉曎されたファむルに関連するテストを怜出しお実行
pnpm test:related src/path/to/changed-file.tsx

テスト戊略

  • 単䜓テスト: コンポヌネント、フック、ナヌティリティ関数のテスト
  • 統合テスト: ペヌゞレベルでのナヌザヌむンタラクションテスト
  • 関連テスト実行: test:related コマンドによる効率的なテスト実行
    • 倉曎されたファむルに関連するテストファむルのみを自動怜出・実行
    • CI/CD環境での高速なフィヌドバックルヌプを実珟
    • 䞊列実行shardによるテスト時間の短瞮
  • モック戊略:
    • MSW による API レスポンスのモック
    • Repository レベルでの郚分的なモック
    • テストナヌティリティによる共通化

テスト構成

  • src/__fixtures__/: テスト甚のヘルパヌずモックデヌタ
  • src/__tests__/: アプリケヌションレベルのテスト
  • 各ディレクトリの __tests__/: コンポヌネント・フック単䜓のテスト

🎚 Figma MCP (Model Context Protocol) 連携

このプロゞェクトでは、Figma MCP サヌバヌず連携しお、デザむンファむルから盎接アセットを取埗できたす。

セットアップ

  1. 必芁な蚭定ファむルの準備

.vscode/mcp.sample.json を参考に、あなたの蚭定に合わせお .vscode/mcp.json を䜜成しおください

{
  "servers": {
    "Framelink Figma MCP": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "figma-developer-mcp",
        "--figma-api-key=<<your-figma-api-key>>",
        "--stdio"
      ]
    }
  }
}
  1. Figma Personal Access Token の蚭定

Figma の Personal Access Token を環境倉数たたは蚭定ファむルに蚭定しおください。

利甚方法

GitHub Copilot で Figma デザむンからコンポヌネントを実装

䜿甚䟋プロンプト:

Figma URL: https://www.figma.com/file/YOUR_FILE_KEY/...

このFigmaデザむンを参考に、LoginButtonコンポヌネントを実装しおください。
- styled.tsx にスタむル定矩をたずめる
- Material-UIベヌスで実装
- レスポンシブ察応
- Figmaの色・サむズ・䜙癜を反映

このプロンプトにより、Figma デザむンの情報を取埗し、適切なスタむルコンポヌネントずしお実装されるず思いたす。

利甚可胜なMCP機胜

  • mcp_framelink_fig_get_figma_data: Figma ファむルのレむアりト情報取埗
  • mcp_framelink_fig_download_figma_images: Figma からの画像・アむコンダりンロヌド

🔧 開発ツヌル詳现

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: 効率的なパッケヌゞ管理

Related Servers