ããã«ã¡ã¯ã CTO宀/PlatforméçºããŒã ã§SREãæ
åœããŠããå¯ç°( @Cooking_ENG )ã§ãã ãã¡ã€ã³ãã£ã§ã¯ããããã¯ãããšã«AWSã¢ã«ãŠã³ããåããAWS IAM Identity CenterïŒä»¥éãIdentity CenterïŒã§åAWSã¢ã«ãŠã³ããžã®ãµã€ã³ã€ã³ãšæš©éã管çããŠããŸããAWSã¢ã«ãŠã³ããå¢ããŠãããµã€ã³ã€ã³æ¹æ³ãæèããå¿
èŠã¯ãããŸããã äžæ¹ã§ãåAWSã¢ã«ãŠã³ãã§äœãã§ããããæ±ºããã¢ã¯ã»ã¹èš±å¯ã»ããã®äžèº«ã¯ãSREãŸãã¯ãããã¯ãããŒã ããããã¯ãããšã«åå¥ã«æžããŠããŸããããã®ããããããã¯ããå¢ãããã³ã«ãåããããªããªã·ãŒãäžããæžãå¿
èŠããããŸããã ããã§ä»åãã¢ã¯ã»ã¹èš±å¯ã»ããã®åãæ¹ãèŠçŽããããªãœãŒã¹ã®ç¶æ
ãèŠããããªãœãŒã¹ã®èšå®ã倿Žãããã®ããã«ãAWSã¢ã«ãŠã³ãã§äœããããã§åããŸãããã©ã®ãããã¯ãã§ãåã5çš®é¡ã®èš±å¯ã»ããã䜿ãåœ¢ã«æããŠããŸãã ãã®èšäºã§ã¯ãIdentity Centerã§è€æ°ã®AWSã¢ã«ãŠã³ãã®æš©éã管çããŠããæ¹ããããããå°å
¥ãèããŠããæ¹ã«åããŠããã¡ã€ã³ãã£ã§æš©éãã©ãæŽçããããIdentity Centerã®åºæ¬ãšããããŠç޹ä»ããŸãã IAM Identity Centerã§æš©éãæž¡ãä»çµã¿ èŠçŽãåã®èš±å¯ã»ããã®ç®¡çæ¹æ³ ããªã·ãŒã®æ¬æãæžãé 倿Žã®ç¢ºèªç¯å² ã€ã³ã©ã€ã³ããªã·ãŒã®æåæ°äžé æš©éãããã®AWSã¢ã«ãŠã³ãã§äœãããããã§åãã èš±å¯ã»ããã5çš®é¡ã«èœã¡çããŸã§ èš±å¯ã»ããã®äžèº«ã2çš®é¡ã®ããªã·ãŒã§çµã¿ç«ãŠã ãããã¯ãããŒã ãè§Šãã®ã¯3ã€ã®ãã¡ã€ã«ã ã åºæããªã·ãŒã«æžããªããã®ã¯Terraformã§æ°ã¥ããããã«ãã èŠçŽãåã®3ã€ã®èª²é¡ã¯ã©ãè§£ããã æ§ã°ã«ãŒããšäžŠè¡ããŠäœ¿ããç§»è¡æéã眮ã ãŸãšã IAM Identity Centerã§æš©éãæž¡ãä»çµã¿ Identity Centerã¯ãè€æ°ã®AWSã¢ã«ãŠã³ããžã®ãµã€ã³ã€ã³ãšæš©éã1ãæã§ç®¡çããããã®ãµãŒãã¹ã§ãã ãŠãŒã¶ãŒã¯ã¢ã¯ã»ã¹ããŒã¿ã«ã«1åãµã€ã³ã€ã³ãããããã䜿ããAWSã¢ã«ãŠã³ããšæš©éãéžãã§å
¥ããŸãããããžã¡ã³ãã³ã³ãœãŒã«ã ãã§ãªããAWS CLIãããåãä»çµã¿ã§ãµã€ã³ã€ã³ã§ããã®ã§ãAWSã¢ã«ãŠã³ãããšã«IAMãŠãŒã¶ãŒãäœãå¿
èŠã¯ãããŸããã æ¬é¡ã«å
¥ãåã«ãIdentity Centerã§æš©éãã©ãæž¡ãã®ããæŽçããŠãããŸããç»å Žããã®ã¯æ¬¡ã®4ã€ã§ãã ãŠãŒã¶ãŒïŒUserïŒ : ãµã€ã³ã€ã³ãã人ãã®ãã®ãåAWSã¢ã«ãŠã³ãã«äœãIAMãŠãŒã¶ãŒãšã¯å¥ç©ã§ãIdentity CenteråŽã«1ã€ã ãäœã ã°ã«ãŒãïŒGroupïŒ : ãŠãŒã¶ãŒããŸãšããåäœãæš©éã¯ãŠãŒã¶ãŒå人ã§ã¯ãªãã°ã«ãŒãã«å¯ŸããŠæž¡ã ã¢ã¯ã»ã¹èš±å¯ã»ããïŒPermission setïŒ : ãã©ã®AWSãµãŒãã¹ã«å¯ŸããŠäœãèš±å¯ãããããå®ããããªã·ãŒã®çµã¿åãããAWSã¢ã«ãŠã³ãã«å²ãåœãŠããšããã®AWSã¢ã«ãŠã³ãã®äžã«IAMããŒã«ãšããŠå±éãããã以éãèš±å¯ã»ãããšè¡šèš ã¢ã«ãŠã³ãå²ãåœãŠïŒAccount assignmentïŒ : ããã®ã°ã«ãŒãã«ããã®AWSã¢ã«ãŠã³ãã§ããã®èš±å¯ã»ããã䜿ãããããšããçŽã¥ã èš±å¯ã»ããã®äžèº«ã¯ã次ã®3çš®é¡ã®ããªã·ãŒãçµã¿åãããŠäœããŸãã AWS管çããªã·ãŒïŒAWS managed policyïŒ : ReadOnlyAccess ã®ããã«AWSãçšæããŠãããã®ãååãæå®ããã ãã§äœ¿ãã ã«ã¹ã¿ããŒç®¡çããªã·ãŒïŒCustomer managed policyïŒ : èªåã§äœãIAMããªã·ãŒãèš±å¯ã»ããåŽã«ã¯ããªã·ãŒã®ååã ããæžããå²ãåœãŠå
ã®AWSã¢ã«ãŠã³ãã«åãååã®ããªã·ãŒã眮ããŠããããšãåæã«ãªãã1ã€ã®èš±å¯ã»ããã«è€æ°æ¬ãä»ãããã ã€ã³ã©ã€ã³ããªã·ãŒïŒInline policyïŒ : èš±å¯ã»ããã«çŽæ¥JSONãæžã蟌ããã®ãAWSã¢ã«ãŠã³ãããšã«ããªã·ãŒãçšæããªããŠãã代ããã«ãæåæ°å¶éãããéœåãè€éãªããªã·ãŒãå®çŸ©ããã«ã¯åããªã ä»åèšèšãçŽããã®ã¯ããã®ãèš±å¯ã»ããã®äžèº«ãã©ãçµã¿ç«ãŠã誰ãã©ãã§ç®¡çããããã®éšåã§ãã 以åã¯ã€ã³ã©ã€ã³ããªã·ãŒã ãã§çµã¿ç«ãŠãŠããŸããããæ°ããæ§æã§ã¯ã«ã¹ã¿ããŒç®¡çããªã·ãŒãäžå¿ã«çµã¿ç«ãŠãAWSãçšæããŠããç¯å²ã§è¶³ããæš©éã«ã¯AWS管çããªã·ãŒã䜿ã£ãŠããŸããã€ã³ã©ã€ã³ããªã·ãŒã¯äœ¿çšããŠããŸããã èŠçŽãåã®èš±å¯ã»ããã®ç®¡çæ¹æ³ ãã¡ã€ã³ãã£ã§ã¯ãIdentity Centerã®ã°ã«ãŒããèš±å¯ã»ãããTerraformã§ç®¡çããŠããŸããèŠçŽãåã®Terraformã®æ§æã§ã¯ã1ã€ã®Terraform stateã®çŽäžã«ãã°ã«ãŒã1ã€ã«ã€ã次ã®6ãã¡ã€ã«ã䞊ã¹ãŠããŸããã sso/ âââ group__<ã°ã«ãŒãå>.tf âââ permission_set__<ã°ã«ãŒãå>.tf âââ inline_policy__<ã°ã«ãŒãå>.tf âââ membership__<ã°ã«ãŒãå>.tf âââ account_assignment__<ã°ã«ãŒãå>.tf âââ files/ âââ policy__<ã°ã«ãŒãå>.json.tpl â»æ§æã®èª¬æçšã«ãã¡ã€ã«åãç°¡ç¥åããŠããŸãã Identity Centerã®ã°ã«ãŒãå㯠product_a_stg_developer ã®ããã«ããããã¯ãåã»ç°å¢ã»æž¡ãçžæã®ç«å Žããã€ãªãã圢ã§ãããã®6ãã¡ã€ã«ã®çµãã°ã«ãŒãã®æ°ã ã䞊ã³ãããªã·ãŒã®ãã³ãã¬ãŒãã ãã§ã60æ¬ãè¶
ããŠããŸããã ãã®æ§æã¯é·ãå®å®ããŠåããŠããŸãããããããã¯ããå¢ããã«ã€ããŠãèŠçŽãããç¹ãåºãŠããŸããã ããªã·ãŒã®æ¬æãæžãé æ°ãããããã¯ããç«ã¡äžãããšãã¯ãSREãŸãã¯ãããã¯ãããŒã ãæ¢åã®ãã³ãã¬ãŒããã³ããŒããŠæžãè¶³ã圢ã§ããªã·ãŒãçšæããŠããŸããã1ãããã¯ãåã§æ°çŸè¡ã®ããªã·ãŒãåå¥ã«æžãããšã«ãªããŸãã æš©éã®è¿œå ã¯ãããã¯ãããŒã ãPRãåºããSREãã¬ãã¥ãŒããæµãã§åã£ãŠããŸããããããªã·ãŒæ¬æãé·ãã¶ããPRãåºãåŽã«ãã¬ãã¥ãŒããåŽã«ãæéãããã£ãŠããŸããã 倿Žã®ç¢ºèªç¯å² ãã¹ãŠã®ã°ã«ãŒãã1ã€ã®stateã«ãŸãšãŸã£ãŠããããã1ãããã¯ãã®æš©éãçŽããšãããå
šäœã®plançµæãèŠãŠç¢ºèªãã圢ã«ãªã£ãŠããŸãããã°ã«ãŒããå¢ããã»ã©planã«æéããããã倿Žã®ãã³ã«åŸ
ã€æéãé·ããªã£ãŠããŸããã ã€ã³ã©ã€ã³ããªã·ãŒã®æåæ°äžé ã€ã³ã©ã€ã³ããªã·ãŒã«ã¯ã空çœãé€ããŠ10,240ãã€ããŸã§ãšããäžéããããŸãã æ¢åãããã¯ãã®ããªã·ãŒãè²ã£ãŠãããªãã§ããã®äžéã«ãããã±ãŒã¹ãåºãŠããŸãããã€ã³ã©ã€ã³ããªã·ãŒã®ãŸãŸã§ã¯æžãè¶³ããªããããèš±å¯ã»ããã®äžèº«ãã©ãçµã¿ç«ãŠããããèŠçŽãå¿
èŠããããšèããŸããã æš©éãããã®AWSã¢ã«ãŠã³ãã§äœãããããã§åãã èŠçŽãã«ããã£ãŠæåã«æ±ºããã®ã¯ãèš±å¯ã»ãããäœãåºæºã«åãããããšããç¹ã§ãã以åã¯ãdeveloperãããreleaseãã®ããã«ãæž¡ãçžæã®ç«å Žã§åããŠããŸããã ç«å Žãåºæºã«ããååããã¯ãã°ã«ãŒãã«å
¥ã£ãŠãã人ãAWSã¢ã«ãŠã³ãã§ã©ã®æäœãèš±ãããŠããã®ããèªã¿åããŸãããSecrets Managerã®å€ã®æŽæ°ã®ããã«è·çš®ãåããå¿
èŠãªæäœããããç«å Žã§ã¯å¢çãåŒãã«ããããšãèšèšã®äžã§åãã£ãŠããŸããã ä»åã¯ããã³ã³ããã«å
¥ãããSecrets Managerã®å€ãèªããã®ããã«ãAWSã¢ã«ãŠã³ãã§äœããããã§åããããšã«ããŸãããäœããããã§åããã°ããããã¯ããéã£ãŠãåãçš®é¡ã®èš±å¯ã»ããã«åãäžèº«ã䜿ããã®ã§ãçš®é¡ããšã®ããªã·ãŒã1æ¬ã«ãŸãšããŠç®¡çã§ããŸãã èš±å¯ã»ããã®çš®é¡ã衚ãååã«ã¯ã察象ã®ãªãœãŒã¹åãå«ããŠããŸãããæäœã§ãã察象ã¯ãã©ã®AWSã¢ã«ãŠã³ãã«èš±å¯ã»ãããå²ãåœãŠããã§æ±ºãŸãããã§ããåãoperatorã§ããAWSã¢ã«ãŠã³ãAã«å²ãåœãŠãã°Aã®ãªãœãŒã¹ã ãããAWSã¢ã«ãŠã³ãBã«å²ãåœãŠãã°Bã®ãªãœãŒã¹ã ããæäœã§ããŸãã æäœãããªãœãŒã¹ããšã«èš±å¯ã»ãããåããå¿
èŠã¯ãªãã®ã§ãçš®é¡ã®ååã衚ãã®ã¯ãã³ã³ããã«å
¥ããèšå®ã倿Žãããšãã£ãAWSãªãœãŒã¹ãžã®æäœã ãã§ãã AWSã¢ã«ãŠã³ãã§äœããããã§ååãä»ãããšãã°ã«ãŒãåãèŠãã ãã§ããã®ã°ã«ãŒãã®äººãäœãã§ããã®ããåããããã«ãªããŸããã©ã®ãããã¯ãã§ãåã5çš®é¡ã®èš±å¯ã»ããã䜿ãã®ã§ãæ°ãããããã¯ããå¢ãããšãããèš±å¯ã»ããã®äžèº«ãèãçŽããã«äžŠã¹ãã ãã§æžã¿ãŸãã èš±å¯ã»ããã®çš®é¡ã¯ãæçµçã«æ¬¡ã®5ã€ã«ãªããŸããã èš±å¯ã»ããã®çš®é¡ äœæ¥ äž»ã«ã§ããããš viewer ãªãœãŒã¹ã®ç¶æ
ãèŠã ãªãœãŒã¹ã®é²èЧ operator ã³ã³ããã«å
¥ãã調ã¹ã ECS Execã§ã³ã³ããã«å
¥ããäœæ¥çšECSã¿ã¹ã¯ã®èµ·åãšåæ¢ãã³ã³ããã®èµ·åã«å¿
èŠãªSecrets Managerã®å€ã®åç
§ deploy_manager ãããã€ã«äŒŽãäœæ¥ããã Secrets Managerã®å€ã®æŽæ°ãKMSã§ã®æå·åãšåŸ©å·ãCloudFrontã®ãã£ãã·ã¥åé€ executor ã¿ã¹ã¯ããžã§ããåãã ãããåŠçã®ECSã¿ã¹ã¯ã®èµ·åãStep Functionsã®å®è¡ãAthenaã®ã¯ãšãªå®è¡ãBedrockã®åŒã³åºã editor ãªãœãŒã¹ã®èšå®ã倿Žãã ECSãLambdaãCloudFrontãªã©äž»èŠãµãŒãã¹ã®èšå®å€æŽãRDSã®åèµ·åãã¹ãããã·ã§ããäœæ â»ãã¡ã€ã³ãã£ã§ã¯ãåããŠããã³ã³ããã®äžã調ã¹ããšãã«ECS Execã䜿ã£ãŠããŸãã衚ã®ãã³ã³ããã«å
¥ããã¯ãã®äœæ¥ãæããŸãã èš±å¯ã»ããã«å«ããæš©éã«ã¯ã2ã€ã®åæã眮ããŠããŸãã 1ã€ã¯ãã©ã®èš±å¯ã»ããã«ãé²èŠ§ã®æš©éãå«ããããšã§ãããŸããªãœãŒã¹ã®ç¶æ
ã確èªããŠããã倿Žãå®è¡ã«ç§»ããããã«ããããã§ãã ãã1ã€ã¯ãæš©éã®ç¯å²ãã®ãã®ãå€ããæäœããå
ã«æ»ããªãæäœãã©ã®èš±å¯ã»ããã«ãå
¥ããªãããšã§ããIAMããªã·ãŒãããŒã«ã®äœæã¯æš©éã®ç¯å²ãå€ããKMSããŒãRDSã€ã³ã¹ã¿ã³ã¹ã®åé€ã¯å
ã«æ»ããŸãããIAMã®å€æŽããKMSããŒãšRDSã€ã³ã¹ã¿ã³ã¹ã®äœæã»åé€ã¯Terraformã§ç®¡çããPRã®ã¬ãã¥ãŒãçµãŠé©çšããæµãã«ããŠãããããIdentity Centerã®èš±å¯ã»ããã«ã¯å«ããŠããŸããã èš±å¯ã»ããã5çš®é¡ã«èœã¡çããŸã§ æåã¯viewerãoperatorãeditorã®3ã€ã§èããŠããŸãããããªãœãŒã¹ã®ç¶æ
ãèŠãããã³ã³ããã«å
¥ãã調ã¹ããããªãœãŒã¹ã®èšå®ã倿Žãããã®3段éã§ãã å®éã®éçšã«åœãŠã¯ããŠã¿ããšãããŸãåãŸããªãæäœãåºãŠããŸããããããã€ã®ããšã«CloudFrontã®ãã£ãã·ã¥ãæ¶ãããããããåŠçã®ECSã¿ã¹ã¯ãæã§èµ·åãããããšãã£ãæäœã§ããã³ã³ããã«å
¥ã£ãŠèª¿ã¹ãæäœã§ã¯ãªãã®ã§operatorã«ã¯å
¥ãããããeditorãæž¡ããšèšå®å€æŽãŸã§ã§ããŠããŸããŸãã ããã§ã3çš®é¡ã«åœãŠã¯ãŸããªãã£ãæäœãæ¹ããŠèŠçŽããšããããã€ã«äŒŽãäœæ¥ãšãã¿ã¹ã¯ããžã§ãã®å®è¡ã®2çš®é¡ã«æŽçã§ããŸãããåè
ãdeploy_managerãåŸè
ãexecutorãšããŠè¿œå ããæçµçã«5çš®é¡ã«èœã¡çããŸããã èš±å¯ã»ããã®äžèº«ã2çš®é¡ã®ããªã·ãŒã§çµã¿ç«ãŠã èš±å¯ã»ããã5çš®é¡ã«æããããšãäžèº«ãã©ãçµã¿ç«ãŠãããèããŸããã ä»åã¯ãèš±å¯ã»ããã®äžèº«ã2çš®é¡ã®ããªã·ãŒã§çµã¿ç«ãŠãŠããŸãã1ã€ã¯ãçš®é¡ããšã«1æ¬ãã€çšæããå
±éããªã·ãŒã§ããå
±éããªã·ãŒã¯ãSREãå
šAWSã¢ã«ãŠã³ãã«é
ããŸãããã1ã€ã¯ããããã¯ãããšã«å¿
èŠãªæš©éãæžãåºæããªã·ãŒã§ããåºæããªã·ãŒã¯ããããã¯ãããŒã ãçšæããŸãã å
±éããªã·ãŒã®å®äœã¯ã«ã¹ã¿ããŒç®¡çããªã·ãŒã§ãåå㯠common_operator ã®ããã«çš®é¡ã®ååã§æããŠããŸããå
šAWSã¢ã«ãŠã³ããžã¯ãCloudFormation StackSetã§é
ã£ãŠããŸããStackSetã¯ã1ã€ã®CloudFormationãã³ãã¬ãŒããè€æ°ã®AWSã¢ã«ãŠã³ãã«ãŸãšããŠå±éããä»çµã¿ã§ãã ã«ã¹ã¿ããŒç®¡çããªã·ãŒãèš±å¯ã»ãããã䜿ãã«ã¯ãå²ãåœãŠå
ã®ãã¹ãŠã®AWSã¢ã«ãŠã³ãã«åãååã§çœ®ããŠããå¿
èŠããããŸããStackSetã§é
ããšãã©ã®AWSã¢ã«ãŠã³ãã«ãåãäžèº«ãåãååã§çœ®ãããã®ã§ããã®æ¡ä»¶ãèªç¶ã«æºãããŸãã èš±å¯ã»ããã¯ããããã¯ããšç°å¢ããšã« product_a_stg_operator ã®ãããªååã§äœã£ãŠããŸããäžèº«ã¯ãçš®é¡ã«å¯Ÿå¿ããå
±éããªã·ãŒãååã§åç
§ããŠããã ãã§ãã ãããã¯ãåºæã®æš©éãå¿
èŠã«ãªã£ãããåºæããªã·ãŒãšããŠã«ã¹ã¿ããŒç®¡çããªã·ãŒããã1æ¬äœããåãèš±å¯ã»ããã«è¿œå ããŸãã èš±å¯ã»ããããããã¯ããšç°å¢ããšã«åããŠããã®ã¯ããããã¯ãåºæã®æš©éã远å ã§ããå Žæãèš±å¯ã»ããã«éãããããã§ãã èš±å¯ã»ãããAWSã¢ã«ãŠã³ãã«å²ãåœãŠããšããµã€ã³ã€ã³åŸã«äœ¿ãIAMããŒã«ã AWSReservedSSO_ ã§å§ãŸãååã§äœãããŸããäœãããIAMããŒã«ã¯ä¿è·ãããŠããŠãããªã·ãŒãçŽæ¥ä»ããããšã¯ã§ããŸããã åºæã®æš©éã¯ãããã¯ãããšã«éãã®ã§ãåºæã®æš©éãå
¥ããèš±å¯ã»ããããããã¯ããšç°å¢ããšã«åããŠããŸãã ãããã¯ãããŒã ãè§Šãã®ã¯3ã€ã®ãã¡ã€ã«ã ã æ°ããæ§æã§ã¯ããããã¯ãããšã«æ¬¡ã®ãããªãã£ã¬ã¯ããªã眮ããŠããŸãã sso/product_a/stg/ âââ terraform.tf âââ providers.tf âââ data.tf âââ data__users.tf âââ groups.tf âââ files/ âââ group_catalog.yml â ã©ã®çš®é¡ã®èš±å¯ã»ãããäœãã âââ members.yml â èš±å¯ã»ããããšã®æå±ã¡ã³ã㌠âââ policy_custom__operator.json â ãããã¯ãåºæã®æš©é .tf ãã¡ã€ã«ã¯ã©ã®ãããã¯ãã§ãåãå
容ã§ãããããã¯ãããŒã ãè§Šãã®ã¯ files/ é
äžã®3ã€ã ãã§æžã¿ãŸãã group_catalog.yml ã«ã¯ããããã¯ãåãšç°å¢ã䜿ãããèš±å¯ã»ããã®çš®é¡ã䞊ã¹ãã ãã§ããçš®é¡ã1ã€æžããšãã°ã«ãŒããšèš±å¯ã»ãããæå±ãAWSã¢ã«ãŠã³ããžã®å²ãåœãŠãTerraformã§äžåŒäœãããŸãã æ°ãããããã¯ãã远å ãããšãã®äœæ¥ããèŠçŽãåãšæ¯ã¹ããšæ¬¡ã®ããã«ãªããŸãã èŠçŽãå èŠçŽãåŸ èª°ã SREãŸãã¯ãããã¯ãããŒã ãããã¯ãããŒã äœããã æ¢åãããã¯ãã®ãã³ãã¬ãŒããã³ããŒããæ°çŸè¡ã®ããªã·ãŒãæžãè¶³ã group_catalog.yml ã«äœ¿ãããèš±å¯ã»ããã®çš®é¡ã䞊ã¹ã åºæã®æš©é ããªã·ãŒæ¬æã«çŽæ¥æžãè¶³ã å¿
èŠã«ãªã£ããšãã ãåºæããªã·ãŒã眮ã å
±éããªã·ãŒã¯SREãå
šAWSã¢ã«ãŠã³ãã«é
ãçµããŠããã®ã§ããããã¯ãããŒã ãæ°ããæžããã®ã¯åºæããªã·ãŒã«éãããŸãã ãããã¯ãåºæã®æš©éãå¿
èŠãªãšãã¯ã files/policy_custom__<çš®é¡>.json ã眮ããŸããäžèº«ã¯æ®éã®IAMããªã·ãŒã®JSONã§ããããšãã°ãSession Managerã§ã€ã³ã¹ã¿ã³ã¹ã«å
¥ãæš©éãoperatorã«è¶³ãããå Žåã¯ã次ã®ãããªãã¡ã€ã«ã«ãªããŸãã { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Action ": [ " ssm:StartSession ", " ssm:ResumeSession ", " ssm:TerminateSession " ] , " Resource ": " * " } ] } ãã®ãã¡ã€ã«ã眮ããšãTerraformã product_a_stg_operator_custom ãšããã«ã¹ã¿ããŒç®¡çããªã·ãŒãäœããoperatorã®èš±å¯ã»ããã«è¿œå ããŠãããŸãã å
±éããªã·ãŒãšåºæããªã·ãŒã®ã©ã¡ãã«æžããã«ã¯ç®å®ããããŸããè€æ°ã®ãããã¯ãã§äœ¿ãæš©éã¯å
±éããªã·ãŒã«ãç¹å®ã®ãããã¯ãã ãã§äœ¿ãæš©éã¯åºæããªã·ãŒã«æžããŸãã åºæããªã·ãŒã«æžããªããã®ã¯Terraformã§æ°ã¥ããããã«ãã åºæããªã·ãŒã¯ãããã¯ãããŒã ãèªç±ã«æžããã¶ããåºæããªã·ãŒã«å«ããªãæš©éãå
ã«æ±ºããŠãããŸããã iam:PassRole 以å€ã®IAMã®æäœ RDSã®åé€ãKMSã®éµã®åé€äºçŽ RDSãšKMSã®ã¢ã¯ã·ã§ã³ã§ã®ã¯ã€ã«ãã«ãŒãæå® ãã¹ãŠãèš±å¯ãã * Resourceãçµããªã iam:PassRole Allowã®äžã® NotAction IAMã®æäœãšãRDSãKMSã®éµã®åé€ã¯ãTerraformã§ç®¡çããŠããç¯å²ãªã®ã§ãåºæããªã·ãŒã«ã¯æžããŸããã iam:PassRole ã ãã¯ãECSã¿ã¹ã¯ãªã©ã«IAMããŒã«ãæž¡ããšãã«å¿
èŠãªã®ã§ãResourceãçµãããšãæ¡ä»¶ã«åºæããªã·ãŒã«æžããããã«ããŠããŸãã RDSãšKMSã§ã¯ã rds:Del* ã®ãããªã¯ã€ã«ãã«ãŒãæå®ãåºæããªã·ãŒã«æžããªãããã«ããŠããŸããã¢ã¯ã·ã§ã³åã¯æååã§ç
§åããŠããã®ã§ãã¯ã€ã«ãã«ãŒãã§æžããããšãåºæããªã·ãŒã«å«ããªãæš©éãå
¥ã£ãŠããŠãèŠã€ããããŸãããã¯ã€ã«ãã«ãŒãã䜿ããã¢ã¯ã·ã§ã³åã1ã€ãã€æžããŠãããã°ãæååã®ç
§åã®ã¿ã§ç¢ºãããããŸããé²èŠ§ã®æš©é㯠ReadOnlyAccess ã§ã©ã®èš±å¯ã»ãããæã£ãŠããã®ã§ãåºæããªã·ãŒã«æžãã®ã¯RDSãKMSã®æžã蟌ã¿ç³»ã®ã¢ã¯ã·ã§ã³ã®ã¿ã§ãã ãã¹ãŠãèš±å¯ãã * ãResourceãçµããªã iam:PassRole ãAllowã®äžã® NotAction ã¯ãæå³ãã以äžã«æš©éãåºããæžãæ¹ãªã®ã§ãåºæããªã·ãŒã®å€ã«çœ®ããŠããŸãã IAMã®æäœãRDSã®åé€ãšãã£ãæš©éãåºæããªã·ãŒã«å«ãŸããŠããªããã¯ãã¬ãã¥ãŒã®åã«Terraformã® precondition ã§ç¢ºãããŠããŸãã precondition ã¯ãªãœãŒã¹ã«æ¡ä»¶ãæžããŠããä»çµã¿ã§ãæ¡ä»¶ãæºãããªããšplanã®æç¹ã§ãšã©ãŒã«ãªããŸããæ¬¡ã®ã³ãŒãã¯ãæ€æ»ã®ãã¡ã¢ã¯ã·ã§ã³åãç
§åããéšåãæç²ãããã®ã§ãã locals { forbidden_action_patterns = [ "^\\*$" , "^\\*:\\*$" , "^iam:" , "^rds:delete" , "^kms:schedulekeydeletion$" , "^(rds|kms):.*[*?]" , ] forbidden_actions = distinct ( [ for a in local.allow_actions : a if lower (a) != "iam:passrole" && anytrue ( [ for p in local.forbidden_action_patterns : can ( regex (p, lower (a))) ] ) ] ) } resource "aws_iam_policy" "this" { name = var.name policy = jsonencode (local.document) lifecycle { precondition { condition = length (local.forbidden_actions) == 0 error_message = "custom policy '$ { var.name } ' contains forbidden actions: $ { join ( ", " , local.forbidden_actions) } " } precondition { condition = length ( jsonencode (local.document)) <= 6144 error_message = "custom policy '$ { var.name } ' exceeds the IAM limit of 6,144 non-whitespace characters." } } } IAMã®ã¢ã¯ã·ã§ã³åã¯å€§æåãšå°æåãåºå¥ããªãã®ã§ãå°æåã«æããŠããç
§åããŠããŸãã ã«ã¹ã¿ããŒç®¡çããªã·ãŒã«ã¯ç©ºçœãé€ããŠ6,144æåãŸã§ãšããäžéãããã®ã§ããµã€ãºãåã precondition ã§èŠãŠããŸãã èŠçŽãåã®3ã€ã®èª²é¡ã¯ã©ãè§£ããã ããªã·ãŒã®æ¬æãæžãéã¯ãåºæããªã·ãŒã®åã ãã«ãªããŸãããå
±éããªã·ãŒã¯ã common_operator ã®ãããªããªã·ãŒåãèš±å¯ã»ããã«æžãã ãã§äœ¿ããã®ã§ããããã¯ãããŒã ãæ°çŸè¡ã®ããªã·ãŒãäžããæžãäœæ¥ã¯ãªããªããŸããã 倿Žã®ç¢ºèªç¯å²ã¯ããããã¯ããšç°å¢ããšã«ãã£ã¬ã¯ããªãšTerraform stateãåããããšã§ãèªåã®ãããã¯ãã®ã°ã«ãŒãã«éãããããã«ãªããŸãããå
šã°ã«ãŒããæ¯åèªã¿èŸŒãã§ããplanã®æéãçããªããŸããã ã€ã³ã©ã€ã³ããªã·ãŒã®æåæ°äžéã¯ã1ã€ã®èš±å¯ã»ããã«è€æ°ã®ã«ã¹ã¿ããŒç®¡çããªã·ãŒãä»ããããä»çµã¿ã§è§£æ¶ããŸãããå
±éããªã·ãŒãå€ã«åºããã¶ãåºæããªã·ãŒãçããªãã1æ¬ããã6,144æåã®äžéã«ãããã«ãããªã£ãŠããŸãã å
±éããªã·ãŒã¯SREãäžæ¬ã§ç®¡çããIAMã®æäœãªã©ã®æš©éãåºæããªã·ãŒã«å«ãŸããŠããªããã¯Terraformãå
ã«ç¢ºãããã®ã§ãã¬ãã¥ãŒã§ã¯å·®åã®æå³ãèŠãããšã«éäžã§ããŸããèŠçŽãåã«æ¯ã¹ãŠã確èªããç¯å²ãçããªã£ãŠããŸãã æ§ã°ã«ãŒããšäžŠè¡ããŠäœ¿ããç§»è¡æéãçœ®ã æ§ã°ã«ãŒããæ®ãããŸãŸæ°ããèš±å¯ã»ããã«å¯Ÿå¿ããã°ã«ãŒããäœããã©ã¡ãã®èš±å¯ã»ããã§ãAWSã¢ã«ãŠã³ãã«ãµã€ã³ã€ã³ã§ããç§»è¡æéã眮ããŠããŸãã æ°ããèš±å¯ã»ããã§æš©éãè¶³ããªãã£ãå Žåã¯ãã¡ã³ããŒã«æ§ã°ã«ãŒãã§äœæ¥ããŠããããè¶³ããªãã£ãæš©éããããã¯ãããŒã ãåºæããªã·ãŒã«è¿œå ããŠããŸããæ°ããã°ã«ãŒããžã®ç§»è¡ãçµãã£ãAWSã¢ã«ãŠã³ãããé ã«ãæ§ã°ã«ãŒããæ¶ããŠããŸãã ãŸãšã ä»åã¯ãAWS IAM Identity Centerã®èš±å¯ã»ãããããèª°ã«æž¡ãããã§ã¯ãªãããã®AWSã¢ã«ãŠã³ãã§äœããããããåºæºã«5çš®é¡ã«æãçŽããåãçµã¿ã玹ä»ããŸããã èŠçŽãã®ææã¯ããããã¯ãããŒã ãçšæãããã®ãåºæããªã·ãŒã ãã«ãªã£ãããšã§ããæ°çŸè¡ã®ããªã·ãŒãäžããæžãäœæ¥ã¯ãªããªããSREãã¬ãã¥ãŒã§èŠãç¯å²ãåºæããªã·ãŒã«çµãããŸãããã©ã®ãããã¯ãã§ãåãçš®é¡ã®èš±å¯ã»ãããªãåãããšãã§ããç¶æ
ã«ãªããæ°ãããããã¯ãã远å ãããšãããå
šAWSã¢ã«ãŠã³ãã«é
ãããŠããå
±éããªã·ãŒããã®ãŸãŸäœ¿ããŸãã ä»åŸã¯ãåºæããªã·ãŒã«åãæš©éãè€æ°ã®ãããã¯ãã§çŸãããšãã«å
±éããªã·ãŒãžç§»ãããšããèŠçŽããç¶ããŠãããŸãã ãã®èšäºããIAM Identity Centerã®æš©éèšèšã«åãçµãæ¹ã®åèã«ãªãã°å¬ããã§ããæåŸãŸã§ãèªã¿ããã ãããããšãããããŸããïŒ ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£ã§ Findy ãéçºããŠãã倧ç³ïŒ @bicstone ïŒã§ãã 2026幎11æ1æ¥ã«éå¬ããã TSKaigi Sendai 2026 ã§ã ãTS 7.0 ã§ baseUrl ã䜿ããªããªã£ãä»ããã¹ãšã€ãªã¢ã¹ãã©ããããã ãšããã¿ã€ãã«ã§ç»å£ããŸããæ¬èšäºã¯5åã®LTã§ã¯æéã®éœåã§ç«¯æã£ãå
容ãå«ããæ¡åŒµçãšããŠãå±ãããŸãã sendai.tskaigi.org speakerdeck.com ä»ãŸã§åºã䜿ãããŠããbaseUrlãªãã·ã§ã³ã¯TypeScript 6.0ã§éæšå¥šãšãªãã7.0ã§ã¯å»æ¢ãããŸããã7.0ãžã®ã¢ããã°ã¬ãŒããé²ããå Žåããã®å¯Ÿå¿ãé¿ããŠéããŸããã ãã®èšäºã§ã¯å®éã« @/ ïŒpathsïŒããsubpath importsã® #/ ãžç§»è¡ããçµéšãããšã«ãbaseUrlããã®ç§»è¡äºäŸã解説ããŸãã TypeScript 6.0ãã㯠#/ ã§å§ãŸãsubpath importsããµããŒããããNode.jsã®ã¢ãžã¥ãŒã«è§£æ±ºã掻çšãããã¹ãšã€ãªã¢ã¹ãžä¹ãæããããããã«ãªããŸããã baseUrl廿¢ã®èæ¯ãpathsãžã®çœ®ãæããšã®æ¯èŒãç§»è¡æ¹æ³ã®éžã³æ¹ãç§»è¡äœæ¥ã§èžãã ããããã€ã³ãã«è§ŠããŸãããããžã§ã¯ãã§baseUrlã®å»æ¢ãã¹ã ãŒãºã«é²ããããã®ãã³ãã«ãªãã°å¹žãã§ãã baseUrlãªãã·ã§ã³ãšã¯ baseUrlãªãã·ã§ã³ã廿¢ãããçç± pathsãžã®çœ®ãæã Vite builderã䜿çšããStorybookã«ããããã©ãã« tsconfig.jsonã®æ¢çŽ¢ã§Storybookãèµ·åäžå¯ã« webpack builderã䜿çšããStorybookã«ããããã©ãã« subpath importsãžã®çœ®ãæã ãã¹ãã©ã³ããŒãšã®çžæ§ ã©ã¡ããéžã¶ã â Node.jsã®Type Strippingã§TypeScriptãçŽæ¥å®è¡ããã â¡ ããã±ãŒãžå颚ã®ãšã€ãªã¢ã¹ã䜿ãã¢ãã¬ãã ⢠å®è¡ã»ãã¹ãã«äœ¿ãNode.jsã24.14以äžïŒ25.4以äžïŒã§ãBunã䜿çšããŠããªãã ç§»è¡åã«ç¢ºèªããããš ãããã« baseUrlãªãã·ã§ã³ãšã¯ baseUrlã¯ããã¹ãšã€ãªã¢ã¹ã®åºç¹ã決ããèšå®ã ãšæãããã¡ã§ãããããæ¬æ¥ã¯ãã©ãŠã¶ã§AMDããŒããŒã䜿ã£ãŠããæä»£ã«ãçžå¯Ÿã§ãªãã¢ãžã¥ãŒã«æå®ãbaseUrlã®ãã£ã¬ã¯ããªããæ¢ãããã®æ©èœã§ãã *1 ã ããã§ãAMDããŒããŒãšé¢ä¿ã®ãªããããžã§ã¯ãã§baseUrlãåºã䜿ãããã®ã¯ã ../../ ãæžããã«æžã䟿å©ãªèšå®ã ã£ãããã§ãã "baseUrl": "src" ãš1è¡æžãã ãã§ã import Button from "components/Button" ã®ããã«srcãèµ·ç¹ã«ããimportãæžããŸãã Create React Appã¯ãã®æžãæ¹ããAbsolute ImportsããšããŠæ¡å
ã *2 ãNext.jsã2020幎5æã®ããŒãžã§ã³9.4ã§baseUrlã ãã§çµ¶å¯Ÿãã¹ã®importã䜿ããããã«ããŸãã *3 ããã³ãã©ã®èšå®ãè§ŠããªããŠããšãã£ã¿ããšã€ãªã¢ã¹ãèªèã§ããã®ã§ãæè»œãªäŸ¿å©ããŒã«ãšããŠå®çããŠãããŸããã ãã1ã€ã®çç±ã¯ãTypeScript 4.0ãŸã§ã¯pathsã䜿ãã®ã«baseUrlãå¿
é ã ã£ãããšã§ã *4 ã @/ ã®ãããªãšã€ãªã¢ã¹ãæžãããã ãã§ããbaseUrlãã»ããã§æžãå¿
èŠããããŸããã TypeScript 4.1ããã¯ãpathsã䜿ãã®ã«baseUrlã¯äžèŠã«ãªããŸãããbaseUrlããªãå Žåãpathsã®å€ã¯ãã®pathsã宣èšããtsconfig.jsonã®ãã£ã¬ã¯ããªãåºç¹ã«è§£æ±ºãããŸã *5 ã ããã§ãäžåºŠæžããbaseUrlã¯ãã®ãŸãŸæ®ãããã³ãã¬ãŒãããžã§ãã¬ãŒã¿ãŒãbaseUrlãåºåãç¶ããŠããŸããã ããšãã°ã¢ãã¬ãããŒã«ã®Nxã¯ã2026幎4æã«ãªãªãŒã¹ããã22.7.0ããåã®ããŒãžã§ã³ã§ã¯ãçæããtsconfig.base.jsonã« "baseUrl": "." ãæžããŠããŸãã *6 ã baseUrlãªãã·ã§ã³ã廿¢ãããçç± baseUrlã«ã¯äŸ¿å©ãã®åé¢ãæãã¬æåããããŸãããbaseUrlã¯pathsã®åºç¹ãšããŠã ãã§ãªããã¢ãžã¥ãŒã«æ¢çŽ¢ã®ã«ãŒããšããŠãåããŸãããã®ãããpathsã§å®çŸ©ããŠããªãã¢ãžã¥ãŒã«æå®ãŸã§TypeScriptã解決ããŠããŸããŸãã TypeScript 6.0ã®ãªãªãŒã¹ããŒãã§ã¯ã次ã®ãããªäŸãæããããŠããŸã *7 ã baseUrl: "./src" ã§ãpathsã« "@app/*" ãš "@lib/*" ã ããå®çŸ©ããŠããå Žåãæ¬¡ã®importã¯pathsã®èšå®ã«é¢ä¿ãªã src/someModule.js ã«è§£æ±ºãããå¯èœæ§ããããŸãã import * as someModule from "someModule.js" ; åãã§ãã¯ã¯éãã®ã«ãå®è¡æã«ã¯è§£æ±ºã§ããªãimportãæžããŠããŸããšãã課é¡ããããŸãããããã§ã2026幎3æã«ãªãªãŒã¹ãããTypeScript 6.0ã§baseUrlãéæšå¥šã«ãªããŸããã 6.0ã§ã¯ "ignoreDeprecations": "6.0" ãæžãã°ãšã©ãŒãæå¶ã§ããŸãã *8 ãããã2026幎7æã«ãªãªãŒã¹ãããTypeScript 7.0ã§ã¯ignoreDeprecationsã§æããããããšã©ãŒã«ãªããŸã *9 ã "baseUrl": "." ãæ®ãããŸãŸ7.0ã§åãã§ãã¯ãããšã次ã®ãšã©ãŒã«ãªããŸãã error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration. Use '"paths": {"*": ["./*"]}' instead. baseUrlã䜿ããã«ãã¹ãšã€ãªã¢ã¹ãæžãã«ã¯ãäž»ã«TypeScriptã«ãããpathsãªãã·ã§ã³ãžã®çœ®ãæããšãNode.jsã«ãããsubpath importsãžã®çœ®ãæãã®2ã€ã®éžæè¢ããããŸãã ã¡ãªã¿ã«ãã©ã¡ããECMAScriptã®ä»æ§ã§ã¯ãããŸãããECMAScriptã¯ã¢ãžã¥ãŒã«æå®ãã©ã解決ããããå®è¡ç°å¢ã«ä»»ããŠã㊠*10 ã2ã€ã®éžæè¢ã¯ããããTypeScriptãšNode.jsãæ±ºãã解決ã«ãŒã«ã§ãã pathsãžã®çœ®ãæã 1ã€ç®ã¯ãtsconfig.jsonã®pathsã®å€ã ./ ããå§ãŸãçžå¯Ÿãã¹ã«æžãæããŠãbaseUrlã ããæ¶ãæ¹æ³ã§ããTypeScriptã®ãªãªãŒã¹ããŒããæšå¥šããŠããã®ããã®æ¹æ³ã§ãã { "compilerOptions": { - "baseUrl": ".", "paths": { - "@/*": ["src/*"] + "@/*": ["./src/*"] } } } ãã¡ã€ã³ãã£ã§ã¯2025幎11æãã2026幎8æã«ãããŠãè€æ°ã®ãããã¯ãã®ããã³ããšã³ãã§baseUrlãã眮ãæããŸããã åæ©ã¯TypeScript 7ã§ã®baseUrlã®å»æ¢ãã®ãã®ãããåãã§ãã¯ãéããããããã§ãããtsgoã®ãã¬ãã¥ãŒçã¯ãã§ã«baseUrlãåãä»ããªããªã£ãŠãããããtsgoã詊ãã«ã¯baseUrlãæ¶ãå¿
èŠããã£ãã®ã§ããç§»è¡åŸãåãã§ãã¯ã¯CIã§3å匱ãã1åæªæºã«ãªããŸããã tsconfig.jsonã®çœ®ãæãèªäœã¯äžã®å·®åã®ãšããã§ããã¹ãŠã®pathsãsedã³ãã³ãã§äžæ¬å€æããŸãããç§»è¡ããŒã« ts5to6 ã® --fixBaseUrl ã§ããåã倿ãã§ããŸã *11 ã ããããåäœç¢ºèªãé²ããäžã§ãããã€ãã®ãã¹ã解決ã§ããªããªã£ãŠããããŸãããäžã§ãäžçªæéãåãããã®ãStorybookã§ããã Vite builderã䜿çšããStorybookã«ããããã©ãã« @storybook/nextjs-viteã®ãã«ãã§ã @app/* ã®ãšã€ãªã¢ã¹ããã¹ãŠè§£æ±ºã§ããªããªããŸããããã®ãªããžããªã®tsconfig.jsonã¯æ¬¡ã®ããã«å€æ®µã§extendsããŠããŠãpathsã¯tsconfig.base.jsonã«ã ãæžãããŠããŸãã libs/ui/tsconfig.lib.json â libs/config/typescript-config/tsconfig.lib.json â libs/config/typescript-config/tsconfig.json â tsconfig.base.jsonïŒpaths ã¯ããã ãïŒ ãããã°ãããšããšã€ãªã¢ã¹ã¯ <root>/libs/components/... ã§ã¯ãªãã <root>/libs/config/typescript-config/libs/components/... ã«è§£æ±ºãããŠããŸããŸããã åå ã¯ã@storybook/nextjs-viteãå
éšã§äœ¿ã vite-tsconfig-paths ã®åŠçã§ãããbaseUrlããªããšããTypeScriptã¯pathsã宣èšããtsconfig.jsonã®ãã£ã¬ã¯ããªãåºç¹ã«ããŸããvite-tsconfig-pathsã¯ãããextendsãã§ãŒã³ã§æåã«pathsãæã€tsconfig.jsonãšããŠæš¡å£ããŸãã ãšãããããŒãžã§ã³5ã§ã¯ tsconfck ã®ãã£ãã·ã¥ãå
šãããžã§ã¯ãã§å
±æããŸãããã®ãããäžéã®å
±ætsconfig.jsonãå
ã«èªãŸããŠãããšãç¶æ¿ããpathsãèªåã§å®£èšããŠããããã«èŠããäžéã®ãã£ã¬ã¯ããªãåºç¹ã«éžã°ããŠããŸããããã®æã¯çœ®ãæãããããåã©ã€ãã©ãªã®IssueããŠã©ããããŠå¯Ÿå¿ãåŸ
ã¡ãŸããã çŸåšã¯ãvite-tsconfig-pathsãããŒãžã§ã³6ã«äžããã°è§£æ±ºããŸããããŒãžã§ã³6ã¯tsconfckã®ãã£ãã·ã¥ãå
±æããªããªã£ãããã§ã *12 ã ãŸãã2026幎3æã«ãªãªãŒã¹ãããVite 8ã§Viteæ¬äœã«resolve.tsconfigPathsã远å ããã@storybook/nextjs-viteã¯Vite 8以äžã§ã¯vite-tsconfig-pathsã®ä»£ããã«ãã®èšå®ã䜿ãã®ã§ããã®åé¡ã¯èµ·ããŸãã *13 ã ãªããsubpath importsã«æžãæããå Žåããããã®åé¡ãçºçããã«ãšã€ãªã¢ã¹ã解決ã§ããŸãã tsconfig.jsonã®æ¢çŽ¢ã§Storybookãèµ·åäžå¯ã« 2026幎10æã«ã¯ãStorybookããStorybook readyãã®çŽåŸã«OOMã§èµ·åã§ããªããªããŸããã åå ã远究ãããšãvite-tsconfig-pathsã®æ¢å®ã®æ¢çŽ¢ïŒeagerïŒãã¯ãŒã¯ã¹ããŒã¹é
äžã®tsconfig.jsonãèŠã€ããreferencesãŸã§å±éããŠ1,000ãè¶
ãããã¡ã€ã«ãèªãã§ããŸãããããã«ãStorybookãã¢ããªã®vite.config.tsãèªåã§èªã¿èŸŒãããããã©ã°ã€ã³ãäºéã«èµ·åããŠããŸããã ããã§ãèªã¿èŸŒãtsconfig.jsonã projects: ["tsconfig.base.json"] ã§1ã€ã«çµããšãOOMãèµ·ããªããªãã2å以äžããã£ãŠããèµ·åãæ°ç§ã«ãªããŸããã pathsã¯ããŒã«ãtsconfig.jsonãæ¢ããŠèªã¿çŽãä»çµã¿ãªã®ã§ãã¢ãã¬ãã倧ãããªãã»ã©ãã®ã³ã¹ãã倧ãããªããŸãã webpack builderã䜿çšããStorybookã«ããããã©ã㫠瀟å
ã®å¥ã®ãªããžããªã§ã¯ãwebpackãbuilderã«èšå®ããŠãã@storybook/nextjsã§ãåãããã«ãšã€ãªã¢ã¹ã解決ã§ããªããªããŸããã ãã¡ãã¯å
éšã§äœ¿ã tsconfig-paths ããpathsã宣èšããtsconfig.base.jsonã§ã¯ãªãããããextendsããã¢ããªã®ãã£ã¬ã¯ããªãåºç¹ã«ããŠããŸãããã§ãã åœæã¯ãStorybookã®èšå®ã«tsconfig-paths-webpack-pluginã®TsconfigPathsPluginãè¶³ããtsconfig.base.jsonãæç€ºããŠåé¿ããŸããã çŸåšã¯ã2026幎9æã«ãªãªãŒã¹ãããStorybook 10.6以äžã«ã¢ããã°ã¬ãŒãããããšã§è§£æ±ºããŸããtsconfig-pathsã®æ¢å®ã®åºç¹ã«ä»»ãããStorybookèªèº«ãextendsãã§ãŒã³ããã©ã£ãŠpathsã宣èšããtsconfig.jsonã®ãã£ã¬ã¯ããªãæ±ããtsconfig-pathsã«æž¡ãããã«ãªããŸãã *14 ã subpath importsãžã®çœ®ãæã 2ã€ç®ã¯Node.jsã®subpath importsãäœ¿ãæ¹æ³ã§ã *15 ãpackage.jsonã®importsã«ã#ããå§ãŸããšã€ãªã¢ã¹ãå®çŸ©ããŸãã { " imports ": { " #/* ": " ./src/* " } } import { formatDate } from "#/utils/formatDate.ts" ; subpath importsã¯Node.jsç¬èªã®ã¢ãžã¥ãŒã«è§£æ±ºã®ä»æ§ã§ããimportsãã£ãŒã«ãèªäœã¯Node.js 12.19.0ãš14.6.0ãããããŸãããããŒã #/ ã§å§ããããããã«ãªã£ãã®ã¯25.4.0ãš24.14.0ããã§ã *16 ã TypeScriptã6.0ãããmoduleResolutionãbundlerãnodenextã®ãšãã« #/ ã解決ã§ããããã«ãªããŸãã *17 ã ãŸãã坿¬¡çãªå¹æãšããŠãimportsã«ã¯æ¡ä»¶ãæžããã®ã§ãStorybookããã¹ãã®ãšãã ãã¢ãã¯ã«åãæ¿ããããšãã§ããŸã *18 ãtestã®æ¡ä»¶ã¯ããã¹ãã©ã³ããŒããšã«æå¹ã«ããèšå®ãå¿
èŠã§ãããäžåºŠã®èšå®ã§æžã¿ãŸãã 瀟å
ã®äºäŸã§ã¯åè¿°ã®ãšããpathsãžã®çœ®ãæããéžã³ãŸãããããã©ã€ããŒãã®ãªããžããªã§ã¯subpath importsãžã®çœ®ãæãã宿œããŸããã以åã«äœ¿çšãããŠãã @/ ã #/ ã«ç§»è¡ããŠãããŸããã importãžã®æ¡åŒµåã®æç€ºãšãNode.jsãåããŒã«ãã§ãŒã³ã®ããŒãžã§ã³ã¢ãããããããã§ãsedã§ã®äžæ¬çœ®ãæãã§ç§»è¡ãå®äºããŸãããpathsã®ãšãã®ããã«ããŒã«ããšã«ãšã€ãªã¢ã¹ã®è§£æ±ºãé£ãéããã©ãã«ã¯ãããŸããã§ããã ãã¹ãã©ã³ããŒãšã®çžæ§ subpath importsã«çœ®ãæããå Žåããã¹ãã©ã³ããŒã®çžæ§ãåé¡ã«ãªããŸãã subpath importsã¯Node.jsã®ä»æ§ãªã®ã§ã #/ ã䜿ãããã¯ããã¹ãã©ã³ããŒãã¢ãžã¥ãŒã«ãã©ã解決ããããšãå®è¡ããNode.jsã®ããŒãžã§ã³ã§æ±ºãŸããŸãã èªåã®resolverãæã€Vitest 5.0.5ãšJest 30.5.2ã¯ãNode.js 22ã§ã #/ ã解決ã§ããŸãã äžæ¹ããšã€ãªã¢ã¹ã®è§£æ±ºãNode.jsã®ããŒããŒã«ä»»ããnode:testãMochaãAVAãtsxãPlaywright Testãªã©ã¯ãNode.js 24.14æªæºïŒ25.4æªæºïŒã§ã¯ ERR_INVALID_MODULE_SPECIFIER ãªã©ã®ãšã©ãŒãçºçã #/ ã解決ã§ããŸããã å®è¡æã®Node.jsã®ããŒãžã§ã³ãéèŠã«ãªããããããŒã«ã«ã®Node.js 26ã§ã¯ãã¹ããéãã®ã«ãCIã§ã¯Node.js 22ã ã£ãã®ã§èœã¡ãããšããããšãèµ·ããããŸãã Node.jsã®ããŒãžã§ã³ãæããããšã¯ãã®äŸã«éããéèŠã§ããããã©ãã«ãèµ·ããéã«ã¯å®è¡ããNode.jsã®ããŒãžã§ã³ãçã£ãŠã¿ãŠãã ããã ãªããBun 1.4.4ã§æ€èšŒãããšããã #/ ã解決ã§ããŸããã§ãã *19 ã ã©ã¡ããéžã¶ã 2ã€ã®æ¹æ³ã®éãã¯ãã©ã®ããŒã«ããšã€ãªã¢ã¹ã解決ãããã§ãã tscã¯pathsãèšå®ããŠãimportæãæžãæããªãã®ã§ãpathsã¯TypeScriptã®äžã ãã§å®çµããèšå®ã«ãªããŸãããã®ããããã³ãã©ãããŒã«ãã§ãŒã³ãããããtsconfig.jsonãèªã¿ã«ããå¿
èŠããããŸãã äžæ¹ãsubpath importsã¯Node.jsã®ã¢ãžã¥ãŒã«è§£æ±ºã®ä»æ§ãªã®ã§ãåããŒã«ã¯package.jsonãèªã¿ã«ãããNode.jsãšåãæåãå®è£
ããå¿
èŠããããŸãã 2ã€ã®æ¹æ³ãè¡šã§æ¯èŒãããšã次ã®ãšããã§ãã èŠ³ç¹ pathsãžã®çœ®ãæã subpath imports å®çŸ©ããå Žæ tsconfig.jsonã®compilerOptions.paths package.jsonã®imports 解決ããããŒã« TypeScriptãšãtsconfig.jsonãèªãåããŒã« Node.jsãšãNode.jsã®èŠåãå®è£
ããåããŒã« å®è¡æ Node.jsã¯è§£æ±ºããªã ã©ã³ã¿ã€ã ã解決ãã ãšã€ãªã¢ã¹å èªç±ïŒ @/ ã ~/ ãªã©ïŒ #ããå§ãŸãååã«éå® é©çšãããç¯å² tsconfig.jsonã§æå®ãããã¡ã€ã« importããåŽããæãè¿ãpackage.json æ¡ä»¶ã«ããåãæ¿ã ã§ããªã Storybookããã¹ããªã©ã®æ¡ä»¶ã§è§£æ±ºå
ãåãæ¿ãããã ãããŸã§ã®æ€èšŒãããã©ã¡ãã®æ¹æ³ã«ãããã¯ã次ã®3ã€ã®åºæºãããšã«éžã¶ã®ããããšèããŠããŸãã â Node.jsã®Type Strippingã§TypeScriptãçŽæ¥å®è¡ããã Node.jsã®Type Strippingã§TypeScriptãçŽæ¥å®è¡ããæ§æã§ã¯ãsubpath importsãå¯äžã®éžæè¢ãšãªããŸãã Node.jsã¯tsconfig.jsonãç¡èŠãããããpathsãå¹ããŸãã *20 ã â¡ ããã±ãŒãžå颚ã®ãšã€ãªã¢ã¹ã䜿ãã¢ãã¬ãã @org/pkg/featureã®ãããªããã±ãŒãžå颚ã®ãšã€ãªã¢ã¹ã䜿ãã¢ãã¬ãã§ã¯ãpathsãžã®çœ®ãæããçŸå®çã§ãã subpath importsã®ããŒã¯#ããå§ããå¿
èŠããããããã±ãŒãžå颚ã®ååã衚çŸã§ããŸããã ãŸãimportsã¯æãè¿ãpackage.jsonãããšã«è§£æ±ºãããããNxãªã©ã®ã¢ãã¬ãã§ããèŠããpackage.jsonãæããªãã©ã€ãã©ãªãäžŠã¶æ§æãšã¯çžæ§ããããããŸããã å°æ¥çã«ã¯ãworkspaceããã±ãŒãžåããŠexportsã§å
¬éããæ¹æ³ãèããããŸãã ⢠å®è¡ã»ãã¹ãã«äœ¿ãNode.jsã24.14以äžïŒ25.4以äžïŒã§ãBunã䜿çšããŠããªãã å®è¡ã»ãã¹ãã«äœ¿ãNode.jsã24.14以äžïŒ25.4以äžïŒã§ãBunã䜿çšããŠããªãå Žåã¯ãsubpath importsã«çœ®ãæããã®ãããããã§ãã tsconfig.jsonãèªã¿çŽãããŒã«ãæžãã®ã§ãåè¿°ã®ãããªããŒã«ãã§ãŒã³ã®èª²é¡ãæ§é çã«é¿ããããŸãã @/ ãã #/ ã«ç§»ããšãimportã®æžãæ¹ãå€ãããŸãã @/ ã #/ ã«ãªãã ãã§ãªãæ¡åŒµåãæç€ºããããšã«ãªãã®ã§ãæ°ã«ãªã人ããããããããŸããããã ãæžãæãã¯æ©æ¢°çã«äžæ¬ã§ã§ããŸãããæè¿ã¯importãAIã«æžãããããšãå€ãã®ã§ãæžãæ¹ã®éãã¯å€§ããªè² æ
ã«ãªããªããšæããŸãã ããããããããŒã«ãã§ãŒã³ã®æ§é çãªèª²é¡ãé¿ããããããšã®ã»ãããã¡ãªããã¯å€§ãããšèããŠããŸãããã ããã©ã³ã¿ã€ã ã®æ¡ä»¶ãæºãããªãå Žåã¯æ£ããåäœããªãããã圱é¿ç¯å²ãå°ãããã芳ç¹ããpathsãžã®çœ®ãæããåè£ã«ãªããŸãã ç§»è¡åã«ç¢ºèªããããš ã©ã¡ãã®æ¹æ³ãéžã¶å Žåããç§»è¡åã«æ¬¡ã®ç¹ã確èªããŠãããšãã©ãã«ãæžããŸãã çŸåšäœ¿çšããŠããã©ã³ã¿ã€ã ã»ããŒã«ãã§ãŒã³ã»ãã³ãã©ã®ããŒãžã§ã³ãæ°ãããã¹ãšã€ãªã¢ã¹ã®åŠçã«å¯Ÿå¿ããŠããã tsconfig.jsonã®extendsã倿®µã«ãªã£ãŠããããpathsãã©ã®ãã¡ã€ã«ã§å®£èšããŠããã pnpm 10ãŸã§ã®use-node-versionããpnpm 11以éã®devEngines.runtimeã®ããã«ãã·ã§ã«ãšã¯å¥ã«Node.jsãåºå®ããèšå®ããªãã shadcn/uiã®CLIã®ããã«ããšã€ãªã¢ã¹ãèªãã§ã³ãŒããçæããããŒã«ãããã ãããã« baseUrlããpathsãžã®çœ®ãæãã¯ãtsconfig.jsonã®å·®åã ããèŠããšå°ããªå€æŽã§ãããããå®éã«ã¯ãpathsãèªãããŒã«ã察å¿ããå¿
èŠããããŸããã仿¥ã§ã¯ããŒã«ãææ°ã®ããŒãžã§ã³ã«ã¢ããããŒãããã°ãpathsãžã®çœ®ãæãã ãã§ãç§»è¡ã§ããã±ãŒã¹ãå€ãã§ãã ããã§ãç§ã¯ãæ¡ä»¶ãæºãããªãsubpath importsãžã®çœ®ãæããããããããŸãã tsconfig.jsonãèªã¿çŽãããŒã«ãæžããåãçš®é¡ã®åé¡ãæ§é çã«é¿ããããããã§ããimportã®æžãæ¹ã¯å€ãããŸãããæžãæãã¯äžæ¬ã§ã§ããŸãã TypeScript 7ãžã®ç§»è¡ãé²ããããã§ããã®èšäºããã¹ãšã€ãªã¢ã¹ã®éžã³æ¹ã®åèã«ãªãã°å¹žãã§ãã TSKaigi Sendai 2026ã§ã¯ããã¡ã€ã³ãã£ããç²æãããã 100以äžã®ãããžã§ã¯ããæã€Nxã¢ãã¬ãã®TypeScript 7ç§»è¡ã®å®è·µ ããšããã¿ã€ãã«ã§ç»å£ããŸãã詳现ã解説ããèšäºãå
¬éããŠããŸãã®ã§ãã²ã芧ãã ããã tech.findy.co.jp ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers *1 : TSConfig Reference - baseUrl https://www.typescriptlang.org/tsconfig/#baseUrl *2 : Create React App - Absolute Imports https://create-react-app.dev/docs/importing-a-component/#absolute-imports *3 : Next.js 9.4 - Absolute Imports and Aliases https://nextjs.org/blog/next-9-4#absolute-imports-and-aliases *4 : TypeScript 4.1 Release Notes - paths without baseUrl https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-1.html#paths-without-baseurl *5 : TypeScript Modules Reference https://www.typescriptlang.org/docs/handbook/modules/reference.html *6 : nrwl/nx#34965 https://github.com/nrwl/nx/pull/34965 *7 : TypeScript 6.0 Release Notes https://www.typescriptlang.org/docs/handbook/release-notes/typescript-6-0.html *8 : Announcing TypeScript 6.0 https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/ *9 : Announcing TypeScript 7.0 https://devblogs.microsoft.com/typescript/announcing-typescript-7-0/ *10 : ECMAScript Language Specification - HostLoadImportedModule https://tc39.es/ecma262/#sec-HostLoadImportedModule *11 : Announcing TypeScript 6.0 https://devblogs.microsoft.com/typescript/announcing-typescript-6-0/ *12 : vite-tsconfig-paths v6.0.0 src/index.ts https://github.com/aleclarson/vite-tsconfig-paths/blob/v6.0.0/src/index.ts#L110-L113 *13 : Vite 8.0 is out! https://vite.dev/blog/announcing-vite8 *14 : storybookjs/storybook#35959 https://github.com/storybookjs/storybook/pull/35959 *15 : Node.js Documentation - Subpath imports https://nodejs.org/api/packages.html#subpath-imports *16 : nodejs/node#60864 https://github.com/nodejs/node/pull/60864 *17 : microsoft/TypeScript#62844 https://github.com/microsoft/TypeScript/pull/62844 *18 : Storybook Docs - Mocking modules https://storybook.js.org/docs/writing-stories/mocking-data-and-modules/mocking-modules *19 : oven-sh/bun#28995 https://github.com/oven-sh/bun/issues/28995 *20 : Node.js Documentation - TypeScript https://nodejs.org/api/typescript.html
ããã«ã¡ã¯ããã¡ã€ã³ãã£ã§Findy Freelanceã®éçºãããŠããç²æïŒ @karukan013L23 ïŒã§ãã 2026幎11æ1æ¥ã«éå¬ããã TSKaigi Sendai 2026 ã§ã ã100以äžã®ãããžã§ã¯ããæã€Nxã¢ãã¬ãã®TypeScript 7ç§»è¡ã®å®è·µã ãšããã¿ã€ãã«ã§ç»å£ããŸãããã®èšäºã¯ãç»å£å
容ã®è§£èª¬èšäºã«ãªããŸããåãã§ãã¯ã®é«éåãçã£ãŠTS7ãžç§»è¡ããéçšãã察å¿é åºã®æ±ºãæ¹ãå®ã³ã³ãã€ã©ã®åºå®ãNext.jsã®ãã«ããžã®å¯Ÿå¿ãªã©ãå®éã®ç§»è¡ã§å¿
èŠã«ãªã£ã倿ãäžå¿ã«ç޹ä»ããŸãã sendai.tskaigi.org speakerdeck.com åããTSKaigi Sendaiã«ãŠç»å£ããåŒç€Ÿã®å€§ç³ã®ç»å£èšäºãå
¬éãããŠãããŸãã®ã§ããã¡ãããã²èªãã§ã¿ãŠãã ããã tech.findy.co.jp Nxã§ç®¡çãã100以äžã®ãããžã§ã¯ãã®ã¢ãã¬ã TS6ãšTS7ã®å
±åãåæã«ã察å¿ã3段éã«åãã TS6ç§»è¡åã«ãæ¢å®å€ãšåå®çŸ©ã®å€æŽãžå¯Ÿå¿ãã CSSã®å¯äœçšimportã«å宣èšã远å ãã DOMã®åå®çŸ©ã®å€æŽã§ãFileListã«ã€ãã¬ãŒã¿ãŒãå¿
èŠã«ãªã£ã rootDirãžã®å¯Ÿå¿ã¯ããã¡ã€ã«ãåºåãããã§åãã TS6ã§baseUrlãæ®ããšãnext buildã倱æãã TS6ç§»è¡ã§éæšå¥šã«ãªã£ããªãã·ã§ã³ãæŽçããã³ã³ãã€ã©ãåºå®ãã TS6ããªããžãå°å
¥ããŠãããesModuleInteropã倿Žãã ããªããžã®ããŒãžã§ã³ãšå®ã³ã³ãã€ã©ã®ããŒãžã§ã³ã¯å¥ã ã£ã TS7ç§»è¡ã§ãtypecheckãåãæ¿ããAPIã䜿ãåŠçãæ€èšŒãã ããŒã«ã«ã®åãã§ãã¯ã¯48ç§ãã15.8ç§ãžãCIã®å®è¡ã¹ãããã¯çŽ35%ççž® Next.js 16.3.0ã§ãã«ãã倱æããCompiler APIæ¹åŒã«æ»ãã æ®µéã«åããŠé²ããç§»è¡ã®æ¯ãè¿ããšä»åŸ Nxã§ç®¡çãã100以äžã®ãããžã§ã¯ãã®ã¢ãã¬ã Findy Freelanceã®ããã³ããšã³ãã¯ãNext.jsã®ã¢ããªãReact + Viteã®ã¢ããªãã©ã€ãã©ãªã§æ§æãããã¢ãã¬ãæ§æã«ãªã£ãŠããŸãããããã¯Nxã§ç®¡çãããŠããŸããã©ã€ãã©ãªã¯ã¢ããªããšã«æ©èœåäœã§åããŠãããã®ãæ©èœéã§å
±éããŠå©çšããããã®ããããŸããã©ã€ãã©ãªãããããç¬ç«ãããããžã§ã¯ããšããŠç®¡çããŠãããããå
šäœã§ã¯100ãè¶
ãããããžã§ã¯ãæ°ãšãªã£ãŠããŸãã Nxã¯ãããããè€æ°ãããžã§ã¯ãã®ãã«ãããã¹ããã³ãŒãçæãæ±ãããŒã«ã§ãããããžã§ã¯ãéã®äŸåé¢ä¿ãææ¡ããã¿ã¹ã¯ã䞊åå®è¡ã§ããŸãã倿Žããããããžã§ã¯ããšãããã«äŸåããŠåœ±é¿ãåãããããžã§ã¯ãã ããå®è¡å¯Ÿè±¡ã«ãã affected ããåãå
¥åã«å¯Ÿããã¿ã¹ã¯çµæããã£ãã·ã¥ããäžèŠãªã¿ã¹ã¯ã®å®è¡ãã¹ãããããä»çµã¿ãåããŠããŸãã ãã ã affected ã§å®è¡å¯Ÿè±¡ãçµã蟌ã¿ããã£ãã·ã¥ã§åãã¿ã¹ã¯ã®å®è¡ãã¹ãããã§ããŠããå
±éã®ã©ã€ãã©ãªãèšå®ã倿Žãããšãããã«äŸåããå
šãŠã®ãããžã§ã¯ãã§åãã§ãã¯ãå®è¡ãããŸããããããå Žé¢ã§ã¯å®è¡å¯Ÿè±¡ãæžãããªããããåãã§ãã¯ãã®ãã®ãé«éåããå¿
èŠããããŸãããããã§ãåãã§ãã¯ãé«éåããææ®µãšããŠãTS7ãžã®ç§»è¡ã«ææŠããããšã«ããŸããã TS6ãšTS7ã®å
±åãåæã«ã察å¿ã3段éã«åãã ç§»è¡åã®TypeScriptã®ããŒãžã§ã³ã¯5.9ã§ããããŸãTS6ã«ç§»è¡ããå¿
èŠããããŸãããTS6ã¯TS7ãžã®ç§»è¡ã«åããããã®ãªãªãŒã¹ã§ãTS6ã§éæšå¥šã«ãªã£ããªãã·ã§ã³ã¯TS7ã§åé€ãããŸãããã®ãããTS6ã§éæšå¥šã®ãªãã·ã§ã³ãæŽçããŠãããTS7ãžåãæ¿ããå¿
èŠããããŸãã TS7.0ã¯ãåŸæ¥ã®Compiler APIããµããŒãããŠããŸãããCompiler APIã¯ãTypeScriptãèªã¿èŸŒã¿ãæ§æè§£æãåãã§ãã¯ãªã©ãåŒã³åºãããã®APIã§ã typescript-eslint ã vite-plugin-dts ãªã©ã®åšèŸºããŒã«ãå©çšããŠããŸããåŸæ¥ãšã¯ç°ãªãæ°ããAPIã¯TS7.1ã§æäŸãããäºå®ã§ïŒ2026幎10æã«Betaçãå
¬éïŒãåšèŸºããŒã«ããã®APIã«å¯Ÿå¿ãããŸã§ã¯ãããããããŒã«ãTS7ã ãã§ã¯åãããŸãããããã§ãCLIã§å®è¡ããåãã§ãã¯ãšãAPIã䜿ãåšèŸºããŒã«ãåããTS6ãšTS7ãå
±åãããŸãããTS6ãšTS7ãå
±åãããèšå®ã¯ã Nxã®å
¬åŒããã¥ã¡ã³ã ã§ã玹ä»ãããŠããŸãã ãŸãã ignoreDeprecations ãæå®ããªãç¶æ
ã§TS5.9ããTS6ã«åãæ¿ããåãã§ãã¯ãšãã«ããå®è¡ããŸãããTS6ã§éæšå¥šã«ãªã£ããªãã·ã§ã³ã䜿ã£ãŠããç®æã§ã¯ãšã©ãŒãçºçããããããªããžããªå
ã§äœ¿ã£ãŠããéæšå¥šã®ãªãã·ã§ã³ãææ¡ã§ããŸãã æ¬¡ã«ãå
±éã®tsconfigã«æ¬¡ã®ãªãã·ã§ã³ã远å ããŠãããäžåºŠå®è¡ããŸããã { " compilerOptions ": { " ignoreDeprecations ": " 6.0 " } } ignoreDeprecations: "6.0" ãæå®ãããšãTS6ã§éæšå¥šã«ãªã£ããªãã·ã§ã³ã䜿ã£ãŠããšã©ãŒãçºçããããã®ãŸãŸåããŸãããã ãããã®ãªãã·ã§ã³ã§ãšã©ãŒãææ¢ã§ããã®ã¯éæšå¥šã«ãªã£ããªãã·ã§ã³ãªã©ã®éæšå¥šãšã©ãŒã§ãæ¢å®å€ã®å€æŽãåå®çŸ©ã®å€æŽã«ãããšã©ãŒã¯æ®ããŸããéæšå¥šã«ãªã£ããªãã·ã§ã³ãæ¢å®å€ã®å€æŽã®äžèЧã¯ã TypeScript 6.0ãªãªãŒã¹ããŒã ã§ç¢ºèªã§ããŸãã ãã®ç¶æ
ã§æ®ã£ãã®ã¯ãæ¢å®å€ã®å€æŽïŒCSSã®å¯äœçšimportã rootDir ïŒãšDOMã®åå®çŸ©ã®å€æŽïŒ FileList ã®ã¢ãã¯ïŒã«ãããšã©ãŒã§ãããã©ããTS5.9ã®ãŸãŸã§çŽãããããTS6ãžæŽæ°ããåã«å¯Ÿå¿ããããšã«ããŸããããŸãã baseUrl ã¯éæšå¥šã®ãšã©ãŒãææ¢ã§ãããã®ã®ããã«ãã§å¥ã®åé¡ãèŠã€ãã£ãããããããTS6ç§»è¡åã«åé€ããŸããã æ®µé 察å¿å
容 確èªããããš TS6ç§»è¡å CSSã®å宣èšãFileListã¢ãã¯ãrootDirã»outDirãbaseUrlãžã®å¯Ÿå¿ TS5.9ã§ãåãç¶æ
ã§äºææ§å¯Ÿå¿ãæžãŸãã TS6ç§»è¡ TS6ããªããžå°å
¥ãéæšå¥šã«ãªã£ããªãã·ã§ã³ã®åé€ãå®ã³ã³ãã€ã©ã®åºå® TS6ãžã®æŽæ°ãšèšå®å€æŽã®åœ±é¿ãé ã«ç¢ºããã TS7ç§»è¡ TS7ã远å ããtypecheckãåãæ¿ãã TS6ãšã®å·®åãšåšèŸºããŒã«ã®åäœã確èªãã ãã®é åºã«ããããšã§ãåé¡ãèµ·ãããšãã«ãèšå®å€æŽã«ãããã®ããã³ã³ãã€ã©ãåãæ¿ããããšã«ãããã®ãã調ã¹ããããªããŸããã TS6ç§»è¡åã«ãæ¢å®å€ãšåå®çŸ©ã®å€æŽãžå¯Ÿå¿ãã CSSã®å¯äœçšimportã«å宣èšã远å ãã TS6ã§ã¯ noUncheckedSideEffectImports ã®æ¢å®å€ã true ã«ãªããŸãããæ¬¡ã®ããã«å€ãåãåããã«èªã¿èŸŒãå¯äœçšimportã§ããåç
§å
ã解決ã§ããªããšãšã©ãŒãçºçããŸãã import '@radix-ui/themes/styles.css'; ãã®CSSã«å¯Ÿå¿ããå宣èšãè¶³ããããšã©ãŒãçºçããŸãããããã§ãåãã§ãã¯ã®å¯Ÿè±¡ã«å«ãŸãã env.d.ts ãžå®£èšã远å ããŸããã declare module '@radix-ui/themes/styles.css' {} ignoreDeprecations ãæå®ããŠãæ®ããšã©ãŒãªã®ã§ãTS6ãžæŽæ°ããåã«å¯Ÿå¿ããŸããã DOMã®åå®çŸ©ã®å€æŽã§ãFileListã«ã€ãã¬ãŒã¿ãŒãå¿
èŠã«ãªã£ã TS6ã§ã¯ã dom.iterable ã®å
容ã dom ã«çµ±åãããŸããïŒ TypeScript 6.0ãªãªãŒã¹ããŒã ïŒãããã«ããã lib ã« dom ã ããæå®ããŠããå Žåã§ãã FileList ã®åã«ã€ãã¬ãŒã¿ãŒãå«ãŸããããã«ãªããŸãã // TS5.9ã®lib.dom.d.ts interface FileList { readonly length: number; item(index: number): File | null; [index: number]: File; } // TS6ã§ã¯lib.dom.d.tsã«æ¬¡ã®å®çŸ©ãå ããïŒåŸæ¥ã¯lib.dom.iterable.d.tsã«ãã£ãïŒ interface FileList { [Symbol.iterator](): ArrayIterator<File>; } ãã®å€æŽã®åœ±é¿ã§ããã¹ãã§äœ¿ã£ãŠãã FileList ã®ã¢ãã¯ãåãšã©ãŒã«ãªããŸãããã¢ãã¯ã¯TS5.9ã® FileList ãæã€æ°å€ã€ã³ããã¯ã¹ã length ã item ãåããŠããŸããããTS6ã§å ãã£ãã€ãã¬ãŒã¿ãŒãæã£ãŠããªãã£ãããã§ãã ã€ãã¬ãŒã¿ãŒãæã€åœ¢ãžã®ä¿®æ£ã¯TS5.9ã®ãŸãŸã§ãã§ãããããTS6ãžæŽæ°ããåã«å¯Ÿå¿ããŸããã rootDirãžã®å¯Ÿå¿ã¯ããã¡ã€ã«ãåºåãããã§åãã rootDir ã¯ãåºåãã¡ã€ã«ã®é
çœ®ãæ±ºããããã®ããœãŒã¹åŽã®åºæºãã£ã¬ã¯ããªã§ããTS5.9ã§ã¯ã composite ãç¡å¹ã§ rootDir ãæå®ããŠããªãå Žåãå
¥åãœãŒã¹ã®å
±éãã£ã¬ã¯ããªããæšè«ãããŠããŸãããTS6ã§ã¯ãtsconfigã®é
眮ãã£ã¬ã¯ããªãæ¢å®å€ã«ãªããŸãã ããšãã°ãæ¬¡ã®æ§æã§ feature-a ã core ã®ãœãŒã¹ãimportããã±ãŒã¹ã§ãã libs/ feature-a/ tsconfig.json src/index.ts â coreã®ãœãŒã¹ãimport core/ src/index.ts ãã®2ã€ã®ãœãŒã¹ã察象ã«ããå ŽåãTS5.9ã§ã¯å
±éã® libs ãåºæºã«ãªããŸããä»åã®å®£èšãã¡ã€ã«ãçæããèšå®ã§ã¯ãTS6ã§ libs/feature-a ãåºæºãšãªããç¯å²å€ã® core ãåç
§ããããã rootDir ã®å€ã«ãããœãŒã¹ãã¡ã€ã«ãå«ãã§ããããšã瀺ããšã©ãŒãçºçããŸããã 宣èšãã¡ã€ã«ãçæããã©ã€ãã©ãªã§ã¯ãåç
§ãããœãŒã¹ãå«ãããã« rootDir ãæç€ºããŸãããããšãã°ããã®é
眮㮠libs/feature-a/tsconfig.json ãªããã¯ãŒã¯ã¹ããŒã¹ã«ãŒã㯠../.. ã§ãã { " compilerOptions ": { " rootDir ": " ../.. " } } äžæ¹ãåãã§ãã¯å°çšã®èšå®ã§ã¯ã --noEmit ãæå®ããŠããŠãã outDir ãæ®ã£ãŠããããšã§ããœãŒã¹ã rootDir ã®ç¯å²å
ã«ãããã®æ€æ»ãå®è¡ãããåããšã©ãŒãçºçããŠããŸããããã¡ã€ã«ãåºåããªããã outDir ã¯äžèŠã§ããããã§ outDir ãåé€ãããã®ç¯å²æ€æ»ãå®è¡ãããªãããã«ããŸããã { "compilerOptions": { - "outDir": "../../dist/typecheck", "types": ["node"] } } TS6ã§baseUrlãæ®ããšãnext buildã倱æãã baseUrl ã¯TS6ã§éæšå¥šã«ãªã£ããªãã·ã§ã³ãªã®ã§ãéæšå¥šã®ãšã©ãŒã¯ ignoreDeprecations ã§ææ¢ã§ããŸãããã ãNext.js 16.2.xã¯ãTS6ãæ€åºãããš baseUrl ãæ¶ãã paths ãã¢ããªã®tsconfigããã®çžå¯Ÿãã¹ã«æžãæããŸããäžæ¹ãTypeScript㯠paths ãå®çŸ©ããå
±éã®tsconfigã®å Žæãåºæºã«è§£æ±ºãããããæžãæãåŸã®ãã¹ããããŠãå
±éã®tsconfigããç¶æ¿ãããšã€ãªã¢ã¹ã解決ã§ããŸããããã®ããããã³ãã«ã¯éã£ãŠãã next build ã®åãã§ãã¯ã§ Cannot find module ã®ãšã©ãŒãçºçããŸããããã®äºè±¡ã¯ã Next.jsã®Issue #93336 ã«ãå ±åãããŠããŸãã åãã§ãã¯ã®CLIã ãã§ãªããã«ãã詊ããããšã§ããã®åé¡ãæ€åºã§ããŸãããããã§ã baseUrl ã¯TS6ç§»è¡åã«åé€ããŸããã Nxã®ã¢ãã¬ãã§ã¯ãåãããžã§ã¯ãã®tsconfigãã¯ãŒã¯ã¹ããŒã¹ã«ãŒãã® tsconfig.base.json ãç¶æ¿ããŠããããã¹ãšã€ãªã¢ã¹ã® paths ã¯ãã®ãã¡ã€ã«ã«ãŸãšããŠå®çŸ©ããŠããŸãã baseUrl ãæå®ããªãå Žåã paths ã®å€ã¯ãã®tsconfigããã®çžå¯Ÿãã¹ãšããŠè§£æ±ºãããŸãããã®ããã tsconfig.base.json ã® paths ã®å€ãã ./ ããå§ãŸãçžå¯Ÿãã¹ã«æžãæããŸããã { "compilerOptions": { - "baseUrl": ".", "paths": { - "@my-org/feature-a": ["libs/feature-a/src/index.ts"] + "@my-org/feature-a": ["./libs/feature-a/src/index.ts"] } } } ããããŠã baseUrl ãåæã«ãã¹ãšã€ãªã¢ã¹ã解決ããŠããStorybookã®èšå®ã調æŽããŠããŸãã ãªãããã®åé¡ã¯Next.js 16.3.0ã§ä¿®æ£ããã baseUrl ãæ¶ã㊠paths ãæžãæããåŠçã¯ãªããªããŸããïŒ PR #93377 ïŒã TS6ç§»è¡ã§éæšå¥šã«ãªã£ããªãã·ã§ã³ãæŽçããã³ã³ãã€ã©ãåºå®ãã TS6ããªããžãå°å
¥ããŠãããesModuleInteropã倿Žãã TS6ãžã®ç§»è¡ã§ã¯ã typescript ãšããååã§TS6ã®APIãæäŸãã€ã€ãCLIã tsc6 ãšããŠåŒã³åºããããªããžããã±ãŒãžã䜿ããŸããã { " devDependencies ": { " typescript ": " npm:@typescript/typescript6@6.0.2 " } } åæã«ãåãããžã§ã¯ãã® typecheck ã³ãã³ãã tsc ãã tsc6 ãžå€æŽããŸãããããã¯TS7ã® tsc ãå°å
¥ããTS6ãšTS7ãå
±åãããããã§ãã esModuleInterop ã¯ãCommonJSãªã©ã®ã¢ãžã¥ãŒã«ãES Modules圢åŒã§importãããšãã®åãã§ãã¯ããTypeScriptã«ããJavaScriptåºåã«é¢ãããªãã·ã§ã³ã§ããTS6ã§ã¯ false ã®æå®ãéæšå¥šãšãªãããã®æå®ãåé€ãããšæ¢å®å€ã® true ãžåãæ¿ãããŸãã ã³ã³ãã€ã©ã®æŽæ°ãšèšå®å€æŽã®åœ±é¿ãåããŠç¢ºèªããããããŸã㯠esModuleInterop: false ãæ®ãã ignoreDeprecations: "6.0" ã§éæšå¥šã®ãšã©ãŒãææ¢ããŸãããTS6ã§ã®åäœã確èªããŠãããæ¬¡ã®å€æŽã§ esModuleInterop: false ãåé€ããŠããŸãã éæšå¥šã«ãªã£ããªãã·ã§ã³ãžã®å¯Ÿå¿ãæžãã ãšããã§ã ignoreDeprecations ãåé€ããŸããã ããªããžã®ããŒãžã§ã³ãšå®ã³ã³ãã€ã©ã®ããŒãžã§ã³ã¯å¥ã ã£ã äŸåé¢ä¿ã確èªãããšã typescript ã 6.0.2 ã«åºå®ããŠããåãã§ãã¯ãè¡ãå®ã³ã³ãã€ã©ãŸã§ã¯åºå®ã§ããŠããŸããã§ããã typescriptãšããååã§ã€ã³ã¹ããŒã« ââ @typescript/typescript6@6.0.2 ââ @typescript/oldïŒnpm:typescript@^6ïŒ ââ åœæã®è§£æ±ºçµæã¯typescript@6.0.3 ããªããžã¯APIãCLIã®åŠçãäŸåå
ãžæž¡ãããã±ãŒãžã§ãã 6.0.2 ã¯ããªããžèªèº«ã®ããŒãžã§ã³ã§ããã tsc6 --version ãè¿ãå®ã³ã³ãã€ã©ã®ããŒãžã§ã³ã¯ 6.0.3 ã§ããã TypeScriptã®minor以äžã®æŽæ°ã¯æåã§è¡ãéçšã«ããŠããŸããããããäŸåå
ã®æå®ã ^6 ã®ãŸãŸã ãšãlockfileãåçæãããªã©ããŠäŸåé¢ä¿ãå解決ãããéã«ãå°æ¥ã®6.1ãéžã°ããå¯èœæ§ããããŸããã«ãŒãã®package.jsonã§TypeScriptã®æå®ãå€ããŠããªããŠããåãã§ãã¯ã®çµæãå€ããåŸãŸãã ããã§ãnpmã® overrides ã§å®ã³ã³ãã€ã©ãåºå®ããŸããã { " overrides ": { " @typescript/old ": " npm:typescript@6.0.3 " } } æ¢åã®lockfileã§ã6.0.3ã«è§£æ±ºãããŠããããããã®è¿œå ã«ããlockfileã®å·®åã¯ãããŸããã§ãããå®è¡äžã®ããŒãžã§ã³ãå€ãããæ¬¡ã«äŸåé¢ä¿ã解決ãããšãã®ç¯å²ãéå®ãã倿Žã§ãã TS7ç§»è¡ã§ãtypecheckãåãæ¿ããAPIã䜿ãåŠçãæ€èšŒãã TS6ç§»è¡ã§éæšå¥šã«ãªã£ããªãã·ã§ã³ãžã®å¯Ÿå¿ãå®äºããTS7ç§»è¡ã«é²ã¿ãŸããããŸããTS7ã @typescript/native ãšããå¥åã§è¿œå ããŸãããpackage.jsonã®é¢ä¿ããéšåã¯æ¬¡ã®åœ¢ã§ãã { " devDependencies ": { " typescript ": " npm:@typescript/typescript6@6.0.2 ", " @typescript/native ": " npm:typescript@7.0.2 " } , " overrides ": { " @typescript/old ": " npm:typescript@6.0.3 " } } åãããžã§ã¯ãã® typecheck ã tsc6 --noEmit ãã tsc --noEmit ãžåãæ¿ãããšãTS7ã§åãã§ãã¯ã§ããŸããåãæ¿ãåŸã®åŒã³åºãå
ã¯æ¬¡ã®ãšããã§ãã åŒã³åºãæ¹ äœ¿çšããã³ã³ãã€ã© tsc TS7 tsc6 TS6 require('typescript') ãªã©ã®APIèªã¿èŸŒã¿ ããªããžçµç±ã®TS6 npx tsc --version # Version 7.0.2 npx tsc6 --version # Version 6.0.3 node -p " require('typescript').version " # 6.0.3 TS6ã®APIã䜿ãåŠçã«ã¯ã vite-plugin-dts ã«ãã宣èšãã¡ã€ã«çæãã typescript-eslint ã«ããæ§æè§£æããããŸããããããèªã¿èŸŒãTypeScriptãTS5.9ããTS6ãžæŽæ°ããŠããããã宣èšãã¡ã€ã«çæãšlintãäžå¿ã«åäœç¢ºèªãã圱é¿ããªããã調ã¹ãŸããã åäœç¢ºèªã§å€±æããåŠçã¯ãç§»è¡åã®ã³ãŒãã§ãåãæ¡ä»¶ã§å®è¡ããç§»è¡ã§æ°ããçºçããåé¡ãåãåããŸããã ããŒã«ã«ã®åãã§ãã¯ã¯48ç§ãã15.8ç§ãžãCIã®å®è¡ã¹ãããã¯çŽ35%ççž® ããŒã«ã«ã§å
šãããžã§ã¯ãã®typecheckãã --skip-nx-cache ãä»ããŠãã£ãã·ã¥ã䜿ããã«ãåãæ¡ä»¶ã§å®è¡ããŸãããTS6ã®48ç§ããTS7ã®15.8ç§ã«ãªããçŽ3åéããªã£ãŠããŸãã 察象 TS6ïŒtsc6ïŒ TS7ïŒtscïŒ å
šãããžã§ã¯ãã®typecheck 48.0ç§ 15.8ç§ CIã§ã¯ã nx affected -t lint,stylelint,typecheck ãå®è¡ããã¹ããããæ¯èŒããŸããã ããŒãžã§ã³ å¹³åå®è¡æé TS5.9 366.0ç§ TS6 367.0ç§ TS7 239.4ç§ æ¯èŒããrunã¯ãããããå
šãããžã§ã¯ãã§lintã»stylelintã»typecheckãå®è¡ããããã®ã§ãåãã³ã¢æ°ã®runnerã§å®è¡ãããã¹ãŠæåããŠããŸãã TS6ã®367.0ç§ã«å¯ŸããTS7ã¯å¹³å239.4ç§ãšãªããã¹ãããå
šäœã§çŽ35%ççž®ããŸãããTS6ã«äžããæç¹ã§ã¯ãå®è¡æéã¯TS5.9ã®ãããšã»ãŒåãã§ãããçããªã£ãã®ã¯TS7ã«åãæ¿ããPRããã§ããã®åŸã®å®è¡ã§ãçããŸãŸã§ããåãæéã®TypeScript以å€ã®å€æŽã確èªããŸããããççž®ã®çç±ã«ãªããããªãã®ã¯ãããŸããã§ããããã®ãããççž®ã¯TS7ãžã®åãæ¿ãã«ãããã®ãšå€æããŠããŸãã ãã®35%ã¯lintã»stylelintã»typecheckãåãããæéã§ããCIã§ã¯typecheckåäœã®æèŠæéãååŸããŠããªããããããŒã«ã«èšæž¬ã®çŽ3åãšã¯æž¬ã£ãŠãã察象ãç°ãªããŸãã Next.js 16.3.0ã§ãã«ãã倱æããCompiler APIæ¹åŒã«æ»ãã ç§»è¡åŸãNext.jsã®ããŒãžã§ã³ã16.3.0ãžäžããéã«ã next build ã®åãã§ãã¯ã®åŠçã§ãšã©ãŒãçºçãããã«ãã倱æããŸããã Next.js 16.3.0ã§ã¯ãæ¢å®ã®æ¹åŒãCompiler APIãåŒã³åºãæ¹åŒããCLIãåŒã³åºãæ¹åŒã«å€ãããŸããã16.3.0ã®å®è£
ã¯ã typescript ãšããŠã€ã³ã¹ããŒã«ããTS6ããªããžã® tsc6 ãæ€åºã§ããŸããã§ããããã®çµæãTurbopackã§ãã«ãããçµè·¯ã§ã¯TypeScriptããã±ãŒãžã®äžè¶³ã瀺ããšã©ãŒïŒ Issue #96589 ïŒããwebpackã§ãã«ãããçµè·¯ã§ã¯tsconfigã® paths ãç¡èŠãããŠãã¹ãšã€ãªã¢ã¹ã解決ã§ããªããšã©ãŒïŒ Issue #97015 ïŒãçºçããŸããã ããã§ã next.config.js ã« useTypeScriptCli ã®èšå®ã远å ããCompiler APIãäœ¿ãæ¹åŒã«æ»ããŸããã const nextConfig = { experimental: { useTypeScriptCli: false, }, }; module.exports = nextConfig; ãã®æ§æã§ã¯ãNxã® typecheck ã¯TS7ãNext.jsã®ãã«ãå
éšã®åãã§ãã¯ã¯TS6ã§å®è¡ããŸããTS6ã®APIãæ®ããŠããããã«éžã¹ã察å¿ã§ãã typescript èªäœãTS7ã«çœ®ãæããç°å¢ã§ã¯ãåãèšå®ã§APIæ¹åŒãžæ»ããŸããã ãªãã tsc6 ãæ€åºã§ããªãåé¡ã¯ãNext.js 16.3.4ã§ä¿®æ£ãããŸããã æ®µéã«åããŠé²ããç§»è¡ã®æ¯ãè¿ããšä»åŸ ä»åã®ç§»è¡ã§ã¯ãTS6ç§»è¡åãTS6ç§»è¡ãTS7ç§»è¡ã®3段éã«åããæ®µéããšã«æ€èšŒããªããé²ããŸãããCLIã§äœ¿ãç®æãšCompiler APIã§äœ¿ãç®æãåããããšã§ãåšèŸºããŒã«ãåãããªããåãã§ãã¯ãTS7ãžåãæ¿ããããããŒã«ã«ã®åãã§ãã¯ã¯çŽ3åãCIã®ã¹ãããã¯çŽ35%éããªããŸããã ä»åŸã®å¯Ÿå¿ãšããŠããŸã useTypeScriptCli: false ã®åé¿çãå€ããã確èªããŸããTS6ããªããžã® tsc6 ãæ€åºã§ããªãåé¡ã¯Next.js 16.3.4ã§ä¿®æ£ããããããæ¢å®ã®CLIæ¹åŒã«æ»ããèŠèŸŒã¿ã§ãã ãŸãã next build ãš @nx/vite:build ã¯ããã«ãã®äžã§ä»ãTS6ã«ããåãã§ãã¯ãå®è¡ããŠããŸããåãåãã§ãã¯ã¯TS7ã® typecheck ã¿ã¹ã¯ã§ãå®è¡ããŠããããããã«ãåŽã®åãã§ãã¯ãæ¢ã㊠typecheck ã¿ã¹ã¯ã«ä»»ãã察å¿ãé²ããäºå®ã§ããããã«ããããã«ãã®æéãçããªãèŠèŸŒã¿ã§ãã TS7ã®ç»å Žã§ãTypeScriptãåãå·»ãããŒã«ã®ç°å¢ã¯å€§ããå€ããã€ã€ãããŸããä»åŸãTypeScriptã®ããŒãžã§ã³ã¢ãããåšèŸºããŒã«ã®TS7察å¿ã®ååã远ããããå¿«é©ã«éçºã§ããç°å¢ãæŽããŠãããŸãã ãã¡ã€ã³ãã£ã§ã¯äžç·ã«åãã¡ã³ããŒãåéããŠããŸãïŒ èå³ãããæ¹ã¯ãã¡ããã â herp.careers
ããã«ã¡ã¯ãããã°ãã¯ã ãã¡ã€ã³ãã£ã§ãªãŒããšã³ãžãã¢ãããŠãã @shoota ã§ãã ãããŸã§ Findy Team+ ã®ããã³ããšã³ããªãŒããšããŠãã¢ãã¬ãã®ãªã¢ãŒããã¯ãã£ãCIã®é«éåãAIã¬ãã¥ãŒã®ä»çµã¿ã¥ãããšãã£ãèšäºãæžããŠããŸããã tech.findy.co.jp ä»åã¯ããããå°ãé¢ããå¥ã®ãããã¯ãã«äžäººã§å
¥ã£ãŠãã¶ã€ã³ã·ã¹ãã ãå°å
¥ããè©±ãæžããŸãããšãã£ãŠãããã¶ã€ã³ã·ã¹ãã ã®äœãæ¹ãç§»è¡ã®ä»çµã¿ã®è©±ã§ã¯ãããŸãããå°å
¥ãå§ããŠããã«ãèªåãããã¶ã€ã³ã·ã¹ãã ããšããèšèã§æããŠãããã®ãšããã¶ã€ããŒãæããŠãããã®ããŸã£ããéããšæ°ã¥ãã話ã§ãã ãããã¯ãã®ããã³ããšã³ãã«é¢ãããªããããã¶ã€ã³é åããªããšãªãã®çè§£ã§æžãŸããŠãããšã³ãžãã¢ã«åããŠæžããŠããŸããããã¶ã€ã³ã·ã¹ãã ã®å°å
¥ã£ãŠãéšåã眮ãæããã°çµããã§ãããïŒãããæã£ãæ¹ã¯ãå°å
¥åã®ç§ãšåãèãã§ãããã®èãã§äœã£ãèšç»ãã©ãã§æ¢ãŸã£ããããé çªã«æžããŠããŸãã ãã¶ã€ã³ã·ã¹ãã ã®å°å
¥ãèªåã®åœ¹å²ã«ãã ããã¶ã€ã³ã·ã¹ãã ãã®å®çŸ©ãéã£ãŠãã ã¢ããã¶ã€ã³ã§ãã¶ã€ã³ããã»ã¹ã远äœéšãã æè¡ã¯ãã£ããèŠç¹ããªãã£ã åŠã¶äœå°ãäœã£ãé²ãæ¹ ãããã« ãã¶ã€ã³ã·ã¹ãã ã®å°å
¥ãèªåã®åœ¹å²ã«ãã 2026幎ã®å€ãããã³ããšã³ããšã³ãžãã¢ãšããŠæè¡é åãåºããããšèãããã¶ã€ã³é åã«èžã¿èŸŒãåžæãåºããŸããã察象ã®ãããã¯ãã¯åè£ã®äžãããèŠæš¡ã倧ãããããä»åŸã®æ©èœéçºãå¢ããŠããèŠèŸŒã¿ã®ããäŒæ¥åãã®ãããã¯ãã«æ±ºãŸããŸããã ãã®ãããã¯ãã®éçºããŒã ã¯ãAIã®äœ¿ãæ¹ãã«ãŒã«ããªãªãŒã¹ãŸã§ã®é²ãæ¹ã®èªèãããæã£ãæçããããŒã ã§ããããããžå¥ãããã¯ãããäžäººã§å
¥ããæ¢åã®ç»é¢ã shadcn/ui ãããŒã¹ã«ãããã¶ã€ã³ã·ã¹ãã ãžæ®µéçã«çœ®ãæããŠããããšã«ãªããŸããã ãã¡ã€ã³ãã£ã§ã¯ãå¥ã®ããŒã ã§ããã¶ã€ã³ã·ã¹ãã ãäœã£ãŠéçšããŠããŸãã人ãšAIãåãå€æåºæºãåç
§ããããã®ä»çµã¿ã§ãã tech.findy.co.jp ãã ããããã¯ãããšã«UIã®ææ³ãæ¥ååºæã®è¡šçŸã¯éããŸãããã®ããããã®ä»çµã¿ããã®ãŸãŸæã¡èŸŒãã®ã§ã¯ãªããäŒæ¥åããããã¯ãã®ããã®ãã¶ã€ã³ã·ã¹ãã ãæ°ããäœãããšã«ãªããŸãããæ¬èšäºã§ã¯ããã®ãã¶ã€ã³ã·ã¹ãã ãæ¢åã®ãããã¯ãã«åŸããå
¥ããåŽã®ãšã³ãžãã¢ããäœã«ã€ãŸãããããæžããŸãã ããã¶ã€ã³ã·ã¹ãã ãã®å®çŸ©ãéã£ãŠãã æåã®å£ã¯ãèšç»ãç«ãŠãçŽåŸã«ãã£ãŠããŸããã ãããŸã§èªåã«ãšã£ãŠã®ãã¶ã€ã³ã·ã¹ãã ã¯ããã¶ã€ã³ããŒã¯ã³ãããšã«ããã³ã³ããŒãã³ãã«ã¿ãã°ãšãããã§çµ±äžãããUIãã¶ã€ã³ã®ããšã§ãããã ããå°å
¥ãšã¯ãshadcn/uiã®éšåã§æ¢åã®ç»é¢ã眮ãæããäœæ¥ãã§ãææç©ã¯Storybookã«äžŠãã ã³ã³ããŒãã³ãã ãšæã£ãŠããŸãããç»é¢ãäžã€ãã€çœ®ãæããŠããã°çµããäœæ¥ã§ããããèããŠãç»é¢åäœã®ç§»è¡èšç»ãäœããŸããã ãšããããã¶ã€ããŒãšè©±ããŠãããã¡ã«ãèªåã®èšç»ã«ã¯çœ®ãæãã®åã®æ®µéããŸãããšæããŠãããšæ°ã¥ããŸãããshadcn/uiããã®ãããã¯ãã«ã¯ããããã®èšèšãããŒã¯ã³ãã©ãå®çŸ©ããããã©ã®ç»é¢ãã¿ãŒã³ã«ã©ã®ã«ãŒã«ãé©çšãããããã¶ã€ããŒã«ãšã£ãŠã®ææç©ã¯éšåã§ã¯ãªãã ãªãããããã®ããšããæææ±ºå®ãšããã®æ ¹æ ã«ãªããã¡ã€ã³ãšãŠãŒã¶ãŒã®çè§£ ã§ããã èªåã®èšç»ã«ã¯ãç§»è¡ã®ããã®ãã¶ã€ã³ããã»ã¹ã圹å²ã®åæ
ãå€æåºæºããã¶ã€ã³ãšããŠã®å質ãã©ãè©äŸ¡ããããšãã£ãç¹ããã»ãšãã©å
¥ã£ãŠããŸããã§ãããUIããŒããå®éã®ç»é¢ã«åœãŠã¯ãããã¶ã€ã³ã«è³ããŸã§ã®æ®µéãããŸãããšæããŠããã®ã§ãã çµæãšããŠãäœæ¥éã®èŠç©ããããŸã£ããåãããéçºã¹ã±ãžã¥ãŒã«ãåŒããªãç¶æ
ã«ãªããŸãããåãããã¶ã€ã³ã·ã¹ãã ããšããèšèã䜿ããªãããéããã®ãæããŠè©±ããŠããã®ã ãšããã®ãšãåããŠæ°ã¥ããŸããã ã¢ããã¶ã€ã³ã§ãã¶ã€ã³ããã»ã¹ã远äœéšãã ãããåããããã«é Œãã ã®ã¯ããã¶ã€ããŒã®äœæ¥ãçºããªããæèãèšèªåããŠãããã¢ããã¶ã€ã³ã§ãããå®éã®ãã©ãŒã ç»é¢ã顿ã«ããŠãshadcn/uiãžçœ®ãæããåæã§ãã©ã®èŠçŽ ãæ€èšããå¿
èŠãããã®ãã解説ããŠããããªããããã¶ã€ã³ããã»ã¹ãäžç·ã«ãã©ããŸããã ããã§æãã£ãæ€èšäºé
ã¯ãèªåã®æ³å®ãšã¯ãŸã£ããéãç²åºŠã§ãããããšãã°æ¬¡ã®ãããªç¹ã§ãã æ¢åç»é¢ã®äœçœãšãã©ã³ããµã€ãºã®ã«ãŒã«ãææ§ã§ãã®ãŸãŸéšåã眮ãæããŠãè¯ããªããªã ãã©ãŒã ã®ãã¶ã€ã³ãã¿ãŒã³ããéžè±ããŠããUIãããããŠãŒã¶ãŒãçè§£ãã«ãã å¿
é é
ç®ã®è¡šçŸãã·ã³ãã«ãçµ±äžãããŠãããããããã«ãã ã©ããéšåã眮ãæããã ãã§ã¯è§£æ±ºããŸãããå
ã«ããã®ãããã¯ãã§ã¯ããããããšããã«ãŒã«ã決ãããã®ã«ãŒã«ã«æ²¿ã£ãŠç»é¢ãçµã¿ç«ãŠãå¿
èŠããããŸãããã¶ã€ããŒãæ®æ®µã©ãããé çªã§èããã©ãã§ç«ã¡æ¢ãŸã£ãŠå€æããŠããã®ããç®ã®åã§èŠãããããšã§ãããããèšç»ã«äœãè¶³ããªãã£ãã®ããåãããŸããã ããããŠãèãæ¹ãè£ãããã®æ¬ãæããŠããããŸããã Adam SilverèãForm Design Patterns: ã·ã³ãã«ã§ã€ã³ã¯ã«ãŒã·ããªãã©ãŒã å¶äœå®è·µã¬ã€ãã ãšãå
¬éãããŠãã SmartHR Design System ã®ããã¥ã¡ã³ãã§ããåè
ã¯ãã©ãŒã ãšãã顿ãéããŠãèŠãç®ã®åã«æ±ºããã¹ãããšãäœããæããŠãããŸããåŸè
ã¯å€æåºæºã«ã¯ã©ã®ãããªçš®é¡ããããã©ããªåºæºãã€ããããšã§å€æããããã®ãã俯ç°ããŠèŠãããšãã§ããŸãã ãã®åŸèªåããã¶ã€ã³ãäœãããã¶ã€ããŒããã®æå³ãšæææ±ºå®ãã¬ãã¥ãŒã§ç£šã圢ã«èœã¡çããŸãããããã¯ããšããšãã¶ã€ããŒå士ãåããŠããã¬ãã¥ãŒãããŒãèžè¥²ãããã¶ã€ã³ãå®è£
ããé¢ããŠæ€èšããå Žã«ãªã£ãŠããŸãããšã³ãžãã¢ããã¶ã€ããŒã®ä»äºã代ããã«ããããã§ã¯ãªããã¬ãã¥ãŒã§æå³ã磚ããŠãããåæããã£ãŠåããŠæãç«ã€åæ
ã§ãã æè¡ã¯ãã£ããèŠç¹ããªãã£ã ãããŸã§èªããšããšã³ãžãã¢ããã¶ã€ã³ãããã®ã¯ç¡çãããããã«èããããããããŸããããã ãå®éã«æãåãããŠã¿ããšãå®è¡ãã®ãã®ã«éå£ã¯ã»ãšãã©ãããŸããã§ããã UIãã©ãããä»çµã¿ã§åãã®ããã©ãå®è£
ããã®ãã眮ãæãã®é£æåºŠã¯ã©ããããããã©ããŸã§ãªã劥åã§ããã®ãããããã倿ã¯ãããŸã§ã®çµéšã§ã§ããŸããããŸããŸãªUIã©ã€ãã©ãªã«è§ŠããŠããã®ã§ãããããã®èšèšææ³ãããŒã¯ã³ã®åé¡ãçè§£ããŠããŸããããã¶ã€ã³ã®ææ³ãšçè«ãçè§£ãããããã°ãããã圢ã«ããå·¥çšã«å°ãããšã¯ãªãã£ãã®ã§ãã è¶³ããªãã£ãã®ã¯èŠç¹ã§ããã èšå®ç»é¢ã®ãã©ãŒã ãèµ·ãããŠãããšãã®ããšã§ããå
ã®ç»é¢ã§ã¯ãã©ãã«ãšå
¥åæ¬ã暪ã«äžŠãã§ããŸãããèªåã¯ãã®ã¬ã€ã¢ãŠããçãããæšªäžŠã³ã®ãŸãŸå®è£
ããŸãããæ¢åã®ç»é¢ãå£ããªããšããç§»è¡ã®ååã«æ²¿ãã°ããããæ£ãã倿ã«èŠããããã§ãã ããšããšã®ã©ãã«ãšå
¥åæ¬ã暪䞊ã³ã®ãã©ãŒã ïŒãããŒããŒã¿ã§åçŸïŒ ãã®ãã©ãŒã ã«ã¯ããã¶ã€ããŒã®ã¬ãã¥ãŒã§ææãå
¥ããŸãããã©ãã«ã¯å
¥åæ¬ã®äžã«çœ®ãã®ãåºæ¬ã ãšããææã§ããæ ¹æ ãç¥ããããŠãForm Design Patternsããèªããšãçç±ãã¯ã£ããæžãããŠããŸãããèŠç·ãå·Šå³ã«åŸåŸ©ããªãããšãã©ãã«ã®æåæ°ãå€ãã£ãŠããèŠèŠçãªãªãºã ã厩ãã«ããããšãã©ã¡ãããå
¥åãã人ã®ç®ã®åããèµ·ç¹ã«ããçç±ã§ããã ã©ãã«ãå
¥åæ¬ã®äžã«çœ®ãããã©ãŒã ïŒãããŒããŒã¿ã§åçŸïŒãèŠç·ãåŸåŸ©ãããã©ãã«ã®é·ããå€ãã£ãŠããªãºã ã厩ããªã ãã©ãŒã ã¯çžŠäžŠã³ã«çŽããŸãããèªåã¯ã暪䞊ã³ãã©ãå®è£
ããããã ããèããŠããŠãããªã暪䞊ã³ãªã®ããã¯èããŠããŸããã§ããããã®åããããã¶ã€ã³ã®å
¥å£ã ã£ãã®ã§ãã åãç»é¢ã«ã¯ãã»ãã«ãèŠçŽãç¹ããããŸãããã©ãã«ãæèšã®æžãæ¹ãææ§ã§äœãå
¥åããã°ããã®ãèªã¿åãã«ããç®æããæå³ãç¥ã£ãŠãã人ã«ããäŒãããªãæé»çãªã¢ã€ã³ã³ã§ããããããçŽãã«ã¯ãã©ã€ãã£ã³ã°ã®åºæºãã¢ã¯ã»ã·ããªãã£ã®èæ
®ãã³ã³ãã©ã¹ãã®å€å®ãããªããUIãçµã¿ç«ãŠãå¿
èŠããããŸããã ãŠãŒã¶ãŒã®èŠç¹ã§UIã®ã€ãªãããèŠãããšãæèãèŠç·ãã©ãåãããèããããšãèŠèŠçã«çè§£ãããããã倿ããããšããã¶ã€ã³ã«ãŒã«ã®èæ¯ã«ããããããèãæ¹ã¯ãæè¡ããããæã£ãŠããŠãèªç¶ã«ã¯èº«ã«ã€ããŸããã§ãããã³ãŒãããèŠãã°åããã¿ã³ã§ãããŠãŒã¶ãŒããèŠãã°ãæŒãããäœãèµ·ããã®ãè¿·ããã¿ã³ãã«ãªãããã®ã ãšãäœåºŠãæ°ã¥ããããŸããã UIããããã«ããã®ã§ã¯ãªãããã¶ã€ã³ããããã«ãããããã倧ããªèŠç¹ã®éãã ã£ãããã«æããŸãã åŠã¶äœå°ãäœã£ãé²ãæ¹ ãŸããã¶ã€ã³ã®åŠã³çŽãã«æéã䜿ããã®ã¯ãéçºããŒã ãåŸ
ãããªãé²ãæ¹ãå
ã«äœã£ãŠããããã§ãã ããŒã ã®å€ãã倿Žãæã¡èŸŒãç«å Žã ã£ãã®ã§ããŸãæäŒã«åå ãããšã³ãžãã¢ãªã³ã°ãããŒãžã£ãŒã«ã¯éçºãããŒãšã«ãŒã«ãããããã¯ããããŒãžã£ãŒã«ã¯ãªãªãŒã¹ã«å¯Ÿãããªã¹ã¯ã®èãæ¹ããQAãšã³ãžãã¢ãšéçºã¡ã³ããŒã«ã¯QAããã£ãŒãã£ãŒãã©ã°ã®éçšãèããŠåããŸãããæ³å®ããŠããããå€åã«å¯å®¹ã§ã现ãããªãªãŒã¹ããŠæ¹åãç¹°ãè¿ãããšã«ååããªããŒã ã ã£ãã®ã§ãç»é¢åäœã§äžŠè¡çšŒåãããŠæ®µéçã«ãªãªãŒã¹ããææ¡ã¯ãããªãéã£ãŠããŸãã ãªãªãŒã¹ã®åºæºã¯ãæ©æ¢°çãªå·®åæ€æ»ã§æ¢åæ©èœã®æ¬ æãæ€ç¥ããæåŸã®é¢éãšããŠæäœæ¥ã®QAãéãã圢ã§ãããã®æ€èšŒãä¿¡é ŒããŠãªãªãŒã¹ããŠãããšããåæãå
ã«ãã£ãããšã§ããã¶ã€ã³ã®å€æã«è¿·ã£ãŠãéçºããŒã ã®é²è¡ãæ¢ããã«æžãã§ããŸãã4ã¶æã§å¯Ÿè±¡40ç»é¢ã®ãã¡40%以äžã®ç»é¢ãæ¬çªã«ãªãªãŒã¹ããæ¬çªã§ã®äžå
·åãåãæ»ãã¯ã©ã¡ãã0ä»¶ã§ãã ãã®ä»çµã¿ã¯Gitã®å·®åãAIãã¹ãã«ã§æ©æ¢°çã«æ€ç¥ããŠè©äŸ¡ãã圢ã§å®çŸããŸããã詳现ã¯å¥ã®èšäºã§æžããããšæããŸãã ãããã« ãã¶ã€ã³ã·ã¹ãã ã®å°å
¥ãéããŠåãã£ãã®ã¯ã ãã¶ã€ã³ã®ææç©ãšã¯FigmaãStorybookã®ãããªç©ççãªãã®ã§ã¯ãªããããã«è³ãæææ±ºå®ã ãšããããšã§ãããéšåãæããããšã¯ææ®µã§ããããã®éšåããã€ããªããã©ã䜿ãããæ±ºããããšããã¶ã€ã³ã®æ¬äœã§ãã ãšã³ãžãã¢ããã¶ã€ã³é åã«èžã¿èŸŒããšããåŠã¶ã¹ãã¯éå
·ã§ã¯ãªãèŠç¹ã§ãããå®è£
ã¯ãããŸã§ã®æè¡ã§ååã«ã§ããŸããè¶³ããªãã®ã¯ããŠãŒã¶ãŒããã®ç»é¢ãã©ãèŠãŠãã©ãè¿·ããã©ãåãããèšèšããæ
å ±ã®é
眮ã匷匱ã§äŒããèœåã§ãã å®è£
ãAIã«ä»»ããããç¯å²ãåºããã»ã©ããšã³ãžãã¢ã®äŸ¡å€ã¯ãäœããªããããããããæ±ºããåŽã«ç§»ã£ãŠãããŸãããã¶ã€ã³ã®æ¥åã¯ããŸãã«ãã®æ±ºãæ¹ãã®ãã®ã§ãããããã³ããšã³ãã«é¢ãããšã³ãžãã¢ã«ãšã£ãŠããã¶ã€ã³ã®æ¥åãçè§£ããããšã¯ãAIæä»£ã®æææ±ºå®ã®äžéšã«ãªã£ãŠãããšæããŠããŸãããã®èšäºãããã¶ã€ã³é åãäžæ®µé«ãèŠåº§ã§çºãããã£ããã«ãªãã°ããããã§ãã ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã®ãããã¯ããããžã¡ã³ã宀GenAI EnablementããŒã ã§ã瀟å
ã®ããŒã¿ã»AI掻çšãæšé²ããŠãã山家ã§ãã 2026幎10æ5æ¥ïŒæïŒã«ãCTO宀ããŒã¿ãœãªã¥ãŒã·ã§ã³ããŒã ãšãããã¯ããããžã¡ã³ã宀GenAI EnablementããŒã ã®å
±å¬ã§ãæ¡çšã€ãã³ã ããã¡ã€ã³ãã£ã«ãããããŒã¿æŽ»çšãšAIãããããçŸå Žå€é©ã®ãªã¢ã«ã ãããã¡ã€ã³ãã£æ¬ç€Ÿã§ãªãã©ã€ã³éå¬ããŸããã findy-inc.connpass.com ãã®èšäºã§ã¯ãã€ãã³ããäŒç»ããèæ¯ãšåœæ¥ã®4æ¬ã®ã»ãã·ã§ã³ããåå ã§ããªãã£ãæ¹ã«ãã€ã¡ãŒãžãäŒããããã«ãŸãšããŸããããããŠãããããã®ããŒã ãæ±ãã課é¡ãšä»åŸã«ã€ããŠã玹ä»ããŸãã ã€ãã³ãéå¬ã®èæ¯ ããŒã¿ãœãªã¥ãŒã·ã§ã³ããŒã ã»ãã·ã§ã³1: AIãšãŒãžã§ã³ãã®ããã®ããŒã¿å質Ops ã»ãã·ã§ã³2: 2025幎ã«äºæ¥éšåãããã©ãããã©ãŒã äºæ¥éšã§ã®ããŒã¿æŽ»çš çŸåšãšãããã ããŒã¿ãœãªã¥ãŒã·ã§ã³ããŒã ã®ä»åŸ GenAI EnablementããŒã ã»ãã·ã§ã³3: ããŒã¿åãåãããšãŒãžã§ã³ããšæ±äººæšèŠã·ã¹ãã ããèŠããåœç€Ÿã®ããŒã¿æŽ»çšäºäŸ ã»ãã·ã§ã³4: é åæžOCRãäœã£ãããOCR以å€ã®ä»äºãæ¬äœã ã£ã GenAI EnablementããŒã ã®ä»åŸ ãŸãšã ã€ãã³ãéå¬ã®èæ¯ ãã¡ã€ã³ãã£ã§ã¯äºæ¥ã®åºãããšãšãã«ãããŒã¿åºç€ãããŒã¿ã¢ããªã³ã°ãæŽããä»äºãšãçæAIã§çŸå Žã®æ¥åãã®ãã®ãå€ããä»äºã®äž¡æ¹ãé²ãã§ããŸããããŒã¿ãœãªã¥ãŒã·ã§ã³ããŒã ã¯å
šç€Ÿã®å
±éããŒã¿åºç€ãšãã®å質ããGenAI EnablementããŒã ã¯çŸå Žã®æ¥åã«AIãå±ããããšãæ
ã£ãŠããŸãã 2ã€ã®ããŒã ã¯æå±çµç¹ã¯éãã©ã坿¥ã«é¢ä¿ããŠããŸããAIãé©åã«åäœããã«ã¯ããŒã¿ã®åè³ªãæ¬ ããããAIãããŒã¿ãçŸå Žã§äœ¿ã£ãŠãããã«ã¯æ¥åãžã®åã蟌ã¿ã®èšèšãæ¬ ãããŸãããä»åã®ã€ãã³ãããäž¡ããŒã ãã©ã®ãããªèª²é¡ã«åãåããã©ã®ããã«åãçµãã§ããããã話ãããæ©äŒã«ããŸããã ã»ãã·ã§ã³ã¯4æ¬ç«ãŠã§ãããŒã¿ãœãªã¥ãŒã·ã§ã³ããŒã ãšGenAI EnablementããŒã ã2æ¬ãã€ã話ãããŸããã ããŒã¿ãœãªã¥ãŒã·ã§ã³ããŒã ããŒã¿ãœãªã¥ãŒã·ã§ã³ããŒã ããã¯ãAIãšãŒãžã§ã³ãã«åããããŒã¿å質ã®éçšãšãæ°èšäºæ¥éšã§ã®ããŒã¿æŽ»çšã®ç«ã¡äžãã«ã€ããŠã話ãããŸããã ã»ãã·ã§ã³1: AIãšãŒãžã§ã³ãã®ããã®ããŒã¿å質Ops ç»å£è
: ç°é speakerdeck.com AIãšãŒãžã§ã³ãã«ããŒã¿ã䜿ãããããã«ãdbtã¢ãã«ã®å質ãã©ãéçšããŠãããã玹ä»ããŸãããããŒã¿ã®äœ¿ããæ¹ã¯ã人ãLookerãSQLã§éèšãã圢ãããAIãšãŒãžã§ã³ãã«è³ªåãã圢ãžå€ãã£ãŠããŠããŸãããã®ãªãã§ãå©çšè
åŽã§ã¯ã©ã®ã¢ãã«ã䜿ãã°ãããããšãŒãžã§ã³ãã«äŒããããªããšãã課é¡ããããŸãããéçšåŽã§ããéèŠãªã¢ãã«ãšæ€èšŒçšã®ã¢ãã«ãååã«æ±ããããã«ãã倱æãããšãã«ãã察å¿ãã¹ãã倿ã§ããŸããã§ããã ããã§ãdbtã¢ãã«ããç®åºããæ°å€ã®çšéã§4段éã®Tierã«åããŸããããã¹ããdescriptionãšãã£ãå質èŠä»¶ã¯ãå·¥æ°ã®ããããã®ã»ã©äžäœã®Tierã«éå®ããŠæ±ããTier 4ã ãã¯AIãšãŒãžã§ã³ãã«äœ¿ãããŸãããåTierã®çšéãšå質èŠä»¶ã¯æ¬¡ã®ãšããã§ãã Tier çšé ãã¹ã description ãã¹ã倱ææã®å¯Ÿå¿ AIãšãŒãžã§ã³ãã®å©çš Tier 1 å€éšå
¬è¡šæ°å€ã»KPIã®æ±ºå® äž»ããŒã»å€éšããŒã»æŽåæ§ å
šã«ã©ã ãšèšç®ããžãã¯ åœæ¥å¯Ÿå¿ å¯ Tier 2 éšéã®æææ±ºå®ã»å®åžžã¬ããŒã äž»ããŒã»äž»èŠãªå€éšã㌠ããŒã»ææšã«ã©ã 鱿¬¡ã§ç¢ºèª å¯ Tier 3 éšéãªãã¬ãŒã·ã§ã³ã»ããŒã¿æœåº äž»ããŒïŒæšå¥šïŒ ã¢ãã«ã®ã¿ ãã¹ããšãã©ãŒã å¯ Tier 4 ã¢ãããã¯ã»å人æ€èšŒ èŠä»¶ãªã èŠä»¶ãªã èŠä»¶ãªã äžå¯ Tier 1ã®èµ·ç¹ã®éžã³æ¹ã§ã¯ãAIãšäººã®åœ¹å²ãåããŠããŸããLookerãšBigQueryã®ã¯ãšãªå±¥æŽããClaude Codeã®ã¹ãã«ãåè£ãåºããKPIã«å®éã«äœ¿ãããŠãããã¯ããŒã¿ãšã³ãžãã¢ãäºæ¥éšã«ç¢ºèªããŠæ±ºããŸãã確å®ããèµ·ç¹ãã dbt ls --select +<èµ·ç¹> ã§äžæµã®ã¢ãã«ãåæããTier 1ã確å®ããŸãã çŸç¶ãTierã¯ããŒã¿ãšã³ãžãã¢ã®éçšã«ãŒã«ãšããŠäœ¿ãããŠããæ®µéã§ãAIãšãŒãžã§ã³ããTierãåç
§ããä»çµã¿ã¯ãŸã ãããŸãããä»åŸã¯èšç®ããžãã¯ãçšèªéãKnowledge Catalogã«éããAIãšãŒãžã§ã³ããTierã®é«ãã¢ãã«ãšå¿
èŠãªã³ã³ããã¹ããååŸããŠåæã§ãã圢ãç®æããŠããŸãã ã»ãã·ã§ã³2: 2025幎ã«äºæ¥éšåãããã©ãããã©ãŒã äºæ¥éšã§ã®ããŒã¿æŽ»çš çŸåšãšãããã ç»å£è
: åºçž speakerdeck.com 2025幎ã«çºè¶³ãããã©ãããã©ãŒã äºæ¥éšã§ãããŒã¿æŽ»çšããŒãããç«ã¡äžããŠããåãçµã¿ã玹ä»ããŸãããçºè¶³åœåã¯äºæ¥éšä»ãã®ã¢ããªã¹ããããããäºæ¥éšåãã«ããŒã¿ãèŠãåºç€ããªãç¶æ
ã§ããã æåã«åãçµãã ã®ã¯ã身è¿ã§ããŒã¿ã«å°ã£ãŠãããšè©±ããŠããã«ã³ãã¡ã¬ã³ã¹éå®¢ã®æ
åœè
ã®äœæ¥ã§ããéå¬ã®ãã³ã«ãæ¥åã«å¿
èŠãªå¯Ÿè±¡ãªã¹ããæäœæ¥ã§æœåºãïŒ1åçŽ15åïŒãéè€ã颿°ã§ç¢ºèªããïŒçŽ30åïŒäœæ¥ããããŸãããä»åŸãé嬿°ã®å¢å ãèŠèŸŒãŸããäžããããã®äœæ¥è² è·ãããã«é«ãŸãããšã課é¡ã§ãããããã§ããã¢ãªã³ã°ã§å¿
èŠãªããŒã¿ãææ¡ããBigQueryã®å
±éåºç€ã«éçŽãdbtã§ã¢ãã«åãLookerã§å¯èŠåãããŸã§ãäžæ°éè²«ã§æŽåããŸãããæ
åœè
ãžã®ãã¢ãªã³ã°ã«ãããšããªã¹ãæœåºã«ãããæéã¯2ã3åã«ççž®ãããéè€çã¯ããã·ã¥ããŒãã§äžç®ã§åããããã«ãªããŸããã ãã®1人ãšã®å®äŸãèµ·ç¹ã«ãå°ãããšãèããããŒã¿ãæãã广ãèŠãããã®æ
åœè
ã®ç޹ä»ã§æ¬¡ã®æ
åœè
ãžã€ãªããšãã埪ç°ãåããŠãäºæ¥éšå
šäœãžåºããŠããŸããåºç€ã®å
šäœèšèšããå
¥ãã®ã§ã¯ãªãã1ã€ã®æ¥åãè§£ããŠæ¬¡ã®çžè«ãåŒãåºãé²ãæ¹ã§ãã äžæ¹ã§ãæŽããããŒã¿ã䜿ãããªããšãã課é¡ãã瀟å
ã§Notionã®æŽ»çšãé²ã¿ã¯ããããšããç¶æ³ã®å€åãåºãŠããŸãããä»åŸã¯Notionãå
¥å£ã«ãLookerã®ã»ãã³ãã£ãã¯ã¬ã€ã€ãŒãå
±éããŒã¿åºç€ãžãã©ããç¶æ
ãç®æããã¡ã¿ããŒã¿ã»å°ç·ã»å®çŸ©ã®æŽåã«åãçµãã§ãããŸãã ããŒã¿ãœãªã¥ãŒã·ã§ã³ããŒã ã®ä»åŸ ããŒã¿ãœãªã¥ãŒã·ã§ã³ããŒã ãç®æãã®ã¯ãçµå¶ããçŸå ŽãŸã§ãåãæ£ããæ°åã§æææ±ºå®ã§ããç¶æ
ã§ããå
±éããŒã¿åºç€ãäœãã ãã§çµããããããã®æ°åãäœãæå³ããã©ãããæ¥ãã®ãã説æã§ãããšãããŸã§ãèªåãã¡ã®ä»äºãšèããŠããŸãã ãã®ããã«ãŸããææšã説æã§ããç¶æ
ã«ããŸããKPIãäœã衚ããã©ã®ããã«èšç®ãããŠããã®ãã誰ã§ã確ãããããããã«ããŸãããã®ããã§ãæ°åãæ£ããããšãåæã«ãäºç®ãšå®çžŸã®ãºã¬ãæ©ãèŠã€ããããããã«ããŸãããºã¬ã«æ°ã¥ãã人ãAIããããæ¬¡ã®ã¢ã¯ã·ã§ã³ã«ç§»ããç¶æ
ãç®æããŠããŸãã Tierã¯éçšã«ãŒã«ãšããŠäœ¿ããå§ããæ®µéã§ãã宿çãªèŠçŽãããèšç®ããžãã¯ã»çšèªéãKnowledge Catalogãžéããåãçµã¿ã¯ããããã§ããAIãšãŒãžã§ã³ããæ£ããããŒã¿ãåç
§ã§ããããå®éã®åãã§ç¢ºãããªãããã¡ã¿ããŒã¿ãè²ãŠãŠãããŸãã 䞊è¡ããŠãGenAI EnablementããŒã ãšååããªãããAXïŒAIãæ¥åãé²ãã人ãèŠæã§å€æãã圢ãžã®æ¥åã®äœãçŽãïŒãšãããŒã¿åºç€ã®ã»ã«ããµãŒãã¹åãé²ããŠããŸããAIã人ãèªåã®æã§èª²é¡ã解決ã§ãããããªããŒã¿åºç€ãç®æããŠãããŸãã å°æ°ç²Ÿéã®ããŒã ãªã®ã§ãåçºã®äœæ¥ã§çµãããããèªååãååã§æšªã«åºããããä»çµã¿ã«ããããšã倧åã«ããŠããŸããçµå¶ãšäºæ¥ã®æææ±ºå®ã«çŽçµããããŒã¿åºç€ãäžç·ã«è²ãŠãŠãããããŒã¿ãšã³ãžãã¢ãåéããŠããŸãã GenAI EnablementããŒã GenAI EnablementããŒã ããã¯ã瀟å
åãã®æ±äººæšèŠãšçµè²»åŠçãäŸã«ãçŸå Žã®æ¥åã«AIãçµã¿èŸŒãåãçµã¿ãã話ãããŸããã ã»ãã·ã§ã³3: ããŒã¿åãåãããšãŒãžã§ã³ããšæ±äººæšèŠã·ã¹ãã ããèŠããåœç€Ÿã®ããŒã¿æŽ»çšäºäŸ ç»å£è
: 山家 speakerdeck.com 瀟å
åãã®æ±äººæšèŠã·ã¹ãã ãäŸã«ãäœã£ãä»çµã¿ãçŸå Žã§äœ¿ãããããã®çœ®ãæ¹ã玹ä»ããŸãããåœæ¥ã¯æéã®éœåã§ã話ãã§ããŸããã§ãããã瀟å
ã®ããŒã¿åãåããã«çãããšãŒãžã§ã³ããäœã£ãäºäŸãç»å£è³æã«èŒããŠããã®ã§ãããããŠã芧ãã ããã 転è·äºæ¥ã§ã¯ããŠãŒã¶ãŒãµã¯ã»ã¹ïŒUSïŒãé¢è«åŸã«æ±äººã玹ä»ããŠããŸããæ
åœè
ã¯ç޹ä»ããæ±äººãèšæ¶ãšçµéšããã©ã£ãŠæ¢ããŠãããæ²èŒæ±äººãå¢ããã»ã©è¿œãã€ããªããªã£ãŠããŸãããããã§ãåè£è
ããšã®æšèŠæ±äººãªã¹ããåºãä»çµã¿ãäœããŸãããä»çµã¿ã¯æ¬¡ã®å³ã®ãšããã§ãã æ±äººç¥šãšUSé¢è«ã¡ã¢ãEmbeddingã§ãã¯ãã«åããé¡äŒŒåºŠã§æ±äººã䞊ã¹ãããã§ãã£ã«ã¿ããããŠããŸããå
šäœãBigQueryäžã®ãããã§åããŠãããææ³èªäœã¯ã·ã³ãã«ãªãã®ã«ããŠããŸãã æ¥åãžã®å°å
¥æ¹æ³ã¯ããªãæèãããŸããã以åäœã£ãæ€çŽ¢ç³»æ©èœã¯çŸå Žã®æ¥åãããŒã®å€ã«ããã䜿ãããŸããã§ãããããã§æšèŠã§ã¯ãé¢è«ã¡ã¢ãæžããåŸã玹ä»ããæ±äººãéžã¶ã¿ã€ãã³ã°ã§ãUSãæ®æ®µäœ¿ãSalesforceäžã«èгç¹ããšã«åããŠæ±äººãåºããŸãããæšèŠãåŒãåããã®ã¯æ¢ãæéã ãã§ãéžãã§ç޹ä»ããã®ã¯USã®ãŸãŸã§ãããã®çµæãUSãžã®ã¢ã³ã±ãŒãã§ã¯æ±äººæ¢çŽ¢ã®å·¥æ°ã40%åŒ±åæžãããæšèŠçµç±ã®ç޹ä»ãæ¯æ¥çãŸããŠããŸãã ãã ãã䜿ãããããšã¯æåãšåãã§ã¯ãããŸãããçŽ¹ä»æ±äººã®å€ãã¯ã«ã¹ã¿ããŒãµã¯ã»ã¹ïŒCSïŒçµç±ã§ãæšèŠãéãããã®ã¯USãèªåã§æ¢ãéšåã ãã§ãããçŸåšã¯äºæ¥éšå
šäœã«ãã¢ãªã³ã°ããäºæ¥ã®ããã¹ãå§¿ããéç®ããŠãã©ã®ããã«æ¥åãèªååããŠããããèšç»ããŠããŸãã ã»ãã·ã§ã³4: é åæžOCRãäœã£ãããOCR以å€ã®ä»äºãæ¬äœã ã£ã ç»å£è
: å¥¥ç° speakerdeck.com ç§æžããŒã ã®çµè²»åŠçããçæAIã§ã©ãæ¹åãããã玹ä»ããŸãããæçŽ160æã®é åæžã«ã€ããŠãæ¥ä»ããäºå®ãæ¢ããåå è
ãšãã®å±æ§ã確èªããçµè²»åºåãèããŠSaaSãžè»¢èšããäœæ¥ããããŸãããOCRã§æ¥ä»ãéé¡ãèªã¿åããŠãã倿ææã¯ã«ã¬ã³ããŒã»çµç¹å³ã»äººäºæ
å ±ã«åããããŸãŸã§ãã ããã§ãåŠçããšã«æ
ãæãåããŸãããGASãSlackã«æçš¿ãããé åæžãååŸããGeminiãç»åã®èªã¿åããšäºå®åè£ã®éžæãæ
ããŸããåå è
ã¯Googleã«ã¬ã³ããŒãããéšéã»åœ¹è·ã»å
¥ç€Ÿæ¥ã¯ç€Ÿå¡æ
å ±APIããååŸããæ±ºãŸã£ãæ¡ä»¶ã¯ã³ãŒãã§é©çšããŸããå
Œåã¯è€æ°éšéãšããŠæ±ããå
¥ç€Ÿæ¥ãåããªããã°ãã®æ
å ±ãå¿
èŠãªå€å®ã¯ããŸãããæåŸã¯ç§æžããŒã ãå€å®çç±ãšäºç®ã®å©çšç¶æ³ã確èªããŠåºåã確å®ããŸããç§æžããŒã ã®æŠç®ã§ã¯ã確èªäœæ¥ãæ160ååæžãããŸããã ãšã©ãŒã®æ±ããèŠçŽããŸãããå€å®ã§ããã倿ææãè¶³ããªããååŸåŠçã«å€±æãããã®3ã€ãåããŠæ®ããæ
å ±äžè¶³ãªã人ãžã®ç¢ºèªãååŸå€±æãªãåå®è¡ã調æ»ãžé²ããããã«ããŠããŸãã GenAI EnablementããŒã ã®ä»åŸ GenAI EnablementããŒã ã¯ãçŸå Žãžã®ãã¢ãªã³ã°ããã瀟å
ããŒã¿ã®æ¥ç¶ã人ã確èªã§ããéçšã¥ãããŸã§ãäžæ°éè²«ã§æ
ããŸãã ä»ã¯äºæ¥éšå
šäœã®æ¥åãããŒããAIãäž»äœã§é²ãã人ãèŠæã§å€æãã圢ãžåèšèšããŠããŸãããŸãã¯æ
åœè
ãAIã®ææ¡ã確èªã»ä¿®æ£ããŠäœ¿ããŸãããã®èšé²ã§åŸã
ã«AIã®ç²ŸåºŠãäžããªãããAIã«ä»»ããç¯å²ãåºããŠãããŸãã ãã®ããã«æ¬ ãããªãã®ããããŒã¿PdMãšããŒã¿ãµã€ãšã³ãã£ã¹ãã§ããããŒã¿PdMã¯ãæ¥åã®äžã§ã©ããªããŒã¿ãçã¿ã売äžã«ã€ãªããããäºæ¥éšãšæ±ºããŸããããŒã¿ãµã€ãšã³ãã£ã¹ãã¯ãä»ã®ããæ¹ãšAIãæ¯ã¹ãŠå¹æã枬ããä»»ããç¯å²ãåºããæ ¹æ ãã€ãããŸããäºæ¥è²¬ä»»è
ãPdMãšäŒè©±ããªãããããŒã¿ãšå®è£
ãè¡ãæ¥ããŠäŸ¡å€ãå±ãããæ¹ãåéããŠããŸãã ãŸãšã ä»åã®ã€ãã³ãã§ã¯ãããŒã¿å質ã®éçšãããæ°èšäºæ¥éšã§ã®ããŒã¿æŽ»çšã®ç«ã¡äžããçŸå Žæ¥åãžã®AIã®çµã¿èŸŒã¿ãŸã§ã4åã®èŠç¹ããã話ãããŸãããã©ã®ã»ãã·ã§ã³ã«ãå
±éããŠããã®ã¯ãæè¡ãã®ãã®ããããããŒã¿ãAIãæ¥åã®ã©ãã«ã©ãã€ãªããã軞ã«é²ããŠããããšã§ããä»çµã¿ã¯äœãã ãã§ã¯äœ¿ããããå質ã®åªå
床ä»ããæ¥åãããŒãžã®åã蟌ã¿ã人ã確èªã§ããéçšãŸã§èšèšããŠåããŠçŸå Žãå€ãããšèããŠããŸãã ã»ãã·ã§ã³åŸã®æèŠªäŒã§ããç»å£ã§ã¯è©±ããããªãã£ã倱æè«ãå«ããåå è
ã®çãããšå®åã®è©±ã§çãäžãããŸããããããã話ãã§ããã®ã¯ããªãã©ã€ã³éå¬ãªãã§ã¯ã ãšæããŠããŸãã åå ããŠãã ãã£ãçãããããããšãããããŸããïŒ ãã¡ã€ã³ãã£ã§ã¯ãããŒã¿ãšAIã®åã§çŸå Žãå€ããŠãã仲éãåéããŠããŸããä»åã®ã€ãã³ãå
容ã«å°ãã§ãèå³ãæã£ãŠããã ããæ¹ã¯ããã²ãæ°è»œã«ã«ãžã¥ã¢ã«é¢è«ãªã©ã§ã話ãããŸãããã ããŒã¿ãœãªã¥ãŒã·ã§ã³ããŒã ã®æ±äººã¯ãã¡ãã herp.careers GenAI EnablementããŒã ã®æ±äººã¯ãã¡ãã herp.careers herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã§Findy Team+ã®éçºãããŠããkameã§ãã çµæŽãšããŠã¯ãç°æ¥çš®ãã転è·ããŠçŸåšãšã³ãžãã¢2幎ç®ã§ãããã¡ã€ã³ãã£ã«ã¯2026幎5æã«å
¥ç€Ÿãã5ã¶æã»ã©ãçµéããŸããã ãã¡ã€ã³ãã£ã§ã¯èšèšãå®è£
ãã¬ãã¥ãŒãªã©åããã»ã¹ã«ãããŠAIãæŽ»çšããŠããŸãã ãã®ãããªçµæŽãç°å¢äžã§ã®ç§èªèº«ã®æèã®å€åããåãçµãã§ããããšã«é¢ããŠç޹ä»ããŸãã å
¥ç€ŸçŽåŸã«æããããšãããäºæ¥ã«è²¢ç®ããããšèããããã«ãªããŸã§ AIãæŽ»çšããŠèšèšã»å®è£
ããã«ã¯ãåºç€åãå¿
èŠã ãšå®æãã åºç€å匷åãæšå¥šãããç°å¢äžã§ãå匷äŒã«åå å人åŠç¿ãšããŠåãçµãã ããš åºç€åã®åŒ·åããæ®æ®µã®èšèšã»å®è£
ã«ã©ã®ããã«çããŠããã ãžã¥ãã¢ãšã³ãžãã¢ã®æé·ãæ¯ããŠãããäŒç€Ÿã®ã«ã«ãã£ãŒ 宿çãª1on1ãå匷äŒãéããŠãèªåã®äžã®äžæç¹ãæŽçã§ãã åºç€å匷åãå¿æŽããæå ãŸãšã å
¥ç€ŸçŽåŸã«æããããšãããäºæ¥ã«è²¢ç®ããããšèããããã«ãªããŸã§ å
¥ç€ŸçŽåŸã¯ãå®è£
çµéšãããããç©ãã§ããšã³ãžãã¢ãšããŠã®æè¡åãé«ããããšããæ°æã¡ã第äžã«ãããŸããã å®éã«ãå
¥ç€Ÿ2æ¥ç®ããæè¡æ¹åç³»ã®ã¿ã¹ã¯ã«ã¢ãµã€ã³ããŠããã ããŸããããããã¯ãã®ãã¡ã€ã³ãçè§£ããªããæè¡é¢ã®ç¥èŠãæ·±ãããããè¯ãç°å¢ã ãšæããŠããŸãã å®éã®ã¢ã¯ãã£ããã£ã®æšç§»ãèŠãŠããå
¥ç€ŸåŸããå°ããã€äŒžã°ããŠãããããšæããŠããŸãã(忣ã°ã©ãã¯äžããã€ã·ã¥ãŒäœææ°ããã«ãªã¯äœææ°ãããŒãžæžã¿ãã«ãªã¯æ°ãã³ãããæ°ãã¬ãã¥ãŒæ°) å
¥ç€ŸããŠ1ã¶æåãçµã£ãã¿ã€ãã³ã°ã§ãæã®å€ããç®ã«AIæä»£ã®éçºçµç¹ã暡玢ããæ°ããããŒã ãç«ã¡äžãããããã«ãžã§ã€ã³ããããšã«ãªããŸããã ãã®ããŒã ã§ã¯ãäºæ¥éšã¡ã³ããŒããã®å£°ã顧客ã®å£°ãçŽæ¥èãããšã³ãžãã¢ãèŠæã®ãã¢ãªã³ã°ããäŒç»ãå®è£
ããªãªãŒã¹ãŸã§äžè²«ããŠè¡ã£ãŠããŸãããã®ããŒã ã«ã¢ãµã€ã³ãããããšããã£ããã«ãäºæ¥è²¢ç®ã®æèã匷ããªããŸããã ã¿ã¹ã¯ãšããŠã¯ã瀟å
ã®ã«ã¹ã¿ããŒãµã¯ã»ã¹ããäžãã£ãŠããèŠæãåãåããIssueã«èœãšã蟌ãã§å®è£
ãŸã§è¡ãæ©äŒãå¢ããŸããã çŽè¿ã§ã¯Findy Team+ã®MCPãµãŒããŒãäžå¿ã«éçºããŠããŸããMCPããŒã«ã®è¿œå ãé¢é£ããAPIã®éçºã ãã§ãªããMCPããŒã«ã®å¹æã远跡ã§ãããã°ãéèšã®åºç€ãäœã£ãããã«ã¹ã¿ããŒãµã¯ã»ã¹ãšäžç·ã«ããã³ããäŸãèãããããŠããŸãã ãã®éçšã§ã¯ãåããŠå®åã§äœ¿ãèšèªã®ãã£ããã¢ãããå人ã§é²ããããã¬ãã¥ãŒãéããŠããè¯ãæžãæ¹ãåŠãã ãããŸããããŸããMCPãµãŒããŒã¯ç»é¢äžã«èŠããæ©èœã§ã¯ãªããããå®éã«èªåã§ããã³ããã詊ããä»ã®äººããããã£ãŒãããã¯ãããããªãããã©ã®ãããªåºåãåºãã°å©çšè
ã«äŸ¡å€ãæããŠãããããã調æŽããé£ãããçµéšããŸããã ããžãã¹ãµã€ããšé£æºããªããã¿ã¹ã¯ãé²ããéçšãçµéšããäžã§ãåäººã®æè¡çãªç¥èŠãæ·±ããã ãã§ãªããäºæ¥ã«è²¢ç®ã§ããç¶æ
ãç®æããããšæãããã«ãªããŸããã AIãæŽ»çšããŠèšèšã»å®è£
ããã«ã¯ãåºç€åãå¿
èŠã ãšå®æãã ããããAIãæŽ»çšããŠèšèšãå®è£
ããäžã§ã¯ã課é¡ãæããããšããããŸãããAIã®åºåããæ
å ±ã«çè§£ã®è¶³ããªãåèªãå€ããAIãäœãèšã£ãŠããã®ã調ã¹ãã ãã§ãæéãã©ãã©ãéããŠããŸãããšããããŸãããå
·äœçã«ã¯ã次ã®ãããªå Žé¢ã§ãã åãåããèµ·å ã§éä¿¡åšãã調ã¹ãå¿
èŠããã£ãéã«ãããã©ã³ã¹ããŒãå±€ã§åŠçãããããšãã話ãåºãŠããTCP/IPã¢ãã«ã®ç¥èãä¹ãããããäœãè¡ãããŠãããã®ã€ã¡ãŒãžãã€ããªãã£ã ããã©ãŒãã³ã¹ãèæ
®ããå¿
èŠããã£ãéã«ãã¢ã«ãŽãªãºã ã®ãã¿ãŒã³ã®ç¥èãè¶³ããŠããªããããæ¢åã®ã³ãŒããåç
§ããŠæžãããAIã®ã³ãŒãã«å¯ŸããŠããããè¯ãæžãæ¹ã¯ãªããïŒããšããçãã®ç®ãæã€ããšãã§ããªãã£ã ãŸããAIãšã®å£æã¡ä»¥åã«ãIssueãèªã¿è§£ã段éã§èŠåŽããããšããããŸãããäŸãã°ããŒã¿ããŒã¹é¢é£ã®Issueã§ã¯ãACIDç¹æ§ã«é¢é£ããçšèªãçè§£ããããŠããããAIã«è§£èª¬ããŠãããå¿
èŠããããŸããã ãããã®èª²é¡ã¯ãå®è£
以åã«ãã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®åºç€ç¥èãäžè¶³ããŠããããšããããŠããŸããã ãã®ãŸãŸã§ã¯AIåæã®éçºã®ã¹ããŒãã«ã€ããŠãããªããªãããšãã屿©æãæã¡ãåºç€ç¥èãåºããããšããæ°æã¡ã匷ããªããŸããã åºç€å匷åãæšå¥šãããç°å¢äžã§ãå匷äŒã«åå ãã¡ã€ã³ãã£ã§ã¯ãã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®åºç€å匷åã®ããã«ãåºæ¬æ
å ±æè¡è
詊éšã¬ãã«ã®ç¥èç¿åŸããšã³ãžãã¢å
šå¡ã«æ±ããããŠããŸãã ããããäžã§ãæå¿ã«ãã£ãŠéå¬ãããŠããé±1åã®å匷äŒã«èªã£ãŠããã ããã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®åºç€ç¥èãåŠç¿ããããã«ãªããŸããã å匷äŒã§ã¯ãåºæ¬æ
å ±æè¡è
詊éšã®ç§ç®Aã®éå»åãå®éã«è§£ããã·ãã¢ãšã³ãžãã¢ã®æ¹ãããã©ã®ãããªå Žé¢ã§åœ¹ã«ç«ã€ç¥èããã説æããã ããªããè§£çãçè§£ããŠãããŸããã å°è±¡ã«æ®ã£ãŠããã®ã¯ããªãšã³ãã©ã³ãïŒåå
¥å¯èœïŒã«é¢ããåé¡ãæ±ã£ãåã§ããäŸãã°Rubyã§ã¯ã倿°ãå€éšããæžãæããããªãããã«ããŒã«ã«å€æ°ã䜿ããšãã£ãèæ
®ãè¡ãããšãã話ãèããå®å
šãªããã°ã©ã ãæžãäžã§èŠããŠããã¹ãæŠå¿µã ãšæããŸããã ãããŸã§ãè³æ ŒååŒ·ãæ®æ®µã®æ¥åã«ã©ã圹ç«ã€ã®ãã¯ã€ã¡ãŒãžãã€ããŸããã§ãããæ¥åãé²ããäžã§ã®åå°ãšãªãç¥èã ãšèªåã®äžã«èœãšã蟌ããã®ã¯ãå匷äŒã«åå ããŠè¯ãã£ããšæãç¹ã®1ã€ã§ãã å人åŠç¿ãšããŠåãçµãã ããš åºæ¬æ
å ±æè¡è
詊éšã«åæ Œããäžã§ã¯ãéå»åã®ããã¹ãã賌å
¥ããŠãæ¬çªã®æéå
ã«è§£ãããŸã§åšåããŸããã ä»åã¯åæ Œèªäœãç®çã§ã¯ãªããåºç€åã®åŒ·åããè¡ãããã£ãã®ã§ã远å ã§æ¬¡ã®ç¹ãæèããªããåŠç¿ã«åãçµã¿ãŸããã éžæåé¡ã«é¢ããŠã¯ãæ£è§£ä»¥å€ã®éžæè¢ã«é¢ããŠãçè§£ãæ·±ãã æ£è§£ä»¥å€ã®éžæè¢ã¯ãå¥ã®åºç€çãªçšèªã«é¢ãã説æã§ããããšãå€ããã åé¡ãšå®åã®èšæ¶ãçŽã¥ãå Žåã¯ããã®å Žé¢ãããŒãã«ã¡ã¢ããªãã解説ãèªã å®éã®å®åã«çµã³ã€ããŠçè§£ããæ¹ããåæ§ã®å Žé¢ã«ééãããšãã«ç¥èãçãããã çµæãšããŠãåºæ¬æ
å ±æè¡è
詊éšã«åæ Œããããšãã§ããŸããã åºç€åã®åŒ·åããæ®æ®µã®èšèšã»å®è£
ã«ã©ã®ããã«çããŠããã ãŸã ãŸã è¶³ããŠããªãåºç€ç¥èãå€ããšããæèŠã¯ããã€ã€ããã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®ç¥èãå
šããªãã£ãç¶æ
ããç¥èã身ã«ã€ãããšã次ã®ãããªå®æããããŸããã èšèšãå®è£
ã®å£æã¡ãããéã«ãAIã®åºåããå
容ã§çè§£ã§ããåèªãå¢ããåã以åãšæ¯ã¹ãŠãããšããã¹ã ãŒãºã«ãªã£ã æ¢åã³ãŒããèªãéã«ããã©ã®ãããªã¢ã«ãŽãªãºã ã®ãã¿ãŒã³ã§æžãããŠãããããæèãããå¥ã®ãã¿ãŒã³ã§æžãããèšç®éã¯ã©ããªããããšãã芳ç¹ã§AIãšå£æã¡ããããã«ãªã£ã åãåããã瀟å
ã®äŒè©±ã®äžã§ãAIã«èããªããŠãçè§£ã§ããæŠå¿µãå¢ãã äŸïŒIPã¢ãã¬ã¹ãšãµãããããã¹ã¯ããå©çšå¯èœãªãã¹ãæ°ãæ±ããæ¹æ³ãçè§£ããããšã§ãæ®æ®µã®æ¥åã§ããç®ã«ããIPã¢ãã¬ã¹ã®èš±å¯ç¯å²ãã©ã®ããã«æ±ºããããŠããã®ããã€ã¡ãŒãžã§ããããã«ãªã£ã é£æåºŠã®é«ãèšèšãå®è£
ã«åãçµãéã«ãç¥ããªãæŠå¿µãå€ãããšã«æ°ä»ãããããããªãåºç€å匷åã®å¿
èŠæ§ãæããããã«ãªã£ã äŸïŒé£æåºŠãäžããã»ã©AIãè€æ°ã®ãã¿ãŒã³ãã人éã«å€æãæ±ããŠããããšãå€ãããã®äžããæ ¹æ ãæã£ãŠããã®ãã¿ãŒã³ãè¯ãããšçããã«ã¯ãããã«ããŒã¹ãšãªãç¥èã®ã¹ããã¯ãå¢ãããŠããå¿
èŠããããšæãã AIãšãããã§ã壿ã¡ã§ããç°å¢ã«ãããããããèªåã®äžã«ããåæã®åºç€ç¥èãããšã«ã©ã®åºåãæ¡çšããã¹ããã倿ããåã¯ãéèŠã§ãããšå®æããŸããã ãžã¥ãã¢ãšã³ãžãã¢ã®æé·ãæ¯ããŠãããäŒç€Ÿã®ã«ã«ãã£ãŒ ãã¡ã€ã³ãã£ã«ã¯ãæŽã®æµ
ããšã³ãžãã¢ã®æé·ãæ¯ããŠãããä»çµã¿ãšé°å²æ°ããããŸããå
·äœçã«ã¯æ¬¡ã®ãããªãã®ã§ãã 宿çãª1on1ãå匷äŒãéããŠãèªåã®äžã®äžæç¹ãæŽçã§ãã åã
ã®é¢å¿ã«åãããã·ãã¢ãšã³ãžãã¢ã®æ¹ãå匷äŒãéããŠãããå Žé¢ãå€ããããŸããå
容ã¯åºæ¬æ
å ±æè¡è
詊éšã«åããå匷äŒãã¢ã«ãŽãªãºã ã®è§£èª¬ãªã©æ§ã
ã§ãã ãŸãã瀟å
å
šäœã§1on1ãæŽ»çºã«è¡ãããŠããã話ãèããŠã¿ãã人ã«1on1ãäŸé Œãããšãå¿«ãåŒãåããŠãããé°å²æ°ããããŸãã æè¡çãªå
容ã¯ä»ã®ãšã³ãžãã¢ã«ãããžãã¹ãµã€ãã®ç¥èŠãè¶³ããŠããªããšæãããšãã¯å¶æ¥ã®æ¹ã«è³ªåãããªã©ãéšçœ²ãè¶
ãã飿ºã掻çºã«è¡ãããŠããŸãã ãã®ãããªç°å¢ã®ãããã§ã瀟æŽããšã³ãžãã¢æŽãæµ
ãã£ããšããŠãå¿ççããŒãã«ãæããã«ä»ã®äººããç¥èŠãéããããšãã§ããŸãã çµæãšããŠãæè¡çç¥èŠã»ããžãã¹çç¥èŠåæ¹ãžã®é¢å¿ã匷ããªããããã«çè§£ãæ·±ããŠãããããšããææ¬²ã«ã€ãªãã£ãŠãããšæããŠããŸãã åºç€å匷åãå¿æŽããæå AIãã³ãŒããåºåããŠãããæä»£ã ãããããããŒã¹ãšãªãã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®åºç€ç¥èãå¿
èŠããšããèãæ¹ããæ®æ®µã®æ¥åã§æŽ»èºããŠããã·ãã¢ãšã³ãžãã¢ã®æ¹ãäžå¿ã«æµžéãããŠãããŠããŸãã ãã®ãããåºæ¬æ
å ±æè¡è
詊éšã®åæ Œã«åããŠå匷ããŠãããšã³ãžãã¢ãã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®ç¥èãåŠç¿ãããšã³ãžãã¢ãå¿æŽããè³æ Œè©Šéšã«åæ ŒãããåŽã£ãŠãããé°å²æ°ããããŸãã ãŸããè³æ Œè©Šéšåæ Œã®ããã«ãã¬ããžãå
±æããããåéšãåŠç¿ãéããŠåŠãã ããšã瀟å
ã¢ãŠãããããšããŠå
±æãã人ãå€ãã§ããèªåã¯ãã®ãããã§è¯ãåºæ¿ãåããåŠç¿ãç¶ããã¢ãããŒã·ã§ã³ã«ãªããŸããã ããããé°å²æ°ã¯ããã¡ã€ã³ãã£ã®ããªã¥ãŒã®1ã€ã§ãããååãããçµç¹ã«æµžéããŠããããšã®è¡šãã ãšæããŠããŸãã ãŸãšã ä»åã¯ããšã³ãžãã¢2幎ç®ã®èªåã®ã次ã®ãããªæèã®å€åã«è§ŠããŸããã ããžãã¹ãµã€ããšã®é£æºãå¢ããäžã§ãäºæ¥éšãžè²¢ç®ããããšããæ°æã¡ã匷ãŸã AIãæŽ»çšããŠèšèšã»å®è£
ãé²ããäžã§ãAIã®åºåãIssueãçè§£ããããã®åºç€åãäžè¶³ããŠãããšå®æ 瀟å
å匷äŒãå人åŠç¿ãéããŠåºæ¬æ
å ±æè¡è
詊éšã«åæ Œããã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®åºç€çãªçè§£ãæ·±ãã ãããã£ãåºç€çè§£ããå®åã«ãçããããã«ãªã£ã AIãã³ãŒãã£ã³ã°æ¥åãæ
ãæä»£ã«ãã©ã®ãããªåã䌞ã°ãã°è¯ããè¿·ã£ãŠããŸããããããªæã«ã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®åºç€ã®éèŠæ§ãæããŠããã ããã·ãã¢ãšã³ãžãã¢ã®æ¹ã
ãšãåŠç¿ãååãã«å¿æŽããŠãããäŒç€Ÿã®ã«ã«ãã£ãŒã®ãããã§ããã®ãããªæèã®å€åãèµ·ãããšæã£ãŠããŸãã ä»åã¯åºæ¬æ
å ±æè¡è
詊éšåæ Œã«åããåŠç¿ãã¡ã€ã³ã§è¡ã£ãŠããŸããããçŸåšã¯åºæ¬æ
å ±æè¡è
詊éšã®åé¡ã®äžã§é£ãããšæããåéã»èŠæã ãšæããåéã«é¢ããŠåå¥ã®æè¡æžãèªãã§çè§£ãæ·±ããŠããŸãã ä»åŸãååéã®åºç€çè§£ãæ·±ããŠæ¥ã
ã®èšèšã»å®è£
ã«æŽ»ãããäºæ¥ã«è²¢ç®ã§ãããšã³ãžãã¢ãç®æããŠãããããšæã£ãŠããŸãã ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã§ããªã³ã·ãã«ãšã³ãžãã¢ãããŠããæžç°ã§ãã ãã¡ã€ã³ãã£ã§ã¯ãæœçã®ç«æ¡ããIssueã®çæãã¿ã¹ã¯åè§£ãAIãšãŒãžã§ã³ãã«ãã䞊åå®è£
ãQAãŸã§ãéçºãããŒã®åæã«AIãšãŒãžã§ã³ããçµã¿èŸŒãã§ããŸãã ãã®èšäºã§ã¯ãéçºãããŒå
šäœã®ã¢ãŒããã¯ãã£ãå³ã§ç€ºããæ§æèŠçŽ ããšã«åœ¹å²ã解説ããŸããPMãéçºãQAã®ããããã§ãšãŒãžã§ã³ããäœãæ
ãã人éãã©ãã§å€æããŠããã®ããéçºã®ç¶æ
ãGitHubã®ã©ãã«çœ®ããŠããã®ããåããå
容ãšãªã£ãŠããŸãã è€æ°ã®AIãšãŒãžã§ã³ããéçºãããŒã«çµã¿èŸŒãããšããŠããæ¹ããAIãšãŒãžã§ã³ããšã®åœ¹å²åæ
ãèããŠãããšã³ãžãã¢ã®æ¹ã®åèã«ãªããšæããŸããããã§ã¯èŠãŠãããŸãããïŒ éçºãããŒã®ã¢ãŒããã¯ã㣠æœçãäœããšãŒãžã§ã³ã æœçææ¡ã¹ãã« èŠä»¶å®çŸ©ã¹ãã« èŠä»¶ãIssueã«åè§£ãããšãŒãžã§ã³ã Issueã®äŸåé¢ä¿ããå®è£
ã®é çªã決ããèšç»ãšãŒãžã§ã³ã 䞊åã§åãå®è£
ãšãŒãžã§ã³ã ã¹ã¿ãã¯ãã«ãªã¯ãšã¹ã QAã®ãšãŒãžã§ã³ã ãŸãšã éçºãããŒã®ã¢ãŒããã¯ã㣠ãšãŒãžã§ã³ããã¹ãã«ã¯ãPMåããéçºåããQAåãã®3ã€ã®Pluginã«ãŸãšããŠããŸãã éçºãããŒã¯æ¬¡ã®é ã«é²ã¿ãŸãã PMåãPlugin PMã®ãšãŒãžã§ã³ããNotionãGitHubãªã©ããã³ã³ããã¹ããéããŠæœçãäœããèŠä»¶å®çŸ©ã®IssueãšããŠGitHubã«äœæãã éçºåãPlugin éçºã®ãšãŒãžã§ã³ããèŠä»¶å®çŸ©ã®Issueãã¿ã¹ã¯ã«åè§£ãã芪IssueãSub-issueãäŸåé¢ä¿ãGitHubã«äœæãã èšç»ãšãŒãžã§ã³ããGitHubããIssueãšäŸåé¢ä¿ãèªã¿ãå®è£
ã®é çªã決ãã å®è£
ãšãŒãžã§ã³ããäŸåã®é ã«Issueãå®è£
ããã¹ã¿ãã¯ãã«ãªã¯ãšã¹ããšããŠç©ã ã¬ãã¥ãŒ 人éãAIããã«ãªã¯ãšã¹ããé ã«ã¬ãã¥ãŒããŠããŒãžãã QAåãPlugin QAã®ãšãŒãžã§ã³ããèŠä»¶å®çŸ©ã®IssueããQA芳ç¹ãšãã¹ãã±ãŒã¹ãäœããPlaywrightã§å®è¡ãã ããããã¯ãæ§æèŠçŽ ããšã«è§£èª¬ããŸãã æœçãäœããšãŒãžã§ã³ã ãããŒã®èµ·ç¹ã¯ãæœçãäœã段éã§ããPMåãã®ç€Ÿå
Pluginã«ãæœçãææ¡ããã¹ãã«ãšãæœçã®èŠä»¶ãå®çŸ©ããã¹ãã«ãçšæããŠããŸããæœçææ¡ã¹ãã«ã§æ¡ãéžã³ãèŠä»¶å®çŸ©ã¹ãã«ã§GitHubã®Issueã«ããããšããé ã«äœ¿ããŸãã æœçææ¡ã¹ãã« æœçææ¡ã¹ãã«ã¯ãPMããããŒããé åãåãåããåãçµãã¹ã課é¡ãæ¢ããšããããå§ããŸãã æåã«ãå°çšã®ãšãŒãžã§ã³ããæ
å ±ã䞊åã«åéããŸãã瀟å
ããã¥ã¡ã³ãããã¯KPIãæŠç¥ãã³ãŒãããŒã¹ããã¯æ¢åã®æ©èœãããŒã¿ã¹ããŒããGitHubããã¯æ¢åã®Issueãšãã«ãªã¯ãšã¹ããNotionããã¯ä»æ§æžãè°äºé²ãªã©ãéããŸããããããŠãGoogle AnalyticsãšSearch Consoleã®ã¢ã¯ã»ã¹è§£æã®ããŒã¿ãšãWebäžã®åžå Žãç«¶åã®æ
å ±ãååŸããŸãã åéããçµæãããšã«ãå¥ã®ãšãŒãžã§ã³ããè€æ°ã®èгç¹ããæœçã®ã¢ã€ãã¢ãåºããããã«å¥ã®ãšãŒãžã§ã³ããã€ã³ãã¯ããšå®çŸå¯èœæ§ãªã©ã§è©äŸ¡ããŠåªå
é äœãä»ããŸãã PMã¯ãé äœä»ããããææ¡ã®äžèЧããæ¡çšããæ¡ãéžã³ãŸããæ¡çšããæ¡ã¯æ¬¡ã«ç޹ä»ããèŠä»¶å®çŸ©ã¹ãã«ã«åŒãç¶ããŸãã èŠä»¶å®çŸ©ã¹ãã« èŠä»¶å®çŸ©ã¹ãã«ã¯ãææ¡ãããæœçã®èŠä»¶ãå®çŸ©ããŸãã æ
å ±åéã®æ®µéã§ã¯ã仮説ãšãŒãžã§ã³ããšåéãšãŒãžã§ã³ãã䞊åã«åãããŸãã仮説ãšãŒãžã§ã³ãã仮説ãç«ãŠããšãåéãšãŒãžã§ã³ãã¯ãã®ä»®èª¬ã«æ²¿ã£ãŠå¿
èŠãªããŒã¿ãéããŸãã仮説ãšãŒãžã§ã³ãã¯è¿œå ã§éãŸã£ãããŒã¿ãåãåãã仮説ãè£ä»ãããä¿®æ£ãããããŸãã ç¶ããŠãæœçã®èŠæš¡ãå€å®ããŸãããŠãŒã¹ã±ãŒã¹ããŠãŒã¶ãŒçš®å¥ãè€æ°ã«ãŸãããå Žåã¯ãMVPãšåªå
床ä»ãã®æ¡åŒµé
ç®ã«åããŸãããã®ããã§ãåéããããŒã¿ã仮説ãè£ä»ããŠããããšãæè¡çã«å®çŸã§ããããæŽçããŠãçµ±åãã©ããã«ãŸãšããŸããPMã¯ãã®ãã©ãããã¬ãã¥ãŒããä¿®æ£ãè£è¶³ãããã°äŒããŸãã PMããã©ãããæçµæ¿èªãããšãèŠä»¶å®çŸ©ã®èŠªIssueãGitHubã«äœæããŸãã èŠä»¶ãIssueã«åè§£ãããšãŒãžã§ã³ã èŠä»¶å®çŸ©ã®Issueãåãåãã®ããIssueçæã¹ãã«ã§ããèŠä»¶å®çŸ©Issueã®URLãå
¥åã«ãå®è£
ã¿ã¹ã¯ã®IssueãäœããšãããŸã§ã察話çã«é²ããŸãã æåã«ãèŠä»¶å®çŸ©Issueã®æ¬æãšã³ã¡ã³ããèªãã§èŠä»¶ãçè§£ãã察象ã®ã³ãŒãããŒã¹ãæ¢çŽ¢ããŠæ¢åã®æ§é ãšå®è£
ãã¿ãŒã³ãææ¡ããŸãã tech.findy.co.jp èšèšã®æ®µéã§ã¯ãæ¹éã®ç°ãªãèšèšæ¡ã䞊åã«äœããéçºè
ãæ¯èŒããŠèšèšæ¹éãæ±ºããŸããæ±ºããæ¹éãããšã«ãã¿ã¹ã¯ã«åè§£ããŸãã tech.findy.co.jp Issueã®äœæã¯ãå°çšã®ãµããšãŒãžã§ã³ãã«åãåºããŠããŸãããµããšãŒãžã§ã³ãã¯ãèŠä»¶å®çŸ©Issueã芪IssueãšããŠåå©çšããåIssueãSub-issueãšããŠäœæããããã§ãIssueéã®äŸåé¢ä¿ãèšå®ããŸããäŸåé¢ä¿ãæ¬æã® #çªå· ã§ã¯ãªãGitHubã®IssueäŸåé¢ä¿æ©èœïŒ blocked_by ïŒã§ç»é²ããŠããã®ã¯ãåŸæ®µã®èšç»ãšãŒãžã§ã³ããæ©æ¢°çã«èªããããã«ããããã§ãã blocked_by ã¯ãããIssueãå¥ã®Issueã®å®äºãåŸ
ã€é¢ä¿ããIssueå士ã«èšå®ããæ©èœã§ããSub-issueã§ãäœãäœãããã芪åã«æŽçãã blocked_by ã§ãã©ã®é ã«äœãããã衚ããŸãã Issueã®äŸåé¢ä¿ããå®è£
ã®é çªã決ããèšç»ãšãŒãžã§ã³ã 䞊åå®è£
ãææ®ããã®ãèšç»ãšãŒãžã§ã³ãã§ããèšç»ãšãŒãžã§ã³ãã®åœ¹å²ã¯å®è¡èšç»ã®äœæãšå®è£
ãšãŒãžã§ã³ãã®èµ·åã«éãããŠããŠãã³ãŒãã®ç·šéãworktreeã®æäœãGitHubãžã®æžã蟌ã¿ã¯ããŸããã èšç»ãšãŒãžã§ã³ãã¯èŠªIssueãèµ·ç¹ã«ãGitHubããopenãªSub-issueãšãããããã® blocked_by ãèªã¿èŸŒã¿ãŸããclosedã®Issueã¯å¯Ÿè±¡ããå€ããclosedã®Issueãžã®äŸåã¯è§£æ±ºæžã¿ãšããŠæ±ããŸãã éçºè
ã¯ãèšç»ãšãŒãžã§ã³ããæç€ºããå®è¡èšç»ã確èªããŸãã確èªãåãããšãèšç»ãšãŒãžã§ã³ãã¯ãäŸåã§ã€ãªãã£ãIssueã®ã°ã«ãŒãããšã«å®è£
ãšãŒãžã§ã³ãã䞊åã§èµ·åããŸãã tech.findy.co.jp 䞊åã§åãå®è£
ãšãŒãžã§ã³ã å®è£
ãšãŒãžã§ã³ãã¯ãäŸåã§ã€ãªãã£ãIssueã®ã°ã«ãŒãããšã«èµ·åãããæ
åœã®Issueãå®è£
ããŠãã«ãªã¯ãšã¹ããäœããŸã§ããå®å
šã«é察話ã§åãæã¡ãŸãã èšç»ã®æ¿èªãå¿
èŠãªå Žåã¯ãå
ã«èšç»ã ããè¿ãå®è£
ãšãŒãžã§ã³ããèµ·åããŸããéçºè
ãèšç»ãæ¿èªããããšã§ãæ¹ããŠå®è£
ãšãŒãžã§ã³ããèµ·åããŸãã å®è£
ãšãŒãžã§ã³ãã¯ãæ
åœã®IssueãäŸåã®é ã«äžããå®è£
ããŸããIssueããšã«git worktreeãäœãã2çªç®ä»¥éã®Issueã¯åã®Issueã®ãã©ã³ããbaseã«ããŸãããã®æç¹ã®ãã©ã³ãã¯pushãããæå
ã«çœ®ãããŸãŸã§ãã tech.findy.co.jp ã°ã«ãŒãã®äžã«äºãã«äŸåããªãIssueãããå Žåã¯ããããã䞊åã«å®è£
ããããšãçµã¿ç«ãŠãšãŒãžã§ã³ãããªããŒã¹ããŠäŸåã®é ã«äžŠã¹çŽããŸãããªããŒã¹ãå®è¡ããæš©éã¯ããã®ãšãŒãžã§ã³ãã ãã«æãããŠããŸãã 䞊ã¹çµãã£ããã©ã³ããããã«ãªã¯ãšã¹ããäœæããã¹ã¿ãã¯ãã«ãªã¯ãšã¹ããšããŠç»é²ããŸãã ã¹ã¿ãã¯ãã«ãªã¯ãšã¹ã å®è£
ãšãŒãžã§ã³ãã¯ããã«ãªã¯ãšã¹ããã¹ã¿ãã¯ãã«ãªã¯ãšã¹ããšããŠç»é²ããããã§çµäºããŸãã tech.findy.co.jp ãã«ãªã¯ãšã¹ãã®æ¬æã«ã¯ã察å¿ããIssueïŒ Closes #çªå· ïŒã芪IssueãäŸåããŠãããã«ãªã¯ãšã¹ããã»ã«ãã¬ãã¥ãŒãªã©ã®å質ä¿èšŒã®çµæãå
¥ããŸãã éçºè
ã¯ãã¹ã¿ãã¯ãäžããé ã«ã¬ãã¥ãŒããŠããŒãžããŸããäžäœã®ãã«ãªã¯ãšã¹ããããŒãžããããšãGitHubãäžäœã®ãã©ã³ããèªåã§ãªããŒã¹ããbaseãä»ãæ¿ããŸããå³ã®äŸã§ã¯ã#201ãããŒãžãããš#202ã®baseãmainã«ä»ãæ¿ãããŸããã©ããŸã§ããŒãžãããããšããç¶æ
ã¯GitHubãæã£ãŠããããããšãŒãžã§ã³ãã¯ããŒãžãåŸ
ã¡ãŸããã ããŒãžããããã«ãªã¯ãšã¹ãã¯ã Closes ã«ãã£ãŠå¯Ÿå¿ããIssueãèªåã§closeããŸããcloseãããIssueã¯ã次ã«èšç»ãšãŒãžã§ã³ããèµ·åãããšãã®èšç»ã®å¯Ÿè±¡ããå€ããŸãã QAã®ãšãŒãžã§ã³ã QAã«ã¯ãQAåãã®ç€Ÿå
Pluginã䜿ã£ãŠããŸããéçºãªããžããªãšã¯å¥ã®QAçšãªããžããªã§åãããåæå¯Ÿè±¡ã®éçºãªããžããªãèšå®ã§ç»é²ããŠãããŸãã QA芳ç¹ãäœãã¹ãã«ã¯ãèŠä»¶å®çŸ©ã®Issueã仿§ãœãŒã¹ãšããŠèªã¿ãŸããNotionãFigmaã®ããŒãžã仿§ãœãŒã¹ãšããŠæž¡ããŸãããŸã仿§ãæœåºãããšãŒãžã§ã³ãããããŒã¯ãŒããšå¯Ÿè±¡ãã¡ã€ã«ã決ããŠæ¢çŽ¢ã®ç¯å²ãçµããŸããç¶ããŠãç»é¢ãšæäœãããŒã調ã¹ããšãŒãžã§ã³ããšã倿Žã«ããååž°ãªã¹ã¯ãå€å®ãããšãŒãžã§ã³ãã䞊åã«åããããã®éã«èŠä»¶ãã³ãŒããšãã¹ãã§æºããããŠããããçªãåãããŸãã éããæ€èšŒé
ç®ã¯ããã¹ãæŠç¥ã®ã¹ãã«ã§ããã¹ãã³ãŒãã§èªååãããã®ããšãQAãã¹ãã§ç¢ºèªãããã®ãã«åããŸããQA芳ç¹ã«ã¯QAãã¹ãåŽã®é
ç®ã ããå±éãããã¹ãã³ãŒããè¶³ããŠããªãç®æã¯å¥ã®ãã¡ã€ã«ãšããŠåºåããŸãã ãã¹ãã±ãŒã¹ãäœãã¹ãã«ã¯ãQA芳ç¹ãããšã«ãåææ¡ä»¶ãæé ãæåŸ
å€ãããŒã«ããšã®çµææ¬ãæã€ãã¹ãã±ãŒã¹ãäœããŸããåã±ãŒã¹ã«ã¯ããã©ãŠã¶æäœã§èªåå®è¡ããAutoãã人éãç®èŠã§ç¢ºèªããManualããä»ããŸãã倿ã«è¿·ãã±ãŒã¹ã¯Manualã«å¯ããŠããŸãã äœæãã芳ç¹ãšãã¹ãã±ãŒã¹ã¯ãQAåºæºã®ã«ããŽãªããšã«ã¬ãã¥ãŒçšã®ãšãŒãžã§ã³ãã䞊åã«èµ·åããŠãç¶²çŸ
æ§ãšå質ã確èªããŸããQAæ
åœã¯ãææã®ãã¡ã©ããåæ ããããéžã³ãŸãã Autoã®ã±ãŒã¹ã¯ãPlaywright MCPã䜿ã£ãŠããŒã«ããšã«é ã«å®è¡ããŸããçµæã¯ã倱æããã±ãŒã¹ã®ã¹ã¯ãªãŒã³ã·ã§ãããå«ãã¬ããŒããšããŠåºåããå
ã®ãã¹ãã±ãŒã¹ã«ã¯æžãæ»ããŸãããManualã®ã±ãŒã¹ã¯ç®èŠç¢ºèªã®äžèЧãšããŠãŸãšããQAæ
åœãç®èŠã§ç¢ºèªããŸãã ãŸãšã AIãšãŒãžã§ã³ããéçºãããŒã«çµã¿èŸŒãããã§å€§äºãªã®ã¯ãAIã«ä»»ããç¯å²ãšäººéã倿ããéšåãåãåããããšã ãšèããŠããŸãã æ
å ±ã®åéãèšèšæ¡ã®äœæãå®è£
ããã¹ãã®å®è¡ãšãã£ãäœæ¥ã¯AIã«å§ä»»ããæœçã®æ¡æãèšèšæ¹éã®æ±ºå®ãå®è¡èšç»ã®ç¢ºèªãããŒãžãQAã®ç¢ºèªãšãã£ãæçµçãªå€æã¯äººéãè¡ããŸãã AIã«å§ä»»ããŠäººéãæçµå€æãããšããç·åŒããæ±ºããŠããããšããAIãšãŒãžã§ã³ããšäžç·ã«éçºãé²ããããã§ã®åæã«ãªããŸãã éçºãããŒã®ã©ãã«AIãšãŒãžã§ã³ãã眮ããã¯ãããŒã ã«ãã£ãŠçããå€ãããšæããŸãããã®èšäºã®å³ããèªåãã¡ã®ãããŒãèŠçŽããšãã®ãããå°ã«ãªãã°ããããã§ãã ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã§ããªã³ã·ãã«ãšã³ãžãã¢ãããŠããæžç°ã§ãã ãã®ããã¯ããã°ã§ã¯ãããŸã§ãã¡ã€ã³ãã£ã®éçºçµç¹ã®åãçµã¿ã玹ä»ããŠããŸãããäžæ¹ã§ãéçºçµç¹ã®æåã玹ä»ããèšäºã¯ããŸããããŸããã§ããã ããã§ä»åã¯ãåŒç€Ÿã®ããšãããã«ç¥ã£ãŠãããããã«ãã¡ã€ã³ãã£ã®éçºæåã玹ä»ããŸããæ¥ã
ã®éçºã®é²ãæ¹ããããããçµç¹ã«åºããŠç¶ããããã®ä»çµã¿ããããŠæåãæ¯ããŠãããã®ãŸã§ããªãããããŠããã®ããšåãããŠç޹ä»ããŸãããã¡ã€ã³ãã£ã®éçºçµç¹ã«èå³ãæã£ãŠãã ãã£ãŠããæ¹ããçµç¹ã®æåã¥ããã«åãçµãã§ããæ¹ã®åèã«ãªããšå¹žãã§ãã éçºã®åå°ãã€ãã ã³ãŒãçæåã®æºå ã¬ãã¥ãŒæåªå
äŸ¡å€æäŸãåªå
ãã æåãåºããç¶ãã æåã¯äººã§ã¯ãªãä»çµã¿ã«ä¹ãã åŠã³ãã¢ãŠããããã§åã éäžã®èããtimesã«æžã æåãæ¯ãããã® èšèãååãã«éžã¶ çµå¶ãšã®å
±éèªè 忣ããçµç¹ã§æåãæããå Ž ãŸãšã éçºã®åå°ãã€ãã ãŸãã¯æ¥ã
ã®éçºã®é²ãæ¹ãæ¯ããŠããæåã玹ä»ããŸãããã¡ã€ã³ãã£ã§ã¯æ§ã
ãªæåããããŸãããç¹ã«éèŠãšãããŠããæåãå€ãã®ããã®ã«ããŽãªã«ãªã£ãŠããŸãã ã³ãŒãçæåã®æºå ãã¡ã€ã³ãã£ã®éçºã¯ãã³ãŒãçæã«çæããåã®æºåããå§ãŸããŸãããããªãã³ãŒããæžãå§ããã®ã§ã¯ãªãããŸãäœãã©ã®é çªã§äœãã®ããæ±ºãããã®çµæãå®å
šã«ç¢ºãããããç¶æ
ãæŽããŠããæãåããã®ãããã¡ã€ã³ãã£ã®ãšã³ãžãã¢ã«ãšã£ãŠã®åœããåã§ãã æºåã®äžå¿ã«ããã®ãã¿ã¹ã¯åè§£ã§ããã¿ã¹ã¯åè§£ã¯ããã¡ã€ã³ãã£ã«JOINãããšã³ãžãã¢ãæåã«èŠããã¹ãã«ã«ãªã£ãŠããŸããäœæ¥ãå°ããªã¹ãããã«åããŠããã°ã1ã€1ã€ã®Pull requestã¯èªç¶ãšå°ãããªããã¬ãã¥ãŒããåŽã®è² æ
ã軜ããªããŸããããã«ãã¹ãã³ãŒããšCI/CDãå ããããšã§ãå°ããªå€æŽãéããå®å
šã«ããŒãžãç¶ããããããã«ãªããŸãã æåã«èŠããã¹ãã«ãã¿ã¹ã¯åè§£ã«ããŠããã®ã¯ãã»ãã®æåã®ã»ãšãã©ããã®äžã«ä¹ã£ãŠããããã§ããPull requestã®ç²åºŠãã¬ãã¥ãŒã®éãããã¿ã¹ã¯ãé©åã«åãããŠããªããã°æãç«ã¡ãŸãããéã«èšãã°ãã¿ã¹ã¯åè§£ã身ã«ã€ãã°ãã»ãã®ç¿æ
£ã¯åŸããèªç¶ã«ã€ããŠããŸãã ãã®æºåã®æåã¯ãçµç¹ã倧ãããªã£ãä»ãå€ãããç¶ããŠããŸãã5幎ã»ã©åã¯10äººã«æºããªãã£ãéçºçµç¹ããä»ã§ã¯50人ãè¶
ããèŠæš¡ã«ãªããç§ã®ç®ãå±ããªãããŒã ãåºãŠããŸãããããã§ãåããŒã ã¯ãç§ã®ããªããšããã§ãã®æºåãç¶ããæ°ããã¡ã³ããŒã«åãç¶ãã§ãããŠããŸãã åãç¶ãããŠããçç±ã®1ã€ã¯ãæºåã®åºæºãå
·äœçãªããšã§ããäŸãã°READMEãèŠçŽã¯ãæ°ããã¡ã³ããŒãJOIN忥ã«Pull requestãäœããããšããç®æšã«æŽããŠããŸããç®æšãã¯ã£ããããŠããã®ã§ãREADMEãå€ããªã£ãŠããã°æ°ããã¡ã³ããŒèªèº«ãæ°ã¥ãããã®å Žã§çŽããŸãã ã¿ã¹ã¯åè§£ã®è©³çŽ°ã¯æ¬¡ã®èšäºã§ç޹ä»ããŠããŸãã tech.findy.co.jp ã¬ãã¥ãŒæåªå
ãã¡ã€ã³ãã£ã§ã¯ãã¬ãã¥ãŒäŸé Œãæ¥ããèªåã®äœæ¥ããå
ã«å¯Ÿå¿ããŸããèªåã®å®è£
ãé²ããããšããããããŒã ã®Pull requestãããŒãžãŸã§é²ããããšãåªå
ããã®ããããŒã ã«æ ¹ä»ããŠããç¿æ
£ã®1ã€ã§ãã ãã®ç¿æ
£ãããã®ã¯ãããŒãžãããªããšæ¬¡ã®ä¿®æ£ã«çæã§ããªãå Žé¢ã§ãã¬ãã¥ãŒåŸ
ã¡ãã¯ãªãã£ã«ã«ãã¹ãšãªããéçºå
šäœã®ããã«ããã¯ã«ãªãããã§ãããã£ããæºåãããŠå°ããªPull requestãäœã£ãŠããã¬ãã¥ãŒã§æ¢ãŸã£ãŠããŸãã°éãã¯çãŸããŸããã倧äºãªã®ã¯Pull requestãæžãéãã§ã¯ãªããããŒãžããããŸã§ã®éãã§ãã ã¬ãã¥ãŒãæåªå
ã«ããŠãäœæ¥ã现åãã«ãªããªãã®ã¯ãæºåã®æåãããããã§ããç²åºŠãé©åãªPull requestã§ããã°ã1ã€ã®ã¬ãã¥ãŒã«ãããæéã¯æ°åçšåºŠã§ãäœæ¥ãäžæããŠãããèªåã®äœæ¥ã«æ»ããŸããå°ããªPull requestãšã¬ãã¥ãŒæåªå
ã¯ãã»ããã§æãç«ã£ãŠããŸãã äžæ¹ã§ããã®ç¿æ
£ã¯å¿ããã ãã§ã¯ä¿ãŠãªãããšãããã£ãŠããŸããAIãšãŒãžã§ã³ãã®å°å
¥åŸã«ã¯ãPull requestãäœããŸã§ã¯éããªã£ãäžæ¹ã§ãã¬ãã¥ãŒã®åŸåŸ©ãå¢ããŠApproveãŸã§ã®æéãå»¶ã³ãŠããŸãããããã§ã¬ãã¥ãŒäŸé Œã®åã«AIã§ã»ã«ãã¬ãã¥ãŒããä»çµã¿ãPull requestã®äœæãããŒã«çµã¿èŸŒã¿ãã¬ãã¥ãŒã®åŸåŸ©ãæžãããŸãããã¬ãã¥ãŒæåªå
ãšããæåããå人ã®é 匵ãã§ã¯ãªãä»çµã¿ã§å®ãçŽããããšã«ãªããŸãã Pull requestã®ç²åºŠãšã¬ãã¥ãŒã®èãæ¹ãã¬ãã¥ãŒè©°ãŸããèšæž¬ããŠæ¹åããéçšã¯ã次ã®èšäºã§ç޹ä»ããŠããŸãã tech.findy.co.jp tech.findy.co.jp äŸ¡å€æäŸãåªå
ãã æºåãæŽããã¬ãã¥ãŒãåŸ
ãããªãã®ã¯äœã®ãããããã®çããããŠãŒã¶ãŒãžã®äŸ¡å€æäŸã§ãããã¡ã€ã³ãã£ã®éçºã§ã¯ã倿ã«è¿·ã£ããšãã¯ããŠãŒã¶ãŒã«æ©ã䟡å€ãå±ããããã®ã¯ã©ã¡ããããåºæºã«ããŸãã ãã®ããã綺éºãªã³ãŒããæžãããšã¯å€§åã«ãã€ã€ããæåããå®ç§ãç®æãããšã¯ããŸããããã¹ãã³ãŒããããCIãéã£ãŠããŠãæ¬çªç°å¢ã®æ¯ãèãã«åœ±é¿ããªããã°ãããè¯ãæžãæ¹ã®è°è«ãæ®ã£ãŠããŠãããŒãžããŸããå®è£
éäžã§ããããšãæèšãããŠããã°ãå®è£
éäžã®ã³ãŒãã§ãããŒãžããŠããããšã«ããŠããŸãããŠãŒã¶ãŒãæ±ããŠããã®ã¯ã¢ããªã±ãŒã·ã§ã³ã®æ¯ãèãã§ãããã³ãŒãã®çŸããã¯ãã®åŸã§ç£šãã°ãããšããèãæ¹ã§ãã ãã®èãæ¹ã¯ãæºåãšã¬ãã¥ãŒã®æåã®äžã«æãç«ã£ãŠããŸãããã¹ãã³ãŒããšCI/CDãæŽã£ãŠãããããå®è£
éäžã§ãå®å¿ããŠããŒãžã§ããŸããã¬ãã¥ãŒãããè¿ã£ãŠãããããå°ããå»ãã Pull requestãæ¬¡ã
ã«å±ããããŸããéã«ãäŸ¡å€æäŸãšãã軞ããªããã°ãã¿ã¹ã¯åè§£ããã¹ãã³ãŒããCI/CDã®æŽåã¯ãæŽåã®ããã®æŽåãã«ãªããããŸãããæºåãã¬ãã¥ãŒãéã䟡å€ãå±ããããã«ããããšãã軞ããããããããäœã«ã©ããŸã§æéãããããã®å€æãã¶ããªããªããŸãã 綺éºãªã³ãŒããåŸåãã«ãããšãã£ãŠããæŸçœ®ããããã§ã¯ãããŸãããããè¯ãæžãæ¹ãæãã€ãããããã®ã¿ã€ãã³ã°ã§ãªãã¡ã¯ã¿ã ãã®Pull requestãåºãã®ãæ¥åžžã®é¢šæ¯ã§ããæ¯ãèãããã¹ãã³ãŒãã§å®ã£ãŠããã®ã§ãåŸããã§ã匷æ°ã§ãªãã¡ã¯ã¿ã§ããŸãã ããŒãžããŠããæ¡ä»¶ããå®è£
éäžã®ã³ãŒããããŒãžãããšãã®å·¥å€«ã¯ã次ã®èšäºã§ç޹ä»ããŠããŸãã tech.findy.co.jp æåãåºããç¶ãã ãããŸã§ç޹ä»ããæåã¯ãã©ãã人ãæèãç¶ããªããã°åŽ©ããŠãããŸããããããã¯ããããçµç¹å
šäœã«åºããèŠæš¡ã倧ãããªã£ãŠãç¶ããããã®æåã§ãã æåã¯äººã§ã¯ãªãä»çµã¿ã«ä¹ãã ãã¡ã€ã³ãã£ã§ã¯ã倧äºãªããšã»ã©äººã®æ³šæåã«é Œãããä»çµã¿ã«ä¹ããããã«ããŠããŸãã誰ããæ°ãã€ããŠããªããšå®ãããªãã«ãŒã«ã¯ããã®äººãããªããªã£ãç¬éã«åŽ©ããããã§ãã ãããŸã§ç޹ä»ããæåããå®éã«ã¯ä»çµã¿ã«æ¯ããããŠããŸãããã¹ããéããªããã°ããŒãžã§ããªãããšã¯CIãä¿èšŒããæºåã®åºæºã¯READMEãèŠçŽãšããŠææžã«ãªã£ãŠããŸãããæ°ãã€ããããã§çµããããããæ°ãã€ããªããŠãå®ãããç¶æ
ããäœãã®ããã¡ã€ã³ãã£ã®ããæ¹ã§ãã åŠã³ãã¢ãŠããããã§åã ãã¡ã€ã³ãã£ã§ã¯ãåŠãã ããšãèªåã®äžã«çãããå€ã«åºãããšã倧åã«ããŠããŸãã人ã«èª¬æããããšãããšãã«åããŠãèªåã®çè§£ãè¶³ããªãéšåã«æ°ã¥ããããã§ããã¢ãŠããããã§äžçªæ©æµãåããã®ã¯ãå®ã¯çºè¡šããæ¬äººã§ãã ãã®ãããããŒã ã®äžã«ãå€ã«ãã¢ãŠããããã®å ŽããããŸããäŸãã°Findy Freelanceã®éçºããŒã ã§ã¯ã5åçºè¡šããŠ5å質çå¿çãã10åå匷äŒãé±2åéããŠããŸããç¶ããŠããã®ã¯ãçºè¡šã®ã¹ããããè³æãªãã®çºè¡šãèªãããªã©ãç¶ããããã®ããŒãã«ãæå³çã«äžããŠããããã§ãã瀟å€ã«åããŠã¯ããã®ããã¯ããã°ããçŠå²¡ãšæ±äº¬ã§éå¬ããŠããFindy AI MeetupããããŸããããã¯ããã°ã¯ã瀟å
ã§ãã©ãã·ã¥ã¢ããããç¥èŠã瀟å€ã«åºãå ŽãšããŠå®çããŸããã ããã«ã瀟å
ã§ç¢ºç«ã§ããç¥èŠã¯ãããã¥ã¡ã³ããµã€ããFindy LibraryããšããŠå
¬éããŠããŸããPull requestã®ç²åºŠãã¿ã¹ã¯åè§£ããã¹ãã³ãŒããšãã£ãéçºã®åºæ¬ãããAIãšãŒãžã§ã³ããšã®ååéçºãŸã§ãæ¥ã
ã®éçºã§å®è·µããŠããç¥èŠããŸãšããŠããŸãã åŠã³ãšã¢ãŠããããã®å Žã«ã€ããŠã詳ããã¯æ¬¡ã®èšäºã§ç޹ä»ããŠããŸãã tech.findy.co.jp tech.findy.co.jp tech.findy.co.jp tech.findy.co.jp éäžã®èããtimesã«æžã ãã¡ã€ã³ãã£ã®ãšã³ãžãã¢ã¯ãSlackã«ããããèªåã®timesãã£ã³ãã«ãæã£ãŠããŸããç§ãã¡ã倧åã«ããŠããã®ã¯ã宿ããææã ãã§ãªããäœæ¥ã®éäžçµéããããããªãããšãäžæããã£ãããšãtimesã«æžãããšã§ãã ãã¡ã€ã³ãã£ã®ãšã³ãžãã¢ã¯åã¯åæµ·éããåã¯çŠå²¡ãŸã§ãã¡ã³ããŒã¯å
šåœã«ç¹åšããŠããŸããé¡ãèŠããªãç°å¢ã§ã¯ãè©°ãŸã£ãŠããŠãåšãããæ°ã¥ãããŸãããäœæ¥ãã°ãtimesã«æ®ããŠããã°ããããèŠãã¡ã³ããŒãå©ãèãåºããŠãããŸããJOINããã°ããã®ã¡ã³ããŒããããtimesã§çåãã€ã¶ãããšèª°ããå©ãã«æ¥ãŠãããããšãã声ãäžãã£ãŠããŸãã ãã®ç¿æ
£ãèŠæš¡ã®æ¡å€§åŸãç¶ããŠããã®ã¯ãæžããããšã«èª°ããåå¿ããŠãããããã§ããäžæããã£ãããšãæžãã°åšããç¥çŠããå°ã£ãŠããããšãæžãã°èª°ããæŸã£ãŠãããŸããåå¿ãè¿ã£ãŠããããããŸãæžãããšæããŸããéäžã®èããæžãããšã¯ãå®è£
éäžã§ãããŒãžããå§¿å¢ãšåãã§ã宿ãããŸã§é ããã«æ©ãå€ã«åºãããšãåæã«ãªã£ãŠããŸãã timesã®äœ¿ãæ¹ãããªã³ããŒãã£ã³ã°ã§ã®æŽ»çšã«ã€ããŠã¯ã次ã®èšäºã§ãè§ŠããŠããŸãã tech.findy.co.jp tech.findy.co.jp æåãæ¯ãããã® æåŸã¯ããããŸã§ã®æåãã¹ãŠãäžããæ¯ããŠãããã®ã§ããèšèã®éžã³æ¹ãçµå¶ãšã®å
±éèªèããããŠé¢ããã¡ã³ããŒåå£«ã§æåãæããå Žã®3ã€ã玹ä»ããŸãã èšèãååãã«éžã¶ ãã¡ã€ã³ãã£ã§ã¯ãæ±ãã³ãŒãããã¯ãœã³ãŒãããšåŒã¶ããšã¯ãããã䌞ã³ä»£ããšåŒã³ãŸãã詊ããããšãäžæããããªãã£ããšãã¯ã倱æãããã§ã¯ãªãããã¡ã ã£ãããšãããã£ãããšèšããŸãã èšãæããçç±ã¯ãèšèãæ¬¡ã®è¡åãæ±ºããããã§ãããã¯ãœã³ãŒãããšåŒãã§ããŸããšãæžãã人ã責ãã空æ°ãçãŸãããã®ã³ãŒãã¯è§Šãã«ãããã®ã«ãªããŸããã䌞ã³ä»£ããšåŒã¹ã°ãããã¯çŽãã°ããå Žæã«ãªããŸããã倱æãããã§çµãããšåçã§æ¢ãŸããŸãããããã¡ã ã£ãããšãããã£ãããšèšãã°ãããã£ãããšãå
ã«æ¬¡ã®äžæãèããæµãã«ãªããŸãã ããã§èª€è§£ããŠã»ãããªãã®ã¯ãèšãæãã¯åé¡ããç®ãéžããããã®ãã®ã§ã¯ãªãããšããããšã§ããååããªèšèã«ã¯ãå¿
ãæ¬¡ã®è¡åãç¶ããŸãã äŸãã°ã䌞ã³ä»£ããšåŒãã ã³ãŒãã¯ããã¹ãã³ãŒãã«å®ãããç¶æ
ã§ãªãã¡ã¯ã¿ã®Pull requestãšããŠæ¥åžžçã«çŽãããŠããŸãã å®è£
éäžã®ã³ãŒããããŒãžã§ããã®ããtimesã«å°ãããšãæžããã®ãããã®ç©ºæ°ãããããã§ããæªå®æãªãã®ãäžæããã£ãŠããªãããšãå€ã«åºããŠã責ããããªãããšããå®å¿æããªããã°ãã©ã¡ãã®æåãæãç«ã¡ãŸãããèšèã®éžã³æ¹ã¯ç®ç«ã¡ãŸããããã»ãã®æåãåãç¶ããããã®åæã«ãªã£ãŠããŸãã ãååããã¯ãã¡ã€ã³ãã£ã®ããªã¥ãŒã®1ã€ã§ãããã¯ããã°ãå§ãããšãã®èšäºã§ããååããªèšèé£ãã®äŸãšããŠãã®èšãæãã玹ä»ããŠããŸãã tech.findy.co.jp çµå¶ãšã®å
±éèªè ãããŸã§ç޹ä»ããæåãæãç«ã£ãŠããã®ã¯ãéçºçµç¹ã®å€ã«ãå
±éèªèãããããã§ãã ã¿ã¹ã¯åè§£ããã¹ãã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ãCI/CDã®æŽåã¯ãããã«å£²äžã«ã€ãªãããã®ã§ã¯ãããŸãããããã§ããæéãã³ã¹ãããããŠæŽåãé²ããããšãåœããåãšããèãããéçºçµç¹ã ãã§ãªãçµå¶é£ãå«ããå
šç€Ÿã§å
±æããŠããŸãã ãã®å
±éèªèãããã®ã§ãæŽåã«é¢ããçµå¶é£ãšã®åæåœ¢æãã¹ã ãŒãºã«é²ã¿ãŸããäŸãã°Findy Team+ã®ããã³ããšã³ãã®èšèšå·æ°ã§ã¯ãæ°èŠéçºãå¯èœãªéãæ¢ããŠãäžå®æéãäœãçŽãã«éäžããå¿
èŠããããŸãããããã§ã倧ããªå察æèŠã¯åºããè°è«ããã®ã¯æ°èŠéçºãã©ã®ãããã®æéæ¢ããããããã§ããã ã¹ã ãŒãºã«é²ãã èæ¯ã«ã¯ãéå»ã«ãèšèšå·æ°ãè¡ããæãã£ãã³ã¹ããæ¯èŒçæ©ã段éã§ååã§ãããšããæåäœéšããããŸãããã®çµéšãšçŸåšã®ç¶æ³ãæ¯ã¹ãæããã³ã¹ããšååæéãæ°åã§ç€ºããããšã§ãäºæ¿ãåŸãããŸãããçµæãšããŠãç§»è¡å®äºåŸã®ããŒã å
šäœã®çç£æ§ã¯å幎æ¯ã§2.5åçšåºŠãŸã§äžãã£ãŠããŸããæåäœéšã次ã®åæåœ¢æãåŸæŒãããæŽåã«æéãæããããšãžã®çè§£ãããã«æ·±ãŸã£ãŠãããšãã埪ç°ãããããŸã§ç޹ä»ããæåãæ¯ããŠããŸãã èšèšå·æ°ã®æ±ºæãã广æ€èšŒãŸã§ã®æµãã¯ã次ã®èšäºã§ç޹ä»ããŠããŸãã tech.findy.co.jp 忣ããçµç¹ã§æåãæããå Ž ãã¡ã€ã³ãã£ã®éçºçµç¹ã¯ãæ±äº¬ã®æ¬ç€Ÿã«éãã¡ã³ããŒãšãå
šåœåå°ããé éå°ãã«ãªã¢ãŒãã§åãã¡ã³ããŒãããŸããæ¯æ¥é¡ãåãããããã§ã¯ãªããããããæ1åã®ãšã³ãžãã¢å®äŸã§åãçµã¿ãå
±æããŠããŸããææžãä»çµã¿ã§äŒããããšãšãå Žã§äŒããããšã®äž¡æ¹ãçšæããŠããããšã§ãé¢ããŠããŠãåãæåã®äžã§éçºã§ããŠããŸãã ããã«å幎ã«1åãå
šç€ŸéäŒãéããŠããŸãããã®ãšãã¯é éå°ãã«ãªã¢ãŒãã®ã¡ã³ããŒãæ±äº¬ã«éãŸããæ®æ®µã¯Slackãç»é¢è¶ãã«ããåãããŠãã仲éãšçŽæ¥é¡ãåãããŸãã æ®æ®µã®æ¥åã¯ãã«ãªã¢ãŒãã§ãåé¡ãªãé²ãã§ããŸããããã§ãã宿çã«çŽæ¥äŒã£ãŠè©±ãããšã«ã¯ããªã³ã©ã€ã³ã ãã§ã¯åŸã«ãã䟡å€ããããšèããŠããŸããäžåºŠé¡ãåãããŠè©±ããŠãããšããã®åŸã®ããã¹ãã§ã®ããåãã§ãçžæã®æå³ããã¥ã¢ã³ã¹ãäŒããããããªããæ°è»œã«çžè«ãããããªãããã§ãã æ1åã®å®äŸããå幎ã«1åã®å
šç€ŸéäŒãã1åãã€èŠãã°å°ããªåãçµã¿ã§ããããããéåããããã«ç¶ããããšã倧äºã§ããç¶ããŠãããããããã¡ã³ããŒãå
šåœã«æ£ãã°ã£ãŠããŠããåãæåãå
±æãç¶ããããŠããŸãã ãŸãšã ãã¡ã€ã³ãã£ã®éçºæåã¯ãå°ããªç©ã¿éããšãããã人ã«é Œããç¶æããä»çµã¿ã§ã§ããŠãããããããå
±éèªèãèšèã§æ¯ããŠããŸãã çæåã®æºåãæŽã£ãŠãããããã¬ãã¥ãŒãåŸ
ãããã«æžã¿ãŸããæºåãšã¬ãã¥ãŒã®éããæã£ãŠãããããå®è£
éäžã§ãããŒãžããŠäŸ¡å€æäŸãåªå
ã§ããŸãã ãããŠäŸ¡å€æäŸãšãã軞ããããããæºåãç®çåããŸãããããã«ãããããå匷äŒãtimesãšãã£ãä»çµã¿ã«ä¹ããããšã§ã50人ãè¶
ããèŠæš¡ã«ãªã£ãŠããç¹å®ã®èª°ãã«é Œããã«ä¿ã¡ç¶ããããŠããŸãã æåã¯äžæäžå€ã§åœ¢äœããããã®ã§ã¯ãããŸãããèšèãè¡åãæ±ºãããã®è¡åãç¶ç¶ããããšã§æåãšãªããŸãããŸãã¯å°ããªããšããç¶ç¶ããŠç©ã¿éããŠãã£ãŠãçµæãšããŠæåãšãªãã®ã ãšæããŸãã ããã«ãã¹ãŠãç䌌ããã®ã¯é£ãããããããŸããããäœããããèªè
ã®çããã®æ°ã¥ãããã£ããã«ç¹ãã£ãã幞ãã§ãã ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã§ã¢ãã€ã«ãšã³ãžãã¢ãããŠããå è€ã§ããæè¡ã«ã³ãã¡ã¬ã³ã¹åãã®ã¢ãã€ã«ã¢ããªãFindy EventsãããReact Nativeã§éçºããŠããŸããiOS㯠App Store ãAndroid㯠Google Play ã§å
¬éããŠããŸãã 2026幎9æ11æ¥ãã13æ¥ã«ãããŠéå¬ããã iOSDC Japan 2026 ã«åå ãããã¡ã€ã³ãã£ã®ããŒã¹ã«ãç«ã¡ãŸãããããŒã¹ã§ã¯ãæ¥ããšã«èšåãå€ããã¢ã³ã±ãŒãã宿œããŸããã Findy Eventsã®éçºã§ã¯AIãç©æ¥µçã«äœ¿ã£ãŠããŸãããUIããã¹ããã©ããŸã§ä»»ãããã¯ãä»ãèãç¶ããŠããããŒãã§ããã¯ãã¹ãã©ãããã©ãŒã ã§éçºããŠããç«å ŽãšããŠã¯ãiOSãšAndroidã§ã©ããŸã§ãå
±éã®ã³ãŒãã«ããããæ°ã«ãªã£ãŠããŸããä»åã®iOSDCã§ã¯ããã®2ã€ãé ã«çœ®ããªããã»ãã·ã§ã³ãèŽããŸããã ãã®èšäºã§ã¯ãã¢ã³ã±ãŒãã®çµæãšèŽããã»ãã·ã§ã³ã®å
容ã玹ä»ããã«ã³ãã¡ã¬ã³ã¹ã¢ããªãäœãç«å ŽãããAIã«ä»»ããç¯å²ãšOSéã§å
±æããç¯å²ã«ã€ããŠèããããšãæžããŸããåãããã«ã©ãã«ç·ãåŒãããèããŠããã¢ãã€ã«ãšã³ãžãã¢ã®æ¹ã®åèã«ãªãã°å¬ããã§ãã iOSDC Japan 2026ãšã¯ ãã¡ã€ã³ãã£ã®ããŒã¹ ã¢ã³ã±ãŒãã§èããã人éãåŠã¶ã¹ãããšã 2ã€ã®ã»ãã·ã§ã³ããèãããAIã«ä»»ããç¯å² AIæä»£ã«ãããiOSèšèšã®å®ãæ¹ãšäººéã®åœ¹å² ã¹ããã¢ããªéçºã«ãããããŒãã¹ãšã³ãžãã¢ãªã³ã°ã®åãçµã¿ Findy Eventsã®éçºã«ç
§ãããŠæããããš KMPã®äºäŸããèãããOSéã§å
±æããç¯å² Kotlin Multiplatformã軞ã«ããæ±äººã¢ããªå
šé¢ãªãã¥ãŒã¢ã«ã®æè¡æŠç¥ Findy Eventsã®æè¡éžå®ã«ç
§ãããŠæããããš ãŸãšã iOSDC Japan 2026ãšã¯ iOSDC Japan 2026ã¯ãiOSé¢é£æè¡ãã³ã¢ã®ããŒãã«ããããœãããŠã§ã¢æè¡è
ã®ããã®ã«ã³ãã¡ã¬ã³ã¹ã§ããææã»ã³ãã©ã«ã¿ã¯ãŒããŒã«ïŒã«ã³ãã¡ã¬ã³ã¹ã§ã®çŸå°éå¬ãšããã³ãã³çæŸéã§ã®é
ä¿¡ãçµã¿åããããã€ããªãã圢åŒã§ã3æ¥éã«ããã£ãŠéå¬ãããŸãããäŒå Žã«ã¯ãããŽãšã¢ã€ã³ã³ã®ã¢ã¶ã€ã¯ããããã£ã倧ããªãããŒãæ²ããããŠããŸããã iosdc.jp ãã¡ã€ã³ãã£ã®ããŒã¹ ãã¡ã€ã³ãã£ã¯ãŽãŒã«ãã¹ãã³ãµãŒãšããŠåè³ããããŒã¹ãåºå±ããŸãããããŒã¹ã®äŒç»ã¯ãDevRelããŒã ãäºåã«å
¬éããæ¬¡ã®noteèšäºã§ç޹ä»ããŠããŸãã note.com ãã¡ã€ã³ãã£ã®DevRelããŒã ã¯ããšã³ãžãã¢ã®ã¹ãã«ã¢ããããã£ãªã¢ãå¿æŽããæ¹éã§æŽ»åããŠããŸããçæAIã®æ®åã§åŠã³æ¹ãå€ãã£ãŠããŠããäžã§ãããããã®ã³ã³ãã³ãäŒç»ã®åèã«ããããã«ããšã³ãžãã¢ã®åŠã³æ¹ãæ
å ±åéãããŒãã«ããã¢ã³ã±ãŒããäŒç»ããŸããã ããŒã¹ã§ã¯ãæ¥ããšã«ç°ãªãèšåãããŒãã«æ²ç€ºããã·ãŒã«ãä»ç®ã§åçããŠããã ããŸããã ãã®èšäºã§ã¯ããã®ãã¡ç§ãæ
åœãã9æ12æ¥ã®çµæã玹ä»ããŸãã ã¢ã³ã±ãŒãã§èããã人éãåŠã¶ã¹ãããšã ãAIãã³ãŒããæžãæä»£ã«ã人éãåŠã¶ã¹ãããšãããšããèšåã§ã9ã®éžæè¢ã«513æã®ã·ãŒã«ãéãŸããŸãããåœãŠã¯ãŸãéžæè¢ã«ã·ãŒã«ã貌ã£ãŠããã ã圢åŒã§ã1人ã§è€æ°ã®éžæè¢ã«è²Œã£ãŠããã ããå Žåããããããæ¬¡ã®è¡šã®æ°ã¯åçè
æ°ã§ã¯ãªãã·ãŒã«ã®ææ°ã§ãã é äœ éžæè¢ ã·ãŒã«ã®ææ° ã·ãŒã«å
šäœã«å ããå²å 1äœ äŒç»ãèŠä»¶å®çŸ©ããããã¯ãèšèš 125æ 24.4% 2äœ ããžãã¹çè§£ãã¹ããŒã¯ãã«ããŒã³ãã¥ãã±ãŒã·ã§ã³ 113æ 22.0% 3äœ ã¢ãŒããã¯ãã£ããã¡ã€ã³ã¢ããªã³ã° 74æ 14.4% 4äœ UI/UXãã¢ã¯ã»ã·ããªã㣠62æ 12.1% 5äœ å質ä¿èšŒããã¹ãèšèš 47æ 9.2% 6äœ ã»ãã¥ãªãã£èšèšãè
åšã¢ããªã³ã° 37æ 7.2% 7äœ éçºããã»ã¹ãããŒã éçºïŒCI/CDãã¬ãã¥ãŒãªã©ïŒ 26æ 5.1% 8äœ ããã©ãŒãã³ã¹ãã¹ã±ãŒã©ããªãã£èšèš 14æ 2.7% - ãã®ä» 15æ 2.9% ç¹ã«ã·ãŒã«ã®éãŸã£ãéžæè¢ã¯ãäŒç»ãèŠä»¶å®çŸ©ããããã¯ãèšèšããšãããžãã¹çè§£ãã¹ããŒã¯ãã«ããŒã³ãã¥ãã±ãŒã·ã§ã³ãã®2ã€ã§ããã®äžäœ2ã€ãåããããš238æãå
šäœã®ååè¿ãïŒ46.4%ïŒã«ãªããŸãããAIãã³ãŒããæžãæä»£ã«åŠã¶ã¹ãããšãšããŠãäœãäœãããæ±ºããããšããé¢ä¿è
ãšè©±ããŠåæãã€ããããšãéžãã æ¹ãå€ãã£ãããšããçµæã§ãã ããŒãã®åã§ã¯ãéžãã çç±ãèãããŠããã ããŸãããäžäœã®2ã€ã«å
±éããŠããã®ã¯ããAIã ãã§æžãã€ã¡ãŒãžããããªãããšãã声ã§ããäŒç»ãèŠä»¶å®çŸ©ã«ã€ããŠã¯ããäœãçã£ãŠããã®ããã©ããªãããã¯ããäœãã®ããšãã倿ã¯äººãããã®ã§ã¯ãªããããšããæèŠã§ãããããžãã¹çè§£ã«ã€ããŠã¯ãä»ç€Ÿã®ãããã¯ãéçºã«äŸé ŒãåããŠå
±åã§åãçµãã§ããç«å Žã®æ¹ããããçžæã®äºæ¥ãçè§£ããã»ã©ãããè¯ããã®ãäžç·ã«äœããããšãã話ãèããŸãããäžæ¹ã§ããããã¯AIæä»£ã«å§ãŸã£ã話ã§ã¯ãªããæãã倧äºã ã£ãããšããæèŠããããŸããã AIæä»£ã®ãšã³ãžãã¢ã®è¶å¢ãã€ãŸãã³ãŒããæžãããšã«ãšã©ãŸãããäŒç»ãããžãã¹ã®é åãŸã§é¢ãã£ãŠããããšã¯ãæè¿ãã話é¡ã«ãªããŸããããŒã¹ã§è©±ããŠããŠãããããæèããŠããæ¹ãå€ãå°è±¡ãåããŸããã 2ã€ã®ã»ãã·ã§ã³ããèãããAIã«ä»»ããç¯å² ããŒã¹ã§è©±ããæ¹ãããããUI/UXããã¹ãã¯AIã«ä»»ãã«ããããšãã声ãèããŸãããã¢ãã€ã«ã¢ããªã§ã¯å®æ©ãã·ãã¥ã¬ãŒã¿ã§ç¢ºèªããããŒãã«ãé«ãããã®ãã¹ãŠãAIã«ä»»ããã®ã¯é£ããããšãã話ã§ããåé ã«æžãããšãããããã¯Findy Eventsã®éçºã§ãæ°ã«ãªã£ãŠãããšããã§ããAIã䜿ã£ãéçºãæ±ã£ãã»ãã·ã§ã³ã®äžããããã®ç¹ã«éãããšããããã£ã2ã€ã玹ä»ããŸãã AIæä»£ã«ãããiOSèšèšã®å®ãæ¹ãšäººéã®åœ¹å² 9æ12æ¥ã«Track Bã§è¡ããããæ ªåŒäŒç€ŸTVerã®é è€æåŒ¥ããã®ã»ãã·ã§ã³ã§ãã fortee.jp TVerã®iOSã¢ããªã§ã®è©Šè¡é¯èª€ãããšã«ããå
容ã§ãAIã¯éããã®ã®ãä»ã®æç¹ã§ã¯ãŸã ä»»ããããã人ã®å€æãå¿
èŠã ãšãã話ã§ããã ä»»ããããªãçç±ãšããŠæãã£ãŠããã®ã¯ãAIã«ã¯ã§ããªã倿ãããããšã§ãã1ã€ã¯ããã°ãšä»æ§ã®èå¥ã§ããAIã¯å
šäœã§ã¯ãªãè¿ãã®ã³ãŒããææ¬ã«ãããããæ¢åã®ã³ãŒãã«ãã°ããããšãããã仿§ãšããŠæ±ã£ãŠããŸãããšããããŸãããã1ã€ã¯ãSwiftUIãšUIKitã®ã©ã¡ããæ¡çšããããšãã倿ã§ããç¹å®ã®OSããŒãžã§ã³ã§ã¯SwiftUIãæåŸ
ã©ããã«åããªããšãã£ãäºæ
ãèžãŸããŠãã©ã¡ãã䜿ãããæ±ºããããšã¯ãAIã«ã¯é£ãããšã®ããšã§ããã ãããã課é¡ã«æ°ã¥ããã¿ã€ãã³ã°ã§AIã®ã¬ãŒãã¬ãŒã«ãæŽåããå¹çåãé²ããåãçµã¿ãç¶ããŠããããã§ããããšãã°ãã¢ãŒããã¯ãã£ã®ã¬ã€ãã©ã€ã³ãå®ããããäººãæ±ºããå
容ãCLAUDE.mdãFigmaã«æ®ãããããŠããŸãã ã¹ããã¢ããªéçºã«ãããããŒãã¹ãšã³ãžãã¢ãªã³ã°ã®åãçµã¿ 9æ12æ¥ã«Track Bã§è¡ããããæ ªåŒäŒç€Ÿã«ã«ã¯ã³ã ïŒé£ã¹ãã°ïŒã®åé幞ããã®ã»ãã·ã§ã³ã§ãã fortee.jp é£ã¹ãã°ã®ã¢ããªéçºããŒã ã¯ããã¢ããªéçºã誰ã§ãã§ããããã«ããããšããããã·ã§ã³ã®ããšã§ãAIãæ£ããåããåå°ã¥ãããé²ããŠããŸããã¿ã€ãã«ã«ããããŒãã¹ãšã³ãžãã¢ãªã³ã°ã¯ããã®åå°ã«ãããéçºç°å¢ãæ
å ±ã®æŽãæ¹ãæããŸããã»ãã·ã§ã³ã§ã¯ããããã¯ãããšã®ã¯ãŒã¯ã¹ããŒã¹ã®æ§ç¯ããCLAUDE.mdãç¶ç¶çã«æ¹åããéçšããã¡ã€ã³ç¥èããã¹ãé
ç®ã®æŽåãªã©ã玹ä»ãããŸããã AIã«æž¡ãã³ã³ããã¹ãã¯éãã質ãéèŠããåäžã®ä¿¡é Œã§ããæ
å ±æºïŒSSOTïŒãä¿ã€ãšãã話ããããæ¹åãåãç¶ããä»çµã¿ãå«ããŠããã£ãŒãããã¯ã«ãŒãã匷ãåããŠããå°è±¡ãåããŸããããã¹ãã§ã¯ãMaestroã«ããUIãã¹ãã®èªåå®è¡ã§æåQAãæžãããŠããŠããã¹ãé
ç®ã®äœæã«ãAIã䜿ãåãçµã¿ãé²ããŠããããã§ãã Findy Eventsã®éçºã«ç
§ãããŠæããããš Findy Eventsã®éçºã§ãããã¹ãé
ç®ã®äœæã«AIã䜿ã£ãŠããŸããIssueã®èŠä»¶ãFigmaã®ãã¶ã€ã³ãããšã«AIãžäœãããåé
ç®ã«ã¯é¢ä¿ããGitHubã®ã³ããããèŒããŠããŸããã»ãã®çŸå Žã§ãåãããã«ãã¹ãé
ç®ã®æŽåã«AIã䜿ã£ãŠãããšèããã®ã¯ãå¿åŒ·ãæããŸããã äžæ¹ã§ãAIãè¿ãã®ã³ãŒããææ¬ã«ããŠãã°ã仿§ãšããŠæ±ã£ãŠããŸããšãã話ã¯ãæŽå²ã®ããã¢ããªã ããããçŽé¢ãã課é¡ã®ããã«æããŸãããFindy Eventsã¯ååãªãªãŒã¹ãããŸã æ¥ãæµ
ããå®è£
ãšé£ãéã説æãå€ãèšè¿°ãããã»ã©æºãŸã£ãŠããŸãããAIãææãæžãæ¹ã®çµ±äžãææ¡ããŠãããå Žé¢ãå€ãã®ãããã®ããããããããŸãããæŽå²ãç©ã¿éãªã£ãå
ã§åãåãããšã«ãªã課é¡ãå
ã«ç¥ããã®ã¯ãåèã«ãªããŸããã KMPã®äºäŸããèãããOSéã§å
±æããç¯å² AIã®è©±ãšã¯å¥ã«ãã¯ãã¹ãã©ãããã©ãŒã ã§éçºããŠããç«å ŽããèŽããã»ãã·ã§ã³ã§ãã Kotlin Multiplatformã軞ã«ããæ±äººã¢ããªå
šé¢ãªãã¥ãŒã¢ã«ã®æè¡æŠç¥ 9æ13æ¥ã«Track Cã§è¡ãããããã£ããæ ªåŒäŒç€Ÿã®å®®å·æé«ããã®ã»ãã·ã§ã³ã§ãã fortee.jp ã¹ã©ã€ããå
¬éãããŠããŸãã speakerdeck.com äºæ¥æŠç¥ãšã¢ãŒããã¯ãã£ã®ãºã¬ãè§£æ¶ããããã«ã24幎ç¶ãã¢ã«ãã€ãæ±äººãµãŒãã¹ã®iOSã¢ããªãå
šé¢ãªãã¥ãŒã¢ã«ããŠããäºäŸã§ãã Kotlin MultiplatformïŒKMPïŒãæ¡çšããèæ¯ã«ã¯ãã¢ããªéã§å·®ç°ãçãŸãããšãã課é¡ããããŸãããiOSãšAndroidã®ããŒã ãããããæ¥åã«ãŒã«ããã©ããã³ã°èŠä»¶ãçè§£ããå®è£
ãšãã¹ããããŠããããã§ããããã§ãå
±æããé åãæè»ã«éžã¹ãããšãUIã¯åOSã®ãã€ãã£ãå®è£
ãç¶æã§ããããšã瀟å
ã®Kotlinçµéšè
ã®ç¥èŠã掻ãããããšãããKMPãéžãã§ããŸãã KMPãæ¡çšãããšãiOSãšã³ãžãã¢ãKotlinã®ã³ãŒãã«è§Šããããšã«ãªããŸããããã§ããKMPã倿ŽããPull Requestã®çŽ4å²ãiOSéçºè
ã起祚ããŠããããã§ããiOSãšAndroidã®éçºè
ãäžç·ã«ä¿å®ã§ããŠãããšæããæ°åã§ããã äžæ¹ã§ãiOSã«KMPãçµã¿èŸŒãäžã§ã¯ãKMPããexportãããåãSwiftã³ã³ãã€ã©ãSendableãšããŠæ€èšŒã§ããªããšãããSwift Concurrencyãšã®å¢çã®èª²é¡ãèŠã€ãã£ãããã§ããããã§ããã¢ããªéã®å·®ç°ãã¡ã³ããã³ã¹ã®è² æ
ãè§£æ¶ããããã®ãã¬ãŒããªããšããŠããã®èª²é¡ãåãå
¥ãã倿ãããŠããŸããã Findy Eventsã®æè¡éžå®ã«ç
§ãããŠæããããš Findy Eventsã¯æ°èŠã¢ããªãšããŠç«ã¡äžãããæå°ãªãœãŒã¹ã§æéãªãªãŒã¹ããåæã«React Nativeãéžã³ãŸãããæ±ºãæã¯ãReactãšTypeScriptã®çŽ é€ãæã€ã¡ã³ããŒãå€ãçµç¹ã®ã¢ã»ãããšãiOSãšAndroidã®ãã©ãããã©ãŒã ç¹æ§ãçè§£ããŠããã¢ãã€ã«ãšã³ãžãã¢ãšããŠã®ãã¬ããžã§ãã KMPã®äºäŸã§ãã瀟å
ã®Kotlinçµéšè
ã®ç¥èŠã掻ãããããšãéžå®çç±ã«æãã£ãŠããŸãããéžãã æè¡ã¯éã£ãŠããçµç¹ãæã£ãŠããç¥èãæŽ»ãããšãã芳ç¹ã¯å
±éããŠãããšæããŸããã ãŸãšã ä»åã®iOSDCã§èã§æããã®ã¯ãã³ãŒããæžãããšã®AIåã¯ç¢ºå®ã«é²ãã§ããŠã人ãã¡ã€ã³ã§æ
ãé åããã³ãŒããæžãåã®å·¥çšãžç§»ã£ãŠããŠãããšããããšã§ããããŒã¹ã®ã¢ã³ã±ãŒãã§äžäœã«æãã£ãã®ã¯ãäŒç»ãèŠä»¶å®çŸ©ãããžãã¹çè§£ã§ããã ãã ãããã§å€§äºã ãšèšãããŠããããšã®å€ãã¯ãAIæä»£ã«å§ãŸã£ã話ã§ã¯ãããŸãããäœãäœãããæ±ºããããšããé¢ä¿è
ãšè©±ããŠåæãã€ããããšããæãã倧äºã§ãããAIãã³ãŒããæžãããã«ãªã£ãããšã§ãã³ãŒããæžãããšã«äœ¿ã£ãŠããæéã空ãããã®åãæåã®å·¥çšã«äœ¿ãããããã«ãªã£ãçµæããã®å·¥çšã«æ¹ããŠæèãåãããã«ãªã£ãã®ã ãšæããŸãã Findy Eventsã®éçºã§ãåãèª²é¡æãæã£ãŠããã®ã§ãã»ãã®çŸå Žã®æ¹ãã話ãèããã®ã¯åç©«ã§ãããKMPã®äºäŸã®ããã«ãæè¡éžå®ããŸããçµç¹ããããã¯ãã®åæãèžãŸããŠäººã決ãã倿ã§ããã¢ã³ã±ãŒãã®9ã€ã®éžæè¢ãèªåã®ããŒã ã«åœãŠã¯ããŠãããŸAIã«ä»»ããŠããç¯å²ãšäººãæ
ã£ãŠããç¯å²ã䞊ã¹ãŠã¿ããšãæ¬¡ã«æãå
¥ããå ŽæãèŠããŠãããããããŸããã æåŸã«ãiOSDC Japan 2026ãéå¶ããŠãã ãã£ãå®è¡å§å¡äŒãšã¹ã¿ããã®çããŸãç»å£è
ã®çããŸããããŠããŒã¹ã§ã¢ã³ã±ãŒãã«çããŠãã ãã£ãçããŸã«æè¬ç³ãäžããŸãã ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ïŒCTO宀ã§ãšã³ãžãã¢ããã£ãŠããå¥åº( @_nuk00_ )ã§ãïŒ ä»åã®èšäºã§ã¯ãAIããã¶ã€ã³æ¡ãèªåã§äœæããæä»£ã«ããªã管çã³ã¹ãã®ããããã¶ã€ã³ã·ã¹ãã ãäœã£ãã®ãããã®çç±ãšããã¶ã€ã³ã·ã¹ãã ã®äžèº«ã玹ä»ããŸãã èšäºã¯åç·šãšåŸç·šã®2ã€ã«åããŠããŸãã åç·šã«ããããã®èšäºã§ã¯ãåå°ãšãªãã人ãšAIãååãããã¶ã€ã³ã·ã¹ãã ã®äœãæ¹ãã玹ä»ããŸãã åŸç·šã§ã¯ããã®åå°ã®äžã§ã¢ãã¯äœæãã¬ãã¥ãŒãAIã«ä»»ããŠãæ¥åãã©ã®ããã«å€ãã£ãã®ãããäŒãããŸãã POã»ãã¶ã€ããŒã»ãšã³ãžãã¢ã圹å²ãè¶ããŠUIãäœã£ãŠããããŒã ã®æ¹ã«ãç¹ã«èªãã§ãããããå
容ã§ãã AIã§ãå°éå€ã®äººãã¢ã€ãã¢ã圢ã«ã§ããããã«ãªã£ã ã¢ã€ãã¢ãçã¿åºãæéãæžã£ããããã¶ã€ã³ã®æçŽããå¢ãã ãã¶ã€ããŒã®å€æåºæºãšéšåããAIãšããŒã ã®å
±éèšèªã«ãã å€æåºæºãèšèã«ãã ã³ãŒãã§ãFigmaã§ããªããStorybookã«çœ®ã éšåãæãã€ã¡ãŒãžãæãã ãå
±éèšèªãããAIã«èªãŸãã ããŒã«ã¯å€ãããææ³ã¯æ®ã ãŸãšã AIã§ãå°éå€ã®äººãã¢ã€ãã¢ã圢ã«ã§ããããã«ãªã£ã ç§ãã¡ã®ããŒã ã§ã¯ãPOããã¶ã€ã³ãäœã£ããããšã³ãžãã¢ãäŒç»ãèããããšã圹å²ãè¶ããŠãããã¯ãäœãã«é¢ããå Žé¢ãå¢ããŠããŸããAIã®æ¯æŽã§ãå°éå€ã®äººã§ãã¢ã€ãã¢ãçŽ æ©ã圢ã«ã§ããããã«ãªã£ãããã§ãã ãã®è¶å¢ã®åãçµã¿ã¯ãåãããŒã ã®å±±ç°ãç»å£è³æã«ãŸãšããŠããŸããå人ãAIã§éããªã£ãŠããããã ãã§ã¯çµç¹ã®ææã«ãªããªããã ãã圹å²ã®å£ãè¶ããããããŠãã®è¶å¢ãäžéšã®äººã§çµããããªãããã«ãAIãå·¥çšã«çµã¿èŸŒãããšãã話ã§ãããã®èšäºã¯ããã®äžã®ãã¶ã€ã³ãšããé åã§äœãäœã£ãããšããå
·äœã®è©±ã«ãªããŸãã speakerdeck.com ã¢ã€ãã¢ãçã¿åºãæéãæžã£ããããã¶ã€ã³ã®æçŽããå¢ãã ããããAIã®æ¯æŽã®å
ã§æåã®æ¡ãæ©ãã§ããŠãããã¶ã€ããŒã«èŠãããšãããã¯å€ãããããšããããåããäœåºŠãçºçããŠããŸãããæ¬æ¥ãã¶ã€ããŒã«èŠãŠã»ããã®ã¯ãæ¡ã®çްããæçŽãã§ã¯ãªãããã®æ©èœãªãã§ã¯ã®äœéšã¯äœããšããããã£ãšæ¬è³ªçãªéšåã§ãããã®ãŸãŸã§ã¯æ¡ãäœãã®ãæ©ããªã£ãŠããéçºã®ãªãŒãã¿ã€ã ã¯æ©ããªããŸããã ãä»äºã¯æåããå®ç§ãç®æããããŸã6å²ã§åºãããšããèšãããŸããããã®6å²ãæ¯åãŒãããç©ã¿äžããã®ã¯ããã£ãããªãããããã¶ã€ããŒãã¬ãã¥ãŒã®ãã³ã«å£é ã§äŒããŠããå€æåºæºãå
ã«ææåããŠãããŠãæ¡ãäœã人ãAIããããèžãŸããã°ãã¬ãã¥ãŒã¯æ®ãã®æ¬è³ªçãª4å²ãè©°ããæéã«å²ãããšãã§ããŸãã ç§ããã¶ã€ã³ã·ã¹ãã ã«æåŸ
ãã圹å²ã¯ããã®æåã®6å²ã®éšåã宿ããç¶æ
ã«ããããšã§ããã ãã¶ã€ããŒã®å€æåºæºãšéšåããAIãšããŒã ã®å
±éèšèªã«ãã 6å²ãæåããæžãã ç¶æ
ã«ããããã«ããã¶ã€ã³ã·ã¹ãã ã«ã¯2ã€ã®ãã®ã眮ããŸããããã©ãããæã«ã©ãã䜿ãã¹ããããšããå€æåºæºãšãããã圢ã«ããéšåã§ãã å€æåºæºãèšèã«ãã å
ãããã¶ã€ã³ã®ã¬ãã¥ãŒå·¥çšãçºãããšãäœåºŠãåŸåŸ©ããŠããã®ã¯éšåã®èŠãç®ã§ã¯ãªãããããã¯ç®ç«ããããã®ããããã®æäœã¯äžåºŠæ¢ããŠç¢ºèªãããã¹ããããšãã£ã倿ã®ãããšãã§ããã ãã®åŸåŸ©ãè§£æ¶ããããã«çšæããã®ããã¬ã€ãã©ã€ã³ãšDo/Don'tã§ããè²ãã¹ããŒã·ã³ã°ãšãã£ãããŒã¯ã³ãã³ã³ããŒãã³ãããã¡ããæããŠããŸãããäžçªå€§äºã«ããŠããã®ã¯ãã®2ã€ã§ãã äŸãã°ãprimaryã®ãã¿ã³ã¯ããã®ç»é¢ã§äžçªããŠã»ããæäœã«ã ã䜿ãããšãã£ãã«ãŒã«ã§ããéšåã®äœ¿ãåããåãã§ããéžæè¢ãããåãŸã§ãªãã©ãžãªãããåãŸã§ãªãSelectããã以äžã§çµã蟌ãŸããããªãComboboxãã®ããã«ãæ°ãšæäœæ¹æ³ã§ç·ãåŒããŠããŸãã1ã€ã®ã³ã³ããŒãã³ãã®äœ¿ãæ¹ã ãã§ãªããã©ããéžã¶ããšããã³ã³ããŒãã³ãããŸããã ã«ãŒã«ãæèšããŠãã圢ã§ãããèŠãç®ãæŽãããã¿ãããªæ¹éã§ã¯ãªãããã®æã¯ããã䜿ãããšæžããŠãããšã人ã¯ãã®å Žã§å€æã§ããŸãããAIã«æž¡ããŠãåã倿ãããŠãããããã«ãªããŸãã ã³ãŒãã§ãFigmaã§ããªããStorybookã«çœ®ã 次ã«ãå€æåºæºãã©ãã«çœ®ããã¯ãå²ãšè¿·ããŸãããã³ãŒãã®ã³ã¡ã³ããREADMEã«çœ®ããšå®è£
ãšã®ãºã¬ã¯ãªããªãã®ã§ãããPOããã¶ã€ããŒã®ç®ã«ã¯è§ŠããŸãããäžæ¹ã§ãFigmaã«çœ®ããšãã¶ã€ããŒã¯èªããã®ã§ãããå®è£
ãšã®ä¹é¢ãèµ·ãããããªããŸãã ããã§ãã¬ã€ãã©ã€ã³ãšDo/Don'tã¯ã³ã³ããŒãã³ããšåããªããžããªã§Storybookã«MDXãšããŠæžããŠã瀟å
åãã«GitHub Pagesã§å
¬éããããšã«ããŸãããã³ã³ããŒãã³ãã®é£ã«ããã®ã§å®è£
ãšäžç·ã«æŽæ°ãããŸãããURLãéãã°POã»ãã¶ã€ããŒã»ãšã³ãžãã¢ã®èª°ã§ãããèŠãããŸãã éšåãæãã€ã¡ãŒãžãæãã å€æåºæºãããã°ãã©ã®éšåã䜿ãããã¯æ±ºãŸããŸããæ¬¡ã«æãããã®ã¯ããã®éšåãå
·äœçã«äœãæããã§ããäŒç»ã»ãã¶ã€ã³ã»å®è£
ã§åãéšåãæããã°ããã®ãã³ã«ç¿»èš³ãçŽãå¿
èŠããªããªããŸãã ãã®ãããFigma Libraryãšã³ãŒãã®ã³ã³ããŒãã³ãã¯åããã¶ã€ã³ã·ã¹ãã ããæããŠããŸããFigmaã§ããã¿ã³ãã眮ããæç¹ã§ãå®è£
ã§äœ¿ãã³ã³ããŒãã³ããPropsãæ±ºãŸã£ãŠããç¶æ
ã§ãã ãã ãFigmaãšã³ãŒããå¥ã
ã«çŽããŠãããšãããã«ãºã¬ãçãŸããŸããããã§ã³ãŒããæ£ãšããŠãã³ãŒãã®ã³ã³ããŒãã³ããFigmaãžåæ ããã¹ãã«ãClaude Codeåãã«çšæããŸãããæ°ããã³ã³ããŒãã³ããäœã£ãæãæ¢åã®ãã®ãçŽããæã«ãã®ã¹ãã«ãå®è¡ãããšãFigmaåŽã«çšæãããã³ãã¬ãŒããåç
§ããŠãFigma Libraryã®ã³ã³ããŒãã³ããæŽæ°ãããŸããã³ãŒããšFigmaããºã¬ãªãããšããäººã®æ³šæã§ã¯ãªãä»çµã¿ã§æ
ä¿ããŠããŸãã ãå
±éèšèªãããAIã«èªãŸãã ç§ãã¡ã®ããŒã ã§ã¯ãå
ã»ã©ã®Figmaåæã ãã§ãªããå®è£
ã§ãClaude Codeãªã©ã®AIããŒã«ã䜿ã£ãŠããŸããããã§ãã¬ã€ãã©ã€ã³ãšDo/Don'tãAIã«ãæž¡ãããã«çšæããã®ããããããèªã¿èŸŒãã¹ãã«ã§ãã ã¹ãã«ã«å
¥ã£ãŠããã®ã¯ãStorybookã«æžããã¬ã€ãã©ã€ã³ã®MDXãã®ãã®ã§ãããªããžããªããéœåºŠèªã¿ã«è¡ãããªãã®ã¯ã䜿ãã®ããšã³ãžãã¢ã ãã§ã¯ãªãããã§ããPOããã¶ã€ããŒãClaudeã®ãã¹ã¯ãããã¢ããªããåãã¹ãã«ã䜿ããããã«ããªããžããªã«ã¢ã¯ã»ã¹ã§ããªããŠãåã圢ã«ããŸããã ã¹ãã«ã¯çšéããšã«åãããŠããŠãå®è£
çšãšç
§äŒçšã®2ã€ããããŸãã å®è£
çšã®ã¹ãã«ã¯UIãå®è£
ããäœæ¥ã§æç€ºããªããŠãèªåã§çºç«ããŠãAIã¯äœæ¥ã«å
¥ãåã«ã¬ã€ãã©ã€ã³ãèªãã ããã§ã人ãšåãå€æåºæºã§æ¡ãäœã£ããããã¶ã€ã³ã·ã¹ãã ã®ã³ã³ããŒãã³ãã䜿ã£ãŠå®è£
ããŸãã lookupãšããç
§äŒçšã®ã¹ãã«ã¯ããã®ã³ã³ããŒãã³ãã®ä»æ§ãæããŠãã®ãããªè³ªåã§çºç«ããŠãäžè¬çãªUIã©ã€ãã©ãªã®ç¥èã§ã¯ãªãå¿
ãMDXãæ ¹æ ã«ããŠçããã®ã§ãPOããã¶ã€ããŒãã¬ã€ãã©ã€ã³ã«æ²¿ã£ãçããåŸãããŸããã©ã¡ããèªãã§ããã®ã人ãèªãã®ãšåãMDXãªã®ã§ãAIåãã®èª¬æãå¥ã«æžãå¿
èŠã¯ãããŸããã äŸãã°ãAIã«Figmaã®ãã¶ã€ã³ãšã¬ã€ãã©ã€ã³ãåç
§ããããšããããªææ¡ãè¿ã£ãŠããŸã(äžéšæç²ã»ãŒãããŠããŸã)ã Figmaã¯äžäžãšãåãå¡ããã¿ã³(primaryçžåœ)ã§ãããã¬ã€ãã©ã€ã³ã§ã¯primaryã¯ãã®ç»é¢ã®äž»æäœã«ã ã䜿ãããšã«ãªã£ãŠããŠããã®ãŸãŸã ãšéåããŸãã Figmaã®ãã¶ã€ã³ãšã¬ã€ãã©ã€ã³ãAIãç
§ããåãããŠãã«ãŒã«éåã«ãªãç®æããã¶ã€ããŒã«ç¢ºèªãã¹ããã€ã³ããçµã蟌ãã§ãããŠããŸããéšåã«ã€ããŠãåãã§ãFigmaã®ãã¶ã€ã³ãã察å¿ãããã¶ã€ã³ã·ã¹ãã ã®ã³ã³ããŒãã³ããšPropsãæœåºããŠãããã®ã§ãFigmaã§æ±ºããèŠãç®ããã®ãŸãŸå®è£
ã«æã¡èŸŒããŸãã å€æåºæºãšéšåã®äž¡æ¹ãAIãèªããç¶æ
ã«ãªããšãPOããã¶ã€ã³æ¡ãäœã段éããã«ãŒã«ãåæ ãããŠããã¶ã€ã³ã®å®æåºŠã¯å®è£
ã«å
¥ãåã«6å²ãŸã§åºæ¥äžãããŸããäººã¯æ®ãã®4å²ãã€ãŸããã®æ©èœã«åºæã®äœéšãé£ãã倿ã«éäžã§ãããšããããã§ãã ããããŠãPOã»ãã¶ã€ããŒã»ãšã³ãžãã¢ãšAIããåããã¶ã€ã³ã·ã¹ãã ãèŠãŠãã¶ã€ã³æ¡ãäœãããšãã§ããããã«ãªããŸããã çµæãšããŠãäœæã§ã¯ãããŸããã以åã¯1ã€ã®Issueã«ä»æ§ãè©°ãã1æéã®MTGã2ã3åå¿
èŠã ã£ãã®ããä»ã¯1åã®MTGã§2ã3åã®Issueããã°ããããã«ãªã£ãŠããŸããã ããŒã«ã¯å€ãããææ³ã¯æ®ã ãããŸã§èªãã§ãããã¶ã€ã³ã·ã¹ãã ãäœããªããŠããClaude DesignãFigmaã®ãšãŒãžã§ã³ãããã¥ãŒãã³ã°ããã°ã§ããã®ã§ã¯ïŒããšæã£ãæ¹ããããããããŸããã 確ãã«å¯èœã§ãããç§ã¯ãããŒã«ãšã³ã³ããã¹ãã¯åããŠæã€ã¹ãããšèããŸãããªããªãããã¶ã€ã³ãäœãããŒã«ã¯ãã®1幎ã§ãå
¥ãæ¿ããç¶ããŠããŠããããããå€ãã£ãŠããããã§ããäžæ¹ã§ãç§ãã¡ã®ãããã¯ããã©ã®ãããªææ³ã§ãã¶ã€ã³ããã®ããã¯ãããŒã«ãå€ãã£ãŠãå€ãããŸããã ã ãããã¶ã€ã³ã®ã³ã³ããã¹ãã¯ãã¶ã€ã³ã·ã¹ãã åŽã«çœ®ããŠããã¶ã€ã³ãã€ããããŒã«ã¯ãããåç
§ããããã«ä»çµã¿åããŠããŸãã äŸãã°ã䜿ãAIããŒã«ãClaude DesignãFigmaã®ãšãŒãžã§ã³ãã§ããClaude Codeã§ãCodexã§ãGeminiã§ããåãå€æåºæºã§åãããŸããå€ããã®ã¯ããŒã«åŽã®èªã¿èŸŒã¿å£ã ãã§ãææ³ãšã«ãŒã«ã«ã¯æãå
¥ããã«æžã¿ãŸãã ããŒã«ã¯å€ãã£ãŠããææ³ã¯æ®ããã ããç§ã¯ããã¶ã€ã³ã·ã¹ãã ãã³ã³ããŒãã³ãéã§ã¯ãªããææ³ã®çœ®ãå ŽãšããŠãŒãããäœããŸããã ãŸãšã AIæä»£ã«ãã¶ã€ã³ã·ã¹ãã ãäœã£ãã®ã¯ã人ãšAIãåãå€æåºæºãšéšåã䜿ããããã«ããããã§ããããã©ãããæã«ã©ãã䜿ããããšããå€æåºæºãèšèã«ããŠäººãèªããå Žæã«çœ®ããŠãåããã®ãAIã«ãèªãŸããŸããããã®2ã€ãæããšãæ¡ãäœã段éã§6å²ã®å®æåºŠãæžãã ç¶æ
ããå§ããããŠãäººã¯æ®ãã®æ¬è³ªçãª4å²ã«æéã䜿ããããã«ãªããŸãã ãã¶ã€ã³ã·ã¹ãã ããã§ã«ããããŒã ãªããå€æåºæºãèšèã«ãªã£ãŠããããAIããããèªãã圢ã«ãªã£ãŠããããäžåºŠç¢ºèªããŠã¿ããšè¯ããããããŸãããããŒã«ãã©ãã ãè³¢ããªã£ãŠãããã®å€æåºæºãæžããè²ãŠãŠããã®ã¯ç§ãã¡ã§ãã åŸç·šã§ã¯ããã®åå°ã®äžã§AIã«ã¢ãã¯äœæããã¬ãã¥ãŒãŸã§ãä»»ããŠããã¶ã€ã³ã·ã¹ãã ã䜿ãã°äœ¿ãã»ã©è²ã€ä»çµã¿ã«ããéçšã玹ä»ããŸãïŒ ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£ã§Findy Team+ã®éçºãããŠããrobinã§ãã å
æ¥ãã¡ã€ã³ãã£ã§åã®è©Šã¿ãšãªããšã³ãžãã¢ã€ã³ã¿ãŒã³ã宿œããã2é±éã¡ã³ã¿ãŒãåããŸãããåè·ã§ãã€ã³ã¿ãŒã³ã®ã¡ã³ã¿ãŒãäœåºŠãçµéšããŠããŸããããAIæä»£ã«ã€ã³ã¿ãŒã³ãåãå
¥ããã®ã¯ä»åãåããŠã§ããã AIãããããåè·ãšåãããã«ããã°ãããå§ãŸãåã¯ããèžãã§ããŸããããšããããå€ãã£ãã®ã¯ã€ã³ã¿ãŒã³çã®é²ã¿æ¹ã ãã§ã¯ãããŸããã§ããã èªèµ°ã¯AIããµããŒããã ã¡ã³ã¿ãŒã®åœ¹å²ãå€ãã AIãåããããç°å¢ãæŽãã éçºæåããªã³ããŒãã£ã³ã°ãã ãŸãšã 課é¡ã¯ã以åããFindy Team+ã®ãå°å
¥äŒæ¥æ§ããèŠæãæ°å€ãå¯ããããŠãããEpicçžåœã®æ¢åæ©èœã®æ¹ä¿®ã§ããããã¯ãšã³ãããããã³ããšã³ããŸã§äžéãè§Šãå¿
èŠããããŸããã æ³å®ããŠããé²ãæ¹ã¯æ¬¡ã®ãšããã§ãã 1æ¥ç®: ç°å¢æ§ç¯ãšãªã³ããŒãã£ã³ã° 2æ¥ç®: ã³ãŒãããŒã¹ãšèª²é¡ã®ãã£ããã¢ãã 1é±ç®ã®æ®ã: ããã¯ãšã³ãã®å®è£
2é±ç®: ããã³ããšã³ãã®å®è£
ãšãªãªãŒã¹ åè·ã§ã®çµéšããããŠãã2é±éã§ä»äžããã«ã¯äœè£ã®ãªãã¹ã±ãžã¥ãŒã«ã§ãã ãã®ãã¡ããã£ããã¢ããã«èŠèŸŒãã§ãã1æ¥ã¯ãçµæçã«ã»ãšãã©å¿
èŠãããŸããã§ããã ä»åã®ã€ã³ã¿ãŒã³ãéããŠãç¹ã«å°è±¡ã«æ®ã£ãæ°ã¥ãã¯å€§ãã4ã€ã§ãã èªèµ°ã¯AIããµããŒããã ãŸãé©ããã®ã¯ãAIã䜿ãããšã§ã³ãŒãããŒã¹ã®ãã£ããã¢ãããããªãéããªãããšã§ããã ãããã¯ãã課é¡ã®èª¬æãããåŸã¯ãAIãšåæ¥ããªããã»ãŒç¬åã§ãã£ããã¢ãããã¿ã¹ã¯åè§£ãŸã§é²ããããšãã§ããŸãããéçºã«çæã§ããã®ã¯ãçŽ3æéåŸã§ãã ã¡ã³ã¿ãŒåŽã§çšæããã®ã¯ãæ¹ä¿®ã®ç®çã察象ã¹ã³ãŒãã仿§ã®å©ãå°ãIssueãžæŽçããŠãããšãããŸã§ã§ããå
·äœçãªå®è£
ã¿ã¹ã¯ãžã®åè§£ã¯ãAIãšçžè«ããªããæ¬äººã«äž»äœçã«é²ããŠããããŸããã åŸæ¥ã®ã€ã³ã¿ãŒã³ã§ããã°ãã³ãŒãããŒã¹ã®èª¬æãããããå®è£
ç®æãäžç·ã«æ¢ããããšã人ã现ãããµããŒãããæéããããªãã«å¿
èŠã§ãããä»åã¯ãã®ããããAIãè©ä»£ããããŠãããã®ã§ãã¡ã³ã¿ãŒãä»ãã£ããã«ãªãå¿
èŠã¯ãããŸããã§ããã ãã®åŸããå°ããªã¿ã¹ã¯ãžã®åè§£ãšæ¥ã
ã®ãŽãŒã«èšå®ã»æ¯ãè¿ããè¡ããªããéçºãé²ããŠããããŸããã1é±ç®ãã£ã±ãããããšèŠãŠããããã¯ãšã³ãã®å®è£
ã¯3æ¥ã§çµãããæ®ãã®æéã¯ããã³ããšã³ãã®å®è£
ãšããã¯ãšã³ãã®æ¹ä¿®ã«å
ãŠãŠãçŽ8æ¥éã§æ©èœããªãªãŒã¹ããŠãããŸããã ãã«ãªã¯ãšã¹ãäœææ°ã¯1æ¥å¹³åçŽ6.3æ¬ããªãŒãã¿ã€ã ã5æéæªæºãšãæåŸ
ããŠãã以äžã®ã¢ãŠãããããåºããŠãããŸããã Findy Team+ã®èšæž¬ç»é¢ äžæ¹ã§ã AIã«ãã£ãŠãã£ããã¢ãããéããªã£ããããšãã£ãŠããã¹ãŠãAIã«ä»»ããããããã§ã¯ãªã ãšããããšãåãããŸããã ç¹ã«ãã¢ãŒããã¯ãã£ãèšèšã®æŽå²ççµç·¯ãšãã£ãã³ãŒãããã¯èªã¿åããªãã³ã³ããã¹ããããããã¯ãç¹æ§ã解決ããã課é¡ãã¿ãŒã²ãããŠãŒã¶ãŒãšãã£ããã¡ã€ã³ç¥èã«ã€ããŠã¯ã人ã«ãããµããŒããå¿
èŠã§ããã å®éãããããã³ã³ããã¹ãã®çè§£ãååã§ãªããŸãŸå®è£
ãé²ããããšã§ãå®è£
æ¹éã®èªèéœéœ¬ã«ããææ»ããçºçããŸããããã«ãªã¯ãšã¹ãäœææ°57ä»¶ã«å¯ŸããŠããŒãžæžã¿ãã«ãªã¯ãšã¹ãæ°ã¯47ä»¶ã§ããã®å·®åã«ããã10ä»¶ãããŒãžãããªãã£ããã«ãªã¯ãšã¹ãã§ãã ãã«ãªã¯ãšã¹ãäœææ°ãšããŒãžæžã¿ãã«ãªã¯ãšã¹ãæ°ã®èšæž¬çµæ AIãšã®å¯Ÿè©±ã§ã¯ãææ§ãªéšåãææ§ãªãŸãŸé²ããŠããŸããšããã®ãŸãŸå®è£
æ¹éã«åæ ãããŠããŸãããšããããŸãããã®ããããã¢ããã1on1ã§ã®å³è§£ã»èªã¿åãããªã©ã AIãšäººããããã®åŸæé åã䜿ãåããããšãéèŠ ã ãšæããŸããã ã¡ã³ã¿ãŒã®åœ¹å²ãå€ãã ã§ã¯ããµããŒãã®æã空ããåãã¡ã³ã¿ãŒã¯æ¥œã«ãªã£ãã®ããä»ãã£ããã§éçºãèŠãæéã¯ããããã«æžããŸããããã ãæ¥œã«ãªã£ãããšãããšãããã§ã¯ãããŸããã§ããããããã AIã«ãã£ãŠã€ã³ã¿ãŒã³çãèªèµ°ã§ããããã«ãªãããšã§ãã¡ã³ã¿ãŒã®åœ¹å²ãã®ãã®ãå€ãã£ãŠãã ã®ã ãšæããŸãã 空ããæéã«ã¯ãéçºãã®ãã®ã ãã§ã¯ãªãã ãããã¯ãããŠãŒã¶ãŒã«ã€ããŠèããæ©äŒãå€ãäœãããš ãæèããŸããã äŸãã°ã鱿¬¡ã®ã¬ãã¥ãŒäŒã§ã¯ãšã³ãžãã¢ä»¥å€ã®ã¡ã³ããŒã«åããŠéçºããæ©èœãçºè¡šããŠããããUI/UXã«ã€ããŠã¯çŽæ¥ãã¶ã€ããŒã«å£°ããããŠè°è«ããŠããããŸãããããã«ãFindy Team+ã®ãå°å
¥äŒæ¥æ§ãšã®æã¡åããã«ãååžããŠããããå®éã®ãŠãŒã¶ãŒãã©ã®ããã«Team+ã䜿ããã©ããªèª²é¡ãæ±ããŠããã®ããçŽæ¥èããŠããããŸããã ããããæ©äŒã«å¯ŸããŠãæ¬äººãèããããšãªãç©æ¥µçã«é£ã³èŸŒãã§ãããããšã¯å°è±¡çã§ãããéçºããããšã ãã«éãããããã£ãšè¯ããŠãŒã¶ãŒäœéšã«ã§ããªãããããŠãŒã¶ãŒã¯äœã«å°ã£ãŠããã®ãããšèŠéãåºããŠããå§¿å¢ã¯ãã¡ã³ã¿ãŒãšããŠãšãŠãå¬ããæããŸããã äžæ¹ã§ãã¡ã³ã¿ãŒåŽã«ãæ°ããé£ããããããŸããã AIã«ä»»ããããéšåãå¢ãããšã¯ãããã¬ãã¥ãŒãQAãå®è£
æ¹éã®çžè«ãªã©ãAIã ãã§ã¯å€æãã¥ããéšåãžã®ãµããŒãã¯å¿
èŠã§ãããŸããä»åã¯çæéã§ã®ãªãªãŒã¹ãç®æããŠãããããã¡ã³ã¿ãŒåŽã«ãçŽ æ©ãæææ±ºå®ããã£ãŒãããã¯ãæ±ããããŸããã ããã«å ããŠãéçºãæããã ãã§ã¯ãªãããããã¯ããæäŸãã䟡å€ããã¡ã€ã³ãã£ãããä»äºã®é²ãæ¹ãAIã®æŽ»çšæ¹æ³ãšãã£ã现ããªãœããã¹ãã«ãŸã§ãµããŒãããå¿
èŠããããŸããããªãªãŒã¹ãåªå
ããäžã§ãããããéšåãŸã§ååã«ãµããŒãããããªãã£ãããšã¯åçç¹ã§ããæ¬¡åã¯ããããã¯ã䟡å€ãçµç¹æåãAIã®æŽ»çšæ¹æ³ãŸã§å«ããŠãããäœç³»çã«äŒããããããã«ããããšæããŸãã ããããçµéšãæ¯ãè¿ããšãAIæä»£ã®ã¡ã³ã¿ãŒã¯ãéçºãæãã人ãããããããã¯ã䟡å€ã«åãåããç°å¢ãã€ãã人ãžãšåœ¹å²ãå€ãã£ãŠããã®ã§ã¯ãªãããšæããŠããŸãã AIãåããããç°å¢ãæŽãã AIã䜿ãã°èª°ã§ãããé²ãã®ããšãããšããããšãéããŸãããã¹ã ãŒãºã«é²ãã èæ¯ã«ã¯ã AIã䜿ãããšãã®ãã®ã ãã§ãªããAIãåããããç°å¢ããããããæŽåããŠããããš ã倧ããã£ããšæããŸãã å®éãã€ã³ã¿ãŒã³çãããæ¬¡ã®ãããªããžãã£ããªãã£ãŒãããã¯ããããŸããã ã«ã¹ã¿ã ã³ãã³ããSkillsã®æé©åãé²ãã§ãã ãAIã䜿ã£ãŠãããã®ã§ã¯ãªããAIãåããããç°å¢ãæŽåããŠããã ã³ãŒãã£ã³ã°ã«ãŒã«ãæèããªããŠã質ã®é«ãã³ãŒããæžãã ãã¡ã€ã³ãã£ã«ã¯ãå
šç€Ÿæšªæã§AI掻çšã®å¹çåã»æšé²ãè¡ãçµç¹ããããŸãã å
šãšã³ãžãã¢ãå©çšã§ããæ±çšçãªã«ã¹ã¿ã ã³ãã³ããSkillsãPluginãšããŠå±éããŠãããã€ã³ã¿ãŒã³ã§ã忥ã®ç°å¢æ§ç¯ã®äžç°ãšããŠå°å
¥ããŠããããŸãããããããŠãæ®æ®µã®éçºã§ãã䜿ãSkillsã«ã€ããŠãå
±æããŸããã ããã«Team+ã®éçºã§ã¯ããããã¯ãåºæã®ç¥èãéçºã«ãŒã«ãClaudeãåç
§ã§ãããããéçºã«ç¹åããSkillsãRulesãæŽåããŠããŸãã ãããããããããçšæãããŠããããšã§ãã€ã³ã¿ãŒã³çããžã§ã€ã³çŽåŸããAIã®åãåŒãåºããªããéçºãé²ããããšãã§ããŸããã äžæ¹ã§ã AIã«æ£ããåããŠãããããã«ã¯ãAIèªäœã®æ§èœã ãã§ãªããAIãåç
§ããæ
å ±ãç¶ç¶çã«æŽåããããšãéèŠ ã ãšãã課é¡ãèŠããŠããŸããã å
·äœçã«ã¯ã次ã®ãããªç¹ã§ãã Rulesé¢é£ã®ããã¥ã¡ã³ããäžéšé³è
åããŠãã å€ãã»éæšå¥šãªã³ãŒãã®æŽçãååã§ã¯ãªãã£ã AIãå€ãã³ãŒããåç
§ããåããããªå®è£
ãçæããŠããŸãã±ãŒã¹ããã£ã AIã¯äžããããæ
å ±ãããšã«éåžžã«é«éã«ä»äºãé²ããŠãããŸãã è£ãè¿ãã°ã åç
§ããæ
å ±ãå€ããã°ããã®æ
å ±ãããšã«é«éã«ééã£ãæ¹åãžé²ãã§ããŸã ãšããããšã§ããããŸãã AIã®é²åãç®ãŸããããäžã§ãåžžã«ææ°ã®ãã¹ããã©ã¯ãã£ã¹ã«è¿œåŸããããšã¯ç°¡åã§ã¯ãããŸãããããã§ããRulesãããã¥ã¡ã³ããã³ãŒãããŒã¹ãç¶ç¶çã«æŽåããããšã¯ãAIã®åºåå質ãé«ããã ãã§ãªããã¬ãã¥ãŒã§ã®ç¡é§ãªããåããææ»ãã®åæžã«ãã€ãªãããŸãã éçºæåããªã³ããŒãã£ã³ã°ãã æŽããã¹ããã®ã¯ãAIãåç
§ããæ
å ±ã ãã§ã¯ãããŸããã§ãããã€ã³ã¿ãŒã³ã§ã¯ãéçºç°å¢ã ãã§ãªãã ãã¡ã€ã³ãã£ã®éçºæåããã£ããã¢ããããŠãããããš ãæèããŸããã ãã¡ã€ã³ãã£ã§ã¯ãã¿ã¹ã¯åè§£ããã«ãªã¯ãšã¹ãã®äœææ¹æ³ãªã©ãæ®æ®µã®éçºã§å€§åã«ããŠããèãæ¹ããã©ã¯ãã£ã¹ãFindy Libraryã«ãŸãšããŠããŸãã lib.findy.co.jp ã€ã³ã¿ãŒã³çã«ããéçºãé²ããäžã§ç¥ã£ãŠãããŠã»ããå
容ãšããŠã次ã®ãããªããã¥ã¡ã³ããäºåã«å
±æããŸããã lib.findy.co.jp lib.findy.co.jp ãããã圢ã§éçºæåãèšèªåãããŠããããšã§ãããã¡ã€ã³ãã£ã§ã¯ã©ãéçºããã®ããããŒãããå£é ã§èª¬æããå¿
èŠããªããã€ã³ã¿ãŒã³çèªèº«ãå¿
èŠãªã¿ã€ãã³ã°ã§ãã£ããã¢ããã§ããããšã¯ããªã³ããŒãã£ã³ã°ã«ãããŠå€§ããªã¡ãªããã ãšæããŸããã AIãã³ãŒãããŒã¹ã®ãã£ããã¢ããããµããŒãããŠãããäžæ¹ã§ãã©ã®ããã«éçºãé²ããã®ããäœã倧åã«ããŠããã®ããšãã£ãããŒã åºæã®æåãŸã§AIã«ä»»ããããšã¯ã§ããŸããã AIãåããããéçºç°å¢ãšã人ããã£ããã¢ããããããéçºæåããã®äž¡æ¹ãæŽããŠããããšããããããã®ãªã³ããŒãã£ã³ã°ã«ã¯éèŠãªã®ã ãšæããŸãã ãŸãšã ã€ã³ã¿ãŒã³ãéããŠã AIã«ãã£ãŠã€ã³ã¿ãŒã³çã®èªèµ°ã倧ããé²ãäžæ¹ã§ãã¡ã³ã¿ãŒã®åœ¹å²ãå€ãã£ãŠãã ããšã宿ããŸããã AIã«ä»»ããããéšåã¯ä»»ãã人ã¯ãããã¯ãã®äŸ¡å€ããŠãŒã¶ãŒã«ã€ããŠèããåšå²ãšè°è«ãããããããããšã§ããããŸã§ä»¥äžã«ãäœãäœãããã ãã§ãªãã ã誰ã®ããã«ããªãäœãã®ãããŸã§èããã€ã³ã¿ãŒã³ ã«ã§ããã®ã ãšæããŸãã AIæä»£ã®ã¡ã³ã¿ãŒã«æ±ããããã®ã¯ãéçºãæåãè¶³åãæããããšã§ã¯ãªãã AIãšäººããããã®åŸæé åãæŽ»ãããªãããã€ã³ã¿ãŒã³çããããã¯ã䟡å€ã«åãåããç°å¢ãã€ããããš ãªã®ãããããŸããã AIãåããããç°å¢ãéçºæåãããã«æŽããããè¯ããããã¯ãéçºãè¡ããããã«ããããšã§ãä»åŸã€ã³ã¿ãŒã³ã«ãåå ããã ãæ¹ã
ã«ããè¯ãçµéšãããŠããããããã«ããŠãããŸãã ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£ã®éïŒ @hiracky16 ïŒãšäœè€ïŒ @heizari ïŒã§ãã 2026幎8æ20æ¥ãã22æ¥ã«ãããŠåºå³¶åœéäŒè°å Žã§éå¬ããã PyCon JP 2026 ã«åå ããŸãããPyCon JPã¯æ¥æ¬æå€§çŽã®Pythonã³ãã¥ããã£ã®ç¥å
žã§ãPythonã䜿ã人ãããããåŠã³ãã人ãã³ãã¥ããã£ã«é¢ãããã¹ãŠã®äººãéãŸãã«ã³ãã¡ã¬ã³ã¹ã§ãã ãã¡ã€ã³ãã£ã¯ä»å¹Žãã¹ãã³ãµãŒãšããŠããŒã¹ãåºå±ãããŠããããŸããããšã³ãžãã¢ã2åã§åå ããŠãããåå è
ã®çæ§ãšäžç·ã«ã»ãã·ã§ã³ãèããããããŒã¹ã§ã³ãã¥ãã±ãŒã·ã§ã³ãåã£ããããŠããŸããã®ã§ããã®æ§åãã¬ããŒãããŸãã PyCon JP 2026ãšã¯ Findy Drinkup at PyCon JP 2026 å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ã®å
容 é: Pythonãã¥ãŒããªã¢ã«ãvenvãäœã£ãŠpip installãš2026幎ãæãç¶ããŸããïŒ äœè€: Retry Is Not a Strategy: Classifying and Recovering from AI Agent Failures in Python ã«ã³ãã¡ã¬ã³ã¹ã®æ§å ãã¡ã€ã³ãã£ããŒã¹ ãªãã£ã·ã£ã«ããŒãã£ãŒ Open Spaceã§ã®ããªãŒããŒã¯ ã奜ã¿ããŒã¯ ãŸãšã PyCon JP 2026ãšã¯ é嬿¥: 2026幎8æ21æ¥ã22æ¥ïŒåæ¥ã®8æ20æ¥ã«Day0ã€ãã³ãããïŒ äŒå Ž: åºå³¶åœéäŒè°å Ž å
¬åŒãµã€ã: https://2026.pycon.jp/ja ä»åã¯åºå³¶ã§ã®éå¬ãšããããšããããå°å
ã®åŠçãäŒæ¥ã®æ¹ã
ãšã®äº€æµãå€ãã«ã³ãã¡ã¬ã³ã¹ã«ãªããŸããã Findy Drinkup at PyCon JP 2026 Findy Drinkup at PyCon JP 2026 ãéå¬ããåŠçãã瀟äŒäººãŸã§ããŸããŸãªåå è
ãšäº€æµããŸããã æå€ã ã£ãã®ã¯ã瀟äŒäººã ãã§ãªãåŠçã®åå ãå€ãã£ãããšã§ããããã°ã©ãã³ã°ãµãŒã¯ã«ã®ã¡ã³ããŒãé£ãç«ã£ãŠåå ããŠãããç ç©¶ã§Pythonã䜿ã£ãŠãããšãã話ãããµãŒã¯ã«æŽ»åã®äžç°ã§æ¥é ããã³ãŒããæžããŠãããšãã話ãèãããšãã§ããŸãããåŠçãšç€ŸäŒäººãåãå Žã§Pythonã«ã€ããŠèªãåãã空éã«ãªã£ãŠããã®ãå°è±¡çã§ããã äŒè©±ã®äžå¿ã«ãªã£ãã®ã¯ããã¯ãPyCon JPãã®ãã®ã®è©±é¡ã§ããæ¬¡ã®æ¥ã«ã©ã®ã»ãã·ã§ã³ãèŽãã«è¡ãããæ°ã«ãªã£ãŠããããŒã¯ã¯äœããšãã£ã話ã§å€§ãã«çãäžãããŸãããã«ã³ãã¡ã¬ã³ã¹åå ããã£ããã«å察é¢å士ã§ãå
±éã®è©±é¡ãã§ããã®ã¯ãDrinkupãªãã§ã¯ã®è¯ãã ãšæããŸããã ãŸããPyCon JPéå¶ã®æ¹ã«ãè¶³ãéãã§ããã ããçŽæ¥ã話ãããæ©äŒãããã ããŸããã Drinkupã«ãåå ããã ãããããšãããããŸããïŒã¿ãªãããšãã£ããã話ãã§ããŠè¯ãã£ãã§ãâºïžðð ææ¥ããPyCon楜ãã¿ãŸããããð #pycon2026_findy pic.twitter.com/yAPIuDzoz1 — ãããã@Findy DevRel (@iwasakitchen) 2026幎8æ20æ¥ å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ã®å
容 é: Pythonãã¥ãŒããªã¢ã«ãvenvãäœã£ãŠpip installãš2026幎ãæãç¶ããŸããïŒ 2026.pycon.jp 以åãç»å£è
ã®nikkieããã«ãæè¿ããªãã¿ããªuvã䜿ã£ãŠãããã§ããïŒ Pythonããã±ãŒãžç®¡çã®å€é·ãšçŸåšå°ããšããFindy Mediaã®èšäºãžå¯çš¿ããã ããããšããããå®ã¯ä»åã®ã»ãã·ã§ã³ã®äžã§ããã®èšäºãåŒçšããŠãã ãã£ãŠããŸããããã®å ŽãåããŠã瀌ããäŒãããŸãã findy-code.io Findy Mediaã®èšäºãéããŠãPythonã®ããã±ãŒãžç®¡çãvenvã»pip installãããpoetryãryeããããŠuvãžãšç§»ãå€ãã£ãŠããæŽå²çãªèæ¯ãç¥ãããšãã§ããŸãããæ®æ®µPythonã䜿ã£ãŠéçºããŠããŠãããã®è£ã«ããææ³ã®éšåãŸã§æèããããšã¯ããŸããªãã£ãã®ã§ãèŠæ¹ãå€ãããã£ããã«ãªã£ãèšäºã§ãããããªèæ¯ããããnikkieããã®çºè¡šã楜ãã¿ã«ããŠããŸããã ã»ãã·ã§ã³ã§ã¯ãvenvãpoetryãryeãuvãšãã£ãåããŒã«ãããããã©ã®ãããªèª²é¡ã解決ããããã«å¿
èŠã«ãªã£ãã®ãããã®èæ¯ãäžå¯§ã«èª¬æãããŠããŸãããããŒã«ãé²åããã«ã€ããŠã§ããããšãåºãã£ãŠããæ§åãäŒãã£ãŠããå
容ã§ããããã®ããã§ãã¿ã€ãã«ã®åãã«å¯Ÿããçãã¯æå¿«ã§ããããã¥ãŒããªã¢ã«ã§venvãäœã£ãŠpip installãšæããã®ã¯ãããuvãå§ãããšããçµè«ã§ãã äžã§ãå°è±¡ã«æ®ã£ãã®ãã inline script metadata ã®è©±ã§ããã¹ã¯ãªããã«åæãšãªãããã±ãŒãžãçŽæ¥èšè¿°ããŠä»®æ³ç°å¢ãäœããä»çµã¿ã§ã uv run script.py äžçºã§å®è¡ã§ããæè»œãã¯ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããšã®çžæ§ãè¯ããã¡ãã£ãšããå®éšã«ã¯ãŽã£ããã ãšæããŸããã uvã®è¯ããšããŠã次ã®ãããªç¹ã玹ä»ãããŠããŸããã ç°¡åã§ãåäœãã¯ãã uvã䜿ã£ãŠããã ãã§ãã§ããããšãã©ãã©ãåºãããã FastAPIãã¯ãããæåãªããã±ãŒãžã§ãuvã®æ¡çšãé²ãã§ãã ã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããæ®åããããšã§ãã³ãŒãã£ã³ã°ãšãŒãžã§ã³ããã¯ããã ãã§ãªããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãã䜿ãããŒã«èªäœãã¯ããå¿
èŠãããããšããææãå°è±¡çã§ãããuvãé«éãªçç±ã®äžã€ã¯ãã£ãã·ã¥ã掻çšããŠããç¹ã§ã uv cache dir ã³ãã³ãã§å®éã®ãã£ãã·ã¥ãã£ã¬ã¯ããªã確èªã§ããŸããã³ãŒãã£ã³ã°ãšãŒãžã§ã³ãããã®ãã£ãã·ã¥ãã£ã¬ã¯ããªã«ã¢ã¯ã»ã¹ã§ããç°å¢ã§ããããšããéçºäœéšã®é床ãä¿ã€äžã§éèŠã«ãªããšãã話ã§ããã ãŸãããµãã©ã€ãã§ãŒã³æ»æãèžãŸãããšäŸ¿å©ã ãšæããã®ããuvã«cooldownïŒææ°çãäžå®æéçµã£ãŠããååŸããä»çµã¿ïŒãèšå®ã§ããç¹ã§ããæè¿ã§ã¯ãFlatt Security瀟ãæäŸããTakumi Guardã§ããèšå®ãäžã€å ããã ãã§ãããžã§ã¯ããåç
§ããã¬ãžã¹ããªãåãæ¿ããããããã«ãªã£ãŠãããæè»œã«ãµãã©ã€ãã§ãŒã³å¯Ÿçãå°å
¥ã§ããŸããTakumi Guardã®å¯Ÿå¿ããã±ãŒãžãããŒãžã£ãŒãšããŠuvããã£ããæ¡çšãããŠãããããã«ããuvããšã³ã·ã¹ãã ã®äžã§æšæºçãªäœçœ®ãå ãã€ã€ããããšã衚ããŠãããšæããŸããã shisho.dev uvèªäœã«ããæ¢ç¥ã®è匱æ§ããã«ãŠã§ã¢ãæ€åºããuv auditæ©èœããã¬ãã¥ãŒãšããŠè¿œå ãããŠãããäŸåé¢ä¿ã®ã»ãã¥ãªãã£ãã§ãã¯ãuvã®ã¯ãŒã¯ãããŒã«çµ±åã§ããç¹ã䟿å©ã ãšæããŸããã astral.sh ã»ãã·ã§ã³ã®ã¹ã©ã€ããšè©³ãã解説ã¯ãnikkieãããæ¬äººã® ããã°èšäº ã§ãå
¬éãããŠããŸãã äœè€: Retry Is Not a Strategy: Classifying and Recovering from AI Agent Failures in Python 2026.pycon.jp Cambridge University Press & Assessmentã®AI Centre of Excellenceã§AIãœãããŠã§ã¢éçºããããŠããCyrus Manteããã®çºè¡šã§ããã¯ã©ã€ã¢ã³ãåãã«ãšãŒãžã§ã³ãã®ãã€ãã©ã€ã³ãæ§ç¯ããäžã§ãçç±ã説æã§ããªãå£ãæ¹ã«äœåºŠãééãããã®ã®ã詊ãããã¬ãŒã ã¯ãŒã¯ã¯ã©ããæåããããçŽãã諊ãããããè¿ããŠãããŸããã§ããããã®èª²é¡ãè§£æ¶ããããã«äœã£ãã®ããä»å玹ä»ãããtriage-agentã§ãã ã¿ã€ãã«ã®ãšãããåé¡æèµ·ã¯æå¿«ã§ãããæ®éã®Pythonã®äŸå€åŠçãšéãããšãŒãžã§ã³ãã®å€±æã«ã¯ååããããŸãããäŸå€èªäœã¯é£ãã§ãããã®ã®ãããã¯SDKãããŒã«ã®éœåã§ã€ããååã§ããšãŒãžã§ã³ããäœãééããã®ããŸã§ã¯èªã¿åããŸããã triage-agentã¯ãééã£ãããŒã«ãåŒã¶ãã¹ããŒããåããªããå€éšãµãŒãã¹ãèœã¡ããé»ã£ãŠåããšãããåãç¶ãããšãã£ã倱æã9çš®é¡ã®åãšããŠå®çŸ©ãããšãŒãžã§ã³ããããªã·ãŒã§ã©ããããŠéçšãããã¬ãŒã ã¯ãŒã¯éäŸåã®Pythonã©ã€ãã©ãªã§ããèšé²ãããè»è·¡ããåå ãåé¡ãããã®ãŸãŸå詊è¡ããããã©ã³ãç«ãŠçŽãããã§ãã¯ãã€ã³ããŸã§å·»ãæ»ããããã§ãé§ç®ãªã人éã«ãšã¹ã«ã¬ãŒã·ã§ã³ããããšãã£ãååŸ©ææ®µãžæ¯ãåããŸãã å°å
¥ããæ¢åã®ãšãŒãžã§ã³ããå
ãã ãã§æžã¿ãŸããå®è£
ã¯å
¬éãããŠããŠã pip install triage-agent ã§è©ŠããŸãã github.com ç¹ã«åèã«ãªã£ãã®ã¯ã倱æã«åãäžããããšã§ãæ¬¡ã®æåã现ããéžã¹ãããã«ãªãããšããç¹ã§ãããã²ãšãã¡ã«ãªãã©ã€ãšèšã£ãŠãããã®ãŸãŸããçŽãã°ããã®ããããŒã«ã®èŠçŽããä¿ãã¹ããªã®ãããã§ãã¯ãã€ã³ããŸã§å·»ãæ»ãã¹ããªã®ãã¯ã倱æã®å
容ã«ãã£ãŠå€ãããŸããååããªããã¡ã¯ããããå
šéšã倱æããã®ã§ããäžåºŠãã«æœ°ããŠããŸããäœåºŠããçŽããŠãåããšããã§èœã¡ã倱æãæ®ããŸãã ãã®ååã®ã€ãæ¹ããæ®æ®µæžããŠããäŸå€åŠçã®èãæ¹ããã®ãŸãŸãšãŒãžã§ã³ãã®äžæ®µäžãžæã¡äžãããã®ã«ãªã£ãŠããã®ãäžæããšæããŸãããæ°ããäœæ³ãèŠãçŽãå¿
èŠããããŸããã é¢çœãã®ã¯ããã®åé¡èªäœãã©ãè§£ããã«ãéžæè¢ãçšæãããŠããããšã§ããã«ãŒã«ããŒã¹ã®åé¡åšãšãLLMã䜿ãåé¡åšããã®çµã¿åãããçšæãããŠããŠãçºè¡šã§ã¯LLMã«å€æããã話ãäžå¿ã§ãããåé¡ã¯åçŽãªã¿ã¹ã¯ã«éããŠããã¶ã倱æãã«ããããã¹ãã±ãŒã¹ãèªåã§çšæã§ããŸããQ&Aã§ããCyrusããã¯ãã®çšåºŠã®åé¡ãªã軜éãªã¢ãã«ã§å¯Ÿå¿ã§ããã ãããšçããŠããŸããã ãŠãŒã¶ãŒã®ä»å
¥ãæžãããŠèªåŸçã«ã¿ã¹ã¯ãé²ãããšãŒãžã§ã³ããäœãããšãããšãäºæãã¬åäœã倱æãã©ãæ±ããã¯é¿ããŠéããŸããã triage-agentã§ã¯ãã©ã®å€±æã«ã©ã®ååŸ©ææ®µãåœãŠãããäœåã§äººéã«äžããããããªã·ãŒãšããŠã³ãŒãäžã«å®£èšã§ããŸãã倱æããšã®å¯ŸåŠãããã³ããã«æžã蟌ãã§LLMã®å€æã«å§ããã®ã§ã¯ãªãã倿ã¯Pythonã®åŽã«çœ®ããŠãå詊è¡ã®ãšãã«å¿
èŠãªãã³ããç¶æ
ã ããåã®ã€ããåœ¢ã§æž¡ãããããä»åŸã®ãšãŒãžã§ã³ãéçºã«æŽ»ããããã ãšæããŠããŸãã ã«ã³ãã¡ã¬ã³ã¹ã®æ§å ãã¡ã€ã³ãã£ããŒã¹ ãã¡ã€ã³ãã£ããŒã¹ã§ã¯ãäŸå¹ŽéãPythonã¯ã€ãºã宿œããŸãããDay1ã»Day2ããããã§å¥ã®åé¡ã»ãããçšæããæ¥å Žè
ã®æ¹ã«ææŠããŠããã ããŸããã Day1å§ãŸããŸãããïŒä»å¹Žãã¯ã€ãºãæºåããŠãŸãããã²ããŒã¹ã«ãç«ã¡å¯ããã ããð«¶ #PyConJP2026 pic.twitter.com/aHg3oZiJ6J — ãããã@Findy DevRel (@iwasakitchen) 2026幎8æ21æ¥ äŸãã°ã次ã®ãããªåºé¡æãçšæããŸããã t = ([ 1 , 2 ], [ 3 ]) t[ 0 ] += [ 99 ] print (t) ãã®ã³ãŒããå®è¡ãããšäœãèµ·ããã§ããããïŒ A: TypeError ãçºçãã t 㯠([1, 2], [3]) ã®ãŸãŸå€åããªã B: TypeError ãçºçãããã t 㯠([1, 2, 99], [3]) ã«å€åããŠãã C: äŸå€ã¯çºçããã ([1, 2, 99], [3]) ãšåºåããã D: AttributeError ãçºçãã æ£è§£ã¯Bã§ããã¿ãã«ã®èŠçŽ ã§ãããªã¹ãã«å¯ŸããŠè€å代å
¥ += ãè¡ããšã©ããªãããåãåé¡ã§ã次ã®2段éã®åŠçã«æ°ã¥ãããããã€ã³ãã«ãªã£ãŠããŸãã t[0] += [99] ã¯ãŸããªã¹ãã® __iadd__ ãåŒã³åºãããªã¹ãèªäœããã®å Žã§ [1, 2, 99] ã«æžãæãã ç¶ããŠã¿ãã«ã®èŠçŽ ãžä»£å
¥ãçŽãããšããããã¿ãã«ã¯ã€ãã¥ãŒã¿ãã«ãªã®ã§ TypeError ãçºçãã ã€ãŸããäŸå€ãçºçããæç¹ã§ãã§ã«ãªã¹ãã®äžèº«ã¯æžãæãã£ãŠããããã t 㯠([1, 2, 99], [3]) ã®ãŸãŸæ®ããŸãã ãé£ããããšãã声ãå€ãããã ãããã¡ã€ã³ãã£ã®DevRelã¡ã³ããŒãå®éã«ææŠããææ³ãXã«æçš¿ããŠãããŸããã å»å¹Žã«åŒãç¶ãããã PyCon JP 2026ãPythonã®é人ãç®æããïŒãDAY1ã§ 1/3åæ£è§£ïŒ ç§°å·ã¯ãPythonèŠç¿ãïŒPython ApprenticeïŒãã§ããð #PyConJP2026 #PyConQuiz #pycon_findy https://t.co/41AVR7eIAD — åå·é
士@DevRel (@OnigiriMa_shi) 2026幎8æ21æ¥ ããŒã¹ã«æ¥ãŠããã ããæ¹ã
ããããšãããããŸããïŒ ãªãã£ã·ã£ã«ããŒãã£ãŒ Day1ã®å€ã«ã¯ãªãã£ã·ã£ã«ããŒãã£ãŒãéå¬ãããPyCon JPéå¶ããããŒã«ããã¬ãŒã³ãããã ããŸãããã«ã³ãã¡ã¬ã³ã¹åæ¥ã§ç²ããäœã«æã¿æž¡ãçŸå³ããã§ããïŒ ãªãã£ã·ã£ã«ããŒãã£ãŒã§ã¯ãPyCon JP 2026ãªãªãžãã«ããŒã«ããçšæããŠããŸãðº ãœããããªã³ã¯ãåãæããŠããŸãã𥀠#pyconjp2026 pic.twitter.com/w49Lz4W5WS — PyCon JP (@pyconjapan) 2026幎8æ21æ¥ ç«é£åœ¢åŒã ã£ãããšãããã忥ã«LTããããæ¹ãä»ã®åå è
ã®æ¹ã
ãšããããã話ãããããšãã§ããŸãããäžã«ã¯ããã¡ã€ã³ãã£ã®ã€ãã³ãèŠãŠããŸãïŒããšå£°ããããŠãã ããæ¹ãããŠããšãŠããããããæããŸããã Open Spaceã§ã®ããªãŒããŒã¯ Open Spaceã¯ãåå è
ãèªç±ã«ããŒããç«ãŠãŠéãŸãè°è«ã§ããæéã§ããDay1ã«ãPythonã䜿ã£ãã¡ãã£ãšããæ¹åã®ã¢ã€ãã¢ããã¿ã«ã€ããŠè©±ãããããšããããŒããæçš¿ããè©±ãæ©äŒãããã ããŸããã éãŸã£ãã®ã¯å°äººæ°ã§ãããããã®åãäºãã®åæãããåãããªããæ·±ãè°è«ãã§ããŸããã話é¡ã¯æšä»ã®AI掻çšãããæ¥ã
ã®åãæ¹ã®è©±ãŸã§å€å²ã«ããããPythonã䜿ã£ãæ¥åæ¹åãšããããŒããèµ·ç¹ã«å¹
åºãèŠç¹ã§æèŠäº€æãã§ããã®ãå°è±¡çã§ããã ããŒã¹ãã»ãã·ã§ã³åŸãªã©ã¯ã©ãããŠãé¢é£ãã話é¡ã®äŒè©±ãäžå¿ã«ãªããŸãããããããããªãŒããŒãã§åå è
å士ã亀æµã§ããå ŽãèšèšãããŠããã®ã¯ãšãŠãè¯ããšæããŸããã ã奜ã¿ããŒã¯ ã奜ã¿ããŒã¯ ã¯ãåºå³¶ã®ã奜ã¿çŒãæåã«ã¡ãªãã§åä»ããããã©ã€ããã³ã°ããŒã¯äŒç»ã§ããäºå審æ»ã¯ãªããçŸå°åå è
ã§ããã°èª°ã§ãåœæ¥ã«çºè¡šãå¿åã§ããå®éã«ç»å£ãããã¯çŸå°åå è
ã®æç¥šã§æ±ºãŸããŸãã忥3ã5æ¬ã1æ¬ããã5åéãšããæ ã®äžã§çºè¡šããŸãã ä»åããã®ã奜ã¿ããŒã¯ã®æ ã§ã500ååŒ±èŠæš¡ã®çµç¹ã®Pythonãããžã§ã¯ã(dbt)ãã©ã管çãããïŒããšããããŒãã§çºè¡šããæ©äŒãããã ããŸããã çµç¹ãäºæ¥ãæé·ããäžãåããŒã ãç¬ç«ããŠdbtãªããžããªãæ§ç¯ããçµæããªããžããªããšã«Pythonã®ããŒãžã§ã³ãã«ãŒã«ããã©ãã©ã«ãªããããŒãžã§ã³ã¢ãããã»ãã¥ãªãã£å¯Ÿå¿ã®ã³ã¹ããç·åœ¢ã«å¢ããŠãããšãã課é¡ã玹ä»ããŸããã ãã®è§£æ±ºçãšããŠãå
±éèšå®ãªããžããªãèšèšãããã¿ãŒã³ãææ¡ããŸããã pyproject.toml ã uv.lock ããµãã¢ãžã¥ãŒã«åããŠéçŽããSQLã®lintã«ãŒã«ïŒ .sqlfluff ïŒãäžå
管çããäžã§ãTaskfileã§æäœã€ã³ã¿ãŒãã§ãŒã¹ãæœè±¡åããæ§æã§ãã å€ãããªãèŠçŽ ã§ããç°å¢ãèŠçŽãéšååããããšã§ãåããŒã ãå€ããèŠçŽ ã§ããããžãã¹ããžãã¯ã«éäžã§ããäœå¶ãäœãããšã®éèŠæ§ãäŒããŸããã ãŸãšã PyCon JP 2026ã§ã¯ãã»ãã·ã§ã³ãéããŠPythonã®ãšã³ã·ã¹ãã ãAIãšãŒãžã§ã³ãéçºã®ææ°ååãåŠã¹ãã ãã§ãªããDrinkupããªãã£ã·ã£ã«ããŒãã£ãŒãOpen Spaceãã奜ã¿ããŒã¯ãšãã£ã亀æµã®å ŽãéããŠãåŠçãã瀟äŒäººãŸã§å¹
åºãåå è
ã®æ¹ã
ãšçŽæ¥ã話ãããæ©äŒã«ãæµãŸããŸããã ããŒã¹ã§ã®Pythonã¯ã€ãºã§ã¯ãé£ããããšãã声ãå€ãããã ããŸãããããã®åPythonã®ä»æ§ãæ¹ããŠèŠã€ãçŽããã£ããã«ãªã£ãã®ã§ã¯ãªãããšæããŸããåºå³¶ã§ã®éå¬ãšããããšãããããã¡ã€ã³ãã£ã®èªç¥åºŠã«ã¯ãŸã 䌞ã³ããããããšæããäžæ¹ããã€ãã³ããã€ãèŠãŠããŸãããšå£°ããããŠãã ããæ¹ãããŠããããŸã§ã®çºä¿¡æŽ»åãçå®ã«å±ããŠããããšã宿ã§ããŸããããã¡ã€ã³ãã£äž»å¬ã®DrinkupãããŒã¹ãžéã³ã«æ¥ãŠããã ããæ¹ã
ãæ¬åœã«ããããšãããããŸããã ä»å玹ä»ãã以å€ã®ã»ãã·ã§ã³ã§ããAIãšãã£ããã«ã©ãéçºããããAIãæ©èœã«ã©ãçµã¿èŸŒããã«ã€ããŠãç»å£è
ããããã®å·¥å€«ãç¥ãããšãã§ããŸãããèªåãã¡ã®èå³ã®ç¯å²ã«åèŽããŠããé¢ããããŸãããLLMã䜿ã£ãŠäœãããããããããããããããã¯ããçµç¹ãšããŠã©ãè©äŸ¡ããã©ãå¶åŸ¡ããããšãã話ãå€ãå°è±¡ã«æ®ããåŠã³ã®å€ã2æ¥éã«ãªããŸãããããã±ãŒãžç®¡çã®ç§»è¡ãAIãšãŒãžã§ã³ãã®å€±æãžã®åãåãæ¹ã¯ããã¡ã€ã³ãã£ãè€æ°ã®Pythonãããžã§ã¯ããéçšããAIãšãŒãžã§ã³ããæŽ»çšãããããã¯ãéçºãé²ããäžã§ãããã®ãŸãŸè°è«ã®ææã«ã§ããå
容ã ãšæããŠããŸãã ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã§ããªã³ã·ãã«ãšã³ãžãã¢ãããŠããæžç°ã§ãã éçºæ¥åãã®ãã®ã®AI掻çšãé²ãã«ã€ããŠã次ã«å¹ããŠããã®ãéçºä»¥å€ã®ä»äºããããããã€ã«ã®å¯Ÿå¿ã§ããããªãã§ãæéãåãããã¡ãªã®ãåãåãã調æ»ã§ããã ããã§ããã®åãåãã調æ»ãAIã«ä»»ããããšã«ããŸãããSlackããæããããåãåããã«å¯ŸããŠèª¿æ»ãããŠåçãè¿ããšãŒãžã§ã³ããäœããAnthropicã®Managed Agentsã䜿ã£ãŠãåãåãããæ¥ããšãã ãèµ·åããä»çµã¿ã«ããŠããŸãã platform.claude.com ãã®èšäºã§ã¯ããã®å
šäœæ§æãšä»çµã¿ã玹ä»ããŸãã Managed Agentsãšã¯ Managed Agentsã®æ§æèŠçŽ å
šäœã®æµã GitHub Actions Sessions API Managed Agent Agentã®ç®¡çãã¹ãã«ã«å¯ãã diff apply ãŸãšã Managed Agentsãšã¯ Anthropicã«ã¯ãClaudeãäœ¿ãæ¹æ³ã2ã€ãããŸããã²ãšã€ã¯Messages APIã§ãã¢ãã«ãçŽæ¥åŒã³åºããŠããšãŒãžã§ã³ãã®ã«ãŒããéå
·ç«ãŠãèªåã§çµã¿ãŸããããã²ãšã€ãManaged Agentsã§ããã®ã«ãŒããšå®è¡åºç€ãAnthropicåŽã«é ãã圢ã§ãã é ããããç¯å²ã¯åºãããšãŒãžã§ã³ãã®ã«ãŒããããŒã«ã®å®è¡ããããåããµã³ãããã¯ã¹ãŸã§å«ãŸããŸãããµã³ãããã¯ã¹ã®äžã§ã¯ãã¡ã€ã«ã®èªã¿æžããã·ã§ã«ã³ãã³ãã®å®è¡ãwebæ€çŽ¢ãã³ãŒãã®å®è¡ãã§ããŸããå®è¡ç°å¢ã¯AnthropicåŽã®ã¯ã©ãŠããšèªåã®ã€ã³ãã©ã®ã©ã¡ãããéžã¹ãŸããé·ã察話ã§ã®ããã³ãããã£ãã·ã¥ãæèã®å§çž®ãçµã¿èŸŒã¿ã§å¹ããŸãã å¢çãå³ã«ãããšãããããåããæ¹ã§ãã flowchart TD client["èªåãã¡ã®ã¢ããªã±ãŒã·ã§ã³<br/>ïŒä»åã¯GitHub ActionsïŒ"] subgraph anthropic["Anthropicã管çããã€ã³ãã©"] loop["ãšãŒãžã§ã³ãã«ãŒã<br/>Claudeã®æšè«ãšããŒã«åŒã³åºã"] sandbox["ãµã³ãããã¯ã¹<br/>ãã¡ã€ã«ã»ã·ã§ã«ã»ã³ãŒãå®è¡"] end mcp["MCPãµãŒããŒ<br/>GitHub / Slack"] client -->|"Sessions APIã§ã»ãã·ã§ã³ãäœæ"| loop loop -->|"ããŒã«ãå®è¡"| sandbox loop -->|"ããŒã«ãåŒã³åºã"| mcp ãã¡ãåŽã«æ®ãã®ã¯ãAPIãå©ãã³ãŒãã ãã§ãããšãŒãžã§ã³ãã®ã«ãŒãããµã³ãããã¯ã¹ãAnthropicã管çããŠããç°å¢ã§åãã®ã§ãã³ã³ãããç«ãŠãããšããå®è¡ç°å¢ãä¿å®ããããšããããŸããã ããã²ãšã€ã®ç¹åŸŽã¯ã察話ã ã»ãã·ã§ã³ ãšããåäœã§ç¶æ
ãæã€ããšã§ããã»ãã·ã§ã³ã¯äœãããããšé·ãçãç¶ããéäžã§æ¢ãŸã£ãŠãåéã§ããäŒè©±ã®å±¥æŽããµã³ãããã¯ã¹ã®ç¶æ
ãAnthropicåŽã«æ®ããŸããæ°åããæ°æéããããããªä»äºãããªã¯ãšã¹ããæãããçµæãåŸ
ããªãéåæã®äœ¿ãæ¹ã«åããŠããŸãã ä»åã®åãåãã調æ»ãšãŒãžã§ã³ãã䜿ã£ãŠããã®ã¯ããã®ãã¡ã»ãã·ã§ã³ã®éšåã§ãããµã³ãããã¯ã¹ã®éå
·ç«ãŠã¯ã»ãšãã©äœ¿ãããæå¹ã«ããŠããã®ã¯GitHubãšSlackã®MCPããŒã«ã ãã§ã調æ»ãåçã®æçš¿ããããéããŸããGitHub Actionsããã»ãã·ã§ã³ã1ã€äœã£ãŠçµããããšããæ§æã«ã§ããŸããã æŽçãããšãAgentã¯Anthropicã管çããã¯ã©ãŠãç°å¢ã§åãããã¡ãã¯å¿
èŠã«ãªã£ããšãã«ã»ãã·ã§ã³ã1ã€äœãã ãã§æžã¿ãŸããåãåãããæ¥ãŠããªãæéã«åãç¶ããããã»ã¹ãã³ã³ããããããŸãããèªåã§åžžæçšŒåã®å®è¡åºç€ãçšæããŠåãããšãããããšãããšãåŸ
ã£ãŠããã ãã®æéã«ãè²»çšãããããŸããããã®åãèŠããªããªããŸãããã€æ¥ãããããããæ¥ããšãã ãæ°ååãã°ããä»äºãšã¯çžæ§ã®ãã圢ã§ãã 調æ»ã§ããç¯å²ã¯ãã€ãªãã MCPãµãŒããŒã§æ±ºãŸããŸããä»åã€ãªãã ã®ã¯GitHubãªã®ã§ãã³ãŒããIssueãPull Requestã«çããããåãåããã察象ã§ããSlackãNotionãããŒã¿ããŒã¹ç³»ã®MCPãè¶³ãã°ãéå»ã®ãããšãã瀟å
ããã¥ã¡ã³ããå®ããŒã¿ãŸã§æ¢çŽ¢å
ãåºããããŸãã Managed Agentsã®æ§æèŠçŽ Managed Agentsã§ã¯ããšãŒãžã§ã³ãã®å®çŸ©ãšå®è¡ç°å¢ãšè³æ Œæ
å ±ãå¥ã®ãªãœãŒã¹ã«åãããŠããŸãã ãªãœãŒã¹ åœ¹å² Agent system promptãã¢ãã«ã䜿ãMCPãµãŒããŒãšããŒã«ã®å®çŸ© Environment ãšãŒãžã§ã³ããåãå®è¡ç°å¢ïŒãããã¯ãŒã¯èšå®ãªã©ïŒ Vault MCPãµãŒããŒã䜿ãè³æ Œæ
å ±ïŒGitHubã®ããŒã¯ã³ãSlackã®ããŒã¯ã³ïŒ EnvironmentãšVaultã¯çµç¹ã§ã²ãšçµã ãäœããAgentã¯èª¿æ»å¯Ÿè±¡ã®ã·ã¹ãã ããšã«ã²ãšã€äœããŸããã»ãã·ã§ã³ãäœããšãã«ããã®3ã€ã®IDãæå®ãã圢ã§ãã å
šäœã®æµã å©çšè
ããèŠãåãã¯åçŽã§ããSlackã®ã¯ãŒã¯ãããŒã§åãåãããéããšãGitHub Issueã1ä»¶äœããããã®Issueã«ãšãŒãžã§ã³ããåçãã³ã¡ã³ãããŸããSlackã®ã¹ã¬ããã«ãèŠçŽãè¿ãã®ã§ãå©çšè
ã¯Slackããé¢ããã«æžã¿ãŸãã è£åŽã§ã¯ãGitHub Actionsã»Sessions APIã»Managed Agentã®3ã€ãé çªã«ããã³ãæž¡ããŠããŸãã sequenceDiagram participant User as å©çšè
participant Slack as Slack participant Issue as GitHub Issue participant Actions as GitHub Actions participant Agent as Managed Agent participant MCP as GitHub MCP User->>Slack: åãåãããéã Slack->>Issue: åãåããIssueãäœæ Issue->>Actions: issues.opened Actions->>Actions: ã©ãã«ãæ€èšŒ Actions->>Agent: POST /v1/sessions Agent->>MCP: 察象Issueãèªã Agent->>MCP: å®çŸ©ã«æžããããªããžããªãèª¿æ» Agent->>Issue: åºå
žä»ãåçãã³ã¡ã³ã Agent-->>Slack: çµè«ã®èŠçŽãéç¥ Slack-->>User: ã¹ã¬ããã§åãåã Slackã¯ä»»æã®å
¥å£ã§ããGitHubäžã§çŽæ¥Issueãç«ãŠãå Žåã§ããã©ãã«ãä»ããŠããã°åãããã«èª¿æ»ãèµ°ããŸãã調æ»ç¯å²ã¯Agentã®å®çŸ©ã«æžãããªããžããªã«éå®ããŠããŠãç¯å²å€ã®è³ªåã«ã¯æšæž¬ã§çãããæ
åœç¯å²å€ã§ããæšãè¿ããŸãã GitHub Actions GitHub Actionsãããã®ã¯2ã€ã ãã§ããã²ãšã€ã¯ãèµ·åããŠããåãåãããã©ããã®å€å®ãããã²ãšã€ã¯ãManaged Agentã®ã»ãã·ã§ã³ãäœãAPIãåŒã¶ããšã§ãã è£ãè¿ããšããã以å€ã¯äœãããŸãããAIã¯åãããŸããããIssueæ¬æãèªã¿ãŸããããªããžããªã®ãã§ãã¯ã¢ãŠãããããã»ãã·ã§ã³ãäœã£ãããšã®çµéãèŠã«ããããšããããŸãããåãåããå
å®¹ã®ææ¡ãã調æ»ããåçã®æçš¿ãAgentåŽã®ä»äºã§ãã¯ãŒã¯ãããŒã¯ããã«äžåé¢äžããªããšãã圹å²åæ
ã§ãã å
šæãèŒããŸãã name : Inquiry Research Trigger on : issues : types : [ opened ] workflow_dispatch : inputs : issue_number : description : 'Issueçªå·ãæåå®è¡ã§åŠçããå Žåã«æå®' required : true type : string concurrency : # åäžIssueãžã®å€éèµ·åãé²ããPOSTäžã«ãã£ã³ã»ã«ããããšéä¿¡ã®æåŠã # ããããªããªããã cancel-in-progress 㯠falseïŒåŸç¶ã¯ãã¥ãŒãããïŒ group : inquiry-research-trigger-${{ github.event.issue.number || github.event.inputs.issue_number }} cancel-in-progress : false env : ANTHROPIC_API_VERSION : '2023-06-01' ANTHROPIC_BETA : 'managed-agents-2026-04-01' ANTHROPIC_SESSIONS_API_URL : 'https://api.anthropic.com/v1/sessions' TRIGGER_LABEL : 'inquiry-request' jobs : trigger : name : Trigger inquiry research session # job-level if ã§ã¯ env ã³ã³ããã¹ãã䜿ããªããããã©ãã«åã¯çŽæžã if : >- github.event_name == 'workflow_dispatch' || contains(github.event.issue.labels.*.name, 'inquiry-request' ) runs-on : ubuntu-latest timeout-minutes : 10 permissions : issues : write # 倱æéç¥ã®ã³ã¡ã³ãã ãã«äœ¿ããcheckoutããªãã®ã§ contents ã¯äžèŠ steps : # github.event.* 㯠env çµç±ã§åãåããã·ã§ã«ã«çŽæ¥å±éããªã - name : Guard (validate issue number) id : guard env : EVENT_NAME : ${{ github.event_name }} EVENT_ISSUE_NUMBER : ${{ github.event.issue.number }} INPUT_ISSUE_NUMBER : ${{ github.event.inputs.issue_number }} run : | set -euo pipefail if [ "$EVENT_NAME" = "workflow_dispatch" ] ; then ISSUE_NUMBER="$INPUT_ISSUE_NUMBER" if ! printf '%s' "$ISSUE_NUMBER" | grep -Eq '^[0-9]+$' ; then echo "::error::issue_number must be numeric: '$ISSUE_NUMBER'" exit 1 fi else ISSUE_NUMBER="$EVENT_ISSUE_NUMBER" fi echo "issue_number=$ISSUE_NUMBER" >> "$GITHUB_OUTPUT" # Issueæ¬æã¯èªãŸãªããæž¡ãã®ã¯ãªããžããªåãšIssueçªå·ã ã - name : Build Sessions API payload env : GH_REPOSITORY : ${{ github.repository }} ISSUE_NUMBER : ${{ steps.guard.outputs.issue_number }} AGENT_ID : ${{ secrets.INQUIRY_AGENT_ID }} ENVIRONMENT_ID : ${{ secrets.INQUIRY_ENVIRONMENT_ID }} VAULT_ID : ${{ secrets.INQUIRY_VAULT_ID }} run : | set -euo pipefail MESSAGE_TEXT=$(printf '<inquiry_context>\n <github_repository>%s</github_repository>\n <github_issue_number>%s</github_issue_number>\n</inquiry_context>\n\nãã® Issue ã®åãåããã調æ»ããçµæãåã Issue ã®ã³ã¡ã³ããšããŠæçš¿ããŠãã ããã' \ "$GH_REPOSITORY" "$ISSUE_NUMBER" ) jq -n \ --arg agent "$AGENT_ID" --arg env_id "$ENVIRONMENT_ID" \ --arg vault_id "$VAULT_ID" --arg repo "$GH_REPOSITORY" \ --arg issue_number "$ISSUE_NUMBER" --arg text "$MESSAGE_TEXT" \ '{ agent: $agent, environment_id: $env_id, vault_ids: [$vault_id], metadata: { source: "github_actions", github_repository: $repo, github_issue_number: $issue_number }, initial_events: [ { type: "user.message", content: [{ type: "text", text: $text }] } ] }' > payload.json # fire-and-forget: 2xx ãã©ããã ã確èªããŠçµãã - name : Call Sessions API id : call env : ANTHROPIC_API_KEY : ${{ secrets.ANTHROPIC_API_KEY_INQUIRY_RESEARCH }} run : | set -euo pipefail # `$(curl ... || echo "000")` ãšæžããšãæ¥ç¶å€±ææã« -w ã® "000" ãš # echo ã® "000" ãé£çµãã㊠"000000" ã«ãªãã|| ã¯å€ã«åºãããš STATUS=$(curl -sS --max-time 30 -w '%{http_code}' \ -o response.json -X POST "$ANTHROPIC_SESSIONS_API_URL" \ -H "x-api-key: ${ANTHROPIC_API_KEY}" \ -H "anthropic-version: ${ANTHROPIC_API_VERSION}" \ -H "anthropic-beta: ${ANTHROPIC_BETA}" \ -H "content-type: application/json" \ --data-binary "@payload.json" ) || STATUS="000" echo "http_status=$STATUS" >> "$GITHUB_OUTPUT" if [ "$STATUS" -ge 200 ] && [ "$STATUS" -lt 300 ] ; then echo "Session created (HTTP $STATUS)." else echo "::error::Sessions API call failed (HTTP $STATUS)" # åãåãã®ããã¬ã¹ãã³ã¹æ¬æã¯ãžã§ããã°ã«ã ãæ®ã head -c 2000 response.json exit 1 fi # éç¥ããã®ã¯ Sessions API åŒã³åºãã®å€±æã®ã¿ã # ã»ãã·ã§ã³äœæåŸã®Agentã®åæ¢ã¯ fire-and-forget ã®ããæ€ç¥ããªã - name : Notify on failure if : failure() env : GH_TOKEN : ${{ github.token }} ISSUE_NUMBER : ${{ steps.guard.outputs.issue_number }} HTTP_STATUS : ${{ steps.call.outputs.http_status }} run : | gh issue comment "$ISSUE_NUMBER" --repo "${{ github.repository }}" \ --body "Sessions API åŒã³åºãã«å€±æããŸããïŒHTTP ${HTTP_STATUS}ïŒ" \ || echo "::warning::failed to comment" ã¹ãããã¯4ã€ã§ããIssueçªå·ã確å®ããGuardããã€ããŒããçµã¿ç«ãŠãBuildãã»ãã·ã§ã³äœæã®APIãåŒã¶Callã倱æãããšãã ãåãNotifyãå€å®ãšPOST以å€ã®ããšãããŠããªãã®ã§ãã¯ãŒã¯ãããŒèªäœã¯æ°ç§ã§çµãããŸãã çºç«ã®æ¡ä»¶ã¯ãç¹å®ã®ã©ãã«ãä»ããIssueã«éå®ããŸããã©ãã«ãä»ããŠèµ·ç¥šã§ããã¡ã³ããŒãéãããŠãããªããããã ãã§ãèµ·åæ¡ä»¶ãšããŠæ©èœããŸãããã£ãšçµããããã°ã起祚è
ã®ã¢ã«ãŠã³ããæ¡ä»¶ã«å ããŠãããã§ããããå€å®ã job ã¬ãã«ã® if ã«çœ®ããŠããã®ã¯ãæ¡ä»¶ãæºãããªãåãåããã§runnerãèµ·åãããªãããã§ãã Sessions API å©ãã®ã¯ POST https://api.anthropic.com/v1/sessions ã®1æ¬ã ãã§ãã curl -X POST https://api.anthropic.com/v1/sessions \ -H "x-api-key: ${ANTHROPIC_API_KEY}" \ -H "anthropic-version: 2023-06-01" \ -H "anthropic-beta: managed-agents-2026-04-01" \ -H "content-type: application/json" \ -d '{ "agent": "agent_01ABC...", "environment_id": "env_01ABC...", "vault_ids": ["vlt_01ABC..."], "metadata": { "source": "github_actions", "github_repository": "Findy/example-repository", "github_issue_number": "123" }, "initial_events": [ { "type": "user.message", "content": [ { "type": "text", "text": "<inquiry_context>\n <github_repository>Findy/example-repository</github_repository>\n <github_issue_number>123</github_issue_number>\n</inquiry_context>\n\nãã® Issue ã®åãåããã調æ»ããçµæãåã Issue ã®ã³ã¡ã³ããšããŠæçš¿ããŠãã ããã" } ] } ] }' ããããŒã¯4ã€ã§ãã ããããŒ å€ x-api-key GitHub Secretsã«çœ®ããAnthropicã®APIã㌠anthropic-version 2023-06-01 anthropic-beta managed-agents-2026-04-01 content-type application/json anthropic-version ã¯APIå
šäœã®ããŒãžã§ã³ã§ãManaged Agentsã«éããå
±éã§ããæ³šæãããã®ã¯ anthropic-beta ã®ã»ãã§ãManaged Agentsã¯ããŒã¿ã®ããããã®å€ããªããšãšã³ããã€ã³ãèªäœã䜿ããŸããããªãœãŒã¹ã®IDãæ£ãããŠããªã¯ãšã¹ãã¯éããªãã®ã§ããšã©ãŒãè¿ã£ããšãã«æåã«çãå Žæã§ããããŸãã ããã£ã®ãã©ã¡ãŒã¿ã¯5ã€ã§ãã ãã©ã¡ãŒã¿ å
容 agent èµ·åããAgentã®IDãæååã§æž¡ããšææ°ããŒãžã§ã³ã䜿ããããããŒãžã§ã³ãåºå®ãããå Žåã¯ãªããžã§ã¯ãã§æå®ãã environment_id Agentãåããå®è¡ç°å¢ã®ID vault_ids MCPã®è³æ Œæ
å ±ãå
¥ã£ãVaultã®IDã1ã€ã§ãé
åã§æž¡ã metadata ç£æ»ãšæ€çŽ¢ã®ããã®èå¥åãå®è¡å
ãšå¯Ÿè±¡Issueãå
¥ããŠãã initial_events ã»ãã·ã§ã³éå§æã«éãã€ãã³ããæåã® user.message ãšã㊠<inquiry_context> ãæž¡ã agent ã» environment_id ã» vault_ids ã¯äºåã«äœã£ãŠããããªãœãŒã¹ãæãã ãã§ãã¢ãã«ãsystem promptãããŒã«ã®èšå®ãããã«ã¯åºãŠããŸããããããã¯AgentåŽã«ç»é²æžã¿ã ããã§ããã»ãã·ã§ã³ããšã«å€ããã®ã¯ãã©ã®Issueã«çããããã ãããšãã圢ã«ãªããŸãã vault_ids ã¯æž¡ãå¿ãã«æ³šæãããå Žæã§ããçç¥ããŠãã»ãã·ã§ã³ã®äœæèªäœã¯æåããŸãããGitHub MCPãèªèšŒã§ãããAgentã¯Issueãèªãããšãåçãæçš¿ããããšãã§ããŸããããšã©ãŒã«ãªããªãã¶ãæ°ã¥ãã«ãã倱æã§ãã initial_events ã«å
¥ãã <inquiry_context> ã®äžèº«ã¯ããªããžããªåãšIssueçªå·ã®2ã€ã ãã§ãã 質åã®äžèº«ã¯å
¥ã£ãŠããŸããã POSTã®ã¬ã¹ãã³ã¹ã2xxãã©ããã ãã確èªããŠããžã§ãã¯çµãããŸããã»ãã·ã§ã³ãäœãããããšã®Agentã®åãã¯ããŒãªã³ã°ããŸããã Managed Agent Agentãåãåãã®ã¯ <inquiry_context> ã ãã§ããã€ãŸãããªããžããªåãšIssueçªå·ã®2ã€ãäœããã圹å²ãªã®ããã©ãã調ã¹ãŠããã®ããã©ãçããã¹ããã¯ããã¹ãŠAgentã®å®çŸ©ã«ç»é²æžã¿ã®system promptã«æžããŠãããŸããã»ãã·ã§ã³ã®ãã³ã«éããã®ã§ã¯ãããŸããã ã»ãã·ã§ã³ãäœããããšããã®å®çŸ©ã§Agentãèµ·åããŸããVaultã«å
¥ããŠãããè³æ Œæ
å ±ã§GitHub MCPã«æ¥ç¶ãããAgentã¯æ¬¡ã®é çªã§åããŸãã <inquiry_context> ãæãIssueãèªã¿ãæ¬æãšæ¢åã³ã¡ã³ããã質åå
å®¹ãææ¡ãã å®çŸ©ã«æžããããªããžããªã調æ»ãã 質åã®äžèº«ãç¥ããšãããããAgentã®ä»äºããšããã®ããã®æ§æã®èŠã§ããã¯ãŒã¯ãããŒã¯ãã©ã®Issueã«çããããããæž¡ããŠããªãã®ã§ãäœãèãããŠããã®ãã¯Agentèªèº«ãIssueãèªãã§å€æããŸãã 調æ»ã®ä»æ¹ã決ããŠããŸããæ€çŽ¢çµæã®ã¿ã€ãã«ãèŠçŽã ãã§å€æãããå®éã®ã³ãŒããIssueæ¬æãPull Requestã®diffãšãã£ãäžæ¬¡æ
å ±ã«å°éãããŸã§æãäžããŸããç¯å²å€ã®è³ªåã«ã¯æšæž¬ã§çãããæ
åœç¯å²å€ã§ããæšãè¿ããŸãã 調æ»ãçµãããšããã®çµæãåãåããçšã®Issueã«ã³ã¡ã³ããšããŠæçš¿ããŸãã Issueæ¬æã«Slackã®å®å
æ
å ±ãå
¥ã£ãŠããã°ãã¹ã¬ããã«ãèŠçŽãè¿ããŸããè¿ãã®ã¯çµè«ã®èŠçŽãšIssueãžã®ãªã³ã¯ã ãã§ãåçã®å
šæã¯è»¢èšããŸãããGitHubäžã§çŽæ¥èµ·ç¥šãããåãåããã®ããã«å®å
æ
å ±ããªãå Žåã¯ãSlackãžã®éç¥ãè¡ããIssueã³ã¡ã³ãã ãã§å®äºããŸãã Agentã®ç®¡çãã¹ãã«ã«å¯ãã Agentã®å®çŸ©ã¯ãäžåºŠäœã£ãŠçµããã§ã¯ãããŸããã調æ»å¯Ÿè±¡ã®ãªããžããªãå¢ããã°æžãæããŸãããsystem promptãçŽãããšããããŸãã調æ»å¯Ÿè±¡ã®ã·ã¹ãã ããšã«Agentãããã®ã§ã察象ãå¢ããã»ã©è§Šãåæ°ãè§Šã人ãå¢ããŸãã ããã§ãèãæ¹ãIaCã«å¯ããŸãããAgentã®å®çŸ©ã¯ãã¡ã€ã«ãšããŠãªããžããªã«çœ®ããŠããããã¡ããæ£ãšããŸããAnthropicåŽã®ç¶æ
ãçŽæ¥ãããã®ã§ã¯ãªãããã¡ã€ã«ãæžãæããŠããå·®åã確ãããæ¿èªããŠåæ ãããTerraformãè§Šã£ãããšãããã°ããã®ãŸãŸéŠŽæãæµãã ãšæããŸãã ãã®äžé£ã®æäœãClaude Codeã®ã¹ãã«ã«ãŸãšããåŒæ°ã§åãæ¿ããããããã«ããŸãããå·®åãèŠã diff ãšãåæ ãã apply ã®2ã€ã§ãã å®çŸ©ããªããžããªã«çœ®ããããšã§ãAgentã®èšå®å€æŽãæ®éã®Pull Requestã«ãªããŸããã誰ããã€äœãå€ãããã¯ã³ãããå±¥æŽã«æ®ããŸããã調æ»ç¯å²ãåºãããããªå€æŽã¯ã¬ãã¥ãŒãéããŸãã 察象ã®ãªããžããªã«Agentã®å®çŸ©ãã¡ã€ã«ã眮ããŠãã¹ãã«ãå®è¡ããŸããå®çŸ©ã¯ãããã圢ã§ãã { " name ": " example-agent ", " description ": " GitHub Issueã«èµ·ç¥šãããåãåããã調æ»ããåºå
žURLä»ãã®åçãåãIssueã®ã³ã¡ã³ããšããŠæçš¿ããAgent ", " model ": " claude-sonnet-5 ", " mcp_servers ": [ { " name ": " github ", " type ": " url ", " url ": " https://api.githubcopilot.com/mcp/ " } , { " name ": " slack ", " type ": " url ", " url ": " https://mcp.slack.com/mcp " } ] , " tools ": [ { " type ": " mcp_toolset ", " mcp_server_name ": " github ", " default_config ": { " permission_policy ": { " type ": " always_allow " } , " enabled ": false } , " configs ": [ { " name ": " issue_read ", " enabled ": true } , { " name ": " search_code ", " enabled ": true } , { " name ": " add_issue_comment ", " enabled ": true } ] } , { " type ": " mcp_toolset ", " mcp_server_name ": " slack ", " default_config ": { " permission_policy ": { " type ": " always_allow " } } } ] , " system ": " ããªãã¯Findy瀟å
ã®åãåãã調æ»ãšãŒãžã§ã³ãã§ããâŠâŠ \n\n ## 調æ»å¯Ÿè±¡ãªããžããªïŒãã®ç¯å²ã«éå®ïŒ \n\n - Findy/example-system-repo \n " } diff æåã«åæã確èªããŸããå®çŸ©ã®ããšã«ãªããã¡ã€ã«ããããã ant ïŒAnthropicå
¬åŒã®CLIïŒãå
¥ã£ãŠããããèªèšŒã¯éã£ãŠãããããããŸã§Anthropicãžã®éä¿¡ã¯çºçããŸããã platform.claude.com 次ã«ãã¡ã€ã«ãèªãã§Anthropicãžéãåœ¢ã«æŽããéãåã«æ€æ»ããããŸããAgentåãæ±ºããåå空éã«åãŸã£ãŠããããçµã¿èŸŒã¿ã®ããŒã«ã»ãããçŽã蟌ãã§ããªãããMCPãµãŒããŒã®URLãèš±å¯ãªã¹ãã«å
¥ã£ãŠããããã²ãšã€ã§ãåŒã£ãããã°ç°åžžçµäºããã®ã§ãå±ãªãå®çŸ©ã¯ããããå
ãžé²ã¿ãŸããã ãããŸã§éã£ãã GET /v1/agents ã§äžèЧãåããAgentåãšå®å
šäžèŽãããã®ãæ¢ããŸããäžèŽãããã®ãç¡ããã°ããŸã äœãããŠããªããšããããšãªã®ã§æ°èŠäœæã®å¯Ÿè±¡ãšããŠæ±ããŸãã1ä»¶ããã° GET /v1/agents/{id} ã§çŸç©ãåããæå
ã®å®çŸ©ãšçªãåãããŠå·®åãåºããŸãã2件以äžèŠã€ãã£ãå Žåã¯ãã©ã¡ãã察象ã«ãã¹ãã倿ã§ããªãã®ã§äœãããã«äžæããŸãã apply diff ãšåããšãããŸã§é²ãã ããã§ãå·®åãæç€ºããŠæ¿èªãæ±ããŸããæ¿èªãããªããã°äœãæžã蟌ãŸãã«çµãããŸãã æ¿èªãããããæ°èŠãªã POST /v1/agents ã§äœæããæ¢åãªã POST /v1/agents/{id} ã§æŽæ°ããŸããæŽæ°ã«ã¯ååŸãããšãã®ããŒãžã§ã³çªå·ãæž¡ããŸããååŸããŠããæžã蟌ããŸã§ã®éã«ä»ã®äººãæŽæ°ããŠããã°ãããã§å€±æããŸãã æŽæ°ãæåãããšãAgentã¯æ°ããããŒãžã§ã³ãšããŠç»é²ãããŸããæ¢åã®ããŒãžã§ã³ãæžãæããã®ã§ã¯ãªããçã1ã€ç©ãŸãã圢ã§ããåããŠããã»ãã·ã§ã³ã¯äœããããšãã®ããŒãžã§ã³ã®ãŸãŸåãç¶ããã®ã§ãæŽæ°ã®åœ±é¿ãåããã®ã¯æ¬¡ã«äœãããã»ãã·ã§ã³ããã«ãªããŸãã æžã蟌ãã ããšã¯ãçŸç©ãåãçŽããŠæå
ã®å®çŸ©ãšäžèŽããããšãšããã®ååã®Agentãã¡ããã©1ä»¶ã§ããããšã確èªããŸãã ãã®ç¢ºèªãéã£ãŠããæåãšå ±åããŸãã ãŸãšã Managed Agentsã䜿ããšãèªåãã¡ã§åžžæçšŒåã®ã€ã³ãã©ãçšæããããšãªããšãŒãžã§ã³ããåãããŸããå¿
èŠã«ãªã£ããšãã«ã»ãã·ã§ã³ã1ã€äœãã ãã§ããšãŒãžã§ã³ãã®ã«ãŒãããµã³ãããã¯ã¹ãAnthropicã管çããŠããç°å¢ã§åããŸããåŸ
ã£ãŠããã ãã®æéã«è²»çšãããããªãã®ã§ããã€æ¥ããããããªãä»äºãšã¯çžæ§ããã圢ã§ããã Agentã®å®çŸ©ãã工倫次第ã§IaCã®ããã«éçšã§ããŸããå®çŸ©ããªããžããªã®ãã¡ã€ã«ãšããŠæã¡ãå·®åãèŠãŠããé©çšãã圢ã«ããŠããã°ã倿Žã¯Pull RequestãšããŠæ®ããŸããã察象ãå¢ããŠãæé ã¯å€ãããŸããã 瀟å
ã®ãã€ã«ãæžããåãçµã¿ãšããŠããªããªãå
·åã®ãã圢ã«èœã¡çããŸããã䌌ããããªåãåãã察å¿ãæ±ããŠããæ¹ã¯ããã²ç䌌ããŠã¿ãŠãã ããã ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã§ã¢ãã€ã«ãšã³ãžãã¢ãããŠããå è€ã§ãã æè¡ã«ã³ãã¡ã¬ã³ã¹åãã®ã¢ãã€ã«ã¢ããªãFindy EventsãããReact Nativeã§éçºããŠããŸããiOS㯠App Store ãAndroid㯠Google Play ã§å
¬éããŠããŸãã Findy ConferenceããŒã ã§ã¯ãè·çš®ãåããããããã¯ããäœã£ãŠããæ¬äººãã«ã³ãã¡ã¬ã³ã¹ã®äŒå Žã«ç«ã¡ãåå è
ãžã®ãŠãŒã¶ãŒãã¢ãªã³ã°ã宿œããŠããŸããç§ã AI Engineering Summit Tokyo 2026 ã®äŒå Žã«ç«ã£ã1人ã§ãããã®äŒå Žã§ããŒã ãšããŠéãã101人åã®å£°ãããããã²ãŒã·ã§ã³æ§é ã®äœãçŽããšã次ã®ã«ã³ãã¡ã¬ã³ã¹ã§ã®ä»®èª¬æ€èšŒãŸã§äžåšãããŸããã ãã®èšäºã§ã¯ããŠãŒã¶ãŒãã¢ãªã³ã°ãéããŠåŸããã課é¡ãããã©ã仮説ãç«ãŠãŠæ€èšŒããã®ãã«ã€ããŠæžããŸãã ã¢ãŒãã«ã®äžã«ã¿ãããŒã眮ããŠããåœåã®ç»é¢æ§æ 101人ãžã®ãã¢ãªã³ã°ã§èŠã€ãã£ã2ã€ã®çºèŠ èŠãç®ãšæèšãçŽãæ¡ã«æ®ã£ãåŒã£ããã ã¿ãŒã²ãããã«ãœãã®èªèãããŒã ã§æãçŽã Appleã®ã¬ã€ãã©ã€ã³ãèªã¿çŽããŠèŠããæ§æã®åé¡ èµ·åçŽåŸã®ç»é¢ãçŽè¿ã®ã«ã³ãã¡ã¬ã³ã¹ã®ããŒã ã«å€ãã 96人ãžã®åãã¢ãªã³ã°ã®çµæ ãŸãšã ã¢ãŒãã«ã®äžã«ã¿ãããŒã眮ããŠããåœåã®ç»é¢æ§æ Findy Eventsã«ã¯ãåœåããUI/UXã®èª²é¡æããããŸãããããã¯ãæ¬æ¥ãããã¬ãã«ã«çœ®ãã¹ããã¿ãããŒããäžæçãªã¢ãŒãã«ã®äžã«çœ®ããŠããŸã£ãããšã§ãã ã¢ããªãèµ·åãããšãåå äºå®ã®ã«ã³ãã¡ã¬ã³ã¹ã䞊ã¶ãã±ããäžèЧã衚瀺ãããŸããã«ãŒãã®äžã«ã¯ãå
¥å Žãã±ããã衚瀺ããã¿ã³ã䞊ãã§ãããã¿ãããããšå
¥å Žçšã®QRã³ãŒããéããŸããã«ãŒãèªäœãã¿ããããå Žåã¯ã¢ãŒãã«ã§è©³çްç»é¢ãéãããã®ã¢ãŒãã«ã®äžã«ãããŒã ãã¿ã€ã ããŒãã«ãè¡ãæ¥ããã¿ãããŒãé
眮ããŠããŸããã â»æ¬èšäºã«æ²èŒããŠããç»é¢ã¯ãã¹ãŠãã¹ãç°å¢ã®ãã®ã§ãã«ã³ãã¡ã¬ã³ã¹åãæ¥ä»ã¯ãã¹ãããŒã¿ã§ãã ã¿ãã㌠ã¯ãã¢ããªã®ãããã¬ãã«ã®ã»ã¯ã·ã§ã³éãç§»åããããã®ãã®ã§ããäžæ¹ã§ ã¢ãŒãã« ã¯ãä»ã®ç»é¢ã®äžã«äžæçã«éãªããéããã°æ¶ããå±€ã§ãã£ãŠããããã¬ãã«ã®ã»ã¯ã·ã§ã³ã§ã¯ãããŸãããåé ã«æžãã課é¡ã¯ããã®å®çŸ©ã®ãºã¬ã®ããšã§ãã Androidã§åã圹å²ãæ
ã ããã²ãŒã·ã§ã³ã㌠ããã¢ããªã®ç»é¢ããŸããã§äžè²«ããè¡ãå
ã䞊ã¹ããã®ã ãšãããŠããŸããã¢ãŒãã«ã®äžã«ã ãçŸããçœ®ãæ¹ã¯ããã¡ãã®æ¡ä»¶ãæºãããŠããŸããã ãã®æ§æãéžãã çç±ã¯ããŠãŒã¶ãŒãã«ã³ãã¡ã¬ã³ã¹ã«åå ããåãšåœæ¥ãšã§ã欲ããæ
å ±ãç°ãªããšèããŠããããã§ãããåå åã§ããã°ç³ã蟌ãã ã«ã³ãã¡ã¬ã³ã¹ãããããã®ã«ã³ãã¡ã¬ã³ã¹ããåœæ¥ã§ããã°åå ããã«ã³ãã¡ã¬ã³ã¹ã®æ
å ±ã ããèŠãããªãã¯ãã ããšããæ³å®ã§ãã 1stãã¥ãŒã¯ã©ã¡ããäžæ¹ã«ããåããŸãããäž¡ç«ãããããã«åã£ãã®ãããã®èŠèã®æ§æã§ãããã«ã³ãã¡ã¬ã³ã¹åœæ¥ããã±ããäžèЧãã該åœã®ã«ã³ãã¡ã¬ã³ã¹ãã¿ããããã°èŠããæ
å ±ã«ã¯ãã©ãçããŸãããã¢ãŒãã«ã®äžã®æäœã䜿ãå§ããã°æ
£ããã¯ãã ãšèããŠããåŽé¢ããããŸãã ã€ãŸããåçååããå€ããŠããããšã¯çè§£ããäžã§ã代ããã®æ¡ãåºããã«ããŸããããããŠéçºãç¶ãããã¡ã«ãéçºè
ã§ããèªåèªèº«ããã®æäœã«æ
£ããŠããŸããéåæã¯å°ããã€èããŠãããŸããã 101人ãžã®ãã¢ãªã³ã°ã§èŠã€ãã£ã2ã€ã®çºèŠ éåæãèãããŸãŸè¿ããã®ãã2026幎6æ8æ¥ãã9æ¥ã«ãããŠéå¬ãããAI Engineering Summit Tokyo 2026ã§ãããã®äŒå Žã§ãããŒã ã§æåãããŠ101人ã«è©±ãèããŸããã ãã¢ããªãèŠãŠäœ¿ãã«ããã£ãç¹ãããã£ãšããããæ©èœãããã°å¬ãããªã©ããã°æããŠãã ããããšãããªãŒãã³ã¯ãšã¹ãã§ã³ã§ãã¢ãªã³ã°ããŸããããŸã ã¢ããªã䜿ã£ãŠããªãæ¹ã«ã¯æã¡èŸŒãã ãã¢æ©ããæž¡ãããæäœããŠããã ããªããçããŠããã ã圢ã§ãã ãã®è³ªåãçšæããªãããå
å¿æåŸ
ããŠããã®ã¯æ©èœèŠæã§ããããã®æ
å ±ãè¶³ããªããããããç»é¢ã欲ããããšãã£ã声ãéãŸããã®ã ãšèããŠããã®ã§ãã å®éã«å€ãã£ãã®ã¯ãã«ãŒããã¿ãããããšéã詳现ç»é¢ãã¿ã€ã ããŒãã«ã®ååšã«æ°ã¥ãããŠããªãããšãã話ã§ããããã¢æ©ã§èŠãããã®ã¯ãäžèЧãçºãããäžäžã«ã¹ã¯ããŒã«ããããå
¥å Žãã±ããã衚瀺ãããQRã³ãŒããåºããèšå®ç»é¢ãéãããšãã£ãæäœã§ããã«ãŒããã¿ããããŠã¢ãŒãã«ãéããšããã«ã¯è³ã£ãŠããŸããã§ãããã¢ãŒãã«ã®å
ã§æ¢ã«æäŸããŠããæ
å ±ãããã®ãŸãŸããã£ããå¬ããããšããèŠæãšããŠæããããšããããŸããã ããã²ãšã€ãã¢ãŒãã«ã®ã¿ãããŒã®ãããŒã ãã飿ããæ§åãèŠãããŸããããã®æå³ãå°ãããšããããããŒã ã«æ»ãããããããšã®ããšã§ãããã€ãŸãããã±ããäžèЧç»é¢ãããŒã ãšæããŠããããšããããšã§ããã¢ãŒãã«ãéããå°ç·ã¯å·Šäžã«ãããŸããããéžæè¢ãšããŠèªèãããŠããŸããã§ããããŠãŒã¶ãŒãæãæããŠããåããšå®æ
ã®ãºã¬ã§ãã ãã®2ã€ãããèããŠããéåæãæ¹ããŠçªãã€ããããŸããã䜿ãæ
£ããéçºè
ã«èŠããªããªã£ãŠããã ãã§ãæ§æãã®ãã®ã®åé¡ã¯æ®ã£ãŠããããã§ãã èŠãç®ãšæèšãçŽãæ¡ã«æ®ã£ãåŒã£ããã æåã«åºããçãã¯ãã¢ãŒãã«ã«æ°ã¥ããŠãããããã«ãã±ããäžèЧã®ã«ãŒããã¿ããã§ããèŠãç®ã«å¯ããããšãšãã¿ãããŒã®ãããŒã ããšããé
ç®åã宿
ã«åãããŠé£æããªããããèªå°ããããšã§ãããäŒå Žã§èŠãã2ã€ã®çç¶ã«ãããããæãæã€åœ¢ã§ãã ãã ããã®æ¡ã§ã¯ãã¢ãŒãã«ã®äžã«ã¿ãããŒããããšããæ§æãã®ãã®ã¯å€ãããŸãããæ°ã¥ããŠãããããã©ãããèŠãç®ã®åŒ·ãã«å§ããŠããã ãã§ããªãæ°ã¥ãããªãã£ãã®ãã«ã¯çããããŠããªãããšããåŒã£ããããæ®ããŸããã ã¿ãŒã²ãããã«ãœãã®èªèãããŒã ã§æãçŽã ç«ã¡è¿ã£ãã®ã¯ã誰ã«åããã¢ããªãªã®ããšãããšããã§ããã Findy Eventsãåãåãã®ã¯æè¡ã«ã³ãã¡ã¬ã³ã¹ã®åå è
ã§ãåå ã®é »åºŠã¯å¹Žã«æ°åã§ããååã®å©çšããæ°ã¶æç©ºããç¶æ
ã§èµ·åãããããšãåæã«ãããšãåçååããä¹é¢ããæ§æã¯ãã¢ããªãéããã³ã«ãŠãŒã¶ãŒãžååŠç¿ãæ±ããããšã«ãªããŸããäŒå Žã§èŠããã®ãšåãããšããæ¬¡ã®æ©äŒã«ãèµ·ããå¯èœæ§ããããšããããšã§ãã Appleã®ã¬ã€ãã©ã€ã³ãèªã¿çŽããŠèŠããæ§æã®åé¡ åèã«ããã®ããAppleã® Human Interface Guidelines ã§ããèšèšã®ååãããã€ãæããããŠããããã®ãã¡PurposeãAgencyãFamiliarityã®3ã€ããåœæã®æ§æãèŠçŽãæãããã«ãªããŸããã Purposeã¯ã人ã
ãã©ã䜿ããããã«æ²¿ã£ãŠæãéèŠãªæ©èœãçµã蟌ããšããååã§ããåå åãšåœæ¥ã®äž¡æ¹ã1stãã¥ãŒã§æ±ããããšããŠãããããã©ã¡ãã®å©çšç®çã«ãçŠç¹ãåã£ãŠããŸããã§ããã Agencyã¯ããŠãŒã¶ãŒãäž»å°æš©ãæãŠãããã«ãããšããååã§ãç®ã®åã®ã¿ã¹ã¯ãã³ã³ãã³ãã«çŽæ¥å°ãããšãç¹å®ã®ãããŒãã¢ãŒãã«éã蟌ããªãããšãè¿°ã¹ãããŠããŸãããã±ããäžèЧããæ®µéãèžãæ§æã¯åœæ¥å¿
èŠãªæ
å ±ãžçŽæ¥å°ããŠããããã¢ãŒãã«ãéããå°ç·ãèªèãããªããŸãŸããŒã ã飿ããŠããç¶æ
ã¯ããŠãŒã¶ãŒã®è¡åãäžèªç¶ãªåœ¢ã§éã蟌ããŠããã®ãšå€ãããŸããã Familiarityã¯ã人ã
ãæ¢ã«ç¥ã£ãŠããæŠå¿µã䜿ããšããååã§ããçŸå®äžçãä»ã®ãœãããŠã§ã¢ã§åŸãç¥èãæã¡èŸŒãããšã§ãã€ã³ã¿ãŒãã§ãŒã¹ã¯éŠŽæã¿ãããçŽæçã«ãªããšãããŠããŸããå¹Žã«æ°åã®å©çšãåæã®ã¢ããªã§é Œããã®ã¯ãã¢ããªã®äžã§ç©ã¿äžããåŠç¿ã§ã¯ãªãã人ã
ãæ®æ®µããæ
£ã芪ããã ç¥èãçµéšã®ã»ãã§ããã æåã®æ¡ã«æ®ã£ãŠããåŒã£ãããã®æ£äœã¯ãããã«ãããŸãããåã«è¡šé¢ãæŽããã ãã§ã¯ããã®PurposeãAgencyãFamiliarityã¯ã©ããå€ãããŸãããæ§æãã®ãã®ãèŠçŽãå¿
èŠããããšèããŸããã èµ·åçŽåŸã®ç»é¢ãçŽè¿ã®ã«ã³ãã¡ã¬ã³ã¹ã®ããŒã ã«å€ãã ã¿ãŒã²ãããã«ãœããèžãŸãããšãã¢ããªãèµ·åãããã®ã¯ã«ã³ãã¡ã¬ã³ã¹é嬿¥ã®çŽåããåœæ¥ã§ããå¯èœæ§ãé«ããšèããããŸããããã§ããã°ãåå åœæ¥ã«æ¬²ããæ
å ±ãžçŽæ¥å°ãã®ã劥åœã§ãã代æ¡ãåºããã«ãããåå åãšåœæ¥ã®ã©ã¡ãã«åãããããããã§æ±ºçãã€ããŸããã ããã§ã¢ããªèµ·åæã®1stãã¥ãŒããçŽè¿ã®åå äºå®ã«ã³ãã¡ã¬ã³ã¹ã®ããŒã ç»é¢ã«å€æŽããŸããããããŸã§ã¢ãŒãã«ã®äžã«çœ®ãããŠããç»é¢ãããã®ãŸãŸæåã«è¡šç€ºããã圢ã§ããçµæãšããŠãã¢ãŒãã«ã®äžã«ã¿ãããŒãããæ§æãè§£æ¶ãããŸããã 倿Žåã¯èµ·ååŸã«ãã±ããäžèЧã衚瀺ãããããããå
ã«é²ãå¿
èŠããããŸããã倿ŽåŸã¯ãåœæ¥å¿
èŠã«ãªãæ
å ±ãæåãã衚瀺ãããŸãã ãã¡ãããä»ã«åå äºå®ã®ã«ã³ãã¡ã¬ã³ã¹ã®æ
å ±ãªã©ãžã®å°ç·ã¯æ®ããŠããŸããè¡ãå
ãå¡ãã ããã§ã¯ãªãããããŸã§ã1stãã¥ãŒã§æãå¿
èŠãªæ
å ±ãžå°ãããšãæèããæŽçã«ãªããŸãã ãªãããã®å€æŽã¯Androidã® Principles of navigation ã§ããstart destinationãéžã³çŽããããšã«ããããŸããMaterial Designã«HIGã®3ååãšçŽæ¥å¯Ÿå¿ãããã®ã¯ãããŸããããAndroidã®ããã²ãŒã·ã§ã³ååããå€ãã倿ã§ã¯ãããŸããã§ããã 96人ãžã®åãã¢ãªã³ã°ã®çµæ 1stãã¥ãŒãå€ããããšã§ãæ©èœã®èŠèœãšããããŠãŒã¶ãŒãæãæãåããšå®æ
ã®ãºã¬ãæžãããã¯ãã ããã®ä»®èª¬ãæã£ãŠã2026幎7æ22æ¥ãã23æ¥ã«éå¬ããã AI DevEx Conference 2026 ã®äŒå Žã§ãåããããŒã ã§æåãããŠ96人ã«è©±ãèããŸããã 1åç®ã¯ãç»é¢é·ç§»ã«æ°ã¥ããªãããšããè¶£æšã®å£°ã15件以äžããããã¿ãããŒã®ãããŒã ãã飿ããæ§åãèŠãããŸããã2åç®ã¯ããã®å£°ã¯0ä»¶ã§ã飿ããæ§åãèŠãããŸããã§ããã ãã ããããããã£ãŠå æã®æå®ã¯ã§ããŸãããåäžäººç©ã«èãçŽããããã§ã¯ãªããã«ã³ãã¡ã¬ã³ã¹ãç°ãªãããåå è
ã®å±æ§ãæã£ãŠããªãããã§ããèšããã®ã¯ã101人ãš96人ãšããã»ãŒåèŠæš¡ã®ãã¢ãªã³ã°ã§ã仮説ãåŠå®ããææã¯åºãŠããªãã£ãããšãããšãããŸã§ã§ãã ãŸãšã æ¹ããŠæããã®ã¯ãçŸå Žã«åºãŠçŽæ¥ãŠãŒã¶ãŒã®å£°ãèãããšã®å€§åãã§ãããéåæãã®ãã®ã¯ãããŒã ã®äžã§ãæ°ã¥ããŸãããã ããããæ¬åœã«çŽãã¹ãåé¡ãªã®ããŸã§ã¯ç¢ºä¿¡ãæãŠããæéãšãšãã«èããŠãããŸãããå®éã«äœ¿ã£ãŠããã ãããã®èšèãšæäœã«è§Šããããšã§ãã¯ãããŠç¢ºä¿¡ã«å€ãããŸããã ããããŠäžåšãããçµæããæåžžçã«èµ·åãããã¢ããªã§ã¯ãªãå Žåã»ã©ãåçååã«æºããããšãå¹ããŠããããšããæå¿ããåŸãããšãã§ããŸãããæ¥åžžçã«èµ·åããªãã¢ããªã§ã¯ããŠãŒã¶ãŒãä»ã®ã¢ããªãéããŠæ¢ã«åŠç¿ããŠããäœ¿ãæ¹ããã®ãŸãŸæã¡èŸŒããã°ãèªç¶ã«äœ¿ããã¢ããªã«è¿ã¥ããŸãã äŒå Žã§èããŠçŽããæ¬¡ã®æ©äŒã«ç¢ºãããããã®åœ¢ã§ä»®èª¬ãšæ€èšŒãåããªãããåŒãç¶ãäŒå Žã«ç«ã¡ãèããå£°ãæ¹åã«ã€ãªããŠãããŸãã ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã§ããªã³ã·ãã«ãšã³ãžãã¢ãããŠããæžç°ã§ãã 2026幎8æ5æ¥(æ°Ž)ã«ãFindy AI Meetup in Fukuoka #7ãçŠå²¡ã§éå¬ããŸãããåœæ¥åå ãã ãã£ãã¿ãªããŸãããããšãããããŸããïŒ findy-inc.connpass.com ä»åã®ããŒãã¯ãAIéçºã®"ä»ãŸã§"ãš"ãããã"ãèªãå°œããããã§ãã çããŸã®ç±ããæ¯æŽã®ãé°ã§ãFindy AI Meetup in Fukuokaã¯ä»åã§1åšå¹Žãè¿ããŸãããç¯ç®ãšãªãä»åã¯ãAIéçºã®ãããŸã§ãæ¯ãè¿ãã€ã€ããããããèŠæ®ããå
容ã®ç»å£ãæããŸããã ãã®èšäºã§ã¯ããã¡ã€ã³ãã£ã¡ã³ããŒã«ãã2ã€ã®ç»å£ãæ¯ãè¿ããŸãã Findy AI Meetup in Fukuokaã«ã€ã㊠ãïŒããã³ããšã³ããšã³ãžãã¢ã®ã¯ã€ãã€ã³ãã©ãïŒïŒ ãéçºã¯äžäººã§ããããå§ãŸã£ãæ°èŠãµãŒãã¹ æŠåšã¯ç€Ÿå
ã«æã£ãŠãã 2ã€ã®èª€ç® å€ãã£ãããšãå€ãããªãã£ãããš VibeCodingããAgenticWorkflowãž éããªã£ãã®ã¯éçºå·¥çšã§ã¯ãªãã³ãŒãçæ ã¬ãã«1ãéãäœããâ VibeCodingãšçŸå Žã®èª²é¡ ã¬ãã«2ãæ£ããäœããâ ååããå§ä»»ãž ã¿ãŒããã«ãžã®ååž° â éçºç°å¢ãã®ãã®ãå€ãã£ã é çªãééããªã â åºæ¬ãå
ãAI掻çšã¯åŸ ãŸãšã Findy AI Meetup in Fukuokaã«ã€ã㊠Findy AI Meetupã¯ããã¡ã€ã³ãã£ã®ãšã³ãžãã¢ãäž»å¬ããæè¡ç³»ãªãã©ã€ã³ã€ãã³ãã§ãã çæAIãAIãšãŒãžã§ã³ãã®æŽ»çšãéããéçºçç£æ§ã®åäžãããŒãã«ã瀟å
ã§ã®å®è·µäºäŸã®ç޹ä»ããšã³ãžãã¢å士ã®äº€æµãç®çãšããŠããŸãã çŠå²¡ã§ã®éå¬ã¯ä»åã§7åç®ããããŠ1åšå¹ŽãšãªããŸããããã®1幎ã§AIéçºã®æ¯è²ã¯å€§ããå€ãããŸããããåãéããããšã«åå è
å士ã®äº€æµãæ·±ãŸããçŠå²¡ã®ãšã³ãžãã¢ã³ãã¥ããã£ãšããŠæ ¹ä»ããŠããããšã宿ããŠããŸãã ãïŒããã³ããšã³ããšã³ãžãã¢ã®ã¯ã€ãã€ã³ãã©ãïŒïŒ ãŸãã¯ãããã³ããšã³ãããã¯ãªãŒãã®æ°çŠã«ããç»å£ã§ããããã³ããšã³ããšã³ãžãã¢ãçæAIãšãšãã«å°éå€ã®é åãžè¶å¢ããå®äœéšãã話ãããŸããã speakerdeck.com ãéçºã¯äžäººã§ããããå§ãŸã£ãæ°èŠãµãŒãã¹ ãã£ããã¯ãæ°ãããµãŒãã¹ã®ç«ã¡äžãã§ããããã¡ã€ã³ãã£ã§ã¯çæAIæä»£ã®ãããã¯ããæ¬¡ã
ã«çãŸããŠãããç«ã¡äžãæã®ãããã¯ãã¯å°æ°ç²Ÿéã»ã¹ããŒãéèŠã§è·çš®ã®æ ã«åãããªããã«ãµã€ã¯ã«å¿åãšãªãããšãå€ãã§ãã ãããªäžã§ãæ°èŠãµãŒãã¹éçºãä»»ãããããšã«ãªããŸããããã ãã人å¡ã®ç¢ºä¿ãé£ããããéçºã¯äžäººã§ãããããŸã§ãªããè¯ãã¢ã€ãã¢ããã£ãŠãå°ä»»ã®ã¡ã³ããŒãè¶³ããªããã°è«ŠãããããããŸããã§ããã ããããçæAIæä»£ãªããããå¯èœãããããŸãããããèããŠãããã³ããšã³ãã¯ãã¡ãããããã¯ãšã³ãããããŠå®å
šã«åèŠã®ã€ã³ãã©ïŒAWS/TerraformïŒãŸã§ãå
šéšãäžäººã§æ
åœããããšã«ããŸããã é å å
容 ããã³ããšã³ã æ¬æ¥ã®å°éé å ããã¯ãšã³ã Honoãæ¡çšãããŒãã«èšèšãªã©ã¯å°éã¡ã³ããŒã«ããã¬ãã¥ãŒ ã€ã³ãã©ïŒAWS/TerraformïŒ IAMãVPCãECSãRDSãªã©ãSREããŒã ã«ããã¬ãã¥ãŒ æŠåšã¯ç€Ÿå
ã«æã£ãŠãã ææŠãæ¯ããã®ã¯ãåŒç€ŸSREããŒã ãæŽåããŠãã瀟å
è³ç£ã§ãããTerraformãããã¯ãšã³ãåŽAPIã®ã¹ã¿ãŒã¿ãŒãããã瀟å
æšæºã®æ§æãåå©çšå¯èœãªåœ¢ã«ãŸãšããAWSæ±çšã¢ãžã¥ãŒã«ããããŠç°å¢æ§ç¯ãæå©ããããšãŒãžã§ã³ãã¹ãã«ã§ãã ãããã®ç€Ÿå
è³ç£ã掻çšãã瀟å
ã®äœæ³ã«æ²¿ã£ãããæ¹ã§AIãæžãã人éãã¬ãã¥ãŒããŠå€æãããšããæµãã§éçºãé²ããŸããã çµæãã¢ããªã±ãŒã·ã§ã³ïŒããã³ããšã³ã+ããã¯ãšã³ãïŒã«çŽ1ã¶æãå®å
šã«å°éå€ã®ã€ã³ãã©ã«çŽ1ã¶æãåèšçŽ2ã¶æã§äžäººã§äœãäžããããšãã§ããŸããã 2ã€ã®èª€ç® äžæ¹ã§ããã£ãŠã¿ãŠèŠããŠãã誀ç®ããããŸããã 1ã€ç®ã®èª€ç®ã¯ãæéãã§ãã åœåã¯çæAIã«ããéçºæéã®ççž®ãèŠèŸŒãã§ããŸããããå®éã¯å°éã¡ã³ããŒãSREããŒã ã«ããã¬ãã¥ãŒåŸ
ã¡ããããŠè©Šè¡é¯èª€ã®ãã³ã«çºçããTerraformã®åæ åŸ
ã¡ãäœæ¥æéã®çžåœéšåãå ããŸããããã£ãŒãããã¯ãåŸ
ã€å¿
èŠããããã®ã¯AIã§ã®é«éåãé£ãããAIãå§çž®ããã®ã¯ãããŸã§ã人éãèããæéãã ã£ãã®ã§ãã 2ã€ç®ã®èª€ç®ã¯ãçè§£ãã§ãã èªåã§æžããŠãããšãã¯ãä»çµã¿ãäŸåé¢ä¿ãææ¡ããªããã°ããããæžããªããããäž¡è
ã¯åžžã«ã»ããã§ãçãæ©äŒãããããŸããã§ããããšãããçæAIã«æžããããšãå
å®¹ãææ¡ãããšãæžããŠããŸããŸãããã®ãŸãŸé²ãããšããªãåããããããã¯åããªããããããããã€ã³ãã©ã§ããã¯èŽåœçãšãªãåŸãŸããã ãããããæµ®ããã¯ãã®æéã®äžéšã䜿ã£ãŠãçæAIã®åºåãèªãã§çè§£ããæéã確ä¿ããå¿
èŠããããŸããããŸãã«ãæèã¯å€æ³šã§ããããçè§£ã¯å€æ³šã§ããªããã宿ããçµéšãšãªããŸããã å€ãã£ãããšãå€ãããªãã£ãããš çæAIæä»£ã§ã¯ãçæãããŸã§ã®æææ±ºå®ã³ã¹ããäžãããŸããããããŸã§äººå¡ç¢ºä¿ãããã¯ã«ãªã£ãŠããéšåããçæAIãå®è£
ãæææ±ºå®ã®ã³ã¹ããäžããããšã§ã諊ããªããŠãè¯ããªã£ãã®ã§ãã éã«å€ãããªãã£ãã®ã¯ãæçµçãªè²¬ä»»ãæã€ã®ã¯äººéã ãšããããšã§ããçæAIã®åºåã倿ããããã«ã¯ãçµå±ã®ãšããå®è£
è
èªèº«ãä»çµã¿ãçè§£ããå°éç¥èã身ã«ã€ããªããŠã¯ãããŸããã çæAIã®çºå±ã«ãããè¶å¢ããããç°å¢ã«ãªããŸããããå°éç¥èã®äŸ¡å€ã¯å€ãããŸããããçè§£ã¯å€æ³šã§ããªãããšããäºå®ããã£ãããšé ã«çããåºç€ã倧äºã«ãããšããã®ããã®ææŠããåŸããããã®ã§ããã VibeCodingããAgenticWorkflowãž ç¶ããŠæžç°ããã¯ããã¡ã€ã³ãã£ããã®1å¹Žã§æ©ãã§ããAI掻çšã®å€é·ããVibeCodingããAgenticWorkflowãžããšé¡ããŠã話ãããŸããã speakerdeck.com éããªã£ãã®ã¯éçºå·¥çšã§ã¯ãªãã³ãŒãçæ åºçºç¹ã¯ãAIãå°å
¥ããŠèŠããŠããçŸå®ã§ããAIãé«éåããã®ã¯ãã³ãŒããæžããå·¥çšã ãã§ãã¬ãã¥ãŒãæ€èšŒãšãã£ããæ£ããããã®ç¢ºèªã«æéãããããéçºãããŒå
šäœã®ã¹ã«ãŒãããã¯æšªã°ãã®ãŸãŸã§ãããããã¯äœæã§ã¯ãªããå¯èŠåããæ°å€ã瀺ããäºå®ã§ãã éãã³ãŒããæžããŠããçè§£ããã«çæãããã³ãŒãã¯è³ªãèœã¡ãã¬ãã¥ãŒã§ã®ææãå¢ããçµå±éãã®æ©æµãæ¶ããŠããŸãããã®é£éãæã¡åãããã«ããã¡ã€ã³ãã£ã§ã¯ãæ£ããäœãæ¹ãšæé ããããŒãã¹åããéçºãããŒæ¹é©ã«åãçµã¿ãAI掻çšã¬ãã«ã3段éã«åããŠæ®µéçã«é²ããŠããŸããã ã¬ãã« ããŒã å
容 ã¬ãã«1 éãäœã ã³ãŒãçæã®èªåå ã¬ãã«2 æ£ããäœã ã¢ãäœãå
šäœã®åèšèš ã¬ãã«3 å¿
èŠãªãã®ãäœã ä»é åãžã®è¶å¢ å
ã»ã©ã®æ°çŠã®ç»å£ã¯ããŸãã«ãã®ã¬ãã«3ãä»é åãžã®è¶å¢ããäœçŸããå®äŸã§ããããããã¯ããããžè³ããŸã§ã®ã¬ãã«1ãšã¬ãã«2ã®éã®ãã玹ä»ããŸãã ã¬ãã«1ãéãäœããâ VibeCodingãšçŸå Žã®èª²é¡ ã¬ãã«1ã¯ãVibeCodingã§ã³ãŒããçæããPull requestãäœæããŠã¬ãã¥ãŒäŸé ŒãæãããšãããŸã§ãAIã§èªååãããã§ãŒãºã§ãã ãã ããã®ãã§ãŒãºã§ã¯ãçŸå Žã§æ¬¡ã®ãããªèª²é¡ãèµ·ããŠããŸãããæŽ»çšã¬ãã«ã®å人差ã倧ãããAIåºåã®ååŠå€æãã§ããªããŸãŸçè§£ããã«ã¬ãã¥ãŒäŸé ŒãåºããŠããŸããPull requestã®è³ªãäœäžããŠãªãŒãã¯ã©ã¹ã®ã¬ãã¥ãŒè² æ
ãå¢ããããããŠAIäž»å°ã«ãªã人éåŽã®çè§£ã远ãã€ããªããAIã«äœ¿ãããŠãããç¶æ
ã§ãã ãã®èª²é¡ã«å¯ŸããŠããŸãAIãåç
§ããããã¥ã¡ã³ããã«ãŒã«ãæŽããã¬ãŒãã¬ãŒã«æŽåãè¡ããŸãããREADMEããããžã§ã¯ãããã¥ã¡ã³ãã§åæãéçšã«ãŒã«ãèšè¿°ããAGENT.mdãrulesã§ã³ãŒãèŠçŽã»åœåèŠåã»ãã¹ãæ¹éãAIã«åç
§ãããããããäœæ¥ã¯ã«ã¹ã¿ã ã³ãã³ããšããŠèŠæ Œåãããã¬ãŒãã¬ãŒã«ããã£ãŠåããŠãAIã¯ã䜿ãç©ã«ãªãã³ãŒãããåºããŠãããŸãã ã¬ãã«2ãæ£ããäœããâ ååããå§ä»»ãž ã¬ãã«2ã§ã¯ãæ£ããæ¹æ³ãšæé ãçšæããŠãAgenticWorkflowã«å§ä»»ããŸãã ãã®ãã§ãŒãºã®èª²é¡ã¯ãèŠä»¶ãå®çŸããæé ãAIãã¬ã³ããªãŒã§ã¯ãªãããšã§ãããã¿ã¹ã¯ã®ç²åºŠãæé ãèª°ãæ±ºããŠããããçæAIãžäœãæž¡ãã°ç²ŸåºŠããåãããå±äººåããŠãããã€ãŸããæç¢ºã§ç°¡æœãªã¹ãããæ§é ãAIã«æž¡ããèšèšå³ããå¿
èŠã ã£ãã®ã§ãã ããã§ãAIãåŠçããããåäœãžã®ã¿ã¹ã¯åè§£ãæ§é åãããèšèšå³ã芪åIssueã§è¡šçŸããIssueäœæããããŠAIãšäººéã§ã¬ãã¥ãŒé åãåå²ããã³ãŒãã¬ãã¥ãŒã®åå®çŸ©ã«åãçµã¿ãŸããã人éã¯ã¬ãã¥ãŒã§ãäœãæ¹ãšå®çŸæ¹æ³ãåã£ãŠãããããæ€èšŒããèšèšå³ã«ãã£ãŒãããã¯ãããã¿ã¹ã¯åè§£ã®å質ãããã®ãŸãŸã¢ãŠããããã®åè³ªãæ±ºããŸãã ãã®ã¬ãã«1ããã¬ãã«2ãžã®ç§»è¡ã¯ãAIãšã®é¢ä¿æ§ã®å€åã§ããããŸããç»å£ã§ã¯ãååãããŠæžãVibeCodingãšããå§ä»»ãããŠä»»ããAgenticWorkflowã®éããæ¬¡ã®ããã«æŽçããŸããã èŠ³ç¹ AIãšã®ååïŒã¬ãã«1 VibeCodingïŒ AIãžã®å§ä»»ïŒã¬ãã«2 AgenticWorkflowïŒ é¢ä¿æ§ é£ã§äžŠèµ°ããããŒãã㌠ã¿ã¹ã¯ãä»»ããå®è¡è
人éã®åœ¹å² ãã³ãã«ãæ¡ãé転æ è¡ãå
ãæ±ºããææ®è
AIã®åœ¹å² 婿åžã®ããã²ãŒã¿ãŒ èªèµ°ããå®è¡ãšãŒãžã§ã³ã ä»»ããç²åºŠ 1è¡ã1颿° ã¿ã¹ã¯/PR/ãããŒå
šäœ AgenticWorkflowãšã¯ã人éããŽãŒã«ãšå¶çŽãäžããAIãšãŒãžã§ã³ããèšç»ã»å®è¡ã»èªå·±æ€èšŒãŸã§ãèªåŸçã«é²ããéçºã¹ã¿ã€ã«ã§ãããŽãŒã«æåãèšç»ãšåè§£ãããŒã«äœ¿çšãèªå·±æ€èšŒã«ãŒããšãã4ã€ã®èªåŸæ§ãåããŠããã人éã®ä»äºã¯ææç©ã«å¯Ÿããã¬ãã¥ãŒãžãšç§»ã£ãŠãããŸãã ã¿ãŒããã«ãžã®ååž° â éçºç°å¢ãã®ãã®ãå€ãã£ã AIå§ä»»ã®äžŠåæ§ã¯ãéçºç°å¢ãã®ãã®ãå€ããŸããã2026幎ãããã¡ã€ã³ãã£ã§ã¯ã¡ã€ã³ããŒã«ãIDEããã¿ãŒããã«ãžç§»è¡ããŠããŸãã 1ãŠã€ã³ããŠã§1ã¿ã¹ã¯ãã€é²ããã¹ã¿ã€ã«ãããè€æ°ãŠã€ã³ããŠã»ãã€ã³ã§åæã«AIãžå§ä»»ããã¹ã¿ã€ã«ãžãIDEã®åœ¹å²ã¯ããã¹ãŠã®éçºäœæ¥ãè¡ãå Žæããããåºåã«æž¡ãã³ãŒããªãŒãã£ã³ã°ã§çè§£ãæ·±ãããšããã«äœ¿ããã®ãžãšå€åããŸãããAIã«äžŠåã§ä»»ããåæã«åãããŠãéçºç°å¢ãã䞊åå§ä»»ãããããã®ããžå€ãã£ãŠããŠããã®ã§ãã é çªãééããªã â åºæ¬ãå
ãAI掻çšã¯åŸ æåŸã«åŒ·èª¿ããã®ã¯ãé çªãééããªãããšã§ããåå°ã匱ããšãã¬ãŒãã¬ãŒã«ãAIãææãåºããŸããã çµ±äžèŠçŽã»åå®çŸ©ã»ãã¹ãã³ãŒããšãã£ãã³ãŒãå質ããŸãå
å®ãããPull requestã®ç²åºŠãã¬ãã¥ãŒæåãšãã£ãéçºæåãè²ãŠãããã®äžã§ã¬ãŒãã¬ãŒã«ã»ããŒãã¹ãæŽåããæåŸã«AI SkillãPluginãæšªå±éããŠçµç¹å
šäœã§AI掻çšãå éããããåºæ¬ãåºãŸã£ãŠããAI掻çšãèŒããããã®é çªãéèŠã§ãã AIæä»£ã®æ¬äžžã¯ãéãäœããã§ã¯ãªãããæ£ããäœãããå¿
èŠãªãã®ãäœãããžã®æ®µéçãªè¶å¢ã§ãã人éã®åœ¹å²ã¯ã³ãŒãã®èªã¿æžããããäœãã©ãäœããã®å€æãžãšäžæµã«ç§»ã£ãŠãããŸããããã§ããããã¹ãããšã¯AI以åããå€ãããŸãããåºæ¬ã®åŸ¹åºãããAI掻çšã®å€§åæãªã®ã§ãã ãŸãšã ä»åã®ããŒãã¯ãAI à ãããŸã§ãšããããããã§ããã 2ã€ã®ç»å£ã«å
±éããŠããã®ã¯ãAIã«ãã£ãŠå€ãã£ãããšãšå€ãããªãããšã®æŽçã§ããå€ãã£ãã®ã¯ãAIã«ä»»ããããç¯å²ã§ããè·çš®ã®å£ãè¶ããããšãçŸå®çãªéžæè¢ã«ãªããååããå§ä»»ãžãšé¢ä¿æ§ãé²åããŸãããå€ãããªãã®ã¯ãçè§£ãšè²¬ä»»ã人éã«æ®ãããšã§ããAIã«ã©ãã ãå§ä»»ããŠããåºåã倿ããå°éç¥èãšåºæ¬ã®åå°ããªããã°ãAIã¯ææãåºããŸããã ãã®1幎ã§VibeCodingãšããèšèãåœããåã«ãªããããŸã¯AgenticWorkflowãžã®ç§»è¡ãå§ãŸã£ãŠããŸãããããããå€åã¯ç¶ããŸãããåºæ¬ãåºããçè§£ãææŸãããæ®µéçã«ä»»ããç¯å²ãåºããŠããããã®å§¿å¢ã¯å€ãããªããšèããŠããŸãã ãªããç»å£ã§ã玹ä»ãããã¡ã€ã³ãã£ã®éçºç¥èŠã¯ãããã¥ã¡ã³ããµã€ããFindy Libraryãã§å
¬éããŠããŸããéçºã®åºæ¬ããVibeCodingãAgenticWorkflowã®å®è·µãŸã§ãä»åã®ç»å£ã®ããŒã¹ã«ãªã£ãŠããç¥èŠããŸãšããŠããŸãã®ã§ããã²æŽ»çšããŠã¿ãŠãã ããã lib.findy.co.jp ãããŠæ©ããæ¬¡åéå¬ã決å®ããŸããïŒ2026幎11æ12æ¥(æš)ã«éå¬äºå®ã§ããæ¬¡åã¯ãAI à 䞊åéçº AIã«å§ä»»ããŠå€ããããéçºææ³ããšé¡ããŸããŠãAIãžã®å§ä»»ã§å€ãã£ãŠããéçºææ³ã«ã€ããŠèªãåãäŒã«ããããšæã£ãŠããŸããä»åã®ç»å£ã§ãè§Šããã䞊åå§ä»»ããããã«æ·±æãããããŒãã§ãããã²ãåå ãã ããã findy-inc.connpass.com ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã§ããªã³ã·ãã«ãšã³ãžãã¢ãããŠããæžç°ã§ãã å
æ¥ãGitHubã®ã¹ã¿ãã¯ãã«ãªã¯ãšã¹ãïŒStacked Pull RequestsïŒãpublic previewã«ãªããŸãããäŸåãåã倿Žãè€æ°ã®ãã«ãªã¯ãšã¹ãã«åãããŸãŸãé çªã«ç©ã¿äžããŠã¬ãã¥ãŒã»ããŒãžã§ããæ©èœã§ãã ãã®èšäºã§ã¯ãã¹ã¿ãã¯ãã«ãªã¯ãšã¹ãã®ä»çµã¿ãš gh stack ã§ã®ãã«ãªã¯ãšã¹ãã®ç©ã¿æ¹ãGitHubã®ç»é¢ã§ã®ã¬ãã¥ãŒãšããŒãžã®æµãã玹ä»ããŸããæåŸã«ããã¡ã€ã³ãã£ã§AIãšãŒãžã§ã³ãã®äžŠåå®è£
ã«çµã¿èŸŒãã§ããäŸã«ãè§ŠããŸãã ã¹ã¿ãã¯ãã«ãªã¯ãšã¹ãã®ä»çµã¿ gh stackã§ãã«ãªã¯ãšã¹ããç©ã GitHubã®ç»é¢ã§ã¬ãã¥ãŒãšããŒãžãé²ãã ãã¡ã€ã³ãã£ã§ã®æŽ»çš ãŸãšã ã¹ã¿ãã¯ãã«ãªã¯ãšã¹ãã®ä»çµã¿ 倧ããªå€æŽã1ã€ã®ãã«ãªã¯ãšã¹ãã«ãŸãšãããšã¬ãã¥ãŒãéããªããŸããããšãã£ãŠåå²ãããšãåŸç¶ã®å·®åã«å
è¡åã®å€æŽãŸã§æ··ãã£ãŠããŸããããã§äœãå€ããã®ããèªã¿åããªããªããŸããããŒãã«å®çŸ©ãšãµãŒãã¹å±€ãšAPIããŸãšããŠåºãããããŒãã«å®çŸ©ã®ããŒãžãåŸ
ã£ãŠãããµãŒãã¹å±€ãåºããããšããäºæã«ãªããã¡ã§ããã ã¹ã¿ãã¯ãã«ãªã¯ãšã¹ãã¯ãbaseãã©ã³ãã1ã€åã®ãã«ãªã¯ãšã¹ãã®ãã©ã³ãã«ããããšã§ãã®äºæãè§£æ¶ããŸãã main â #301ïŒããŒãã«å®çŸ©ïŒ â #302ïŒãµãŒãã¹å±€ïŒ â #303ïŒAPIïŒ main ãbaseã«ããã®ã¯äžçªäžã ãã§ã2çªç®ä»¥éã¯çŽåã®ãã«ãªã¯ãšã¹ãã®ãã©ã³ããbaseã«ããŸããåæ®µã®å·®åã¯ããã§å ãã倿Žã«éå®ããããããã¬ãã¥ã¢ãŒã¯1段ãã€èªãã°æžã¿ãŸãã ãã®ç©ã¿æ¹èªäœã¯GitHubã«åºæã®ãã®ã§ã¯ãããŸãããbaseãæå®ããã ããªã®ã§ã以åããæåã§ãéçšã§ããŸããããã ãæäœæ¥ã§ããå Žåãã¬ãã¥ãŒææã§äžã®å±€ãå€ãããã³ã«ããã®äžã®ãã¹ãŠã®ãã©ã³ãããªããŒã¹ãçŽããŠbaseãä»ãæ¿ããããšã«ãªããŸããæ®µæ°ãå¢ããã»ã©ä»ãæ¿ãã®æéãç©ã¿äžãããããéžã³ã«ããææ³ã§ããããŸããã GitHubã察å¿ããããšã§ããã®ä»ãæ¿ããèªååãããŸãããäžäœã®ãã«ãªã¯ãšã¹ããããŒãžããããšãæ®ãã®ãã©ã³ãã¯èªåçã«ãªããŒã¹ããããã®äžã®ãã«ãªã¯ãšã¹ãã®baseãä»ãæ¿ãããŸããæå
ã§baseãåŒµãæ¿ããããããŒãžæžã¿ã®å€æŽãåã蟌ã¿çŽãããããäœæ¥ã¯çºçããŸããã ãã1ã€ã®å€åã¯ãäžé£ã®ãã«ãªã¯ãšã¹ããã²ãšã€ã®StackãšããŠçŽä»ããŠããããšãGitHubèªèº«ãèªèããããã«ãªã£ãç¹ã§ãããã«ãªã¯ãšã¹ããStackã®ã©ã®äœçœ®ã«ããããGitHubåŽãææ¡ããŠãããããç»é¢äžã§ãç©ã¿äžããã远ããŸãããCLIãããStackãåäœãšããŠæäœã§ããŸããæå
ã®ãã©ã³ããšèªåã®é ã®ãªãã ãã§äŸåã管çããŠããé ãšæ¯ã¹ããšããã®å·®ã¯å°ãããããŸããã gh stackã§ãã«ãªã¯ãšã¹ããç©ã æäœã¯GitHub CLIã®æ¡åŒµæ©èœã§è¡ããŸãã gh extension install github/gh-stack ãŸãã¹ã¿ãã¯ãåæåããŸããå®è¡ãããš1段ç®ã®ãã©ã³ãåãèãããŸãã gh stack init ããšã¯æ®æ®µã©ãã倿ŽããŠã³ãããããŸãããããŸã§ã¯éåžžã®ãã©ã³ãéçšãšå€ãããŸããã git add . git commit -m "ããŒãã«å®çŸ©ã远å " 2段ç®ãããæ¬çªã§ãã gh stack add ã§æ°ãããã©ã³ããäœããšãããŸå±
ããã©ã³ããbaseã«ããŠç©ã¿äžãããŸãã gh stack add feature/service git add . git commit -m "ãµãŒãã¹å±€ã远å " ãã©ã³ãã®äœæããã³ããããŸã§ã¯ -Am ã§ãŸãšããããŸããæ®µãéãããšãã¯ãã¡ãã®ã»ããæ¥œã§ãã gh stack add -Am "APIãšã³ããã€ã³ãã远å " feature/api ç©ã¿çµãã£ãããã«ãªã¯ãšã¹ããäœããŸãã gh stack submit ã¯å
šãã©ã³ãã®pushãšãã«ãªã¯ãšã¹ãäœæãbaseã®èšå®ããŸãšããŠè¡ããŸãã1ã€ç®ã¯ main ã2ã€ç®ã¯1ã€ç®ã®ãã©ã³ãããšããå
·åã«baseãèšå®ãããŸãã gh stack submit ãã§ã«ãã©ã³ããäœã£ãŠããŸã£ãŠããå Žåã¯ã gh stack init ã«æ¢åãã©ã³ããäžããé ã«äžŠã¹ãŠæž¡ãã°ããã®ãŸãŸæ¡çšã§ããŸãã gh stack init --base main feature/table feature/service feature/api GitHubã®ç»é¢ã§ã¬ãã¥ãŒãšããŒãžãé²ãã ãã«ãªã¯ãšã¹ããäœããšãç»é¢ã®äžéšã«ã¹ã¿ãã¯ã¢ã€ã³ã³ãšããããäœæ®µç®ãã瀺ãçªå·ã衚瀺ãããŸããããŒãžããã¯ã¹ã«ã¯ã¹ã¿ãã¯ããããåºãŠãStackã«å«ãŸããå
šãã«ãªã¯ãšã¹ããšãã®ç¶æ
ãäžèЧã§ããŸããããããä»»æã®æ®µãžã¯ã³ã¯ãªãã¯ã§ç§»åã§ããã®ã§ãã¬ãã¥ãŒäžã«äžäžã®å€æŽã確èªããããªã£ããšãã«äŸ¿å©ã§ãã 3段ã®Stackãäœã£ãçŽåŸã®ã¹ã¿ãã¯ããããæ¬¡ã§ããäžããé ã«ç©ã¿äžãããäžçªäžã main ã«ã€ãªãã£ãŠããããšãèªã¿åããŸãããã®æç¹ã§ã¯ãŸã ã¬ãã¥ãŒãæžãã§ããªããããåãã«ãªã¯ãšã¹ãã«Not readyãšè¡šç€ºãããŠããŸãã ããŒãžã¯äžçªäžããè¡ããŸããStackå
šäœãäžåºŠã«ããŒãžããããšãã1ã€ã®ãã«ãªã¯ãšã¹ãã ããããŒãžããããšããéäžãŸã§éšåçã«ããŒãžããããšãã§ããŸããããŒãžã³ããããã¹ã«ãã·ã¥ããªããŒã¹ããŒãžã®ãããã«ã察å¿ããŠããŸãã ã¬ãã¥ãŒãé²ããšapproveæžã¿ã®ãã«ãªã¯ãšã¹ãã«Readyãä»ããŸããæ¬¡ã¯1段ç®ãš2段ç®ãapproveããã3段ç®ããŸã ã¬ãã¥ãŒäžãšããç¶æ
ã§ãã éããŠããã®ã¯2段ç®ã®ãã«ãªã¯ãšã¹ãã§ããããã§Merge stackãæŒããšããã®2段ç®ãšäžã®1段ç®ãããããŠ2æ¬ãããŒãžãããŸãããã¿ã³ã®æ°åããã®ãŸãŸããŒãžãããæ¬æ°ã§ããapproveãããŠããªã3段ç®ã¯ããŒãžããããéãããŸãŸæ®ããŸããæ®ã£ããã«ãªã¯ãšã¹ãã®baseã¯èªåçã«ä»ãæ¿ããããã®ã§ãæå
ã§äœãããå¿
èŠã¯ãããŸããã 3段ç®ã®ã¬ãã¥ãŒãçµãã£ãããšã«3段ç®ã®ãã«ãªã¯ãšã¹ãã§Merge stackãæŒãã°ãStackå
šäœãäžåºŠã«ããŒãžãããŸããæ®µããšã«å°ããã¬ãã¥ãŒãåããŠãåã蟌ã¿ã¯éœåã®è¯ãã¿ã€ãã³ã°ã§ãŸãšããŠæžãŸããããšããé²ãæ¹ãã§ããŸãã äžæ¹ã§ãæå
ã®ãã©ã³ãã¯ããŒãžã®çµæãç¥ããªããŸãŸã§ããããã§ gh stack sync ãå®è¡ãããšããªã¢ãŒãã®ååŸããtrunkã®æŽæ°ãæ®ã£ããã©ã³ãã®ã«ã¹ã±ãŒããªããŒã¹ãpushãŸã§ãäžåºŠã«æžãŸããŠãããŸãã gh stack sync ãã¡ã€ã³ãã£ã§ã®æŽ»çš ãã¡ã€ã³ãã£ã§ã¯ã芪Issueã«çŽã¥ãSub-issueãAIãšãŒãžã§ã³ãã䞊åã§å®è£
ãããã«ãªã¯ãšã¹ãäœæãŸã§é²ããä»çµã¿ãéçšããŠããŸãã tech.findy.co.jp ãã®ä»çµã¿ã§ã¯ãäŸåé¢ä¿ã®ããIssueãã©ãæ±ãããèšèšäžã®èŠã«ãªããŸããããšãã°4ã€ã®Sub-issueãæ¬¡ã®ãããªäŸåé¢ä¿ã«ãªã£ãŠãããšããŸãã#201ãçµããã°#202ãš#203ã¯äžŠè¡ããŠé²ããããŸããã#204ã¯äž¡æ¹ã®å®äºãåŸ
ã€å¿
èŠããããŸãã #201 |-- #202 --+ | +-- #204 +-- #203 --+ 以åã¯ãã®äŸåãã¬ã€ã€ãŒã«åããåãã¬ã€ã€ãŒã®Issueã䞊åã§å®è£
ããŠããŸãããæ¬¡ã®ã¬ã€ã€ãŒã«é²ãåã«ãäžäœã¬ã€ã€ãŒã®ãã«ãªã¯ãšã¹ããå
šãŠããŒãžãããã®ãåŸ
ã€åæã®ä»çµã¿ãèªäœããŠããããã§ãã Layer 0: #201 ãå®è£
â ãã«ãªã¯ãšã¹ãäœæ â Layer 0 ã®ãã«ãªã¯ãšã¹ããããŒãžããããŸã§åŸ
æ© Layer 1: #202 ãš #203 ã䞊åå®è£
â ãã«ãªã¯ãšã¹ãäœæ â Layer 1 ã®ãã«ãªã¯ãšã¹ããå
šãŠããŒãžããããŸã§åŸ
æ© Layer 2: #204 ãå®è£
â ãã«ãªã¯ãšã¹ãäœæ åŸç¶ã®å®è£
ãåžžã«ææ°ã® main ããå§ãŸãããšã¯ä¿èšŒã§ããŸããäžæ¹ã§ãå®è£
ãçµãã£ãŠããŠã人éã®ããŒãžãåŸ
ã€æéã2åå
¥ããŸãã ã¹ã¿ãã¯ãã«ãªã¯ãšã¹ãã«çœ®ãæããŠããã¯ãå®è£
ã®é²ãæ¹ãšãã«ãªã¯ãšã¹ãã®ç©ã¿æ¹ãåããŠèããããã«ãªããŸããã#202ãš#203ã¯äºãã«äŸåããŠããªãã®ã§äžŠåã§åæã«å®è£
ããããšããäŸåã®é ã«çŽååããŠ1æ¬ã®Stackã«ããŸãã #201 ãå®è£
â #202 ãš #203 ã䞊åã§å®è£
â #204 ãå®è£
â äŸåã®é ã«çŽååããŠãã«ãªã¯ãšã¹ããäžæ¬äœæ main â #201 â #202 â #203 â #204 â ãšãŒãžã§ã³ãã¯ããã§çµäº 人éãäžããé ã«ã¬ãã¥ãŒããŠããŒãžïŒäžäœãã«ãªã¯ãšã¹ãã¯èªåã§ãªããŒã¹ïŒ å®è£
ãçµãããã©ã³ããäŸåã®é ã«ã€ãªãçŽãã gh stack ã§ãã«ãªã¯ãšã¹ããäžæ¬äœæããæç¹ã§ãšãŒãžã§ã³ãã®ä»äºã¯çµããã§ããäžäœãããŒãžãããã°äžäœã¯GitHubåŽã§ãªããŒã¹ããããããåŸ
ã€çç±ããããŸãããã¬ã€ã€ãŒã®éã«ãã£ã2åã®åŸ
æ©ã¯ãªããªããã¬ãã¥ãŒãšããŒãžã¯äººéã®éœåã§é²ããããããã«ãªããŸãããèªäœããŠããåæã®ä»çµã¿ã¯åé€ããŠããŸãã ãŸãšã ã¹ã¿ãã¯ãã«ãªã¯ãšã¹ããšAIãšãŒãžã§ã³ãã«ãã䞊åå®è£
ã¯ãçžæ§ã®è¯ãçµã¿åããã ãšæããŠããŸãããšãŒãžã§ã³ãã¯äŸåã®é ã«æãåããããšèªäœã¯åŸæã§ãåŸ
ã¡æéãäœã£ãŠããã®ã¯äººéã®ã¬ãã¥ãŒãšããŒãžã®ã¿ã€ãã³ã°ã§ãããå
ã«ç©ãã§ããã°ãã®åŸ
ã¡ããªããªãã®ã§ãå®è£
ã®ãµã€ã¯ã«ãšã¬ãã¥ãŒã®ãµã€ã¯ã«ãåãé¢ããŸãã ã¹ã¿ãã¯ã®èãæ¹ãéçšäžã®æ³šæç¹ã¯ããã¡ã€ã³ãã£ã®ç¥èŠããŸãšããFindy Libraryã«ãæ²èŒããŠããŸããããããŠã芧ãã ããã lib.findy.co.jp ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã§ããªã³ã·ãã«ãšã³ãžãã¢ãããŠããæžç°ã§ããæ®æ®µã¯éçºçµç¹ã®AIæšé²ãå°ä»»ã§æ
åœããŠããŸãã çæAIãéçºçŸå Žã«å
¥ã蟌ãããã«ãªããClaude CodeãGitHub Copilotãªã©ã®ãšãŒãžã§ã³ãåããŒã«ãäžè¬çã«ãªã£ãŠããŸããã ãã®äžæ¹ã§ããAIãå°å
¥ããã®ã«ãæã£ãã»ã©éããªã£ãŠããªãããAIæšé²ãé²ããŠãããããã©äœããæãä»ãããããã®ãããããªãããšãã声ããããèãããã«ãªããŸããã ãããªäžã§å
æ¥ãåŒç€Ÿäž»å¬ã®ãAI DevEx Conference 2026ãã«ãŠã ãçæAIå°å
¥ã®ãæåŸ
å€ãããä¹ãè¶ãã â éçºãããŒæ¹é©ãç®æããçã®çµç¹å€é©ã ãšé¡ããŠç»å£ããŠããŸããã dev-productivity-con.findy-code.io speakerdeck.com ãã®èšäºã§ã¯ç»å£å
å®¹ãæ¯ãè¿ãã€ã€ããã®äœæãšçŸå®ã®ã®ã£ãããå¯èŠåã§ã©ãæããããããããAIæšé²ãã©ãçµç¹ã«æ ¹ã¥ããããããããŠæ¹åã®ãµã€ã¯ã«ãåãç¶ããçµæãšããŠäœãå€ãã£ããã玹ä»ããŸãã ããã§ã¯èŠãŠãããŸãããïŒ ãéçºãéããªã£ããã¯æ¬åœãââå¯èŠåã§èŠããçŸå® èšæž¬ããŠã¿ãããæ³å®ãšéãããšãèµ·ããŠãã AIã¯å¢å¹
åšââãåºæ¬ããšãåºç€ããå
ã«ãã AIæšé²ããå
Œåããããå°ä»»ãã«å€ããæ±ºæ å¯èŠå â é
åž â æµžéã®ãµã€ã¯ã«ãåã è²æââå人ã®åºç€åãéãã æ¹åã®ãµã€ã¯ã«ãåãç¶ããçµæ ãŸãšãââé çªãééããªã ãéçºãéããªã£ããã¯æ¬åœãââå¯èŠåã§èŠããçŸå® AIãšãŒãžã§ã³ããå°å
¥ããŠãã°ããçµã£ãé ãçŸå Žã§ã¯ãå¹çãäžãã£ãããéçºã®ã¹ããŒãæãå¢ããããšãã声ãèãããŠããŸãããPull requestã®éãå¢ããããã«æããŸãã äžæ¹ã§ããªãªãŒã¹ãäŸ¡å€æäŸã®ããŒã¹ã¯ããã»ã©å€ãã£ãŠããªãããã«ãèŠããŸãããã¢ãŠãããããã¢ãŠãã«ã ããæ¬åœã«å¢ããŠããã®ããäœæãšçŸå®ããºã¬ãŠããã®ã§ã¯ãªãããããèããŠããŸãã¯äºå®ãæ°å€ã§æããããšã«ããŸããã èšæž¬ã«ã¯æ¬¡ã®2ã€ã®è»žã䜿ããŸããã 軞 ããŒã« äœãèŠãã éçºçç£æ§ Findy Team+ éçºçµç¹ã®å¥åº·ç¶æ
ã»ããã«ããã¯ã®å Žæ AIæŽ»çš Findy AI+ 誰ãã»ã©ãã§ã»ã©ãAIã䜿ã£ãŠããã Findy Team+ã§ã¯ãFour KeysïŒãããã€é »åºŠã»å€æŽãªãŒãã¿ã€ã ã»å€æŽå€±æçã»åŸ©æ§æéïŒããµã€ã¯ã«ã¿ã€ã ãPull requestãªã©ã®åçš®ã¡ããªã¯ã¹ã確èªã§ããŸããããã§ãã©ãã«åé¡ãããã®ãããäºå®ããŒã¹ã§æããŸããã jp.findy-team.io èšæž¬ããŠã¿ãããæ³å®ãšéãããšãèµ·ããŠãã 2024幎ãš2025幎ãåãæ¡ä»¶ã§Findy Team+ã§æ¯èŒãããšãããæ¬¡ã®ãããªçµæãåºãŸããã ææš å€å ã³ããããããªãŒãã³ãŸã§ã®å¹³åæé -10% 1人ãããã®Pull requestäœææ° æšªã°ã ã¬ãã¥ãŒããApproveãŸã§ã®æé +50% å¹³åã³ã¡ã³ãæ° +30% ã³ããããããªãŒãã³ãŸã§ã®æéã¯çããªã£ãŠãããã³ãŒããæžãé床ã¯ç¢ºãã«äžãã£ãŠããŸãããããã1人ãããã®ã¢ãŠããããéã¯æšªã°ãã§ãã¬ãã¥ãŒããApproveãŸã§ã®æéã¯ãããå»¶ã³ãã³ã¡ã³ãæ°ãå¢ããŠããŸãã ã€ãŸããAIãéãããã®ã¯ãã³ãŒãçæããšããäžå·¥çšã ãã§ããããã®åããã«ããã¯ãã¬ãã¥ãŒå·¥çšã«ç§»ããéçºå
šäœã®ã¹ã«ãŒãããã¯æšªã°ãã®ãŸãŸãçè§£ã远ãã€ããªããŸãŸAIã®åºåãã¬ãã¥ãŒã«åãå Žé¢ãå¢ããã¬ãã¥ãŒæ
åœã®è² è·ãäžãã£ãŠããã®ã§ãã ãAIã«äœ¿ãããŠããããšãèšããç¶æ
ã§ããããããŠããã¯æèŠã§ã¯ãªããå¯èŠåããæ°å€ã瀺ããäºå®ã§ããå¯èŠåããŠããªããã°ããªããšãªãéããªã£ããã§çµããããã®åæ»ãèŠéããŠãããšæããŸããããããAIæšé²ã®åºçºç¹ã«ãªããŸããã AIã¯å¢å¹
åšââãåºæ¬ããšãåºç€ããå
ã«ãã æ°å€ã瀺ããã®ã¯ããéãã³ãŒããæžããŠãã質ãèœã¡ãŠææãå¢ããã°ãçç£æ§ã¯æšªã°ãã«æ»ãããšããé£éã§ããããã®çµéšãããAIã¯çç£æ§ãè² åµãå¢å¹
ãããå¢å¹
åšãã ãšæããããã«ãªããŸããã åå°ããªããŸãŸAIãèŒãããšã匱ããå¢å¹
ãããŸããèŠçŽããªããã°çæãããã³ãŒãã®å
容ããã©ã€ãããã¹ãããªããã°äžå
·åãé害ãå¢ããã¿ã¹ã¯ã®ç²åºŠãèããã°å·šå€§ãªPull requestãéç£ããŠã¬ãã¥ãŒãç Žç¶»ããŸããã ãããããAI掻çšã远ãåã«åå°ãæŽããå¿
èŠããããŸããã ããã§èšãåå°ããç§ã¯ãåºæ¬ããšãåºç€ãã®2ã€ã«åããŠèããŠããŸãã 1ã€ã¯ãåºæ¬ãã§ããPull requestã®ç²åºŠãã¬ãã¥ãŒæåãã¿ã¹ã¯åè§£ã®ç¿æ
£ããããŠã¢ãŒããã¯ãã£ãåœåèŠåãåå®çŸ©ããã¹ãã³ãŒããšãã£ããéçºæåãšã³ãŒãã®åå°ã«ããããã®ã§ãçµç¹ãšããŠå®ãã¹ããã®ã§ãã ãã1ã€ã¯ãåºç€ãã§ãAIã®åºåãæ£ãããã©ãããèŠæ¥µããè¯ãæªãã倿ã§ããå人ã®ã¹ãã«ãšå€æåãæããŸãã ãã®ã©ã¡ãããAIã®ç»å Žä»¥åããéçºã«å¿
èŠã ã£ããã®ã§ããAIã«ãã£ãŠäžèŠã«ãªãã©ããããAIã®å¹æãå·Šå³ããåæã«ãªã£ãã®ã§ãã AIæšé²ããå
Œåããããå°ä»»ãã«å€ããæ±ºæ åå°ã®éèŠæ§ãèŠããŠãããããçµç¹ã«æµžéãããæšé²äœå¶ããªããã°åã«é²ã¿ãŸãããããã§æåã«ã¶ã€ãã£ãã®ããæšé²äœå¶ãã®ãã®ã®å£ã§ããã AIã®ã¢ããããŒãã¯æ¯é±ã®ããã«çºçããŸãããã®æ€èšŒã»å±éã»æè²ããéåžžæ¥åãšå
ŒåããªããåæäžŠè¡ã§é²ããã®ã¯ãç©éçã«ç¡çããããŸãããå
Œåã ãšåªå
床ãäžããã誰ã責任ãæã€ã®ããææ§ã«ãªããã¡ã§ããçæéã§ã¯ãã£ããã¢ããã远ãã€ããã瀟å
å±éãé
ãããããŠäœ¿ãããªããªãæªåŸªç°ã«é¥ããŸãã ããã§çµç¹æ§é ãå€ããæ±ºæãããŸãããAIæšé²ã®å°ä»»ããžã·ã§ã³ã眮ããæ
å ±éçŽã»æ€èšŒã»å±éãäžæ°éè²«ã§æ
ãäœå¶ã«ããŸããã å°ä»»åã®ååŸãFindy Team+ã§èšæž¬ãããšãAIæšé²ã®ã¢ã¯ãã£ããã£ã¯10å以äžã«å¢ããŠããŸãããåã人æã§ããæ§é ãå€ããã ãã§æœçã®ã¹ããŒãã¯å€§ããå€ãããŸãã å¯èŠå â é
åž â æµžéã®ãµã€ã¯ã«ãåã å°ä»»åããŠããã¯ãAIæšé²ããå¯èŠå â é
åž â æµžéããšãã1ã€ã®ãµã€ã¯ã«ãšããŠåãããã«ããŸããã ãŸãå¯èŠåããã®æ°ã¥ããSkillãšããŠåœ¢ã«ããŸããã¡ãªã¿ã«ãFindy AI+ã®AI掻çšãå¯èŠåããæ©èœã¯ããã¡ã€ã³ãã£ã®å
補ããŒã«ãããŒã¹ã«ãªã£ãŠããŸããæ¹åã®ãµã€ã¯ã«ãç©ã¿éãããªãã§ãå¯èŠåã¯åçŸæ§é«ãæ¹åãåãããã«æ¬ ãããªããã®ã«ãªã£ãŠãããŸããã lp.ai-plus.findy.io 圢ã«ããSkillã¯ãClaude Code Pluginsã§å
šç€Ÿã«äžæé
åžããŸããSkillãAgentãMCPã1ã€ã®ãªããžããªã§ç®¡çããã¡ã³ããŒã¯ã¯ã³ã³ãã³ãã§å°å
¥ã»æŽæ°ã§ããŸããçµç¹å
±éã®è³ç£ã«ããããšã§ã誰ãã®æ¹åãçµç¹å
šäœã«ããåæ ããããå
šå¡ãcontributeã§ããç¶æ
ãäœããŸããã Claude Code Pluginsã«é¢ããŠã¯å¥ã®èšäºã§è§£èª¬ããŠããã®ã§ããã¡ããåãããŠåèã«ããŠã¿ãŠãã ããã tech.findy.co.jp é
åžããŠçµããã§ã¯ããããŠäœ¿ãããªããªããŸããããã§æµžéã«ãåãå
¥ããŸããã忥ã«ããŒãžãããPull requestããµããªããŠSlackã«èªåéç¥ããããæ1åã®ãšã³ãžãã¢å®äŸã§AIæšé²ã®æŽ»åãã¢ããŠã³ã¹ããããšãAIå©çšãåœããåã«ããåããããç¶ããŠããŸãã è²æââå人ã®åºç€åãéãã æµžéãšäžŠè¡ããŠåãå
¥ããã®ãè²æã§ããAIæšé²ãé²ããŠããããã䜿ãå人ã®ã¹ãã«ãç¡ããã°ãæ©æµãåããããšã¯åºæ¥ãŸããã ãŸãVibeCodingãã¢ãããšããŠãè¥æãšã³ãžãã¢ãVibeCodingããŠããæ§åãåŸãããèŠãªããæå°ããŸããå¹ççãªAIãžã®æç€ºã®åºãæ¹ãSkillã®äœ¿ãæ¹ãç¥ã£ãŠãããããšãç®çã§ãã æ¬¡ã«ãç»é¢å
±æã§AI掻çšã®ã©ã€ãã³ãŒãã£ã³ã°ãããŸãããAIæšé²ã®èªåã®ã¿ãŒããã«ç»é¢ãç»é¢å
±æã§åãæµãã«ããŠãããåžæè
ã¯ãããèŠã€ã€æ°ã«ãªã£ããšããã質åãããå®éã«ã©ã䜿ã£ãŠããããèŠãŠãããããšã§ãAI掻çšã®è§£å床ãäžããããçãåããã«ãªããŸãã ããã«ãå人ã®ã¹ãã«ãã€ãŸãåºç€åã®åŒ·åã«ãçæããŸããããã¡ã€ã³ãã£ã§ã¯åºç€å匷åãç®çãšããŠãåºæ¬æ
å ±æè¡è
ãå¿çšæ
å ±æè¡è
ãªã©ãšãã£ãè³æ ŒååŸãæšå¥šããããã«ãªããŸããã AIã¯å¢å¹
åšã§ãããå
ã®ã¹ãã«ãé«ãã»ã©ãAIã®åºåãæ£ãã倿ã§ããæ©æµã倧ãããªããŸãã ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ãã³ã³ãã¥ãŒã¿ãµã€ãšã³ã¹ã®åºç€ãåŠã¶ããšã¯ãAI掻çšã®åææ¡ä»¶ãšãªã£ãŠããŸãã æ¹åã®ãµã€ã¯ã«ãåãç¶ããçµæ ãããããå¯èŠå â é
åž â æµžéãããåçºã®æœçã§ã¯ãªãã¯ã³ãµã€ã¯ã«ãšããŠåãç¶ããŸããã æ¹åãµã€ã¯ã«ãåçŸæ§é«ãåãããã§ããã¯ãèŠã«ãªãã®ãå¯èŠåã§ããPDCAã®PïŒèšç»ã»ä»®èª¬ïŒãšCïŒè©äŸ¡ïŒã®äž¡æ¹ã§ãå¯èŠåããŠæ°åãèªã¿è§£ããããšã§ã仮説ãšè©äŸ¡ã®ç²ŸåºŠãäžãããæ¬¡ã®äžæã®åçŸæ§ãé«ãŸããŸãã é
åžããSkillãä»çµã¿ã¯çµç¹ã«å®çãã䜿ããç¶ããŠããŸããFindy AI+ã§2026幎1ã2æãš3ã4æãæ¯èŒãããšãã»ãã·ã§ã³æ°ãçŽ3åãSkillã®å®è¡åæ°ãçŽ6åã环èšããŒã¯ã³ãçŽ5åã«å¢ãããã£ãã·ã¥ãããçã¯93.5%ã«éããŸããã ãããŠã枬ã£ãŠæ¹åãåãç¶ããçµæãéçºçç£æ§ãã®ãã®ã«ãå€åã衚ããŸããã ææš å€å 1人ãããã®Pull requestäœææ° çŽ1.5å ã¬ãã¥ãŒæææ° 暪ã°ã ã¬ãã¥ãŒããApproveãŸã§ã®æé 暪ã°ã å¹³åã³ã¡ã³ãæ° æšªã°ã 暪ã°ãã ã£ã1人ãããã®Pull requestäœææ°ãã2025幎ãš2026幎ååã®æ¯èŒã§çŽ1.5åã«ãªããŸãããæ³šç®ãããã®ã¯ãã¬ãã¥ãŒæææ°ãApproveæéãã³ã¡ã³ãæ°ã暪ã°ãã®ãŸãŸã ã£ãç¹ã§ããããã¯è³ªãèœãšããã«éãå¢ãããããšãæå³ããŸããæ¬¡ã®æ¹åã®ãµã€ã¯ã«ã®ã¿ãŒã²ããã¯ãããããªãŒãã¿ã€ã ã®æ¹åãšãªãã®ã§ãã æ¹åã¯1åã§çµãããã®ã§ã¯ãããŸãããå¯èŠåãšæ¹åã®ãµã€ã¯ã«ãåãç¶ãã課é¡ãšåãåãç¶ããå§¿å¢ãéèŠãªã®ã§ãã ãŸãšãââé çªãééããªã ä»åã¯AIæšé²ã®æµãã玹ä»ããŸãããããããã¯ã©ãã1ã€ã§ã¯ãªã段éçã«ç©ã¿äžããŠåããŠæç«ããããšããããšãèŠããŠãããŠãã ããã ãããŠãããã§åŒ·èª¿ãããã®ã é çªãééããªã ããšã§ããåå°ã匱ããšãã¬ãŒãã¬ãŒã«ãAI SkillãææãåºããŸããããã¡ã€ã³ãã£ãèžãã é çªã¯æ¬¡ã®4段ã§ããã è£è¿ããšãAIãšãŒãžã§ã³ããå
¥ããåã«ãã£ãŠããã¹ãããšã¯ãAI以åããå€ãã£ãŠããŸãããçµ±äžèŠçŽããã¹ãã³ãŒããPRç²åºŠãã¬ãã¥ãŒãªã©ã®éçºæåãšãã£ã åºæ¬ã®åŸ¹åº ãããAI掻çšã«ããã倧åæã§ãã ããããŠã å人ã®åºç€åãé«ããã°é«ãã»ã©ãAIã¯ãã广çã«æŽ»çšã§ããŸãã AIã¯éã®åŒŸäžžã§ã¯ãªããåºæ¬ãšåºç€ããããŠæ¹åãæ®µéçã«ç©ã¿éããŠåããŠå¹æãçºæ®ããŸãã ãã㊠åçŸæ§é«ãæ¹åã®ãµã€ã¯ã«ãåãç¶ããããã«ã¯å¯èŠåã¯å¿
èŠäžå¯æ¬ ã§ãã å¯èŠåããã«åãçµéšã«é Œã£ãŠæ¹åãããããããŸã«ã¯åœããã§ãããããããããã«ã¯åçŸæ§ããªãã®ã§ãã æ¹åã®æçãäžããããã«ããå¯èŠåããã®æ°åãèªã¿è§£ããæ¹åã®ãµã€ã¯ã«ãåãç¶ããŠãã ããã ããããã£ããããã«çç£æ§ãäžæ°ã«äžãã£ãïŒãšãããããªæ±ºå®æã¯ååšããŸããã éçºãããŒæ¹é©ãAIæšé²ããå°ããããšã®ç©ã¿éãã®çµæ ã ãšããããšãå¿ããªãã§ãã ããã ç®ã®åã®èª²é¡ãšåãåãç¶ããå§¿å¢ããããAIæšé²ãèŠããã¹ãå§¿ã§ããããã®å
ã«çã®çµç¹æ¹é©ãããã®ã§ãã ãªããéçºãããŒãã®ãã®ãã©ãäœãå€ããããå®éã«äœã£ãã¹ãã«ããšãŒãžã§ã³ãã®å
·äœäŸãªã©ã¯ãå¥ã®èšäºã ãéãäœãããããæ£ããäœãããž â çæAIæä»£ã®éçºãããŒæ¹é©ã®ããŒãããã ãã§è©³ãã玹ä»ããŠããŸãããã¡ããããããŠã芧ãã ããã tech.findy.co.jp ãŸãããã¡ã€ã³ãã£ã®éçºç¥èŠãå
¬éããããã¥ã¡ã³ããµã€ããFindy LibraryãããªãªãŒã¹ããŸãããPull requestã®ç²åºŠãã¿ã¹ã¯åè§£ããã¹ãã³ãŒããšãã£ããåºæ¬ããããAIãšãŒãžã§ã³ããšã®ååéçºãSkillã®æŽ»çšãŸã§ãä»åã®ç»å£ã§ç޹ä»ããåãçµã¿ã®ããŒã¹ã«ãªã£ãŠããç¥èŠããŸãšããŠããŸããç»å£å
容ãèªåã®çµç¹ã§ãå®è·µããŠã¿ãããšæã£ãæ¹ã¯ããã²Findy LibraryãæŽ»çšããŠã¿ãŠãã ããã lib.findy.co.jp ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã§ããªã³ã·ãã«ãšã³ãžãã¢ãããŠããæžç°ã§ããæ®æ®µã¯éçºçµç¹ã®AIæšé²ãæ
åœããŠããŸãã ãã®ãã³ããã¡ã€ã³ãã£ã瀟å
ã§å®è·µããŠããç¥èŠããŸãšããããã¥ã¡ã³ããµã€ããFindy Libraryããå
¬éããŸããã lib.findy.co.jp Findy Libraryã®ç¹åŸŽã¯ã人ãèªãããšã ããæ³å®ããŠããªãç¹ã§ãããã¹ãŠã®ããŒãžã¯ãã©ãŠã¶ã§èªããWebçã«å ããŠãçã®MarkdownãšããŠãé
ä¿¡ãããŠãããClaude CodeãCursorãšãã£ãAIãšãŒãžã§ã³ãã«çŽæ¥èªã¿èŸŒãŸããŠéçºã¯ãŒã¯ãããŒã«çµã¿èŸŒããããã«èšèšãããŠããŸãã ãã®èšäºã§ã¯Findy Libraryã®ç޹ä»ãšãäœãã§ããã®ãã解説ããŸãã Findy Libraryãšã¯ 人ãèªã: å®è·µç¥èŠã®ãªãã¡ã¬ã³ã¹ãšã㊠AIã«èªãŸãã: è€æ°ã®ã¢ã¯ã»ã¹çµè·¯ ããŒãžåäœã§çã®MarkdownãååŸãã MCPãµãŒããŒã§æ€çŽ¢ããã éçºã«çµã¿èŸŒã: å
·äœçãªãŠãŒã¹ã±ãŒã¹ ãã«ãªã¯ãšã¹ãäœæåã®ã»ã«ãã¬ãã¥ãŒã«äœ¿ã CLAUDE.mdãã«ãŒã«ãã¡ã€ã«ããåç
§ãã ãŸãšã Findy Libraryãšã¯ Findy Libraryã¯ããã¡ã€ã³ãã£ãæ¥ã
ã®æ¥åã§å®è·µããŠããç¥èŠãã瀟å€ã®æ¹ã§ã䜿ãã圢ã§å
¬éããããã¥ã¡ã³ããµã€ãã§ãã瀟å
ã«éããŠãããã¬ããžãæŽçããæ¥çå
šäœã®åºäžãã«è²¢ç®ããããšãç®çãšããŠããŸãã å
¬éæç¹ã§ã¯ãéçºã®åºæ¬ãæ±ããåºç€ããšãAI掻çšãæ±ããAIãã®2ã€ã®ã«ããŽãªã§ã³ã³ãã³ããæäŸããŠããŸãã ãã¹ãŠã®ããŒãžã¯æ¥æ¬èªãšè±èªã®äž¡æ¹ã§æäŸããŠãããããŒãžäžéšã®åãæ¿ãã§èšèªãéžã¹ãŸãã 人ãèªã: å®è·µç¥èŠã®ãªãã¡ã¬ã³ã¹ãšã㊠ãŸãã¯æ®éã«èªãäœ¿ãæ¹ã§ãã Findy Libraryãç®æããŠããã®ã¯ãç¶²çŸ
çãªæç§æžã§ã¯ãããŸãããããã«ãªã¯ãšã¹ãã倧ãããªããã¡ã§ã¬ãã¥ãŒãæ»ãããAIãšãŒãžã§ã³ããžã®ä»»ãæ¹ãå®ãŸããªãããªã©ãæ¥åã®äžã§äœãã«å°ã£ããšãã«ã³ã³ãã³ããæ¢ãã«æ¥ãŠãããã解決ã®ãã³ããäžæ©èžã¿åºãããã®åŸæŒããå±ããããšãç®çãšããŠããŸãã åããã¥ã¡ã³ãã¯ãæŠå¿µã®èª¬æãã§çµããããå®éã®æ¥åã§ã©ã倿ããããŸã§èžã¿èŸŒãã§ããã®ãç¹åŸŽã§ããããšãã°ãã«ãªã¯ãšã¹ãã®ããã¥ã¡ã³ãã§ã¯ãã¬ãã¥ãŒããããç²åºŠãžã®å岿¹æ³ãå
·äœäŸã€ãã§è§£èª¬ããŠããŸãã lib.findy.co.jp Agentic Workflowã®ããã¥ã¡ã³ãã§ã¯ãVibe Codingãšã®éãã人ãšAIã®é¢ä¿æ§ã§æŽçããäžã§ãã³ã³ããã¹ãå¢çã«æ²¿ã£ã圹å²åå²ã䞊åå®è£
ãšãã£ãå®è·µãã¯ããã¯ãæ±ã£ãŠããŸãã lib.findy.co.jp ãã«ãªã¯ãšã¹ãã®äœãæ¹ãAIãžã®å§è²ã®é²ãæ¹ã«ã€ããŠããŒã ã§èªèãæããããšãã¯ã該åœããŒãžã®ãªã³ã¯ãå
±æããŠåèã«ããŠã¿ãŠãã ããã AIã«èªãŸãã: è€æ°ã®ã¢ã¯ã»ã¹çµè·¯ ãããããFindy Libraryã®æ¬é ã§ããFindy Libraryã¯å
¬éåœåããAIãšãŒãžã§ã³ãã«èªãŸããããšãåæã«èæ
®ãããŠãããçšéã«å¿ããŠè€æ°ã®ã¢ã¯ã»ã¹çµè·¯ãçšæããŠããŸãã ããŒãžåäœã§çã®MarkdownãååŸãã ä»»æã®ããŒãžã®URLæ«å°Ÿã« .md ãä»ãããšããã®ããŒãžã®çã®MarkdownãååŸã§ããŸãã # æ¥æ¬èªç curl https://lib.findy.co.jp/ja/development/pull-request.md # è±èªç curl https://lib.findy.co.jp/development/pull-request.md HTMLã®ããŒã¹ãäžèŠãªãããAIãšãŒãžã§ã³ããããŒã¯ã³ãç¡é§ã«ããå
容ã ããèªã¿èŸŒããŸããç¹å®ã®ãããã¯ã ããã³ã³ããã¹ãã«å
¥ããããšãã¯ããã®çµè·¯ãæãæè»œã§ãã MCPãµãŒããŒã§æ€çŽ¢ããã Findy Libraryã¯MCPïŒModel Context ProtocolïŒãµãŒããŒãå
¬éããŠããŸããMCP察å¿ã®AIãšãŒãžã§ã³ãã«ç»é²ããŠãããšããšãŒãžã§ã³ããå¿
èŠãªã¿ã€ãã³ã°ã§èªåŸçã«ããã¥ã¡ã³ããæ€çŽ¢ããŠåç
§ããããã«ãªããŸãã Claude Codeãªããæ¬¡ã®ã³ãã³ã1ã€ã§ç»é²ã§ããŸãã claude mcp add --transport http findy-library https://lib.findy.co.jp/mcp ç»é²åŸã¯ããã«ãªã¯ãšã¹ãã®åå²ã«ã€ããŠãFindy Libraryã®ç¥èŠãèžãŸããŠæããŠãã®ããã«è³ªåããã ãã§ããšãŒãžã§ã³ããsearchããŒã«çµç±ã§é¢é£ããç®æãååŸããŠåçããŸããäºåã«ã©ã®ããŒãžãèªãŸããã人éãéžã¶å¿
èŠããªãã®ãã .md ååŸãšã®å€§ããªéãã§ãã éçºã«çµã¿èŸŒã: å
·äœçãªãŠãŒã¹ã±ãŒã¹ ã¢ã¯ã»ã¹çµè·¯ãããã£ããšããã§ãå®éã®éçºã¯ãŒã¯ãããŒã«çµã¿èŸŒãäŸã玹ä»ããŸãã ãã«ãªã¯ãšã¹ãäœæåã®ã»ã«ãã¬ãã¥ãŒã«äœ¿ã ãã«ãªã¯ãšã¹ããäœãåã«ãFindy Libraryã®ç¥èŠã芳ç¹ãšããŠAIãšãŒãžã§ã³ãã«ç²åºŠãé©åãã©ãããã§ãã¯ããŠãããäœ¿ãæ¹ã§ããClaude Codeã§ããã°ã次ã®ããã«æç€ºããŸãã https://lib.findy.co.jp/ja/development/pull-request.md ãèªãã§ãåå²ãã¹ããªãå岿¡ãåºã㊠ãšãŒãžã§ã³ãã¯ããã¥ã¡ã³ãã«æžããããã¬ãã¥ãŒãããããã«ãªã¯ãšã¹ãã®æ¡ä»¶ããè©äŸ¡åºæºãšããŠãæå
ã®å€æŽãç
§ããåãããŠãããŸããæ±çšçãªãã¬ãã¥ãŒããŠããšããæç€ºãããã芳ç¹ãæç¢ºãªåãææã®ç²åºŠãå®å®ããŸãã CLAUDE.mdãã«ãŒã«ãã¡ã€ã«ããåç
§ãã ããŒã ã®éçºèŠç¯ãšããŠFindy Libraryã䜿ãå Žåã¯ããªããžããªã®CLAUDE.mdãCursorã®ã«ãŒã«ãã¡ã€ã«ã«åç
§ãæžããŠããæ¹æ³ããããŸãã ## ã¿ã¹ã¯ã®é²ãæ¹ å€§ããªã¿ã¹ã¯ã¯çæåã«åè§£ãããåè§£ã®ç²åºŠã¯ https://lib.findy.co.jp/ja/development/task-breakdown.md ã®åºæºã«åŸãããšã ããããŠãããšãAIãšãŒãžã§ã³ããã¿ã¹ã¯ã«çæãããã³ã«ããã¥ã¡ã³ããåç
§ããããŒã ã®åæããåºæºã§äœæ¥ãé²ããããã«ãªããŸããFindy Libraryã®ã³ã³ãã³ãã¯é©å®è¿œå æŽæ°ãè¡ããããèªåã§é·å€§ãªã«ãŒã«ãã¡ã€ã«ãè²ãŠãå¿
èŠããªããªããŸãã ãŸãšã Findy Libraryã¯ãèªãã ãã®ããã¥ã¡ã³ããµã€ãã§ã¯ãªããAIãšãŒãžã§ã³ãã®éçºã¯ãŒã¯ãããŒã«çµã¿èŸŒããç¥èŠã©ã€ãã©ãªã§ãã ãŸãã¯ãã©ãŠã¶ã§æ°ã«ãªãã³ã³ãã³ããæ¢ããŠã¿ãŠãã ããããããŠMCPãã¹ãã«ããFindy Libraryã«ã¢ã¯ã»ã¹ããããã«ããŠãæ®æ®µã®éçºã®äžã§Findy Libraryã®ç¥èŠãåŒã³åºããŠã¿ãŠãã ããã ã³ã³ãã³ãã¯ä»åŸã远å ã»æŽæ°ããŠãããŸãããæ¥œãã¿ã«ïŒ ãã¡ã€ã³ãã£ã§ã¯äžç·ã«äŒç€ŸãçãäžããŠãããã¡ã³ããŒãåéäžã§ããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers
ããã«ã¡ã¯ïŒãã¡ã€ã³ãã£ã§ãããã¯ãéçºéšã®VPoEãããŠãã æµç° ã§ãã Findy Team+ ã§ã¯ãã³ãŒãã®è€éããå¯èŠåããŠæè¡çè² åµã®è§£æ¶ã«åœ¹ç«ãŠããããã³ãŒãå質åæããšããæ©èœã®æäŸãéå§ããŸããã 4ã€ã®ã³ãŒãå質ã«é¢é£ããææšãçµã¿åãããŠããã¡ã€ã³ãã£ç¬èªã®ã¹ã³ã¢ãšããŠå¯èŠåããŠããŸããå®éã«æŽ»çšããã ãäžã§ããã¹ã³ã¢ãäœããšããéãããå·¥æ°ã§ã©ã®ææšããåªå
çã«æ¹åããã°ãããããšããããªãã¡ã¯ã¿ãªã³ã°ã®åªå
é äœã«èžã¿èŸŒãã ã質åãããã ãããšãå¢ããŠããŸããã ãã®èšäºã§ã¯ã³ãŒãå質ã®å¯èŠåãæ±ããããèæ¯ããã4ã€ã®ææšã®èªã¿è§£ãæ¹ãå¹ççã«ãªãã¡ã¯ã¿ãªã³ã°ãé²ããããã®åªå
é äœãå
·äœçãªãªãã¡ã¯ã¿ãªã³ã°ãã¿ãŒã³ãŸã§ã玹ä»ããŸãã ã³ãŒãå質åæã䜿ã£ãŠããæ¹ã¯ãã¡ãããè€éåºŠã®ææšã䜿ã£ãŠãªãã¡ã¯ã¿ãªã³ã°ãé²ããããšèããŠãããã¹ãŠã®æ¹ã«åèã«ããŠããã ããå
容ã§ãã ãªãä»ãã³ãŒãå質ã®å¯èŠåãªã®ã ã³ãŒãå質åæã®ããããæŽ»çšäºäŸ ã³ãŒãå質åæãšã¯ å質ã¹ã³ã¢ãäœããšããã©ã®ææšããæ¹åããã ãŸããå
¥ãåããæµ
ããã æ¬¡ã«ã倧ãããããã¡ã€ã«ã圹å²ã®ãŸãšãŸãããšã«åãã æåŸã«ãæ®ã£ãå Žååããåå¥ã«å€æãã å
·äœçãªãªãã¡ã¯ã¿ãªã³ã°ãã¿ãŒã³ ã¬ãŒãç¯ïŒæ©æãªã¿ãŒã³ïŒã§å
¥ãåãæµ
ããã ã«ãŒãã®äžã§ã¯continueãåãåœ¹å² åœ¹å²ããšã«é¢æ°ã»ãã¡ã€ã«ãåãã åçŽãªå Žååãã¯å¯Ÿå¿è¡šã«éãã ã©ãããŠãæ¶ããªãæ¡ä»¶ã¯ãååãä»ããŠå€ã«åºã ææšã«ã€ããŠããããã ã質å 埪ç°çè€é床ãšèªç¥çè€é床ã¯äœãéãïŒ 4ã€ã®ææšã¯ãã¹ãŠç®å®ïŒGoodïŒã®å€ãŸã§äžããã¹ãïŒ ã©ã®ãã¡ã€ã«ãããªãã¡ã¯ã¿ãªã³ã°ãå§ããã°ããïŒ ãŸãšã ãªãä»ãã³ãŒãå質ã®å¯èŠåãªã®ã ãããŸã§äººãã³ãŒããæžããŠããæä»£ã«ããã¬ãã¥ãŒè² è·ã®è»œæžãå±äººåã®é²æ¢ããªãã¡ã¯ã¿ãªã³ã°æè³ã®å€æææã«ãããªã©ãã³ãŒãåè³ªãæž¬ãç®çã¯ãããŸããã äžæ¹ã§ã人ãã³ãŒããæžãã¹ããŒãã«ã¯ç©ççãªäžéããããããå質ã«èª²é¡ã®ããã³ãŒããç©ã¿äžããããŒã¹ã«ãèªç¶ã𿝿¢ããããã£ãŠããŸããã AIãã³ãŒããæžãæä»£ã«ãªããšããã®åæãå€ãããŸãã ã³ãŒãã®çç£éãççºçã«å¢ããäžæ¹ã§ã人ãã¬ãã¥ãŒã§ããéã«ã¯éçããããããå質ãžã®é
æ
®ãäžååãªã³ãŒãããããŸã§ã«ãªãã¹ããŒãã§ç©ã¿äžããå¯èœæ§ããããŸãã ããã«ãæ¢åã®ã³ãŒãã¯AIãã³ãŒããçæãããšãã®å
¥åã«ããªããããå質ã®äœãã³ãŒããæŸçœ®ãããšãããããçæãããã³ãŒãã®å質ã«ã圱é¿ãæ³¢åããŠãããŸãã ãã®ãããªå€åãããã³ãŒãå質ã®å¯èŠåã¯ãããã°äŸ¿å©ããªãã®ãããAIæä»£ã®éçºçµç¹ã«æ¬ ãããªãåææ¡ä»¶ã«å€ããã€ã€ãããšèããŠããŸãã ãã¡ã€ã³ãã£ã§ã¯AIæä»£ã®éçºçµç¹ãèŠãã¹ããã®ãã éçºè³æ¬ïŒEngineering CapitalïŒ ããšããŠå®çŸ©ããŠããŸãã éçºè³æ¬ã¯ãSpeedã»Qualityã»Controlã®3ã€ã®è»žã§éçºçµç¹ã®ç¶æ
ãæãããã¬ãŒã ã¯ãŒã¯ã§ãã ãã®ãã¡ãã³ã³ã¹ã¿ã³ãã«äŸ¡å€ãå±ããããããæããQualityãšã倿Žãäºæž¬ãå¶åŸ¡ã§ããããæããControlã§ã¯ãã³ãŒãåè³ªã®ææšã芳ç¹ã®1ã€ã«ãªã£ãŠããŸãã ãã®èšäºã§ç޹ä»ããã³ãŒãå質åæã¯ãéçºè³æ¬ã®QualityãšControlãã³ãŒãã®è€éããšããåãå£ããæ¯ããæ©èœã§ãã ã³ãŒãå質åæã®ããããæŽ»çšäºäŸ ã³ãŒãå質åæã掻çšããããªãå Žé¢ã¯ã倧ããæ¬¡ã®3ã€ã®ãã¿ãŒã³ã«åããããŸãã æŽ»çšäºäŸ å
容 ãªãã¡ã¯ã¿ãªã³ã°æè³ã®æææ±ºå®ã»å¹ææž¬å® ã©ãã«è² åµãæºãŸã£ãŠããããçŽããçµæã©ãå€ãã£ãããæ°åã§ç€ºããã ã¢ãžã¥ãŒã«éãAIãšäººã®ã³ãŒãå質æ¯èŒ ã¢ãžã¥ãŒã«ããšããAIãçæããã³ãŒããšäººãæžããã³ãŒãã®åè³ªãæšªäžŠã³ã§ææ¡ããŠãæ¹åã«æŽ»ãããã OSSåãå€éšå
¬éã®å€æ 察å€çã«å
¬éããã³ãŒããªã®ã§ã客芳çãªææšã§å質ã確èªããã ãããã®æŽ»çšäºäŸããæ ¹åºã«ããã®ã¯ãã³ãŒãã®è³ªãèªããããŒã¿ã欲ããããšããå
±éã®èª²é¡ã§ãã ãã®ã質ãèªããããŒã¿ããæäŸããã®ãã³ãŒãå質åæã§ãã ã³ãŒãå質åæãšã¯ ã³ãŒãå質åæã¯ãã³ãŒãã®è€éããå¯èŠåããã©ãã«æè¡çè² åµãæºãŸã£ãŠããããã©ãããªãã¡ã¯ã¿ãªã³ã°ãã¹ããã倿ã§ããFindy Team+ã®åææ©èœã§ãã ãªããžããªã»ãã¡ã€ã«åäœã§ã次ã®4ã€ã®ææšãèšæž¬ããŠããŸãã ææš äœã枬ã£ãŠããã 埪ç°çè€é床 ããã°ã©ã äžã®ãåå²ã®æ°ã èªç¥çè€é床 人éãã³ãŒããèªããšãã®ãé ã®è² æ
ã ä¿å®æ§ææ° 0ã100ã®ç·åã¹ã³ã¢ã倧ããã»ã©è¯å¥œ æå€§ãã¹ã深床 ãifã®äžã®ifã®äžã®âŠããšããéå±€ã®æ·±ã ããããã®ææšã¯ãœãããŠã§ã¢éçºã§äžè¬çã«åºã䜿ãããŠãããã®ã§ãããFindy Team+ã§ã¯ãã®4ã€ã®ææšãçµã¿åãããŠç¬èªã®å質ã¹ã³ã¢ãç®åºããŠããŸãã ãèªã¿ã¥ããã»å€æŽãã«ããããšããåã課é¡ãç°ãªãè§åºŠããå¹
åºãæãããã©ã³ã¹ããè©äŸ¡ã§ããããã«èšèšããŠããŸãã 4ã€ãçµã¿åãããããšã§ããã©ããããã©ãæªãã®ãããå
·äœçã«ããŒã ã«ãã£ãŒãããã¯ã§ããããã«ãªããŸãã åææšã«ã¯ãGoodããšãããç®å®ã®æ°Žæºããããã©ã®ãã¡ã€ã«ã®ã©ã®ææšãç®å®ãè¶
ããŠããããããŒã«äžã§ç¢ºèªã§ããŸãã ãªããã³ãŒãå質åæã枬ã£ãŠãããä¿å®ã®ãããããã¯ãã·ã¹ãã ããœãããŠã§ã¢ã®å質ãè©äŸ¡ããåœéèŠæ ŒISO/IEC 25010ãå®çŸ©ããåè³ªç¹æ§ã®1ã€ãä¿å®æ§ãã«å¯Ÿå¿ããŠããŸãã ãä¿å®æ§ã®ã¹ã³ã¢ãã©ãå€åãããããšããå ±åã¯ãæèŠå€ã§ã¯ãªãåœéæšæºã®åè³ªç¹æ§ã«åºã¥ãã説æã«ãªããããçµå¶å±€ãã¹ããŒã¯ãã«ããŒãžã®å ±åã«ã掻çšã§ããŸãã ãããã®ææšã掻çšãããšããªããžããªããšã«æè¡çè² åµãã©ãã«æºãŸã£ãŠããããæ°åã§ææ¡ãããªãã¡ã¯ã¿ãªã³ã°ååŸã§å質ãã©ãå€ãã£ãããã°ã©ãã§ç€ºããããã«ãªããŸãã ã¢ãžã¥ãŒã«ããªããžããªã暪䞊ã³ã§æ¯èŒããŠçµç¹ãšããŠã®æã¡æã決ãããããéçºã¹ããŒãã ãã§ãªãã質ãæ
ä¿ããŠãããããšãããŒã¿ã§èª¬æããããšãå
ã»ã©ã®3ã€ã®æŽ»çšäºäŸã¯ãããããã®æ©èœã§å®çŸã§ããŸãã å質ã¹ã³ã¢ãäœããšããã©ã®ææšããæ¹åããã ã³ãŒãã®å質ã¯ãå°æ¥ã®å€æŽã®ããããããå·Šå³ããŸãã å質ãäœãã³ãŒãã¯ãæ©èœè¿œå ãäžå
·åä¿®æ£ã®ãã³ã«æéãããããä¿®æ£æã«æ°ããäžå
·åãçãŸãããããªããŸãã ã³ãŒãå質åæãå°å
¥ããåã¯ããæè¿è§Šã£ãŠããŠèªã¿ã¥ããã£ãããããšãã£ãéçºè
ã®åãèšæ¶ãé Œãã«ããªãã¡ã¯ã¿ãªã³ã°å¯Ÿè±¡ãéžã¶ããšãå€ãã®ã§ã¯ãªãã§ããããã å°å
¥åŸã¯ãã¡ã€ã«åäœã§ææšãå¯èŠåãããããããã©ã®ãã¡ã€ã«ã®ãã©ã®ææšãæªãã®ãããšããæ°åãèµ·ç¹ã«çæå
ãæ±ºããããããã«ãªããŸãã ãšã¯ããã4ã€ã®ææšãã¹ãŠãæªåããŠãããã¡ã€ã«ãåã«ãããšãã©ãããæãä»ããã°ãããè¿·ã£ãŠããŸããŸãã ãããªãšãã¯ãå質ã®äœãã³ãŒãããé·ããŠèªã¿ã«ããããã¥ã¢ã«ææžãã«ããšããŠã¿ããšãããããã®ææšã®æå³ãçŽæçã«æããããŸãã ææš ææžã«ããšãããš æå€§ãã¹ã深床 æ¬åŒ§ã®äžã«æ¬åŒ§ãããã«ãã®äžã«æ¬åŒ§âŠãšããå
¥ãåã®æ·±ã ä¿å®æ§ææ° 1ã€ã®ç« ãé·ãããŠå
šäœåãã€ãããªã床åã èªç¥çè€é床 èªã人ã®é ã«ãããè² æ
ã®ç·é 埪ç°çè€é床 ãAã®å Žåã¯âŠBã®å Žåã¯âŠããšããå Žååãã®æ° ãã®ããšããèžãŸããŠãç§ãããããããŠããæ¹åã®é åºã玹ä»ããŸãã ãŸããå
¥ãåããæµ
ããã ãããããªããããããªããããããªãâŠããšäœéã«ãæ¡ä»¶ãéãªã£ãç®æã¯ãèªã人ãé ã®äžã§èŠããŠããã¹ãåæãç©ã¿éãªããçè§£ã®åŠšãã«ãªããŸãã ãããã該åœããªãå Žåã¯å
ã«çµäºããããšããæžãæ¹ã«çŽããŸãã åŸè¿°ããŸããããã®æ¹åã¯äœæ¥ãå°ãããæ¢åã®åããå£ããªã¹ã¯ãæãäœãã®ã«ãèªã¿ããããžã®å¹æã倧ããã®ãç¹åŸŽã§ãã æ¬¡ã«ã倧ãããããã¡ã€ã«ã圹å²ã®ãŸãšãŸãããšã«åãã å質ãäœããã¡ã€ã«ã®å€ãã¯ã1ã€ã®ãã¡ã€ã«ãè€æ°ã®åœ¹å²ãæ±ã蟌ãã§ããŸãã ææžã§èšãã°ã1ã€ã®ç« ã«ç¡é¢ä¿ãªè©±é¡ãè©°ã蟌ãŸããŠãããç¶æ
ã§ãã 圹å²ããšã«åãããšãæ¢ããããã»çŽãããããæ ¹æ¬çã«æ¹åããŸãã ãã ããçãããããã®æ©æ¢°çãªåå²ãã¯ãããã£ãŠè©±ããã¡ãã¡ã«é£ã¶èªã¿ã«ããææžã«ãªãã®ãšåãã§é广ãªã®ã§ããããŸã§æå³ã®ãŸãšãŸãã§åããŸãã æåŸã«ãæ®ã£ãå Žååããåå¥ã«å€æãã ãããŸã§ã®æ¹åãçµãããšãèªã¿æã®è² æ
ã§ããèªç¥çè€é床ã¯å€§éšåãèªç¶ã«è§£æ¶ããŠããŸãã æåŸã«æ®ããå Žååãã®æ°ãã¯ãæ¥åã«ãŒã«ãã®ãã®ã®è€éããæ ããŠããããšãå€ãç¹ã«æ³šæãå¿
èŠã§ãã å®éã®æ¥åã«10éãã®å Žååãããããªããã³ãŒãã«ã10éãã®å Žååããå¿
èŠã§ãã ãããç¡çã«æžãããšããã£ãŠåããã«ãããªãããããæ¬åœã«æžãããå ŽååããããèŠæ¥µããªããæåŸã«å¯Ÿå¿ããŸãã ãã®é åºãããããããçç±ã¯ããå®å
šã§å°ããæ¹åâæ§é ã®æŽçâæ
éãªå€æãå¿
èŠãªæ¹åããšãã䞊ã³ã«ãªã£ãŠããããšã§ãã æ¹åäœæ¥ãã®ãã®ãæ°ããäžå
·åãçããªã¹ã¯ãæå°éã«æããªããé²ããããŸãã ãããŸã§ã®ããã®ææšãããåºãããã倿ããããšããæµãããããŒãã£ãŒãã«ãŸãšãããšã次ã®ããã«ãªããŸãã flowchart TD A["å質ã¹ã³ã¢ãäœããã¡ã€ã«ãç¹å®"] --> B{"æå€§ãã¹ãæ·±åºŠãæ·±ãïŒ"} B -->|ã¯ã| C["ã¬ãŒãç¯ã§å
¥ãåãæµ
ããã"] B -->|ããã| D{"ä¿å®æ§ææ°ãäœãïŒ"} C --> D D -->|ã¯ã| E["ãã¡ã€ã«ã圹å²ã®ãŸãšãŸãã§åå²ãã"] D -->|ããã| F{"埪ç°çè€é床ãé«ãïŒ"} E --> F F -->|ã¯ã| G{"æ¥åã«ãŒã«ç±æ¥ã®å ŽååãïŒ"} F -->|ããã| K{"èªç¥çè€é床ã¯äžãã£ãïŒ"} G -->|ããã| I["å ŽååããæŽçããŠæžãã"] G -->|ã¯ã| J["æ¡ä»¶ã«ååãä»ããŠèªã¿ããããã"] I --> K J --> K K -->|äžãã£ã| H["èªã¿ãããã®æ¹åã確èªããŠå®äº"] K -->|ãŸã é«ã| M["æ®ã£ãæžãæ¹ç±æ¥ã®è€éããèŠçŽã"] ãããŒã®æåŸã«èªç¥çè€é床ã確èªããŠããã®ã¯ããã®ææšããã©ãããçŽãããã§ã¯ãªããã©ãã ãèªã¿ããããªã£ããããšããææãæ ããã®ããã ããã§ãã å
¥ãåã®è§£æ¶ããã¡ã€ã«åå²ãé²ãããšèªç¥çè€é床ã¯èªç¶ã«äžãã£ãŠããã®ã§ããªãã¡ã¯ã¿ãªã³ã°ã®ååŸã§èŠæ¯ã¹ãã°ãçãã©ããèªã¿ããããæ¹åããããæ°åã§ç¢ºèªã§ããŸãã ãŸã é«ããŸãŸãªããæžãæ¹ç±æ¥ã®è€éããæ®ã£ãŠãããµã€ã³ãªã®ã§ã察象ã®ãã¡ã€ã«ãèŠçŽããŠã¿ãŠãã ããã å
·äœçãªãªãã¡ã¯ã¿ãªã³ã°ãã¿ãŒã³ æ¹åã®é åºã§æãããå
¥ãåãæµ
ããããããã¡ã€ã«ã圹å²ããšã«åããããå ŽååããæŽçãããããå
·äœçãªã³ãŒãäŸãšãšãã«èŠãŠãããŸãã èšèã ãã§ã¯ã€ã¡ãŒãžãæµ®ãã³ã«ããã®ã§ã代衚çãªãã¿ãŒã³ãé çªã«ç޹ä»ããŸãã ã¬ãŒãç¯ïŒæ©æãªã¿ãŒã³ïŒã§å
¥ãåãæµ
ããã æ¹åé åºã®1çªç®ã«æããã該åœããªãå Žåã¯å
ã«çµäºãããæžãæ¹ã¯ãã¬ãŒãç¯ïŒæ©æãªã¿ãŒã³ïŒãšåŒã°ããŠããŸãã ãŸãã¯æ¹ååã®ã³ãŒãã§ããæ¡ä»¶ãæºããå Žåãã©ãã©ãæã£ãŠããæžãæ¹ã§ããã¹ãã4段ã«ãªã£ãŠããŸãã function applyCoupon ( user , order , coupon ) { if ( user ! == null ) { if ( user . isActive ) { if ( order . total >= coupon . minAmount ) { if ( ! coupon . isExpired ) { // ããã§ãã£ãšæ¬é¡ïŒã¯ãŒãã³é©çšïŒ return order . total - coupon . discount ; } else { return order . total ; } } else { return order . total ; } } else { return order . total ; } } else { return order . total ; } } èªã人ã¯ããŠãŒã¶ãŒãããŠããã€æå¹ã§ããã€éé¡ãæºãããŠããŠããã€æéå
ã§âŠããšããåæãé ã«ç©ã¿äžãããŸãŸæ¬é¡ã«ãã©ãçãå¿
èŠããããŸãã ããã«elseãäžã«é¢ããŠçœ®ããããããããã®elseã¯ã©ã®ifãšå¯Ÿå¿ããŠããã®ãããç®ã§è¿œãè² æ
ãå ãããŸãã ãããã¬ãŒãç¯ã§æžãçŽããšããã¹ãã¯0ã1段ã«ãªããŸãã function applyCoupon ( user , order , coupon ) { // é©çšã§ããªãã±ãŒã¹ãå
ã«çä»ãã if ( user === null ) return order . total ; if ( ! user . isActive ) return order . total ; if ( order . total < coupon . minAmount ) return order . total ; if ( coupon . isExpired ) return order . total ; // ããããäžã¯ãã¯ãŒãã³ãé©çšã§ããããšç¢ºå®ããäžç return order . total - coupon . discount ; } ãã€ã³ãã¯2ã€ãããŸãã 1ã€ã¯ãåæãèŠããŠããå¿
èŠããªããªãããšã§ãããreturnãééããïŒãã®æ¡ä»¶ã¯ããã¯ãªã¢æžã¿ããªã®ã§ãæ¬é¡ã®ã³ãŒããèªããšãã«é ã®äžã¯ç©ºã£ãœã§ãããªããŸãã ãã1ã€ã¯ãåããäœãå€ãã£ãŠããªãããšã§ãã æ¡ä»¶ã®æžãæ¹ãè£è¿ããŠäžŠã¹çŽããã ããªã®ã§ãæ¢åã®æåãå£ããªã¹ã¯ã極ããŠäœãæ¹åã§ããæ¹åé åºã®æåã«ããããããæ ¹æ ãããã«ãããŸãã ã«ãŒãã®äžã§ã¯continueãåãåœ¹å² ã«ãŒãã®äžã§æ¡ä»¶åå²ãç©ã¿éãªãå Žåã¯ãcontinueãã¬ãŒãç¯ãšåã圹å²ãæãããŸãã // æ¹åå: ã«ãŒãå
ã«ãã¹ããç©ã¿äžãã for ( const member of members ) { if ( member . isActive ) { if ( member . email ! == null ) { sendNewsletter ( member . email ) ; } } } // æ¹ååŸ: 察象å€ãå
ã«ã¹ããããã for ( const member of members ) { if ( ! member . isActive ) continue; if ( member . email === null ) continue; sendNewsletter ( member . email ) ; } ã該åœããªãè¡ã¯èªã¿é£ã°ãããšãã宣èšãå
é ã«äžŠã¶ã®ã§ãã«ãŒãã®æ¬é¡ã§ããã¡ãŒã«éä¿¡ãäžç®ã§åããããã«ãªããŸãã 圹å²ããšã«é¢æ°ã»ãã¡ã€ã«ãåãã æ¹åé åºã®2çªç®ã«æããã倧ãããããã¡ã€ã«ã圹å²ã®ãŸãšãŸãããšã«åããããããŸãã¯é¢æ°åäœã§åãåºããšçæãããããªããŸãã æ¬¡ã®é¢æ°ã¯ã1ã€ã®äžã§ãå
¥åã®æ€èšŒããéé¡ã®èšç®ããéç¥ã®éä¿¡ããšãã3ã€ã®åœ¹å²ãæ±ã蟌ãã§ããŸãã // æ¹åå: 1ã€ã®é¢æ°ãæ€èšŒã»èšç®ã»éç¥ãæ±ããŠãã function checkout ( user , order , coupon ) { if ( user === null ) throw new Error ( "ãŠãŒã¶ãŒãäžæ£ã§ã" ) ; if ( order . items . length === 0 ) throw new Error ( "ã«ãŒãã空ã§ã" ) ; let total = order . items . reduce (( sum , item ) => sum + item . price , 0 ) ; if ( coupon ! == null && ! coupon . isExpired ) { total -= coupon . discount ; } sendEmail ( user . email , `ãæ³šæããããšãããããŸããåèš ${ total } åã§ã` ) ; return total ; } 圹å²ããšã«é¢æ°ãåãåºããšãåŒã³åºãåŽã¯ãäœãããŠããããã®ç®æ¬¡ã ããèªãã°æžãããã«ãªããŸãã // æ¹ååŸ: 圹å²ããšã«é¢æ°ãžåãåºã function validateOrder ( user , order ) { if ( user === null ) throw new Error ( "ãŠãŒã¶ãŒãäžæ£ã§ã" ) ; if ( order . items . length === 0 ) throw new Error ( "ã«ãŒãã空ã§ã" ) ; } function calculateTotal ( order , coupon ) { const subtotal = order . items . reduce (( sum , item ) => sum + item . price , 0 ) ; const isCouponUsable = coupon ! == null && ! coupon . isExpired ; return isCouponUsable ? subtotal - coupon . discount : subtotal ; } function checkout ( user , order , coupon ) { validateOrder ( user , order ) ; const total = calculateTotal ( order , coupon ) ; sendEmail ( user . email , `ãæ³šæããããšãããããŸããåèš ${ total } åã§ã` ) ; return total ; } ææžã§ããã話é¡ããšã«ç« ãåããç®æ¬¡ããå¿
èŠãªç« ã«é£ã¹ãããã«ãããæäœã«çžåœããŸãã 1ã€ã®ãã¡ã€ã«ã倧ãããªã£ãŠãããããããããŸãšãŸããå¥ãã¡ã€ã«ã«ç§»ãããšã§ããã¡ã€ã«ãããã®åéãæžããä¿å®æ§ææ°ã®æ¹åã«ã€ãªãããŸãã åçŽãªå Žååãã¯å¯Ÿå¿è¡šã«éãã æ¹åé åºã®3çªç®ã«æãããå Žååãã®æ°ããã®ãã®ãæžãããã®ã¯ãåå²ãåçŽãªå¯Ÿå¿é¢ä¿ã«ãªã£ãŠããã±ãŒã¹ã§ãã æ¬¡ã®ã³ãŒãã¯ãäŒå¡ã©ã³ã¯ããšã«å²åŒçãè¿ãã ãã®åå²ã䞊ãã§ããŸãã // æ¹åå: ã©ã³ã¯ã®æ°ã ãåå²ãå¢ãã function getDiscountRate ( rank ) { if ( rank === "bronze" ) return 0 . 03 ; if ( rank === "silver" ) return 0 . 05 ; if ( rank === "gold" ) return 0 . 10 ; if ( rank === "platinum" ) return 0 . 15 ; return 0 ; } ãå
¥åã«å¯ŸããŠå€ã1ã€è¿ãã ããã®åå²ã¯ã察å¿è¡šïŒãªããžã§ã¯ãïŒã«çœ®ãæãããšåå²ãã®ãã®ããªããªããŸãã // æ¹ååŸ: åå²ãããŒã¿ã«çœ®ãæãã const DISCOUNT_RATES = { bronze : 0 . 03 , silver : 0 . 05 , gold : 0 . 10 , platinum : 0 . 15 , } ; function getDiscountRate ( rank ) { return DISCOUNT_RATES [ rank ] ?? 0 ; } åå²ãæžãã®ã§åŸªç°çè€é床ãäžãããã©ã³ã¯ãå¢ããŠã衚ã«1è¡è¶³ãã ãã§æžã¿ãŸãã äžæ¹ã§ãåå²ããšã«åŠçã®äžèº«ãéãå Žåããæ¥åã«ãŒã«ãšããŠæå³ã®ããå Žååãã¯ãç¡çã«è¡šãžæŒã蟌ããŸããããã®å Žåã¯ã次ã®ããã«ååãä»ããŠèªã¿ãããããæ¹åã§å¯Ÿå¿ããŸãã ã©ãããŠãæ¶ããªãæ¡ä»¶ã¯ãååãä»ããŠå€ã«åºã æ¡ä»¶ãæ¥åã«ãŒã«ãšããŠæ¬åœã«å¿
èŠãªå Žåã¯ããã¹ããæ¶ãã®ã§ã¯ãªããæ¡ä»¶ã®å¡ã«ååãä»ããŠ1段æµ
ãèŠããæ¹æ³ããããŸãã // æ¹åå if ( order . total >= coupon . minAmount && ! coupon . isExpired && coupon . usedCount < coupon . maxUses ) { // ã¯ãŒãã³ãé©çšãã } // æ¹ååŸ: æ¡ä»¶ã®æå³ã«ååãä»ãã function isCouponApplicable ( order , coupon ) { return order . total >= coupon . minAmount && ! coupon . isExpired && coupon . usedCount < coupon . maxUses ; } if ( isCouponApplicable ( order , coupon )) { // ã¯ãŒãã³ãé©çšãã } ææžã§ãããé·ãæ¬åŒ§æžããèæ³šã«éãããŠãæ¬æã¯äžèšã§æžãŸãããæäœã«çžåœããŸãã æ¬æãèªã人ã¯ãã¯ãŒãã³ãé©çšã§ãããªãããšã ãçè§£ããã°ããã詳现ãå¿
èŠã«ãªã£ããšãã ãäžèº«ãèªã¿ã«è¡ããŸãã ææšã«ã€ããŠããããã ãè³ªå æåŸã«ãã³ãŒãå質åæã®ææšã«ã€ããŠããããã ã質åãšåçã玹ä»ããŸãã 埪ç°çè€é床ãšèªç¥çè€é床ã¯äœãéãïŒ åŸªç°çè€é床ã¯åå²ã®ãæ°ããæ©æ¢°çã«æ°ããææšã§ãèªç¥çè€é床ã¯èªã人ã®ãé ã®è² æ
ããæž¬ãææšã§ãã 倧ããªéãã¯ãèªç¥çè€é床ã¯ãã¹ããæ·±ãå Žæã«ããåå²ã»ã©éãã«ãŠã³ããããããšã§ãã ããšãã°ããã®èšäºã§ç޹ä»ããã¬ãŒãç¯ãžã®æžãæãã§ã¯ãåå²ã®æ°èªäœã¯ã»ãšãã©å€ãããªããã埪ç°çè€é床ã¯ããŸãäžãããŸãããããã¹ããè§£æ¶ãããããèªç¥çè€é床ã¯å€§ããäžãããŸãã ã埪ç°çè€é床ã«ã¯æ¥åã®è€éããèªç¥çè€é床ã«ã¯æžãæ¹ã®è€éãã衚ããããããšæãããšã䜿ãåããããããªããŸãã 4ã€ã®ææšã¯ãã¹ãŠç®å®ïŒGoodïŒã®å€ãŸã§äžããã¹ãïŒ ç®å®ã¯ãããŸã§åªå
é äœã決ããããã®ã·ã°ãã«ã§ããããã¹ãŠã®ãã¡ã€ã«ã§éæãã¹ããã«ãã§ã¯ãããŸããã ç¹ã«åŸªç°çè€éåºŠã¯æ¥åã«ãŒã«ã®è€éããåæ ããŠããããšãå€ããç¡çã«äžãããšããã£ãŠèªã¿ã«ãããªãå ŽåããããŸãã ãç®å®ãè¶
ããŠãããã¡ã€ã«ããé ã«äžèº«ãèŠãŠãæžãæ¹ç±æ¥ãæ¥åç±æ¥ããèŠæ¥µããããšããäœ¿ãæ¹ãããããããŠããŸãã ã©ã®ãã¡ã€ã«ãããªãã¡ã¯ã¿ãªã³ã°ãå§ããã°ããïŒ ã¹ã³ã¢ãæªãé ã§ã¯ãªãããä»åŸã倿Žããäºå®ããããã¡ã€ã«ãããå§ããã®ãããããã§ãã ã³ãŒãã®å質ãåé¡ã«ãªãã®ã¯å€æŽãããšããªã®ã§ãã¹ã³ã¢ãäœããŠãä»åŸã»ãšãã©è§Šããªããã¡ã€ã«ã®åªå
床ã¯äžããŠæ§ããŸããã éã«ãããããæ©èœè¿œå ãäºå®ããŠããç®æã«ã¹ã³ã¢ã®äœããã¡ã€ã«ãããã°ãçæåã«ãªãã¡ã¯ã¿ãªã³ã°ãæ€èšãã䟡å€ããããŸãã ãªããåªå
床ãäžããŠãããšããã®ã¯ããããªããŠãããšããæå³ã§ã¯ãããŸããã åé ã§è§Šãããšãããæ¢åã®ã³ãŒãã¯AIãã³ãŒããçæãããšãã®å
¥åã«ããªããããå質ã®äœããã¡ã€ã«ãæŸçœ®ãããšã人ãçŽæ¥è§ŠããªããŠãAIãçæããã³ãŒãã®å質ã«åœ±é¿ããå¯èœæ§ããããŸãã 倿Žäºå®ã®ãããã¡ã€ã«ããçæãã€ã€ãæ®ã£ããã¡ã€ã«ãèšç»çã«æ¹åãé²ããŠããããšã倧åã§ãã ãŸãšã ãã®èšäºã§ã¯ãã³ãŒãå質ã®å¯èŠåãæ±ããããèæ¯ãããã³ãŒãå質åæã®4ã€ã®ææšã®èªã¿è§£ãæ¹ãå質ã¹ã³ã¢ãäœããšãã®æ¹åã®åªå
é äœãå
·äœçãªãªãã¡ã¯ã¿ãªã³ã°ãã¿ãŒã³ãŸã§ã玹ä»ããŸããã 4ã€ã®ææšãåæã«æªåããŠããŠãããã¬ãŒãç¯ã§å
¥ãåãæµ
ãããâãã¡ã€ã«ã圹å²ããšã«åããâæ®ã£ãå Žååããåå¥ã«å€æããããšããé åºã§é²ããã°ããªã¹ã¯ãæããªããå¹ççã«åè³ªãæ¹åã§ããŸãã ãŸãã¯äžçªå®å
šã§å¹æã®å€§ããã¬ãŒãç¯ããå§ããŠã¿ãŠãã ããã AIãã³ãŒããæžãæä»£ãã³ãŒãã®å質ãå®éçã«ææ¡ããŠããŒã¿ã«åºã¥ããŠæææ±ºå®ããããšã¯ãä»åŸãŸããŸãéèŠã«ãªããšèããŠããŸãã Findy Team+ã®ã³ãŒãå質åæã¯ããã®ç¬¬äžæ©ãšããŠãã©ãããå¹ççã«ãªãã¡ã¯ã¿ãªã³ã°ãé²ããã°ããããããŒã¿ã§æããã«ããŸãã Findy Team+ã«èå³ãæãããæ¹ã¯ããã²ãã¡ãã®ããŒãžãããåãåãããã ããã jp.findy-team.io
ããã«ã¡ã¯ããã¡ã€ã³ãã£ã®PlatforméçºããŒã ïŒä»¥éãSREããŒã ïŒã§SREãæ
åœããŠããåïŒ ãããã
ã ïŒãå¯ç°ïŒ @Cooking_ENG ïŒãæŸæ¬ïŒ @mozumasu ïŒã§ãã 2026幎6æ25æ¥ã»26æ¥ã«å¹åŒµã¡ãã»ã§éå¬ããããAWS Summit Japan 2026ãã«ãSREããŒã ã®3åã§åå ããŠããŸããã aws.amazon.com ãããããå°è±¡ã«æ®ã£ãã»ãã·ã§ã³ã1æ¬ãã€åãäžãããã¡ã€ã³ãã£ã®çŸç¶ãšçŽã¥ããŠãå±ãããŸãã ã¹ã¿ãŒãã¢ããã«Amazon EKSã¯æ©ãããïŒ ãã«ããããã¯ãæŠç¥ãå éããPlatform Engineeringã®å®è·µ TBSãã¬ããã©ãŽã£ããïŒãå€§èŠæš¡é
ä¿¡ã®è£åŽãšAWSãµãŒããŒã¬ã¹èšèš å®è·µïŒAmazon RDSãšAmazon Auroraã®ã³ã¹ãæé©åãšããã©ãŒãã³ã¹åäž ãŸãšã ã¹ã¿ãŒãã¢ããã«Amazon EKSã¯æ©ãããïŒ ãã«ããããã¯ãæŠç¥ãå éããPlatform Engineeringã®å®è·µ SREããŒã ã® å ã§ãã ç§ãå°è±¡çã ã£ãã®ã¯ãæ ªåŒäŒç€Ÿãã°ã©ã¹ã®äžäºç¶Ÿäžããã«ããã»ãã·ã§ã³ãã¹ã¿ãŒãã¢ããã«Amazon EKSã¯æ©ãããïŒ ãã«ããããã¯ãæŠç¥ãå éããPlatform Engineeringã®å®è·µãã§ãã ãã¡ã€ã³ãã£ã¯ECSãäžå¿ã«æ§æããŠããŸãããä»åŸPlatformãã©ã®ããã«ããŠããããšããå€æè»žãæã¡åž°ããããšèãããã®ã»ãã·ã§ã³ã«åå ããŸããã ãã°ã©ã¹ã¯çµå¶ç®¡çãµãŒãã¹ãLoglassããäžå¿ã«ãã«ããããã¯ãæŠç¥ãé²ããŠããäŒç€Ÿã§ãæ¬ã»ãã·ã§ã³ã§ã¯Amazon EKSãããŒã¹ã«ããPlatformåºç€ã®å°å
¥ããã1幎ã§ç€Ÿå
ã«åºããŠãããŸã§ã®å®è·µã玹ä»ãããŸããã äžäºãããEKSå°å
¥ã倿ããæç¹ã§ã®ããŒã èŠæš¡ã¯ã次ã®éã玹ä»ãããŠããŸããã ãšã³ãžãã¢çŽ50å ãããã¯ã2〠SREããŒã 4å ããã«ããããã¯ãæŠç¥ã»SRE4åããšããæ¡ä»¶ã§ããªããéãããšèšãããã¡ãªEKSãéžãã ã®ãããšããã®ãæ¬ã»ãã·ã§ã³ã®äž»é¡ã§ããã ç¹ã«å°è±¡ã«æ®ã£ãã®ã¯ãæè¡éžå®ã®è»žãšããŠäžäºãããç¹°ãè¿ãèšãåã£ãŠããããä»ã®èŠæš¡ãã§ã¯ãªããæ°å¹ŽåŸã®äºæ¥ã«ãã£ããããããã§å€æããããšããèšèã§ããã åºç€éžå®ãããéã«ã¯ããçŸæç¹ã§ååããä»ã®äººæ°ã§éçšã§ããããšããçŸåšå°ããŒã¹ã«ãªããã¡ã§ãããäžäºããããã¯Platformæ§ç¯ã¯1ã2幎ãããé·ææè³ã§ã課é¡ãé¡åšåããŠããçæããã®ã§ã¯éã«åããªãããšããã¡ãã»ãŒãžãç¹°ãè¿ãããŠããŸããã å®éã«ãSRE4åã§å°å
¥ãé²ããPlatformåºç€äžã§ã1幎ã§5ããŒã ã»çŽ20ãµãŒãã¹ãŸã§å±éããããšã®ããšã§ãã ãã1ã€åºãã£ãã®ããAIæä»£ã ããããEKSãã©ãããã©ãŒã ã«äŸ¡å€ãããããšãã䞻匵ã§ããCoding Agentãé«éã«å€æŽãçãæä»£ã«ã¯ãNamespaceåé¢ã»RBACãAdmission Controllerã«ãã£ãŠããŒã ã»ãµãŒãã¹ããšã®æš©éå¢çãããªã·ãŒãæ©æ¢°çã«æ
ä¿ã§ããéçºå¹çãšå質ã»çµ±å¶ãäž¡ç«ã§ããããšãã芳ç¹ã§ããã ããã§æ°ã«ãªãã®ãããã¡ã€ã³ãã£ã®çŸåšå°ã§ãã ãã¡ã€ã³ãã£ã¯çŸåšããã«ããããã¯ãå±éãSREããŒã 4åãåºç€ã¯Amazon ECSäžå¿ã§ãã€ã³ãã©æ§ç¯ã¯Terraformæ±çšã¢ãžã¥ãŒã«ãä»ããŠéçºè
äž»äœã§é²ããããäœå¶ãæŽããŠããŸããã tech.findy.co.jp çŽè¿ã®SREããŒã å
šäœã®åãçµã¿ã¯ã次ã®Findy Tech Talkã§ã玹ä»ããŠããŸãã tech.findy.co.jp ãã«ããããã¯ããšéçºè
äž»äœã§ã®éçšãããã«åºãã£ããšãã«ãSREããŒã ãããã«ããã¯ã«ãªããªãPlatformã®åœ¢ãã©ãå
åãã§ä»èŸŒããã®éèŠæ§ãæããŸããããäºæ¥ã«å¯ŸããŠPlatformãã©ãå
åãã§ä»èŸŒããããšããèãæ¹ã¯å€§å€å匷ã«ãªããŸããã TBSãã¬ããã©ãŽã£ããïŒãå€§èŠæš¡é
ä¿¡ã®è£åŽãšAWSãµãŒããŒã¬ã¹èšèš SREããŒã ã® å¯ç° ã§ãã ç§ãåå ããã®ã¯ãæ ªåŒäŒç€ŸTBSãã¬ãã®äºç°éŒããã«ãããã¬ã€ã¯ã¢ãŠãã»ãã·ã§ã³ãTBSãã¬ããã©ãŽã£ããïŒãå€§èŠæš¡é
ä¿¡ã®è£åŽãšAWSãµãŒããŒã¬ã¹èšèšãã§ãã ãã©ãŽã£ããïŒå¿å¹ŽäŒ '25ãããæ³å®èŠèŽè
æ°6äžäººèŠæš¡ã§é
ä¿¡ããéã®è£åŽã玹ä»ããå
容ã§ããã å
šã宣äŒã§ããŠããŸããã§ããããAWS Summitã§åç»å£ããŸããïŒïŒ ãèãããã ãããããšãããããŸããð #AWSSummit pic.twitter.com/PtQwcKdcxY — Ryo (@ry_km_u_u) 2026幎6æ25æ¥ x.com ãã©ãŽã£ããïŒå¿å¹ŽäŒ '25ãã®é
ä¿¡ãã©ãããã©ãŒã ã«ã¯ãKustamieãšããTBSãã¬ããéçºããŠããèªç€ŸãµãŒãã¹ã䜿ãããŠããŸããé
ä¿¡è
ãšåå è
ã®åæ¹åãªãããšããå
å®ããããåå æããé«ããããã®ã€ãã³ãåããã©ãããã©ãŒã ã§ãã ã¢ãŒããã¯ãã£ã¯ãµãŒããŒã¬ã¹äžå¿ã§ãããŒã¿ç®¡çã«Amazon ECSãšAmazon Aurora Serverless v2ãã¯ã©ã€ã¢ã³ãAPIã«Amazon API GatewayãšAWS Lambdaãæ åãšãªã¢ã«ã¿ã€ã éä¿¡ã«Amazon IVS (Interactive Video Service) ãå©çšããŠããŸãã å€§èŠæš¡é
ä¿¡ã«åããæ¢åã®ã¯ã©ã€ã¢ã³ãAPIæ§æã«ã¯æ¬¡ã®ãããªèª²é¡ããã£ãããã§ãã ãã£ãã·ã¥ãåæãšããæ§æã«ãªã£ãŠããªãã£ã é
ä¿¡åå æã®APIã¬ã¹ãã³ã¹ã«æé·12ç§çšåºŠããã£ãŠãã è² è·è©Šéšã宿œããããšããªããé«è² è·æã®æåãæªç¥æ°ã ã£ã ãããã®èª²é¡ã«å¯Ÿãã解決çã®äžã§ãç¹ã«å°è±¡ã«æ®ã£ãã®ã倿®µãã£ãã·ã¥æ§æã«ããã¬ã¹ãã³ã¹æ¹åã®ã話ã§ããã æ¡çšãããã®ã¯ãAmazon API Gatewayã®ã¹ããŒãžãã£ãã·ã¥ã»AWS Lambda颿°ã®ã°ããŒãã«å€æ°ã»Amazon ECSãšäœµèšããAmazon ElastiCache (Valkey) ãçµã¿åããã3å±€æ§æã§ãã API Gatewayã¹ããŒãžãã£ãã·ã¥ã§GETç³»ã¬ã¹ãã³ã¹ããšããžããè¿ããLambdaã®ã°ããŒãã«å€æ°ã§ãããã¹ã¿ãŒãæã®é¢æ°åæåãçããElastiCacheã§åŸæ®µã®DBã¢ã¯ã»ã¹ã軜ãããããšãã圢ã§å€æ®µã«ãã£ãã·ã¥ãå¹ãããã«ããŠããŸããã çµæãšããŠãæé·12,000msçšåºŠããã£ãŠããé
ä¿¡åå æã®APIã¬ã¹ãã³ã¹ããå¹³å150msçšåºŠãŸã§æ¹åããããã§ãã Amazon SQSãšAWS Step Functions Expressã«ããéåæåãåãããŠå®æœãããŠãããèšèšå
šäœã§å€§ããªæ¹åå¹
ãåºãŠããŸããã è² è·è©Šéšã«ã¯OSSã®è² è·è©ŠéšããŒã«Grafana k6ã䜿ãããŠãããåŸ
æ©é
ä¿¡åâåŸ
æ©é
ä¿¡äžâæ¬ç·šé
ä¿¡äžã®3ãã§ãŒãºã§ææ°çã«VUãå¢ããã·ããªãªã§æ¬çªã®ã¢ã¯ã»ã¹ãã¿ãŒã³ãåçŸããããã§ãã çŽè¿ãç§ãk6ãšDatadogã§ãã¡ã€ã³ãã£ã®è² è·è©Šéšç°å¢ãæ§ç¯ããŠãããšããã ã£ãã®ã§ãã·ããªãªèšèšãèŠæš¡ã®èŠç«ãŠãèªåã®äœæ¥ãšéãªã£ãŠãç¹ã«èº«è¿ã«æãããã話é¡ã§ããã ãã¡ã€ã³ãã£ã§ã®è² è·è©Šéšç°å¢æ§ç¯ã®åãçµã¿ã¯æ¬¡ã®èšäºã§ç޹ä»ããŠããŸãã tech.findy.co.jp 6äžäººèŠæš¡ã®åæã¢ã¯ã»ã¹ããµãŒããŒã¬ã¹äžå¿ã®æ§æã§ãã°ãäºäŸãšããŠãèšèšã®åŒãåºããå¢ãããã»ãã·ã§ã³ã§ããã ãã¡ã€ã³ãã£ã§ããFindy Conferenceããäžå¿ã«ç¬éçãªã¢ã¯ã»ã¹éäžã¯çºçãããããããã£ãã·ã¥ãã©ã®å±€ã§éãããããã©ããéåæã«éãããããèšèšåæããæèããå§¿å¢ã¯åèã«ãããèãæ¹ã§ããããšããžã»Lambdaã»ElastiCacheã§å€æ®µã«ãã£ãã·ã¥ãå¹ãããçºæ³ã¯ãä»åŸã®è² è·ç¹æ§ã®å€åã«åããåŒãåºããšããŠæã¡åž°ããããšæããŠããŸãã ãŸããAmazon IVSã®ããã«ãã©ã€ãé
ä¿¡åãã«äœ¿ããAWSãµãŒãã¹ããŠãŒã¹ã±ãŒã¹ãšã»ããã§ç¥ããããšãåç©«ã§ããã Kustamieã¯2026幎ç§ã«ããŒã¿çæäŸéå§äºå®ãšã®ããšã§ããã©ããªã€ãã³ãäœéšãåºãã£ãŠããã®ãããªãªãŒã¹ã楜ãã¿ã§ãã å®è·µïŒAmazon RDSãšAmazon Auroraã®ã³ã¹ãæé©åãšããã©ãŒãã³ã¹åäž SREããŒã ã® æŸæ¬ ã§ãã ç§ãå°è±¡ã«æ®ã£ãã®ã¯ãã¢ããŸã³ ãŠã§ã ãµãŒãã¹ ãžã£ãã³ååäŒç€Ÿã®å¡äºç¥ä¹ããã«ãããã¬ã€ã¯ã¢ãŠãã»ãã·ã§ã³ãå®è·µïŒAmazon RDSãšAmazon Auroraã®ã³ã¹ãæé©åãšããã©ãŒãã³ã¹åäžãã§ãã ãããã©ãŒãã³ã¹åäžããšãã³ã¹ãæé©åãã¯äž¡ç«ã§ããããšããããŒãã®ããšãæ¶ç©ºã®ECæ¯æŽäŒæ¥ãAnyCompanyããçŽé¢ãã課é¡ãšããã®è§£æ±ºçã远äœéšããŠããæ§æã®ã»ãã·ã§ã³ã§ããã AnyCompanyã«ã¯ãã¬ããŒãã¯ãšãªã«ããéçšDBã®å§è¿«ããè€éã¯ãšãªã§ã®äžæãªããžã§ã¯ãæžãåºãã«ããI/Oããã«ããã¯ããã¡ã¢ãªã«ä¹ãåããªããããããŒã¿ããããã¯ã¢ããã³ã¹ãã®è¥å€§åããšãã£ããå®åã§ããééãã課é¡ã䞊ãã§ããŸããã ã»ãã·ã§ã³å
šäœã§ç¹°ãè¿ãåãããŠããã®ããã倧ããã€ã³ã¹ã¿ã³ã¹ãžã®åçŽã¹ã±ãŒãªã³ã°ã¯ãæãã³ã¹ãå¹çã®è¯ãéžæãïŒããšããåãã§ãã ç¹ã«å°è±¡ã«æ®ã£ãã®ããåçŽã¹ã±ãŒãªã³ã°ã«é Œããã«ã³ã¹ããšããã©ãŒãã³ã¹ãäž¡ç«ãã3ã€ã®ãã¿ãŒã³ã§ããã ãªãŒãã¬ããªã«ãžã®ã¯ãšãªãªãããŒãïŒã¬ããŒãã¯ãšãªãéããïŒ RDS Optimized ReadsïŒäžæãªããžã§ã¯ããããŒã«ã«SSDã«éããïŒ Aurora Optimized ReadsïŒãããã¡ãã£ãã·ã¥ãããŒã«ã«SSDã«æ¡åŒµããïŒ 1ã€ç®ã¯ããªãŒãã¬ããªã«ãžã®ã¯ãšãªãªãããŒãã§ãã 瀟å
ããŒã¿ã¢ããªã¹ãã®ã¬ããŒãã¯ãšãªãéçšDBãå§è¿«ããŠããç¶æ³ã§ãã€ã³ã¹ã¿ã³ã¹ã1段éäžãã代ããã«ãå°ããã®ãªãŒãã¬ããªã«ãè¶³ããŠã¬ããŒããéããæ§æã«ããããšã§ãçŽ15%ã®ã³ã¹ãåæžãšé¡§å®¢APIã®å®å®åãåæã«å®çŸã§ããããšãã詊ç®ã§ããã ãå
ã«åããããšã§ãããå®ãæžãããšããçºæ³ã¯ãAmazon RDSãŸããã®æ§æå€æã§ãå¿çšãå¹ã話ã ãšæããŸããã 2ã€ç®ã¯ãRDS Optimized Readsã§äžæãªããžã§ã¯ããããŒã«ã«SSDã«éãããã¿ãŒã³ã§ãã è€éãªã¯ãšãªã§çæãããäžæãªããžã§ã¯ããAmazon EBSã«æžãåºãããŠã¬ã€ãã³ã·ã䌞ã³ãããšããããã«ããã¯ã«å¯ŸããããŒã«ã«NVMe SSDãæèŒããã€ã³ã¹ã¿ã³ã¹ãžèŒãæ¿ããŠäžæãã¡ã€ã«ã®æžãåºãå
ãããŒã«ã«SSDã«åãæ¿ããããšããã¢ãããŒãã§ããã åçŽã¹ã±ãŒãªã³ã°ãšæ¯ã¹ãŠçŽ43%ã®ã³ã¹ãåæžãã€æå€§2åã®èªã¿åãæ§èœåäžãšããã®ã¯ãç¥ããªããšéžã¹ãªãéžæè¢ã ãšçæããŸããã 3ã€ç®ã¯ãAurora Optimized Readsã§ãããã¡ãã£ãã·ã¥ãããŒã«ã«SSDã«æ¡åŒµãããã¿ãŒã³ã§ãã ã¡ã¢ãªã«ä¹ãåããªããããããŒã¿ããã£ã¹ã¯ããèªã¿çŽããŠããŸãããšããããã«ããã¯ã«å¯ŸããããŒã«ã«NVMe SSDããããã¡ããŒã«ã®ç¬¬2éå±€ãšããŠäœ¿ããéå±€åãã£ãã·ã¥ãã§å¯ŸåŠããŸãã åçã®ã€ã³ã¡ã¢ãªãã£ãã·ã¥ãåŸãããã«å€§ããªã€ã³ã¹ã¿ã³ã¹ã«äžãã代ããã«ãå°ããã®ã€ã³ã¹ã¿ã³ã¹ + I/O-Optimizedã®çµã¿åãããéžã¶ããšã§ãçŽ90%ã®ã³ã¹ãåæžãšæå€§8åã®èªã¿åãæ§èœãå®çŸããäºäŸã§ããã 倿ã®ã¹ããããšã㊠BufferCacheHitRatio ã AuroraEstimatedSharedMemoryBytes ã§ã¯ãŒãã³ã°ã»ãããææ¡ããŠããéžã¶ããšããæé ãåãããŠç€ºãããŠãããããŸãå¯èŠåããŠããæãæã€ããšããåºæ¬ãããã§ã培åºãããŠããã®ãå°è±¡çã§ããã ããã¯ã¢ããé¢ã§ããèªåããã¯ã¢ããã®ä¿ææéãçãããããããå€ãåã¯Amazon S3ãžã®Parquet圢åŒã¹ãããã·ã§ãããšã¯ã¹ããŒãã«åãæ¿ããããšã§ã30%ã®ã³ã¹ãåæžãã§ãããšãã詊ç®ã玹ä»ãããŠããŸããã é害埩æ§ã®ããã®ãªã¹ãã¢èŠä»¶ã¯çŽè¿ã®ããŒã¿ã§è¶³ããäžæ¹ãç£æ»ãéå»ããŒã¿ã®åç
§ã¯å¿
ããã峿ã®ãªã¹ãã¢ãå¿
èŠãšããªããããS3ãžã®å®äŸ¡ãªãšã¯ã¹ããŒãã«éãããŸãããã®ããªã¹ãã¢èŠä»¶ããšãåç
§èŠä»¶ããåããŠèãããšã³ã¹ãæ§é ã倧ããå€ããããšããã®ã¯ãã¡ã€ã³ãã£ã®éçšã§ãããã«èŠçŽããããªèгç¹ã§ãã ã©ã®èª²é¡ã§ããDatabase InsightsãPerformance Insightsã§ãŸãã¯ãŒã¯ããŒããå¯èŠåããããã«ããã¯ã«å¿ããŠé©åãªã€ã³ã¹ã¿ã³ã¹ãã¡ããªãŒã»ã¹ãã¬ãŒãžã¿ã€ãã»ãã£ãã·ã¥éå±€ãéžã³çŽãããšããæµãã§é²ããããŠããã®ãå°è±¡çã§ããã ãèŠããªããã®ã¯æ¹åã§ããªãããšããåºæ¬ããAnyCompanyã®èª²é¡ãéããŠè¿œäœéšã§ããæ§æã«ãªã£ãŠãããšæããŸããã ãŸã㯠BufferCacheHitRatio ã VolumeReadIOPs ã» VolumeWriteIOPs ãèŠçŽããI/O-OptimizedãOptimized Readsãå¹ãã¯ãŒã¯ããŒãããªãããæ£åžããããšããããå§ããããšæããŸãã ãŸãšã 2æ¥éãéããŠãå瀟ã®äºäŸãææ°ãµãŒãã¹ã«çŽæ¥è§Šããããæ¿ãã€ã³ãããã®æ©äŒãšãªããŸãããè² è·è©Šéšã®ã·ããªãªèšèšããAmazon RDS/Auroraã®ã³ã¹ãæé©åããã«ããããã¯ãæä»£ã®Platformã®åœ¢ãšãã£ããçŸå°ã§æã¡åž°ã£ãè«ç¹ããSREããŒã ã®æ¥ã
ã®åãçµã¿ã«å°ããã€æŽ»ãããŠãããŸãã ãã¡ã€ã³ãã£ã§ã¯ãSREã¡ã³ããŒãåéããŠããŸããèå³ãæã£ãŠããã ããæ¹ã¯ãã¡ãã®ããŒãžãããå¿åãé¡ãããŸãã herp.careers