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: å¹ççãªããã±ãŒãžç®¡ç
Related Servers
Scout Monitoring MCP
sponsorPut performance and error data directly in the hands of your AI assistant.
Alpha Vantage MCP Server
sponsorAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
Cursor Talk to Figma MCP
Integrates Cursor AI with Figma to read and programmatically modify designs.
Kaggle MCP
Get access to Kaggle's datasets, models, competitions, notebook and benchmarks.
Docker MCP server
Manage Docker containers, volumes, and services using natural language commands.
DevBrain
Finds relevant code snippets, developer articles, and blog posts based on your queries.
MCP Remote Machine Control
Provides remote machine control capabilities, eliminating SSH overhead for token-efficient system operations.
Python Notebook MCP
Enables AI assistants to interact with local Jupyter notebooks (.ipynb).
MCP Manager
An interactive CLI tool for managing MCP server configurations in the current directory.
FLUX Image Generator
Generate images using Black Forest Lab's FLUX model.
Generic API MCP Server
A generic server to interact with any REST API, allowing you to query data, create items, and call methods.
Android MCP
An MCP server that provides control over Android devices through ADB. Offers device screenshot capture, UI layout analysis, package management, and ADB command execution capabilities.