ã¯ããã« ããã«ã¡ã¯ã2025幎10æå
¥ç€Ÿã®r.tesakiã§ãïŒ æ¬èšäºã§ã¯ã2025幎10æå
¥ç€Ÿã®ã¿ãªããŸã«å
¥ç€ŸçŽåŸã®ææ³ãã䌺ããããŸãšããŠã¿ãŸããã KINTOãã¯ãããžãŒãºïŒä»¥äžãKTCïŒã«èå³ã®ããæ¹ããããŠãä»ååå äžãã£ãã¡ã³ããŒãžã®æ¯ãè¿ããšããŠæçãªã³ã³ãã³ãã«ãªãã°ãããªãšæããŸãïŒ S.N.  èªå·±çŽ¹ä» KINTOäžå€è»éçºGã®ããã¯ãšã³ããšã³ãžãã¢ãšããŠå
¥ç€ŸããŸããã宀çºãªãã£ã¹å€åã§ãã æè¿æ ç»é€šã®è¿ãã«åŒã£è¶ããã®ã§ãæ ç»é€šã§æ ç»ã芳ãã®ã«ããã£ãŠããŸãïŒ æå±ããŒã ã®äœå¶ã¯ïŒ KINTOäžå€è»éçºGã¯ããããã¥ãŒã¹ããŒã ãããã³ããšã³ãããŒã ãããã¯ãšã³ãããŒã ã®3ããŒã äœå¶ã§ãã ããã¯ãšã³ãããŒã ã¯èªåãå«ããŠ8åã§ãã çŸå Žã®é°å²æ°ã¯ã©ããªæãïŒ åºç€Ÿããæ¥ã«ã¯ããŒã ã¡ã³ããŒãšäžç·ã«ã©ã³ãã«è¡ããªã©è³ãããªé°å²æ°ã§ãã KTCãžå
¥ç€Ÿãããšãã®å
¥ç€Ÿåæ©ãå
¥ç€ŸååŸã®ã®ã£ããã¯ïŒ å
¥ç€Ÿåæ©ïŒ 倧ããªãšã³ãžãã¢çµç¹ïŒç©ãæ±ããµãŒãã¹ã«æºãããããšèããŠããããã å
¥ç€ŸååŸã®ã®ã£ããïŒ ããŒãã£ã³ã°ã瀟å
ã€ãã³ããªã©ã§ä»æ ç¹ã®æ¹ãšãé¢ããããšãæ³åãããå€ããäŒç€ŸãšããŠã®äžäœæããã£ãŠè¯ããšæããŠããŸãïŒ ãªãã£ã¹ã§æ°ã«å
¥ã£ãŠãããšãã 宀çºãªãã£ã¹ã¯é§
çŽçµãªã®ã§ã倩æ°ãæ°ã«ããªããŠè¯ãã®ãå¬ããã§ãïŒ M.U.ãã âãS.N.ãããžã®è³ªå å°åŠçã®æã®å°æ¥ã®å€¢ïŒãªãããè·æ¥ïŒã¯äœã§ãããïŒ å°åŠæ ¡ã®åæ¥ã¢ã«ãã ã®åçæ®åœ±ã§ãšããã³ãã€ããèšæ¶ãããã®ã§ãæç人ã«ãªãããã£ããã ãšæããŸãïŒ K.S.  èªå·±çŽ¹ä» é
ãšã«ã©ãªã±ããããªãæããã¢ã©ãã£ããèªç§°å
ããã²ãŒããŒã æå±ããŒã ã®äœå¶ã¯ïŒ ã³ãŒãã¬ãŒãITéšæå±ã芪äŒç€Ÿã®ããã°ãããžã§ã¯ãã«åç»ããŠã·ã¹ãã ãªãã¬ãŒã¹ã®ãªãŒããŒã çŸå Žã®é°å²æ°ã¯ã©ããªæãïŒ åã
ãéç«ã£ãŠããŠãªãªãžããªãã£ãŒã®ãã人ãã¡ãã¯ã€ã¯ã€ããŠããæãã KTCãžå
¥ç€Ÿãããšãã®å
¥ç€Ÿåæ©ãå
¥ç€ŸååŸã®ã®ã£ããã¯ïŒ å
¥ç€Ÿåæ©ïŒ ãšã³ãžãã¢ã®å ±é
¬ãé«ããã圹è·å®å¹Žãªãããããªããªåãããã ããã å
¥ç€ŸååŸã®ã®ã£ããïŒ ããŒã ã§åããšãããããã³ã§æŽ»åããããšãå€ãæ°ããããæå€ã«ç€Ÿé·ãå¯ç€Ÿé·ãšã®è·é¢ãè¿ãïœ ãªãã£ã¹ã§æ°ã«å
¥ã£ãŠãããšãã ç¥ä¿çºãªãã£ã¹ã¯äººãå°ãªããŠåºã
ãšäœ¿ãããããšãŠãéæŸæããã£ãŠããïŒ S.N.ãã âãK.S.ãããžã®è³ªå äžçªå¥œããªãé
ãæããŠãã ããïŒ ããŒã«ðºããµã€ã³ãŒã§ãðããç颚ãæãã®ã§æ¢
ãµã¯ãŒã§ææ
¢ããŠãŸãð€·ââïž r.tesaki  èªå·±çŽ¹ä» ãªã³ãã¬ã®ã€ã³ãã©ãšã³ãžãã¢ããã¹ã¿ãŒãããŠKTCã§ã¯ãã©ãããã©ãŒã éçºéšDBREã°ã«ãŒãã®SREããŒã ã¡ã³ããŒãšããŠå
¥ç€ŸããŸãããOsaka Tech Labæå±ã§ãã æå±ããŒã ã®äœå¶ã¯ïŒ Database ãå°éãšããDBREããŒã ãšããããã¯ãå
šäœãæ
ãSREããŒã ã®2ããŒã ã«åãããŠæŽ»åããŠãŸããKINTOãä»ã®æ¥åã·ã¹ãã ã®éçºããŒã ãšäžç·ã«æŽ»åããããšãå€ãã§ãã çŸå Žã®é°å²æ°ã¯ã©ããªæãïŒ Osaka Tech Labã¯ããŒã ãè·šãã äžäœæããã£ãŠãä»ã®ããŒã ã¡ã³ããŒã¯æ±äº¬ã«ããŸããå€ç«æã¯ãªãè³ããã«æããŠãŸãã KTCãžå
¥ç€Ÿãããšãã®å
¥ç€Ÿåæ©ãå
¥ç€ŸååŸã®ã®ã£ããã¯ïŒ å
¥ç€Ÿåæ©: çµç¹æšªæã§ãã£ããããããã¯ãå°ä»»ã§ãã£ãããšè²ã
ãªåœ¢ã®SREã«ææŠã§ãããã ã£ãããã å
¥ç€ŸååŸã®ã®ã£ãã: èããŠã以äžã«æ±äº¬ãžè¡ããæ©äŒãå€ããæ¿èªãã¹ã ãŒãºã«é²ãããšã§ããåçš®ã€ãã³ãåå ãããããã§ãã ãªãã£ã¹ã§æ°ã«å
¥ã£ãŠãããšãã JR倧éªé§
ã®æ¹æãåºãŠç®ã®åã«ãªãã£ã¹ãã«ã®å
¥å£ããããšããã K.S.ãã âãr.tesakiãããžã®è³ªå 10ååœãã£ããäœã«äœ¿ãïŒ ç«ã飌ã人ããäœããªããã³ã·ã§ã³ãç«ãŠãŠç«å¥œãã®æ¥œåãã€ããïŒ ã¬ãŒ  èªå·±çŽ¹ä» ãã©ãããã©ãŒã éçºéš Cloud Infrastructure G ã«æå±ããŠããŸããKINTO é¢é£ã·ã¹ãã ã® AWS ã€ã³ãã©ã®æ§ç¯ãä¿å®éçšãæ
åœããŠããŸãã æå±ããŒã ã®äœå¶ã¯ïŒ ã°ã«ãŒãã¯ã€ã³ãã©ããŒã ãã«ã€ãŒã³ããŒã ããœãªã¥ãŒã·ã§ã³ããŒã ã®3ããŒã äœå¶ã§ãåãã€ã³ãã©é åã§ãå¥ã
ã®è²¬åãæ
ã£ãŠããŸãã çŸå Žã®é°å²æ°ã¯ã©ããªæãïŒ ã¡ã³ããŒã®ä»²ãè¯ããéè«ãå€ãã§ãã KTCãžå
¥ç€Ÿãããšãã®å
¥ç€Ÿåæ©ãå
¥ç€ŸååŸã®ã®ã£ããã¯ïŒ ãã©ãããã©ãŒã éçºéšã¯ã°ã«ãŒããããŒã ããããããããæã£ãŠãã以äžã«åœ¹å²ã现ååãããŠãããšæããŸããã è¥æããªãŒãããŠã»ãããšèšãããŠå
¥ç€ŸããŸããããä»ã®ãšãã(ããæå³ã§)ãªãŒãããå¿
èŠæ§ãæããªããããçŽ æŽãããã¡ã³ããŒã ãšæããŸãïŒ ãªãã£ã¹ã§æ°ã«å
¥ã£ãŠãããšãã ç¥ä¿çºãªãã£ã¹ã¯è¿é£ã«é£²é£åºãè±å¯ã§ããããããåºãå€ããšãã r.tesakiãã âãã¬ãŒãããžã®è³ªå ããããã®ãã£ã³ãã°ããºæããŠãã ããïŒ ç¹ã«ããïŒãšããã°ããºã¯ç¡ãã®ã§ãããSOTO ãšããã¡ãŒã«ãŒã®è£œåã¯ã³ã³ãã¯ããªãã®ãå€ãã®ã§ããããã§ãïŒ ãã£ã³ããããŠãããšè·ç©ãå¢ããŠããŠãå°ãã§ãç©ãæžããããåãçšéã§ãå°ãããã®ã«ããããªãã®ã§ã (ãšãã£ãŠãèªåã§ã¯æã£ãŠããªããŠãä»åŸè²·ããããªãšæã£ãŠãããšããã§ãïœ) U.V.  èªå·±çŽ¹ä» ããžãã¹ãã£ããããã¡ã³ãGã®U.V.ã§ãã åœå
å€ã®ããžãã¹æ¡åŒµãæ
åœããŠãããŸãã æå±ããŒã ã®äœå¶ã¯ïŒ 5åã§æ§æããããå€åœç±ã®ããŒã ã§ãã çŸå Žã®é°å²æ°ã¯ã©ããªæãïŒ ãããžã¡ã³ãããã®æ¹éã¯æç¢ºã§ãããåã¡ã³ããŒãèªç±ã«æèŠãè¿°ã¹ãèªåã®ä»äºã«äž»äœæ§ãæã£ãŠåãçµããŠãããšæããŠããŸãã KTCãžå
¥ç€Ÿãããšãã®å
¥ç€Ÿåæ©ãå
¥ç€ŸååŸã®ã®ã£ããã¯ïŒ ãªãªãšã³ããŒã·ã§ã³ã¯åããããããç§ãæ±ããŠããçåããã¹ãŠè§£æ¶ããŠãããŸããã å
¥ç€Ÿæç¹ã§æçµŠäŒæãä»äžããããšäŒºãããšãŠãé©ããŸãããããããšãããããŸãã æ¯ææ°ãããããžã§ã¯ããç«ã¡äžãããä»äºããšãŠããã€ãããã¯ã§æ¥œããã§ããŸãã ãªãã£ã¹ã§æ°ã«å
¥ã£ãŠãããšãã ãªãã£ã¹ã¯æ··éããŠããããæšè£œã®å®¶å
·ããšãŠã坿ãããã§ãã ã¬ãŒãã âãU.V.ãããžã®è³ªå æ¥æ¬ã«æ¥ãåæ©ãšãæ¥æ¬ã«æ¥ãŠé©ããããšãå€ã ãªãŒãšæãããšãããã°æããŠãã ããïŒ æ¥æ¬ã§çåŠçãšããŠéãããæéããšãŠã楜ãããèªåã®åœãšã¯å€§ããéãç°å¢ã§ãã£ãªã¢ãç¯ããããšæããæ¥æ¬ã§åãããšã決ããŸããã é©ããããšã®äžã€ã¯ãæ¥æ¬ã®æ¹ãé»è©±ã§ããèŸåãããããšã§ãã M.U.  èªå·±çŽ¹ä» ã¢ããªãã£ãããã¯ãéçºéšã§ãè²©å£²åºæ§ãšã®é¢ä¿æ§ç¯/ããªã»ãŒã«ã¹ãæ
åœããŠããŸã å€åå
ã¯ä»å¹Žéèšãããã°ããã®çŠå²¡ã§ã æå±ããŒã ã®äœå¶ã¯ïŒ 4åäœå¶ïŒç§ä»¥å€ã¯æ±äº¬ã®ãªãã£ã¹ãããŒã¹ïŒã§å
šåœã®è²©å£²åºæ§ãæ
åœããŠããŸã çŸå Žã®é°å²æ°ã¯ã©ããªæãïŒ çŠå²¡ã§ã¯çã§ååããªããããªãã£ã¹ãéå¶ããŠããŸã åºåŒµã§æ¥ãããæ¹ãå€ãã®ã§ãéšçœ²ãè¶
ããŠäŒè©±ããæ©äŒãå€ãã§ãã ããŒã ã¡ã³ããŒãšã¯å®æçã«ãªã³ãµã€ãã§ã³ãã¥ãã±ãŒã·ã§ã³ãåã£ãŠããã®ã§ããªã¢ãŒãã ãããšãã£ãŠäžèªç±ã¯ç¡ãã§ã KTCãžå
¥ç€Ÿãããšãã®å
¥ç€Ÿåæ©ãå
¥ç€ŸååŸã®ã®ã£ããã¯ïŒ äžèŠæš¡Sierãšã¹ã¿ãŒãã¢ãããçµéšããã®ã§ãèŠæš¡ã®å€§ããªäŒç€Ÿã§æ°ãããã£ã¬ã³ãžãããŠã¿ãããšæã£ãããã§ã 倧ããªã®ã£ããã¯ãªããåã
人ã®ã¹ãã«ãé«ãããã®éå£ã ãšæããŸãã ãªãã£ã¹ã§æ°ã«å
¥ã£ãŠãããšãã å€åå
ã®çŠå²¡ããã¯ã©ãã¯11æã«ãªãŒãã³ããã°ããïŒ æµ·ãèŠæž¡ããéæŸæã®ããæ¯è²ãšãããããªå
è£
ã§ãåºç€Ÿããããªããªãã£ã¹ã§ã U.V.ãã âãM.U.ãããžã®è³ªå ãä»äºã®äžã§ãAI ãã©ã®ããã«æŽ»çšããŠããã®ããè峿·±ãåãçµã¿ãããã°æããŠããã ããŸããã äž»ã«èª¿æ»ãè³æäœæãªã©äžè¬çãªäœ¿ãæ¹ã§ã æ
å ±ããã£ããã¢ããããéã«ã³ãã€ãããã ãšãç€Ÿå€æ
å ±ïŒç€Ÿå
è³æãææ¡ããŠãããã®ãçŽ æµã§ãã è²©å£²åºæ§ã®æ
å ±ã調æ»ããçã§ããã°Geminiã®æ¹ãåªç§ã ãšæããŠããŸã ãããã« ã¿ãªããŸãå
¥ç€ŸåŸã®ææ³ãæããŠãã ãããããããšãããããŸããïŒ KINTOãã¯ãããžãŒãºã§ã¯æ¥ã
ãæ°ããªã¡ã³ããŒãå¢ããŠããŸãïŒ ä»åŸãããããªéšçœ²ã®ããããªæ¹ã
ã®å
¥ç€Ÿãšã³ããªãå¢ããŠãããŸãã®ã§ã楜ãã¿ã«ããŠããã ããŸããã幞ãã§ãã ãããŠãKINTOãã¯ãããžãŒãºã§ã¯ããŸã ãŸã ããŸããŸãªéšçœ²ã»è·çš®ã§äžç·ã«åãã仲éãåéããŠããŸãïŒ è©³ãã㯠ãã¡ã ããã確èªãã ããïŒ
ãã®èšäºã¯ KINTO ãã¯ãããžãŒãº Advent Calendar 2025 ã® 25 æ¥ç®ã®èšäºã§ã ð
ð ã¯ããã« ããã«ã¡ã¯ïŒ KINTO éçºéš KINTO ããã¯ãšã³ãéçº G ãã¹ã¿ãŒã¡ã³ããã³ã¹ããŒã«éçºããŒã ãæè¡åºå ± G å
ŒåãOsaka Tech Lab æå±ã® high-gïŒ @high_g_engineer ïŒã§ããããã³ããšã³ããšã³ãžãã¢ããã£ãŠããŸãã çŸåšéçºäžã®ãããžã§ã¯ãã§ã¯ãRC çã®é ãã React Compiler ãå°å
¥ããŠãããçŽ 8 ã¶æãçµã¡ãŸããã å°å
¥ã«ãã£ãŠ useMemo ã useCallback ãæžããªããŠãèªåã§ã¡ã¢åããããããã¡ã¢åãæèããå¿
èŠããªããªããéçºäœéšã¯åäžããŸããã ããããå®éã«ã©ã®çšåºŠã¡ã¢åãæ£ããè¡ãããŠããã®ããããã©ãŒãã³ã¹ã«ã©ããããã®åœ±é¿ãããã®ãã¯ã詳ããæ€èšŒã§ããŠããŸããã§ããã ããã§æ¬èšäºã§ã¯ãReact Compiler ã®æå¹æã®æåããæå¹æãšç¡å¹æã®ããã©ãŒãã³ã¹æ¯èŒãæ€èšŒããŠã¿ãããšã«ããŸããã React Compiler ãšã¯ https://ja.react.dev/learn/react-compiler/introduction React Compiler ã¯ããã«ãæã«èªåçã«ã¡ã¢åãè¡ãããšã§ React ã¢ããªãæé©åããããŒã«ã§ãã ãã®ãããReact Compiler ãå°å
¥ããã°ã useMemo ã useCallback ã React.memo ãªã©ãæåã§æžãå¿
èŠããªããªããŸãã æåã®å®å®çïŒv1.0ïŒã¯ 2025 幎 10 æ 7 æ¥ã«ãªãªãŒã¹ããããã®èšäºãå·çãããæç¹ã§çŽ 2 ãæåãçµéããŠããŸãã å®å®çãªãªãŒã¹ãŸã§ã®çµç·¯ã¯ä»¥äžã®éãã§ãã 2023 幎 3 æ - ãReact ForgetããšããŠéçºãMeta 瀟å
ã®éå®çãªé åã§ production å©çšéå§ 2023 幎 10 æ - React Advanced Conference 2023 ã§ãReact ForgetããšããŠå
¬éçºè¡š 2024 幎 2 æ - instagram å
šäœã§ production å±éå®äºãMeta 瀟å
ã®ä»ãµãŒãã¹ãžå±éãOSS åæºåãšçºè¡š 2024 幎 5 æ - React Conf 2024 ã§ experimental release ãçºè¡š 2024 幎 10 æ 21 æ¥ - Beta release ãå
¬é 2025 幎 4 æ 21 æ¥ - Release Candidate (RC) ãå
¬é 2025 幎 10 æ 7 æ¥ - v1.0 å®å®çãªãªãŒã¹ React Compiler ã®èšå®æ¹æ³ Vite ãš React 19 ã䜿çšããç°å¢ã§ã® React Compiler ã®èšå®æ¹æ³ã玹ä»ããŸãã 1. ããã±ãŒãžã®ã€ã³ã¹ããŒã« pnpm add -D babel-plugin-react-compiler 2. vite.config.ts ã®èšå® @vitejs/plugin-react ã® babel ãªãã·ã§ã³ã« babel-plugin-react-compiler ã远å ããŸãã import react from "@vitejs/plugin-react"; import { defineConfig } from "vite"; // èšå®ãªãã·ã§ã³ const ReactCompilerConfig = { /* ... */ }; export default defineConfig({ plugins: [ react({ babel: { plugins: [["babel-plugin-react-compiler", ReactCompilerConfig]], }, }), ], }); ããã ãã§èšå®ã¯å®äºã§ããåŸã¯ãã«ãæã« React Compiler ãèªåçã«ã³ãŒããè§£æããå¿
èŠãªç®æã«ã¡ã¢åãé©çšããŠãããŸãã React Compiler ã®èšå®ãªãã·ã§ã³ã«é¢ããŠã¯ãæ¬èšäºã§ã¯èª¬æã岿ããŸãã ç¹ã«èšå®ããªããŠãåäœããŸããã詳现ãç¥ãããæ¹ã¯ä»¥äžãåç
§ããŠãã ããã https://ja.react.dev/reference/react-compiler/configuration ãã³ãããŒã¯å¯Ÿè±¡ã® React ã¢ã㪠å®éã®éçºãããžã§ã¯ãã§æ€èšŒã詊ã¿ãŸãããã䜿çšããŠããã©ã€ãã©ãªã«æ¢ã«ã¡ã¢åãããã³ã³ããŒãã³ããå€ãå«ãŸããŠããŠãçŽç²ãªæ¯èŒãå°é£ã ã£ãã®ã§ããã³ãããŒã¯å°çšã®ãããžã§ã¯ããäœæããŸããã ããããŒããµã€ãã¡ãã¥ãŒãã¡ã€ã³ã³ã³ãã³ãã®ãšãªã¢ã§æ§æãããåæè¡šç€ºæã®åèšã³ã³ããŒãã³ãæ°ã¯çŽ 100 åã§ãã æåã«ãReact Compiler ãç¡å¹ã®ç¶æ
ã§ãReact Dev Tools ã§ã¡ã¢åã®ç¶æ³ã確èªããŠãããŸãã Components ã¿ããèŠããšãã¡ã¢åãããŠããå Žåã«è¡šç€ºããããMemoãã®ã©ãã«ãäžåãªãããšãããããŸãã æ¬¡ã«ãReact Dev Tools ã®èšå®ã§ Highlight updates when components render ã«ãã§ãã¯ãå
¥ããŠãäžäœã«ãããã¿ã³ã³ã³ããŒãã³ããã¯ãªãã¯ãåã¬ã³ããªã³ã°ã®æ§åã確èªãããšãæ¬æ¥åã¬ã³ããªã³ã°ãäžèŠãªåå«ã³ã³ããŒãã³ãã«ãåã¬ã³ããªã³ã°ãçºçããŠããããšãåãããŸãã React Compiler ã®ã¡ã¢åã®æå React Compiler ãæå¹ã«ããŠéçºãµãŒããŒãç«ã¡äžããåãã¢ããªãã¡ã¢åãããŠãããã確èªããŸãã React Dev Tools ã® Components ã¿ãã確èªãããšããMemoãã®ã©ãã«ãæ°å€ã衚瀺ãããŠããããšãåãããŸãã åæ§ã«ãäžäœã«ãããã¿ã³ã³ã³ããŒãã³ããã¯ãªãã¯ããReact Dev Tools ã§åã¬ã³ããªã³ã°ã®ç¶æ
ã確èªãããšãåã¬ã³ããªã³ã°ãå¿
èŠæå°éã«æããããŠããããšãåãããŸãã React Compiler ã®ããã©ãŒãã³ã¹ãã³ãããŒã¯ ããããã¯ãReact Compiler ã«ããããã©ãŒãã³ã¹ã®å·®ã React Dev Tools ã® Profiler ãçšããŠæ€èšŒããŠãããŸãã æ€èšŒã§ã¯ãäžèšã®èµ€æ ã®ãã¿ã³ãçŽ 1 ç§ééã§ 10 åé£ç¶ã¯ãªãã¯ããéã®ãã¬ã³ããªã³ã°æéã®æ¯èŒãè¡ããŸããã ãã®ãã¿ã³ã¯ã¡ã€ã³ã³ã³ãã³ãã®æäžäœã«é
眮ãããŠãããããã¯ãªãã¯æã«å€ãã®åå«ã³ã³ããŒãã³ããžåã¬ã³ããªã³ã°ã®åœ±é¿ãæ³¢åããŸãã React Compiler ç¡å¹æïŒã¡ã¢åãªãïŒ èšæž¬ããŒã¿ 1åç®: 29ms 2åç®: 34.5ms 3åç®: 36.1ms 4åç®: 33.9ms 5åç®: 36.3ms 6åç®: 17.6ms 7åç®: 35.1ms 8åç®: 32.1ms 9åç®: 33.3ms 10åç®: 36.8ms å¹³åã¬ã³ããªã³ã°æé 32.5ms Flamegraph ãèŠããšããã¹ãŠã®åå«ã³ã³ããŒãã³ããã¬ã³ããªã³ã°ãããŠããããšãåãããŸãããŸããMainContents 以å€ã«ãã¬ã³ããªã³ã°æéãé·ãã³ã³ããŒãã³ãïŒé»è²ããªã¬ã³ãžè²ã§è¡šç€ºïŒãååšããæ¬æ¥äžèŠãªåã¬ã³ããªã³ã°ãçºçããŠããããšã確èªã§ããŸãã React Compiler æå¹æïŒã¡ã¢åããïŒ èšæž¬ããŒã¿ 1åç®: 11.1ms 2åç®: 12.1ms 3åç®: 12.2ms 4åç®: 12.1ms 5åç®: 12.1ms 6åç®: 12.1ms 7åç®: 12.1ms 8åç®: 12.0ms 9åç®: 12.0ms 10åç®: 12.6ms å¹³åã¬ã³ããªã³ã°æé 12.0ms Flamegraph ãèŠããšãã°ã¬ãŒã®æç·ã§è¡šç€ºãããŠããã³ã³ããŒãã³ãã倿°ç¢ºèªã§ããåã¬ã³ããªã³ã°ãå¿
èŠæå°éã«æããããŠããããšãåãããŸãã ããã©ãŒãã³ã¹æ¹åã®çµæ React Compiler ç¡å¹æ React Compiler æå¹æ æ¹åçµæ å¹³åã¬ã³ããªã³ã°æé 32.5ms 12.0ms çŽ 2.7 åé«éå React Compiler ãæå¹ã«ããã ãã§ãéåžžã«å€§ããªããã©ãŒãã³ã¹æ¹åãã§ããŠããããšã確èªã§ããŸããã ä»åã¯ã¡ã¢åãå
šãè¡ã£ãŠããªããããžã§ã¯ããšã®æ¯èŒã®ããããã¹ãŠã®ã±ãŒã¹ã§åæ§ã®æ¹åãèŠèŸŒããããã§ã¯ãããŸããããå°å
¥å¹æã¯ååã«æåŸ
ã§ããŸãã æžå¿µç¹ ã©ã€ãã©ãªãšã®çžæ§ çŸåšéçºäžã®ãããžã§ã¯ãã§ã¯ TanStack Table ãå©çšããŠããŸããTanStack Table ã¯æ°ããåç
§ãæå³çã«çæããããšã§åã¬ã³ããªã³ã°ãããªã¬ãŒããèšèšã®ãããReact Compiler ã«ããã¡ã¢åãé©çšããããšãåã¬ã³ããªã³ã°ãçºçããæå³ããªãæåãåŒãèµ·ããå¯èœæ§ããããŸãã ãã®åé¡ã«å¯ŸããŠã¯ã "use no memo" ãã£ã¬ã¯ãã£ãã远å ããŠéšåçã« React Compiler ãç¡å¹åããããšã§å¯Ÿå¿ãå¯èœã§ãã function TableComponent() { "use no memo"; const table = useReactTable({ data, columns, getCoreRowModel: getCoreRowModel(), }); return ( <table> {/* TanStack Table ã®åç
§å€åã«äŸåããåŠç */} </table> ); } react-hook-form ãªã©ãåæ§ã«åç
§ã®å€åã«äŸåããã©ã€ãã©ãªãå©çšããå Žåã¯ãèŠæã§ "use no memo" ã®èšè¿°ãå¿
èŠã«ãªããããå°å
¥æã«ã¯ã泚æãã ããã ãã«ãé床äœäžããã«ããã¡ã€ã«ãµã€ãºäžæ React Compiler ãå°å
¥ãããšãåã¬ã³ããªã³ã°æã®ããã©ãŒãã³ã¹ã¯åäžããŸãããã¡ã¢åã®ããã®ã³ãŒãã远å ãããããããã«ãé床ããã¡ã€ã«ãµã€ãºã«å€å°åœ±é¿ãåºãŸãããã®çµæãååèªã¿èŸŒã¿ãå°ãé
ããªãå¯èœæ§ããããŸãã React Compiler ç¡å¹æã®ãã«ãçµæ ãã«ãæé: 64ms ãã¡ã€ã«ãµã€ãº: 232KB React Compiler æå¹æã®ãã«ãçµæ ãã«ãæé: 556ms ãã¡ã€ã«ãµã€ãº: 248KB ãŸãšã ä»å㯠React Compiler ãæå¹ã«ãããšãã®ã¡ã¢åã«é¢ããæåã®ç¢ºèªãšãããã©ãŒãã³ã¹ã«ã©ãããã圱é¿ãããã®ããæ€èšŒããŠã¿ãŸããã çµæãšããŠãã¡ã¢åãæ£ããåäœãããã®ãããã§ããã©ãŒãã³ã¹æ¹åãååã«æåŸ
ã§ããããšãåãããŸããã ãã ããããã€ã泚æç¹ããããŸãã åç
§ã®å€åã«äŸåããã©ã€ãã©ãªã䜿çšããå Žåã¯ã "use no memo" ã§éšåçã«ç¡å¹åãå¿
èŠã«ãªãããšããããŸãããŸããã¡ã¢åã®ã³ãŒãã远å ãããåããã«ãé床ããã¡ã€ã«ãµã€ãºã«ã¯å€å°åœ±é¿ãåºãŸãã ãšã¯ããããããã¯å¯ŸåŠå¯èœãªç¯å²ã§ãããããã©ãŒãã³ã¹æ¹åã ãã§ãªãã¡ã¢åãæèããªããŠæžããšããã¡ãªããã¯éåžžã«å€§ããã§ããReact Compiler ã®å°å
¥ãè¿·ãããŠããæ¹ã¯ããã²è©ŠããŠã¿ãŠãã ããã æåŸãŸã§èªãã§ããã ãããããšãããããŸããã åèèšäº https://ja.react.dev/learn/react-compiler/introduction https://ja.react.dev/reference/react-compiler/configuration https://reactadvanced.com/2023/ https://conf2024.react.dev/ https://react.dev/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023 https://react.dev/blog/2024/02/15/react-labs-what-we-have-been-working-on-february-2024 https://react.dev/blog/2025/10/07/react-compiler-1 https://github.com/TanStack/table/issues/5567
ããã«ã¡ã¯ïŒKINTOãã¯ãããžãŒãºã®ã¯ãªãšã€ãã£ãGã§ãã¶ã€ããŒãããŠããmayuã§ãã ä»åã¯ãæè¡æžå
žã®è¡šçŽå¶äœã®éçšãã玹ä»ããããšæããŸãã Midjourneyãªã©ã®çæAIããŒã«ã掻çšããŠããã®ã§ãã ãã³ãã¶ã€ããŒã§ããã䞊ã¿ã®å¶äœãã§ããïŒïŒ ãã®ãããœã§ãã ãã¶ã€ããŒã®æ¹ããããã§ãªãæ¹ããã²ã芧ãã ããïŒ æè¡æžå
žçšã®è¡šçŽãã¶ã€ã³ãäŸé Œããã ããæ¥ããšã³ãžãã¢ã®ããã¯ããããã ãKINTOãã¯ãããžãŒãº(KTC)ã®æå¿ãšã³ãžãã¢ã«ããæè¡æžãæè¡æžå
žã«åºå±ãããã®ã§ã衚çŽãã¶ã€ã³ãäœã£ãŠã»ããã ãšããäŸé ŒãåããŸããã ä»åã¯ã¯ãªãšã€ãã£ãGã®ãã¶ã€ããŒmomoiããã®ææ¡ã§ ããã¶ã€ããŒãéããŠã©ã€ããã€ã³ãã£ã³ã°æ¹åŒã§äœæããã®ã¯ã©ããïŒã ãšããããšã§ãã©ã€ããã€ã³ãã£ã³ã°ã€ãã³ãå
ã§ã®å¶äœã決å®ããŸããïŒ æè¡æžå
žã£ãŠãªã«ïŒ æè¡æžå
žã«ã€ããŠã¯ããã¯ããããæžããŠãã ãã£ãèšäºãããã®ã§ãã¡ããã芧ãã ããã https://blog.kinto-technologies.com/posts/2025-12-12-techbookfest19-report/ ã©ã€ããã€ã³ãã£ã³ã°ã£ãŠãªã«ïŒ ã©ã€ããã€ã³ãã£ã³ã°ã«ã€ããŠã¯momoiãããæžããŠãã ãã£ãèšäºãããã®ã§ãã¡ããã芧ãã ããã https://blog.kinto-technologies.com/posts/2025-12-24-ai-live-painting/ ã©ããã£ãŠäœã£ãã ãã£ããäœãæ¹ã説æãããšã 1. ãé¡ãChatGPTã«ã€ã³ãããããã 2. ChatGPTã«ããã³ãããæžããŠããã 3. Midjourneyã§ç»åãçæãã 4. Midjourneyã§è§£å床UP & Photoshopã§åŸ®ä¿®æ£ãã 5. illustratorã§å
¥çš¿ããŒã¿ãäœæãã ã®5ã¹ãããã§ãïŒ ããããçŽè§£ããŠãããŸããã 1. ãé¡ãChatGPTã«ã€ã³ãããããã ä»åã®ãé¡ã¯ãã¡ãã§ããã ãé¡ã¯äºåã«ç¥ããããŠããªãã£ãã®ã§ãæ£çŽããã£ãããããé¡ã ãªâŠããšæãæåã¯å
šãã€ã¡ãŒãžãæµ®ãã³ãŸããã§ãããç¬ 2. ChatGPTã«ããã³ãããæžããŠããã ãŸãã¯ãç§ã®çžæ£ChatGPTã«ãé¡ãã€ã³ãããããŠãã¢ã€ãã¢åºããããŠãããããšã«ããŸããã ã²ãšãŸããããã³ãããåºããŠãããã®ã§ãããMidjourneyã«å
¥åããŠãããŸãã 3. Midjourneyã§ç»åãçæãã äžåç®ã®çæçµæã¯ãããªæãïŒ ããŽãã¯äºåã«é
åžãããŠããçŽ æã Omni-Reference ã§èªã¿èŸŒãŸããäžè²«æ§ãä¿ã£ãŠããŸãã Omni-Referenceã«ã€ããŠã¯momoiããã詳ããæžããŠãã ãã£ãŠããã®ã§ãã¡ãã®èšäºãã芧ãã ããã https://blog.kinto-technologies.com/posts/2025-06-13-omni-reference/ ãããŸã§ãã£ãŠããªããšãªãäžç芳ã®ã€ã¡ãŒãžã¯æ¹§ããŠããŸããã ã§ããããŽããæ£ç«ã¡ã§åãããªãã®ã§äœãéããªãŒã£ãŠæã⊠ãã©ããªããŒãºããããïŒããšChatGPTã«çžè«ããŠã¿ãŸããã ããããã£ãããŒïŒïŒããªãå
·äœçã§ãããªãã€ã¡ãŒãžã«åããã®ãäœãããïŒ ããããã®ããŒãºãããã³ããã«èœãšã蟌ãã§ããããŸããã ããããããäžåºŠMidourneyã§çæããŠã¿ãŸãã ãªããªãããæãã«ãªããŸããïŒ å
ã»ã©ã®æ£ç«ã¡ããŽããšæ¯ã¹ããšããæªæ¥æããå¢ããæ°ãããŸãã ãã ã衚çŽã®äžéšã«ã¯ã¿ã€ãã«ãå
¥ããäºå®ãªã®ã§ãããã ãšé ãšæåã被ã£ãŠããŸããããªãã§ããã⊠ã©ããããâŠãšèããçµæã 座ãããããšã«ããŸããïŒç¬ (ããŽãã座ãããããChatGPTã«ããã³ãããæžããŠããããŸãã) ãããªãç»åã®äžéšã空ãã®ã§ãã¿ã€ãã«ãåé¡ãªãå
¥ãããã§ãã äœåãäœæãããšãããªããã£ããæ¥ãç»åãçæãããŸããïŒïŒ ãã¡ãã§ãïŒ ãŸãã«ç§ãæ±ããŠãããå
é²çã§ãã¢ããªãã£æã®ããç»åããçæãããŸããïŒ ç»åã®äžéšãããæãã«ç©ºããŠããã®ã§ãã¿ã€ãã«ããã¡ããšåãŸãããã§ãã ãããã埮修æ£ã¯å
¥ããŸãããããŒã¹ã®ãã¶ã€ã³ã¯ããã§æ±ºå®ããŸããã 4. Midjourneyã§è§£å床UP & Photoshopã§åŸ®ä¿®æ£ãã ã©ã€ããã€ã³ãã£ã³ã°ã€ãã³ãå
ã§ã¯æéå¶éããã£ããããå
ã»ã©çæããç»åããã®ãŸãŸæåºããã®ã§ããããããããããšã«äŸé Œè
祚ã»ãªãŒãã£ãšã³ã¹ç¥šãšãã«1äœã«éžãã§ããã ããæŽããŠè¡šçŽããã¥ãŒã決å®ããŸããïŒïŒïŒ ãšãªããšãå
ã»ã©ã®ç»åã衚çŽçšã«ç¶ºéºã«æŽããŠããå¿
èŠããããŸãã ããããã¯MidjourneyãšAdobeã®Photoshopã䜿ã£ãŠç»åãä¿®æ£ããŠãããŸãã ãŸãã¯ãMidjourneyã䜿ã£ãŠè§£å床ãäžããŠãããŸãã ããæ¹ã¯ãšãŠãç°¡åã§ãç»åãéããŠå³äžã® ãCreation ActionsãâãUpscaleãâãSubtleããäžåã¯ãªãã¯ããã ã ã§ãã (é£ã«ãããCriativeãã¯ãä»åã¯å
ã®ç»åãä¿æãããã®ã§äœ¿ããŸããã§ãããããã£ãã£ãŒã«ãå ããŠã¯ãªãªãã£ã¢ãããç®æããªããã¡ããããããã§ãïŒ) ãã®æäœã«ããç»è³ªã¯ä¿ã£ããŸãŸã 896px à 1,344px ãããã 1792px à 2,688px ããšã2åã®è§£å床ã«ãªããŸããïŒ æ¬¡ã«ãPhotoshopã§åŸ®ä¿®æ£ãããŠãããŸãã æ°ã«ãªãã®ã¯ãã®èŸºã§ããã ããŽãã®ããããã³ã«æãããŠããâãªã©ã®ããŒã¯ å·Šäžã®æå·ãœããã® Photoshopã§ç°¡åã«æ¶ããŠãããããšæããŸãã ãªããªãããŒã«ã§äžèŠãªéšåãå²ã£ãããã çæå¡ãã€ã¶ã ããã¯ãªãã¯ããŸãã(â»ããã³ããã¯ç¡ãã§OK) 綺éºã«æ¶ããŸããïŒ å·Šäžéšåãåæ§ã®æäœãè¡ã£ãŠãããŸãã èªç¶ã«éŠŽæã¿ãŸããïŒ ããã§ç»åãä»äžãã£ãã®ã§ãããšã¯å
¥çš¿ããŒã¿ãäœæããŠãããŸãã 5. illustratorã§å
¥çš¿ããŒã¿ãäœæãã ãã¡ããå
¥çš¿ããŒã¿ã§ãïŒ ã¿ã€ãã«ãªã©ä»ãè¶³ããŠè衚çŽãšè£è¡šçŽãäœæããã宿ã§ãã å¶äœãçµã㊠å¶äœãçµããŠæããã®ã¯ãAIã®ãããã§ãã³ãã¶ã€ããŒã§ãé«å質ãªããžã¥ã¢ã«ãäœããããŒãã«ãæ Œæ®µã«äžãã£ããšããããšã§ãã ä»åã®è¡šçŽå¶äœã§ããChatGPTã§ã®ã¢ã€ãã¢åºããMidjourneyã§ã®ç»åçæã«ãã£ãŠããŒãããäœããçã¿åºãè² è·ã倧ããæžããŸããã ãã®äžæ¹ã§ããäœãããããäœãæªããã®å€æãã现ããªäžç芳ã®èª¿æŽãªã©ãAIã ãã§ã¯å®çµããªãéšåãå€ããããŸãã ã ãããããAIã®åãåãã€ã€ã人éãæã€ææ§ãå©çšããŠæ¹åæ§ãéžæããããšãéèŠã ãšãæ¹ããŠæããŸããã ç§ã¯ä»å¹ŽããAIãããžã§ã¯ãã¡ã³ããŒãšããŠæºãã£ãŠããŠãããŸããŸãªããŒã«ã䜿ãäžã§ãå°ããã€ã AIãžã®æ£ããé Œãæ¹ ããããã£ãŠãã宿ããããŸãã AIã¯ãŸã å®å
šã§ã¯ãªãã人éã«çœ®ãæããããšã¯ã§ããŸããããé«ãã¯ãªãšã€ãã£ããã£ãæã£ãŠããŠãç§ã«ãšã£ãŠä»äºã«æ¬ ãããªãååšã«ãªã£ãŠããŸãã ããããããAIãå¿åŒ·ãããŒãããŒãšããŠãããŸã忥ããªããå¶äœã«åãåã£ãŠãããããšæã£ãŠããŸãã æåŸãŸã§ãèªã¿ããã ããããããšãããããŸããïŒ
KINTOãã¯ãããžãŒãºïŒKTCïŒã®æ¯å±±ã§ãïŒ å¹Žæ«æäŸãšãªããŸããã2025å¹Žã®æ¯ãè¿ããšãæ¥ã2026幎ã®å±æã«ã€ããŠæžããããšæããŸãã 2025å¹Žã®æ¯ãè¿ãïŒå®è£
ãšã«ã«ãã£ãŒãžã®å®ç 2025幎ã®å¹Žåãç§ã¯ãAIãã¡ãŒã¹ãããšããªãªãŒã¹ãã¡ãŒã¹ãïŒæçãªãªãŒã¹ïŒããšãã2ã€ã®ããŒããæ²ããŸããã https://blog.kinto-technologies.com/posts/2024-12-25-LookBack2024/ 1. AIãã¡ãŒã¹ãïŒå®è£
ã®å¹Ž äžã®äžçã«ãçæAIã®å®è£
ãåœããåãšãªã£ã2025幎ãKTCã§ã以äžã®3ç¹ãæšé²ããŠããŸããã ãã¹ãŠã®ãããã¯ããžã®AIã€ã³ãã°ã¬ãŒã AIãããã¯ããå€ãéçºãã 販売åºãããšã¿ã°ã«ãŒãã«ãããAI掻çšã®ãã©ã€ããŒãšãªã ãã®1幎ã§ã瀟å¡ã®ã¿ãªããã®ãã€ã³ãã¯åçã«å€ãããŸãããç§ã®æ³åãè¶
ããã¹ããŒãã§å€åãé²ã¿ãKTCãã°ã«ãŒãå
ã§ãAI掻çšã®å
é éå£ã«ããããã®ã¯ãã¿ãªããã®çå£ãªåãçµã¿ã®ãããã§ããæ¬åœã«ããããšãããããŸããïŒ 2. ãªãªãŒã¹ãã¡ãŒã¹ãïŒã«ã«ãã£ãŒãžã®æµžé ãã¡ãã¯ãã¯ãã«ã«ãªæœçãšããããããããããã¯ãéçºã®æåããšããŠçµç¹ã«æ·±ãæ ¹ä»ãã€ã€ãããŸãããäœãäœãããã ãã§ãªããããã«éãå±ããããããã®æèããç§ã®æ³å®ã軜ã
ãšé£ã³è¶ããã¿ãªããã®æã«ãã£ãŠçŸå Žã®åœããåã«ãªãã€ã€ããããšã«é ŒããããæããŠããŸãã 2026幎ã®å±æïŒèªåŸãšæ¡åŒµã®å¹Ž ãã¯ãããžãŒæ¥çã®æœ®æµã¯ãã察話ããAIããããè¡åããAIããžãšæ¥éã«ã·ããããŠããŸãã ãã®æ³¢ãæããããã«ã2026幎ã¯ä»¥äžã®2ã€ã®ãã¡ãŒã¹ãã«æ³šåããŸãã 1. Agentãã¡ãŒã¹ãïŒAgentic AIïŒ 2025幎ãŸã§ã®AIã¯ã人éãæç€ºãåºããŠçããããããè³¢ããã£ãããããããäž»æµã§ãããããããæšä»ã®æè¡ãã¬ã³ãã¯ãè€éãªæšè«ãè¡ããèªåŸçã«ã¿ã¹ã¯ãå®éãããAI Agentããžãšå®å
šã«ç§»è¡ããŠããŸãã ãããŸã§ã®AI掻çšã¯ãå人ã®äœæ¥è£å©ãã«çãŸããã¡ã§ãçµç¹å
šäœã®å¹çåã«ã¯éçããããŸãããããããAgentã¯éããŸããæœè±¡çãªç®çãäžããã°ãAIèªããã¿ã¹ã¯ãåè§£ããããŒã«ãæäœãã人éã®ããã«ã¢ã¯ã·ã§ã³ãå®è¡ããŸãã KTCã§ãäžéšã®éšçœ²ã§Agent掻çšãå§ãŸã£ãŠããŸããã2026幎ã¯ãããå
šç€Ÿå±éããŸãã CXå€é© ïŒWeb/Appäžã§ãã³ã³ã·ã§ã«ãžã¥ã®ããã«æ¯ãèãAI Opså€é© ïŒéçšã»æ¥åããã»ã¹ãèªåŸçã«åãAI Saleså€é© ïŒã¯ã«ãã®è²©å£²ããã»ã¹ãã®ãã®ãåçºæããAI äžã®äžããAIã䜿ãããããAIã«ä»»ããããžãšå€ããä»ãå
šéšçœ²ã§Agentãçã¿åºããçµç¹ã®çç£æ§ãççºçã«é«ããŠãããŸãããã 2. AIãšã³ãžãã¢ãªã³ã°ãã¡ãŒã¹ãïŒAI-Native DevïŒ ãœãããŠã§ã¢éçºã®äžçã§ã¯ä»ãGitHub Copilot WorkspaceãKiroãCursorãClaude Codeã®ãããªAIãã€ãã£ããªéçºç°å¢ãæšæºã«ãªãã€ã€ãããŸãããã³ãŒããæžãããšããè¡çºãã®ãã®ã®å®çŸ©ãå€ããããšããŠããã®ã§ãã ãã®å€åã¯ããããŸã§ã®æè¡é©æ°ãšã¯æ¯èŒã«ãªããªãã¹ããŒãã§é²ãã§ããŸããå€ãããæ¹ã«åºå·ããã°ããã£ãšããéã«é³è
åããŸãããããéã«èšãã°ã ãAIãšã³ãžãã¢ãªã³ã°ããæŠåšã«ããã°ãè·çš®ã®å£ãè¶
ãããã ãšããããšã§ãã äŒç»ãèŠä»¶å®çŸ©ãèšèšãå®è£
ãAIãå®è£
ããµããŒãããŠãããä»ãPdMãPjMãšãã£ãè·çš®ã®æ¹ã
ããåŸæ¥ã¯ãšã³ãžãã¢é åãšãããŠããä»äºãŸã§æ¡åŒµã§ãããã£ã³ã¹ã§ããäŒç€Ÿã¯ææ°ã®æŠåšïŒããŒã«ã»ç°å¢ïŒãæãã¿ãªãæäŸããŸããäžäººã²ãšãããAIãã€ãã£ãããªèŠç¹ã§ããã»ã¹ãåæ§ç¯ããéçºã®ããæ¹ãææ¬çã«å€ããŠãããŸãããã KTCã®æºãããªããåºæ¬ç䟡å€ã æè¡ãã¬ã³ããããã«å€ããããšããKTCã®ç«¶äºåã®æ ¹å¹¹ãšãªã䟡å€èгã¯å€ãããŸããã ã€ã³ãã³ã·ãã£ïŒMoveFastã»OwnerShipïŒ ãªãªãŒã¹ãã¡ãŒã¹ã ãŠãŒã¶ãŒãã¡ãŒã¹ã ãããã®äŸ¡å€ã¯KTCã®å人ã«ããæ§æãããKTCãå€åã®æ¿ããæä»£ãçãæãããã®åºç€åã§ããäŒç€ŸãšããŠãæ¯æŽããŸãããäœããã¿ãªããèªèº«ã®å®è·µã«ããã£ãŠããŸããåŒãç¶ãã培åºããŠãããŸãããã KTCã®åŒ·ã¿ãåªäœæ§ïŒVertical AIãžã®ææŠ æ±çšçãªAIã¢ãã«ã¯äžè¬åããäžçäžã®èª°ãã䜿ããããã«ãªããŸãããã§ã¯ãKTCã¯ã©ãã§åã€ã®ããããã¯ããã¡ã€ã³ç¹åïŒVerticalïŒæŠç¥ãã§ãã AI (Agent) ã¯ã©ãŠã ãã¡ã€ã³ç¥è & ã°ããŒã¹ããŠã㊠AIÃã¯ã©ãŠãã®æè¡åã¯åææ¡ä»¶ã§ããããã¯é²åãéããåžžã«æå
端ããã£ããã¢ãããç¶ãã屿©æãå¿
èŠã§ãã ãã®äžã§ãæã
ã«ã¯ãããšã¿ã°ã«ãŒãã®ããžãã¹è³ç£ãããããŸããã³ãã¯ãã£ããããŒã¿ãè»äž¡è²©å£²ã®ç¥èŠããªã¢ã«ãªé¡§å®¢æ¥ç¹ããããã¯ä»ç€Ÿãç°¡åã«æš¡å£ã§ããªãè³ç£ã§ãã ãAIÃã¯ã©ãŠãããšããã°ããŒãã«ãªæŠåšã§ããã¢ããªãã£ããšããç¬èªã®é åãæ·±æããã ãæ¥åç¥èãèãããããAIã§äŸ¡å€ã«å€æãããµã€ã¯ã«ãåãããšããããKTCã ãã®åŒ·ã¿ã«ãªããŸãã æåŸã« 2026幎ã¯ãæè¡ã®é²åãããã«å éãã瀟äŒå®è£
ã®ãã§ãŒãºãäžæ®µéäžãããŸããå€åãæãããããããã®å
é ã«ç«ã€æ°æŠãæã£ãŠãäžäººã²ãšããã¢ããããŒãããŠãããŸãããïŒ
ã¯ããã« ãã®èšäºã¯ KINTOãã¯ãããžãŒãº Advent Calendar 2025 ã® 24æ¥ç®ã®èšäºã§ãð
ð ããã«ã¡ã¯âê¬â®âžo KINTOãã¯ãããžãŒãºïŒä»¥äžãKTCïŒã§äººäºã°ã«ãŒãã«æå±ããŠãããã ãŒããŒïŒ @dashiko ïŒã§ãã æ®æ®µã¯ç·åã»åŽåãŸããã®å®åã圹å¡ç§æžæ¥åããããŠåæ ç¹ã«ãããµããŒãã¡ã³ããŒãæããããŒã ã®ãªãŒããŒãæ
åœããŠããŸãã ç§ã¯KTCèšç«æºåã®ææããåšç±ããŠãããæ°ã¥ãã°æ© 5 幎㚠10 ãæãçµãšããšããŠããŸãïŒå€æ ªãéãè¶ããŠããã¯ãåç³ã§ãðïŒã éçºçµç¹ã®èŠæš¡ãããããããŸã§åœæã¯ 30 åã»ã©ã ã£ããšãããããããŸã§ã¯ 400 åãè¶
ããçµç¹ãžãšæé·ããŸããã ãããªå€åã®æ³¢ã®äžã§ããã®äŒç€Ÿã§åããŠç·åã®é åã«é£ã³èŸŒã¿ã æ°ã¥ãã°ãã£ãš âçŸå Žã®ç·åâ ãšããŠãªãã£ã¹ã¥ããã«åãåã£ãŠããŸããã ãã®èšäºã§ã¯ããã®ç·åæ¥åã®äžã§ããå
šç€Ÿã暪æããŠåããŠããç·åããŒã ã éç§°ãTeamç·åãã®æŽ»åã«ã¹ããããããŠãŠã玹ä»ããŠãããããšæããŸãð â»Teamç·å ïŒ å
åŒäŒç€ŸKINTOã®ç·å à KTCåŽã®ç·åãã¿ãã°ãçµãã ã å
šç€Ÿæšªæã§ãªãã£ã¹ãå®å
šã»ã«ã«ãã£ãŒã¥ãããåãããŠããããŒã ã§ãã Teamç·åãæŠéçã¯äžæ¬ç·ã®ãžã£ãŒãžã§ã ITäŒæ¥ãšèããšããŸãæãæµ®ãã¶ã®ã¯ð¡ ãšã³ãžã㢠ãã¶ã€ã㌠PjMã»PdM ãªã©æãæµ®ãã¹ã人ãå€ããšæããŸãã ãã®è£åŽã§ ããªãã£ã¹ããšããç©çã€ã³ãã© ãæ¯ããŠããã®ãç·åã§ãã ãšã¯ããã瀟å€ããèŠããšã ãITäŒæ¥ã®ç·åã£ãŠãå®éãªã«ããŠãã®ïŒã ãâãªãã§ãå±âã£ãŠèããã©ã宿
ã¯ïŒã ãšããã®ãæ£çŽãªãšããããªãšð€ ããã§ãã®èšäºã§ã¯ãåŒç€Ÿã®Teamç·åãäŸã«ã ç·åãã©ããªåœ¹å²ãæ
ã£ãŠããã®ã ãã®1幎ãã©ããªããšã«èµ°ãåã£ãŠããã®ã ãã®äžã§èŠããŠãã âæ³¥èãâ ãš âãããããâ ãããããã玹ä»ãã€ã€ãITäŒæ¥ã®ç·åã®äžèº«ãå
šéšèŠãã¡ãããŸãã ãããŒãã«ãŸãšããŠãããŸã ð Teamç·åã£ãŠäœãã£ãŠããã®ïŒ âïžãªãã£ã¹éå¶ïŒç©çäžçã® SRE ã¿ãããªä»äº ç·åã¯ãããæå³ Office Reliability Engineering ã§ãð è€æ°æ ç¹ïŒæ±äº¬ã»åå€å±ã»å€§éªã»çŠå²¡ïŒã®ãªãã£ã¹ç®¡ç ã¬ã€ã¢ãŠã倿Žã»å¢åºã»ç§»è»¢ã»ãªãã¥ãŒã¢ã« éç§°ïŒæ°æå€§ç§»åïŒïŒå€§èŠæš¡ãªãŸãŒãã³ã°ãé
眮æ¿ãïŒã®èšèšãšå®è¡ æ€
åã»ãã¹ã¯ã»å
±çšååãªã©ã®ä»åšç®¡ç å
¥é通ã»ã»ãã¥ãªãã£ã«ãŒãã®ç®¡ç çŸå Žã¬ãã«ã ãšã 座åžè¡šãPowerPointã§å°éã«æŽæ°ããªãã åéšçœ²ã®é¢ä¿è
ãšããåãããã㊠移転æ¥ã»å·¥äºæ¥ã»åžæ¿ãåœæ¥ãªã©ã®ãã€ã«ã¹ããŒã³ã決ããŠã èªåãã¡ã®ToDoã«èœãšããŠã²ãšã€ãã€æœ°ããŠãã ãšããããã¢ããã°ãšããžã¿ã«ã®ããã ããããã®éçšã§åããŠããŸãã èŠãç®ã¯æ³¥èãããã©ããã£ãŠããããšã¯ã»ãŒãããžã§ã¯ãã¯ãŒã¯ã§ãð¡ ð±åãç°å¢ã¥ããïŒå¿«é©æ§ã»å©äŸ¿æ§ã»å®å
šæ§ã®æé©å ãã¡ãã£ãšããäžäŸ¿ããæŸã£ãŠçŽãã®ããç·åã®å€§äºãªåœ¹ç®ã§ãð ïž åæã«1åãçµŠè¶æ©ã®ãã¬ãŒããŒã¢ã³ã±ãŒãã宿œããŠã©ã€ã³ããããèª¿æŽ ç©ºèª¿ã»ç
§æã»éšé³ã«é¢ããçžè«ã®äžæ¬¡çªå£ å£ç¯ãç¶æ³ã«å¿ããèšçœ®ååã®èª¿æŽ æ€æ œã®é
çœ®ãææäºé²ã°ããºããµãŒãã¥ã¬ãŒã¿ãŒãªã©ã®èšçœ®ãªã© ã1人ã®âæ°ã«ãªãâã¯ã10人ã®âèšããªãã¢ã€ã¢ã€âããã ãšããåæã§ãåå¥ã®èŠæãšããã¢å
šäœã®ãã©ã³ã¹ãèŠãªããã å
šäœæé©ã®èœãšãã©ãããæ¢ããŠããŸãð ã¿ããªã®æšããã¬ãŒããŒãæããŠïŒçµŠè¶æ©ã¢ã³ã±ãŒã ðã¬ããã³ã¹ãšã«ãŒã«æŽåïŒããããã瀟å
仿§æžããã€ãã ãªãã£ã¹ãå®å®éçšããã«ã¯ã ãã¡ãã£ãšãããäœæ³ãããããããšãããšãã®è¡åããŸã§ãã«ãŒã«ã¥ãããæ¬ ãããŸããðïž åæ ç¹ã®ãªãã£ã¹ã¬ã€ã æ¥åžžã®ã«ãŒã«ïŒç€Ÿå
æç¶ãã®ç³è«ã»æ¿èªãã㌠å®å
šè¡çã»çœå®³æã®è¡åããã¥ã¢ã« ãªã© ãããããã§ããã ãITäŒæ¥ãããã»èªã¿ããã ãæèããŠæŽããŠããŸãã èªãŸããåæã®ã«ãŒã«ïŒèŠåºãã»Q&Aã»å³è§£ã§ãµã¯ããšçè§£ã§ããããã«ïŒ ã€ãã£ãŠçµããã§ã¯ãªãããã£ãŒãããã¯ãç¶æ³ã«å¿ããã¢ããããŒã ã«ãŒã«ã§çžããšããããã¯ã ãã¿ããªãè¿·ããã»æ°æã¡ããåããããã®ç€Ÿå
仿§æžãã€ããã ãšããæèŠã§éçšããŠããŸãð 瀟å
ã«ãŒã«ã»ãã¬ããžããã
ã£ãšè©°ãŸã£ããKINTO Technologies NaviïŒKTNïŒã å°ã£ãããŸããããéãã°ã ããããªããšããªãããç®æããŠè²ãŠãŠããŸã ð瀟å
ã€ãã³ãã»ã«ã«ãã£ãŒã¥ãã Teamç·åã¯ããªãã£ã¹èµ·ç¹ã®ã€ãã³ã ã宿œããŠããŸãã äžå€ð ãããŠã£ã³ð ã¯ãªã¹ãã¹ðãªã©ããªãã£ã¹ã§å£ç¯ãæããããã€ãã³ãäŒç»ãè£
食ã¥ãã 瀟å
æ²ç€ºæ¿ã§ãç·åã®ã€ã¶ããããé£èŒããåæ ç¹ãªãã£ã¹ã®ãããã¯ãã€ãã³ãå ±åãç·åã®èå°è£ãçºä¿¡ ããããåãçµã¿ã¯ãåãªããçãäžããã€ãã³ããã§ã¯ãªãã åããŠã®æ¹ãåå ããããé°å²æ°ã¥ãã æ ç¹ã»è·çš®ã»åœ¹è·ããŸããã§ã®ã³ãã¥ãã±ãŒã·ã§ã³ãã£ããã¥ãã ãªãã£ã¹ã«åºç€ŸãããïŒãšæã£ãŠããããä»çµã¿ã¥ãã ãªã©ãã«ã«ãã£ãŒã®OSã¢ããããŒãã®å ŽãšããŠèšèšããŠããŸã𧩠瀟å
æ²ç€ºæ¿ã§é£èŒããŠãããç·åã®ã€ã¶ããã åæ ç¹ã®å£ç¯ã€ãã³ãããªãã£ã¹ã®å°ãã¿ãTeamç·åç®ç·ã§ããã£ãšãå±ã ðªã¡ãã£ãšæ³¥èããªã¢ã«ç·šïŒç·åã¯ãããšç©çããã ãããŸã§èªããšã¹ããŒãã«èãããŸãããçŸå Žã¯ããªãæ³¥èãã§ã⟠ã ãããæ¯æã©ããã§æ±ãããŠãŸããœ(ÂŽoïœïŒïŒïœ é·å°ºèç«ã«ä¹ã£ãŠååãä¿®çãã åºäžé»æºã®é
ç·ã®ããã«ããªãã£ã¹ã®åºäžã«æœã蟌ã ãªãã£ã¹çŸåã®ããã«ã宿çã«ããã¢ãããããå·¡åãã å£ç¯è£
食ããªãã£ã¹ã€ãã³ãè£
食ããæäœããããèªåãã¡ã®æã§1æãã€è²Œã£ãŠåã 座åžãåºå®åžéçšãªã®ã§ãç°åã»å
¥é瀟ã»å
Œåãåæ ããææ°ã®åº§åžè¡šãæ¯æã³ãã³ãæŽæ°ãã ãšã³ãžãã¢ãã³ãŒãããããã€ããŠããè£åŽã§ã ç·åã¯ç·åã§ ããªãã£ã¹ãšããç©çã¬ã€ã€ãŒããããã〠ããŠãããããªãã®ã§ãã ç·åã¯æ±ºããŠãã©ãã©ããä»äºã°ããã§ã¯ãããŸãããã æ³¥èãæãåãããŠããã¶ãã ãã ã誰ãã®ããã®ä»äºãããã£ããèŠããè·çš® ã ãšæããŠããŸãã åºäžæãã®åçãæ¢ãããã5幎åããåºãæã£ãŠããŸããïŒç¬ïŒ 2025幎ã®ç·å掻åãã€ã©ã€ã è²ã
ãšèªã£ãŠããŸããŸããããããã§ããŒã£ãšä»å¹Ž1幎ã®ç·å掻åãã«ã¬ã³ããŒåœ¢åŒã§æ¯ãè¿ã£ãŠã¿ãŸãããð
ä»å¹Ž1幎ã®ç·å掻åã¡ã¢ãªãŒãºð· ããããŠæããšã«äžŠã¹ãŠã¿ããšã ãªãã£ã¹ã®ç§»è»¢ã»éèšã»ãªãã¥ãŒã¢ã«ã»ãŸãŒãã³ã°èª¿æŽïŒå
šæ ç¹âŠïŒïŒ æ°æå€§ç§»åã¬ãã«ã®ã¬ã€ã¢ãŠã倿ŽïŒå¹Ž2åâŠïŒïŒ äžå€ã»ãããŠã£ã³ã»Xmasãªã©å£ç¯ã€ãã³ãã®äŒç»ã»éå¶ ãŸã§ããã«ã³ãŒã¹ã§ãã£ãŠãã1幎ã ã£ãããšã«ãèªåãã¡ã§ãã¡ãã£ãšç¬ã£ãŠããŸããŸãð ããªãã£ã¹ã¯çãç©ããšããèšããŸããã ãã®å
èïŒã¬ã€ã¢ãŠãïŒãè¡ç®¡ïŒåç·ã»é
ç·ïŒããããŠâæ°æã¡ã®æž©åºŠâããã£ããšæŽããªããã ã¿ããªããã€ãéãåããæ¥åžžãç¶æããŠãã1幎ã ã£ããªãšæããŠããŸãâš æ¥å¹ŽææŠãããããš æ¥å¹Žä»¥éãTeamç·åãšããŠãã£ã¬ã³ãžããŠããããããšãã ããããªã£ãããããªãããã®ãŸãŸå®£èšããŠãããŸãð¥ ãªãã£ã¹æ¹åã¢ã€ãã¢ã âãããã¯ãããã¯ãã°â çã«ç®¡çãã 声ãéããŠãèŠããå Žæã§åªå
床ãã€ããŠãã¡ãããšãªãªãŒã¹ããŠãã æäœæ¥åæã®ãªãã¬ãŒã·ã§ã³ããAIåæãã«çµã¿æ¿ããŠãã ããã¯ãªãã£ã¹ããAI掻çšã®å®éšå Žã«ããŠããã§ãã¯ã»è»¢èšã»éèšãªã©ã®åçŽäœæ¥ã¯ã©ãã©ãAIã«ä»»ããŠãã ãåºç€Ÿããããªãå Žæããã€ãããªãã£ã¹äŒç» ãã ã®âäœæ¥å Žæâã§ã¯ãªãããè¡ããšã¡ãã£ãšåŸãããã誰ããšè©±ããããªãããªãã£ã¹ãžåŒ·å å£ç¯ã€ãã³ããã幎äžè¡äºãã¬ãã«ãŸã§å®çããã 幎ã®ãªãºã ãšããŠããããããããäžå€ã ããä»å¹Žã®ãããŠã£ã³ã¯äœããã®ïŒããèªç¶ã«åºãŠããããããŸã§è²ãŠã å©çšç¶æ³ãã¢ã³ã±ãŒããªã©ãããŒã¿ã«åºã¥ãããªãã£ã¹éå¶ãé²ãã åãšçµéšã ãã§ãªãããæ°åãèŠãªããæææ±ºå®ã§ããç·åããç®æã ãããã« ãããããŠäžŠã¹ãŠã¿ããšãç·åã®ä»äºã¯ ãªãã£ã¹ç§»è»¢ã»ãªãã¥ãŒã¢ã«ã»æ°æå€§ç§»å å£ç¯ã€ãã³ãã»ç€Ÿå
ã€ãã³ã å®å
šã»ã¬ããã³ã¹ã»å±æ©ç®¡ç 座åžèª¿æŽã»ãªãã£ã¹çŸåãâŠãªã©ãªã© âèŠãã«ããããã©ããªããªããšå°ããã®â ã°ããã§ãã ã§ãããã®ãèŠãã«ããä»äºããã ããããŠå°ãã ã éæåããŠã¿ã ã®ãæªããªããªãšæã£ãŠããŸãã æ¯å¹Žãã®1幎ãå
šåã§èµ°ããæçµçã«è¡ãã€ããã®ã¯ãã®æèŠã§ããã ãã¹ãŠã®ä»äºã«ã¯å¿
ããçžæããããŠã çžæãæãã°ãã©ããªä»äºãæããä»äºã«ãªãã åºäžãã¯ãããåãæ¥ããèç«ã«ã®ãŒãæ¥ãã ãªãã£ã¹å
é§ãåã£ãŠãæ¥ããSlack ã§ã²ãããã¢ããŠã³ã¹æãæžããŠããæ¥ãã ãã®å
ã«ã¯èª°ãã®ãåãããããããããŸãã ITäŒæ¥ã®ç·åã¯ãã¡ãã£ãšæ³¥èããŠãã§ããããšæã®ããä»äºã§ãðð«¶ ð²ð¬ ãITäŒæ¥ã®ç·åã£ãŠããã£ãããããžã§ã¯ãåã§ãã¡ãããšâè·èœâãªãã ãªã ãšããã®èšäºãèªãã§ããããªé¢šã«æããŠãããããå¬ããã§ãã åãã³ãŒãã¬ãŒãé åïŒç·å / åŽå / 人äºïŒã®ã¿ãªãããšãã ãããããã¡ããã£ãŠãïŒããšã ããã®èŠç¹ãªãã£ãïŒãã¿ãã㪠ããããã工倫ãããã€ãã©ããã§äº€æã§ããããããªãšæã£ãŠããŸãïŒ âãªãã§ãå±âãããªããŠâãªãã£ã¹ã®åºç€è·âã ITäŒæ¥ Teamç·åã®ä»äºãä»å¹Žãå
šåã§èµ°ããããŸããðââïžðšð æåŸãŸã§èªãã§ããã ããããããšãããããŸããâê¬â®âžo
ã¯ããã« ãã®èšäºã¯ New Relic Advent Calendar 2025 ã®24æ¥ç®ã®èšäºã§ãã ããã«ã¡ã¯ãSREããŒã ã® ãããªã ã§ããæ¬èšäºã§ã¯ å
æ¥çºè¡š ãããNew Relic MCPãµãŒããŒãSlackããå©çšã§ããããã«ããæ¹æ³ã«ã€ããŠç޹ä»ããŸãã MCPãµãŒããŒèªäœã¯Claudeãªã©ã®å¯Ÿè©±åAIãCodex, Kiroãªã©ã®ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããªã©ãããŸããŸãªã€ã³ã¿ãŒãã§ãŒã¹ã§å©çšããããšãã§ããŸãããSlackãšããã€ã³ã¿ãŒãã§ãŒã¹ã§äœ¿ããããã«ããããšã§ãNew Relicã®ããŒã¿å©æŽ»çšã®å¹
ãããã«åºãããããšæããŠããŸãã æ§æå³ ä»åã¯ä»¥äžã®ãããªæ§æã§SlackããNew Relic MCPãå©çšããŸãã ä»åäœæããæ§æå³ Slackã§Botã«ã¡ã³ã·ã§ã³ããŠè³ªåããããšã§ãåçã«å¿
èŠãªæ
å ±ãNew Relic MCPã䜿ã£ãŠååŸããŠã¹ã¬ããã«è¿ä¿¡ããŠãããŸãã æ§ç¯æé :::message æ¬èšäºã§ã¯SlackããNew Relicã®ããŒã¿ã«ã¢ã¯ã»ã¹ã§ããããã«ããããã«æå°éã®å
容ã玹ä»ããŠããŸãã以äžã®ãããªèŠçŽ ã«ã€ããŠã¯çç¥ããŠããŸãã®ã§ãå¿
èŠã«å¿ããŠå¯Ÿå¿ããŠãã ããã ã·ã¹ãã ããã³ããã®ãã¥ãŒãã³ã° New Relicã®ã¢ã«ãŠã³ããè€æ°ããå Žåãã©ã®ã¢ã«ãŠã³ãããæ
å ±ãæ¢ããŸããïŒãšãã£ãè¿çã«ãªããã¡ãªã®ã§ãã·ã¹ãã ããã³ãããªã©ã§ãå©çšãªã¢ã«ãŠã³ãããé çªã«èª¿æ»ããŠãã ãããããšãã£ãæèšãå
¥ãããšåãããã«ãªããŸããã ã»ãã¥ãªãã£é¢ã®å¯Ÿç ä»å玹ä»ããæ§æã¯ãŠãŒã¶ãŒã®ã€ã³ãããããã®ãŸãŸäŒããŠãããããå
¥åã»åºåå
容ã®ã¬ãŒãã¬ãŒã«ãèšããããšããªã¹ã¹ã¡ããŸãã ãŸããIAM Roleã®æš©éãå¿
èŠæå°éã®èšå®ã«ããããšããªã¹ã¹ã¡ããŸãã äŒè©±å±¥æŽã®ä¿æ ä»åã®æ§æã§ã¯äŒè©±å±¥æŽãä¿æããŠããããåçºã§ã®ããåãã«ãªããŸãã ::: New Relic APIããŒã®çºè¡ New Relicã® API Keys ã®ããŒãžã«é·ç§»ããŠã Create a key ãã¿ã³ãæŒäžããŸãã Key Type㯠User ãéžæããŠäœæããçºè¡ãããAPIããŒãæ§ããŠãããŸãã Slack Appã®äœæãšèšå® - ãã®1 ãŸãã¯Slack AppãäœæããŸãã Slack Appã®äœææ¹æ³ã«ã€ããŠã¯ããŸããŸãªèšäºããããã詳现ãªèª¬æã¯çããŸããã ãã¡ã ãã From scratch ã§Slack AppãäœæããŠãã ããã äœæããã OAuth & Permissions ã®ããŒãžã«é·ç§»ããBot Token Scopesã« chat:write ã®æš©éã远å ããŸãã ãã㊠Install App ãã察象ã®Slackã¯ãŒã¯ã¹ããŒã¹ã«ã€ã³ã¹ããŒã«ããçºè¡ããã Bot User OAuth Token ãæ§ããŠãããŸãã ã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ ä»å㯠AWS SAM ãš Strands Agents ã䜿ã£ãŠæ§ç¯ããŸããç§ãæ§ç¯ããéã®SAM CLIã®ããŒãžã§ã³ã¯1.149.0ã§ããã 以äžã«template.yamlãšããããã®Lambda颿°ã®ã³ãŒããrequirements.txtãèšèŒããŸãã :::details template.yaml AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Globals: Function: Timeout: 120 Resources: SlackEventHandlerFunction: Type: AWS::Serverless::Function Properties: FunctionName: slack-event-handler-function CodeUri: src/ Handler: slack_event_handler.lambda_handler Runtime: python3.14 Role: !GetAtt SlackEventHandlerFunctionRole.Arn SnapStart: ApplyOn: PublishedVersions AutoPublishAlias: SnapStart Architectures: - x86_64 Events: NewRelicBot: Type: Api Properties: Path: /event Method: post Environment: Variables: SQS_QUEUE_URL: !GetAtt SlackMessageSQS.QueueUrl SlackEventHandlerFunctionPermission: Type: AWS::Lambda::Permission Properties: Action: lambda:InvokeFunction FunctionName: !Ref SlackEventHandlerFunction Principal: apigateway.amazonaws.com SlackEventHandlerFunctionRole: Type: AWS::IAM::Role Properties: RoleName: slack-event-handler-function-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - lambda.amazonaws.com Action: - sts:AssumeRole Path: / ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole - arn:aws:iam::aws:policy/AmazonSQSFullAccess SlackAIExecutorFunction: Type: AWS::Serverless::Function Properties: FunctionName: slack-ai-executor-function CodeUri: src/ Handler: slack_ai_executor.lambda_handler Runtime: python3.14 MemorySize: 256 Role: !GetAtt SlackAIExecutorFunctionRole.Arn Architectures: - x86_64 Events: SlackMessageSQS: Type: SQS Properties: Queue: !GetAtt SlackMessageSQS.Arn BatchSize: 1 Enabled: true Environment: Variables: NEW_RELIC_API_KEY: '' # çºè¡ããNew Relic APIããŒãèšå® SLACK_BOT_TOKEN: '' # çºè¡ããSlack Bot User OAuth Tokenãèšå® SlackAIExecutorFunctionRole: Type: AWS::IAM::Role Properties: RoleName: slack-ai-executor-function-role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: - lambda.amazonaws.com Action: - sts:AssumeRole Path: / ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole - arn:aws:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole - arn:aws:iam::aws:policy/AmazonBedrockFullAccess SlackMessageSQS: Type: AWS::SQS::Queue Properties: QueueName: slack-message-sqs.fifo FifoQueue: true VisibilityTimeout: 180 MessageRetentionPeriod: 600 ContentBasedDeduplication: true DeduplicationScope: messageGroup RedrivePolicy: deadLetterTargetArn: !GetAtt SlackMessageDLQ.Arn maxReceiveCount: 2 SlackMessageDLQ: Type: AWS::SQS::Queue Properties: QueueName: slack-message-dlq.fifo FifoQueue: true VisibilityTimeout: 180 MessageRetentionPeriod: 604800 â» NEW_RELIC_API_KEY, SLACK_BOT_TOKENã¯å¿
èŠã«å¿ããŠãã©ã¡ãŒã¿ã¹ãã¢ããååŸãããªã©ã®æ¹æ³ã§èšå®ããŠãã ããã ::: :::details slack_event_handler.py import json import boto3 import hashlib import os sqs = boto3.client('sqs') queue_url = os.environ.get('SQS_QUEUE_URL') def lambda_handler(event, context): body = json.loads(event['body']) if body.get('challenge') is not None: challenge = body['challenge'] return response('200', challenge) if body['event'].get('edited') is not None: return response('200', 'edited event ignored') if body['event']['type'] == 'app_mention': ts = body['event']['ts'] channel = body['event']['channel'] thread_ts = body['event'].get('thread_ts') text = body['event'].get('text') if text is None: return response('200', 'no text field') payload = { 'text': text, 'channel': channel, 'ts': thread_ts if thread_ts is not None else ts, } sqs.send_message( QueueUrl=queue_url, MessageBody=json.dumps(payload), MessageGroupId=channel, MessageDeduplicationId=hashlib.md5(text.encode()).hexdigest() ) return response('200', 'ok') def response(status_code, body): return { 'statusCode': status_code, 'body': body, 'headers': { 'Content-Type': 'text/plain', }, } å€éèµ·åãé²ãããã«ãåãæèšãéä¿¡ããå Žåã¯SQSã®éè€æé€æ©èœã«ããã¡ãã»ãŒãžãç Žæ£ãããããã«ããŠããŸã textã«ã¯ <@U12345678> ã®ããã«Slack Appã®ã¡ã³ããŒIDãå«ãŸãããããSQSã«ã¡ãã»ãŒãžãéä¿¡ããåã«å¿
èŠã«å¿ããŠããªãã³ã°åŠçã远å ããŠãã ããã ::: :::details slack_ai_executor.py import json import os from contextlib import asynccontextmanager from mcp.client.streamable_http import streamable_http_client, create_mcp_http_client from strands.tools.mcp.mcp_client import MCPClient from strands import Agent from strands.models import BedrockModel from slack_sdk import WebClient SYSTEM_PROMPT = """ ããªãã¯New Relicã®ããŒã¿ãé§äœ¿ããŠéçºè
ããµããŒãããåªç§ãªãšã³ãžãã¢ã§ãã """ @asynccontextmanager async def _nr_transport(): async with create_mcp_http_client( headers={ "api-key": os.environ.get('NEW_RELIC_API_KEY'), "include-tags": "discovery,alerting,data-access,incident-response,performance-analytics,advanced-analysis", } ) as http_client: async with streamable_http_client( url="https://mcp.newrelic.com/mcp/", http_client=http_client, terminate_on_close=True, ) as streams: yield streams nr_mcp_client = MCPClient(_nr_transport) slack_client = WebClient(token=os.environ.get('SLACK_BOT_TOKEN')) model_id = "jp.anthropic.claude-sonnet-4-5-20250929-v1:0" def lambda_handler(event, context): body = json.loads(event['Records'][0]['body']) text = body['text'] channel = body['channel'] ts = body['ts'] with nr_mcp_client: tools = nr_mcp_client.list_tools_sync() model = BedrockModel(model_id=model_id, region_name='ap-northeast-1', temperature=0) agent = Agent(system_prompt=SYSTEM_PROMPT, tools=tools, model=model) response = agent(text) post_response = slack_client.chat_postMessage(channel=channel, thread_ts=ts, text=str(response)) if post_response['ok']: return True else: return False ::: :::details requirements.txt annotated-types==0.7.0 anyio==4.12.0 attrs==25.4.0 boto3==1.42.13 botocore==1.42.13 certifi==2025.11.12 cffi==2.0.0 click==8.3.1 cryptography==46.0.3 docstring_parser==0.17.0 h11==0.16.0 httpcore==1.0.9 httpx==0.28.1 httpx-sse==0.4.3 idna==3.11 importlib_metadata==8.7.0 jmespath==1.0.1 jsonschema==4.25.1 jsonschema-specifications==2025.9.1 mcp==1.24.0 opentelemetry-api==1.39.1 opentelemetry-instrumentation==0.60b1 opentelemetry-instrumentation-threading==0.60b1 opentelemetry-sdk==1.39.1 opentelemetry-semantic-conventions==0.60b1 packaging==25.0 pycparser==2.23 pydantic==2.12.5 pydantic-settings==2.12.0 pydantic_core==2.41.5 PyJWT==2.10.1 python-dateutil==2.9.0.post0 python-dotenv==1.2.1 python-multipart==0.0.21 referencing==0.37.0 rpds-py==0.30.0 s3transfer==0.16.0 six==1.17.0 slack_sdk==3.39.0 sse-starlette==3.0.4 starlette==0.50.0 strands-agents==1.20.0 typing-inspection==0.4.2 typing_extensions==4.15.0 urllib3==2.6.2 uvicorn==0.38.0 watchdog==6.0.0 wrapt==1.17.3 zipp==3.23.0 â»ä»®æ³ç°å¢ã§slack_sdkãšstrands-agentsãã€ã³ã¹ããŒã«ããŠpip freezeãããã® ::: ãã®å
容ã§sam buildããã³sam deployãå®è¡ããŠãããã€ããŸãã ãããã€ãããAWSã³ã³ãœãŒã«ããäœæãããAPI Gatewayã®ã¹ããŒãžã確èªããäœæãããšã³ããã€ã³ãã®URLãæ§ããŠãããŸãã äŸïŒ https://xxxxxx.execute-api.ap-northeast-1.amazonaws.com/Prod/event Slack Appã®èšå® - ãã®2 å
ã»ã©äœæããSlack Appã®èšå®ç»é¢ã«æ»ãã Event Subscriptions ã®ããŒãžã«é·ç§»ããŸãã Enable Events ãONã«ããŠãRequest URLã«å
ã»ã©æ§ããAPI Gatewayã®ãšã³ããã€ã³ãURLãèšå® Verifiedãšè¡šç€ºãããã°OKã§ã Subscribe to bot eventsã® Add Bot User Event ãã app_mention ã远å ããŠä¿å OAuth & Permissions ã®Bot Token Scopesã« app_mentions:read ã®æš©éãèªåã§è¿œå ãããŸã â»å€æŽãä¿åããããå床Slackã¯ãŒã¯ã¹ããŒã¹ã«ã€ã³ã¹ããŒã«ããŠãã ãã åäœç¢ºèª 以äžã§æ§ç¯ã¯å®äºã§ãïŒ Slackã®ä»»æã®ãã£ã³ãã«ã«äœæããSlack Appã远å ããŠã¡ã³ã·ã§ã³ãé£ã°ããŠã¿ãŸãããã質åå
容ã«ããããŸããã1åçšåºŠã§è¿ä¿¡ãããã¯ãã§ãã Slackã§ã®åäœã€ã¡ãŒãž :::message ã¬ã¹ãã³ã¹ã®ãã©ãŒããããSlackã®ãã©ãŒãããã«æé©åãããŠããªããããå Žåã«ãã£ãŠã¯èŠã¥ãã衚瀺ã«ãªãå¯èœæ§ããããŸãã ç§ã¯ä»¥äžã®ãããªæ¹æ³ã§Slackãã©ãŒããã(ã®ãã)ã«å€æããŠãããã¹ãããŠããŸãã def convert_to_slack_format(text: str) -> str: # 倪å text = text.replace("**", "*") # åãæ¶ãç· text = text.replace("~~", "~") # åé ã« - ãä»ããŠããå Žå text = re.sub(r'^([ ]*)-', r'\1â¢', text) # æ¹è¡ã®åŸã« --- ãä»ããŠããå Žåã¯åé€ text = re.sub(r'\n---+\n', '\n', text) # æ¹è¡ã®åŸã« - ãä»ããŠããå Žå text = re.sub(r'(\n[ ]*)-', r'\1â¢', text) return text ::: MCPã®æ©èœã¯ New Relic MCP ããŒã«ãªãã¡ã¬ã³ã¹ ã§ç¢ºèªã§ããŸããããŒã«ãçµã¿åãããããšã§ããŸããŸãªæŽ»çšãã§ãããã§ãã æ¥é ããã·ã¥ããŒãã§ç¢ºèªããŠããé
ç®ãSlack Reminderã§å®æçã«Botã«ã¡ã³ã·ã§ã³ããŠãèŠçŽããŠããã ã¢ã©ãŒãçºçæã®ã¡ãã»ãŒãžã§Botãã¡ã³ã·ã§ã³ã«å«ããããšã§èªåã§äžæ¬¡èª¿æ»ããã ç¹å®ã®ã»ãã·ã§ã³ãã¬ãŒã¹IDã§ã®ãŠãŒã¶ãŒã®è¡åããŸãšããŠã¬ããŒããäœæããã ãããã« New Relic MCPãµãŒããŒã¯æ¬èšäºå·çæç¹ã§ã¯Public Previewã®æ®µéã§ãããååã«å®çšçãªã¬ãã«ã§å©çšã§ããä»åŸã®ã¢ããããŒããéåžžã«æ¥œãã¿ã§ãïŒ ãŸãããã®ä»çµã¿ã¯New Relicã®MCPãµãŒããŒã«éãããä»ã®MCPãµãŒããŒã«å¯ŸããŠãå¿çšå¯èœãªãã®ã«ãªã£ãŠããã®ã§ãæ®æ®µæŽ»çšããŠããMCPãµãŒããŒã䜿ããããã€ã³ã¿ãŒãã§ãŒã¹ã§äœ¿ããããã«ããŠã¿ãŠã¯ãããã§ããããïŒ
ãã®èšäºã¯ KINTOãã¯ãããžãŒãº Advent Calendar 2025 ã®24æ¥ç®ã®èšäºã§ãã ããã«ã¡ã¯ïŒ KINTOãã¯ãããžãŒãºã®ã¯ãªãšã€ãã£ãã°ã«ãŒãã§ãã¶ã€ããŒãããŠããæ¡äºïŒ @momoitter ïŒã§ãã å
æ¥ãAIã䜿ã£ãã©ã€ããã€ã³ãã£ã³ã°åœ¢åŒã§ã1æéã®å¶éæéã§ãé¡ã«ææŠãã瀟å
ã€ãã³ã ã Vibe Painting Hour ã ãéå¬ããŸããã ä»åã¯ãã®ç¬¬1åãšããŠãæè¡æžå
žã«åºå±ããæè¡æžã®è¡šçŽãã¶ã€ã³ãããŒãã«å®æœããŸããã â»æè¡æžå
žïŒããã
ã€ãããŠãïŒãšã¯ããšã³ãžãã¢ãªã©ã®æè¡è
ãèªèº«ã®ç¥èŠãåãçµã¿ããŸãšããæè¡æžãæã¡å¯ããå±ç€ºã»é åžããæè¡æžå°éã®ã€ãã³ãã§ãã ç§ã¯ãã®ãVibe Painting Hourãã§ãäŒç»ã»å
šäœã®ã¢ãŒããã£ã¬ã¯ã·ã§ã³ã»ã€ãã³ãèšèšãæ
åœããŸããã ãã®èšäºã§ã¯ã ãªããã®ã€ãã³ããäŒç»ããã®ãïŒã©ã®ããã«èšèšããã®ã ãäžå¿ã«ç޹ä»ããŸãã ãªãããæè¡æžå
žãã«ã€ããŠã®è©³çްã¯ãããã¯ãããã®ãã¡ãã®èšäºãã芧ãã ããã https://blog.kinto-technologies.com/posts/2025-12-12-techbookfest19-report/ å®éã«ã€ãã³ãå
ã§è¡šçŽãã¶ã€ã³ãã©ã®ããã«äœãããŠãã£ããã¯ãmayuããã®ãã¡ãã®èšäºã§è©³ãã玹ä»ãããŠããŸãã â»ãã¡ãã¯12/25ã«å
¬éäºå®ã§ãã https://blog.kinto-technologies.com/posts/2025-12-29-ai-bookcover-process/ æŠèŠ ä»å宿œããã®ã¯ã AIããŒã«ã掻çšããã©ã€ããã€ã³ãã£ã³ã°åœ¢åŒã®ãã¶ã€ã³ã€ãã³ã ã§ãã å¶éæéã¯1æé ã 5åã®ãã¶ã€ããŒãåæã«ç»åçæãšãã¶ã€ã³ãè¡ããæçµçã«æè¡æžå
žã«åºå±ããæè¡æžã®è¡šçŽãã¶ã€ã³ãããã®å Žã§æ±ºå®ããŸããã 宿ããã¢ãŠããããã ãã§ãªããçæã®éäžã«ããæèã詊è¡é¯èª€ã®ããã»ã¹ãå«ããŠå
±æããããšãéèŠããŠããŸãã ç®ç ãã®ã€ãã³ãã«ã¯ãããã€ãã®ç®çããããŸããã 1. AIÃãã¶ã€ã³ã®ãããã»ã¹ããèŠããã çæAIã¯ã宿ç©ã ããèŠããšãäžç¬ã§äœã£ãŠããããéæ³ã®ããã«åºãŠããããšããå°è±¡ãæãããã¡ã§ãã ãããå®éã«ã¯ã ããã³ããã®è©Šè¡é¯èª€ çæçµæã®åæšéžæ ã©ãã§å²ãåãããã©ããç²ãããšãã倿 ãšãã£ããäººã®æèã倧ããé¢ãã£ãŠããŸãã ãã¶ã€ããŒã ã©ãèããã©ãçæããã©ã決ããŠããã®ãã ãã®ããã»ã¹ãã©ã€ãã§èŠãããïŒããã¶ã€ããŒã£ãŠããããã ãïŒããèŠãããïŒããšããã®ã倧ããªç®çã§ããã 2. ãã£ã©ã¯ã¿ãŒããã¿ããªã§è²ãŠãããã§ãŒãºã«é²ã¿ããã£ã ä»åã®è¡šçŽãã¶ã€ã³ã§ã¯ããããŽãããšãããã£ã©ã¯ã¿ãŒã䜿çšããŠããŸãã ããã¯ç§ããã£ã©ã¯ã¿ãŒãã¶ã€ã³ãããããŸã§AIã®æ€èšŒããåŒç€Ÿã®SNSã»ã€ãã³ãã§ã®çºä¿¡ã«äœ¿ãããŠãããã£ã©ã¯ã¿ãŒã§ãã ãããŸã§ãããŽãã䜿ã£ã衚çŸã¯ã©ãããŠãèªåäžäººã§äœãããšãå€ãã衚çŸã®å¹
ãçãŸããããç¶æ
ã§ããã ä»åã¯ãããŠã ä»ã®ãã¶ã€ããŒããããŽããã©ãè§£éããã®ã åããã£ã©ã¯ã¿ãŒã§ããã©ããªè¡šçŸã®éããçãŸããã®ã ãèŠãŠã¿ããããšããçãããããŸããã ããã¯ã ãã£ã©ã¯ã¿ãŒããå人ã§äœããã®ããããã¿ããªã§è²ãŠããã®ããž ç§»è¡ããããã®ãäžã€ã®ã¹ãããã§ããããŸããã äŒç»ã®çµç·¯ äŒç»ã®ãã£ããã¯ãåŒç€Ÿã®AIæšé²ã¡ã³ããŒã®ãã®äžèšã§ããã ããã¶ã€ããŒã«ããAIã©ã€ããã€ã³ãã£ã³ã°ãèŠãŠã¿ããã ãããšã¡ããã©åãã¿ã€ãã³ã°ã§ãæè¡æžå
žã«åããæè¡æžå·çäŒç»ãé²è¡ããŠããã衚çŽãã¶ã€ã³ãå¶äœããŠã»ããããšããäŸé ŒããããŸããã ããã§ã ã©ã€ããã€ã³ãã£ã³ã°ã®ãªã¯ãšã¹ã 衚çŽãã¶ã€ã³ã®å¶äœ ãã®2ã€ã åæã«å¶ããŠããŸãã ãšèããã®ããä»åã®ã€ãã³ãã®å§ãŸãã§ãã ã€ãã³ãã®ããŒãã³ã°ã«ã€ã㊠ã€ãã³ãåã¯ã以äžã®3ã€ãæãåãã㊠Vibe Painting Hour ãšããŠããŸãã AIã䜿ã£ãŠæèŠçã«ã³ãŒãã£ã³ã°ãããVibe Codingãããåã£ããVibeã ã©ã€ãã§å¶äœãããšããæå³ã§ã®ãLive Paintingã å¶éæé1æéã瀺ããHourã äºåãã¢ãªã³ã°ãšãé¡ã®äœæ ã€ãã³ãåã«ã¯ãäŸé Œäž»ã§ããããã¯ãããã«ãã¢ãªã³ã°ãè¡ããŸããã æè¡æžã®æ³å®èªè
æè¡æžå
šäœã®ããŒã³ 衚çŽã«æ±ããå°è±¡ãæ¹åæ§ ãããããäžèšã®æ¹åæ§ãèŠããŠããŸããã åŒç€Ÿã®èªç¥åºŠããããŠããKINTOãã¯ãããžãŒãºã ããæã«åã£ãŠã¿ããããšããåæ©ã¯çãŸãã¥ããã®ã§ã ãã£ã©ã¯ã¿ãŒã§åŒã£ããããäœã ãã®ããã§ãåŒç€Ÿã® æè¡åãå
鲿§ ãæãããã åŒç€Ÿãªãã§ã¯ã®ç¹è²ã§ããã ã¢ããªã㣠ãæãåºã ãã ãæ¬çªã§ã¯ãããã©ã€ãæãéèŠããç®çã§ ãé¡ã¯äºåã«å
±æããåœæ¥ã«çºè¡š ãããŸãã çµæãšããŠåœæ¥ã¯é·ã説æãã§ããŸããã ããã§ããã¢ãªã³ã°å
容ãããšã«ãé¡ã次ã®äžæã«å§çž®ããåœæ¥ãã¶ã€ããŒãžå
±æããŸããã 䜿çšããŒã«ãšã€ãã³ãèšèšã®å·¥å€« ç»åçæ äœ¿çšããAIããŒã«ã¯æå®ãããåãã¶ã€ããŒãæ
£ããŠãããã®ãéžãã§ããŸãã åœæ¥ã¯äž»ã«ä»¥äžã®ããŒã«ã䜿ãããŠããŸããã Midjourney ChatGPTïŒç»åçæïŒ Photoshop ãŸããä»åã®ã€ãã³ãã§ã¯ ããããããã£ã©ã¯ã¿ãŒãããŽããã®ç»åãåå ãã¶ã€ããŒå
šå¡ã«é
åž ããŠãããåAIããŒã«ã§ åç
§ç»åïŒãªãã¡ã¬ã³ã¹ïŒãšããŠäœ¿ããç¶æ
ãçšæããŠããŸããã ããã«ããã ãã£ã©ã¯ã¿ãŒã®å€èŠãé°å²æ°ã倧ãããã¬ãªã ãã®ããã§ã衚çŸã®è§£éãäžç芳ã®éããèªç¶ã«åºã ãåããã£ã©ã¯ã¿ãŒãã©ãæçããããã«éäžã§ãã ãšããç¶æ
ãäœãããšãã§ããŸããã ã¬ã€ã¢ãŠãïŒFigmaïŒ è¡šçŽã®ã¬ã€ã¢ãŠãäœæ¥ã«ã¯ Figma ã䜿çšããŸããã ãããããã ã¿ã€ãã« ã㎠ãã³ããªã³ã°ïŒvol.01 ãªã©ïŒ ãé
眮ãã 衚çŽçšã®ã¢ãŒãããŒãããåå 人æ°åçšæ ããŠããŸãã ããã¯ãèŠçŽ ã®é
眮ãŸã§ã©ã€ãã§ãã£ãŠããŸããš1æéã§çµãããªãããã§ãã ã€ãã³ãäžã¯ã ç»åçæã«éäžã§ããç¶æ
ãäœã ããšãæåªå
ã«ããŸããã ãªããã®èšèšã«ããã®ã ã©ã€ããã€ã³ãã£ã³ã°ãšãã圢åŒäžã ãèªç±åºŠãé«ããããšåæŸãã€ããªãããå¶éãããããšé¢çœããªãããšãããã©ã³ã¹ããšãŠãéèŠã§ããã ãã£ã©ã¯ã¿ãŒã¯åºå®ïŒåç
§ç»åããïŒ ã¬ã€ã¢ãŠãã¯ååºå®ïŒFigmaã§äºåæºåïŒ è¡šçŸãšçæã®ã¢ãããŒãã¯èªç± ãšããèšèšã«ããããšã§ã 1æéãšããçãæéã§ããåãã¶ã€ããŒã®åæ§ããã£ããèŠããç¶æ
ãäœãããšãã§ãããšæããŸãã äžç芳ã«ã€ã㊠ä»åã®ã€ãã³ãã§ã¯ãäžç芳ã¥ãããéèŠããŸããã äžåããã®ã€ãã³ãã§ã¯ãªãã ä»åŸãç¶ãããããã©ãŒãããã«ããã ãšèããŠããããã§ãã èšå®ã¯ãããªæãã§ãã ããã¯ããšããçºã®ãã¯ãªãšã€ãã£ãçžè«æã ãã¶ã€ã³ã«æ©ãã ã客ãããçžè«ã«æ¥ã ããã«ã¯è
å©ãã®ãã¶ã€ããŒããã ãã ã圌ãã¯æ°ãŸããã§ã1æé以äžã¯åãããããªã å ±é
¬ã¯çããèå å°ãéã³ã®ããèšå®ã§ããããã®äžç芳ãããããšã§ã€ãã³ãå
šäœã«äžäœæãçãŸããŸããã ã€ãã³ãã®æµãïŒ60åïŒ ã€ãã³ãã¯ã1æéã§ãçæ â 倿 â æ±ºå®ããŸã§è¡ãæ§æã§ãã 1. ãªãŒããã³ã°ïŒçŽ10åïŒ äžç芳説æãäŸé Œäž»ç޹ä»ãçžè«å
容ã»ãé¡ã®çºè¡šããã¶ã€ããŒçŽ¹ä» 2. çæã¿ã€ã ïŒååã»çŽ15åïŒ åãã¶ã€ããŒãç»åçæãéå§ïŒåæã«BGMçæãã¢ãäŸé Œäž»ãžã®ã€ã³ã¿ãã¥ãŒã宿œ 3. äžéãã§ãã¯ïŒçŽ15åïŒ éäžçµéãå
±æãã䜿çšããŒã«ãçŸåšã®æ¹åæ§ãçŽ¹ä» 4. çæã¿ã€ã ïŒåŸåã»çŽ15åïŒ äžéãã§ãã¯ãèžãŸããŠæçµèª¿æŽ 5. çµæçºè¡šïŒçŽ5åïŒ å®ææ¡ã䞊ã¹ãäŸé Œäž»ãæ¡çšãã¶ã€ã³ãéžå®ïŒ ãã®å Žã§æè¡æžã®è¡šçŽã決ãåããšãããŸã§å«ããŠãã€ãã³ããšããŠå®çµãããŸããã å®éã«ã©ããªæ¡ãåºãŠãã©ã決ãŸã£ãã®ã åœæ¥ã¯ãåããã£ã©ã¯ã¿ãŒã䜿ããåããé¡ãåãåããªããã é©ãã»ã©çŽ æµã§åæ§ããµããè¡šçŽæ¡ãçãŸããŸããã ãã£ã©ã¯ã¿ãŒã®è·é¢æãèŠç·ã®åããäžç芳ã®åãåãæ¹ããæè¡æžããããã®è¡šçŸãªã©ã åãã¶ã€ããŒã®åæ§ãã¯ã£ãããšè¡šããŠããŸãã æçµçã«ã¯äŸé Œäž»ã§ããããã¯ãããã«éžå®ããŠããã ãã ãã¶ã€ããŒã®mayuããã®ãã¶ã€ã³ããå®éã«æè¡æžå
žã§äœ¿çšãã衚çŽãšããŠæ±ºå®ããŸããïŒ ã¢ã³ã±ãŒãçµæ ã€ãã³ãåŸã«å®æœããã¢ã³ã±ãŒãã§ã¯ã æºè¶³åºŠïŒ4.61 / 5 ååå ãããïŒ89% ãšããçµæã§ããã ç¹ã«å€ãã£ã声ã¯ã çæããã»ã¹ãèŠãããŠå匷ã«ãªã£ã ã©ã€ãæããã£ãŠé¢çœãã£ã äžçèŠ³ãæŒåºãè¯ãã£ã ãšãã£ããã®ã§ãã ãããã®çµæãããã¢ãŠããããã ãã§ãªããçæããŠããããã»ã¹ãããã©ã€ãæããã®ãã®ããã£ãã䟡å€ãšããŠåãåãããŠããããšãæããŸããã ç¹ã«ããŸãåå ãããããšãã声ãå€ãã£ãã®ã¯ã ãã®åœ¢åŒãäžåºŠããã§ã¯ãªããä»åŸãç¶ããŠããããã ãšããæå¿ãã«ã€ãªãã£ãŠããŸãã ãŸãšã AIã䜿ãã°ããã¶ã€ã³ã¯äžç¬ã§ã§ããããããªã€ã¡ãŒãžãæãããããšããããŸãã ãããå®éã«ã¯ã èããéžã³ã決ããã®ã¯äºº ã§ãã ä»åã®ã©ã€ããã€ã³ãã£ã³ã°ã§ã¯ããã®ããã»ã¹ã1æéã«åçž®ããŠèŠããããšãã§ããŸããã ä»åŸããã¯ãªãšã€ãã£ãã®ãæ©ã¿ããAIãšäžç·ã«è§£æ±ºããããããªå Žãã圢ãå€ããªããç¶ããŠãããã°ãšæããŸãã
ãã®èšäºã¯ KINTOãã¯ãããžãŒãº Advent Calendar 2025 ã®23æ¥ç®ã®èšäºã§ã ã¯ããã«ïŒãAIãªãäžç¬ã§ããïŒãâŠã§ããã®ãŸãŸæåºããŠããŸãããïŒ â»æ¬èšäºã®å
容㯠2025幎12ææç¹ ã®æ
å ±ã«åºã¥ããŠããŸããåãµãŒãã¹ã®ä»æ§ã»èŠçŽã¯å€æŽãããå¯èœæ§ããããããææ°æ
å ±ã¯å
¬åŒãµã€ããã確èªãã ããã ãäŒç»æžã®ã€ã¡ãŒãžç»åãAIã§äœã£ãŠã¿ãŸããããããã°ã®ã¢ã€ãã£ãããAIãªãäžç¬ã§ããã ãããªãã¬ãŒãºããæè¿ãã¡ãã¡ã§èŠãããããã«ãªããŸãããå®éãç»åçæAIã¯ããžãã¹ããŒãœã³ã«ãšã£ãŠããªã匷åãªå³æ¹ã§ãã ãã ãæ£çŽã«èšããšãããªããšãªã䟿å©ã ãã䜿ã£ãŠããã ããã§çµãã£ãŠããŸã£ãŠããã±ãŒã¹ãå€ãã®ã§ã¯ãªãã§ããããã ãšããããAIã«ãé¡ãããŠåºãŠãããã®ãããã®ãŸãŸè³æã«è²Œã ãªããšãªãäžå®ã¯ããããã©ãæ·±ãèããæéããªã ãã¿ããªäœ¿ã£ãŠããâŠãŸã倧äžå€«ã§ããããšèªåãçŽåŸããã ç§èªèº«ããæåã¯å®å
šã«ãã®ã¢ãŒãã§ããã ã§ãããä»äºã§äœ¿ã以äžããã©ãã«ãªã¹ã¯ãããããããã ãã§ããã£ããç¥ã£ãŠãããšãä»äºã®è³ªãäžæ®µäžããæèŠããããŸãã æ¬èšäºã§ã¯ãããªããšãªã䜿ã£ãŠãããç¶æ
ããããäŒæ¥ã§åãäžäººãšããŠã責任ãæã£ãŠäœ¿ãããªããç¶æ
ãžã¢ããããŒãããŠããããã®å®åçãªãã€ã³ãããã§ããã ãçŸå Žç®ç·ã§å
±æããŠãããããšæã£ãŠããŸãã æ¬èšäºã®æµã ã䟿å©ããã®è£ã«ããã3ã€ã®ã¢ã€ã¢ã€ãæŽçãã ããžãã¹ããŒãœã³ã«ããããã®ã3ã€ã®AIããŒã«ããšã®ä»ãåãæ¹ ãçµç¹ã®ã«ãŒã«ãããåã«ã§ãããå人ãšããŠã®3ã€ã®å·¥å€« ã䟿å©ããã®è£ã«ããã3ã€ã®ã¢ã€ã¢ã€ãæŽçãã ãŸãã¯ããç»åçæAIã䜿ããšãã«ããªããšãªãã¢ã€ããšããŠãããã©èšèªåã§ããŠããªãäžå®ããæŽçããŠã¿ãŸãã ç»åçæAIã®ãªã¹ã¯ã¯ã倧ããåãããšæ¬¡ã® 3ã€ã®ã«ããŽãªãŒ ã«çœ®ãæããããŸãã æ³çãªã¹ã¯ ïŒãã®ç»åã£ãŠã誰ã®ãã®ããªãã ã£ãïŒ ãã©ã³ããªã¹ã¯ ïŒãAIã ããå®å
šãã§ã¯ãªã ãªãã¬ãŒã·ã§ã³ãªã¹ã¯ ïŒããªããäžå®ã ãã©ãèãã人ãããªãã é çªã«èŠãŠãããŸãã 1. æ³çãªã¹ã¯ïŒãã®ç»åã£ãŠã誰ã®ãã®ããªãã ã£ãïŒ AIã§ç»åãäœã£ããšãããµãšé ããããçåããããŸããããã®ç»åã®èäœæš©ã£ãŠã誰ã«ãããã ããïŒããèªåã®äœåãšããŠçºè¡šããŠããã®ãïŒããã¯ã©ã€ã¢ã³ãæ¡ä»¶ã§äœ¿ã£ãŠã倧äžå€«ãªã®ãïŒãââãããªããšãèããããšã¯ãªãã§ããããã å®éã®ãšããã䜿çšããŠããããŒã«ãã©ã®åœã»å°åã®æ³åŸãé©çšããããããããŠãã®ããŒã«ã®å©çšèŠçŽãèªç€Ÿã®å¥çŽã®å
容ããããã®çµã¿åããã«ãã£ãŠè§£éã¯ããªãå€ãã£ãŠããŸãã ãªã®ã§æ³åŸã®å°éå®¶ã§ãªããŠããå°ãªããšã ãããŒã«ããšã«æš©å©ã®æ±ããéããããã ãåçšå©çšOKãã©ããã¯ãå©çšèŠçŽãäžåºŠã¯èŠãŠãããæ¹ãããã ãããã®æèŠãæã£ãŠããã ãã§ãããã¡ãã£ãšç«ã¡æ¢ãŸãããã®ãã¬ãŒãããã¡ãããšãããããã«ãªãããšæããŸãã ãããŠå©çšèŠçŽãèªãã®ãé£ããå Žåã倿ã«è¿·ãå Žåã¯ãç¬æã§äœ¿ããã«äžé·ãæ
ã·ã¹éšéãæ³åæ
åœãªã©ã«ããã®ããŒã«ãæ¥åã§äœ¿ã£ãŠã倧äžå€«ã§ããïŒããšäžåºŠèããŠã¿ãã®ãäžã€ã®æã§ãã ããã ãã§ããå€ãã®ãã©ãã«ãé²ãããããªããŸãã ãç¡èªèŠã«äŒŒãŠããŸãããªã¹ã¯ ããã«æãã®ãããç¡èªèŠã«æ¢åäœåã«äŒŒããã®ãäœã£ãŠããŸãããªã¹ã¯ã§ãã ç»åçæAIã¯èšå€§ãªç»åããŒã¿ãåŠç¿ããŠåããŠããã®ã§ããã¡ãã®æå³ãšã¯é¢ä¿ãªãã ã©ããã§èŠãããšãããæ§å³ æåãã£ã©ã¯ã¿ãŒã«ã¡ãã£ãšäŒŒããã® æãã©ã³ãã£ãœãã㎠ãšãã£ããã®ããããã£ãœãåºãŠããŠããŸãããšããããŸãã ãã®ãšãã«ããAIãåæã«äœã£ããã§âŠããšããèšãèš³ã¯ãæ®å¿µãªããéçšããŸããã å€ã«åºãã®ã¯ãããŸã§ãèªåïŒèªç€ŸïŒãã ããã§ãã ããã®ç»åãæ¬åœã«å€§äžå€«ããªïŒããšå°ãã§ãæããããäžåºŠç«ã¡æ¢ãŸã£ãŠãæš©å©é¢ã確èªãããšããç¿æ
£ãã€ããŠãããšå®å¿ã§ãã 2. ãã©ã³ããªã¹ã¯ïŒãAIã ããå®å
šãã§ã¯ãªã ããšãæ³çã«ã¯ã»ãŒãã§ãããããªã±ãŒã¹ã¯ã©ãã§ããããã瀟å
ã®ããŒã³ïŒãããŒãšãŸã£ããåããªãããžã¥ã¢ã«ã䜿ã£ãŠããŸã£ãããæå³ããã¹ãã¬ãªã¿ã€ããªè¡šçŸãæ··ãã£ãŠãããã瀟äŒçãªé
æ
®ãæ¬ ã衚çŸã«ãªã£ãŠããŸã£ãŠãããââãããããã±ãŒã¹ã¯ãæ³çã«ã¯åé¡ãªããŠãããã©ã³ãæ¯æã«ã€ãªãããããŸããã çæAIã¯ãåŠç¿ããŒã¿ã®åŸåãåæ ããŠãæãã¬åèŠãå«ãã ç»åãåºåããŠããŸããšããã±ãŒã¹ãçãããããŸããã ç ç©¶ã¬ãã«ã§ããè·æ¥ã»æ§å¥ã»äººçš®ãªã©ã«é¢ããã¹ãã¬ãªã¿ã€ãã匷ãåæ ããŠããŸãããšãææãããŠããŸãã ãAIã§äœã£ãããããã人éããã§ãã¯ããã ãšããæèããšãŠã倧åã§ã æåŸã¯äººéããç®ãéãããæ©ãã ã誰ãã«èŠãããããš ãåæã«ããéçšã«ããŠãããšå®å
šåºŠã倧ããå€ãããŸãã 3. ãªãã¬ãŒã·ã§ã³ãªã¹ã¯ïŒããªããäžå®ã ãã©ãèãã人ãããªãã ãããŠå°å³ã«å¹ããŠããã®ãããã®ãéçšãŸãããã®ãªã¹ã¯ã§ãã 瀟å
ã§AIãã¡ãããšäœ¿ãããªããŠãã人ããŸã å°ãªã ã©ã®ããŒã«ã䜿ã£ãŠããããäŒç€ŸãšããŠæ±ºãŸã£ãŠããªã çæããç»åã®ä¿ç®¡å Žæããã©ãã© çµå±ãããŸãããããã§èªå·±å€æã«ãªããã¡ äŸãã°ãå人㮠Google ã¢ã«ãŠã³ãã OpenAI ã¢ã«ãŠã³ãã§æ¥åçšã®ç»åãçæããŠãããšãéè·æã«ããŒã¿ãå人åŽã«æ®ã£ãŠããŸã£ãããäŒç€ŸåŽããã©ã®ã¢ã«ãŠã³ãã§äœãäœããããææ¡ã§ããªãããšãã£ãåé¡ãçããå¯èœæ§ããããŸãã å¯èœã§ããã°ãæ³äººãã©ã³ã®å©çšãæ
ã·ã¹ãäžé·ã«çžè«ããããšãããããããŸãã ããã³ããã«æ©å¯æ
å ±ãæžã蟌ãã§ããŸããªã¹ã¯ ããäžã€æ°ã«ããŠããããã®ãã ããã³ããã«æ©å¯æ
å ±ãæžã蟌ãã§ããŸããããããªã ãšããç¹ã§ãã ããšããå
¥åããŒã¿ãåŠç¿ã«å©çšããªããããšãæç€ºãããŠããæ³äººåããã©ã³ã䜿ã£ãŠãããšããŠããå
¥åããæ
å ±ã¯äžåºŠãµãŒãã¹æäŸè
ã®ãµãŒããŒãçµç±ããŸãã OpenAI ã GoogleãAdobe ãªã©ãããã«ããããªã·ãŒã§ãæ©å¯æ
å ±ã¯å
¥åããªãã§ãã ããããšæèšããŠããŸãã äŸãæãããšã次ã®ãããªæ
å ±ã¯å
¥åãé¿ããã¹ãã§ãã äŸ å
¥åãé¿ããã¹ãå
容 ãã瀟åãã®ææ¡è³æãäœã ååŒå
ã®äŒæ¥åã»åäººå æ°è£œåãâ³â³ãã®ããŽæ¡ã5ãã¿ãŒã³èãã æªçºè¡šã®ãããžã§ã¯ãåã»è£œåå 売ãäžãã®æ°å€ãŸãšãã 瀟å€ç§ã®åºæåè©ã»æ°å€ãªã© ããããå Žé¢ã§ã¯ãåºæåè©ãäŒããŠã倧æèªåè»ã¡ãŒã«ãŒA瀟ããéèæ©é¢B瀟ãããæ¥å¹Žçºå£²äºå®ã®æ°ååãã®ããã«ã æœè±¡åããŠå
¥åãã ããšãå¿ããããšãªã¹ã¯ãäžããããŸãã ããã§ããAIã¯ã¡ãããšäœ¿ãã°æåŒ·ã®ãçžæ£ãã«ãªã ãããŸã§ãªã¹ã¯å¯ãã®è©±ãç¶ããŸãããããããã䜿ããªãæ¹ãããã®ãïŒããšãããšãããã§ã¯ãããŸããã ãæ£ããæããã ããšãã§ããã°ãç»åçæAIã¯æ¬åœã«é Œããçžæ£ã«ãªããšæããŠããŸãã çŸå Žç®ç·ã§ãããšãç¹ã«ãããªã¡ãªããããããŸãã ã€ã¡ãŒãžã®å
±æãå§åçã«æ©ããªã ããããªæãã®äžç芳ã§ããšå£é ãããã¹ãã§èª¬æãããããAIã§ãã£ããã€ã¡ãŒãžãåºããŠããŸã£ãæ¹ãæ©ãå Žé¢ã¯ãããããããŸãã ãçŽ ææ¢ããããããçšåºŠè§£æŸããã ã¹ããã¯ãã©ããµãŒãã¹ã§å»¶ã
ãšã¹ã¯ããŒã«ãã代ããã«ãã倿®ãã®é«ééè·¯ãèµ°ãéãã³ã³ãã¯ãã«ãŒããªã©ã欲ããã·ãã¥ãšãŒã·ã§ã³ãçŽæ¥ããã³ããã§æå®ã§ããã®ã¯ã¡ãªããã倧ããã§ãã ã¢ã€ãã¢åºãã®å£æã¡çžæã«ãªã£ãŠããã ãã¡ãã£ãšããããããïŒããããã®æ¡ãé æ
®ãªã詊ããã®ã§ãæãã¬è¡šçŸã«åºäŒããããšããããŸãã 倧äºãªã®ã¯ããéæ³ã®ç®±ããšããŠäžžæãããã®ã§ã¯ãªãã èªåã®æå³ãæã£ãŠäœ¿ã ãšããæèŠã§ãã AIã¯ãããŸã§ãçžæ£ãã§ãã£ãŠãæçµå€æã¯èªåãããããã®æèãããã ãã§ã掻çšã®è³ªããã£ãšå€ãããŸãã ããžãã¹ããŒãœã³ã«ããããã®ã3ã€ã®AIããŒã«ããšã®ä»ãåãæ¹ ããããã¯ãçŸå Žã®ç®ç·ã§äœ¿ãããã 3 ã€ã®ããŒã«ãããã©ããããšãã«çžæ§ããããããšãã芳ç¹ã§æŽçããŠã¿ãŸãã # ããŒã« ç¹åŸŽ â ChatGPT äŒè©±ããŒã¹ã§ã€ã¡ãŒãžãåºãã â¡ Google Gemini Google Workspace飿º ⢠Adobe Firefly æš©å©é¢ã®å®å¿æ â ChatGPT â ãèšèã«ããªããã€ã¡ãŒãžãåºãããããšãã« äŒè©±ããŒã¹ã§ãããå°ãæãããé°å²æ°ã«ããå³ã®äººç©ãæ¶ããŠããšãã£ãä¿®æ£ãã§ããã®ã匷ã¿ã§ãã äŒæ¥ã§ã®å©çšã«ã€ããŠ äŒæ¥ã§å©çšããå Žåãå人ã¢ã«ãŠã³ãïŒFree / Plus / ProïŒã§ã¯ãªãã以äžã®çµç¹åããã©ã³ãæšå¥šãããŸãã ChatGPT Business ïŒâ»2025幎8æã«ãTeamãããåç§°å€æŽãããŸããïŒ ChatGPT Enterprise ãããã®ãã©ã³ã§ã¯ãããã©ã«ãã§å
¥åããŒã¿ãåŠç¿ã«äœ¿ãããªãèšå®ã«ãªã£ãŠãããšèª¬æãããŠããŸãã äžæ¹ã§ã Free / Plus / Pro ãšãã£ãå人åããã©ã³ã§ã¯ãããã©ã«ãã§äŒè©±å
容ãã¢ãã«æ¹åã«å©çšãããèšå®ã ãšèª¬æãããŠããŸãã èšå®ç»é¢ã§ãªããã¢ãŠãããªãéãåŠç¿ã«å©çšãããå¯èœæ§ããããããæ¥åå©çšæã¯ç¹ã«æ³šæãå¿
èŠã§ãã çžæ§ãè¯ãã·ãŒã³ã®äŸ äŒç»ã®åææ®µéã§ãã³ã³ã»ããã®æ¹åæ§ãæ¢ããããšã ããããªæãïŒããšå£æã¡ããªãããç»åã®ããªãšãŒã·ã§ã³ã詊ããããšã ããã¹ããšç»åãã»ããã§èãããïŒã¿ã€ãã«æ¡ïŒããŒããžã¥ã¢ã«æ¡ ãªã©ïŒãšã å
¬åŒãµã€ãïŒããžãã¹ããŒã¿ã®ãã©ã€ãã·ãŒãã»ãã¥ãªãã£ãã³ã³ãã©ã€ã¢ã³ã¹ïŒ â¡ Google Gemini â ãGoogle Workspace ãšã®é£æºããéèŠããããšãã« ãã¹ã©ã€ãçšã®èæ¯ç»åããµããšæ¬²ããããææ¡è³æã®äžã«å
¥ããã€ã¡ãŒãžããã®å Žã§äœãããããšãã£ãããŒãºã«ãã£ããããŸãã äŒæ¥ã§ã®å©çšã«ã€ã㊠Google Workspace ã®åçšãã©ã³ã§ã¯ãå
¥åããŒã¿ãçæç©ã¯AIã®åŠç¿ã«å©çšãããŸããïŒåçšããŒã¿ä¿è·ãé©çšãããŸãïŒã äžæ¹ã§ã å人ã¢ã«ãŠã³ã ãã Gemini ã¢ããªã䜿ãå Žåã¯ãäŒè©±å
容ãè£œåæ¹åãã¢ãã«æ¹åã«å©çšãããããšããããŸãã æ¥åã§äœ¿ããªããèªåãã©ã®å¥çŽã»ã©ã®ã¢ã«ãŠã³ãã§ Gemini ã䜿ã£ãŠããããå¿
ã確èªããŠãããããšããã§ãã çžæ§ãè¯ãã·ãŒã³ã®äŸ ææ¡è³æã«å·®ã蟌ãããªã¢ã«å¯ãã®ã€ã¡ãŒãžç»åãæ¬²ãããšã ãã§ã« Google Workspace ãæ¥åã§äœ¿ã£ãŠããããŒã ããã¥ã¡ã³ããã¹ã©ã€ãã®äžã§ããã®ãŸãŸããã³ãããæžããŠç»åãçæããããšã å
¬åŒãµã€ãïŒGoogle Workspace ã®çæ AI ã«é¢ãããã©ã€ãã·ãŒ ããïŒ â¢ Adobe FireflyïŒã¢ãã ãã¡ã€ã¢ãã©ã€ïŒ âãæš©å©é¢ä¿ã®ã¯ãªãŒã³ãããæåªå
ããããšãã« Photoshop ã Illustrator ã§ããªãã¿ã® Adobe ãæäŸããç»åçæAIã§ãã æå€§ã®ç¹åŸŽ ã¯ãAdobe ã Firefly ã«ã€ããŠãAdobe Stock ãªã©ã®ã©ã€ã»ã³ã¹æžã¿ã³ã³ãã³ããèäœæš©ãæ¶æ»
ãããããªãã¯ãã¡ã€ã³ç»åãªã©ã æš©å©çã«ã³ã³ãããŒã«ãããçŽ æãäžå¿ã«åŠç¿ããŠãã ãšå
¬åŒã«æç€ºããŠããç¹ã§ãã ãã¡ãããããã ãã§ãäœããã£ãŠã絶察å®å¿ããšã¯èšããŸããããã³ã³ãã©ã€ã¢ã³ã¹ãéèŠããäŒæ¥ã®Webãµã€ããåºåã¯ãªãšã€ãã£ããå€§èŠæš¡ãªãã£ã³ããŒã³ããžã¥ã¢ã«ãªã©ãäœããšãã«ãã²ãšã€ã®"å®å¿ææ"ãšããŠéžã³ãããããŒã«ã§ãã IPè£åã«ã€ã㊠ãŸãããšã³ã¿ãŒãã©ã€ãºåãã® Firefly ãœãªã¥ãŒã·ã§ã³ãAdobe Stock ã®äžéšã®çææ©èœã§ã¯ãäžå®ã®æ¡ä»¶ãæºãããå Žåã«ã çæç©ã«å¯ŸããIPè£å ãæäŸãããä»çµã¿ããããŸãïŒå¯Ÿè±¡ãšãªããã©ã³ãæ¡ä»¶ã¯å¥çŽåœ¢æ
ã«ãã£ãŠç°ãªããŸãïŒã ãäŒç€Ÿã§Adobeã«å
¥ã£ãŠãããã倧äžå€«ããšæã蟌ãŸããã èªç€Ÿã®å¥çŽã¯IPè£åã®å¯Ÿè±¡ãã©ã³ãïŒ ããäžåºŠç¢ºèªããããšãããããããŸãã çžæ§ãè¯ãã·ãŒã³ã®äŸ æ¢ã« Photoshop / Illustrator ã䜿ã£ãŠããŠããã®å»¶é·ã§çæAIã䜿ããããšã æš©å©é¢ã»ãã©ã³ãé¢ãžã®é
æ
®ãç¹ã«éèŠãªãããžã§ã¯ã çæç»åã« Content CredentialsïŒçæçµè·¯ã®æ
å ±ïŒãä»ããŠç®¡çããããšã å
¬åŒãµã€ãïŒå
æ¬çã§å®å
šã«åçšå©çšã§ããAIãæŽ»çšããããžãã¹çšã³ã³ãã³ãå¶äœïŒ å
¬åŒãµã€ãïŒAdobe Fireflyã«ããçæAIãžã®ã¢ãããŒãïŒ ãçµç¹ã®ã«ãŒã«ãããåã«ã§ãããå人ãšããŠã®3ã€ã®å·¥å€« ããã¡ã®äŒç€ŸããŸã AIã®ã«ãŒã«ãšãå
šç¶æ±ºãŸã£ãŠãªããã ããâŠããšããæ¹ãå€ããšæããŸãã ãŸãã¯ã瀟å
ã«ãã§ã«ã«ãŒã«ãã¬ã€ãã©ã€ã³ããªããã確èªããŠã¿ãŠãã ããã ãã§ã«ããå Žåã¯ãåœç¶ãã¡ããæåªå
ã§ãã ã確èªãããã©ç¹ã«ãªãããããããæŽåãããäºå®ããšããç¶æ³ã§ããã°ã仿¥ããã§ããå°ããªå·¥å€«ã3ã€ã ãæããŠãããŸãã 工倫1ïŒäœ¿ãããŒã«ã®ãå©çšèŠçŽããŸã確èªããŠã¿ãã 现ãããšãããŸã§èªã¿èŸŒããªããŠããå°ãªããšããæ¬¡ã®ãããªãã€ã³ãã¯äžåºŠãã§ãã¯ããŠãããšããããšããæã«å©ãããŸãã ^1 確èªãã¹ããã€ã³ã åçšå©çšã¯OKã åé
åžã»è²æž¡ã¯ã©ããŸã§èš±ãããŠããã ã¯ã¬ãžãã衚èšãå¿
èŠãã©ãã ãAIçæã§ãããšæžãå¿
èŠãããã®ã ãã®ç»åã¯ãèªåã®ãã®ããšããŠæ±ã£ãŠããã ^2 æš©å©ããŠãŒã¶ãŒã«åž°å±ããã®ã ãããšãããµãŒãã¹åŽããã©ã€ã»ã³ã¹ãä»äžããã圢ãªã®ã ããŒã«ã«ãã£ãŠã ãå
¥åãšåºåã¯ãŠãŒã¶ãŒã«åž°å±ããŸãã ããŠãŒã¶ãŒã«äžå®ã®ã©ã€ã»ã³ã¹ãä»äžããŸãã ãšãã£ã衚çŸãåãããŸãããOpenAI ã Adobe ã®ããã«ãããžãã¹åããµãŒãã¹ã§IPè£åãçšæããŠããã±ãŒã¹ããããŸãã ãã€ã³ã ããªããšãªã倧äžå€«ãããã§ã¯ãªããæäœéãäžã®é
ç®ã«ã€ã㊠ãã©ãã«äœãæžããŠããããã ãã§ãèŠã€ããŠãã ãšãèªåã§ã¯æ°ã¥ããªããªã¹ã¯ãã°ããšæžããŸãã 工倫2ïŒãããã¯ã¢ãŠãããïŒããšæã£ãããäžåºŠäººã«èŠãã æåãã£ã©ã«äŒŒãŠããªãã ãã©ã³ãããŽã£ãœãèŠçŽ ãå
¥ã£ãŠããªãã 瀟äŒçãªé
æ
®ãæ¬ ã衚çŸã«ãªã£ãŠããªãã ãªã©ãèªåã ãã®å€æã§ã¯äžå®ãªãšãã¯ãããŒã ã¡ã³ããŒããã¶ã€ããŒãäžé·ãªã©ã«ãã©ãæãïŒããšäžåºŠèããŠã¿ãããšãå¿
èŠã ãšæããŸããèªåã§ã¯æ°ã¥ãã«ããã°ã¬ãŒãŸãŒã³ãå¥ã®äººããã£ããèŠæããŠãããããšããããšããããããŸãã 工倫3ïŒããã³ãããšçæç©ããã¡ã¢ããŠããã ããã®ç»åã©ããã£ãŠäœã£ããã ã£ãïŒããšããæ¯ãè¿ãã®ããã ãã§ãªããäžãäžã第äžè
ããããã®ç»åã䌌ãŠããŸãããïŒããšåãåãããæ¥ããšãã«ãããã®ããŒã«ã§ããã®ããã³ããã§çæããŸããããšèª¬æã§ããç¶æ
ã«ããŠããããšããèªåãäŒç€Ÿãå®ãããšã«ã€ãªãããŸãã å®ç§ãªç®¡çãŸã§ã¯ããªããŠãã以äžã®å
容ãèšé²ããŠãããšèª¬æãããããªããŸãã èšé²ã¬ãã« å
容 æäœé ã©ã®ããŒã«ã䜿ã£ããïŒChatGPTãGeminiãFirefly ãªã©ïŒããã€çæãããïŒæ¥ä»ïŒ æšå¥š ããã³ããã®å
šæãçæããç»åã®ãã¡ã€ã«åãšä¿åå Žæã䜿çšç®çïŒç€Ÿå
è³æ / ã¯ã©ã€ã¢ã³ãææ¡ / Webãµã€ã ãªã©ïŒ ã¹ããã®ã¡ã¢ã¢ããªããçæããç»åãšåããã©ã«ãã«ããã¹ããã¡ã€ã«ã眮ããŠããã ãã§ããäœãããªãããã¯ããã«åœ¹ç«ã¡ãŸãã EU AI Act ã G7åºå³¶ããã»ã¹ ãªã©ãçæAIã®éææ§ã説æè²¬ä»»ãéèŠããã€ã€ãããŸãã ãã©ã®ããŒã«ã§ãã©ããªæç€ºãåºããŠãã©ã®ç»åã䜿ã£ãããããã£ããã§ã远ããããã«ããŠããããšã¯ãããããæµãã«åããæå³ã§ãæå¹ã§ãã ãããã«ïŒããªããšãªãããããæèããŠäœ¿ãããž ç»åçæAIã¯ã䜿ãããªãã°æ¬åœã«é Œããçžæ£ã«ãªããŸãã ã§ããã䟿å©ã ããããšãã æµãããã®ã§ã¯ãªãããªã¹ã¯ãæèããªãã䜿ãããšã§ãä»äºã®è³ªããåšå²ããã®ä¿¡é Œããäžæ®µäžããã¯ãã§ãã å®ç§ãªã«ãŒã«ãæŽãã®ãåŸ
ã€å¿
èŠã¯ãããŸããã å©çšèŠçŽãèŠã è¿·ã£ãã誰ãã«èã 䜿ã£ãããŒã«ãããã³ããã軜ãèšé²ããŠãã ããããå°ããªå®è·µã®ç©ã¿éããã ããªããšãªã䜿ã£ãŠãã人ããšã 責任ãæã£ãŠäœ¿ãããªããŠãã人 ãã®å·®ã«ãªã£ãŠããã®ã ãšæããŸãã å
責äºé
æ¬èšäºã¯ãç»åçæAIã«é¢ããäžè¬çãªæ
å ±ã®å
±æãç®çãšãããã®ã§ããã æ³åŸçãªå©èšãè¡ããã®ã§ã¯ãããŸããã å
·äœçãªå€æãå¿
èŠãªã±ãŒã¹ã§ã¯ã åãµãŒãã¹ã®ææ°ã®å©çšèŠçŽã FAQ æå±çµç¹ã®ã«ãŒã«ã»ã¬ã€ãã©ã€ã³ å¿
èŠã«å¿ããŠå°éå®¶ïŒæ³åã»åŒè·å£«çïŒ ã«çžè«ããããšãããããããŸãã ãã ãããããå°ãããããããšããã§ãã ãæš©å©ã¯ãŠãŒã¶ãŒã«åž°å±ããšæžãããŠãããµãŒãã¹ãããã°ãããŠãŒã¶ãŒã«ã©ã€ã»ã³ã¹ãä»äžããšãã£ãæžãæ¹ã®ãµãŒãã¹ããããŸãã ç¹ã«ã¯ã©ã€ã¢ã³ããšã®å¥çŽã§ãèäœæš©ã®è²æž¡ããæ¡ä»¶ã«ãªã£ãŠããå Žåã¯ãèªå·±å€æãããå©çšèŠçŽã®è©²åœéšåãæ³åãäžé·ã«èŠããŠããã®æ¡ä»¶ã§åé¡ãªãããã確èªããããšãããããããŸãã
ããã«ã¡ã¯ïŒã¯ãªãšã€ãã£ãã°ã«ãŒãã®å€§éïŒããããïŒã§ãã ãã®èšäºã¯ KINTOãã¯ãããžãŒãº Advent Calendar 2025 ã®23æ¥ç®ã®ãã®ã§ãã ç§ã®æ®æ®µã®æ¥åã¯ããŠã§ããã£ã¬ã¯ã¿ãŒãšããŠãµãã¹ã¯KINTOã®äžå€è»ã®æ
å ±èšèšããã¢ã·ã¹ã¿ã³ããããŒãžã£ãŒãšããŠã¯ãªãšã€ãã£ãã°ã«ãŒãã®çµç¹ãããžã¡ã³ããè¡ã£ãŠããŸãã ä»å¹Žããã¯æ°ãã«ã泚åããŒãã§ããããŠãŒã¶ãŒãã¡ãŒã¹ããã®æšé²æ
åœã«æãæããEngineering Officeã®å®è°·ïŒemimïŒãšãšãã«ãŠããããšããŠæŽ»åããŠããŸããåŸæé åã§åæ
ããŠãã圌女ã®ããŒãã¯11æ¥ç®ã«ç޹ä»ãããŠããŸãã®ã§ããã¡ãã®èšäºãèŠããŠã¿ãŠãã ããã https://blog.kinto-technologies.com/posts/2025-12-11-userfirst2025/ 仿¥ã¯ãç§ã人éäžå¿èšèšå°éå®¶ïŒHCDå°éå®¶ïŒã®è³æ ŒãååŸããäœéšã®ç޹ä»ãéããŠãããŠãŒã¶ãŒãã¡ãŒã¹ãããšããå§¿å¢ã«å¯Ÿããç±ãæãããäŒãããããšæããŸãã èªç€Ÿäºæ¥ã§ããŠãŒã¶ãŒãã¡ãŒã¹ãããæ²ããªãããããããçµç¹ã®å£ãæ¢åã®ããã»ã¹ã«é»ãŸãããªããªãæ¬è³ªçãªäŸ¡å€ã«ç¹ãããªã⊠ãããªèª²é¡ãæ±ããäºæ¥è²¬ä»»è
ãéçºæ
åœè
ã®æ¹ã«ããããã²èªãã§ããã ãããå
容ã§ãã5åã»ã©ãä»ãåããã ããïŒ ãªãç§ã人éäžå¿èšèšå°éå®¶ã®èªå®ååŸãç®æããã®ãïŒ ããŠãŒã¶ãŒãã¡ãŒã¹ããããŠã§ãã§äºæ¥å±éãè¡ã£ãŠããäºæ¥äŒç€Ÿã§ã¯ãèããããšããªãããšããããšã¯ãªãéèŠã¯ãŒãããšã¯æããŸãããæç§æžçã«ããããã§ããŠããããŠãŒã¶ãŒãã¡ãŒã¹ãã§ããããšãã£ãå®çŸ©ã¯æç¢ºã«ãªãããŠããªãããããã¯ããã®ãé£ãããã®ã§ãåäºæ¥ã»äºæ¥äœã«ãããŠæãŸããå§¿ã¯ããç°ãªããããããŸããã ç§ãã¡ã¯ããã¯ã«ã³ãããŒãšããŠæ ªåŒäŒç€ŸKINTOãšãšãã«ãµãŒãã¹éçºãéå¶ãè¡ã£ãŠããŸãããå
šç€Ÿã«ããŠãŒã¶ãŒãã¡ãŒã¹ãããè¡ãæž¡ãããšãç®æãã«ãããããã®èšèã®æå³åããæŽ»åã®ãŽãŒã«ãããã»ã¹ãæšé²æ
åœããèŠåºããŠããå¿
èŠããããŸããã ç§ãæšé²æ
åœã«æãæããçç±ã¯ãåè·ã§æ
åœããŠãããµãŒãã¹ããŠãŒã¶ãŒãã¡ãŒã¹ãæŠç¥ã«ãã£ãŠå€§ããèºé²ããçµéšãããããã®çŽ æŽãããäœéšãKTCã§ãåçŸããããšãããã®ã§ãããããã«ã¯åœç¶ã人ã®å·»ã蟌ã¿ãå¿
èŠã§ãã ããã§ãŠãŒã¶ãŒãã¡ãŒã¹ãã®æšé²æ
åœãšããŠãå°éé åã®ç¥èã»å®çžŸãããããšãä»è
ã«ç€ºããå®å¿ããŠåç»ããŠããã ãææ®µãšããŠãè³æ ŒãååŸããããšãæãè³ããŸããããã®é åã®è³æ ŒãšããŠã¯çŸåšãç¹å®éå¶å©æŽ»åæ³äºº 人éäžå¿èšèšæšé²æ©æ§ïŒHCD-netïŒãèªå®ããŠãã人éäžå¿èšèšã¹ãã·ã£ãªã¹ãïŒå°éå®¶ãé©ããŠãããšããããšã§ãåéšã®æºåã«å
¥ã£ãã®ãã¡ããã©å»å¹Žã®ãã®ææã§ããã æºåæé ãŸãã¯èªå®ãåãããè³æ Œãšããã®åéšè³æ Œã®ç¢ºèªããå
¥ããŸããã HCD-netã®èªå®è³æ Œã¯2çš®é¡ãããã¹ãã·ã£ãªã¹ããšå°éå®¶ãšãªã£ãŠããŸããããããHCDãããžã§ã¯ããæšé²ããèœåãããããšããæ±ºããããã¬ããŒã圢åŒã«æ²¿ã£ãŠç€ºãã¹ã¿ã€ã«ã®èªå®è©ŠéšãšãªããŸãã HCDãããžã§ã¯ããšã¯ããŠãŒã¶ãŒã«å¯Ÿãã仮説ãç«ãŠãå®éã«ã€ã³ã¿ãã¥ãŒããããã¿ã€ãã³ã°ãçµãŠå®èšŒã»æ€èšŒã®ãµã€ã¯ã«ãåããŠãããããžã§ã¯ãã§ããç§ã®å Žåã¯ãŠã§ããµãŒãã¹ã§ã®å®è·µçµéšãããããŸããã§ããããç¹ã«åé¡ãªãããã§ããã HCDãããžã§ã¯ããæšé²ããã¹ãã«ã»ãããæã¡åãããç¬åã§éè¡ã§ãã人ãã¹ãã·ã£ãªã¹ããããã«ãããžã§ã¯ãå
šäœããçµç¹ãã¡ã³ããŒãžã®HCDã®å°å
¥ãå«ããŠæšé²ãããªãŒããŒã·ããããããžã¡ã³ãåãæã¡åãããŠãã人ãå°éå®¶ãšããŠèªå®ãããŸããç§ã®å Žåã¯ããŠãŒã¶ãŒãã¡ãŒã¹ãã®å
šç€Ÿãžã®æšé²ããç®çã§ãã®ã§ãå°éå®¶ãç®æãããšãšããŸããã ãŸãåéšè³æ Œãç°ãªããå°éå®¶ã«ã€ããŠã¯ã人éäžå¿èšèšã»ãŠãŒã¶ããªãã£é¢é£ã®å®åçµéš5幎以äžãç®å®ïŒå®è·µäºäŸã3äŸä»¥äžããšãªã£ãŠããŸãããããšæãã€ããŠå匷ãé 匵ãã°ããã«ååŸã§ãããã®ã§ã¯ãªãããšããããšãããããŸãããéå»ã«æºãã£ãŠãããããžã§ã¯ããå«ãããšèŠä»¶ãæºãããŠããã ãããšèããåéšããããšã«ããŸããã åéšå¯Ÿç HCD-netäž»å¬ã®ãªã³ã©ã€ã³èª¬æäŒã«åå ããæŠèŠãææ¡ããŸããã éå»ã«æºãã£ãHCDãããžã§ã¯ããæŠèŠãã詳现ã«è³ããŸã§æç³»åã§æžãåºããã³ã¢ã³ã³ãã¿ã³ã¹ã®é
ç®ããšã«æŽçããŸããã³ã¢ã³ã³ãã¿ã³ã¹ãšã¯ãäŸãã°ãå©çšç¶æ³ã®çè§£åã³æç€ºã®èœåãããA1.調æ»ã»è©äŸ¡èšèšèœåããªã©ã«åºåããããã®ã§ããããžã§ã¯ãã®åããã»ã¹ããã®åºåãã«èœãšã蟌ãããšãæ±ããããŸãã æŽçããå
容ã¯èª¿æ»å¯Ÿè±¡ãç®çãã¢ã¯ã·ã§ã³ãæçµã¢ãŠããããã§ã¯ã³ã»ãããããã10é
ç®ïœïŒäŸïŒå¯©æ»ã«å¿
èŠãªå¿
èŠæäœæ°ïŒãæŒããªãããããªãèšèŒããŸãã åéšäž æéå
ã«æå®ã®ããã¥ã¡ã³ããæåºãã圢åŒã®èªå®è©Šéšã§ãããä»è
ããã¢ããã€ã¹ãåããããšã¯çŠæ¢ãšãªã£ãŠããŸããæ£è§£ãããããªãäžã§èªåã§æžãäžããå¿
èŠããããããåœæã®èšé²ãèšæ¶ããã©ãã€ã€ã²ãããèšèŒããŠã¯èªã¿çŽããä¿®æ£ãç¹°ãè¿ããŸããã 幎æ«å¹Žå§ã®äŒæã®ã»ãŒå
šãŠãæå
¥ããæå®ã®ããã¥ã¡ã³ãã®ç¢ºèªãã¯ãããŠããïŒé±éãããã§æåºã§ããŸããã åæ ŒåŸãäœãå€ãã£ãã ååŸããç®çã®éãããŠãŒã¶ãŒãã¡ãŒã¹ãæšé²ã®ã·ãŒã³ã§å°éå®¶ãåä¹ãããšãã§ããŠããŸãã ãããŸã§ã®ä»äºãæ¯ãè¿ããå¯èŠåããä»è
ã«äŒããããã¥ã¡ã³ãã«èµ·ããããã»ã¹ãçµãããšã§ããã®åéã«ã€ããŠäžéãã¯çè§£ã»å®è·µããŠãããšããèªä¿¡ãã€ãããšããåŽé¢ããããŸãã ãããžã§ã¯ãã¯åžžã«çãç©ã§ãããåŠã³ãå°œããªããã®ãªã®ã§ããŸã ãŸã ããããå®è·µãç¶ããŠè¡ããããšèããŠããŸãã åæã«ããŠãŒã¶ãŒãã¡ãŒã¹ããèªç€Ÿã®æåã«æè¯ãã¹ãã瀟å
å€ã«ç¥èãå®è·µäŸãTipsãªã©ãéå
ããŠããæŽ»åãéé²ããŠãããŸãã ããããªããã ãåãªããã¶ã€ã³æ¹åãã§ã¯ãªããããµãŒãã¹ã®æ¬è³ªçãªäŸ¡å€ãšåçæ§ãã远æ±ããã ãŠãŒã¶ãŒã®å£°ããçµç¹ãšäºæ¥æŠç¥ãåããåã«å€ããã ãããªããšãæããŠãããªããHCDãããŒãã«ããã€ãã³ãçã«ãä»åŸåå ããããšèããŠããŸãã®ã§ãã©ããã§ãäŒãããéã«ã¯æ
å ±äº€æããããŠãã ããã
ãã®èšäºã¯ KINTOãã¯ãããžãŒãºã¢ããã³ãã«ã¬ã³ããŒ2025 ã®22æ¥ç®ã®èšäºã§ãð
ð ã¯ããã« ããã«ã¡ã¯ãKINTOãã¯ãããžãŒãº Mobile AssistanceãããŒãžã£ãŒ&KMPããŒã ãªãŒãã®Yena Hwangã§ãã æ¬èšäºã¯ãCompose MultiplatformãšSwiftUIã§äœããã€ããªããã¢ãã€ã«ã¢ããªãã·ãªãŒãºã®æçµåPart 3ã§ããPart 1ã§ã¯ãã€ããªããéçºãéžãã èæ¯ããPart 2ã§ã¯å
·äœçãªå®è£
æ¹æ³ã玹ä»ããŸãããä»åã¯SwiftUI飿ºã®è©³çްãCMP vs Flutteræ¯èŒããããŠå®è·µã§çŽé¢ããèœãšã穎ãšå°å
¥æŠç¥ã解説ããŸãã æ¬ã·ãªãŒãºã®æ§æ Part 1ïŒãªããã€ããªãããªã®ã Part 2ïŒå®è£
ã¬ã€ã Part 3ïŒSwiftUI飿ºãšæè¡Tips â çŸåšã®èšäº SwiftUIãšCMPã®çžäºåã蟌㿠ãã€ããªããã¢ãŒããã¯ãã£ã®æ žå¿ã¯ãSwiftUIãšCompose MultiplatformïŒCMPïŒãèªç±ã«çµã¿åãããããããšã§ããããã§ã¯ãå
±éã¢ãžã¥ãŒã«ãå®éã«ãã€ãã£ãç»é¢ã«ãã©ãçµ±åããã®ããã玹ä»ããŸãã ComposeãSwiftUIã«åã蟌ã SwiftUIã«ComposeãåãèŸŒãæ¹æ³ã§ãã ãŸããCMPåŽã§ã¯ UIViewController ãè¿ããŸãã // AppComposeUI.kt fun createProfileVC( user: User ): UIViewController { return ComposeUIViewController { ... } } ãããŠSwiftUIåŽã§ã¯ UIViewControllerRepresentable ã䜿ã£ãŠããã®ã³ã³ãããŒã©ãã©ããããŸãã // ComposeViewContainer.swift import SwiftUI import shared // Import the shared KMP framework struct ComposeViewContainer: UIViewControllerRepresentable { let user: User func makeUIViewController(context: Context) -> UIViewController { // Use the Compose wrapper to create the UIViewController return AppComposeUIKt.createProfileVC(user) } func updateUIViewController(_ uiViewController: UIViewController, context: Context) { } } ããã§SwiftUIã®äžã«CMPã®ç»é¢ãèªç¶ã«è¡šç€ºãããŸãã 以äžã¯ ComposeViewContainer ã« user ãæž¡ããŠããäŸã§ãã // ContentView.swift struct ContentView: View { let user: User var body: some View { VStack { Text("SwiftUI Header").font(.headline).padding() // Embed the Compose UI inside SwiftUI. ComposeViewContainer(user: user) .frame(height: 250) List { Text("SwiftUI Item 1") Text("SwiftUI Item 2") } } } } ãã®ããã«æžãã ãã§ã CMPã®ç»é¢ããã®ãŸãŸSwiftUIã®ã³ã³ããŒãã³ããšããŠæ±ãã ããã«ãªããŸãã SwiftUIãComposeã«åã蟌ã ä»åã¯ãéã«ã SwiftUIãComposeã«åãèŸŒãæ¹æ³ ã§ãã ãŸãKotlinïŒiosMainïŒåŽã«ãšã³ããªãŒãã€ã³ããçšæããŸããSwiftUIãComposeã«åã蟌ãããã®å
¥å£ã§ããKotlinã¯SwiftUIãçæããŸãããSwiftãã () -> UIViewController ã®ãã¡ã¯ããªãåãåããŸãã // ComposeEntryPointWithUIViewController.kt fun ComposeEntryPointWithUIViewController( createUIViewController: () -> UIViewController ): UIViewController = ComposeUIViewController { Column( Modifier .fillMaxSize() .windowInsetsPadding(WindowInsets.systemBars), horizontalAlignment = Alignment.CenterHorizontally ) { Text("Embedding SwiftUI into Compose") UIKitViewController( factory = createUIViewController, modifier = Modifier.size(250.dp).border(2.dp, Color.Blue), ) } } ãããŠComposeåŽã§ã¯ UIKitViewController() ã䜿ã£ãŠãSwiftUIãã¥ãŒã衚瀺ããŸãã æ¬¡ã«SwiftåŽã®å®è£
ã§ããããã§ã¯ MySwiftUIView ãå®çŸ©ããŠã UIHostingController ã§ã©ããããŸãã // MySwiftUIView.swift struct MySwiftUIView: View { let userName: String var body: some View { VStack(spacing: 8) { Text("Native SwiftUI Content").font(.headline) Text("Welcome, \(userName)") } } } // Pass SwiftUI to Kotlin entry point struct ComposeViewControllerRepresentable: UIViewControllerRepresentable { func makeUIViewController(context: Context) -> UIViewController { // Pass a factory to Kotlin that returns a UIViewController. // Here we wrap our SwiftUI view in a UIHostingController. return Main_iosKt.ComposeEntryPointWithUIViewController(createUIViewController: { UIHostingController(rootView: MySwiftUIView(userName: "Yena Hwang")) }) } func updateUIViewController(_ uiViewController: UIViewController, context: Context) {} } ãããŠããã®ã³ã³ãããŒã©ã ComposeEntryPointWithUIViewController ã«ãã¡ã¯ããªãšããŠæž¡ããŸãããã®ããã«ããŠãçµæçã« SwiftUIã®ç»é¢ãComposeã®äžã«è¡šç€ºãã ããšãã§ããŸãã ãã€ãã£ãUIã³ã³ããŒãã³ãã®åã蟌ã¿ïŒMapView 次ã«ããã€ãã£ãUIã³ã³ããŒãã³ããå©çšããäŸã§ããCMPåŽã«ãã€ãã£ãUIã³ã³ããŒãã³ããåã蟌ãã ã¢ããªã®åäœãã芧ãã ããããã®MapViewã¯iOSã® ãã€ãã£ãã³ã³ããŒãã³ã ã§ãã // MapContainer.kt // commonMain @Composable expect fun MapContainer( modifier: Modifier = Modifier, dealers: List<Dealer> ) // iosMain @Composable actual fun MapContainer( modifier: Modifier, dealers: List<Dealer> ) { UIKitView( factory = { // platform.MapKit MKMapView(frame = CGRectZero.readValue()).apply { showsUserLocation = true delegate = MapDelegate( ... ) } } ) } å
±éã³ãŒãã§ã¯ expect 颿°ã宣èšããiOSåŽã§ã¯ actual ãå®è£
ããŠããŸãããã㊠UIKitView ã䜿ã£ãŠã MKMapView ããã®ãŸãŸåã蟌ãã§ããŸãã ãã®ããã«ã expect/actual ãã¿ãŒã³ã䜿ãããšã§ãå
±éã€ã³ã¿ãŒãã§ãŒã¹ãç¶æããªãããã©ãããã©ãŒã åºæã®ãã€ãã£ãã³ã³ããŒãã³ããèªç±ã«åã蟌ãããšãã§ããŸãã CMP vs FlutterïŒãªãCMPãéžãã ã®ã ãããŸã§CMPãšãã€ãã£ãUIã®äœ¿ãåãã«ã€ããŠèŠãŠããŸããããå®ã¯ä»ã®ã¯ãã¹ãã©ãããã©ãŒã ã®ãã¬ãŒã ã¯ãŒã¯ã§ãåããããªèª²é¡ããããŸãã ãã€ãã£ããã¥ãŒçµ±åæ¹åŒã®æ±ºå®çãªéã äŸãã°Flutterã®å
¬åŒããã¥ã¡ã³ãã«ã¯ããPlatform Viewã«ã¯ããã©ãŒãã³ã¹é¢ã§ãã¬ãŒããªããããããšæèšãããŠããŸãã åºå CMP Flutter ã¬ã³ããªã³ã° Inline Rendering ð Overlay 𥲠ç¹åŸŽ é«éã§å¹çç éããã¥ãŒã§ã«ã¯ã€ã æè¡çãªéã CMPãšFlutterã§ã¯ããã€ãã£ãUIãšåã蟌ã¿UIã®çžäºéçšæ¹åŒãç°ãªããããã©ãŒãã³ã¹ã«å€§ããªå·®ãåºãŸãã Host UI â Embedded UI Rendering path Performance impact Native â CMP Android: AndroidView inside Compose (same View system) iOS: CMP Skia surface hosts a UIKit view via UIKitView Very Low (Android) / LowâModerate (iOS) CMP â Native Android: ComposeView in a ViewGroup (Compose runs on platform renderer) iOS: SwiftUI/UIViewController hosts ComposeUIViewController (Skia surface inside) Low (Android) / Moderate (iOS) Native â Flutter Flutter renders via Skia/Impeller; native view injected as PlatformView (texture/layer composition) Moderate; visible stutter on heavy views (Map, WebView) Flutter â Native Native Activity/VC hosts Flutter engine surface Extra startup cost (engine warm-up), stable after warm-up CMPã®åŒ·ã¿ ãã€ãã£ãMapViewããã®ãŸãŸäœ¿çšãããã€ãã£ãAPIã§ã¢ã€ã³ã³/çµè·¯ã¬ã³ããªã³ã° MKMapViewãªã©ã®ãã€ãã£ãã³ã³ããŒãã³ããçŽæ¥é
眮 ã³ã³ããŒãã³ãåäœã§äº€æå¯èœ ãã€ãã£ãããã©ãŒãã³ã¹ãšã¢ã¯ã»ã·ããªãã£ç¶æ è€éãªãã€ããªããUIããã©ãŒãã³ã¹æ¯èŒ Framework Startup Time Memory Usage UI Smoothness Native âââ âââ âââ CMP + Native âââ ââ âââ Flutter + Native ââ ââ ââ å®è·µã§çŽé¢ããèœãšã穎 "Every solution breeds new problems." â Arthur Bloch ãããŸã§CMPãšãã€ãã£ãUIã®çµã¿åããã®å©ç¹ãèŠãŠããŸããããã©ããªæè¡ã«ã課é¡ã¯ãããŸããç§ãã¡ãKMP/CMPéçºã§å®éã«çŽé¢ããèœãšã穎ã玹ä»ããŸãã KMPããžãã¯ã¬ã€ã€ãŒ 1. HTTP/TLS/ãªãã€ã¬ã¯ã/ã¯ãã㌠çç¶ïŒãã©ãããã©ãŒã å¥ãšã³ãžã³ãç°ãªããã¯ãããŒæ°žç¶æ§ããªãã€ã¬ã¯ããTLSããã³ã°ãç°ãªãåäœ è§£æ±ºïŒã¿ã€ã ã¢ãŠã/ãã£ãã·ã¥/ãã®ã³ã°å
±æèšå® + DIãexpect/actualã§ãã©ãããã©ãŒã å¥ãšã³ãžã³+ã»ãã¥ãªãã£ããªã·ãŒæ³šå
¥ 2. æ£èŠè¡šçŸã®éã çç¶ïŒJVMã¯java.util.regexãiOS/Native㯠ICUããŒã¹ãšã³ãžã³äœ¿çšã \R ãå¯å€å¹
lookbehindãªã©ãiOSã§ç°ãªãåäœãŸãã¯ãµããŒããªã 解決ïŒè€éãªæ©èœãé¿ãããã·ã³ãã«ãªãµããã¿ãŒã³ã«åé¢ããšã³ãžã³äº€æå¯èœãªã¢ããã¿ãŒæ§æ 3. ã¿ã€ã ãŸãŒã³ & DST çç¶ïŒãã©ãããã©ãŒã å¥ã¿ã€ã ãŸãŒã³DBãšãã©ãŒãããã£ã³ã°èŠåãç°ãªã 解決ïŒãã¹ãŠã®èšç®ã¯kotlinx-datetimeã§ããã©ãŒãããã£ã³ã°ã¯expect/actualã§ãã©ãããã©ãŒã ã«å§ä»» CMP UIã¬ã€ã€ãŒ 1. ãã©ã³ã & ã¿ã€ãã°ã©ãã£ïŒCJK/çµµæåïŒ çç¶ïŒãã©ãããã©ãŒã å¥ãã©ãŒã«ããã¯ãç°ãªããè¡ã®é«ããçç¥ãçµµæåå¹
ãç°ãªã 解決ïŒãã©ã³ããã³ãã«ããã©ã³ããã¡ããªãŒ/ãŠã§ã€ãæç€ºç宣èšãlineHeight/letterSpacingæç€ºçèšå® 2. çç¥/ããã¹ã枬å®ã®éã çç¶ïŒiOS/Skikoããã¹ãã¬ã€ã¢ãŠããAndroidãšãã¯ã»ã«åäœã§äžèŽããªã 解決ïŒmaxLines + TextOverflow.Ellipsis䜿çšãããŽã£ããããªä»®å®ãé¿ãããäž»èŠç»é¢ã¹ã¯ãªãŒã³ã·ã§ãããªã°ã¬ãã·ã§ã³ãã¹ã 3. ã¹ã¯ããŒã« & ãžã§ã¹ãã£ãŒç©ç çç¶ïŒiOSã®æ
£æ§ããããæ»ãããã§ããã¹ãã¹ã¯ããŒã«ã®æè§Šãç°ãªãããŸããCMPã®Scrollã®äžã«ãã€ãã£ãã®Scrollãå
¥ãããšãå
åŽã®Scrollãåäœããªãåé¡ããã æ³šæïŒã¹ã¯ããŒã«ç©çèšå®ãæœè±¡åããŠãã©ãããã©ãŒã å¥åå²ãè€éãªãã¹ãã¹ã¯ããŒã«ããŒãžã¯åçŽåãScroll Viewã®UXã¯èšè𿮵éãã調æŽãå¿
èŠ å°å
¥æŠç¥ïŒãããã¯ã段éå¥ã¢ãããŒã CMP/KMPã®çã®åŒ·ã¿ã¯ æè»æ§ ã§ããå
±æã³ãŒããšãã€ãã£ãã³ãŒãã®æ¯çãèªç±ã«èª¿æŽã§ããããããããã¿ã€ãã§ã¯åå©çšãæå€§åãããããã¯ããæçããããã€ãã£ãæ¯çãé«ããããšãã§ããŸãã æ°èŠãããã¯ãïŒå
±ææ¯çãé«ãã¹ã¿ãŒã 段é å
±ææ¯ç ç®æš ãªãœãŒã¹ç¶æ³ Start Stage ~99% è¿
éãªãªãªãŒã¹ãã¢ã€ãã¢æ€èšŒ éãããéçºãªãœãŒã¹ Growth Stage ~80% ãããã¯ãæ¡åŒµ + ãã€ãã£ãUXåŒ·å æšæºéçºãªãœãŒã¹ Maturity Stage ~50% ããã©ãŒãã³ã¹æé©åãé·æä¿å®æ§ãããŒã å°éå è±å¯ãªéçºãªãœãŒã¹ æ¢åãããã¯ãïŒæ®µéçå°å
¥ 1. Start SmallïŒ1%ïŒ æãå®å
šãªãšã³ããªãŒãã€ã³ããæãå°ãããªã¹ã¯ã®äœãé åã«KMP/CMPå°å
¥ 2. Stepwise ExpansionïŒ20%ïŒ å®å®æ§ãšç¢ºä¿¡ã確ä¿ããªããå°å
¥ç¯å²ãæ¡åŒµ 3. End StageïŒ~50%ïŒ å
±æã³ãŒããšãã€ãã£ãã³ãŒãã®æç¶å¯èœãªãã©ã³ã¹ãã€ã³ãã«å°é ãããã« ãã€ããªããã¢ãŒããã¯ãã£ãå°å
¥ããŠåŸãããææããŸãšãããšïŒ é
ç® BeforeïŒåŸæ¥ã»ãã€ãã£ãïŒ AfterïŒãã€ããªããïŒ éçºå¹ç äž¡OSå¥ã
ã«å®è£
50%åæžãäžç®æã§ãã°ä¿®æ£ ã³ã¹ã éè€äœæ¥ã»ããåããå¿
èŠ ã³ãã¥ãã±ãŒã·ã§ã³ã»QAã»ä¿å®åæž ããŒã OSå¥ã«å°éãšã³ãžãã¢å¿
èŠ å°äººæ°ã§äž¡ãã©ãããã©ãŒã å¯Ÿå¿ å質 ãã€ãã£ãå質 ãã€ãã£ãå質ãç¶æããªããå
±æ æè»æ§ ãã€ãã£ãã®ã¿ å¿
èŠãªéšåã ãå
±æå¯èœ ãã€ãã£ãã®åŒ·ã¿ã掻ãããªããã³ãŒããå
±æã§ãã ââããããã€ããªããæŠç¥ã®æå€§ã®ã¡ãªããã§ããã DroidKaigiã§çºè¡šããªãããå€ãã®æ¹ã
ãåãæ©ã¿ãæã£ãŠããããšãæããŸãããããããKMPã»CMPã®å°å
¥ãæ€èšããªãããäž¡OSã®ãã€ãã£ãã³ãŒããæŽ»ããããã€ããªããã¢ãŒããã¯ãã£ãæºåããŠããæ¹ã
ã«ãç§ãã¡ã®ããŒã ã®çµéšãå°ãã§ãåèã«ãªãã°å¹žãã§ãã éè€äœæ¥ãæžãããäž¡OSã«å¹çãã察å¿ããªãããé«å質ãªã¢ããªãçŽ æ©ããŠãŒã¶ãŒã«å±ããââKMPã»CMPãæŽ»çšãããã€ããªããéçºãããã²æ€èšããŠã¿ãŠãã ããã ãã¡ãã¯ãCompose MultiplatformãšSwiftUIã§äœããã€ããªããã¢ãã€ã«ã¢ããªãã·ãªãŒãºã®Part 3ïŒæçµåïŒã§ãã
ããã«ã¡ã¯ã @ahomu ã§ãããã®èšäºã¯ KINTOãã¯ãããžãŒãº Advent Calendar 2025 ã®22æ¥ç®ã®èšäºã§ãð
ð 2025幎2æã« KINTOãã¯ãããžãŒãºã®éçºçµç¹ã匷ãããã Engineering Office ã®ãçŽ¹ä» ãšããèšäºã§ã玹ä»ããåŒããŒã ã«ã€ããŠãçºè¶³ãã1幎匱çµéããçŸç¶ãšã¡ã³ããŒç޹ä»ãæžããŸãã 1å¹Žãæ¯ãè¿ã£ãŠ ä»å¹Žã®äžé ã«Findyããã®éçºçç£æ§ã«ã³ãã¡ã¬ã³ã¹ã§ãåŒããŒã ã«ã€ããŠç»å£ãããŠããããŸããã https://findy-tools.io/articles/kinto-technologies-dev-productivity-con-2025/133 æã
ã¯ãããšã¿ã°ã«ãŒãã®å
補éçºéšéããKINTOãã¯ãããžãŒãºïŒKTCïŒã®éçºåã»çµç¹åãé«ããããã«ã±ã€ãããªãã£ãã«ã«ãã£ãŒãç²åŸ/å€åããããã®åãããããšãããæœè±¡çãªããã·ã§ã³ãæ
ã£ãŠããŸãã åŠã³ãšçè§£ãšé¢ä¿ã¥ãã ç»å£æã«ãèšåããããšã§ãããæã
ã®ãããªç€ŸæŽã®æµ
ãã¡ã³ããŒ/ããŒã ãæšªè»žæŽ»åãé²ããäžã§å€§äºãªããšã¯ãç¬ããããã«ãªããããããŸã§ãšãããããã»ããã§ç€ºãããšã§ãã ãããŸã§ã®ãã¬ãŒããªããç¥ãããšã§ãçŸç¶ã®æå³ã»æçŸ©ãç¥ã åé¡ãäžè¶³ãèŠã€ããã®ã§ã¯ãªããä»ã§ããŠããããšãç¥ã£ãäžã§äŒžã³ä»£ãèŠã€ãã EOã¯å人ã®é åã§ãã®åãããã£ããè¡ãããšãã§ãããšæããŸãããŸããå®éã«é Œãã«ããŠããããæ©äŒãå¢ããŠããŠããããŸã å°ãããªãããçå®ã«å€åãèµ·ãããŠããŸãã å
šç€Ÿã®ã«ãã¬ããžãšããŠã¯äžè¶³ãããã€ã€ã§ãã瀟å
åæãåã¬ã€ã€ãŒãšãæ§ã
ãªé¢ä¿ãç¯ããŸããã å人ååºãšå€æ§æ§ã®ã·ããžãŒ 掻åãæ¬æ Œåããã«ã€ããŠå°éæ§ã®ç°ãªãå人ååºçãªããŒã ã§ããããšã®æç¢ºãªåŒ·ã¿ãåºãŠããããã«æããŠããŸããå°éé å以å€ã«ãåºèº«æ¥çã屿§ã«å€æ§æ§ãããããŒã ãªã®ã§ãã²ãšãã²ãšããæ§ã
ãªèŠç¹ããã£ãŠå
šç€Ÿã«åããŠã¢ãããŒããããŠããŸãã ãã®éçšã§ãã€ãŸã£ãæ
å ±ãç¥èŠãæã¡å¯ããšãåã察象ã«ãè²ã
ãªç©ã®èŠæ¹ããç«å Žã«ããèŠè§£ã®å·®ç°ãããèŠããŠããŸããææãšäºå®ãæ£ããæ±ãããšã§ãKTCã®æ¬¡ã®å¯èœæ§ããããå
·äœçãªæã¡æãèããäžã§å€§ããªå©ãã«ãªã£ãŠããŸãã ãŸããã²ãšãã²ãšãã瀟å
å¶æ¥ã§ãããšåæã«ãçµåãšããŠå©ãåãããšã§ããã®ä»äºã¯ãã®ã²ãšã®ã»ããåŸæã ãããã¹ãã¡ããããããŸãã¯ãŒã¯ããããšãå¢ããŠããŸããå人çãªçµéšã ãšå質æ§ã«ãã匷è¡çªç Žãå³ããããªä»äºãå€ãã£ãã®ã§ãä»ã®ãã®ããŒã ã§å€æ§æ§ã®ã¡ãªããã匷ãæããããããšã«é¢çœã¿ãæããŠããŸãã å®éã®åãçµã¿ãšããããªãªããŸãã¡ã玹ä»ããã ä»å¹Žã®Advent Calendarã®äžã§åèªãåãçµã¿ã玹ä»ããŠããã®ã§ãããã§ã¯èšäºãªã³ã¯ãšããããŠã¡ã³ããŒç޹ä»ãããŠãããŸããïŒãã³ãã³ãã³âŠâŠð¥ ð ãäžäººäºåœ¹ãéçºããã»ã¹æ¹åã®å颚ãšå€ªéœãY.Naitoãã https://blog.kinto-technologies.com/posts/2025-12-17-releasefirst/ SPI (Software Process Improvement) ã¹ãã·ã£ãªã¹ããšããŠEOçºè¶³ä»¥åãã瀟å
åæã§æŽ»åããŠããŸã èšäºã«ããããªãªãŒã¹ãã¡ãŒã¹ããã¯ãŸãã«Naitoããã®ç骚é ãã¹ã¯ã©ã ã®é°å²æ°ã«ä¹ã£ãã£ãŠããã ãã®èªåãšããŠã¯ãéçºããã»ã¹ãšããäžé£ã®å¶ã¿ã«å¯Ÿããè§£å床ã®é«ããåŠã°ããŠããã ããŠãããŸã å颚ãšå€ªéœãã¢ãŒãã䜿ãåããŠããã©ããªãã«ãããã¯ãã«ãã«ç€Ÿå
ã§å®è©ãããã äºåã®ã©ãçŒããåžæãããã ðš ãEOã®ç¹ç°ç¹ãKTCã®ãã¶ã€ã³ããã¶ã€ã³äžãemimãã https://blog.kinto-technologies.com/posts/2025-12-11-userfirst2025/ ããŒã åç§°çã«ãšã³ãžãã¢ãå¢ããããšæããããemimããã¯ãã¶ã€ããŒã§ãããã¶ã€ã³ãšã³ãžãã¢ãšãã§ããªãçŽç²ã«ãããã¯ããã¶ã€ã³ãçŽè¿ã®å°é èšäºã§ã¯ã圢骞åããã¡ãªããŠãŒã¶ãŒãã¡ãŒã¹ãããåå®çŸ©ããææŠãç¶ŽãããŠããŸããéçºã®äžã§ãã¶ã€ã³ãšãšã³ãžãã¢ãªã³ã°ã®ããªããžãããŠããçµéšã掻ãããEOãšããŠå
補éçºçµç¹ã®å€é©ã«ææŠããŠãããŠããŸã ã瀟å
ããªãŒã©ã³ã¹ã§åãåãåæã§ããããããšç€Ÿå
ç¡è·ãŸã£ãããã§ããïŒïŒä¹±æŽãªæèš³ïŒããšããçåŠãªæ±äººèšŽæ±ã«èå³ã瀺ããŠãããå¥ç¹ãªæ¹ã ããããã³ãŒããŒã ããã ð ãããŒãã³æ
åœã¢ã¯ã»ã·ããªãã£çªé·ïŒä»®ïŒã蟻ãã https://blog.kinto-technologies.com/posts/2025-12-09-What-I-want-to-achieve-as-blind-person-at-mobile-company/ å
¥ç€ŸãããŠãã€ãã€ãã¢ã¯ã»ã·ããªãã£ãšã³ãžãã¢ãšããŠå¹
åºã瀟å
å€ã§ã掻èºäºå® äžé£ã®æŽ»åãéããŠã¢ã¯ã»ã·ããªãã£ããŠãŒã¶ããªãã£ãçŽæ¥çã«é«ãŸã â ã°ã«ãŒãäŒç€ŸãšããŠã®äœ¿åœãæ¬è³ªçã«æãããããã«ãªãããšã¯ãã¡ããã倿§ãªå©çšç°å¢ã«é¢ããæ°ä»ããåŸãããã®ã§åºããŠãŒã¶ãŒã«å¯ŸããŠæ·±ãæŽå¯ãåŸãããçµç¹ã®è²æã«ã€ãªãããšèããŠããŸãïŒçè
芳ç¹ïŒ æ±äº¬ã®ãªãã£ã¹è¿ãã«ããããŒã¬ãŒãã³ã°ã§ ã¯ãããŒãé£ã¹ãçŽæïŒãããŠãã ð ãEngineering Office ã¯å¿ã®äž»åãahomu ãã€ã¯7æãã人äºãããŒãžã£ãŒãå
Œä»»ããŠããããã人äºã®çããã«æ¯ããããŠããŸã EOã§ã¯ã¢ãŠãããããé²ãæ¹ã®ã¬ãã¥ãŒã ãããŠããããŒãžã£ãŒæ¥ EOã仿ããŠããçµç¹ã®å€åã«åããç§ã¯äººäºãšããŠãã§ã³ãžãããžã¡ã³ãã«æºãã£ãŠããããšããã®ãæ£ãããã©ãŒã¡ãŒã·ã§ã³èª¬æ ãããã« KTCã®Engineering Officeã®ã玹ä»ã§ããã幎æãã«ã¯SETïŒSoftware Engineer in TestïŒãšããŠã®å°éæ§ãæã€ã¡ã³ããŒããžã§ã€ã³äºå®ã§ãã ãŸãã1幎ã§ãããªäººãå¢ãããšã¯æã£ãŠãããã³ã£ããã§ãããæ±äººèŠä»¶ããã¡ãžãŒãããŠé£ããã®ã§ãåŒãç¶ããªãã¡ã©ã«äžå¿ã§ç©æ¥µçãªæ¡çšã¯ããŠããŸããã ð KINTOãã¯ãããžãŒãº æ¡çšæ
å ±ïŒãªãŒãã³ããžã·ã§ã³ïŒã¯ãã¡ã Engineering Office決ãæã¡ã§ãªããŠã倧äžå€«ãªã®ã§ããèå³ãããæ¹ã¯äœããã®ææ®µã§ã³ã³ã¿ã¯ããšã£ãŠããã ããã°è²ã
ã話ãããŠããã ããŸãã®ã§ããããããé¡ãèŽããŸãã
ãã®èšäºã¯ KINTOãã¯ãããžãŒãºã¢ããã³ãã«ã¬ã³ããŒ2025 ã®22æ¥ç®ã®èšäºã§ãð
ð ã¯ããã« ããã«ã¡ã¯ãKINTOãã¯ãããžãŒãºæ ªåŒäŒç€ŸïŒç¥ããŠãKTCïŒã§ iOS, Androidã¢ãã€ã«ã¢ããªãéçºããŠãããæ¹è碩ïŒãã³ã»ã ã¥ãœã¯ãBahng MooseokïŒã§ãã ãããŸã§ãGlobal KINTO AppãããKINTO ããããç³ã蟌ã¿ã¢ããªããªã©ãæ
åœããçŸåšã¯ ãKINTO Unlimitedãã®éçºãè¡ã£ãŠããŸãã ãKINTO ããããç³ã蟌ã¿ã¢ããªãã¯ãæ°è»ã®ãµãã¹ã¯ãµãŒãã¹ã§ããKINTOã®èŠç©ããã審æ»ãŸã§ãã§ããã¢ããªã§ããKINTO Unlimitedãã¯ãå¥çŽå
容ã®ç¢ºèªããã©ã€ããµããŒããã¯ã«ãã®ã¢ããã°ã¬ãŒãã®ç³ã蟌ã¿ãªã©ãã§ããã¢ããªã§ãã ä»åã¯ãWWDC25ã«åå ããŠããŸããã®ã§ãããã¯ããã°ã«ãŸãšããŠã¿ãŸããã ç§ã¯2008幎ããiOSã¢ããªéçºã«æºãã£ãŠãããåœæã¯ãŸã ãiOSãã§ã¯ãªããiPhone OSããšåŒã°ããŠããæä»£ã§ãã é·å¹Žã«ããã£ãŠãWWDCã¯æè¡æ
å ±ã®åéãææ°æè¡ã®ãã£ããã¢ããã«ãããŠæãéèŠãªã€ãã³ãã ãšæããŠããŸãããã«ãããããããä»åãåã®çŸå°åå ãšãªãããšãŠãææ
šæ·±ãäœéšãšãªããŸããã ãã¯ãçŸå°ãªãã§ã¯ã®æ²¡å
¥æã¯ããªã³ã©ã€ã³åå ãšã¯ãŸã£ããéããŸããã Check-in and welcome reception @Apple Infinite Loop æ¥ææ¥ã®ååŸãAppleã®æ§ç€Ÿå±ãApple Infinite Loopãã«ãŠãäºåãã§ãã¯ã€ã³ãšãŠã§ã«ã«ã ã¬ã»ãã·ã§ã³ãè¡ãããŸããã WWDCã®ãããžãšã°ããºãåãåãããã®ãŸãŸå€æ¹ãŸã§ãŠã§ã«ã«ã ããŒãã£ãéå¬ãããŸããã WWDC25ã®åå ãããžãKTCããã¯ã»ãšãã©ã®ã¢ããªã TOYOTA FINANCIAL SERVICE CORPORATIONã®ååã§ãªãªãŒã¹ãããŠããŸã WWDCãããã®å Žæãæ§ãã ã£ãã®ã§ãçµæ§äžŠã³ãŸãããWWDC25ã®ã¢ãã¥ã¡ã³ãåã§ã®èšå¿µæ®åœ±ã¯å¿
é ã§ãïŒè¡åã«ã¯ãªããŸããã䞊ã¶äŸ¡å€ããã§ãã 忥å€ã«ã¯æ¥æ¬ããã®åå è
ãéãŸã亀æµäŒã«ãåå ããŠããããããã®æã«åºäŒã£ãæ¹ã
ãšè©±ããããäŒå Žå
ã«ããAppleã®ç€Ÿå¡ãšè©±ããããšã楜ããæéãéãããŸãããAppleã®åãæ¹ããããããã Steve Jobsã®ãªãã£ã¹ã§ãããããšçŽæ¥èª¬æãèããã®ã¯ã貎éãªçµéšã§ããã ãããŠãApple Japanã®æ¹ãšãã話ããæ©äŒããããæ¥æ¬ã«æ»ã£ãŠããã®ã¢ããªæ¹åã«åããåãçµã¿ã«ã€ããŠçžè«ããããšãã§ããŸããã Main Event @Apple Park - Keynote, Platforms State of the Union WWDCæéäžãèªåãèŠãããã®ãæå·®ãã±ã§ããã¡ã€ã³ã€ãã³ãã®æ¥ãã¡ãã£ãšå¯åããŠããŸããKeynoteã®æéã«ã®ãªã®ãªå°çã 屿 ¹ã®ããè¯ãåžã確ä¿ã§ãããCaffe Macsã§ã®æé£ãæ
ãã ãããªã£ãŠããŸããŸãããã¡ã€ã³ã€ãã³ãã®æ¥ã¯æ©ãã«è¡åããã®ãããããããŸãã é ãïŒæ¥å·®ãã匷ãïŒ ããããKeynoteãå§ãŸããŸãã Keynoteã®åé ã§ã¯ãAppleå¶äœã®æ ç»F1ã®äºåç·šããµãã©ã€ãºã§äžæ ãããŸãããã¡ãªã¿ã«ããŸã æ ç»é€šã§å
¬éåã§ããããWWDCã®äžæ¥ç®ã®ç«ææ¥ã®å€ãSteve Jobs Theaterã§ç¹å¥äžæ ãããŸããããã¡ããåžã«éããããã®ã§ãç³ã蟌ã¿ãå¿
èŠãç§ã¯ã¡ãŒã«ç¢ºèªãé
ããç³ã蟌ã¿ã«éã«åããŸããã§ãããçªçºçãªã€ãã³ãã«ã察å¿ã§ãããããWWDCæéäžã¯åžžã«ã¡ãŒã«ããã§ãã¯ããããšã匷ãããããããŸãã Keynoteãçµãããšãã©ã³ãã§ãïŒ Cupertinoã®å€ã¯æ¥å·®ããéåžžã«åŒ·ãã§ãããApple Parkã®å
åºã§ã®ã©ã³ãã¯æé«ã§ãã åå€ããå
šãŠç¡æã§æäŸãããé£äºããã¶ãŒããWWDCçŸå°åå ã®æ¥œãã¿ã®äžã€ã§ãïŒ ååŸã¯ãPlatforms State of the Unionããéå¬ãéçºè
åãã«ããæè¡çãªå
容ãçºè¡šãããŸãã ä»åã®Keynoteãš Platforms State of the Unionã®ç®çã¯ãLiquid Glass UIãš Apple Intelligenceã§ããã Liquid Glassã¯ãä»ã®åå è
ããã奜è©ã§ãç§ãéåžžã«æŽç·Žãããå°è±¡ãåããŸããã Apple Intelligenceã§ã¯ãæ°ããFoundation Models Frameworkãç»å ŽãAppleã¢ããªéçºã«ãããŠä»åŸãéåžžã«éèŠãªåºç€æè¡ã«ãªããšæããŸããã In-person Labs WWDCäžã§ãç¹ã«è²Žéãªã®ããIn-person Labsãã§ããAppleã®ãšã³ãžãã¢ããã¶ã€ããŒã«çŽæ¥è³ªåã§ããæ©äŒã§ãã æ³å以äžã«å€ãã®æ¹ã察å¿ãããŠããŠãããŸãåŸ
ããã«çžè«ããããšãã§ããŸããã ãã ãäžã€åçç¹ãããã®æéã¯æŠå¿µçãæœè±¡çãªè³ªåããã¯å
·äœçãªã±ãŒã¹ã«åºã¥ã質åã®æ¹ãåããŠãããšæããŸãããConciergeã®æ¹ã質åå
容ã«å¿ããŠå°éã¹ã¿ããã«ç¹ãã§ãããã®ã§ãããå
å®¹ãææ§ã ãšå²ãæ¯ãã«ãå°ã£ãŠããããã«èŠããŸããã ã§ããWWDCæéäžãAppleã®ç€Ÿå¡ãšè©±ããæ©äŒã¯ In-person Labsã ãã§ã¯ãããŸããã ãŠã§ã«ã«ã ããŒãã£ããäžæ¥ç®ã® Developer Activitiesãªã©ãæ©äŒã¯ååã«ããã®ã§ãèãããããšãããããæºåãããšãããæ¿ãäœéšã«ãªããšæããŸãã Developer Activities @Apple Developer Center Cupertino å
¬åŒã€ãã³ãã®äžæ¥ç®ãç«ææ¥ã§ãã Apple Developer Centerã§ Developers Activitiesãéå¬ãããŸããã ãã®ã€ãã³ãã¯äºåç³è«ãå¿
èŠã§ãWWDCã®äžé±éåãããã«æ¡å
ã¡ãŒã«ãå±ããŸãããã¡ãã£ãšé
ããªããšåå ã§ããªããªãããåœæ¥äŒå Žã®åã§ç©ºããåŸ
ã€ãããªãã®ã§ãã¡ãŒã«ãå±ããããå³ç³ãèŸŒã¿æšå¥šã§ãã ä»åã®ããŒãã¯Liquid Glass UIã ç»å£ããAppleã®ãã¶ã€ããŒããšã³ãžãã¢ãã¡ããUIã®å²åŠãéçºãšããœãŒããããã«ã¯ã©ã€ãã³ãŒãã£ã³ã°ãŸã§æ«é²ããŠãããŸããã ãã®ã»ãã·ã§ã³ã¯ãªã³ã©ã€ã³é
ä¿¡ããããªããçŸå°éå®ã³ã³ãã³ããªã®ã§ãéåžžã«äŸ¡å€ã®é«ãäœéšã§ããã éå
¬åŒã«ã³ãã¡ã¬ã³ã¹ãã€ãã³ã - One More Thing Conference, Core Coffee WWDCéå¬äžã¯ãCupertinoåšèŸºã§å€ãã®éå
¬åŒAppleç³»ã€ãã³ããéå¬ãããŠããŸãã twostrawsã§ç¥ãããPaul HudsonãããWWDCããšã«ãŸãšããŠãããŠããã€ãã³ããªã¹ããããã®ã§ãèŠãã§ãã¯ã§ãïŒ https://github.com/twostraws/wwdc ä»åã¯ãã®äžããããOne More Thing Conferenceããš ãCore Coffeeãã«åå ããŸããã ãOne More Thing Conferenceãã§ã¯ãå
¬åŒçºè¡šãããæ°æè¡ããã®å Žã§å®è£
ã»æ€èšŒããªãããå®çšçãªç¥èŠãæ·±ããããã®ãå°è±¡çã§ããã éå
¬åŒãªãããäžçäžã®éçºè
ãšæ·±ã亀æµã§ããæ©äŒãšãªããŸããã ãŸãšã æ¯å¹ŽWWDCã®å
容ã远ããããŠããç§ã«ãšã£ãŠãä»åãåããŠçŸå°ã§åå ã§ããããšã¯ããšãŠãæçŸ©æ·±ãçµéšãšãªããŸããã ç¹ã«AppleçŽæ£ã®Frameworkã®çè§£ã¯ãå質ã»ã¡ã³ããã³ã¹æ§ã®é«ãã¢ããªãäœãããã§æ¬ ãããªããã®ã§ãã çŸå°åå ãéããŠããã®éèŠæ§ããããããŠå®æããæ°ããªåºæ¿ãšã¢ãããŒã·ã§ã³ãåŸãããšãã§ããŸããã
ãã®èšäºã¯ KINTOãã¯ãããžãŒãº Advent Calendar 2025 ãš æè¡åºå ± Advent Calendar 2025 ã®21æ¥ç®ã®èšäºã§ãð
ð äœã®èšäºïŒ æ¬èšäºã¯ãç§ãæè¡åºå ±ãšããŠåãäžã§ãçºä¿¡ããããšãã«ã€ããŠçºèŠããããšãæããããšãããèãã«è³ã£ãããšããŸãšãããã®ã§ãã 端çã«çµè«ãæžããšãçºä¿¡ãããïŒããšããããšãªã®ã§ãããããã«æãè³ã£ãçµç·¯ãªã©ãåãããŠèªãã§ããã ããã°å¬ããã§ãã æ³å®èªè
ãšã³ãžãã¢ã®ïŒç¹ã«çºä¿¡ãèŠæãå«ãããã£ãããšãªãããšããïŒæ¹ çºä¿¡ãåŒã³æããŠãæè¡åºå ±ã®æ¹ ããã¯äŒæ¥ã«å€ããŠããéãšã³ãžãã¢ã®æ¹ SNSã瀟å
ããã°ã§çºä¿¡ããã¡ããã¡ããã£ãŠããæ¹ïŒã¬ãã¥ã¢ãŒãšããŠæèŠãããããå¬ããã§ãïŒ ç°¡åã«èªå·±çŽ¹ä» ã¯ãããŸããŠãBambooããšç«¹äžïŒ @shell_in_bamboo ïŒã§ãã 7æã«KINTOãã¯ãããžãŒãºã«å
¥ç€ŸããFukuoka Tech Labã®ç«ã¡äžããšæè¡åºå ±ã°ã«ãŒãã®ãããŒãžã£ãŒãå
Œä»»ããŠããŸãã æ°åã§12幎ã»ã©ç¬ç«ç³»ã®SIerã§ãšã³ãžãã¢ãPMãçµéšããåè·ã§ã¯çŠå²¡ã®éèæ©é¢ã®å
補éçºçµç¹ã§ã¹ã¯ã©ã ãã¹ã¿ãŒããã£ãŠããŸãããã¹ã¯ã©ã ãã¹ã¿ãŒã£ãŠãªã«ããã®ïŒãšããèãããã®ã§ããããçµç¹ãããŒã ã®ããšãèããŠã人ããšæè¿ã§ã¯çããŠãŸãããããŸããããããããŒã§ãããç¬ ãã€ã³ããã§ã³ãž ããŠããããªç§ãKINTOãã¯ãããžãŒãºã«å
¥ç€ŸããŠæè¡åºå ±ãæ
ãããšã«ãªã£ãã®ã§ããããããŸã§ã¯çºä¿¡ããããšã«ç©æ¥µçã§ã¯ãããŸããã§ããã ã¡ãã£ãšåãŸã§ã®èãæ¹ èªå·±ç޹ä»ã§æžãããšãããåè·ãŸã§ã¯çµç¹ãããŒã ã®ããšãèããŠåããŠããã®ã§ãå€ã«çºä¿¡ããŠãäœè£ãªããŠãªãïŒããšããæãã§ãããã€ãã³ããã»ãããŒã§æ
å ±ãä»å
¥ããããšã¯ãã£ãŠããèªåããæ
å ±çºä¿¡ã¯ã»ãšãã©è¡ã£ãŠããŸããã§ããã ãããã圹å²ããã£ãŠãã人ãããããåããŠãã人ããããã ãããªïœããã°ãïœããããšãïœãšããèãæ¹ã§ããã èãæ¹ãããã£ãã¿ã€ãã³ã° ããïŒ ã»ã»ã»ãšããã¿ã€ãã³ã°ã¯ãªãã£ãã§ããã©ã¡ãããšãããšãæè¡åºå ±ã£ãŠäœã ããïŒã©ãããã¹ãã ããïŒãšèª¿ã¹ããèããäžã§åŸã
ã«å€ãã£ãŠãã£ãæèŠã§ãã ãããããšã³ãžãã¢æä»£ã®çµéšããã¹ã¯ã©ã ãã¹ã¿ãŒãšããŠã®èãæ¹ããçºä¿¡ããããšãã«ç¢ºãã«ã€ãªãã£ãæèŠããããŸãã ã§ãã©ãå€ãã£ãã®ïŒ ãééã£ãŠãïŒçºä¿¡ã¯ãããããããã®ã§ããªããããã人ããããã®ã§ããªããèªåãå«ãã¿ããªããã£ãæ¹ãããïŒã ã§ãã æèŠããã§ãããäžæ°ã«é¢è±è
ãå¢ãããã§ãïŒæè¡åºå ±ãšããŠãã¥ãŒæ°ãæèããç§åãïŒã ãªãããæã£ãã®ãïŒ 1ã€ç®ã¯ããšã³ãžãã¢æä»£ã«ããããã®æè¡èšäºãããã°ã«å©ããããçµéšãæãåºããããã§ãã äœãæè¡ãããããªãæ°äººæä»£ãããçšåºŠéçºãã§ããããã«ãªã£ãŠãããšããPMãšããŠãããžã§ã¯ãã管çããŠãããšãã»ã»ã»ã©ããªãšãã§ãæ€çŽ¢ããŠåºãŠããå
éãåå£«ã®æ
å ±ã«æãããŠããŸãããããã¯ããçºä¿¡ããŠãããã人ãããªããã°åŸãããªããã®ã§ããã ããã«ãé¢ããããç§èªèº«ã¯çºä¿¡ãã»ãšãã©ãããæ©ãè¿ãããšãã§ããŠããªãã£ãããã§ãã 2ã€ç®ã¯ãã¹ã¯ã©ã ãã¹ã¿ãŒãšããŠèªåãã¢ãžã£ã€ã«ãªè¡åãã§ããŠããªãããšã«æ°ã¥ããããã§ãã ç°¡æœã«èšããšãæ©ããªãªãŒã¹ããŠæ©ãæ€èšŒããããšããèãæ¹ãããã®ã§ãããç§ã¯ãæ©ããã©ããããªãªãŒã¹èªäœãããŠããªãã£ãããã§ããèªåã§è¯ããšæã£ããã®ããéã«è¯ããªããšé¿ããŠããã®ããå€ã«åºããŠã¿ãªããšæ£ããã®ãã©ããããããŸããã ç§ãç¬ããããã§ä¿¡ãããã®ãããŒã ãçµç¹ã®èª°ãåãå
¥ããã§ãããããééã£ãŠããŠãã倱æããŠããçºä¿¡ãããŠããã£ãŒãããã¯ããããã¹ãã ã£ãã®ã§ãã Learning in Public ãã®ããã°ãæžãã«ããã調ã¹ãŠãããšã"Learning in Public" ãšããèšèãæµ·å€ã«ã¯ããããšãç¥ããŸããã èªåã®åŠã³ã®éäžçµéãå
¬éããªããæé·ããŠããå§¿å¢ã»æåã®ããšãèšããããã§ãã Learning in Publicã®å¹æãšããŠã¯ã以äžã®ãããªãã®ãæããããŠããŸãã åŠã³ã®å®çãå§åçã«æ©ããªãã 人ã«äŒãããæããããšã¯çè§£ãããæ·±ããããšã«ã€ãªãããŸãã説æããåãã€ããŸããã åãããšã§æ©ã誰ãã®å©ãã«ãªãã 倱æã¯æªãããšã§ã¯ãããŸããã誰ãã倱æãã·ã§ã¢ããããšã§åãèœãèžãå士ãæããŸãããšã³ãžãã¢ãªã³ã°ã®çŸå Žã§ã¯ãèªåã®ç°å¢ã ãã§èµ·ããŠããããã§ã¯ãªãããšããæ
å ±ã¯éèŠãªãã³ãã«ããªãåŸãŸãã ãã£ãŒãããã¯ãããããã ãèªåã¯æªçã ããããšçºä¿¡ãæžæããŸããããããã©ãæªçã ããããçºä¿¡ãããŠãã£ãŒãããã¯ãåŸãŠæé·ãããã£ã³ã¹ãæŽãããšååãã«ãšãããããšãã§ããŸãã ä»ã«ããããŸãããããã€ãããã¯ã¢ããããŸããããã®èãæ¹ã¯ããŸãã«ç§ãæè¡åºå ±ãšããŠä»èãã«è³ã£ããã®ã§ããã ã¢ã¯ã·ã§ã³ãã©ã³ æ Œå¥œã€ããããšããŠãããªèŠåºãä»ãããAIæåºãŸããããå®å¿ããŠãã ããã(æã§)æžããŠãŸãããç¬ ããŠããŠãã©ãã ããã€ã³ããå€ãã£ãŠããå
·äœçãªè¡åã«ç§»ãã®ã¯é£ãããã®ã§ããããããç§ãããã®æçš¿ãä»ã®äŒç€Ÿã«å
¥ã£ãŠåæçš¿ã§ããäžåžã«ã¯ç§å¯ã§ãããïŒãã¬ãŠãïŒ ããã€ã ã£ããããã°æžããããªïŒïŒã ãä»äºãèœã¡çããããªãšãã«ã€ãã³ãç»å£ãããããªã»ã»ã»ã ãããªæãã§ææãèŠèšãã£ãŠããŠã¯ãã€ãŸã§çµã£ãŠãå
ã«é²ããŸãããç®ã®åã®ä»äºãå²ã蟌ã¿ã®äŸé Œãªã©ãªã©ã¯ããªããªãéåããããšã¯ãªãã§ãããã(ÂŽã»Ïã»ïœ) ã§ã¯ãã©ãããã°ãããã§ãããã çºä¿¡ããæ¥ãå¢ãã§é©åœã«æ±ºãã å¢ãïŒé©åœïŒãããªããšã§ããã®ãïŒ ãšãæãããã§ããããïŒ ãããã§ãã ãããªçé¢ç®ãªããªãã¯ããã£ãšæ±ºããæéãŸã§ã«å®æãããã§ããããç¬ å®ã¯ããã¯ãä»äºã®éã¯ã宿ã®ããã«äžããããæéãå
šãŠæºãããŸã§èšåŒµããããšããããŒãã³ãœã³ã®ç¬¬äžæ³åãšãããã®ãéæã«åã£ãŠããŸãã æéãå
ã«æ±ºããããšã§ã人ã¯ãã®æéã«åãã£ãŠé 匵ãããã§ããããããžã§ã¯ãã§å
ã«ãªãªãŒã¹æ¥ã決ããã®ããããªå¹æããã£ããããŸãã æ¥ä»ã¯ãèªåã®äžã ãã§æ±ºããã®ã§ã¯ãªããããçšåºŠåŒ·å¶åãæãããæ¹ã广çã§ããã¢ãã«ã¬ãã€ãã³ãã«ç»é²ããŠããŸãã®ããããããããšæããŸãã ã§ãããã©ããã¯ããŠããããŸããèšå¿µãã¹ãçºä¿¡ã®æ¥ã決ããŠã¿ãŠãã ããïŒ çºä¿¡ããããŒã¹ã決ãã 2ã€ãã®æ¹æ³ã¯ãããŒã¹ã決ããããšã§ãã ããŒã¹ãç¶æããããšã§äººã¯ããã«æ
£ããŠããŸãã äœè«ã§ãããã¹ã¯ã©ã ã®ã¹ããªã³ãããäžå®ã®ããŒã¹ãä¿ã€ããšãæšå¥š ^1 ãããŠããŸãã 1ã¶æã«1æ¬ããã°æžãïŒ ãšãã ãšãæåã«ãªã£ããææ«ã«ãªã£ããããŒã¹ãçãã®ã§ãæ¥åäœãããã§åºå®åããã»ããããããªãšæããŸãã ãããã« ãããŸã§ãä»ãåãããã ãããããšãããããŸããã ãããªããšãæžããŠãããªããããŸã ãŸã çäžç²Ÿãªé¢ã¯ãããŸãããåå«ãªæ°æã¡ãæ®ã£ãŠã¯ããŸãã ããã©ããã£ããã ããèªåãã¢ããããŒãããããšååããªæ°æã¡ã®æ¹ã倧ããã§ããäœããããå°ãã§ãäžã®äžã«éå
ã§ããããã«ãªãããå¬ãããšããã¯ã¯ã¯ã¯æããããŸãã æ¬¡ã®èšäºã1幎åŸãšãã«ãªããªãããã«é 匵ããŸããç¬ ã§ã¯ã§ã¯ïœ
ãã®èšäºã¯ KINTOãã¯ãããžãŒãºã¢ããã³ãã«ã¬ã³ããŒ2025 ã®21æ¥ç®ã®èšäºã§ãð
ð ç®æ¬¡ 1. ã¡ãªãŒã¯ãªã¹ãã¹ïŒ2025幎ã®AIæŽ»çšæšé²ãæ¯ãè¿ã£ãŠ 2. å人掻çšã®æåãšçµç¹æŽ»çšã®èª²é¡ ã 2-1. åäººæŽ»çšæ®åç8å²ã®éæ ã 2-2. çµç¹çãªæŽ»çšãšã¯ ã 2-3. æ¥çå
šäœã®èª²é¡ 3. ã€ãããŒã·ã§ã³ã®äºã€ã®æœ®æµ ã 3-1. AIãã€ãã£ããšAIããªãã³ ã 3-2. ã€ãŸããã®4ã€ã®ãã¿ãŒã³ 4. GenAIãã©ããã¯ã¹ã®æ§é ã 4-1. å¹çåäžãšåçã®ä¹é¢ ã 4-2. å±äººæ§ãšããèª²é¡ ã 4-3. èŠç¹ã®è»¢æ 5. æ¬è³ªçãªåãã®ç«ãŠçŽã ã 5-1. æ±çšAIããŒã«ã®ç¹æ§ ã 5-2. æè¡å°å
¥åã®èª²é¡æŽç ã 5-3. åçŸæ§ãé«ãæ¢åãã¬ãŒã ã¯ãŒã¯ã®æŽ»çš ã 5-4. 人éäžå¿ã®ã·ã¹ãã æèã®æŽ»çš ã 5-5. ã€ãŸããã®4ã€ã®ãã¿ãŒã³ã®æ£äœ ã 5-6. åé¡çºæã«æçã ã£ãããš 6. å®è·µçãªè§£æ±ºã¢ãããŒã ã 6-1. äžé·æãšçæã®äž¡ç« 7. ãããã«ïŒæ¬è³ªçãªäŸ¡å€åµé ãž ã¡ãªãŒã¯ãªã¹ãã¹ïŒ2025幎ã®AIæŽ»çšæšé²ãæ¯ãè¿ã£ãŠ ããã«ã¡ã¯ïŒAI Firstã°ã«ãŒãã§AIæŽ»çšæšé²ãæ
åœããŠããShioriïŒ @shor_t8q ïŒã§ããäŒæ¥ã®DXæ
åœè
ãAIæšé²ãªãŒããŒããããŠãå人ã§ã®AI掻çšã¯é²ãã§ããã®ã«ãäºæ¥ãåçã«é¢ããŠæåŸ
ãã广ãåºãŠããªãããšãã課é¡ãæããŠãããã¹ãŠã®æ¹ãžããçµç¹ã®AI掻çšããšæ¥åå€é©ã®ãã³ãããäŒãã§ããã°ãšæããŸãã å人掻çšã®æåãšçµç¹æŽ»çšã®èª²é¡ åäººæŽ»çšæ®åç8å²ã®éæ 2025幎ãç§ãã¡ã¯ãå人ã®AI掻çšããšãçµç¹ã®AI掻çšããšãã䞡茪ã§AI掻çšãæšé²ããŠããŸããã ãŸã瀟å
ã®çŸç¶ãå
±æããŸãã瀟å
AIããŒã«ã®ããŒã¿ãããåŸæ¥å¡ã®AI掻çšçã¯å€ã®æç¹ã§çŽ8å²ã«éããŸãããå€ãã®ç€Ÿå¡ãAIãã£ããããŒã«ãAIã³ãŒãã£ã³ã°ããŒã«ãæ¥åžžçã«æŽ»çšããåäººã®æ¥åå¹çåäžãå®çŸããããšãã§ããŸããã ããããããã§ããæ°ã¥ãããããŸããã ãå人ã®å¹çã¯åäžããŠãããã®ã®ãçµç¹ãšããŠã®ææãèŠãã«ããã®ã§ã¯ïŒã ããã§ãçµç¹çãªAIæŽ»çšæšé²ãããã«åŒ·åããããšã«ããŸãããå®éã«åãçµã¿ãé²ããäžã§åãã£ãã®ã¯ããçµç¹çãªæŽ»çšãã¯ãå人çãªæŽ»çšããšã¯ç°ãªãæ§è³ªãæã¡ãç°ãªãã¢ãããŒããå¿
èŠã ãšããããšã§ãã çµç¹çãªæŽ»çšãšã¯ çµç¹çãªæŽ»çšãšã¯ã©ã®ãããªç¶æ
ãæãã®ã§ãããããç§ãã¡ã¯ããå®çŸ©ããŸããã çµç¹çãªAIæŽ»çš ïŒKINTOãã¯ãããžãŒãºç€Ÿå
è³æããïŒ è€æ°ã°ã«ãŒããéšéãªã©ã飿ºããçµç¹æšªæãããžã§ã¯ãã§ãæ¥åã»éçºããã»ã¹ã»ã·ã¹ãã ã«AIãå°å
¥ããäºæ¥ãåçã«å¯ŸããŠäœããã®ã€ã³ãã¯ããäžããããšã ãã®å®çŸ©ã«ç
§ããåããããšãããçµç¹çãªæŽ»çšããæ³å®ä»¥äžã«é²ãŸãªãããšããçŸå®ã«çŽé¢ããŸããã æ¥çå
šäœã®èª²é¡ 瀟å€ã®ååã調ã¹ãŠã¿ããšãMcKinseyã® Seizing the agentic AI advantage ã«è峿·±ãããŒã¿ãæ²èŒãããŠããŸããã ç¹å®ã®ããžãã¹æ©èœãããã»ã¹ã«çµã¿èŸŒãŸããåçŽçãªæŽ»çšäºäŸã®èª²é¡ ïŒMcKinseyã¬ããŒãããïŒ By contrast, vertical use casesâthose embedded into specific business functions and processesâhave seen limited scaling in most companies despite their higher potential for direct economic impact (Exhibit 2). Fewer than 10 percent of use cases deployed ever make it past the pilot stage, according to McKinsey research. ã察ç
§çã«ãç¹å®ã®ããžãã¹æ©èœãããã»ã¹ã«çµã¿èŸŒãŸããåçŽçãªæŽ»çšäºäŸã¯ãçŽæ¥çãªçµæžå¹æãããé«ãå¯èœæ§ãããã«ãããããããã»ãšãã©ã®äŒæ¥ã§ã¯éå®çãªã¹ã±ãŒãªã³ã°ããèŠãããŠããŸããããããã³ãŒãŒã®èª¿æ»ã«ãããšãå±éãããæŽ»çšäºäŸã®ãã¡ããã€ãããæ®µéãè¶
ãããã®ã¯10%æªæºã§ãã åºå
ž: McKinsey "Seizing the agentic AI advantage" ã€ãŸããç¹å®ã®ããžãã¹æ©èœãããã»ã¹ã«çµã¿èŸŒãŸããåçŽçãªé åã§AIãæŽ»çšããããšããŠããäŒæ¥ã®çŽ9å²ãããã€ãããæ®µéïŒè©ŠéšéçšïŒãè¶
ããããšãã§ãããå®èšŒå®éšã®æ®µéã§çµãã£ãŠããç¶æ³ã§ãã ããã¯ããã€ãããã»ããŒã¬ããªãŒïŒå®èšŒå®éšã®ç
çïŒããšåŒã°ããçŸè±¡ã§ãåŒç€Ÿã ãã®åé¡ã§ã¯ãªãæ¥çå
šäœã®åŸåã ã£ãã®ã§ãã æ¥çå
šäœã§ãçµç¹çãªAI掻çšã¯å®¹æã§ã¯ãªãããšãã課é¡ãå ±åãããŠããç¶æ³ã§ããç§ãã¡ã¯ããã®èª²é¡ã«åãåãããããŸãã¯ç€Ÿå
ã®çŸç¶ãåæããããšããå§ããŸããã ã€ãããŒã·ã§ã³ã®äºã€ã®æœ®æµ AIãã€ãã£ããšAIããªã㳠瀟å
ã®åãçµã¿ã俯ç°ããŠã¿ããšãã倧ããåããŠ2çš®é¡ã®ã€ãããŒã·ã§ã³ã©ã€ã³ãããããšãåãããŸããã AIãã€ãã£ãïŒAI NativeïŒ AIãããããšãåæãšããŠããŒããããããã¯ããäœéšãèšèšãããŠãããã® ä»çµã¿ã®äžã«èªç¶ã«AIãçµã¿èŸŒãŸããŠãã AIããªãã³ïŒAI DrivenïŒ æ¢åã®ã·ã¹ãã ããããã¯ãã«ãåŸããAIãçµã¿èŸŒãã§ãããã® æ¢åæ¥åãæ¢åã·ã¹ãã ã®äžéšãAIã§ä»£æ¿ã»çœ®æããåãçµã¿ ããã§æããã«ãªã£ãã®ã¯ããAIãã€ãã£ããªåãçµã¿ã¯æ¯èŒçé²ãã§ããããAIããªãã³ã¯é£èªããŠããããšããåŸåã§ããã AIãã€ãã£ããªé åã§ã¯ã瀟å
ã®ã¢ãŒãªãŒã¢ããã¿ãŒãã¡ãçžäºã«ããã ã¢ããã§é£æºããæ°ãã䟡å€ãçã¿åºããŠãããã¯ããã·ã¹ãã ãããŒã³ãããããšãå®çŸããŠããŸããäžæ¹ãAIããªãã³ââã€ãŸãæ¢åæ¥åãæ¢åã·ã¹ãã ã®çœ®ãæãââã¯ãé¢ä¿è
ãå€ãæ±ããŠããåé¡ãè€éã§é²ããããšãé£ããçŸç¶ããããŸãã ã€ãŸããã®4ã€ã®ãã¿ãŒã³ 瀟å
ã®ç¶æ³ãæŽçããŠãããšãAI掻çšã§é²æãæ»ã£ãŠããã±ãŒã¹ã¯ããããã4ã€ã®ãã¿ãŒã³ã«åé¡ã§ããããšãèŠããŠããŸããã 1. æè¡å
è¡åïŒTech FirstïŒ ãæ°ããæè¡ãç»å Žããã®ã§ããŸãæ€èšŒããŠãããã¿ã€ããäœæããããšããã±ãŒã¹ãæè¡åã®ãããšã³ãžãã¢ãéããã«äœæã§ããã®ã§ããããã®åŸã§ããã®ãããã¿ã€ããã©ãã§æŽ»çšãã¹ããããšã解決ãã¹ã課é¡ãåŸããæ¢ãããšã«ãªããŸãã 2. ãã¬ã³ãå
è¡åïŒTrend FirstïŒ ãAIãšãŒãžã§ã³ãã䜿ã£ãŠãããå®çŸãããããšããã±ãŒã¹ãææ®µïŒAIãã¬ã³ãïŒãç®çåããŠããŸãã誰ã®ã©ã®ãããªèª²é¡ã解決ããã®ããæç¢ºã«ãªã£ãŠããŸããã 3. ç®çäžæçåïŒLost in PossibilityïŒ ãAIã䜿ã£ãŠãããå®çŸãããããã ãäœãããã°ããã®ãåãããªãããææ¬²ã¯ãããã®ã®ãå
¥å£ã§ç«ã¡æ¢ãŸã£ãŠããŸã£ãŠããã±ãŒã¹ã§ãã 4. åªå
åºŠå€æå°é£åïŒPriority ParalysisïŒ ãAIãå°å
¥ããŠè§£æ±ºããã課é¡ã¯ãããä»ã®æè¡ã§ããã°ããŸããŸãªç®æã«é©çšã§ãããã ããã ãäœããæãã€ããã°ãããè¿·ãããé©çšãã¹ãç®æã®ç®å©ãã¯ã§ããŠããããã©ãããçæãã¹ãã倿ã§ãããå¯èœæ§ïŒé©çšç¯å²ã®å¹
ãæ·±ãïŒã®äžã§æ¹åæ§ãèŠãã ããªããã¿ãŒã³ã§ãã ããã«ãããããšã¯å¥ã®è»žã§ããAIç°å¢æŽåã®èª²é¡ããååšããŸããããAIãæŽ»çšãããããæ¹éã»ã«ãŒã«ã®æŽåãAIã«æé©åãããŠããªãã®ã§æææ±ºå®ãã§ããªããããå©çšãããããŒã¿ãéçŽãããŠããªãããšãã£ããã¬ããã³ã¹ãã€ã³ãã©ããªãœãŒã¹ã®åé¡ã§é²æãæ»ãã±ãŒã¹ã§ãã â»ãAIç°å¢æŽåã®èª²é¡ãã¯ç¯å²ãåºãã®ã§ãä»åã®èšäºã§ã¯ãã®ããŒãã«ã¯èšåããŸããã äžèšãã¿ãŒã³ã¯ãåã
解決ããªããã°ãããžã§ã¯ãã¯åã«é²ã¿ãŸãããç§ã¯ãçµç¹ãšããŠãAIãããžã§ã¯ãã®æšé²ã¢ãã«ããæ§ç¯ããå¿
èŠæ§ãæããŸããã GenAIãã©ããã¯ã¹ã®æ§é å¹çåäžãšåçã®ä¹é¢ ãã®1幎ãçŸå Žã®ç¶æ³ã確èªããäžã§ GenAIãã©ããã¯ã¹ ãšåŒã°ããçŸè±¡ã宿ããŠããŸãããããã¯ããAIã«ãã£ãŠåäººã®æ¥åå¹çã¯ç¢ºå®ã«åäžããŠããã®ã«ãçµç¹ãšããŠã®åçãææã«ã¯å¿
ãããçŽçµããŠããªãããšããç¶æ³ã§ãã ãGenAIãã©ããã¯ã¹ãã«ã€ããŠãMcKinseyã® Seizing the agentic AI advantage ã§ã¯ã以äžã®ããã«å®çŸ©ãããŠããŸãã GenAIãã©ããã¯ã¹ãšã¯ïŒ ïŒMcKinseyã¬ããŒãããïŒ ã10瀟äž8瀟è¿ããGenAIãäœããã®åœ¢ã§å°å
¥ããŠããŸãããã»ãŒåãå²åã®äŒæ¥ãåçã«å€§ããªåœ±é¿ã¯ãªããšå ±åããŠããŸããç§ãã¡ã¯ããããGenAIãã©ããã¯ã¹ããšåŒãã§ããŸããã "Nearly eight in ten companies have deployed gen AI in some form, but roughly the same percentage report no material impact on earnings. We call this the 'gen AI paradox.'" åºå
ž: McKinsey "Seizing the agentic AI advantage" ãªãããã®ãã©ããã¯ã¹ãçºçããã®ã§ãããããåŒç€Ÿã®åæãããããã€ãã®èŠå ãæµ®ã圫ãã«ãªããŸããã åãçµã¿ã®æçå : åå¥ã®æ€èšŒãåçºã®åãçµã¿ã«ãªã£ãŠãããäœç³»çã«ç¹ãã£ãŠããªã ããªããªãŒã¢ãã«ã®æªå®çŸ© : ãã©ã®ããã«äŸ¡å€ãå±ãããããšããåã確ç«ãããŠããªã ã¬ããã³ã¹ãšæŽåäžè¶³ : AIãåãå
¥ããããã®åºç€ïŒã«ãŒã«ãã€ã³ãã©ãããŒã¿ãããã»ã¹ïŒãæŽã£ãŠããªã McKinseyã® Seizing the agentic AI advantage ã§ããåæ§ã®å
容ãèšåãããŠããŸãã å±äººæ§ãšããèª²é¡ ããã«æ ¹æ¬çãªåé¡ãšããŠã æ¥åã®èšèªåäžè¶³ ããããŸãã çŸåšã®AIæè¡ãäŸãã°AIãšãŒãžã§ã³ããæ¥åã¯ãŒã¯ãããŒã«çµã¿èŸŒãããšãããšããã®ã¯ãŒã¯ãããŒèªäœãæç¢ºã«å®çŸ©ãããèšèªåãããŠããå¿
èŠããããŸããããããå€ãã®çŸå Žã§ã¯ãããã¯Aããã®å€æã§ããããã¯Bããã®çµéšåã§ããšãã£ãã人éã®å€æïŒå±äººæ§ïŒã§éçšãããŠããéšåãéåžžã«å€ãã®ã§ãã ãAIãå°å
¥ãããããšèããŠããAIã¯ãæé»ç¥ããçè§£ããããšãã§ãããå±äººçã«ãªã£ãŠããé åã«ã¯ããã®ãŸãŸã§ã¯AIãé©çšã§ããŸããã ãŸãæ¥åãæŽçããå®çŸ©ãçŽãå¿
èŠããããŸããããã«è³ãçµç¹çèªç¥ãå
·äœçãªã¢ã¯ã·ã§ã³ãã©ã³ãã¹ããŒã¯ãã«ããŒã§åæåœ¢æããçå®ã«é²ããŠãããªããã°ãããªããšããããšããAI掻çšã®å€§ããªããŒãã«ãšãªã£ãŠããã®ã§ãã èŠç¹ã®è»¢æ ããã§ãç§ã¯ ãAIãå°å
¥ãããããšãã£ãŠãã€ãããŒã·ã§ã³ãå éããããã§ã¯ãªããã€ãããŒã·ã§ã³ãå éãããããã«ãAIãæŽ»çšããã®ã ããšããèŠç¹ã®è»¢æãå¿
èŠãªã®ã ãšèããããã«ãªããŸããã æ¬è³ªçãªåãã®ç«ãŠçŽã æ±çšAIããŒã«ã®ç¹æ§ ChatGPTãGeminiãClaudeã®ãããªããããããæ±çšçãªAIãã£ãããã¯éåžžã«é«æ§èœã§ããçžè«ããã°ãéããã«è³ªã®é«ã解決çãæç€ºããŠãããŸãã ããããããã«æ³šæãã¹ãç¹ããããŸããAIã¯ãç§ãã¡ãæãããã質åã«ã¯çããŠãããŸããããããã©ã«ãã®ãã£ãããŠã£ã³ããŠã§ã¯ãç§ãã¡ãæ±ããåé¡ã®æ·±æããŸã§ã¯è¡ããªããã®ã§ãã ãã ããããã¯æ±çšAIãã£ãããããã©ã«ãèšå®ã®ãŸãŸã§äœ¿çšããå Žåã§ããæ·±æãæ©èœãæã€AIãšãŒãžã§ã³ããæ§ç¯ãããã®AIãšå¯Ÿè©±ããããšã§ãåé¡ãæ¢çŽ¢ãã質åãåŒãåºãã課é¡ãæŽçã§ããããšã¯æ¢ã«å®èšŒæžã¿ã§ãã ãŠãŒã¶ãŒãããããäœãããããšäŒãããšããAIã¯çŽ çŽã«äœææ¹æ³ãææ¡ããŸãããããæ¬æ¥ã¯ãããªããããäœãããã®ã§ããïŒãããã£ãšæ¬è³ªçãªèª²é¡ã¯å¥ã«ãããŸãããïŒããšãã£ããã³ã³ãµã«ã¿ã³ãã®ãããªæ·±æããããå¿
èŠãªå Žé¢ãå€ã
ãããŸãã æè¡å°å
¥åã®èª²é¡æŽç ãã§ããã»ã§ããªããã§ã¯ãªãã誰ã«ã»ã©ã®ãããªäŸ¡å€ãã äŸãã°ãã瀟å
ã®ãåãåããã®å¯Ÿå¿ã倧å€ãªã®ã§ããåãåãããAIã§å¯Ÿå¿ã§ããããã«ãããããšããçžè«ãçŸå Žããå¯ãããããšããŸããããã«å¯ŸããŠãããã«ãRAGïŒæ€çŽ¢æ¡åŒµçæïŒã䜿ã£ãŠç€Ÿå
Wikiãèªã¿èŸŒãŸãããã£ããããããæ§ç¯ããŸãããããšææ¡ããã®ã¯å®¹æã§ããããããããã§ã¯æ¬è³ªçãªè§£æ±ºã«ãªããªãããšããããŸãã ããã§ç§ãã¡ã¯åãçŽãå¿
èŠããããŸãã ãããããããªããåãåãããçºçããã®ãïŒã ãããã¥ã¢ã«ã忣ããŠããŠç¥ãããæ
å ±ã«ã¢ã¯ã»ã¹ã§ããªãããšãåå ã§ã¯ãªãã®ãïŒã ããããã¯ãããã«ã€ããŠããã¥ã¢ã«ã¯ããããåŸæ¥å¡ã倿ãã«ããå
容ã«ãªã£ãŠããããšãåå ã§ã¯ãªããïŒã ããåŸè
ã§ããã°ãAIã«åçãããåã«ãããã¥ã¢ã«ã®å
å®¹ãæŽæ°ããã®ãé©åãããããŸãããããã¥ã¢ã«ç²ŸåºŠãé«ããªããšãAIããã«ã·ããŒã·ã§ã³ïŒèª€ã£ãæ
å ±ïŒãçæãããªã¹ã¯ãé«ãŸããŸãã åçŸæ§ãé«ãæ¢åãã¬ãŒã ã¯ãŒã¯ã®æŽ»çš ãåé¡ã®ç¹å®ããã課é¡å®çŸ©ããšãåæåœ¢æããé²ããäžã§ãç§ãã¡ãAIãããžã§ã¯ãã«ãããèª²é¡æŽçã§æ¡çšããã¢ãããŒãã¯ãããã¶ã€ã³æèãããã·ã¹ãã æèããªã©ã®äžã®äžã§æ¢åã®èª²é¡è§£æ±ºãã¬ãŒã ã¯ãŒã¯ã§ãã ãã¶ã€ã³æè ïŒDesign ThinkingïŒã¯ããŠãŒã¶ãŒãžã®å
±æãããŒã¹ã«ãã人éäžå¿ã¢ãããŒãã§ãããŠãŒã¶ãŒããŒãºãæ·±ãçè§£ããå埩çãªãããã¿ã€ãã³ã°ãéããŠåµé çãªè§£æ±ºçãçã¿åºããŸãã äžæ¹ã ã·ã¹ãã æè ïŒSystems ThinkingïŒã¯ãèŠçŽ éã®çžäºé¢ä¿ãšå
šäœæé©ãéèŠããè€éãªçµç¹ã·ã¹ãã ã®æ ¹æ¬åå ãç¹å®ããŸãã ãã¶ã€ã³æèãšã·ã¹ãã æèãçµã¿åãããããšã§ãåã
ã®ã¹ããŒã¯ãã«ããŒã®èª²é¡ïŒãã¶ã€ã³æèïŒãšãããããçããŠããæ¥åãçµç¹å
šäœã®æ§é çåé¡ïŒã·ã¹ãã æèïŒã®äž¡æ¹ã«ç®ãåããããŸãããã®èåã¯ãé¢ä¿è
ã®èªèãåãããããã®æå¹ãªææ³ãšæãåŸããšãã仮説ãæã¡ãŸããã 人éäžå¿ã®ã·ã¹ãã æèã®æŽ»çš ç§ãã¡ã¯è€æ°ã®ãããžã§ã¯ãã«ãããŠã ãã¶ã€ã³æè ãš ã·ã¹ãã æè ãçµã¿åãããã人éäžå¿ã®ã·ã¹ãã æèããšããã¢ãããŒããå°å
¥ããŸãããããã¯ããŠãŒã¶ãŒãžã®å
±æãããŒã¹ã«é¢ä¿è
ãšä¿¡é Œé¢ä¿ãç¯ããªããé²ããåµé çãªããã»ã¹ãšã·ã¹ãã å
šäœã俯ç°ããå顿§é ãææ¡ããåæçãªèŠç¹ãèåããããã®ã§ãã ãã®ã¢ãããŒãã«ããã以äžã®ããšãå¯èœã«ãªããŸãïŒ èŠç¹ã®åãæ¿ã : ã·ã¹ãã å
šäœãšåã
ã®ã¹ããŒã¯ãã«ããŒãäž¡æ¹ã®èŠç¹ãè¡ãæ¥ã§ãã å
±æã®éžæ : 人ã
ã®èª²é¡ã ãã§ãªããã·ã¹ãã èªäœãæ±ããæ§é çãªåé¡ã«ãç®ãåãããã è¡åå€å®¹ã®ä¿é² : æ ¹æ¬åå ãçè§£ããäžã§ã广çãªä»å
¥ãã€ã³ããèšèšã§ãã çµç¹ã«ãããAI掻çšã®èª²é¡ã¯ããŸãã«ã人éã·ã¹ãã ãã®åé¡ã§ããè€æ°ã®ã¹ããŒã¯ãã«ããŒã絡ã¿åãããããããç°ãªãããŒãºãå¶çŽãæ±ããŠããŸãã人éäžå¿ã®ã·ã¹ãã æèã¯ããã®è€éæ§ã«å¯ŸåŠããããã®æå¹ãªèª²é¡è§£æ±ºææ®µãšãªããŸããã ãã¶ã€ã³æè ãš ã·ã¹ãã æè ã®éããç¥ãããæ¹ã¯ã Systems Thinking vs Design Thinking, Whatâs the Difference? ã®èšäºãåèã«ãªããŸãã ã€ãŸããã®4ã€ã®ãã¿ãŒã³ã®æ£äœ 人éäžå¿ã®ã·ã¹ãã æèãçšãã課é¡è§£æ±ºã§ã¯ã以äžã®ã¹ãããã§é²ããããšã广çã§ãã ãŠãŒã¶ãŒã»ã¹ããŒã¯ãã«ããŒãžã®å
±æïŒEmpathize with StakeholdersïŒ : é¢ä¿è
ãžã®ãã¢ãªã³ã°ã芳å¯ãéããŠãçŸå Žã®ç¶æ³ãæ·±ãçè§£ãã åé¡ã®çºæïŒDiscover ProblemsïŒ : é¡åšåããŠããåé¡ã ãã§ãªãã察話ãéããŠæœåšçãªåé¡ãåŒãåºã ã·ã¹ãã æ§é ã®åæïŒAnalyze System StructureïŒ : ã·ã¹ãã æèãçšããŠãåé¡ã®çå ãèŠçŽ éã®é¢ä¿æ§ãç¹å®ãã 課é¡ã®å®çŸ©ïŒDefine IssuesïŒ : åãçµãã¹ã課é¡ãæŽçããåªå
é äœãã€ãã 解決çã®æ€èšïŒDesign SolutionsïŒ : 課é¡ã«å¯Ÿãã解決ã¢ãããŒããèšèšãã æè¡éžå®ïŒSelect TechnologyïŒ : AIãã€ã³ãã©ãããŒã«ãªã©æé©ãªæè¡ã¹ã¿ãã¯ãéžå®ãã ãããã¿ã€ãæ§ç¯ïŒBuild PrototypeïŒ : å°ããçŽ æ©ãåããã®ãäœããä»®èª¬ãæ€èšŒãã ååŸ©ãšæ¡å€§ïŒIterate & ScaleïŒ : ã¢ãžã£ã€ã«éçºããã»ã¹ã«åºã¥ãããã£ãŒãããã¯ãåãå
¥ããªããæ¹åã»æ¡åŒµãç¹°ãè¿ã ã€ãŸããã®4ã€ã®ãã¿ãŒã³ã¯ã6ïŒæè¡éžå®ïŒã7ïŒãããã¿ã€ãæ§ç¯ïŒããã¹ã¿ãŒãããŠè¡ãè©°ãŸãã1ïŒãŠãŒã¶ãŒã»ã¹ããŒã¯ãã«ããŒãžã®å
±æïŒ~5ïŒè§£æ±ºçã®æ€èšïŒãèãå§ãããšããããã»ã¹ã«ãªã£ãŠããããšãããããŸããã AIã«ãã£ãŠãããã¿ã€ããæ§ç¯ãããããªã£ãåé¢ãåŸæ¥ã®ãããã¯ãéçºã§å®çŸ©ããŠãã1ïŒãŠãŒã¶ãŒã»ã¹ããŒã¯ãã«ããŒãžã®å
±æïŒã5ïŒè§£æ±ºçã®æ€èšïŒãã¹ããããããåŸåãããããããã·ã¹ãã ã¯æ§ç¯ã§ãããã誰ãã®å
·äœçãªåé¡ã解決ããŠããããã§ã¯ãªãããšããç¶æ³ãèŠããŠããŸããã â»ç€Ÿå
ã§ã¯ã6ïŒæè¡éžå®ïŒã7ïŒãããã¿ã€ãæ§ç¯ïŒããã¹ã¿ãŒããã1ïŒãŠãŒã¶ãŒã»ã¹ããŒã¯ãã«ããŒãžã®å
±æïŒã5ïŒè§£æ±ºçã®æ€èšïŒãçµãŠãæåããŠããã±ãŒã¹ãè€æ°ããã®ã§ã6ïŒæè¡éžå®ïŒã7ïŒãããã¿ã€ãæ§ç¯ïŒããã¹ã¿ãŒããããããã¿ã€ãããªãã³ã®ã¢ãããŒããæå¹ã ãšå®èšŒãããŠããŸãããã®ããã6ïŒæè¡éžå®ïŒã7ïŒãããã¿ã€ãæ§ç¯ïŒããã¹ã¿ãŒãããããšããã¬ãã£ããªèŠçŽ ãšããããã§ã¯ãããŸããããããŸã§åŸåã®è©±ã§ãã ãããã6ïŒæè¡éžå®ïŒã7ïŒãããã¿ã€ãæ§ç¯ïŒããã¹ã¿ãŒãããããšã§ããæ¡çšããæè¡ãæ§ç¯ãããããã¿ã€ããæŽ»ããããããšããæœåšçãªãã€ã¢ã¹ãå
è¡ãã1ïŒãŠãŒã¶ãŒã»ã¹ããŒã¯ãã«ããŒãžã®å
±æïŒã5ïŒè§£æ±ºçã®æ€èšïŒã®ããã»ã¹ããåŸããäžç«çã«é²ããããšãé£ãããªãããšã«çæããå¿
èŠããããŸãã åé¡çºæã«æçã ã£ãããš ãã¬ãŒã ã¯ãŒã¯ãå°å
¥ãããããšãã£ãŠãããã«åé¡è§£æ±ºãã¹ã ãŒãºã«ãªãããã§ã¯ãããŸããããŸãã¯ãé¢ä¿è
ãšã·ã¹ãã å
šäœã®èª²é¡æŽçãè¡ãå¿
èŠããããŸãããæåã«ã¯ãŒã¯ã·ã§ãããè¡ããã¹ããŒã¯ãã«ããŒãæ±ããåé¡ãããžã¿ã«ãã¯ã€ãããŒãã§æŽçããããšè©Šã¿ãã®ã§ãããæ³å®ä»¥äžã«é£èªããŸããã åå ãåæãããšãé¢ä¿ããã¹ããŒã¯ãã«ããŒãå€ããåé¡ãåŒãèµ·ãããŠããèŠçŽ ãè€æ°ãããããªè€éæ§ãé«ãåé¡ã¯ãèšèªåã®ããŒãã«ãé«ãããããã¯ã€ãããŒãäžã«ç¶²çŸ
çã«åé¡ãæžãåºãããšãé£ãããšããããšãããããŸããã ããã§ããã¯ã€ãããŒã圢åŒã§ã¯ãªãã2on2ã1on2ã§ãã¢ãªã³ã°ã宿œãã察話ãéããŠæœåšèª²é¡ãŸã§çºæã§ãããããªã³ãã¥ãã±ãŒã·ã§ã³ã¢ãããŒããåããŸããã çµæãšããŠãã°ã«ãŒããéšçœ²ã暪æãããããªæ¥åæ¹é©ãè¡ããšãã¯ãæåã¯å¯Ÿè©±ãéããŠä¿¡é Œé¢ä¿ãç¯ãããšãéèŠã§ãããæ¬¡ã«å¯Ÿè©±ãéããŠåé¡çºæãè¡ããé¢ä¿è
ã®åé¡è§£å床ãäžãã£ãŠããæç¹ã§ãé©å®ã¯ãŒã¯ã·ã§ããã宿œããŠèª²é¡ãæŽçããããšã广çã ãšããããšãããããŸããã å®è·µçãªè§£æ±ºã¢ãããŒã äžé·æãšçæã®äž¡ç« ãšã¯ããããæ¥åãããŒã課é¡ãå
šãŠæŽçããŠããAIãå°å
¥ããŸãããããšèšã£ãŠãããããããžã§ã¯ãã®æšé²ãé
ããŠããŸããŸããããã§ç§ãã¡ã¯ããäžé·æããšãçæããåããŠã䞊è¡ããŠé²ããæŠç¥ãæšå¥šããŠããŸãã ã¢ãããŒã ç®ç ã¢ã¯ã·ã§ã³ äžé·æïŒSlowïŒ æ¬è³ªçãªèª²é¡è§£æ±ºãæ¹éçå® çµç¹å
šäœã®èª²é¡æŽçãã¯ãŒã¯ãããŒã®åå®çŸ©ãé¢ä¿è
ãšã®åæåœ¢æ çæïŒFastïŒ ã¹ããŒãæãçŸå Žã®æ¹å ç®ã®åã®æç¢ºãªèª²é¡ã«å¯ŸããŠãAIæè¡ãé©çšãããããã¿ã€ããäœæããæ¹åãç¹°ãè¿ã å
šäœã®æ¹éãçå®ãã€ã€ïŒäžé·æïŒãçŸå Žã§ã¯è¿
éã«æ¹åãåããŠããïŒçæïŒããã®äž¡è»žã§é²ããããšã§ãã¹ããŒãæãç¶æããªãããç¹ãšç¹ãç·ã«ç¹ããŠããããšãã§ããŸãã ãããã«ïŒæ¬è³ªçãªäŸ¡å€åµé ãž æåŸã«ã2025幎ã®1幎ã§åŸãæãéèŠãªåŠã³ãå
±æããŸãã ãAIãæŽ»çšããããšèªäœããç®çåããŠã¯ãããªããã ãAIã§äœãã§ãããããããããç§ãã¡ãæ¬åœã«è§£æ±ºãã¹ãåé¡ã¯äœãããããã解決ãããšãã誰ã«ã©ã®ãããªäŸ¡å€ãããã®ããââãã®åç¹ã«ç«ã¡è¿ãããšããããŠããã®äŸ¡å€ãæå€§åããããã«ãAI㮠人éã®èœåãæ¡åŒµããå ã åŠçé床ãåäžãããå ã æ°ãéãåºãå ãã©ã掻çšããããèããããšãéèŠã ãšæ°ã¥ããŸããã AIå°å
¥ã¯ãåãªãããŒã«ã®æŽ»çšã§ã¯ãããŸãããããã¯ãç§ãã¡ãèªåãã¡ã®ä»äºã®ããæ¹ãã²ããŠã¯ æ¬è³ªçãªäŸ¡å€ ãèŠã€ãçŽãéçšã§ããããŸããçµç¹çAI掻çšã®ããŒãã«ããèªåãã¡ã®æ¥åã®æªå®çŸ©ããããç®çã®ææ§ããããåé¡ã®çå ãèŠæ¥µããåãã«ãããšèªèã§ããã°ãä¹ãè¶ããæ¹æ³ã¯å¿
ãèŠã€ãããŸããç¹ã«AI掻çšã®åé¡ã¯æè¡ã§ã¯ãªããæ¥åã人ãšçµç¹ããã€ã³ããä»çµã¿ãã«ãŒã«ã«ããã±ãŒã¹ãã»ãšãã©ã§ãã ä»åã®èå¯ããåã課é¡ã«åãçµãçæ§ã®åèã«ãªãã°å¹žãã§ãã 2025å¹Žã¯æè¡é©æ°ã®æ¿åã®äžãçæ§å€§å€ãç²ãæ§ã§ããïŒ 2026幎ãããã«æªç¥ãªæè¡ãæŠå¿µãçŸãããããããŸããããå
±ã«é 匵ããŸãããïŒ Made with Driveâ¥ïž
ãã®èšäºã¯ KINTOãã¯ãããžãŒãºã¢ããã³ãã«ã¬ã³ããŒ2025 ã®21æ¥ç®ã®èšäºã§ãð
ð KINTOãã¯ãããžãŒãºã§ my route for iOS ãéçºããŠããRyommã§ãã æè¿ãmy routeã¢ããªå
ã«TipKitãå°å
¥ããŸããããã®éTipKitã§å€éšããè¡šç€ºç¶æ
ãã³ã³ãããŒã«ããæ¹æ³ãå°ãçããã£ãã®ã§ã玹ä»ããŸãã å®éã®TipKit䜿çšç®æ èæ¯ TipKitãšã¯ãiOS17以éã§äœ¿ããããã«ãªã£ããã¢ããªã®æ©èœãèŠã€ããã®ã«åœ¹ç«ã€ãã³ããåºãããã®ãã¬ãŒã ã¯ãŒã¯ã§ãã https://developer.apple.com/documentation/tipkit/ TipKitã䜿ããšãæè»œã«å¹ãåºãã®ãããã¢ãããªã©ãåºããããTipKitå
ã§è¡šç€ºç¶æ
ã®ã³ã³ãããŒã«ãè¡ãããããŸãã ããããTipKitå
ã§å
šãŠãå®çµãããšããããšã¯ãViewãšããžãã¯ã坿¥ã«çµ¡ã¿åã£ãŠããŸããšããããšã§ããããŸããããã§ã¯æ¢åã®ã¢ãŒããã¯ãã£ãšéœéœ¬ãçããŠããŸããŸãã ãŸããmy routeã§ã¯ä»¥åããTipKitã䜿ããã«äŒŒããããªè¡šç€ºã³ã³ãããŒã«ãè¡ãªã£ãŠãããããæ¢åã®ããžãã¯ãTipKitã«æã£ãŠããããšãããšäžåºŠå
šãŠã®ãŠãŒã¶ãŒã®è¡šç€ºç¶æ³ããªã»ãããããŠããŸãåé¡ããããŸããã ããã§ãUserDefaultãªã©ã«ä¿åããŠããæ¢åã®ç¶æ
ãç¶æãããŸãŸãã©ãã«ãTipKitã«å€éšããè¡šç€ºç¶æ
ãå·®ã蟌ã¿ãããšèããŸããã TipKitã®åºæ¬ã®äœ¿ãæ¹ TipKitã¯åºæ¬çã«ã以äžã®ããã«æžããŠäœ¿ããŸããTipViewStyleã䜿ã£ãŠã¹ã¿ã€ã«ãã«ã¹ã¿ãã€ãºããããšãã§ããŸãã import TipKit struct FavoriteLandmarkTip: Tip { // 衚瀺æèš var title: Text { Text("Save as a Favorite") } // è¡šç€ºç¶æ
ã®æ¡ä»¶ãå¶åŸ¡ãããã¯ã @Parameter static var userIsLoggedIn: Bool = false var rules: [Rule] { #Rule(Self.$userIsLoggedIn) { // ãã°ã€ã³ç¶æ
ãªãTipã衚瀺 $0 == true } } } TipKitå
ã«ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ãå®çŸ©ããŠè¿œè·¡ããããšãã§ããŸãã struct FavoriteLandmarkTip: Tip { // 远跡ãããŠãŒã¶ãŒã¢ã¯ã·ã§ã³ãäžæã®IDãæã€ã€ãã³ããšããŠå®çŸ© static let didViewLandmark: Event = Event(id: "didViewLandmark") var rules: [Rule] { #Rule(Self.didViewLandmark) { // ã€ãã³ãã3å以äžçºçãããTipã衚瀺 $0.donations.count > 3 } } } ãã®ããã«ãTipKitåŽã§ç¬èªã«è¡šç€ºç¶æ
ã®æ¡ä»¶ã管çããŠããŸãã ããããã®ãŸãŸã§ã¯äžè¿°ã®éãã«åé¡ããããŸãã TipKitã«å€éšããè¡šç€ºç¶æ
ãå·®ã蟌ããããã«ãã @Parameter ãã¯ããå©çšããŠãè¡šç€ºç¶æ
ãå·®ã蟌ããããã«ããŸãã @Parameterã§ã©ãããããå€ã倿ŽããããšãäŸåããTipã«ãŒã«ãåè©äŸ¡ãããŸãã ããã§ãå€éšã®å€ã @Parameter ãçµç±ããŠå€æŽããŠãããããšã§ãTipKitã®ç¶æ
ãã³ã³ãããŒã«ããããšãã§ããŸãã https://developer.apple.com/documentation/tipkit/tips/parameter ãŸããTipKitèªäœã¯ä»¥äžã®ããã«å®çŸ©ããŸããããã§ã¯åŒã³åºãåŽã®Viewã«å®çŸ©ããŠãã @Parameter ãã¿ãŠTipã®è¡šç€ºæç¡ã倿ããŠããŸãã import TipKit struct MemoTip: Tip { var title: Text { Text("æ°ã«å
¥ã£ãèšäºã®URLã¯ãã¡ããããã§ããã¡ã¢ã«è¿œå ãã§ããŸã") } var rules: [Rule] { #Rule(ParentView.$isPresentingMemoTip) { $0 == true } } } å€éšããå€ãåãåãããã®ãã©ã¡ãŒã¿ãšã¯å¥ã«ãTipKitçšã« @Paramter ã«ã©ãããããã©ã¡ãŒã¿ãçšæããŸãã onAppear ãš onChange ã«ãã£ãŠ2ã€ã®ãã©ã¡ãŒã¿ãåæããããã«ããŠããŸãã struct ParentView: View { @Binding var showTip: Bool // å€éšããå€ãåãåããã©ã¡ãŒã¿ãæ¬åœã¯ãã£ãšæ§é äœã«ãªã£ãŠããObservedObjectã ã£ããããã @Parameter static var isPresentingMemoTip: Bool = false // TipKitçšã«å€éšã®å€ãã©ãããããã©ã¡ãŒã¿ var memoTip = MemoTip() var body: some View { SomeView() .safeAreaInset(edge: .bottom) { memoButton .popoverTip(memoTip, arrowEdge: .bottom) // ããããåºãå Žæ .onAppear { // Viewãã€ããããæåã¯onChangeãåããªãã®ã§ãåæå€ãæ¿å
¥ ParentView.isPresentingMemoTip = showTip } .onChange(of: showTip) { _, newValue in // å€éšãã倿Žããã£ããã@Parameterãã¯ãã«å€ãæ¿å
¥ ParentView.isPresentingMemoTip = newValue } } } } ããããããšã§ãããžãã¯ãViewããåãé¢ããããã«ãªããŸããã ViewModelãªã©ã§è¡šç€ºç¶æ
ã®æ¡ä»¶ã®ããžãã¯ãæžããŠããã®ç¶æ
ãshowTipã«æž¡ããŠãããã°TipKitåŽã®ç¶æ
ãæŽæ°ãããŸããããæãã§ãã ãŸãšã TipKitã®è¡šç€ºç¶æ
ãå€éšããã³ã³ãããŒã«ã§ããããã«ããæ¹æ³ã玹ä»ããŸããã TipKitã¯iOS17ããå©çšã§ããã®ã§ãããããå©çšããã±ãŒã¹ãåŸã
ã«å¢ããŠãããšæããŸãã å®å
šã«æ°èŠã®æ©èœãšããŠäœæããã®ã§ããã°TipKitã§å®çµãããæ¹ãè¯ããšã¯æããŸãããæ¢åã®ãã®ãç§»è¡ããå Žåã¯å°ãã·ãŒã³ãããã®ã§ããã®èšäºã圹ç«ã€ãšè¯ããªãšæããŸãã ããã§ã¯ãã¡ãªãŒã¯ãªã¹ãã¹ð
ãã®èšäºã¯ KINTOãã¯ãããžãŒãºã¢ããã³ãã«ã¬ã³ããŒ2025 ã®20æ¥ç®ã®èšäºã§ãð
ð ã¯ããã« ããã«ã¡ã¯ãKINTOãã¯ãããžãŒãº Mobile KMPããŒã ã§ãã æ¬èšäºã¯ãCompose MultiplatformãšSwiftUIã§äœããã€ããªããã¢ãã€ã«ã¢ããªãã·ãªãŒãºã®Part 2ã§ããPart 1ã§ã¯ãã€ããªããéçºãéžãã èæ¯ãšã¢ãŒããã¯ãã£æŠèŠã玹ä»ããŸãããä»åã¯å
·äœçãªå®è£
æ¹æ³ã詳ãã解説ããŸãã æ¬ã·ãªãŒãºã®æ§æ Part 1ïŒãªããã€ããªãããªã®ã Part 2ïŒå®è£
ã¬ã€ã â çŸåšã®èšäº Part 3ïŒSwiftUI飿ºãšæè¡TipsïŒè¿æ¥å
¬éïŒ å®è£
äºäŸ ãããžã§ã¯ãæ§é ãããžã§ã¯ãã®ãã£ã¬ã¯ããªæ§æ my-cmp-app/ âââ composeApp/ â âââ src/ â â âââ commonMain/ // CMP Shared code â â âââ androidMain/ // Android-specific â â âââ iosMain/ // iOS-specific âââ iosApp/ â âââ Views/ // SwiftUI views â âââ Screens/ // Native screens â âââ ComposeViewContainer.swift âââ shared/ // KMP domain layer âââ viewmodels/ âââ models/ ãŸã composeApp ã§ãã commonMain ã«ã¯CMPã®å
±éã³ãŒãã androidMain / iosMain ã«ã¯åãã©ãããã©ãŒã åºæã®å®è£
ãå
¥ããŠããŸãã æ¬¡ã« iosApp ãSwiftUIã®Viewããã€ãã£ãç»é¢ãå«ãŸããŠããŸããç¹ã« ComposeViewContainer.swift ãã¡ã€ã«ã§CMPã³ã³ããŒãã³ããiOSåŽã«çµã¿èŸŒãã§ããŸãã æåŸã« shared ãKMPã®ãã¡ã€ã³å±€ã§ãviewmodelsãmodelsãå
±éåããŠããŸãã ãã®ããã«ããã£ã¬ã¯ããªã¬ãã«ã§ã å
±éåã§ããéšåã¯ãŸãšãããã€ãã£ãäŸåéšåã¯åé¢ ããŠããŸãã ãã€ããªããUIã®å®äŸ å®éã«äœæããPoCã¢ããªã®ç»é¢æ§æã玹ä»ããŸãã MainScreenã§ã¯ãããã ããã²ãŒã·ã§ã³ã«4ã€ã®ã¿ããé
眮ããŠããŸãã ã¿ã UIå®è£
Application CMP Lineup CMP HelpCenter CMP Settings SwiftUI on iOS ApplicationãLineupãHelpCenter ã¯CMPã§å
±éUIãå®è£
Settings ã ãã¯ãã€ãã£ãïŒiOSã§ã¯SwiftUIïŒã§äœã£ãŠããŸã ãã®ããã«ãå
±éUIãšãã€ãã£ãUIãçµã¿åãããŠããã¿ãåãæ¿ãã¯ã·ãŒã ã¬ã¹ã«è¡ããŸãã iOSåºæã®UIãæŽ»ããSettings Tab ãã€ãã£ãããCMPããŒã¹ã®ãã€ããªããããã²ãŒã·ã§ã³ãžã®ç§»è¡ ãã®ãããªæ§æã§ã¯ããã€ãã£ãäžå¿ã®ããã²ãŒã·ã§ã³ããCMPããŒã¹ã®ãã€ããªããããã²ãŒã·ã§ã³ãžç§»è¡ããå¿
èŠããããŸãããã©ã®ããã«ç§»è¡ããã®ããå
·äœçãªæ¹æ³ãã玹ä»ããŸãã æ¢åã®ããã²ãŒã·ã§ã³ã¹ã¿ãã¯ããªãã¡ã¯ã¿ãªã³ã°ãããã€ãã£ããšCMPéã§ã«ãŒãã£ã³ã° ãã©ãããã©ãŒã åºæã®ããã²ãŒã·ã§ã³ããžãã¯ãå
±æã€ã³ã¿ãŒãã§ãŒã¹ã®èåŸã«æœè±¡å ã«ãŒãããŒã¹ã®ããã²ãŒã·ã§ã³æŠç¥ å
ã»ã©ç޹ä»ããPoCã¢ããªã®ã¿ãæ§é ãæ¯ãè¿ããšã1ã3çªç®ã®ã¿ãã¯CMPã4çªç®ã¯SwiftUIã§å®è£
ããŠããŸãã PoCã¢ããªã®ã¿ãæ§é ãã®ãããªæ§æã§ã«ãŒãã£ã³ã°ãå®çŸããããã«ãåç»é¢ã®ã«ãŒããstring constantã§å®çŸ©ããŠãããŸãã // Routes.kt - Navigation routes defined in shared code object Routes { const val LOGIN = "login" const val SCREEN_A = "screen_a" const val SCREEN_B = "screen_b" const val SCREEN_C = "screen_c" const val SCREEN_D = "screen_d" } ãã©ãããã©ãŒã ããšã«å®è£
ãåããŠãAndroidã§ã¯Compose NavigationãiOSã§ã¯SwiftUI Navigationã§Composeãã€ãªã Bridge ãããŸãã Kotlinããã²ãŒã·ã§ã³å®è£
ãã¡ã㯠ComposeViewController.kt ã®äŸã§ãããã©ã¡ãŒã¿ãšã㊠initialRoute ãåãåãããã®ã«ãŒãã«å¿ããŠwhenåå²ã§ é·ç§»å
ãåãæ¿ã ãŠããŸãã // ComposeViewController.kt fun createComposeViewController( initialRoute: String, onCallback: (Boolean) -> Unit = {} ): UIViewController { return ComposeUIViewController { MyAppTheme { when (initialRoute) { "login" -> LoginNavigation(onLoginSuccess = onCallback) "screen_a" -> ScreenANavigation() "screen_b" -> ScreenBNavigation(iosCallback = onCallback) "screen_c" -> ScreenCNavigation() "screen_d" -> ScreenDNavigation() else -> FallbackNavigation() // default fallback } } } } äŸãã°ã"login"ãªã LoginNavigation ãžã"screen_a"ã"screen_b"ãªããããããã®ç»é¢ã®NavigationãåŒã³åºããŸãããã®ããã«ãã«ãŒããå®çŸ©ããŠããã°ããã©ãããã©ãŒã åºæã®ããã²ãŒã·ã§ã³åŠçãšç°¡åã«æ¥ç¶ã§ããŸãã iOSåŽã§Compose Navigationãçµ±åããä»çµã¿ ãŸã ComposeViewContainer ãå®çŸ©ããŠã UIViewControllerRepresentable ãå®è£
ããŸããããã«ãã£ãŠSwiftUIã®äžã« Compose UIãåã蟌ã ããšãã§ããŸãã // ComposeViewContainer.swift struct ComposeViewContainer: UIViewControllerRepresentable { let initialRoute: String let onCallback: (Bool) -> Void func makeUIViewController(context: Context) -> UIViewController { // Wrap the Swift callback into the KotlinBoolean signature let kotlinCallback: (KotlinBoolean) -> Void = { kotlinBool in onCallback(kotlinBool.boolValue) } // Create the Compose UIViewController, passing the wrapped callback return ComposeViewControllerKt.createComposeViewController( initialRoute: initialRoute, onCallback: kotlinCallback ) } func updateUIViewController(_ uiViewController: UIViewController, context: Context) { // No dynamic updates needed here } } 次ã«ã makeUIViewController ã®äžã§KotlinåŽã® createComposeViewController ãåŒã³åºããŸãã iOS Navigationã®å®è·µ ãã¡ãã¯ãçµ±åã³ãŒãã䜿ã£ãiOS Navigation codeã§ãã TabView ã®äžã«4ã€ã®ã¿ããå®çŸ©ããŠããŸãã1ã3çªç®ã®ã¿ã㯠CMPç»é¢ ã§ã NavigationView ã®äžã« ComposeViewContainer ãåã蟌ã¿ãåæã«ãŒã"screen_a"ãæå®ããŠããŸãã // MainScreen.swift struct MainScreen: View { var body: some View { TabView { // Tab 1~3: CMP screen NavigationView { ComposeViewContainer(initialRoute: "screen_a", onCallback: { _ in }) }.tabItem { Label("Application", systemImage: "doc.plaintext") } ... // Tab 4: SwiftUI screen NavigationView { SettingsScreen() }.tabItem { Label("Settings", systemImage: "gearshape.fill") } } } } 4çªç®ã®ã¿ãã¯SwiftUIãã€ãã£ãã® SettingsScreen() ã䜿çšããŠããŸãããã®ããã«ãCMPãšãã€ãã£ãç»é¢ãåãããã²ãŒã·ã§ã³æ§é å
ã§èªç¶ã«å
±åãããããšãã§ããŸãã Koinã«ããã¢ãžã¥ãŒã«å ãããŸã§ããã²ãŒã·ã§ã³çµ±åãèŠãŠããŸããããå®éã®ã¢ãŒããã¯ãã£ã¯CMP + MVVMã§ã©ãã©ãè€éã«ãªããŸããããã§ãMultiplatformåãDIã® Koin ãå°å
¥ããŸãããçµæãæ§é ãã·ã³ãã«ã«ãªãããã¹ããä¿å®ããããããªããŸããã Koinã®å©ç¹ïŒ äŸåé¢ä¿ããããã«ç®¡ç ã§ãã åãå®çŸ©ã䜿ã£ãŠ è€æ°ãã©ãããã©ãŒã ã§åå©çš ã§ãã ã¢ãžã¥ãŒã«åäœã§åé¢ ã§ããæ§é ãã·ã³ãã«ã«ãªã ãã¹ãã®ãããã ãåäž // commonMain/di/AppModule.kt val appModule = module { single { NetworkClient() } single { AuthRepository(get()) } viewModel { HomeViewModel(get()) } viewModel { ProductViewModel(get()) } factory<Validator> { ValidatorImpl(get(), get()) } } single ã viewModel ãã·ã³ãã«ã«æžãã ãã§ãäŸåé¢ä¿ãèªåçã«è§£æ±ºã§ããŸãã ãã©ãããã©ãŒã åºæã®DI Koinã§ã¯ãiOSãšAndroidããããã« å°çšã®ã¢ãžã¥ãŒã« ãå®çŸ©ã§ããŸãã // iosMain/di/PlatformModule.ios.kt val iosModule = module { single<HttpClientEngine> { Darwin.create {} } single<DataStore<Preferences>> { createDataStore() } single { IOSLocationService() as LocationService } single { AppStoreConnectTracker() as AnalyticsTracker } } // androidMain/di/PlatformModule.android.kt val androidModule = module { single<HttpClientEngine> { OkHttp.create {} } single<DataStore<Preferences>> { createDataStore(androidContext()) } single { AndroidLocationService() as LocationService } single { FirebaseAnalyticsTracker() as AnalyticsTracker } } iOSåŽã§ã¯ iosModule ãå®çŸ©ãã Darwin.create() ã䜿ã£ã HttpClient ãç»é²ããŠããŸããäžæ¹AndroidåŽã§ã¯ androidModule ãå®çŸ©ãã OkHttp.create() ã䜿ã£ã HttpClient ãç»é²ããŠããŸãã ãã®ããã«ã ãã©ãããã©ãŒã åºæã®å®è£
ã¯ã¢ãžã¥ãŒã«ããšã«åé¢ ããªãããå
±éã®ã€ã³ã¿ãŒãã§ãŒã¹ãéããŠå©çšã§ããããã«ããŠããŸãã Koinã®åæå ããã§ã¯Koinã®åæåæ¹æ³ã§ãããŸãå
±éã³ãŒãåŽã« initKoin 颿°ãçšæããŠãããŸãã // commonMain/di/KoinSetup.kt fun initKoin(platformModule: Module) = startKoin { modules(appModule, networkModule, platformModule, ...) } // Android Application class class MyApplication : Application() { override fun onCreate() { super.onCreate() initKoin(androidModule) } } Androidã§ã¯ Application ã¯ã©ã¹ã® onCreate ãã androidModule ãæž¡ããŠåæåããŸãã // iOS AppDelegate func application(_ application: UIApplication, didFinishLaunchingWithOptions...) { KoinKt.doInitKoin(platformModule: IOSPlatformModuleKt.iosModule) return true } iOSã§ã¯ AppDelegate ãã iosModule ãæž¡ãã ãã§ãããã®ããã«ããŠã äž¡æ¹ã®ãã©ãããã©ãŒã ã§åãåæååŠçãå
±éå ã§ããŸãã Koinã§ã®åçã¢ãžã¥ãŒã«ããŒã 次ã«ãKoinã§ã® åçã¢ãžã¥ãŒã«ããŒã ã§ãã // Feature module definition val featureModule = module { viewModel { FeatureViewModel(get(), get()) } factory { FeatureValidator() } single { FeatureRepository(get()) } } // Register dynamically after the Koin's initialization loadKoinModules(featureModule) ãŸã featureModule ãå®çŸ©ããŠãViewModelã»Validatorã»Repositoryãç»é²ããŸãããã®åŸã loadKoinModules ã« featureModule ãæž¡ããŠããŒãããŸãã KoinåæååŸã«ã¢ãžã¥ãŒã«ãåçã«ããŒã ã§ããŸããããã«ãããå€§èŠæš¡ã¢ããªã§ã å¿
èŠãªæ©èœã ããåŸããèªã¿èŸŒãæ§æ ãå¯èœã«ãªããŸãããããKoinã®åŒ·ã¿ã§ãã éçºå¹çåäºäŸïŒValidatorçµ±å åé¡ç¶æ³ ã¡ãŒã«ãé»è©±çªå·ãéµäŸ¿çªå·ããã¹ã¯ãŒãåŒ·åºŠãæ¥ä»åœ¢åŒãªã©ãæ§ã
ãªæ€èšŒããžãã¯ãå¿
èŠã§ããã åŸæ¥æ¹åŒã§å®è£
ããå ŽåïŒ AndroidïŒ24åã®ValidatorïŒKotlinïŒ iOSïŒ24åã®ValidatorïŒSwiftïŒ åèš48åã®å®è£
åèš48åã®ValidationResult åèš48ã»ããã®ãŠããããã¹ã KMPãœãªã¥ãŒã·ã§ã³ ãã¹ãŠã®æ€èšŒããžãã¯ãå
±æKMPã¢ãžã¥ãŒã«ã«ç§»åããŸããã Kotlinã§åValidatorãäžåºŠã ãå®è£
å
±é颿°/ã¯ã©ã¹ãšããŠå
¬é CMPç»é¢ãAndroid/iOSãã€ãã£ãç»é¢ãã¹ãŠããåŒã³åºãå¯èœ çµæïŒ å®è£
é50%åæž ãã¹ãã³ãŒã50%åæž ãã©ãããã©ãŒã éæ€èšŒããžãã¯ã®äžè²«æ§ä¿èšŒ ãã°ä¿®æ£ãäžç®æã§å®äºïŒäž¡OSåæã«ä¿®æ£ãããïŒ æ¬¡åäºå Part 2ã§ã¯ããããžã§ã¯ãæ§é ãããã²ãŒã·ã§ã³çµ±åãKoin DIãValidatorçµ±åãªã©å
·äœçãªå®è£
æ¹æ³ã玹ä»ããŸããã Part 3ïŒSwiftUI飿ºãšæè¡Tips ã§ã¯ãSwiftUIãšCMPã®çžäºåã蟌ã¿ãCMP vs Flutteræ¯èŒãå®è·µã§çŽé¢ããèœãšã穎ãå°å
¥æŠç¥ãªã©ã詳ãã解説ããŸãããæ¥œãã¿ã«ïŒ ãã¡ãã¯ãCompose MultiplatformãšSwiftUIã§äœããã€ããªããã¢ãã€ã«ã¢ããªãã·ãªãŒãºã®Part 2ã§ãã
ã¯ããã« ãã®èšäºã¯ New Relic Advent Calendar 2025 20æ¥ç®ã®èšäºã§ãã ããã«ã¡ã¯ãKINTOãã¯ãããžãŒãº(以äžKTC)SREããŒã ã®æïšã§ãã æ¬èšäºã§ã¯ãå
æ¥ã®AWS re:Invent 2025ã§çºè¡šãããAWS DevOps Agentãšãæ®æ®µKTCã§å©çšããŠããNew Relicã飿ºãããŠãé害調æ»ãã©ããŸã§èªååã§ããã®ãæ€èšŒããçµæãã玹ä»ããŸãã æ³šæäºé
AWS DevOps Agentã¯æ¬èšäºå·çæç¹(2025幎12æ)ã§ã¯ãã¬ãã¥ãŒçã§ãã GAïŒäžè¬æäŸïŒãŸã§ã«ä»æ§ã倿Žãããå¯èœæ§ããããŸãã AWS DevOps Agent ãšNew Relicã®é£æº AWS DevOps Agent ãšã¯ AWS DevOps Agentã¯ãã€ã³ã·ãã³ãã解決ãäºé²ããä¿¡é Œæ§ãšããã©ãŒãã³ã¹ãç¶ç¶çã«åäžãããããã³ãã£ã¢ãšãŒãžã§ã³ãã§ãã詳现ã¯ä»¥äžã®å
¬åŒããŒãžãã芧ãã ããã AWS DevOps Agent ç¹åŸŽçãªç¹ã¯Capabilitiesãšããèšå®ã§ãDevOps Agentãæ±ããæ
å ±(èœå)ãæ¡åŒµã§ããããšã§ãã ä»åããã®Capabilitiesãå©çšããŠNew Relic MCPçµç±ã§é害調æ»ãè¡ããŸãã ä»ã«ãCapabilitiesã«ã¯ä»¥äžã®ãããªèšå®ãå¯èœã§ãã Cloud ä»ã®AWSã¢ã«ãŠã³ãã®ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ Telemetry ãªãã¶ãŒãããªãã£SaaSã®ãã¬ã¡ããªãŒããŒã¿ãžã®ã¢ã¯ã»ã¹ Pipeline ãœãŒã¹ã³ãŒãã管çãããŠãããªããžããªããããã€ãã€ãã©ã€ã³ã®æ
å ±ãžã®ã¢ã¯ã»ã¹ Communications Slackãªã©ã®ã³ãã¥ãã±ãŒã·ã§ã³ããŒã«ãšã®é£æº MCP Server MCPãµãŒããŒã䜿ã£ãæ
å ±ã®åé Webhook Webhookçµç±ã§ã®ãµãŒãããŒãã£è£œã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãžã®ã¢ã¯ã»ã¹ New Relic ãšã®é£æºæ¹æ³ AWS DevOps Agentã®åæèšå® AWS DevOps Agentã®åæèšå®ã¯ãšãŒãžã§ã³ãã¹ããŒã¹ã®äœæããå§ãŸããRoleã®äœæãªã©ãå¿
èŠã§ãããããã§ã¯New Relicãšã®é£æºèšå®ã®ç®æã«çµã£ãŠèšèŒããŸãã 以äžã®ããŒãžã«ããããã«Telemetryã®èšå®ã«New Relicã远å ããããšã§New RelicããAWS DevOps Agentãå®è¡ããããã®webhook URLãååŸã§ããŸãã Connecting New Relic ãã®èšå®ã«ãããNew Relic remote MCP ãå©çšãããããã«ãªããŸãã Telemetryã®èšå® AWS DevOps Agentã®SettingsãããTelemetryã-ãNew RelicããéžæããŸãã New Relicã®accountIDãšAPIããŒãå
¥åããRegionãéžæããŸãã webhook URLãšsecret keyãçºè¡ããããããä¿åããŠãããŸãã ãšãŒãžã§ã³ãã¹ããŒã¹ãéžæãããCapabilitiesãã¿ããããTelemetry Sourcesãã«ãNew Relic Serverã ã远å ããŸãã New Relicã®ã¢ã©ãŒãã®èšå® New Relicã®ã¢ã©ãŒãããAWS DevOps Agentãwebhookã§èµ·åããããã«ãNew Relicã®DestinationsãšWorkflowã®èšå®ãè¡ããŸãã Destinationsã®èšå® New Relicã®ãAlertsããããDestinationsããéžæãããAdd a destinationããããWebhookããéžæããŸãã ãNameãã«ä»»æã®ååãå
¥åãã以äžã®ãšããèšå®å€ãå
¥åããŸãã Name: New Relic Webhook Endpoint URL: https://event-ai.us-east-1.api.aws/webhook/generic/****** //Telemetryã®èšå®ã®çºè¡ç»é¢ã§çºè¡ãããURL Authorization: Bearer Authorization Value: ****** //Telemetryã®èšå®ã®çºè¡ç»é¢ã§çºè¡ãããsecret key èšå®ãä¿åããŸãã Workflowã®èšå® New Relicã®ãAlertsããããWorkflowsããéžæãããAdd a workflowãããæ°ããWorkflowãäœæããŸãã(ãããã¯æ¢åã®Workflowã«å¯ŸããŠèšå®ã远å ããŸã) Notifyã®Add channelããWebhookãéžæãããDestinationsã®èšå®ãã§è¿œå ããDestinationãéžæããŸãã Payloadã®Templateã«ä»¥äžã®å
容ãå
¥åããŸãã { "eventType": "incident", "incidentId": {{ json incidentIds.[0] }}, "action": "created", "priority": {{ json priority }}, "title": {{ json annotations.title.[0] }}, "description": {{ json state }}, "service": {{json entitiesData.names.[0]}}, "timestamp": {{#timezone activatedAt 'Asia/Tokyo'}}{{/timezone}} } 以äžã§AWS DevOps AgentãšNew Relicã®é£æºèšå®ã¯å®äºã§ãã å®éã«è©Šããçµæ å®éã«New Relicã®ã¢ã©ãŒãããAWS DevOps Agentãwebhookã§èµ·åããŠã¿ãŸãã 飿ºã®æµã å®éã«é£æºã詊ããéã®æµãã¯ä»¥äžã®éãã§ãã New Relicã®ã¢ã©ãŒãããAWS DevOps Agentãžwebhookãã New Relicã§ã¢ã©ãŒããçºçãããšãAWS DevOps Agent ã« webhook ãéä¿¡ãããŸã AWS DevOps AgentããNew Relicã®ãã¬ã¡ããªãååŸããŠåæãã AWS DevOps Agentã¯èªåŸçã«New Relicã®MCPçµç±ã§ãã¬ã¡ããªããŒã¿ã®ååŸãç¹°ãè¿ããåæãè¡ããŸã åæã«AWSãªãœãŒã¹å
ã調æ»ãã New Relicã®ãã¬ã¡ããªåæãšäžŠè¡ããŠãAWSãªãœãŒã¹ã®ç¶æ
ã調æ»ããŸã Root Causeã¬ããŒããçæããã åæçµæãåºã«ãæ ¹æ¬åå ïŒRoot CauseïŒã¬ããŒããèªåçæãããŸã ä¿®æ£æ¡ã®èšç»ãæç€ºã§ãã çæãããã¬ããŒããåºã«ãä¿®æ£æ¡ã®èšç»ãæç€ºããããšãã§ããŸã 調æ»çµæ 調æ»ç¶æ³ãweb appãã確èªãããšä»¥äžã®ãããªçµæãšãªããŸã(衚瀺ããŠãããã®ã¯ãµã³ãã«ã®ã¢ããªã±ãŒã·ã§ã³ã§ã) New Relic MCPãå©çšããŠã¢ã©ãŒãã«é¢ããæ
å ±ãååŸããŠããŸãã ä»åã®ã¢ã©ãŒãã¯ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã®ããå¿
ããšã©ãŒãçºçããäœãã§ããããšã Root Cause ãšããŠçµè«ä»ããããŠããŸãã 远å ã®èª¿æ»ãšããŠçŽè¿ã®ãããã€ãšã¢ã©ãŒãã®çºçã«é¢é£æ§ãããã確èªããŠããããŸããã AWSåŽã®èª¿æ»ã«ãããFargate Spotã®ããããžã§ãã³ã°é
å»¶ã«ãã£ãŠèµ·åãé
ããããšãšãçŽè¿ã§ãããã€ã宿œãããŠããªãããšãå ±åãããŸããã çµæ New Relicã®ã¢ã©ãŒããããªã¬ãŒã«AWS DevOps Agentãwebhookã§èµ·åããMCPçµç±ã§ååŸããNew Relicã®ãã¬ã¡ããªãšAWSãªãœãŒã¹æ
å ±ãçµã¿åãããŠèªå調æ»ããããšãããŸã§ç¢ºèªã§ããŸããã AWS DevOps Agentã®web appã¯å¯Ÿè©±åœ¢åŒã§è¿œå ã®èª¿æ»ãè¡ãããšãã§ããAWSãªãœãŒã¹ã®çŽæ¥åç
§ãšNew Relicã®ãã¬ã¡ããªåæã®äž¡æ¹ãèªåŸçã«å®æœããŠããããããä»ã®é£æºå
ãå¢ããŠãæè»ã«å¯Ÿå¿ããããšãã§ãããã§ãã ãŸãšã æ¬èšäºã§ã¯ãAWS DevOps AgentãšNew Relicã飿ºãããŠé害調æ»ã®èªååã詊ããŸããã New Relicã®ã¢ã©ãŒããããªã¬ãŒã«AWS DevOps Agentãwebhookã§èµ·åããMCPçµç±ã§ååŸããNew Relicã®ãã¬ã¡ããªãšAWSãªãœãŒã¹æ
å ±ãçµã¿åãããŠåæããããšã§ãèªåŸçã«Root Causeã¬ããŒããçæã§ããããšã確èªããŸããããã¬ãã¥ãŒæ®µéã§ã¯ãããŸãããé害çºçæã®åæèª¿æ»ãèªååã§ããç¹ã¯éåžžã«äŸ¡å€ããããšæããŠããŸãã ãŸããä»åã¯è©ŠããŠããŸããããå°æ¥ã®ã€ã³ã·ãã³ããäºé²ããPreventionæ©èœãå©çšããã°ãNew Relic MCPçµç±ã§APMã®æ
å ±ãåç
§ããŠããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ã®ãããªæ¹åãµã€ã¯ã«ã«ã掻çšã§ãããšèããŠããŸãã åŒãç¶ãGAçã®æ§åãèŠãªããæ€èšŒããŠãããããšæããŸãã 以äžã§ãã
ãã®èšäºã¯ KINTOãã¯ãããžãŒãº Advent Calendar 2025 ã®20æ¥ç®ã®èšäºã§ãð
ð 1. ã¯ããã« ããã«ã¡ã¯ïŒ ã»ãã¥ãªãã£ã»ãã©ã€ãã·ãŒéšã§ãµã€ããŒã»ãã¥ãªãã£ã«é¢ããæ¥åãæ
åœããŠããã ããªã¡ã
㌠ã§ãïŒ ä»åã¯ãAI ãšãŒãžã§ã³ããæŽ»çšã㊠SOC ç£èŠæ¥åãåèªååãã äœæ¥æéãçŽååã«ççž® ããåãçµã¿ã«ã€ããŠã話ãããŸãã ãAI ãšãŒãžã§ã³ãã䜿ãã°ããã§ãããïŒããšæã£ãŠå§ããŸããããå®éã«åãçµã¿ãé²ããŠã¿ããšè©Šè¡é¯èª€ã®é£ç¶ã§ã æ³å®å€ã®èœãšã穎 ã 倱æ ããããããããŸããããã®èšäºã§ã¯ãããŸããã£ãããšã ãã§ãªãã 倱æããã®åŠã³ ãå«ããŠå
±æããããšæããŸãã 2. èæ¯ïŒSOC æ¥åã®èª²é¡ SOCãšã¯ïŒ SOCïŒSecurity Operation CenterïŒã¯ãçµç¹ã® IT ç°å¢ãç£èŠãããµã€ããŒæ»æãäžæ£ã¢ã¯ã»ã¹ãªã©ã®ã»ãã¥ãªãã£è
åšãæ€ç¥ã»åæã»å¯ŸåŠãã圹å²ãæ
ããŸãã äž»ãªæ¥åå
容ã¯ä»¥äžã®éãã§ãã ãã°ã»ã¢ã©ãŒãç£èŠ ïŒã·ã¹ãã ã®ãã°ãã¢ã©ãŒããç£èŠããç°åžžãæ€ç¥ è
åšåæ ïŒæ€ç¥ããã¢ã©ãŒããæ¬åœã®è
åšãã©ãããåæã»å€æ ã€ã³ã·ãã³ãå¯Ÿå¿ ïŒã»ãã¥ãªãã£ã€ã³ã·ãã³ãçºçæã®åå察å¿ãèª¿æ» ã¬ããŒãã£ã³ã° ïŒç£èŠçµæã察å¿ç¶æ³ãé¢ä¿è
ã«å ±å ããã°ãçµç¹ã®ãµã€ããŒã»ãã¥ãªãã£ã«ããããæåç·ãã§ãã ç£èŠæ¥åã®èª²é¡ ãã°ã»ã¢ã©ãŒãç£èŠã®æ¥åã«ã¯ããªã¢ã«ã¿ã€ã ã®ã¢ã©ãŒãç£èŠãšå®æçãªãã°ç£èŠã»åæããããŸããä»åãåèªååã®å¯Ÿè±¡ãšããã®ã¯åŸè
ã®å®æçãªãã°ç£èŠã§ãã 宿çãªãã°ç£èŠã§ã¯ãSIEMïŒSplunk CloudïŒã䜿ãã以äžã®äœæ¥ãæåã§è¡ã£ãŠããŸããã ããã·ã¥ããŒãäžã®ã€ãã³ãå
容ãç¢ºèª æ·±æã調æ»ã®ããã® SPL ã¯ãšãªãå®è¡ ã»ãã¥ãªãã£ã€ã³ã·ãã³ããåŠãã倿 調æ»çµæã®ã¬ããŒããäœæ ãã®æåéçšã¯ã1åããã2ã3æéã®äœæ¥æéããããã倧ããªæ¥åè² æ
ã«ãªã£ãŠããŸããããŸãããã°è§£æã¹ãã«ã SPL ã®ç¥èãå¿
èŠãªãããç¹å®ã®æ
åœè
ã«ç¥èãããŠããŠãéäžããå±äººåãé²ãã§ãããšãã課é¡ããããŸããã ãããã®èª²é¡ã解決ãããããAI ãšãŒãžã§ã³ãïŒOpenAI Codex IDEïŒãš Splunk MCP ãæŽ»çšããåèªååã«åãçµã¿ãŸããã 䜿çšããããŒã« MCP ã¯ã©ã€ã¢ã³ã OpenAI Codex IDEïŒOpenAI ã® AI ãšãŒãžã§ã³ããCodexãã® VSCode æ¡åŒµæ©èœãMCP ãµãŒããŒãšé£æºããããã³ããã«åºã¥ããåŠçãå®è¡ ã¢ãã«ã¯ãGPT-5.1-Codex-Maxããæšè«ã¯ãHighãã«èšå® MCP ãµãŒã㌠Splunk MCPïŒSplunk Cloud ãžã®ãã°æ€çŽ¢ãå®è¡ ãã®ä» Splunk CloudïŒã·ã¹ãã ã®ãã°éçŽã»åæåºç€ïŒSIEMïŒ GithubïŒã¡ã³ããŒéã§ã®ããã³ããå
±æåºç€ 3. å®çŸããããš çµè«ããèšããšããã®åãçµã¿ã«ããç£èŠæ¥åã®äœæ¥æéã2ã3æéãã1ã1.5æéãžãçŽååã«ççž®ã§ããŸãããããããã¯ãBefore/After ã®éçšãããŒãæ¯èŒããªãããå
·äœçã«äœãå€ãã£ãã®ãã玹ä»ããŸãã BeforeïŒåèªåååã®éçšãã㌠åèªåå以åã¯ã以äžã®æµãã§å®æçãªç£èŠæ¥åãæåã§å®æœããŠããã1åããã2ã3æéãèŠããŠããŸãããç¹ã«ã¹ããã1ãäžæ¬¡èª¿æ»ããšã¹ããã2ãæ·±æã調æ»ã®èŠåŠå€æãã¯ãã°è§£æã¹ãã«ã SPL ã®ç¥èãå¿
èŠãªãããå±äººåã課é¡ãšãªã£ãŠããŸããã äžæ¬¡èª¿æ»ã宿œ ããã·ã¥ããŒãã«è¡šç€ºãããåã€ãã³ãããšã«ãSplunk Cloud ã䜿çšããŠä»¥äžã®ãããªäžæ¬¡èª¿æ»ã宿œ 察象ã€ãã³ãååŸã®ã¿ã€ã ã©ã€ã³ãç¢ºèª å¯Ÿè±¡ã€ãã³ãã®èª¿æ»ã®è»žãšãªãæ
å ±ãåºã«ç°åžžæ§ã®æç¡ãç¢ºèª äžæ¬¡èª¿æ»çµæãåã€ãã³ãããšã«æŽç æ·±æã調æ»ã®èŠåŠå€æ æŽçããæ
å ±ãåºã«ãæ·±æã調æ»ã®å¿
èŠæ§ã倿 æ·±æã調æ»ã®å®æœ ãã¢ãªã³ã° SIEM å€ã®æ
å ±åéïŒãã£ããå
容ã瀟å
ãã¬ããžãªã©ïŒ ã»ãã¥ãªãã£ã€ã³ã·ãã³ããåŠãã®å€æ æ·±æã調æ»ã®çµæãåºã«ãã»ãã¥ãªãã£ã€ã³ã·ãã³ããã©ããã倿 ã»ãã¥ãªãã£ã€ã³ã·ãã³ãå¯Ÿå¿ é¢ä¿è
ãšé£æºããã»ãã¥ãªãã£ã€ã³ã·ãã³ã察å¿ã宿œ AfterïŒåèªåååŸã®éçšãã㌠AI ãšãŒãžã§ã³ããã¹ããã1ã»2ãæ
åœãã人éã¯å質ãã§ãã¯ãšæçµå€æã«éäžãã圢ãšããŸãããããã«ããäœæ¥æéã¯çŽååïŒ1ã1.5æéïŒã«ççž®ãããã«ãå±äººåããŠããç£èŠæ¥åã®æšæºåãé²ã¿ãããŒã ãšããŠéçšã§ããäœå¶ãæŽããŸããã äžæ¬¡èª¿æ»ã宿œïŒAI ãšãŒãžã§ã³ãïŒ Splunk MCP ã§ããã·ã¥ããŒãçžåœã®æ€çŽ¢ãå®è¡ããåã€ãã³ãããšã«ã以äžã®ãããªäžæ¬¡èª¿æ»ã宿œ 察象ã€ãã³ãååŸã®ã¿ã€ã ã©ã€ã³ãç¢ºèª å¯Ÿè±¡ã€ãã³ãã®èª¿æ»ã®è»žãšãªãæ
å ±ãåºã«ç°åžžæ§ã®æç¡ãç¢ºèª äžæ¬¡èª¿æ»çµæãåã€ãã³ãããšã«æŽç æ·±æã調æ»ã®äžæ¬¡èŠåŠå€æïŒAI ãšãŒãžã§ã³ãïŒ æŽçããæ
å ±ãåºã«ãæ·±æã調æ»ã®å¿
èŠæ§ãäžæ¬¡å€æ äžæ¬¡èª¿æ»çµæãšå€æå
å®¹ãæŽçããã¬ããŒããäœæ ã¬ããŒãã®å質ãã§ãã¯ã»æ·±æãèŠåŠå€æïŒäººéïŒ AI ãšãŒãžã§ã³ããäœæããã¬ããŒãã®å質ã人éããã§ã㯠å質ãã§ãã¯ãšåãããŠãæ·±æã調æ»ã®å¿
èŠæ§ã人éã倿 æ·±æã調æ»ã®å®æœïŒäººéïŒ ãã¢ãªã³ã° SIEM å€ã®æ
å ±åéïŒãã£ããå
容ã瀟å
ãã¬ããžãªã©ïŒ ã»ãã¥ãªãã£ã€ã³ã·ãã³ããåŠãã®å€æïŒäººéïŒ æ·±æã調æ»ã®çµæãåºã«ãã»ãã¥ãªãã£ã€ã³ã·ãã³ããã©ããã倿 ã»ãã¥ãªãã£ã€ã³ã·ãã³ã察å¿ïŒäººéïŒ é¢ä¿è
ãšé£æºããã»ãã¥ãªãã£ã€ã³ã·ãã³ã察å¿ã宿œ Before/After ã®éçšãããŒãå³ã§æ¯èŒãããšããã®ãããªåœ¢ã§ãã Before/After ã®éçšãããŒã®æ¯èŒå³ å
·äœäŸïŒåèªåååŸã®éçšãã㌠ã§ã¯ãå®éã«ã©ã®ããã«ç£èŠæ¥åãé²ããŠããã®ããå
·äœçãªæµãã玹ä»ããŸããåè¿°ã®6ã¹ãããããå®åã®èгç¹ãã5ã€ã®äœæ¥ã«æŽçããŠããŸãã ç£èŠçšããã³ãããæºå ïŒGitHub ãªããžããªããææ°ã®ç£èŠçšããã³ããïŒmd ãã¡ã€ã«ïŒãååŸ ã¯ããŒã³ããç£èŠçšããã³ãã Codex ã§äžæ¬¡èª¿æ»ïŒæ·±æã調æ»å«ãïŒãå®è¡ ïŒããã³ãããã¡ã€ã«ãæå®ã㊠Codex ã«åŠçãå®è¡ æç€ºäŸïŒxxxxx/prompts/yyyyy.md ã®ã¿ã¹ã¯ãå®è¡ããŠãã ãã åŠçæéïŒ1ããã³ããããã10ã20åçšåºŠ Codexãžã®æç€º ã¬ããŒãã®å質ãã§ãã¯ã»æ·±æãèŠåŠã倿 ïŒAI ãšãŒãžã§ã³ããäœæããã¬ããŒãã確èªããæ·±æã調æ»ã®å¿
èŠæ§ã倿 ãã°ä»¶æ°ãæ¥æã調æ»å
容ã®åŠ¥åœæ§ããã§ã㯠å質ãã§ãã¯çšããã·ã¥ããŒããäœæãããã§ãã¯äœæ¥ãå¹çå AI ãšãŒãžã§ã³ãã«ããç£èŠã¬ããŒã å質ãã§ãã¯çšããã·ã¥ããŒã æ·±æã調æ»ã宿œ ïŒå¿
èŠã«å¿ããŠè¿œå 調æ»ãè¡ããã»ãã¥ãªãã£ã€ã³ã·ãã³ããåŠãã倿 Splunk Cloud ã§æåæ€çŽ¢ Codex + Splunk MCP ãæŽ»çšãã远å èª¿æ» ã»ãã¥ãªãã£ã€ã³ã·ãã³ãå¯Ÿå¿ ïŒã€ã³ã·ãã³ããšå€æããå Žåãé¢ä¿è
ãšé£æºããŠå¯Ÿå¿ã宿œ 4. åŠãã ããš ...ãšããããŸã§ã¯ãããŸããã£ã話ãã§ãã ããããã¯ãåèªååã«ãã©ãçããŸã§ã«çµéšãã倱æãåŠã³ãå
±æããŸãã ãåŠã³ïŒããã¹ãŠã¯ãæé ã®æç¢ºåãããå§ãŸã æåã«è©Šããã®ã¯ãCodex ããã®ä»ã®çæ AI ãšãã£ããã§å¯Ÿè©±ããªããããã³ãããäœãã¢ãããŒãã§ããã ãSOC ã®ç£èŠãèªååããããã³ãããäœããããã ãã©...ã ããããªæãã§...ã ãããŒããããã¡ãã£ãšããããŠ...ã ãã®ãããªããåããäœåºŠãéããŠäœæããåæã®ããã³ããã¯ã以äžã®ãããªæ§æã§ããã ## 1. ã¡ã¿ããŒã¿ - åºåå
ãå¿
èŠããŒã«ãã¿ã€ã ãŸãŒã³ ## 2. ããŒã«/åæ - SOC 調æ»ã¢ããªã¹ããšããŠã®åœ¹å²å®çŸ© - åæ ## 3. å
±éè§£ææé ïŒå
š SPL å
±éïŒ 1. 調æ»å¯Ÿè±¡ã€ãã³ãã®ç¹å®ïŒäž»ææšã®å®çŸ©ïŒ 2. æ·±æãïŒã¿ã€ã ã¬ã³ãžæ¡åŒµããããã芳ç¹ïŒ 3. ãšã©ãŒ/äºè±¡ã®åé¡ 4. 30æ¥èŠ³æž¬ 5. åªå
床å€å® 6. äžæç¹ã®æç¢ºå 7. 調æ»ãã°ïŒå®è¡ãã SPL ã¯ãšãªäžèŠ§ïŒ ## 4. åªå
床å€å®åºæºïŒå
šSPLå
±éïŒ - èŠïŒå³æå¯Ÿå¿ïŒ/ èŠ³å¯ / äžèŠ ã®3段éãšå
·äœçæ¡ä»¶ - **èŠïŒå³æå¯Ÿå¿ïŒ** - ããŒã¹ã©ã€ã³æ¯ ⥠2.0 ãŸã㯠P95è¶
éããã€åæ¯ â¥ 30 - æ¡ä»¶1 â æ¡ä»¶2ïŒ60å以å
ã«å€±æ ⥠2 - æ¡ä»¶3ïŒxxx_count ⥠2 ã〠yyy_count ⥠3 ...ïŒä»¥äžãè€éãªæ¡ä»¶ãç¶ãïŒ ## 5. 調æ»çµææŽç - æé垯å¥ãµããªè¡šã®ããããŒå®çŸ© - äž»ææšïŒSPL å¥ã®èšèŒã«ãŒã«ïŒ ## 6. 調æ»çš SPL äžèЧ - 調æ»èгç¹â - 調æ»èгç¹â¡ ...ïŒä»¥äžãããã€ãã®èª¿æ»èгç¹ãç¶ãïŒ ## 7. åºåãã©ãŒãããïŒå¿
é ïŒ - èª¿æ»æŠèŠ - æé垯å¥ãµããªè¡š - 調æ»ãã°ïŒå®è¡ãã SPL ã¯ãšãªäžèŠ§ïŒ äžèŠãããšåœ¢ã«ãªã£ãŠããããã«èŠããŸãããå®éã«éçšããŠã¿ããšä»¥äžã®åé¡ãçºçããŸããã åºæºãææ§ ïŒãããŒã¹ã©ã€ã³ãã®ç®åºæ¹æ³ãäžæç¢ºã§ãP95ã®èšç®ã«å¿
èŠãªããŒã¿éãçŸå®çã§ã¯ãªãã£ã æ¡ä»¶ãè€éããã ïŒAI ãšãŒãžã§ã³ããæ£ããè§£éã§ããã人éã§ããçè§£ãé£ããã±ãŒã¹ããã£ããçµæãšããŠãäžæ¬¡èª¿æ»ã¬ããŒãã®å質ã«ãã¬ãçãã æšªå±éã§ããªã ïŒããã³ãããç¹å®ã·ã¹ãã ã«éåºŠã«æé©åãããŠãããå¥ã·ã¹ãã ãžå±éããéã¯ãŒãããäœãçŽããå¿
èŠã ã£ã æ ¹æ¬åå ã¯æç¢ºã§ãããSOC ç£èŠæ¥åã«ãããŠãäœãããã©ãããåºæºã§ã倿ããŠããã®ããã©ã®ãããªåºåãæåŸ
ããŠããã®ããããããè©³çŽ°ã«æŽçã»ææžåã§ããŠããªãã£ãã®ã§ãã 解決çïŒæé æžé§åããã³ããéçº ããã§ã¢ãããŒããå€ããŸããããã£ãããšã¯ãšãŠãã·ã³ãã«ã§ãã ãŸããæé æžããäœæããïŒäººéãèªãã§ãè¿·ããå®è¡ã§ããèª¿æ»æé ã»å€æåºæºãææåïŒ ãã®æé æžãçæ AI ã«æž¡ããŠããã®æé æžã«æ²¿ã£ãŠ SOC ç£èŠçšã®ããã³ãããäœã£ãŠããšäŸé Œãã ããªãã¡ããã€ãã³ãŒãã£ã³ã°æèŠã§ããã³ãããäœæããã®ã§ã¯ãªãã仿§æžé§åéçºã®èãæ¹ã«å£ããæåŸ
å€ãå
ã«æŽçããŠããããã³ãããäœæããŠãããã¢ãããŒãã§ãã 調æ»èгç¹ãªã©ãèšèŒããæé æž å¹æã¯åçã§ããã æåã®ã¢ãããŒãã§ã¯ã1ã2é±éãããŠè©Šè¡é¯èª€ãç¹°ãè¿ããŠãçŽåŸã®ããããã³ãããäœããŸããã§ãããããããæé æžé§åããã³ããéçºã«åãæ¿ãããšãããæé æžäœæãå«ããŠçŽ2æ¥éã§æåŸ
éãã®äžæ¬¡èª¿æ»ã¬ããŒããåºåã§ããããã³ããã宿ããŸããã ããã«ãåãèŠé ã§ä»ã·ã¹ãã åãã®ããã³ãããäœæã§ãããããã¬ããŒããã©ãŒããããçµ±äžããªããæšªå±éã容æã«ãªããŸããã 以äžã¯ããã®ã¢ãããŒãã§äœæããããã³ããã®æ§æã§ãã ## 1. ã¡ã¿ããŒã¿ - åºåå
ãå¿
èŠããŒã«ãã¿ã€ã ãŸãŒã³ ## 2. 圹å²å®çŸ© - SOC 調æ»ã¢ããªã¹ããšããŠã®åœ¹å² ## 3. åææ¡ä»¶ - ç£èŠå¯Ÿè±¡æé - æ¢ç¥æ
å ±ïŒéèŠ³å¯Ÿè±¡ïŒ - ç¡å®³åã«ãŒã« ## 4. ç£èŠé
ç® åç£èŠé
ç®ããšã«ä»¥äžãèšèŒïŒ - ç£èŠç®ç - SPL ã¯ãšãª - ãµãŒããã¯ããæŽ»çšããããšã§ãããŒã¯ã³ç¯çŽããã¬è»œæž - å€æåºæº - ã調æ»å¿
é ïŒããæéã«ãã件以äžã®ã€ãã³ãããªã©æç¢ºãªåºæºãèšèŒ - æ·±æãæé - æ·±æãæã®èгç¹ã䜿çšãã SPL ãèšèŒ - åºåèŠä»¶ - åºåæã®å¿
èŠæ
å ±ãæèš ## 5. åºåãã©ãŒããã åç£èŠé
ç®ããšã«å
·äœçãªãã©ãŒããããèšèŒïŒ - ç£èŠæŠèŠã»ãµã㪠- è©³çŽ°çµæ - 衚圢åŒã§åºåïŒé
ç®åãå€ã®èšè¿°ãã©ãŒããããªã©ãæèšïŒ - ç·åæèŠã»æšå¥šå¯Ÿå¿ - 調æ»ãã° - å®éã«äœ¿çšãã SPL ãšæ€çŽ¢çµæãµããªçãå
šãŠèª¿æ»å±¥æŽãšããŠèšé² ## 6. 泚æäºé
- å¿
é ã«ãŒã«ãç®æ¡æžã ## 7. å®è¡æé - å®è¡æé ãããã€ãã®ã¹ãããã«åããŠèšèŒ åŠã³ æ¥ãã°åãããŸãæ¥åå
å®¹ãæŽçã»ææžåããããããåºã«ããã³ãããäœæããããšã§ãAI ãšãŒãžã§ã³ããšã®èªèã®ãºã¬ããªããªããæåŸ
éãã®åºåãåŸãããã ãåŠã³ïŒããã§ããããšããšãããã¹ãããšãã¯éã ãããäžçªã®å€±æè«ãããããŸããã AI ãšãŒãžã§ã³ããš Splunk MCP ãçµã¿åããããšããé床ã«è€éãªèª¿æ»ããæ°è»œã«ã§ããŠããŸããŸããããã£ããã ããããã®èгç¹ã远å ããããããã£ãšæ·±æãã§ãããªâŠããšãæ°ã¥ãã°ç£èŠå¯Ÿè±¡ã®èгç¹ãåºããããŠãæ¬æ¥æ³šåãã¹ããã€ã³ãããŒãããŠããŸããã ããã«åä»ãªã®ã¯ãããã£ãŠããæããåºãŠããŸãããšã§ããAI ãšãŒãžã§ã³ãã倧éã®åæãããŠãããã®ã§ããªããšãªãä»äºãããæ°ã«ãªããŸãããããå®éã«ã¯ãçæãããã¬ããŒãã®ã¬ãã¥ãŒã«æéãããããæ¬æ«è»¢åãªç¶æ
ã«é¥ã£ãŠããŸããã ãããŸã§ãåèªååãã§ãããæçµå€æã¯äººéãè¡ããŸãã人éãã¬ãã¥ãŒã§ããç¯å²ã§ãæ¬æ¥æ³šåãã¹ã芳ç¹ã«çµãããšããã®æèã倧äºã ãšåŠã³ãŸããã åŠã³ AI ãšãŒãžã§ã³ããã§ããããšãæå€§éããã®ã§ã¯ãªãã人éã®ã¬ãã¥ãŒãå«ããå
šäœã俯ç°ãããç£èŠã®æå³ãã«ç«ã¡è¿ããããã£ãŠããæãã«æããããªãã ãåŠã³ïŒãæ¥åã®æšæºåå¹æã¯æ³å®ä»¥äžã ã£ãïŒ åœåã¯ãäœæ¥æéã®ççž®ããäž»ãªç®çãšããŠããŸãããããæ¥åã®æšæºåããšãã坿¬¡çå¹æãæ³å®ä»¥äžã§ããã è©³çŽ°ãªæé æžãäœæããããšã§ãå€æåºæºãææåãããããšã«å ããŠããã°è§£æã¹ãã«ã SPL ã®ç¥èãèŠããéšåã AI ãšãŒãžã§ã³ããæ
åœããããšã§ãå°éç¥èã®æç¡ã«é¢ãããã誰ã宿œããŠãäžå®ã®å質ã§ç£èŠæ¥åãè¡ããããã«ãªããŸããã çµæãšããŠãåŒãç¶ãããããããªããããŒã å
šäœã®å¯Ÿå¿ååäžã«ãã€ãªãã£ãŠããŸãã åŠã³ AI ãšãŒãžã§ã³ã掻çšã¯å¹çåã ãã§ãªããæ¥åã®æšæºåã»å±äººåã®è§£æ¶ã«ã倧ããªå¹æãããã 5. ãŸã 課é¡ãšããŠæ®ã£ãŠããããš åèªååãå®çŸãããã®ã®ãæ£çŽã«èšããšãŸã æ¹åã®äœå°ããããŸãã å質ãã§ãã¯ã«äžå®æéãããã AI ãšãŒãžã§ã³ãã®åºåãéµåã¿ã«ã¯ã§ããªãããã人éã«ããã¬ãã¥ãŒã¯å¿
é ã§ãããã°ã®æ¥æãä»¶æ°ã倿å
容ã®åŠ¥åœæ§ãã§ãã¯ã«ã¯ãäŸç¶ãšããŠäžå®ã®æéãèŠããŸãã ãã¬ããžã®èç©ã»åæ ã®ä»çµã¿ æ¥ã
ã®èª¿æ»ã§åŸãããããã®ãã¿ãŒã³ã¯å®ã¯ããã ã£ãããšãã£ã现ããªãã¬ããžããããã³ãããžãã£ãŒãããã¯ããä»çµã¿ãæŽã£ãŠããŸãããçŸåšã調æ»å±¥æŽãåç
§ãã圢ã§è§£æ¶ã§ããªããæ€èšŒäžã§ãã æé æžãããã³ãããç£èŠèгç¹ã®ã¡ã³ããã³ã¹ æ°ããè
åšãã¿ãŒã³ãç£èŠããåŸãããç¥èŠã«åãããŠãæé æžã»ããã³ããã»ç£èŠèгç¹ïŒSPLïŒãæŽæ°ããå¿
èŠããããŸããçŸç¶ããããã«ã€ããŠã¯å±äººçã§ãã¡ã³ããã³ã¹ããã»ã¹ã®æšæºåãä»åŸã®èª²é¡ã§ãã 6. ãŸãšã ä»åã®åãçµã¿ãéããŠåŠãã 3ã€ã®ããšãæ¯ãè¿ããŸãã ãã¹ãŠã¯ãæé ã®æç¢ºåãããå§ãŸã æ¥ãã°åãããŸãæ¥åå
å®¹ãæŽçã»ææžåããããããåºã«ããã³ãããäœæããããšã§ãAI ãšãŒãžã§ã³ããšã®èªèã®ãºã¬ããªããªããæåŸ
éãã®åºåãåŸãããã ãã§ããããšããšãããã¹ãããšãã¯éã AI ãšãŒãžã§ã³ããã§ããããšãæå€§éããã®ã§ã¯ãªãã人éã®ã¬ãã¥ãŒãå«ããå
šäœã俯ç°ãããç£èŠã®æå³ãã«ç«ã¡è¿ããããã£ãŠããæãã«æããããªãã æ¥åã®æšæºåå¹æã¯æ³å®ä»¥äž å¹çåã ãã§ãªããæ¥åã®æšæºåã»å±äººåã®è§£æ¶ãšãã广ã倧ããã ãAI ãšãŒãžã§ã³ãã§æ¥åå¹çåããšãããšè¯ããã«èãããŸãããå®éã«ã¯å°éãªèšèªåäœæ¥ãšè©Šè¡é¯èª€ã®é£ç¶ã§ããã ãã®åãçµã¿ãéããŠæããã®ã¯ããæ¥åå¹çåãã§ã¯ãªããæ¥åã®æ£åžããšæšæºåããšæããããšããããŠå®å
šèªååã§ã¯ãªããåèªååããšããçŸå®çãªãŽãŒã«ãèšå®ããããšã®å€§åãã§ãã ãã®èšäºããAI ãšãŒãžã§ã³ãã®æ¥å掻çšãæ€èšããŠããæ¹ã®åèã«ãªãã°å¹žãã§ãã
ãã®èšäºã¯ KINTOãã¯ãããžãŒãº Advent Calendar 2025 ã®20æ¥ç®ã®èšäºã§ãð
ð ã¯ããã« ã©ã¹ãã¬ã¹ã§éå¬ããã AWS re:Invent 2025ã«åŒç€Ÿãã6åãåå ããŠããŸããã äžçäžãããšã³ãžãã¢ãéãŸããAWSã®æ°ãµãŒãã¹ãçºè¡šãããããã¯ãŒã¯ã·ã§ãããéããŠäœ¿ãæ¹ãåŠã¹ããããã幎ã«äžåºŠã®å·šå€§ã€ãã³ãã§ãã æéïŒ12/1(æ)ã12/5(é) åå è
æ°ïŒçŸå°çŽ6äžäººïŒãã¡æ¥æ¬ããã®åå è
ã¯çŽ1,900人ïŒïŒãªã³ã©ã€ã³çŽ200äžäºº ã»ãã·ã§ã³æ°ïŒ3,044 â»ãããã®æ°å€ã¯ãre:Invent 2025äžã®å
¬åŒã»ãã·ã§ã³ãJapan Wrap-up Session & Werner's Keynote (GBL105)ãïŒçŸå°æé12/4 14:45-17:30ïŒã§çºè¡šãããå
Œξ
å ±ã§ãã 2025幎6æã«æ¥æ¬ã§è¡ãããAWS Summit Japan 2025ã®ã»ãã·ã§ã³æ°ã160以äžãšã®ããšãªã®ã§ãèŠæš¡ã®éãã容æã«ããããŸãã ãã®èšäºã§ã¯çŸå°ã«è¡ããŸã§ç¥ããªãã£ãããšããåå ããŠæ¬åœã«åœ¹ç«ã£ãTipsããŸãšããŠããŸãã æ¥å¹Žä»¥éãåå ãæ€èšããŠããæ¹ã®åèã«ãªãã°å¹žãã§ãã æºåïŒæã£ãŠãã£ãŠããã£ããã®ïŒ é²é³æ©åš ã»ãã·ã§ã³äžã«ã¡ã¢ãåãå¿
èŠãã»ãšãã©ãªããªããŸãã ç§ã¯ Plaud NotePin ãã¬ã³ã¿ã«ããŸããã é²é³ããAIèŠçŽããŠæŽçããŠãããã®ã§ãç®ã®åã®å
容ã«éäžã§ããŸãã ãªãé²é³ããããšãäžå®ãªå Žåã¯ããããããè¬åž«ãã¹ã¿ããã«ç¢ºèªãããšè¯ãã§ãã ç§ã確èªããéã«ã¯ããã¡ããïŒããšããåçãããããŸããã ã±ãã« ãããªãã±ãã«ïŒãšæããŸãããã©ã¹ãã¬ã¹ã®ããã«ã§ã¯çœ®ããŠããªããšãããå€ãïŒãããïŒã§ãã æäžçªã®ããŒããŒãã«è¡ãæ¹ã¯ã«ã³ãã¡ã¬ã³ã¹ã®ã飯ãé£ã¹ãŠããŠã¯éã«åããªãå Žåãããã®ã§ãçšæããŠãããšè¯ãã§ãããã ãŸãæå·®ãã±ã«ããã倿޻åããŠããŸã人ã«ã䟿å©ã§ãã åã»ãã·ã§ã³Typeã®éã ã»ãã·ã§ã³ãå€ãããŠã©ããéžãã§ãããåãããªãæ¹ãžããŸãã¯ã»ãã·ã§ã³Typeã®éããæèãããšè¯ãã§ãã Breakout Session æããªãŒãœããã¯ã¹ãªè¬çŸ©åœ¢åŒãæ°ãµãŒãã¹ã®è§£èª¬ããã¹ããã©ã¯ãã£ã¹ãªã©å¹
åºãã§ãã 人æ°ãªã»ãã·ã§ã³ã¯ã¿ã€ãã«ã«[OVERFLOW]ãšæžãããäžç¶åœ¢åŒã®ãã®ããããŸãã®ã§ãæ ç¹ç§»åãéã«åããªãå Žåãªã©ã¯ããã«åå ããã®ãæã§ãã ãã ã座åžéãçãããPCãåºããã®ã¯è³é£ã®æ¥ã§ãããã©ããããçãããšãããšãæ¥æ¬ã®é»è»ã®åº§åžããçããè
çµã¿ããããã®ãªã暪ã®äººãšåœããã¬ãã«ã§ããã åŸæ¥YouTubeã§é
ä¿¡ãããã®ã§ãåªå
床ãé«ããªããã°ãããåŸ
ã€ã®ãããã§ãã Builderâs Session è¬åž«1人ã«å¯ŸããŠ10人çšåºŠãåå ãããã³ãºãªã³åœ¢åŒã®ã»ãã·ã§ã³ãäºå説æåŸã«ãã³ãºãªã³æé ãé
ãããã®ã§ãããã«åŸã£ãŠé²ããŸãã è¬åž«ãšã®è·é¢ãè¿ãã®ã§ãæ°ã«ãªãæ©èœãæ·±æããããæ¹ã¯åå ãããšè¯ãã§ãããã PCïŒlaptopïŒãå¿
é ã§ãããã³ãºãªã³ã®æé ãèŠãªããé²ãããããããPCãšã¯å¥ã«å°ããªã¢ãã¿ãŒããããšäŸ¿å©ã§ãã èªåã¯éå»ã®åå ã¬ããŒããèŠãŠãiPadãæåããŠç»é¢æ¡åŒµã§ããããã«ããŠããŸããã æ¥æ¬ããã®åå è
以å€ã§ã¯ããŸããã£ãŠãã人ã¯ããªãã£ãã§ãããæ°ã«ããåºããŠåé¡ãªãã£ãã§ãã  è¬åž«ã®æ¹ãããããããïŒããšæããæå¿ããŠãŸãã Workshop ãã¡ããPCãå¿
é ã§ãã æ°æéãããŠè¡ããããã³ãºãªã³åœ¢åŒã®ã»ãã·ã§ã³ãBuilderâs Sessionãšæ¯ã¹ãŠå€§èŠæš¡ãªéšå±ã«æ°äººã®è¬åž«ãããŸãã ãã¡ããè¬åž«ãæãŸããã°è³ªåã¯ã§ããŸãããåå è
ãå€ããé çªãåã£ãŠãããŸã§æéããããå ŽåããããŸãã Gameday ãã¡ããPCãå¿
é ã§ãã ããŒãã«ã«éãŸã£ãã¡ã³ããŒã§èª²é¡ã解決ããããšã§é äœãç«¶ãã»ãã·ã§ã³ã§ãã ãŸãè¬åž«ããäºå説æããããŸãããã®åŸãããŒã ã¡ã³ããŒãšåœ¹å²åæ
ããªãããŽãŒã«ãç®æããŸãã èªå以å€ã®ã¡ã³ããŒãšåãããå±
å¿å°ãæªããšæããããåžãç§»åããŠããŸã£ãŠãåé¡ãªãããã§ãã å®éã«ãã®ããã«ããŠããæ¹ã¯ããŸããã ä»ã®æ¹ã®åå ã¬ããŒãã§ã¯äºåç¥èäžèŠãšããæ¹ãããŸãããç§ãåå ããäŒã§ã¯ããçšåºŠã®ã€ã³ãã©ç¥èãå¿
èŠã§ãã⊠Chalk Talk å°äººæ°ã®èŽè¡ã察象ãšãã察話圢åŒã®ã»ãã·ã§ã³ã§ããè¬åž«ã«ããçãè¬çŸ©ãšããã®åŸã®åå è
ãšã®Q&Aã§æ§æãããŸããå®äžçã®ã¢ãŒããã¯ãã£ã®èª²é¡ãäžå¿ãšããæè¡çãªè°è«ãããŸãã ä»ã®ã»ãã·ã§ã³ãšæ¯ã¹ããšè¬åž«ã«è³ªåã§ããæéãå€ãããŸãèšé²ã«ãæ®ããªãã®ã§ããŸãã«çŸå°ã«è¡ã£ãŠåå ãã䟡å€ã®ããã³ã³ãã³ããšãªã£ãŠããŸãã è±èªã«èªä¿¡ãããæ¹ã¯ãã²åå ããŠçºèšããŠã¿ãŠãã ããã Code Talk è¬åž«ãå®è£
ããªãããµãŒãã¹ã«ã€ããŠè§£èª¬ãããã»ãã·ã§ã³ã§ãã Lightning Talk 20åçšåºŠã®çæéã»ãã·ã§ã³ã§ãã ã»ãã·ã§ã³ãšã»ãã·ã§ã³ã®ééæéã§èŽãããšãã§ããŸãã åãæ¹ã®Tips äŒå Žãç°ãªãã»ãã·ã§ã³ç§»åã¯1æéèŠèŸŒã äŒå Žãç°ãªãã»ãã·ã§ã³ã®å Žåã¯1æéãèŠèŸŒãã§ãããšå®å
šã§ãã ã¡ãªã¿ã«re:Inventã¯ã©ã¹ãã¬ã¹ã®è€æ°ã®ããã«ã»ã³ã³ãã³ã·ã§ã³ã»ã³ã¿ãŒã§åæã«éå¬ãããŸããã åãã以äžã®éãã®äžŠã³ã«ãªã£ãŠããã1ã€1ã€ã®äŒå Žã倧ããã§ãã Wynn Venetian Caesars Forum MGM Grand Mandalay Bay åå ãããã»ãã·ã§ã³ãéå¬ãããŠããäŒå Žã«æéãŸã§ã«åããå¿
èŠããããŸãã 1.äŒå Žéã®ç§»å ãŸãç§»åã«æéãããããŸããç§»åææ®µãšããŠã¯ä»¥äžã®ãã®ããããŸãã åŸæ© ã¢ãã¬ãŒã« ã·ã£ãã«ãã¹ ã¿ã¯ã·ãŒ/ã©ã€ãã·ã§ã¢ é£ãåã£ãäŒå Žã®WynnâïžVenetianã§ãã£ãŠããåŸæ©15åçšåºŠããããŸããã ãŸãåäŒå Žéã¯ã·ã£ãã«ãã¹ãèµ°ã£ãŠãããäŒå ŽåºãŠãããã°ã«çºçããã®ã§ã¢ã¯ã»ã¹ãè¯ãããããã§ãããéè¡ééã15ã20åçšåºŠç©ºãããšããããŸãã ã©ã€ãã·ã§ã¢ã®å Žåã¯åŒã¹ãå Žæãå¶éãããŠããå Žåããããç®ã®åãä¹è»å Žæã«æå®ã§ããªãããšããããŸãã  äŒå Žåã«ããã·ã£ãã«ãã¹ åäŒå Žããšã«åãããŠãã 2.è·ç©æ€æ» äŒå Žã«å°çããŠãè·ç©æ€æ»ãããã®ã§ãæ··éå
·åã«ãã£ãŠã¯æéãèŠããŸãã PCãã¿ãã¬ãããåãåºããŠã»ãã¥ãªãã£ãééããå¿
èŠããããŸãã åŒã³æ¢ããããŠããŸã£ãããå
¥å¿µã«è·ç©ããã§ãã¯ãããŸãã 3.äºçŽããŠããŠãã»ãã·ã§ã³éå§10ååã«ã¯äŒå Žãž re:Inventã«ã¯ãWalk-upããšããåœæ¥æ ããããŸãã äºåäºçŽãåãŸã£ãŠããŸã£ãŠãå
¥ããå¯èœæ§ããããã®æ ã§ãããã»ãã·ã§ã³éå§10ååã«äºçŽãã人ã察象ãšããåä»ãäžæŠç· ãåããåœæ¥æ ã®å
¥å Žãéå§ããŠããŸããŸãã ããã«ãããäºåäºçŽããŠããŠãå
¥ããªããªãããšãããã®ã§æ³šæãå¿
èŠã§ãã  䞊ã¶åãäºçŽæ ãšåœæ¥æ ã§åãããŠãã 1æ¥1ã€ã®äŒå Žã«ããã£ãŠã¿ã ç§»åã倧å€ã§ããã°ãç¹å®ã®æ ç¹ã«1æ¥ããã£ãŠã»ãã·ã§ã³ã梯åããã®ãã¢ãªã§ãã åäŒå Žã«ã¯æé£ã»æŒé£ã»è»œé£ïŒã³ãŒããŒãçŽ
è¶ããèåãªã©ïŒãçšæãããŠããã®ã§ãé£äºé¢ãå¿é
ãããŸããã æ¬¡ã®ã»ãã·ã§ã³ãŸã§æéãããå Žåã¯åã®ã»ãã·ã§ã³ã®å
容ãèŠçŽãã®ãããããã§ãã äŒå Žã®å»äžã«ã¯åºã«åº§ã£ãŠPCãéããŠãã人ãããããããŸããã  奥ã®çªéã«äººã座ã£ãŠãããåã
ã®äœæ¥ãããŠãã æ°æ©èœã«ã€ããŠç޹ä»ãã[NEW LAUNCH]ãçªåŠåºãŠãã re:Inventéå¬åãæéäžããŸãKeynoteã§çºè¡šãããæ°æ©èœã¯ãã»ãã·ã§ã³ã¿ã€ãã«ã®é ã«[NEW LAUNCH]ãšèšèŒãããŠãããã®ãçªç¶åºãŠããå ŽåããããŸãã æ°ã«ãªãæ°æ©èœã®å Žåã¯ã»ãã·ã§ã³äžèЧããšãã©ãæ¢ããŠã¿ãŠãæ°ãã远å ãããŠããªããèŠããšè¯ãã§ãããã SNSã§æ
å ±ãæ¢ã äžèšã®ãããªæ°æ©èœã®ã»ãã·ã§ã³æ
å ±ããçªç¶å§ãŸãSWAGïŒããã«ãã£ïŒé
åžæ
å ±ãªã©ãSNSã§æ¡æ£ãããŠããããšããããŸãã æ°ã«ãªãæ°æ©èœã®ã»ãã·ã§ã³ãå®ã¯2æéåã«çµäºããŠãããšããããšããã£ãã®ã§ãéäžãã§ãã¯ããããšãããããããŸãã 5æ¥éãããã®ã§é 匵ããããªã ã»ãã·ã§ã³ãè©°ã蟌ã¿ããããšäœåãæ¶èããŸãã æ¥æ¬ããã®ç§»åã®ç²ããæ¥ã
ã®ç§»åã®ç²ããªã©ãç¥ããªãéã«èç©ããŠãããŸãã æ¥œããã«ãäœåãããã®ã§ãç¡çããã«è¡åããŸãããã ç²ããæºãŸã£ãæã«ã¯èªå®è
ã©ãŠã³ãžã«è¡ãã®ãããããã§ãã ããŒãã«åžããœãã¡åžãªã©ãããã軜é£ãçšæãããŠããŸãã äŒå Žã®å»äžã§ä»®ç ãåãã®ã¯å¿é
ã§ããããã®ã©ãŠã³ãžã§ã¯äœäººãä»®ç ããŠãã人ãããŸããã  Venetianã«ããèªå®è
ã©ãŠã³ãž ã€ãã³ããæ¥œãã AWSå
¬åŒãäŒç»ããŠããã€ãã³ããæ¯æ¥äœããããããŸãã ã»ãã·ã§ã³ããªãæãå€ã®æéã§éå¬ãããŠããã®ã§ãæ¯æãïŒå
Œãããã¯ãŒãã³ã°ïŒã«åå ããŠã¿ãŸãããã ç§ã¯4ã€åå ããŠã¿ãŸããã APJ Kick Off Party APJïŒã¢ãžã¢å€ªå¹³æŽã»æ¥æ¬ïŒã®åå è
åãã®ã€ãã³ã ãã³ãŽå€§äŒ 5k race ãã£ãªãã£ãŒãç®çãšãã5kã®ã©ã³ãã³ã° re:Play 4æ¥ç®ã®å€ã«éå¬ããããã»ãã·ã§ã³ã«é 匵ã£ãŠåå ããåå è
ãžã®ãè€çŸã€ãã³ã  æ6æã«äŒå Žã«éãŸã£ãåå è
ã³ãã¥ãã±ãŒã·ã§ã³ãå
šåã§æ¥œãã re:Inventã«åå ããŠåŒ·ãæããã®ã¯ãçŸå°ã§åŸããã䟡å€ã®å€ãã¯ã³ãã¥ãã±ãŒã·ã§ã³ããçãŸããŠãããšããããšã§ããã è±èªã«èªä¿¡ãããããã§ã¯ãããŸããã§ããããAWSãšããå
±éèšèªãããããšã§ãæã£ãŠãã以äžã«äŒè©±ã¯ã§ããŸãããã»ãã·ã§ã³ã®ææ³ãäžèšäŒãããããµãšæããçåã質åããããããšãæ°ããèŠç¹ãæ°ã¥ããåŸãããå Žé¢ãå€ãã£ãã§ãã æ¥æ¬äººå士ã§ãã£ãŠããåå ããŠããã»ãã·ã§ã³ã泚ç®ããŠãããããã¯ã¯ããããç°ãªããäŒè©±ãéããŠèªå1人ã§ã¯æŸããªãã£ãæ
å ±ãåŸãããšãã§ããŸããã ïŒãé
ã®å Žã§ãååºã亀æãããšããã«ãæ¥æ¬äººããããæããå¬ãããªããŸãããïŒ çŸå°ã®ç±éãæã匷ãæããããã®ãã人ãšçŽæ¥ã³ãã¥ãã±ãŒã·ã§ã³ãåã£ãŠããç¬éã§ããã KeynoteåŸã®ããã€ãããã»ãã·ã§ã³çµäºåŸã®é«ææã¯ããã®å Žã§èª°ããšå
±æããããšã§ããé®®æã«æããããŸããã æ
ã®æ¥ã¯ããæšãŠãšããèšèéããããŸã話ããªãã£ããšããŠããã®å Žéãããããªããšé æ
®ããã«ã©ãã©ã話ããããŠãçŸå°ã§æããç±éãæå€§åããã®ã¯è¯ãã£ããšæããŸãã å®éã«ãã®äœéšã¯ãäžæãè¡ããªãã£ãããšå«ããæ¥æ¬ã«æ»ã£ãŠããã®åŠç¿ææ¬²ãã¢ãããŒã·ã§ã³ãšããŠç¢ºå®ã«èªåã®äžã«æ®ããŸããã ãŸãšã re:Inventã¯ãæè»ãããã«ã®ã ãšæããŸããã åå åã¯3,000ãè¶
ããã»ãã·ã§ã³ã®äžããäœãéžã¹ã°ãããåããããåå ãããã»ãã·ã§ã³ã¯äºçŽéå§ãšåæã«åãŸã£ãŠããŸããæºè¶³ã«ã»ãã·ã§ã³ã«åå ã§ããªããŸãŸçµãã£ãŠããŸãã®ã§ã¯ãªããããããªäžå®ãæ±ããªããã©ã¹ãã¬ã¹ã«åãããŸããã ããããããã¯ææã§ããã Walk-upãšåŒã°ããåœæ¥æ ãæŽ»çšããã°äºçŽãªãã§ãåå ã§ããŸãããã»ãã·ã§ã³ã«ãã£ãŠã¯éå§åŸã空åžãããã°å
¥å Žã§ããŸããããã©ããç¡çã ããããšè«Šãããææ¢ã«ææŠããŠã¿ãããšã®å€§åããåŠã³ãŸããã Gamedayã®ãããªåå è
å士ã§ã³ãã¥ãã±ãŒã·ã§ã³ãåãå Žããæåã¯è±èªåãžã®äžå®ããããŸããããã®ãªã®ãªäŒè©±ãã§ããããšã宿ã§ããã®ã§åå ããŠããã£ãã§ãããã¡ããããèšãããã£ãããšã¯ãããããªãã£ãâŠããšæ¯ãããæããããããšããããŸãããããããããã£ãšè±èªãåŠãŒãããšããå
·äœçãªã¢ãããŒã·ã§ã³ã«å€ãããŸããã 5æ¥éãæ¥åãé¢ããŠåŠã³ã«éäžã§ããç°å¢ã¯è²Žéã§ãããæè¡ãæ·±æãããæ°ã«ãªãããšãããã°ãã®å Žã§è³ªåã§ããããããªèŽ
æ²¢ãªå Žã¯ãããããããŸããããããŠãããã ãå€ãã®AWSãã¡ã³ãäžçäžããéãŸããç±éãæ³šãã§ããå
æ¯ãç®ã®åœããã«ã§ããããšã倧ããªåç©«ã§ããã ããããåå ãããæ¹ããèšç»éãã«ãããªãããšãæããããã®å Žãã®å Žã§æ°ããéžæè¢ãèŠã€ããŠã¿ãŠãã ããã ïŒ2026幎ã¯11/30ã12/4ãšæ±ºå®ããŠããã¿ããã§ããïŒ
ãã®èšäºã¯ KINTOãã¯ãããžãŒãºã¢ããã³ãã«ã¬ã³ããŒ2025 ã®19æ¥ç®ã®èšäºã§ãð
ð KINTOãã¯ãããžãŒãºã§ UnlimitedïŒAndroidïŒã¢ããªã®éçºãæ
åœããŠãã kikumido ãšç³ããŸãã ãããŸã§ Android ã® UI å®è£
ã§ã¯ãFigma ã®ãã¶ã€ã³ãèŠãªããè²ã»ã¿ã€ãã°ã©ãã£ãŒã»ã¬ã€ã¢ãŠãã»ã¢ã»ãããæäœæ¥ã§ Compose ãžèœãšã蟌ãå¿
èŠããããã©ãããŠãæéãšåŽåãããã£ãŠããŸããã ããããFigma ãæäŸãã MCPïŒModel Context ProtocolïŒ ãšãAnthropic ã® Claude Code ãçµã¿åãããããšã§ããã®ã¯ãŒã¯ãããŒã倧ããå€ãããŸãã Figma MCP ãéã㊠AI ããã¶ã€ã³ããŒã¿ãçŽæ¥èªã¿åããClaude Code ã Compose ã³ãŒããèªåçæ ããŠãããããããããŸã§æäœæ¥ã§è¡ã£ãŠããå·¥çšãäžæ°ã«å¹çåãããŸãã æ¬èšäºã§ã¯ããã®ãFigma MCP à Claude Codeãã«ãã UI å®è£
é«éåã®æµãããèšå®æ¹æ³ããããã³ããäŸãçæçµæãŸã§ãŸãšããŠç޹ä»ããŸãã ç®æ¬¡ Figma MCP ãæå¹ã«ãã MCP ã¯ã©ã€ã¢ã³ããå°å
¥ãã API TokenïŒPATïŒãèšå®ãã Figma ã®ãã¡ã€ã« URL ãæå®ãã Claude Code ã«å®è£
ãäŸé Œãã å®è¡çµæ ãŸãšã 1. Figma MCP ãæå¹ã«ãã ãã¹ã¯ãããç Figma ã® MCP ãµãŒããŒæ©èœããªã³ ã«ããã ãã§æºåã¯å®äºã§ãã å
¬åŒãã«ãã«éåžžã«ããããããæé ããããŸãã ð https://help.figma.com/hc/ja/articles/32132100833559-Figma-MCP%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E3%82%AC%E3%82%A4%E3%83%89 2. MCP ã¯ã©ã€ã¢ã³ããå°å
¥ãã æ¬èšäºã§ã¯ãããŒã ã§äœ¿çšããŠãã Claude Code ã MCP ã¯ã©ã€ã¢ã³ããšããŠèšå®ããŸãã Claude Code 㯠Figma MCP ã«å
¬åŒå¯Ÿå¿ããŠãããèšå®ãéåžžã«ç°¡åã§ãã ð https://developers.figma.com/docs/figma-mcp-server/remote-server-installation/#claude-code 3. API TokenïŒPATïŒãèšå®ãã Figma ã® API ãå©çšããããã«ã¯ Personal Access TokensïŒPATïŒ ãå¿
èŠã§ãã ã»ãã¥ãªãã£ãèæ
®ããClaude Codeã«çŽæ¥PATãèšèŒããã®ã§ã¯ãªã ç°å¢å€æ°ã«ä¿åããŠäœ¿çšããæ¹æ³ãå®å
š ã§ãã 3.1 ç°å¢å€æ°ãå®å
šãšãããçç± èª€ã£ãŠAIã«éä¿¡ãããªã Git ã«èª€ã³ãããããããªã¹ã¯ãé²ãã PCïŒOSïŒã®ãŠãŒã¶ãŒæš©éã§ä¿è·ããã 3.2 PAT ã®ååŸæ¹æ³ Figma ã«ãã°ã€ã³ å³äžã®èªåã®ã¢ã€ã³ã³ â Settings å·Šã¡ãã¥ãŒã® Personal Access Tokens Generate new token ååãå
¥åããŠçæ â 衚瀺ãããããŒã¯ã³ãã³ããŒïŒå衚瀺äžå¯ïŒ 3.3 ç°å¢å€æ°ãžã®èšå®ïŒäŸïŒmacOS / LinuxïŒ echo 'export FIGMA_TOKEN="ããªãã®PAT"' >> ~/.zshrc source ~/.zshrc PAT ã®è©³çŽ°ïŒ ð https://www.figma.com/developers/api#access-tokens 4. Figma ã®ãã¡ã€ã« URL ãæå®ãã Claude Code ã« Figma ã® URL ãæž¡ãã ãã§ã ããŒãéå±€ã»ã¬ã€ã¢ãŠãã»è²ã»ãã©ã³ãã»ç»åã¢ã»ãã ãèªåã§èªã¿èŸŒã¿ãŸãã 4.1 æ£ãã Figma ãã¡ã€ã« URL ã®ååŸæ¹æ³ 察象㮠ãã¬ãŒã / ã³ã³ããŒãã³ã / ã¬ã€ã€ãŒ ãéžæ å³ã¯ãªã㯠Copy â Copy linkïŒãªã³ã¯ãã³ããŒïŒ â ?node-id=xxx ãå«ãæ£ãã URL ãã³ããŒãããŸãã 4.2 ç°å¢å€æ°ãžã®èšå®ïŒäŸïŒmacOS / LinuxïŒ echo 'export FIGMA_FILE_KEY="ã³ããŒãããªã³ã¯"' >> ~/.zshrc source ~/.zshrc 5. Claude Code ã«å®è£
ãäŸé Œãã 以äžã¯ãFigma ã®ãã¶ã€ã³ã Jetpack Compose ã«èœãšã蟌ãããã®ããã³ããäŸã§ãã ãèªåã®ãããžã§ã¯ãã«åãããŠé©å®èª¿æŽããŠãã ããã ç®çïŒ Figma MCP ã䜿ããFigma ã®ãã¶ã€ã³ããŒã¿ãçŽæ¥åç
§ã㊠Jetpack Compose ã® UI ã³ãŒããçæããŠãã ããã åæïŒ - FIGMA_TOKENïŒç°å¢å€æ°ïŒ - FIGMA_FILE_KEYïŒç°å¢å€æ°ïŒ â ãã¶ã€ã³æ
å ± - Figma ã«ååšããè²ã»Typography ã®ã¿äœ¿çšããæªå®çŸ©ã®å€ã¯è¿œå ããªã - 以äžã®ãã¡ã€ã«ã«åå²ããŠå®è£
- Color.kt - Type.kt - Theme.kt - äžèšããŒãã䜿ã£ãŠ Screen.kt ãå®è£
- @Preview ã远å - äžæç¹ã¯æšæž¬ãããFigma MCP ãååŸããããŒã¿ã䜿çšãã â ç»åã¢ã»ããã®æ±ã - SVG ã®å ŽåïŒ - Figma MCP ããååŸãããã¡ã€ã«ãåºã«ãæ£ç¢ºã« Android VectorDrawableïŒ.xmlïŒãžå€æããŠé
眮 - PNG ã®å ŽåïŒ - Figma ã® Export èšå®ã«åŸã - Export èšå®ããªããã°ä»¥äž 5 çš®é¡ã®å¯åºŠã§ PNG ãçæããŠé
眮 - mdpi / hdpi / xhdpi / xxhdpi / xxxhdpi - ã¢ã»ããå㯠Figma åã Android ã®åœåèŠåïŒlower_snake_caseïŒãžå€æããŠäœæãã 6. å®è¡çµæ Claude Code ã¯ãæå®ããã Figma ããŒããã è²ã»Typographyã»ã¬ã€ã¢ãŠãã»ç»åã¢ã»ãã ãååŸãã Color.kt / Type.kt / Theme.kt / Screen.kt / Preview ãèªåçæããŸãã ããã«ãããæäœæ¥ã§è¡ã£ãŠãã è²ã®ã³ãã ãã©ã³ãèšå® ç»åæžãåºã ã¬ã€ã¢ãŠãåçŸ ãšãã£ãäœæ¥ã倧å¹
ã«èªååããã UI å®è£
ã®éåºŠãšæ£ç¢ºæ§ãé£èºçã«åäžããŸãã ããã§ã¯ãClaude Code ã«ããã³ãããæž¡ããçµæã確èªããŠã¿ãŸãããã 6.1 UIã確èªãã å·Šã Figma ãå³ã Claude Code ãå®è£
ãã Compose ã®Previewã§ãã è¯ã粟床ã§åçŸã§ããŠãããšæããŸãã â»ãÃãã¯SVGããVectorDrawableã«å€æãããç»åãã¢ãã¿ãŒã¯PNGç»åã§ãã Figma Composeã®Preview   ã³ãŒãã確èªããŠã¿ãŸãããã 6.2 ã³ãŒãã確èªãã ç»åã¯ä»¥äžã®ããã«å®è£
ãããŠããŸããã Image( painter = painterResource(id = R.drawable.ic_avatar_large), contentDescription = "ã¡ã€ã³ã¢ãã¿ãŒ", modifier = Modifier .size(106.dp) .clip(CircleShape), contentScale = ContentScale.Crop ) Textã¯ä»¥äžã®ããã«å®è£
ãããŠããŸããã styleãè²ã Figma ã§æå®ãããtypographyãcolorãé©åã«æå®ãããŠããŸãã // ãã©ã€ããŒå Text( text = driverName, style = KintoTheme.typography.labelLarge, color = KintoTheme.colors.textPrimary ) å
¥åæ¬ã®å¹
ã Figma ã¯åºå®å€ãªã®ã«å¯ŸããCompose 㯠fillMaxWidth() ã䜿çšã暪å¹
ãã£ã±ãã«åºããããã«ãªã£ãŠããŸããã ãã¡ãã¯Figmaãæ£ãšããã®ã§ããã°å®è£
ãä¿®æ£ããã¹ãã§ãããæšªå¹
ã®åºã端æ«ãèæ
®ããã¶ã€ããŒãšçžè«ããŠãè¯ããããããŸããã å
¥åæ¬ã®éã®äœçœã14dpã§ããããšã Figma éãã«åçŸã§ããŠããŸãã åãèŠãç®ã®å
¥åæ¬ãäžã€ã® InputField ãšããŠå®è£
ãããŠããç¹ã泚ç®ã§ãã ããã«ãéžæç¶æ
ã«åãããŠããŒããŒã®è²ãå€ããããã«ãã§ã«å®è£
ãããŠãããŸãã var selectedField by remember { mutableStateOf<SelectedField>(SelectedField.BirthYear) } // å
¥åãã£ãŒã«ã Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(14.dp) ) { // ç幎æ InputField( label = "ç幎æ", value = birthYear, isSelected = selectedField == SelectedField.BirthYear, onClick = { selectedField = SelectedField.BirthYear }, modifier = Modifier.weight(1f) ) // æ®æ®µã®èµ·åºæå» InputField( label = "æ®æ®µã®èµ·åºæå»", value = wakeUpTime, isSelected = selectedField == SelectedField.WakeUpTime, onClick = { selectedField = SelectedField.WakeUpTime }, modifier = Modifier.weight(1f) ) } InputField 㯠Figma ã®ä»æ§ã©ããã«å®è£
ãããŠãããonClick ãªã©ã®æåããã©ã¡ãŒã¿ã§æè»ã«æž¡ããèšèšã«ãªã£ãŠããŸãã ãŸããå
¥åããã¯ã¹å
ã®ããã¹ãã« typography ãèšå®ãããŠããªãç¹ããFigma ã®å®çŸ©ãå¿ å®ã«åæ ããçµæã§ãã ãªããããã³ããã§ãæªå®çŸ©ã®å€ã¯è¿œå ããªãããšæå®ããªãå ŽåãClaude Code ãæšæž¬ã§é©åãã㪠typography ãè£å®ããŠããŸããŸãã ããããæãŸããã¢ãããŒãã¯ã¢ããªåŽã§è£æ£ããããšã§ã¯ãªããFigma ã®ãã¶ã€ã³åŽãä¿®æ£ããæ£ãã typography ãèšå®ããããšã ãšèããŠããŸãã ãã®æ¹ããUI ã®äžè²«æ§ãã¡ã³ããã³ã¹æ§ã倧ããåäžããããã§ãã @Composable private fun InputField( label: String, value: String, isSelected: Boolean, onClick: () -> Unit, modifier: Modifier = Modifier ) { Column(modifier = modifier) { // ã©ãã« Text( text = label, style = KintoTheme.typography.labelMedium, color = KintoTheme.colors.textPrimary ) Spacer(modifier = Modifier.height(8.dp)) // å
¥åããã¯ã¹ Box( modifier = Modifier .fillMaxWidth() .height(53.dp) .border( width = if (isSelected) 2.dp else 1.dp, color = if (isSelected) KintoTheme.colors.borderFocused else KintoTheme.colors.borderDefault, shape = RoundedCornerShape(8.dp) ) .clickable { onClick() } .padding(horizontal = 16.dp), contentAlignment = Alignment.CenterStart ) { Text( text = value, style = TextStyle( fontFamily = FontFamily.SansSerif, fontWeight = FontWeight.Normal, fontSize = 16.sp, lineHeight = 21.sp ), color = KintoTheme.colors.textPrimary ) } } } å
è¿°ã®ããã³ããã§ã¯æåã strings.xml ã«å®çŸ©ããããã«æç€ºãããŠããªãã®ã§ãã³ãŒãäžã«ãã®ãŸãŸèšèŒãããŠããŸãã å
ã®ããã³ãããä¿®æ£ãããã远å ã§æç€ºãåºãã° strings.xml ã«å®çŸ©ããäžã§äœ¿çšããããšãããŠãããŸãã 7. ãŸãšã ãŸãšããšããŠåŒ·èª¿ãããã®ã¯ã å®è£
ã®ç²ŸåºŠã¯ Figma åŽã®ãã¶ã€ã³ã·ã¹ãã ãé©åã«æŽåãããŠãããã«å€§ããå·Šå³ããã ãšããç¹ã§ãã Figma ã®ã¹ã¿ã€ã«ãæªæŽçã ã£ãããã³ã³ããŒãã³ãåãäžååãªå ŽåãAI ãååŸããæ
å ±ãäžå®å
šã«ãªããçµæçã«ã³ãŒãã®æçŽããå¿
èŠã«ãªã£ãŠããŸããŸãã éã«ããã¶ã€ããŒãšãšã³ãžãã¢ãååããŠãã¶ã€ã³ã·ã¹ãã ããã£ããæ§ç¯ããŠããã°ã UI å®è£
ã®éåºŠã»æ£ç¢ºæ§ã¯é£èºçã«åäžããä¿å®æ§ãæ Œæ®µã«é«ãŸããŸãã ãã®ããã«ãã æ¥é ããå¯ã«é£æºããåãåæã§ãã¶ã€ã³ã»å®è£
ãè¡ãããšãäžå¯æ¬ ã§ãã ããã«ãCompose Multiplatform ãšçµã¿åãã㊠Figma MCP ãæŽ»çšããã°ã ãã©ãããã©ãŒã ããŸããã UI å®è£
ã®é«éåã«ãã€ãªãããããã¹ããŒãã£ã«é«å質ãªã¢ããªéçºãå¯èœã«ãªããŸãã 質ã®é«ãã¢ããªãçŽ æ©ãå±ããããã«ãã ãšã³ãžãã¢ãšããŠç¶ç¶çã«ç¥èãã¢ããããŒãããããè¯ãã¯ãŒã¯ãããŒãæ¢æ±ããŠããããšãéèŠã ãšæããŠããŸãã