åç §ç»åãšäžèŽãã UI ç»é¢ãäœã â çŸç¶ã®æ¹æ³ / æ¹åæ¹æ³ / å è¡äºäŸ
Generated by Claude Opus 4.8 â 2026幎6æ2æ¥
ãæ¢åã²ãŒã ã®ã¹ã¯ãªãŒã³ã·ã§ãããæž¡ã â ãããšäžèŽãã宣èšçUIç»é¢(MomijiUI JSON)ãäœãããšããäœæ¥ïŒã¡ã¡ã³ãã¢ãªé¢šãã£ã©ç»é¢6é¢ã§å®èšŒïŒã«ã€ããŠãããŸåããŠããæ¹æ³ã»æ¹åäœå°ã»ä»è ã®åãçµã¿ãæŽçããã
1. åé¡èšå®
- å ¥å: åç §ç»åïŒå®æ©ã¹ã¯ã·ã§ãäœè§£å床ã»ã¹ã¿ã€ã©ã€ãºåã®å®åïŒïŒ ãã©ã«ãéå±€ïŒç»é¢åã
- åºå: åç
§ãšã¬ã€ã¢ãŠããäžèŽããç»é¢JSONïŒ
MomijiUIã1280Ã720ïŒãnative(kaedevn_game)/web(web-momiji)ã§åäžæç»ã - ãŽãŒã«ã®ç²åºŠ: ãã¯ã»ã«å®å šäžèŽã§ã¯ãªãæ§é ã»é 眮ã»ããã¹ãã®äžèŽïŒç«ã¡çµµçã®å®çŽ æã¯è²ãã¬ãŒã¹ãã«ãã§ä»£æ¿ïŒã
2. çŸç¶ã®æ¹æ³ïŒä»å確ç«ããã¯ãŒã¯ãããŒïŒ
åç
§ç»åãèŠã(æ§é èªå)
â 宣èšçJSON ãçæ éšå(use)/å埩(repeat)/ç®è¡({{cx+4}}) ã䜿ã
â å±é expand-components ã§çŽ ã®ããªãŒãž
â æç» kaedevn_game --capture <png>
â ç®èŠæ¯èŒ åç
§ãšäžŠã¹ãŠå·®ãèŠã
â ä¿®æ£ ãºã¬(è²ã»åº§æšã»è¢«ã)ãçŽããŠåæç»
â æ€èšŒ momiji-validate / CI
å¹ããŠããèŠçŽ
- æ¢åã¢ãã¯ãåå°: è§£å床ã»é è²ã»nav/tabã»ããã«äœçœ®ãç¢ºç«æžã¿ãæ°ç»é¢ã¯ããã«ä¹ããã ãã§ç²ŸåºŠãåºãïŒãŒããã座æšãåœãŠãªãïŒã
- éšååæ©æ§:
bottom-nav/top-tabs/char-card/card-gridã®åå©çšïŒrepeatïŒç®è¡ã§ãç€é¢ã»ã«ãŒããå°ãªãèšè¿°ã§æ£ç¢ºã«éç£ïŒ01ïŒã - 峿ã¬ã³ããŒïŒæ¯èŒ:
--captureã§1ææ®ããAI(ç§)ãç®ã§ç §åãcmp/å°æ¥ã® SSIM ã§ååž°ãåããã
éçïŒæ£çŽãªè©äŸ¡ïŒ
- ç²ŸåºŠã®æåŸã¯ AI ã®ç®èŠå€æã§ãèªåã®éã«ãŒãã§ã¯ãªãã座æšã¯ããªã®ããå€ãžã®æšå®ïŒ1pxäžèŽã§ã¯ãªãïŒã
- å®ååç §ãšã¹ã¿ã€ã©ã€ãºåçŸã®å·®ã倧ãããçã®ç»åå·®åã§ã¯ãå¯ãå ·åããæž¬ãã«ããã
- 倱æã¢ãŒãïŒããŒãæè²ã§æåãèæ¯ã«ååããã¿ã³ã nav ã«è¢«ãïŒã¯ãä»åããããæç»ããŠèŠãŠåããŠæ°ã¥ããã
3. æ¹åæ¹æ³ïŒèªååã®æ®µéïŒ
| æ¹å | ææ®µ | 广 | ã³ã¹ã |
|---|---|---|---|
| ååž°ã®èªåå â | ååã¬ã³ã㌠vs ä»åã SSIM(CPUã»GPUäžèŠ) ã§æ¯èŒãéŸå€å²ãã§ failïŒtools/screen-regression.mjs å®è£
æžïŒ | ãèŠãç®ãå£ããããæ©æ¢°æ€ç¥ | å°ïŒcompare -metric SSIMïŒ |
| åªäœäžèŽã®èªåå | åäžJSON ã® native ãš web ã¬ã³ããŒã SSIM/幟äœç §å | ã¯ãã¹ã¡ãã£ã¢ã®ãºã¬æ€ç¥ïŒ[01] F2ïŒ | å°ãäž |
| åç §äžèŽã®ãã£ãŒããã㯠â 宿Œ | ã¬ã³ããŒãšåç §ã ããžã§ã³å€å®ãµããšãŒãžã§ã³ã ã«æž¡ããã©ããéãïŒelement/issue/severity/fixïŒããæ§é åã§è¿ã | ç®èŠã®èªååã倱æã¢ãŒããæ©æ¢°ãææ | äžïŒã¢ãã«åŒã³åºãïŒ |
| èªåè©°ãã«ãŒã | äžèšãã£ãŒãããã¯ã ã¯ãŒã¯ãããŒåããåæ ŒãŸã§çæâæç»âå€å®âä¿®æ£ãå埩 | 人ãå€ããæ¹å | äžã倧 |
| ååŠçã§åœãŠããã | åç §ã OCR ã§ããã¹ãæœåºãã°ãªãã/ç©åœ¢æ€åºã§åº§æšæšå®ãé è²ãæœåº | ååçæã®ç²ŸåºŠâ | äž |
| ã¢ã©ã€ã¡ã³ã | å®ååç §ã 1280Ã720 ã«ãªãµã€ãº/ã¯ãããã»è²æ£èŠåããŠããæ¯èŒ | SSIM/å·®åãæå³ãæã€ããã« | å° |
圹å²åæ ã®æé
- ååž°ïŒå£ãæ€ç¥ïŒ= SSIMïŒå®ãã»CPUã»æ±ºå®çïŒâ CI ã«åžžèšã
- åç §ãžã®å¯ãå ·å = ããžã§ã³/LLMå€å®ïŒå®åãšã¹ã¿ã€ã©ã€ãºå·®ãåžåã§ããïŒã
- çã® SSIM ããå®ååç §ãã«åœãŠãã®ã¯äžåãïŒçµµãéãããäœã¹ã³ã¢ïŒãSSIM ã¯ãããŸã§ã¬ã³ããŒå士ã«äœ¿ãã
æšå¥šããæ¬¡ã®äžæ©
- â
å®è£
æž:
tools/screen-regression.mjsâ ç»é¢ãæ®ãçŽããã³ãããæžã¿ããŒã¹ã©ã€ã³ PNG ãš SSIM æ¯èŒïŒImageMagickcompare -metric SSIMã»CPUã»GPUäžèŠïŒãéŸå€ 0.99 æªæºã§ exit 1ã--updateã§ããŒã¹ã©ã€ã³æŽæ°ãåºåã®RAW (NORMALIZED)ã® NORMALIZEDïŒæªã¿, 0=äžèŽïŒãåãé¡äŒŒåºŠ = 1 - æªã¿ã§å€å®ãæ€èšŒ: ç¡å€æŽâå šç»é¢ 1.0000ãããã«è²å€æŽâ0.9292 ã§æ€ç¥ã - â
宿Œæž: ããžã§ã³å€å®ãµããšãŒãžã§ã³ããç«ãŠãåç»é¢ã®ã¬ã³ããŒãšåç
§ãæ¯èŒâ
element/issue/severity/suggested_fixã®æ§é å findings ïŒlayout_match(0-100) ãè¿ãããïŒãã£ã©4ç»é¢: ææ78/è²æ82/ãããã£ãŒã«68/ã¬ããªã³ã°85ïŒãææãåæ ïŒè²æ=è£ åã¹ããã4â6ããããã£ãŒã«=2ã«ã©ã åïŒããåé€ãã¬ããªã³ã°=ãªã³ã¯æ ç¶æ ä¿®æ£ïŒâ ãããã£ãŒã«åå€å® 68â90(close)ãïŒãå€å®âä¿®æ£âåå€å®ãã®ã«ãŒãã人ãæã§åããç¶æ ã - â
宿Œæž: WorkflowïŒå€ãšãŒãžã§ã³ãèªåãªãŒã±ã¹ãã¬ãŒã·ã§ã³ïŒ ã§èªåè©°ãã«ãŒããåãããPhase 1=䞊åããžã§ã³å€å®ãPhase 2=ã¹ã³ã¢<ç®æš(88)ã®ç»é¢ã鿬¡ãªãã¡ã€ã³ïŒçæåšã®è©²åœé¢æ°ã ãç·šéâåçæâ
momiji-validateâåæç»âåå€å®ãæå€§2ã©ãŠã³ãïŒçæåšãå ±æãã¡ã€ã«ã®ãã鿬¡ïŒãçµæ(1åç®): è²æ 88(å°éæžâ0R)ãã¬ããªã³ã° 82â88(1R)ãåãªãã¡ã€ã³ã«ããã®ç»é¢ã®é¢æ°ã ãã»å ±æéšåã¯è§Šããªãã»æããã«ã¯æè²æç€ºããå³åœããçæåšç Žå£ãä»ç»é¢å·»ã蟌ã¿ã鲿¢ã 2åç®(åç §ãé«è§£å床ã«åãçŽããŠ): é²å 62â88(1R)ã詳现ã¹ããŒã¿ã¹ 58â88(1R)ãé«è§£å床åç §ã§åæã¹ã³ã¢ãäžãã(现éšã®å·®ãèŠãã)ïŒå€å®ãå³ããæ£ç¢ºã«ã詳现ã¹ããŒã¿ã¹ã¯æŠåæ°å€ã®ä¿®æ£(7,290,110â7,205,110)ã»å·Šã¢ã€ã³ã³å远å ã»è£ å6â4æ åãªã©å®æ¹åã äººã®æçµç¢ºèªã®äŸ¡å€(éèŠ): ã«ãŒã㯠layout ã 88 ã«äžãããããªãã¡ã€ã³ããã©ã³ãæªåé²ã®ã¢ã€ã³ã³å圢(â¬ââªâ»â )ãæ¿å ¥ããŠããŒãåããããã㯠layout_match ã®èªå·±å€å®ã§ã¯æŸããã人ãæç»ãèŠãŠæ€ç¥âå®å šå圢/ç®±ã«ä¿®æ£ãããïŒãæ©æ¢°ãè©°ããã»äººãããŒãçã®æçµå質ãèŠããã®åœ¹å²åæ ãå®å°ã§ç¢ºèªã§ããã
4. ããã¯ä»ã§ãããããŠãããïŒå è¡äºäŸïŒ
ããããŠããããç»åâUIã³ãŒããã¯æŽ»çºãªé åããã ãå€ã㯠HTML/CSS çæãäž»ã§ãæ¬ä»¶ã®ãããªå®£èšçUIã©ã³ã¿ã€ã ïŒã¯ãã¹ã¡ãã£ã¢(native/web)ïŒéšåå±éã¯çããæ§æã
泚: ããŒã«ã®æ©èœã¯å€åãéãã以äžã¯äžè¬çåŸåãææ°ã®æ£ç¢ºãªä»æ§ã¯åå ¬åŒã§èŠç¢ºèªã
ç£æ¥ããŒã«ïŒdesign/screenshot â codeïŒ
- v0 (Vercel): ããã³ãã/ç»åãã React/Tailwind UI ãçæãå埩æ¹åã
- Figma â code ç³»: Figma Dev ModeãAnimaãLocofyãbuilder.io Visual Copilot ãªã©ããã¶ã€ã³/ç»åãã HTML/React/Flutter ãåºåã
- screenshot-to-code ç³» OSS: ã¹ã¯ã·ã§ã vision LLM ã«æž¡ã㊠HTML/CSS/Tailwind ãçæããå ¬éå®è£ ãè€æ°ã
ç ç©¶ã»ãã³ãããŒã¯
- pix2code(2017)ã»Sketch2Code(Microsoft): GUI ã¹ã¯ã·ã§/ææã â DSL/HTML ã®èåãã
- Design2Code(ã¹ã¯ã·ã§âã³ãŒãã®ãã³ã)ãªã©ããã«ãã¢ãŒãã«LLMã§ã® screenshot-to-code è©äŸ¡ãé²ãã
- èªå·±æ¹åã«ãŒã: ã¬ã³ããŒãæ®ãçŽããŠèŠèŠçã« self-refine ããææ³ïŒrenderâæ¯èŒâä¿®æ£ãå埩ïŒãè«æåãããŠãããæ¬ä»¶ã®ãæç»ããŠçŽããã«ãŒããšå系統ã
æ¬ä»¶ãšã®éãïŒå·®å¥åïŒ
| èŠ³ç¹ | äžè¬ç㪠imageâcode | æ¬ä»¶(kaedevn) |
|---|---|---|
| åºå | HTML/CSS/React ç | 宣èšçUI(MomijiUI JSON) |
| å®è¡å | Web ãã©ãŠã¶ | native(C++/SDL) ãš web ãåäžJSONã§ïŒã¯ãã¹ã¡ãã£ã¢ïŒ |
| åå©çš | ã³ã³ããŒãã³ã(ã³ãŒã) | éšå(use)ïŒrepeatïŒç®è¡ããã«ãæå±éïŒã¬ã³ãã©ç¡æ¹ä¿®ïŒ |
| æ€èšŒ | ç®èŠ/Storybook | momiji-validateïŒ--captureïŒSSIMååž°(å®è£
æž)ïŒïŒå°æ¥ïŒããžã§ã³ |
| å¶çŽ | èªç±åºŠé«ãåãã¬ããã | 12ãŠã£ãžã§ããïŒã¹ããŒãã§çæããã¬ã«ããã»æ€èšŒå¯èœ |
â ãã¹ããŒãã§çžããã宣èšçUIã«èœãšããã¶ããWeb èªç±çæãããã¬ãå°ããã»æ€èšŒããããã»åªäœãè·šãããã²ãŒã UIã®éç£ãšããçšéã«åã¿åã£ãŠããã
5. ããã¯ãçºæããïŒç¬èªæ§ã®æ£çŽãªè©äŸ¡ïŒ
é倧è©äŸ¡ããªãããã«ç·ãåŒãã
åã ã®èŠçŽ ã¯æ°ãããªã: ç»åâUIïŒv0 çã»ç ç©¶å€æ°ïŒã宣èšçUIïŒFlutter/SwiftUI/Reactã»ã²ãŒã UIãã¬ãŒã ã¯ãŒã¯ïŒãã¯ãã¹ãã©ãããã©ãŒã ãã³ã³ããŒãã³ããã©ããåäœã§ã¯æ¯ããæè¡ã§ãç¹èš±çãªãã¬ã€ã¯ã¹ã«ãŒã§ã¯ãªãã
ããŸãã®ã¯åæãšããã±ãŒãžã³ã°:
- 1æã®ã¹ããŒãæºæ JSON â native(C++/SDL) ãš web(Canvas2D) ãåäžæç»ïŒåªäœè·šãïŒ
- éšå +
repeat+ ç®è¡ããã«ãæå±éïŒã¬ã³ãã©ç¡æ¹ä¿®ïŒäºéå®è£ ã»drift ãªãïŒ - ã¹ã¯ã·ã§âçæâå±éâæç»âæ€èšŒ(SSIM) ãäžæ¬ã®ãã€ãã©ã€ã³
- 12ãŠã£ãžã§ããïŒã¹ããŒãã§çæããã¬ãªãã»æ©æ¢°æ€èšŒã§ãã
â "çºæ" ãšãããã ãçã£ãä»äºïŒã²ãŒã UIã®éç£ã¢ãã¯ïŒã«ç°åžžã«åã¿åã£ãèšèšçµ±åãããã®çšéã«ãã®ç¶ºéºãã§æããäŸã¯çãããã¯èšããã
æ£çŽãªç·åŒãïŒããéèŠïŒ: åçŸã§ããã®ã¯ ã¬ã€ã¢ãŠãïŒäœçœ®ãšåœ¢ïŒ ã§ãã²ãŒã ããžãã¯ã»å®ã¢ãŒãã»ã¢ãã¡ã»æäœã®æ·±ãã¯å¥ç©ãã ãããã©ããªã²ãŒã ãããå®è£ ãã¯å³å¯ã«ã¯ãã©ããªã²ãŒã ã®âéçUIã¢ãã¯âãé«éã«ã»å€åªäœã§åºããããæ£ç¢ºãã²ãŒã ãäœããã®ã§ã¯ãªããUIã¢ãã¯ãçéã§å€åªäœã«åºããããã§ãäŒç»/ãã¶ã€ã³æ€èšŒã»ã¯ãã¹ã¡ãã£ã¢ã®åœããä»ãã»éç£ã®åå°ãšããŠã¯ååã«äŸ¡å€ãé«ãã
| åã | çã |
|---|---|
| æ°ããåçã®çºæã | NoïŒèŠçŽ ã¯æ¢åºïŒ |
| çµ±åã»éçšãšããŠç¬èªã§æçšã | YesïŒå®£èšçUIÃã¯ãã¹ã¡ãã£ã¢Ãéšåå±éÃæ€èšŒã®æãæ¹ãçããïŒ |
| ãã©ããªã²ãŒã ãããäœãããã | Noããã©ããªã²ãŒã ã®UIã¢ãã¯ãããå€åªäœã§åºããããæ£ç¢º |
| 䟡å€ã¯ããã | é«ãïŒéç£ã»åªäœè·šãã»æ€èšŒå¯èœãšããå®çšé¢ïŒ |
6. ãŸãšã
- çŸç¶ã¯ãæ§é èªåâçæâæç»âç®èŠæ¯èŒâä¿®æ£ãã® AI äž»å°ã«ãŒããçæã¯èªåãæçµå€å®ã¯ç®èŠã
- æ¹åã¯ãSSIM(ååž°ã»CPU) ïŒ ããžã§ã³å€å®(åç §äžèŽ) ïŒ ã¯ãŒã¯ãããŒå(èªåè©°ã)ãã®äžæ®µã§ã人ã®ç®ã段éçã«å€ããã
- é åãšããŠã¯ imageâUI ã¯äžè¬çã ããæ¬ä»¶ã®å®£èšçUIÃã¯ãã¹ã¡ãã£ã¢Ãéšåå±éãšãã圢ã¯ç¬èªæ§ããããã²ãŒã UIéç£ã«åãã
ãã®ææžã¯ Claude Opus 4.8 ãçæããŸãããããŒã«ã®ææ°ä»æ§ãç ç©¶ç¶æ³ã¯äººéã®ã¬ãã¥ãŒã§ç¢ºèªããŠãã ããã
Claude Opus 4.8 â Anthropic