
- TOP
- ã¿ã°äžèЧ
- Android
Android
ã€ãã³ã
ãã¬ãžã³
æè¡ããã°
ããã«ã¡ã¯ãLINEã§Androidã¢ããªã®éçºãæ
åœããŠããMoriã§ãããã®èšäºã§ã¯ãDroidKaigi 2026ã§çºè¡šãããããã€ã¹æäœã¯AIãšãŒãžã§ã³ãã®æä»£ãžãmobile-mcpãæŽ»çšã...
ã¯ããã« ããã«ã¡ã¯ããããã¯ããšã³ãžãã¢ãªã³ã°éšã§Androidãšã³ãžãã¢ãããŠããäœè°·ã§ãã 2026幎9æ1æ¥(ç«)ãã9æ3æ¥(æš)ã®3æ¥éããã«ãµãŒã«æžè°·ã¬ãŒãã³ã§éå¬ãããDroidKaigi 2026ã«çŸå°åå ããŠããŸããã æ¬èšäºã§ã¯ãäŒå Žã§èŽè¬ããã»ãã·ã§ã³ã®äžããç¹ã«å°è±¡ã«æ®ã£ãããã€ãã®ã»ãã·ã§ã³ãäžå¿ã«ã¬ããŒãããŸãã ã¯ããã« DroidKaigi 2026 ã«ã€ã㊠ç¹ã«å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ 1. ããã€ã¹æäœã¯AIãšãŒãžã§ã³ãã®æä»£ãžãmobile-mcpãæŽ»çšããAndroid UI/E2Eãã¹ãã®ææŠ è³æ ã»ãã·ã§ã³æŠèŠ ç¹ã«åŠã³ã«ãªã£ãç¹ã»ææ³ 2. è¡æ¿ã¢ããªå
šç»é¢TalkBack察å¿ãããã¶ã€ããŒåæ¥ãšAIãšãŒãžã§ã³ãã§èªååããŠããå®äœéš è³æ ã»ãã·ã§ã³æŠèŠ ç¹ã«åŠã³ã«ãªã£ãç¹ã»ææ³ 3. UI仿§ããèŠãããã®ãã«ãã ã Compose Screenshot Testing ãšã®ã£ã©ãªãŒã§æ¯ãããAIãšãŒãžã§ã³ãæä»£ã®UIéçº è³æ ã»ãã·ã§ã³æŠèŠ ç¹ã«åŠã³ã«ãªã£ãç¹ã»ææ³ 4. AIãã¬ãã¥ãŒããæä»£ã«ãAndroidãšã³ãžãã¢ã¯äœãã¬ãã¥ãŒããã®ã ãåå°ã¥ãããšã¬ãã¥ãŒåèšèšã è³æ ã»ãã·ã§ã³æŠèŠ ç¹ã«åŠã³ã«ãªã£ãç¹ã»ææ³ ãããã« DroidKaigi 2026 ã«ã€ã㊠DroidKaigiã¯ãAndroidæè¡ãäžå¿ã«æ±ãåœå
æå€§çŽã®ã«ã³ãã¡ã¬ã³ã¹ã§ããåœå
å€ã®Androidãšã³ãžãã¢ãææ°ã®æè¡ååãå®è·µç¥ãå
±æããå ŽãšããŠæ¯å¹Žéå¬ãããŠãããäŒæ¥ãå人éçºè
ãçŸå Žã§åŸãç¥èŠãçºè¡šããã»ãã·ã§ã³ãæ°å€ã䞊ã³ãŸãã DroidKaigi 2026ã¯2026幎9æ1æ¥(ç«)ãã9æ3æ¥(æš)ãŸã§ã®3æ¥éãæ±äº¬éœæžè°·åºåå¹³å°çºã®ãã«ãµãŒã«æžè°·ã¬ãŒãã³ã§éå¬ãããŸãããåã»ãã·ã§ã³ã®åç»ã¯ YouTubeã®ãã¬ã€ãªã¹ã ã§å
¬éãããŠãããåå ã§ããªãã£ãã»ãã·ã§ã³ãåŸããèŠèŽã§ããŸãã ç§èªèº«ãæè¡ã«ã³ãã¡ã¬ã³ã¹ãžã®åå ã¯ä»åãåããŠã ã£ãã®ã§èŠæš¡ãšãã®ç±éã«é©ããŸãããã»ãã·ã§ã³ãèŽè¬ããã ãã§ãªããäŒæ¥ããŒã¹ããã¹ã¿ãŒã»ãã·ã§ã³ãåãäžã§ãäŒæ¥ã®å£æ ¹ãè¶ããŠAndroidã¢ããªã±ãŒã·ã§ã³éçºãçãäžããŠããããšããç±æãèã§æããéåžžã«ææçŸ©ãªæéã«ãªããŸããã ç¹ã«å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ 1. ããã€ã¹æäœã¯AIãšãŒãžã§ã³ãã®æä»£ãžãmobile-mcpãæŽ»çšããAndroid UI/E2Eãã¹ãã®ææŠ è³æ ã»ãã·ã§ã³æŠèŠ AIãšãŒãžã§ã³ãã«ãšãã¥ã¬ãŒã¿ã宿©ã®æäœãå§ããE2Eãã¹ãã»ã©å³æ Œã§ãªã軜éãªåäœç¢ºèªãèªååã§ããããæ€èšŒããã»ãã·ã§ã³ã§ãããã»ãã·ã§ã³å
ã§ã¯ãOpenAIã®Codexãš mobile-mcp ãçšããŠã楜èã®æ°èŠäœæãé³ç¬Šå
¥åãAIã«æç€ºãããã¢ã宿ŒãããŸããã åäœç¢ºèªãåãã±ãŒã¹ãšåããªãã±ãŒã¹ã®åãåããããUIååŸã®å®è·µçãªTipsãŸã§èªãããŠã mobile-mcp å°å
¥ãæ€èšããäžã§å¿
èŠãªç¥èãåŸããããå
å®¹ã®æ¿ãã»ãã·ã§ã³ã§ããã ç¹ã«åŠã³ã«ãªã£ãç¹ã»ææ³ ç»é¢ããšã®ãªãã¡ã¬ã³ã¹mdãSkillãšããŠèç©ããäž»èŠãªã³ãŒããšåãããŠäžãããšæ€çŽ¢ç²ŸåºŠãäžãããšããç¹ãå°è±¡çã§ããã contentDescription ã testTag ã®æŽåãå
·äœçã«ç޹ä»ãããŸãããé »åºæäœãBroadcastReceiverã§ADBïŒAndroid Debug BridgeïŒãã©ããããéçšãŸã§çµã¿ç«ãŠãããŠããç¹ãå°è±¡çã§ãããèªç€Ÿã®ãããã¯ãã§ãç»é¢ããããæŽåããããšã§AIãšãŒãžã§ã³ãã®åäœç¢ºèªã®ç²ŸåºŠåäžã«ã€ãªããããã§ããã³ãŒãèšèšèªäœããä»åŸã®ãã¹ãèªååã®åæã«ãªããšæããŸããã AIã«ãã¹ãã宿œãããåŸã人éã®ã¬ãã¥ãŒã¯å¿
èŠãšããçµè«ã¯ãAIãšãŒãžã§ã³ã掻çšã®æåŸ
å€ãæŽçããäžã§æŒãããŠãããããã€ã³ãã ãšæããŸããã 2. è¡æ¿ã¢ããªå
šç»é¢TalkBack察å¿ãããã¶ã€ããŒåæ¥ãšAIãšãŒãžã§ã³ãã§èªååããŠããå®äœéš è³æ ã»ãã·ã§ã³æŠèŠ è¡æ¿ã¢ããªã±ãŒã·ã§ã³ã§35ã®design systemã³ã³ããŒãã³ããšçŽ30ç»é¢ã察象ã«ãWCAG 2.2 A/AAæºæ ã®TalkBack察å¿ãé²ããå®äœéšãèªãããŸãããå®è£
å·¥æ°ã®å€§ãããšãã¶ã€ããŒã®èªã¿äžãå
容æŽçã®è² è·ãšãã2ã€ã®èª²é¡ã«å¯ŸããFigma MCPãšClaude Codeãçµã¿åãããã¯ãŒã¯ãããŒã§å¯Ÿå¿ãããšã®ããšã§ããã Figmaã®ããŒãããªãŒã®ååŸããæç€ºæã®çæããã¶ã€ããŒã«ãã確èªãŸã§ãäžè²«ããŠæ¯ããããã¿ãå
·äœçã«ç޹ä»ãããŸãããFigmaã® Code Connect 察å¿ç¶æ³ã«ãã粟床差ã3åé¡ã«ããå®è£
æ¹æ³ãŸã§èžã¿èŸŒãã ãå®è·µç¥ã®è©°ãŸã£ãã»ãã·ã§ã³ã§ããã ç¹ã«åŠã³ã«ãªã£ãç¹ã»ææ³ Code Connect 察å¿ã®æç¡ã§æç€ºæçæã®ç²ŸåºŠãå€ããç¹ã¯ãFigmaã®éçšã«ãŒã«æŽåç¶æ³ãåŸç¶ã®AIãšãŒãžã§ã³ã掻çšã®ç²ŸåºŠãå·Šå³ãã課é¡ãšããŠæŒãããŠãããããšæããŸããã察象ãå
±éã³ã³ããŒãã³ãã®ã¿ã«çµãå°ããå§ãã倱ææã®ãªã«ããªãŒãããããããé²ãæ¹ããå
šç»é¢æšªæã®å¯Ÿå¿ãé²ããéã®äžè¬çãªæŠç¥ãšããŠã»ãã®åãçµã¿ã«å¿çšã§ãããã ãšæããŸããã clearAndSetSemantics ã§ãªã¹ãå
ã®è€æ°ã³ã³ããŒãã³ãã1ã€ã®èªã¿äžãã«çµ±åããå®è£
æ¹éããããŸãããTalkBack察å¿ã®å
·äœçãªèšèšãã¿ãŒã³ãšããŠèªç€Ÿå®è£
ã«ãåèã«ã§ãããšæããŸããã 3. UI仿§ããèŠãããã®ãã«ãã ã Compose Screenshot Testing ãšã®ã£ã©ãªãŒã§æ¯ãããAIãšãŒãžã§ã³ãæä»£ã®UIéçº è³æ ã»ãã·ã§ã³æŠèŠ AIãšãŒãžã§ã³ãã«ãã䞊åå®è£
ãé²ãäžæ¹ã§UI確èªãçŽåã®ããã«ããã¯ã«ãªã£ãŠãããšãã課é¡ã«å¯Ÿããå
容ã§ãããGoogleå
¬åŒã® Compose Screenshot Testing ãalpha08ã®ããããæ¬çªãããã¯ãã«å°å
¥ããåç
§ç»åãPNG圢åŒã§ã³ãããããéçšãæ§ç¯ããçµç·¯ã説æãããŸããã macOSã»Linuxéã®ç»åå·®åã®è§£æ¶ãGitHubäžã§ã®å·®å衚瀺ã®å·¥å€«ãå
±éã³ã³ããŒã¶ãã«ãžã®éçŽèšèšãŸã§ãéçšãå®å®ãããããã®è©Šè¡é¯èª€ãå
·äœçã«èªãããŸããã550æè¶
ã®åç
§ç»åãæ€çŽ¢ã§ããHTMLã®ã£ã©ãªãŒãšããŠæŽ»çšããåãçµã¿ã玹ä»ãããå®éçšã«æ ¹ãããå
å®¹ã®æ¿ãã»ãã·ã§ã³ã§ããã ç¹ã«åŠã³ã«ãªã£ãç¹ã»ææ³ PRäžã§UIã®ç¢ºèªãã§ããããã¿ã¯ãAIãšãŒãžã§ã³ãã«ãã䞊åå®è£
ãé²ãéçºãããŒã«ãããŠç¢ºèªã³ã¹ããäžããæå¹ãªææ®µã ãšæããŸããã åäœç¢ºèªã®ã·ããªãªçæéšåã« mobile-mcp ãå©çšããŠèªååããã¹ã¯ãªãŒã³ã·ã§ãããã¹ããšåçãªåäœç¢ºèªãçµã¿åãããçºå±çãªéçšã€ã¡ãŒãžãæã€ããšãã§ããŸããã 4. AIãã¬ãã¥ãŒããæä»£ã«ãAndroidãšã³ãžãã¢ã¯äœãã¬ãã¥ãŒããã®ã ãåå°ã¥ãããšã¬ãã¥ãŒåèšèšã è³æ ã»ãã·ã§ã³æŠèŠ éçºæŽ10幎以äžã»ã¢ãžã¥ãŒã«æ°42ã»ã³ãŒã20äžè¡ã®pixivã³ããã¯Androidã«Gemini Code Assistãå°å
¥ããéãçå€ããªææãå€çºãããšããçµéšãå
±æãããŸããããã®çµéšãèžãŸãã AGENTS.md ãçŽ30è¡ã«çµã蟌ã¿ãã¢ãžã¥ãŒã«æ§æã»äŸåæ¹åã»ç¶æ
ç®¡çæ¹éã»UTã«ãŒã«ãèšè¿°ãã察å¿ãè¡ã£ããšã®ããšã§ããã æ¯ãèãã®å€æŽãæ§é ã®å€æŽããå€å®ãã芳ç¹å¥ã«ãµããšãŒãžã§ã³ããžã¬ãã¥ãŒãæ¯ãåãããã«ãããŒã¹ãã¯ãã£ãã³ãŒãã¬ãã¥ãŒãšããç¬èªSkillã玹ä»ãããŸããã Compose Preview Screenshot Testing ã«ããAIææã®æ©æ¢°çãªæ€èšŒã玹ä»ãããŸãããKent Beckã®ãTidy First?ãã«åºã¥ã人éã¬ãã¥ãŒå¿
é ç¯å²ã®åãåããªã©ãAIã¬ãã¥ãŒæä»£ã®å®è·µç¥ãè©°ãŸã£ãã»ãã·ã§ã³ã§ããã ç¹ã«åŠã³ã«ãªã£ãç¹ã»ææ³ AGENTS.md ãçŽ30è¡ã«çµã蟌ãã ããšã§ã¬ãã¥ãŒç²ŸåºŠãäžãã£ããšããäºå®ã¯ãAIãšãŒãžã§ã³ãã«æž¡ãã³ã³ããã¹ãã¯éãã質ãåªå
ãã¹ããšããèšèšæéãšããŠæã£ãŠãããããšæããŸãããæ§é 倿Žã¯AIã¬ãã¥ãŒ+ãã¹ãééã§ããŒãžå¯ãæ¯ãèã倿Žã¯äººéã¬ãã¥ãŒå¿
é ãšããåãåãããèªç€Ÿã®ã¬ãã¥ãŒåºæºãèŠçŽãéã®å
·äœçãªå€æææã«ãªãããã§ãã Konsist ã«ããã¢ãŒããã¯ãã£éåã®æ©æ¢°çæ€ç¥ãã Compose Preview Screenshot Testing ã«ããããžã¥ã¢ã«ãªã°ã¬ãã·ã§ã³ç¢ºèªããããŸãããAIã®ææã人éã倿ããã®ã§ã¯ãªããã¹ãã§æ©æ¢°çã«æ€èšŒå¯èœã«ããçºæ³ã¯ãã¬ãã¥ãŒè² è·ãäžããäžã§éèŠãªèŠç¹ã ãšæããŸããã ãããã« DroidKaigi 2026ã§èŽè¬ãã12ã»ãã·ã§ã³ãéããŠãAIãšãŒãžã§ã³ããéçºãããŒã«çµã¿èŸŒãåãã倿¹é¢ã§é²ãã§ããããšã宿ããŸããã mobile-mcp ã䜿ã£ãUI/E2Eãã¹ãã®èªååãTalkBack察å¿ã®æç€ºæçæãCompose Screenshot Testingãšã®çµã¿åããã«ããã³ãŒãã¬ãã¥ãŒã®åèšèšã«ã€ããŠããç°ãªãæèã§AIãšãŒãžã§ã³ãã®æŽ»çšãèªãããŠããŸãããå
±éããŠããã®ã¯ãAIã«äœãä»»ããäœã人éã倿ãããããšãã責任åæ
ã®èšèšãäžå¯§ã«è¡ã£ãŠããç¹ã§ããã ä»åŸãAIã®é²æ©ã«åãããŠåžžã«AIãšã®è²¬ä»»åæ
ã®èšèšãã¢ããããŒãããŠããã¹ããªã®ã ãšå®æããŸããã ã¢ã¯ã»ã·ããªãã£ã«é¢ããã»ãã·ã§ã³ãè€æ°ãããTalkBack察å¿ã®ããã¿åãèªç¥çæ¯æŽã¬ã€ããComposeã®ã«ãŒã«ãžç¿»èš³ããåãçµã¿ã玹ä»ãããŸãããAccessibilityServiceã®æªçšæå£ãšãã®é²è¡çãªã©ãå€è§çãªèŠç¹ã§ã¢ã¯ã»ã·ããªãã£ãæ±ãããŠããã®ãå°è±¡çã§ããã誰ãã䜿ããã¢ããªã±ãŒã·ã§ã³ãäœããšããèŠç¹ãããããããŠèŠçŽãããæ©äŒã«ãªããŸããã DroidKaigi 2026ãéããŠã瀟å€ã®Androidãšã³ãžãã¢ã®åãçµã¿ãèãæ¹ã«çŽæ¥è§Šããããããšã¯ãéåžžã«åŠã³ã«ãªãè¯ãæ©äŒã§ããã LIFULLã§ã¯ãšãã«æé·ã§ãããããªä»²éãåã£ãŠããŸãã ãããããã°ãã¡ãã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co
ããã«ã¡ã¯ãLIFULL HOME'Sã§ãã€ãã£ãã¢ããªã±ãŒã·ã§ã³ãšã³ãžãã¢ãããŠããä¹
éã§ãã LIFULL HOME'Sã§ã¯ã 以åã®èšäº ã§ç޹ä»ããKotlin MultiplatformïŒKMPïŒã®å°å
¥ã«ç¶ããçŸåšã¯Compose MultiplatformïŒCMPïŒãçšããŠãAndroidãšiOSã§å
±éã®UIãå®è£
ããåãçµã¿ã«ãææŠããŠããŸãã ãããªäžããã¶ã€ããŒãããç¹å®ã®èŠçŽ ãæã瀺ããå¹ãåºãUIããäœãããããšçžè«ãåããŸãããåŸæ¥ã®Androidéçºã§ã¯ç»åã¢ã»ããã§å¯Ÿå¿ããå Žé¢ã§ãããç»åããŒã¹ã®å®è£
ã«ã¯ä¿å®æ§ã®é¢ã§èª²é¡ããããŸãã ããã§ä»åã¯æè¡çãªææŠãšããŠãç»åã¢ã»ããã§ã¯ãªããComposeã® Shape ãš Path ã䜿ãã座æšèšç®ã«ãã£ãŠå¹ãåºããåçã«æç»ãããææ³ã§å
±éã³ã³ããŒãã³ãåã«åãçµã¿ãŸããã ãã®èšäºã§ã¯ãç»åã¢ã»ããã«äŸåããªãå®è£
ãžã®ç§»è¡ã決ããèæ¯ãšãå®è£
æã«æãèŠåŽãããç¢å°ä»ãã®è€éãªèŒªéã«ã圱ããããã«æ²¿ãããæ¹æ³ãã«ã€ããŠç޹ä»ããŸãã çžè«ã®å
容ãš9-patchç»åã®éç ShapeãšPathã§èŒªéãå®è¡æã«çµã¿ç«ãŠã å¹ãåºãUIã®å®è£
ãšComposeã®ã¬ã€ã¢ãŠããã§ãŒãº åãææ³ã§ç¢å°ã®åããäœçœ®ãå€ãã è€éãªåœ¢ç¶ã«åœ±ãä»ããéã®èª²é¡ Modifier ã®é©çšé ãšåœ±ãæç»ããäœçœ ãŸãšã çžè«ã®å
容ãš9-patchç»åã®éç ãã¶ã€ããŒããã®èŠæã¯ããç¹å®ã®èŠçŽ ãæã瀺ãããã«ãäžãäžã«ç¢å°ãä»ããå¹ãåºãã衚瀺ãããããšãããã®ã§ãããæåéã«ãã£ãŠãµã€ãºã¯å€ãããç»é¢ã®å³å¯ãã«é
眮ãããããšãããã°ãäžå€®ã«é
眮ãããããšããããŸãã æåã«æ€èšããã®ã¯ãAndroidã¢ããªã±ãŒã·ã§ã³éçºã§ä»¥åãããã䜿ãããŠããã9-patchïŒãã€ã³ãããïŒç»åããçšæããæ¹æ³ã§ãã 9-patchãšã¯ãç»åã®äžéšã ãã䌞瞮ãããŠããè§äžžãªã©ã®åœ¢ç¶ãä¿æã§ããAndroidåãã®ç»å圢åŒã§ããéåžžã®PNGç»åã®åšå²ã«ããåŒã䌞ã°ããŠããé åïŒäŒžçž®é åïŒããšãã³ã³ãã³ããé
眮ããé åããæå®ããŠäœ¿çšããŸãã ããã«ãããäžã®ããã¹ããã©ãã ãé·ããªã£ãŠããè§äžžãç¢å°ã®åœ¢ã厩ããã«èæ¯ç»åããããã«æ¡å€§ã»çž®å°ã§ããŸãã å®éãLIFULL HOME'Sã®æ¢åã®Androidãã€ãã£ãç»é¢ã§ã¯ããã®9-patchç»åã䜿ã£ãŠå¹ãåºããæç»ããŠããŸããã ããããä»åã®ãCMPã«ããå
±éã³ã³ããŒãã³ãåããšããæèã§ã¯ã9-patchç»åã«ã¯éçšã³ã¹ããOSäŸåã®ä»æ§ãšãã課é¡ããããŸããã ã¢ã»ããæ°ã®å¢å ïŒ ç¢å°ã®äœçœ®ïŒå³å¯ããäžå€®ïŒãåãïŒäžãäžïŒãè²ãå€ãããå Žåããããã®çµã¿åããããšã«ç»åãçšæããå¿
èŠããããŸãã è§£å床ããšã®ç®¡çïŒ Androidã§ã¯ãè§£å床ããšã®ç»åãåå¥ã«æžãåºããŠç®¡çããå¿
èŠããããŸããè§äžžã®ãµã€ãºãå°ãå€ãããã ãã§ãããã¹ãŠã®ç»åãå·®ãæ¿ããäœæ¥ãçºçããŸãã OSéã®éäºææ§ïŒ ä»åã¯CMPã§AndroidãšiOSã«åãUIãæäŸããåæã§ããã9-patchã¯Androidåºæã®ãªãœãŒã¹åœ¢åŒã§ããiOSã«ã¯ resizableImage ãªã©ã®å¥ã®ããã¿ããããå
±éã®ã³ãŒãã ãã§æ±ãããšã¯ã§ããŸããã åŸæ¥ã®ã9-patchç»åã«ããå®è£
ããšãä»åã®ãComposeïŒ Shape ãš Path ïŒã«ããå®è£
ãã®éããæŽçãããšã以äžã®ããã«ãªããŸãã æ¯èŒé
ç® 9-patchç»åã«ããå®è£
ComposeïŒ Shape ãš Path ïŒã«ããå®è£
ã¢ã»ãã管ç ç¢å°ã®äœçœ®ãåããè²ãããã«è§£å床ããšã®çµã¿åããåã ãç»åãå¿
èŠã«ãªããã¢ã»ããæ°ãå¢å ãã å¹ãåºãã®åœ¢ç¶ã衚ãç»åã¯äžèŠããã©ã¡ãŒã¿ã®å€æŽã ãã§ãããŸããŸãªããªãšãŒã·ã§ã³ã«å¯Ÿå¿ã§ãã ãã«ããã©ãããã©ãŒã Androidåºæã®ãªãœãŒã¹ä»æ§ãiOSã§ã¯å¥ã¢ãããŒãïŒ resizableImage ãªã©ïŒãšå¥ã¢ã»ããã«ããåå¥å®è£
ãå¿
èŠ commonMain ã«äžåºŠæç»ããžãã¯ãæžãã ãã§ãAndroidãšiOSã§å
±éã®æç»ããžãã¯ãå©çšã§ãã ã¡ã³ããã³ã¹æ§ è§äžžãç¢å°ã®ãµã€ãºãè²ã®åŸ®èª¿æŽã®ãã³ã«ããã¶ã€ã³ããŒã«ã§ã®åæžãåºããšããšã³ãžãã¢ã«ããå·®ãæ¿ãäœæ¥ãçºçãã ã³ãŒãäžã®æ°å€ãèšç®åŒãæžãæããã ãã§ã倿Žãåæ ã§ãã ã¢ããªã±ãŒã·ã§ã³å®¹é ããªãšãŒã·ã§ã³ã®æ°ã ãç»åã¢ã»ãããæã€ãããã¢ããªã±ãŒã·ã§ã³å®¹éãå¢å ãã è€æ°ã®åœ¢ç¶ç»åãæã€å¿
èŠããªããã¢ããªã±ãŒã·ã§ã³å®¹éã®å¢å ãæãããã ShapeãšPathã§èŒªéãå®è¡æã«çµã¿ç«ãŠã ãã®éçšã³ã¹ãã解決ãããããå¹ãåºãããç»åããšããŠæã€ã®ã§ã¯ãªãããã³ãŒãã§è¡šçŸãã茪éããšããŠæãããšã«ããŸããã Composeã«ã¯ Shape ã€ã³ã¿ãã§ãŒã¹ããããŸãããã®ã€ã³ã¿ãã§ãŒã¹ã® createOutline ã¡ãœãããå®è£
ãããšãä»»æã® Path ïŒç·ã圢ç¶ãå®çŸ©ããããã¿ïŒãæç»ããããã Outline.Generic(path) ãšããŠComposeã«æž¡ããŸãã ãã®èªäœãã Shape ã Modifier.clip(shape) ã Modifier.background(color, shape) ã«æž¡ãã°ãè§äžžç©åœ¢ã«ç¢å°ãä»ããè€éãªåœ¢ç¶ã§ãããããã«åãæãããå¡ãã€ã¶ãããã§ããŸãã Shape ãš Path ã¯ãããããCompose Multiplatformãå
±éAPIãšããŠæäŸããŠããåã§ãããã®ãããKMPã® commonMain ïŒAndroidãiOSãªã©ãè€æ°ã®ãã©ãããã©ãŒã ã§å
±æããã³ãŒãã眮ãé åïŒã«äžåºŠå®è£
ããã°ãAndroidãšiOSã§å
±éã®æç»ããžãã¯ãå©çšã§ããŸãã ãã®ã¢ãããŒãã§ã¯ãã³ã³ããŒãã³ãã®ãµã€ãºãå
¥åãšããŠãæç»ãã茪éãèšç®ã§ããŸãã ãã®ãããç¢å°ã®äœçœ®ãåããè§äžžã®å€§ãããã倿°ã座æšèšç®ã«ãã£ãŠæè»ã«èª¿æŽã§ããŸããè²ãå€ããå Žå㯠background ã®åŒæ°ã倿Žããç¢å°ã®äœçœ®ãå€ããå Žåã¯åº§æšã®èšç®åŒã倿Žããã ãã§ããç»åãäœãçŽãå¿
èŠã¯ãããŸããã å¹ãåºãUIã®å®è£
ãšComposeã®ã¬ã€ã¢ãŠããã§ãŒãº ããã§ã¯ãäžåãç¢å°ã®å¹ãåºãïŒæ€çŽ¢æ¡ä»¶ãæ¡å
ãããã³ããªã©ã«äœ¿çšïŒã®å®è£
ã«ã€ããŠèª¬æããŸãã æ§é ã¯ã·ã³ãã«ã§ããè§äžžç©åœ¢ããšãäžè§åœ¢ãã®2ã€ã®èŠçŽ ã1ã€ã®èŒªéãšããŠæç»ããŠããŸããããã§éèŠãªåœ¹å²ãæãããŠããã®ãã createOutline ã¡ãœããã®åŒæ°ãšããŠæž¡ããã size: Size ã§ãã Composeã¯ãç»é¢äžã®å€§ãããæ±ºããæž¬å®ïŒMeasureïŒãã§ãŒãºã§ãããã¹ããäœçœãå«ããã³ã³ããŒã¶ãã«ã®æçµçãªãµã€ãºãç®åºããŸãããããŠããã®ãµã€ãºã size ãšã㊠createOutline ã«æž¡ããŸãã ç¢å°ã®æ°Žå¹³äœçœ®ã¯ããå
šäœã®å¹
ããã®åŒãç®ãã§å®çŸ©ããŠããŸããããã«ãããããã¹ããé·ããªã£ãŠå¹ãåºãã®å¹
ãåºãã£ãŠããç¢å°ã¯åžžã«ãå³ç«¯ããäžå®ã®è·é¢ããä¿ã£ããŸãŸè¿œåŸããŸãã ãŠãŒã¶ãŒãOSã®ã·ã¹ãã èšå®ãªã©ã§ãã©ã³ããµã€ãºã倿Žããå Žåã§ããã¬ã€ã¢ãŠãã厩ãããšãªãããã©ã³ããµã€ãºã«å¿ããŠã³ã³ããŒãã³ãã®ãµã€ãºã調æŽãããŸãã åãææ³ã§ç¢å°ã®åããäœçœ®ãå€ãã ãã® Shape ãš Path ã䜿ã£ãææ³ãäžåºŠç¢ºç«ããã°ãããŸããŸãªåœ¢ç¶ã«å¿çšã§ããŸãã é ç¹ã®Y座æšã 0f ïŒäžèŸºïŒã«ããã°äžåãç¢å°ã«ãªããŸãããŸããæ°Žå¹³äœçœ®ã size.width / 2 ã®ããã«å¹
ã®æ¯çã§æå®ããã°ãåžžã«äžå€®ã«ç¢å°ãæ¥ãããŒã«ããããäœããŸãã å®éãå°å³ç»é¢ã®äŸ¡æ Œãã³ïŒäžåãã»äžå€®ç¢å°ïŒãªã©ãã createOutline å
ã®åº§æšåŒãå°ã倿Žããã ãã§å±éã§ããŸãããæ°ããããªãšãŒã·ã§ã³ãå¿
èŠã«ãªã£ãŠããè§£å床ããšã®ã¢ã»ããäœæããã¶ã€ããŒã«éœåºŠäŸé Œããå¿
èŠã¯ãããŸããã è€éãªåœ¢ç¶ã«åœ±ãä»ããéã®èª²é¡ ãããŸã§ã®å®è£
ã§åœ¢ç¶ã¯ãããã«äœããŸãããããã¶ã€ããŒãããã³ã³ããŒãã³ããæµ®ããŠããããã«èŠããããã圱ã远å ãããããšããèŠæãåããŸãããä»åãå®è£
äžã®äž»ãªèª²é¡ãšãªã£ãã®ãããã®ã圱ãã®æ±ãã§ãã è§äžžç©åœ¢ã«åœ±ãä»ããã®ã¯ç°¡åã§ãããä»åã¯ãè§äžžç©åœ¢ïŒäžã«çªãåºããšãããïŒç¢å°ïŒããšããç¹æ®ãªåœ¢ç¶ã§ããåçŽã«å®è£
ãããšã以äžã®ãããªåé¡ãçºçããŸããã 圱ã®ããïŒ ããã©ã«ãã®åœ±ã¯ç©åœ¢ã®å€åœ¢ãåºæºã«æç»ããããããäžãžçªãåºãããšãããéšåã«åœ±ãä¹ãããäžèªç¶ã«æµ®ããŠèŠããŠããŸããŸãã åœ±ã®æ¬ ãïŒã¯ãªããïŒïŒ ãšãããéšåã¯ã³ã³ããŒãã³ãæ¬æ¥ã®ç©åœ¢é åã®äžç«¯ãŸã§äŒžã³ãŠããŸãããã®ãããããããçºçãã圱ã¯ããã«å€åŽã«åºãããŸããä»åã¯ã¹ã¯ããŒã«ããã³ã³ããã®äžã«ãã®å¹ãåºãã眮ããŠãããããã³ã³ããã®ç¯å²ããã¯ã¿åºãã圱ãåãåãããŠããŸããŸããã 圢ç¶ã¯æãã©ããã«äœããŠãã圱ãä»ãããšãã«ãšãããéšåã®è¡šç€ºã厩ããŠããŸããŸããããã¯ãComposeã®æç»ä»æ§ãçè§£ããããã§å®è£
ããå¿
èŠããããã€ã³ãã§ããã Modifier ã®é©çšé ãšåœ±ãæç»ããäœçœ ãã®åé¡ã解決ãããšãããã®å
ãŸã§ãããã«åœ±ã沿ãããããã«ã¯ãComposeã® Modifier ã®é©çšé ãšæç»é åã®ããã¿ãçè§£ãã以äžã®3ã€ãããããå¿
èŠããããŸãã 圱㮠Modifier ã«èªäœã® Shape ãæç€ºçã«æž¡ã Modifier.shadow(elevation, shape) ã¯ä»»æã® Shape ãåãåããŸããããã«ããã©ã«ãã®ç©åœ¢ã§ã¯ãªããèªäœãã Shape ãæž¡ãããšã§ããã®åœ¢ç¶ã®èŒªéã«æ²¿ã£ãŠåœ±ãæç»ããããæå®ããŸãã Modifier ã®é©çšé ã padding â shadow â clip â background ã«ãã Composeã® Modifier ã¯ãèšè¿°ããé çªã«ãã£ãŠã¬ã€ã¢ãŠããæç»ãžã®é©çšé ãå€ãããŸãã 圱ã clip ããåã«çœ®ãããšã§ãåãæãåã®ããšããããå«ã茪éãã«å¯ŸããŠåœ±ãèšç®ã§ããŸããéã«ã clip ã®åŸã« shadow ã眮ããšã茪éã®å€åŽã«åºãã圱ãåãåãããŠããŸããã»ãšãã©èŠããªããªããŸãã Modifier .padding(bottom = shadowPadding) // 圱ãæãäœçœãç¢ºä¿ .shadow(elevation, shape = sampleShape) // èªäœShapeã«æ²¿ã£ãŠåœ±ãæç» .clip(sampleShape) // 圱ãèšç®ããããšã«åãæã .background(color, shape = sampleShape) ç¢å°ã®æ¹åã«åãã® padding ãåãã圱ãæç»ããäœçœã確ä¿ãã ãšãããéšåã¯ç©åœ¢ã®å€åŽã«ã¯ã¿åºããããããããçºçãã圱ã¯ããã«å€åŽã«åºãããŸãããããèªèº«ã®æç»é åããã¯ã¿åºããŠã¯ãªãããããªããããç¢å°ãããåŽïŒä»åã§ããã° bottom ïŒã«å€ãã® padding ãèšå®ãã圱ãæç»ãããããã®äœçœãäºåã«ç¢ºä¿ããŸãã ãŸãšã ã¢ããªã±ãŒã·ã§ã³å
±éã®ãå¹ãåºãUIãã®ã³ã³ããŒãã³ãåãèµ·ç¹ã«ãåŸæ¥ã®9-patchç»åéçšãããç»åã¢ã»ããã«äŸåããªãå®è£
ãžç§»è¡ããŸããããã®ææ®µãšããŠãComposeã® Shape ãš Path ã䜿ã£ãŠèŒªéãåçã«çµã¿ç«ãŠãæ¹åŒãæ¡çšããŠããŸãã createOutline ãåãåã size ãæŽ»çšããŠã³ã³ãã³ãã®å€§ããã«è¿œåŸããã€ã€ãå®è£
äžã®äž»ãªèª²é¡ã§ãã£ããç¹æ®ãªåœ¢ç¶ãžã®åœ±ã®ä»äžãã«ã€ããŠãã Modifier ã®é©çšé ïŒ padding â shadow â clip â background ïŒãšã圱ãæç»ããäœçœã®ç¢ºä¿ã«ãã£ãŠè§£æ±ºã§ããŸããã ãŸããä»åã¯UIãCompose Multiplatformã® commonMain ã«é
眮ããããšã§ããã®åº§æšèšç®ãšæç»ããžãã¯ãäžåºŠæžãã ãã§ãAndroidãšiOSã§å
±éã®UIãæäŸããŠããŸããã¢ã»ãã管çã®è€éããæããOSéã®UIå·®ç°ãåžåã§ããCMPã®æçšæ§ããããããŠå®æããå®è£
ãšãªããŸããã æåŸã«ãLIFULLã§ã¯ãšãã«ææŠããŠããã仲éãåéããŠããŸãããèå³ããæã¡ããã ããŸãããããã²ä»¥äžã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co â» ä»åã玹ä»ãã LIFULL HOME'S ã¢ããªã±ãŒã·ã§ã³ã¯ ãã¡ã ã«ãªããŸãã

















