ããã«ã¡ã¯ããããã¯ããã°ãã¯ã @gessy0129 ã§ãã ãã®ãã³ããã¡ã€ã³ãã£ã«å
¥ç€ŸããŸããã®ã§ãå
¥ç€Ÿãšã³ããªãŒããããŠããã ããŸãã ãæéã®ãããšãã«ã芧ããã ããã°ãšæããŸãã ãã¡ã€ã³ãã£ã«å¯Ÿããæ³ããšæ°æã¡ æ¹ããŠããã®åºŠããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã«æ£åŒã«åå ããããšãšãªããŸããã ãããããããã æšå¹Žããããã€ãã®noteèšäºãå·çãããŠããã ãããšããã§ããããŸãããããã«çµ¡ãã€ã€ãä»åã®æ°æã¡ãç¶ŽããããšæããŸãã åèèšäºïŒ ANDPADを退任しました|げっしー 2024年目標と決意と挑戦と|げっしー çžå€ããããèªèº«ã®æ²ããããã·ã§ã³ã¯ã ååŸæ°ã¡ãŒãã«ãã幞ãã®é£éãçã¿åºã ãšããäºã ãšæã£ãŠããŸãã éå»ã®åšç±äŒæ¥ã§ãVPoEãéçºæ¬éšé·ãšããŠé·ãéå€åãããŠããŸããã ãã®äžã§ããã®ã¥ããã«éäžããŠãããšã³ãžãã¢ãã¡ãæ¯ããŠããäºãšããã®ã¯çžåœãªããããã§ããã ãšã³ãžãã¢ãã¡ã幞ãã«æ¥ååºæ¥ãç°å¢ãæŽãããããé£éããŠããããã«ããããšã ããã¯ãšãŠã楜ããã£ãã§ãã â» ãã¡ããVPoE ãšããŠã®æ¥åã¯ããã ãã§ã¯ãªãã§ãã ãã®é åãæŽã«æ·±ããææŠãããšã³ãžãã¢ãå¿æŽããŠãããããšããæãã匷ãŸããŸããã ãããŠããã®æ³ããé«ãŸã£ãæãå€ãã®éžæè¢ã®äžãããã¡ã€ã³ãã£ãšåºäŒããŸããã ãã¡ã€ã³ãã£ã®ããã·ã§ã³ãããžã§ã³ãããªã¥ãŒã«å
±æããããã¯éåžžã«å€§ããªåºäŒãã§ãããšæããŠãããŸãã ãšã³ãžãã¢ã®å¯èœæ§ãæ¡ããã¹ã¿ãŒãã¢ããã®ãšã³ã·ã¹ãã ã«è²¢ç®ã§ããããšãé¡ã£ãŠããŸãã ããããšããŠãããš ãã¡ã€ã³ãã£ã¯è²ããªäºæ¥ãå±éããŠãŸãã ãšã³ãžãã¢ã®è»¢è·ãæ¯ãã転è·äºæ¥ ããªãŒã©ã³ã¹ãšã³ãžãã¢ãæ¯ããããªãŒã©ã³ã¹äºæ¥ åœå
å€ã®ãšã³ãžãã¢ãšäŒæ¥ãã€ãªããã°ããŒãã«äºæ¥ 掻èºãããšã³ãžãã¢ãæ¯ããTeam+äºæ¥ æè¡éžå®ãæææ±ºå®ããµããŒãããToolsäºæ¥ ãªã©ãªã©ããããŸãã ãããã®äºæ¥ããã¹ãŠãææŠãããšã³ãžãã¢ã®ãã©ãããã©ãŒã ãäœãäžãããšã³ãžãã¢ã®å¯èœæ§ãåºããããšã«ã€ãªãããšèããŠãããŸãã ãããŠãCEOã®å±±ç°ãããCTOã®äœè€ãããããã®é åã§ææŠããããšããŠããããšã«æéãåããŠãããŸãã ããã§ãçŽ æŽãããã¡ã³ããŒãšå
±ã«ãææŠãããšã³ãžãã¢ãå¿
èŠãšãããµãŒãã¹ãç©æ¥µçã«æäŸããŠãããããšæã£ãŠãããŸãã ãããããŸã ãŸã ãã¡ã€ã³ãã£èªäœããææŠãããšã³ãžãã¢ãææŠããããšã³ãžãã¢ã«ç©æ¥µçã«éžã°ããç¶æ³ã«ãããšã¯èšããªãã®ã§ã¯ãªãããšèããŠãããŸãã ããã¯ããã¡ã€ã³ãã£ã«ãšã£ãŠãåã«ãšã£ãŠããããªã 䌞ã³ä»£ ã ãšæã£ãŠãããŸãã ããã¡ã€ã³ãã£ã«çžè«ããã°ãªããšããªãããšããç¶æ³ãäœãäžããããšãã§ããã°ãšèããŠãããŸãã æåŸã« ãã¡ã€ã³ãã£ã®å¯Ÿå€æŽ»åã«ãç©æ¥µçã«åå ããŠããäºå®ã§ããããŸãã ãã®éã¯ãçæ§ããããããé¡ãããããŸãïŒ çŸåšããã¡ã€ã³ãã£ã§ã¯äžç·ã«åãã¡ã³ããŒãåéäžã§ãã èå³ãããæ¹ã¯ãã¡ããã â herp.careers
Findyã§ãšã³ãžãã¢ãããŠããæŸæïŒ @shakemurasan ïŒã§ãã 以åãåŒç€Ÿã®æ æ²¢ããRailsã®CIã®ãã¹ãå®è¡æéã10åãã5åã«é«éåãã話ããšããèšäºãæçš¿ããŸããã tech.findy.co.jp æ¬èšäºã§ã¯ãã®å°ãåã®ã話ãããããRSpecã®å®è¡æéèªäœã«ãŸã ãŸã ãã£ã䌞ã³ãããç¹ã«Factoryåšãã®åé¡ãTestProfãšããgemãæŽ»çšããŠè§£æ¶ããŠãã£ã話ãšãªããŸãã åœæã®RSpecã®å®è¡æéç¶æ³ TestProfãšã¯ TestProfã§ã®åæçµæ æ¹å1. é¢é£ããã¬ã³ãŒããè€æ°ä»¶äœæããŠããFactoryãïŒã¬ã³ãŒãã«æžãã æ¹å2. ãã¹ãã§å¿
èŠæå°éãªã¬ã³ãŒãã®ã¿ãäœæãã RSpecã®å®è¡æéã®æ¹åçµæ èå¯ åœæã®RSpecã®å®è¡æéç¶æ³ ãããŸã§ã«ããã¹ãå®è¡æéã®ççž®ã®ããã®åãçµã¿(CIåŽã§ã®ãã·ã³ã®äžŠåèµ·åããã³äžŠåå®è¡)ã¯ããŠããããããŸã§ã¹ãã¬ã¹ã®ããç°å¢ã§ã¯ãããŸããã§ãããç°æ§ã«å®è¡æéãèŠããŠãããã¹ããååšããããšã¯ã¡ã³ããŒéã§èªèããŠãããäœãšãªãåå ã®ã¢ã¿ãªã¯ã€ããŠãããã®ã®ã䞊åå®è¡å°å
¥ã§å¿«é©ãªç°å¢ãåŸãããŠããã®ã§ããã¹ã軜éåã®åªå
床ãèœã¡ãŠããç¶æ³ã§ããã ãããããããããšãã¹ãå®è¡æéã¯äŒžã³ãŠããã䞊åå®è¡ã®å°å
¥åœåã¯10åçšåºŠã ã£ããã®ãã15åãè¶
ããã±ãŒã¹ãç®ç«ã€ããã«ãªã£ãŠããŸããããããããã¹ã軜éåã«çæãããããšãã話ã«ãªããå®éã«å¯Ÿå¿ããŠããããšã«ãªã£ãã®ã§ããã æŽã«äžŠååãæšé²ããããšããæ¡ããã®æç¹ã§ãã£ãã®ã§ãããããããåè¿°ã®ãç°æ§ã«å®è¡æéãèŠããŠãããã¹ãããåå ã§ãã·ã³ããšã®ãã¹ãå®è¡å®äºæéã«åºŠãé£ããã©ãããçããŠããããŸãã¯ããã解決ããªããã°ãªããªããããšãªããŸããã TestProfãšã¯ ãã¹ã軜éåã«ããã£ãŠããŸãã¯äœãšãªãã¢ã¿ãªãã€ããŠãããšããã«æ¬åœã«åå ãããã®ã枬å®ããããšã«ããŸãããè§£æ/枬å®ã«éããTestProfã䜿ããããšããããšã¯æ§ã
ãªèšäºãä»äŒæ¥æ§ã®ããã¯ããã°äºäŸããç¥ã£ãŠããã®ã§ããããæ¡çšããããšã«ããŸããã github.com TestProfã«ã¯æ§ã
ãªæ©èœãããã®ã§ãããã¢ã¿ãªãã€ããŠããã®ã¯ãã¹ãããŒã¿çæåšãã ã£ããããFactoryProfãšããFactoryåšãã®è§£ææ©èœã䜿ã£ãŠããŸããFactoryProfãçšããããšã§ãFactoryå¥ã® ç·åŒã³åºãåæ° / ç·å®è¡æé / 1åãããã®å®è¡æé ããããã¬ããŒãã£ã³ã°ã§ãããã®æ©èœãçšããŠæ¹åã«çæããŸããã â» ãã®åŸã®ç« ã§ç»å Žãããã¡ã€ã«åãModelãFactoryã¯ä»®åã«çœ®ãæããŠããŸãããæ°å€ã¯å®éã®ãã®ãæ²èŒããŠããŸã TestProfã§ã®åæçµæ ãŸã倧åæãæéãããã£ãŠãããã¹ãã±ãŒã¹ã®ç¶æ³ãèŠãŠã¿ãŸãã spec Before After Reduce Worst1 78.37s ??? ??? Worst2 75.71s ??? ??? Worst3 48.76s ??? ??? Worst4 48.16s ??? ??? Worst5 88.01s ??? ??? Total of worst 339.01s ??? ??? å®ã«ãã¹ãã±ãŒã¹5æ¬ã§5å39ç§ãè¶ããŠããç¶æ³ã§ãããã¯ã¡ãã£ãšèŸããª.... ãšããã®ãããããŸãããããããäžçªéãããã¹ãã±ãŒã¹ã®ã¿ãæå®ããŠFactoryProfã®è§£æããããŠã¿ãŸãã FPROF=1 bin/rspec spec/models/worst_spec.rb:2244 ãããšæ¬¡ã®ãããªã¬ããŒããåŸãããŸãã [TEST PROF INFO] Factories usage Total: 1586 Total top-level: 8 Total time: 01:32.432 (out of 01:59.446) Total uniq factories: 12 total top-level total time time per call top-level time name 309 0 80.7570s 0.2613s 0.0000s full_item 103 0 0.8972s 0.0087s 0.0000s shop_user 103 0 90.3245s 0.8769s 0.0000s item_like 103 0 88.4511s 0.8587s 0.0000s shop ... ... ... ãã®çµæãèŠããšã item_like shop ãåŒã³åºãåæ°ãš1åãããã®å®è¡æéãããã1s匱ãšé·ãããšãããããŸããããããæ®µéçã«æ¹åã®æãæã£ãŠãããŸãã æ¹å1. é¢é£ããã¬ã³ãŒããè€æ°ä»¶äœæããŠããFactoryãïŒã¬ã³ãŒãã«æžãã ããã§å®éã®ã³ãŒããèªãã§Factoryéã®äŸåé¢ä¿ãèŠãŠã¿ããšæ¬¡ã®ãããªç¶æ³ã§ããã item_like -- create --> shop â¬-- create --> full_item â-- create --> full_item â-- create --> full_item ãã¹ãã®èŠä»¶ã¯å²æãããŠããã ãã®ã§ããããã¹ããå®è¡ããããã§ full_item ã¯3ä»¶ãå¿
èŠãªããæäœ1ä»¶ã¯shopã«ã¶ãäžãã£ãŠããã°ååãšããç¶æ³ã§ããã item_like ãšããã®ã¯ãã以å€ã§ãçµæ§è²ã
ãªãšããã§äœ¿ãããŠããFactoryã§ãã»ãšãã©ã®ãã¹ãã¯æäœ1ä»¶ã®shopãã¶ãäžãã£ãŠããã°åé¡ãªãç¶æ³ã§ããã ããã§ã item_like ã®Factoryãä¿®æ£ã㊠full_item ã1ä»¶ã ãã«éå®ããŠåè§£æãããšãããæ¬¡ã®ãããªçµæãåŸãããŸããã [TEST PROF INFO] Factories usage Total: 659 Total top-level: 8 Total time: 00:36.813 (out of 01:14.075) Total uniq factories: 11 total top-level total time time per call top-level time name 103 0 32.7865s 0.3183s 0.0000s shop 103 0 27.1212s 0.2633s 0.0000s full_item 103 0 0.8971s 0.0087s 0.0000s shop_user 103 0 34.5748s 0.3357s 0.0000s item_like ... ... ... åçŽã« full_item ã®çæåæ°ã1/3ã«æžããããã«æ¯äŸããŠå®è¡æéãçŽ1/3ã«å§çž®ã§ããŸããã æ¹å2. ãã¹ãã§å¿
èŠæå°éãªã¬ã³ãŒãã®ã¿ãäœæãã å¥ã®éãããã¹ããè§£æããŠãããšãå
±éããŠåãåé¡ãèŠããŠããŸãã [TEST PROF INFO] Factories usage Total: 3157 Total top-level: 582 Total time: 02:05.161 (out of 04:30.214) Total uniq factories: 48 total top-level total time time per call top-level time name 322 6 6.2221s 0.0193s 0.1149s user_profile 276 70 74.0465s 0.2683s 5.2776s shop 230 0 63.5779s 0.2764s 0.0000s full_item ... ... ... 次ã«çç®ããã®ã¯ã full_item ã®å®è¡æéã®é·ãã§ãã1åããã 0.2764s ãšããããšã§ãããªã«é·ãæããªããããããŸããããåŒã³åºãåæ°ãéåžžã«å€ãã塵ãç©ããã°ãã®ãã¹ãã§ã¯230ååŒã°ã㊠63.5779s ã¯ç¡èŠã§ããªãå®è¡æéã«ãªã£ãŠããŸãã ãŸããŸãã³ãŒããèªãã§ã¿ããšã full_item ã¯é¢é£ããããŒã¿ãå
šéšçãã§äœã.... ãšããFactoryã«ãªã£ãŠããŸããã item ãšããã¢ãã«èªäœãã·ã¹ãã ã®äžã§ã³ã¢ãªãã¡ã€ã³ã®ã¢ãã«ãšãªã£ãŠãããéåžžã«å€ãã®é¢é£ãæã¡ãããã®ãªã®ã§ããããããã倧éšåã®ãã¹ãã«ãããŠã¯ãããŸã§å®å
šãªç¶æ
ã® item ã¯èŠããªããšããç¶æ³ã§ããã ããã§ã shop çææã®ããã©ã«ã㯠full_item ã§ã¯ãªã item ãšããã¹ãªã ãªFactoryã䜿ãããã«åãæ¿ããå床解æãããŠã¿ãããšã«ããŸããã [TEST PROF INFO] Factories usage Total: 2697 Total top-level: 582 Total time: 01:06.857 (out of 02:53.458) Total uniq factories: 47 total top-level total time time per call top-level time name 322 6 4.7178s 0.0147s 0.0844s user_profile 276 70 29.5793s 0.1072s 4.0465s shop 230 0 10.8307s 0.0471s 0.0000s item çµæã1åããã 0.2764s ããã£ãŠãã full_item ããã 0.0471s ã§æžã item ã«åãå€ãã£ãããšã§ããã®ãã¹ãã®å®è¡æéã¯ååã«ãŸã§å§çž®ã§ããããã«ãªããŸããã RSpecã®å®è¡æéã®æ¹åçµæ ä»ã«ãTestProfãçšããŠçްããªæ¹åã¯å
¥ããŠãããæçµçã«ã¯ãŒã¹ã5ã®ãã¹ãå®è¡æéã¯æ¬¡ã®ããã«å€åããŸããã spec Before After Reduce Reduce Rate Worst1 78.37s 17.55s -60.82s -77.6% Worst2 75.71s 15.73s -59.97s -79.22% Worst3 48.76s 8.28s -40.48s -83.01% Worst4 48.16s 7.84s -40.31s -83.72% Worst5 88.01s 18.1s -69.9s -79.43% Total of worst 339.01s 67.5s -271.51s -80.08% 339.01s ãã 67.5s ã«å§çž®ããããã®ææªå€ã ã£ããã¹ã5æ¬ã«éå®ããŠèšããšãå®è¡æéã8å²ä»¥äžåæžã§ããŸãããããã«äžèšã®ãã¹ã以å€ã§ãä»åæ¹åããFactoryã¯äœ¿ãããŠããããã§ãããããã¹ãã®ç·å®è¡æéã«ãå¹ããŠããããã§ãã èå¯ ä»åãTestProfãçšããŠãäœãšãªãéãããã ãããšæã£ãŠãããšãããæ³å®ä»¥äžã«ç¡é§ãªããšãããŠããããšãããããŸããã ããšããããããã©ã«ãã§å
šéšå
¥ãã®ãã¹ãããŒã¿äœã£ãŠãããïŒããšããã®ã¯ããšãããã°ãããã¡ã§ãããæŽå²ã®é·ãã³ãŒãããŒã¹ã ãšæ°ã¥ãã«ããããã«æããŸããã ãæšæž¬ãããªãèšæž¬ããããšããèšèããããŸãããå®éã«èšæž¬ããŠæã¡æããã³ãã€ã³ãã«æã£ãŠããããšã§ãçå®ã«æ¹åããŠããæèŠãåŸãããŠåšå²ã«ã説æããããã£ãã®ãåŠã³ã§ãã ãŸããä»åFactoryã®æåã倧èã«å€æŽããããšã§å®è¡æéåæžãå®çŸããŠããŸãããããã¯åžžæ¥é ã¿ããªããã¹ãã³ãŒããããªãæåãæžããŠããŠãããããããšããã®ã倧ããã§ããã·ã¹ãã ãå£ããªãããšãæ
ä¿ãããããäžå®ãšæŠãããã«æã
ã¯ãã¹ããæžãããã§ããããã¹ãèªäœã®ãªãã¡ã¯ã¿ãªã³ã°ã«ããã¹ãã³ãŒããæå¹ã§ãããšããããšã¯åŠã³ã«ãªããŸããã ãã¡ã€ã³ãã£ã¯ç©æ¥µçã«ãšã³ãžãã¢ãæ¡çšããŠããŸããCI/CDãå§ããFour Keysãéçºçç£æ§ãæè¡ãã¬ã³ãã転è·åžå Žãªã©èå³ã®ããæ¹ã¯ããæ°è»œã«ã«ãžã¥ã¢ã«é¢è«ãåããŠã¿ãŠãã ãã :) ãã¡ã€ã³ãã£ã®æ¡çšæ
å ±ã¯ãã¡ãâ herp.careers
ããã«ã¡ã¯ã Findy ã§ Tech Lead ãããããŠããã£ãŠãæžç°ã§ãã Findy 瀟㮠Tech Blog ãéèšã㊠1 ã¶æçšåºŠãçµãšããšããŠããŸãã ãã®ããã°ãéããŠåŒç€Ÿã®æè¡æ
å ±ã ãã§ãªã瀟å
ã®ãšã³ãžãã¢ã®ããšããã£ãšç¥ã£ãŠã»ãããšèããçµæãä»åãã èªæ
¢ã®äœæ¥ç°å¢ã倧å
¬é ãšé¡ããŠã瀟å
ã®ãšã³ãžãã¢ã®äœæ¥ç°å¢ãšãããã«å¯Ÿããèãæ¹ãæããªã©ãçºä¿¡ããŠããäºã«ãªããŸããã åŒç€Ÿã®ãªãã£ã¹ã¯æ±äº¬ã«ãããŸãããåã¯åæµ·éãåã¯çŠå²¡ãŸã§é éå°ããã®ãã«ãªã¢ãŒãã§ JOIN ããŠãããšã³ãžãã¢ã倿°åšç±ããŠãããŸãã ãšã³ãžãã¢ã®å€ããåèªã®èªå®
ããäœæ¥ããŠããããã£ãšèªåã«ãšã£ãŠã®æé«ã®ç°å¢ãæŽããŠããã¯ãã§ãïŒ ããã§ã¯ãåŒç€Ÿãšã³ãžãã¢éã®èªæ
¢ã®äœæ¥ç°å¢ãèŠãŠãããŸãããïŒ äœæ¥ç°å¢ã倧å
¬é æžç° ãšããããã§ååã¯çŠå²¡ãã JOIN ããŠãã Tech Lead ã®æžç°ã®äœæ¥ç°å¢ãã玹ä»ãããŠããããŸãã äœæ¥ã¹ããŒã¹ã®å
šäœåã¯ãããªæãã§ã åºæ¬çã«ã¯ DELLã®32 ã€ã³ãã® 4K ã¢ãã¿ ã䜿ããã¯ã©ã ã·ã§ã«ã¢ãŒãã§äœæ¥ãããŠããŸãã ã¹ããŒã«ãŒ ã¯ã¢ãã¿ã®ã¢ãŒã éšåã«æ¥ç¶ããŠãããã€ã€ãã³ãç¹ããŠãã¿ã³äžåã§åºååãæ¿ããå¯èœãªã®ã§ãæ®æ®µã¯ã¹ããŒã«ãŒã䜿ãéãã«ãããæã¯ã€ã€ãã³ã䜿ãããšããããšãç°¡åã«åæ¿å¯èœã§ãã Web ã«ã¡ã© ãš ãã€ã¯ ã¯å¥é賌å
¥ããŠå€ä»ãã§å©çšããŠããŸãããªã¢ãŒãã§ã®äœæ¥ãã¡ã€ã³ãšãªããããæ åãé³å£°ç°å¢ã¯æäœéã®ãããŒãšæãæè³ããŸããã ãã¹ã¯ã¯ bauhutte ãšããã¡ãŒã«ãŒã® æéãã¹ã¯ ã䜿ã£ãŠããŸãã ãã®æéãã¹ã¯ã¯é»åã§ãã¿ã³äžã€ã§é«ããèªç±ã«å€æŽã§ããæšªå¹
ã奥è¡ãã倧ããã®ã§è²ã
ãªäœæ¥ã·ãŒã³ã«åãããŠå©çšããããšãåºæ¥ãã®ã§éåžžã«ããããã§ãã ãããŠå®å¿ãšä¿¡é Œã®ãã°éæ£ãå®ããCI ãéããšããéèŠãªãªãªãŒã¹ã®åã«ç¥ããæ§ããŸãã æå
åšãã¯ãããªæã ããŒããŒã㯠HHKB Professional HYBRID Type-S ã䜿ã£ãŠããŸãã ä»ãŸã§è²ã
ãªããŒããŒãã詊ããŸããããã®çµæãå人çã«äœæ¥çµäºåŸã®æå
ã®ç²ããäžçªå°ããæããã®ã¯ãã®ããŒããŒãã§ããã ç¹æ®ãªããŒé
åã§ãããæ
£ãããã³ãŒããæžãããã³ãã³ãã©ã€ã³ãå©ãããããããããŒããŒãã ãšæããŸãã ããŠã¹ã¯ Apple ã® Magic Trackpad ã䜿ã£ãŠããŸããããŠã¹ã«å¯Ÿããæãã¯ãªããŠãæ£çŽ Mac ã®ã·ã§ãŒãã«ããã¢ã¯ã·ã§ã³ã䜿ããã°äœã§ãããã§ããæ©ããã«ããã¢ãªã³ã°ã«å¯Ÿå¿ããŠæ¬²ããã§ãã ãŸããå€ããçš®ãšããŠã¯æã®çãã¬çšå
·ãæå
ã«çœ®ããŠãŸãã äºã®çºç«¯ã¯æ Œã²ãŒãããŠãæã«æã£ãŠããããæãåããªããŠãã人é¡ã¯è¬æãšå°æãæã£ãŠããã䜿ã£ãŠãªããªïŒããšæãããã®äºæ¬ã®æãéããããã«è²·ããŸããã ãªã¢ãŒãäŒè°äžãšããã³ãŒããèããŠãæãšããã£ãšããã§æãéããŠãŸããããã§éãã ããŠããè¬æãšå°æãã¹ã ãŒãºã«åãããã«ãªããããŒããŒãã®ã¿ã€ãã³ã°ãä»ãŸã§ãããã¹ã ãŒãºã«ãªã£ãæ°ãããŸãã äœæ¥çš BGM 㯠HomePod mini ãš Apple Music ã®åããæã䜿ã£ãŠããŸãã iPad ã HomePod mini ãšãã¢ãªã³ã°ãããŠããµãã¹ã¯ã«ã¯æ°æ²ããµã³ãã©ãã©ãã©ã远å ãããŸãã äœæ¥ã¹ããŒã¹ã®æšªã«ã¯è¶£å³ã®ãã©ã¢äœæã¹ããŒã¹ããåŸãã«ã¯æ¬æ£ãšãã©ã¢ã±ãŒã¹ãšç©ã¿ãã©ã èªåã®å¥œããªãã®ã«å²ãŸããŠãããšããã®ã¯ãæ¯æ¥ïŒäººã§é»ã
ãšäœæ¥ããç°å¢ãšããŠã¯æ³å以äžã«éèŠã ãšæããŸãã æ¯æ¥éšå±ã«ç± ãã£ãŠ1人ã§äœæ¥ããŠããã®ã§ãäºæã«å
¥ããã®ã§é£œããæ¥ãªãç°å¢ãäœãããšã倧äºã ãšæããŸãã çé 鿣®ãããã«ãªã¢ãŒãã®çéïŒ @shoota ïŒã§ãã ãã«ãªã¢ãŒã㯠2017 幎å€ããã§ 7 幎ç®ã«ãªããŸãã ãŸãã¯ã¡ã€ã³ã®ãã¹ã¯ããã èªå®
ã«åãä»ãã®ãã¹ã¯ MacBook Pro 16â ãããŒãçšã¹ã¿ã³ãã«èŒãããã¥ã¢ã«ãã£ã¹ãã¬ã€ã§äœæ¥ãããŠããŸãã MacBook ãã£ã¹ãã¬ã€ã¯åºæ¬çã«ã¯ Slack å°çšã§ãã»ãŒãã¹ãŠã®äœæ¥ã¯ å€éšãã£ã¹ãã¬ã€ + ä»®æ³ãã¹ã¯ãããã§ããªããŠããŸãã å€éšãã£ã¹ãã¬ã€ã¯ DELL ã® 4K ããã¢ãã¿ãŒ ã«ä»äºçšã® MBP ãšå人çšã® Mac mini ãç¹ãã§ããŠãç»é¢ãåãæ¿ãããšæ¥ç¶ããŠããããŒããŒããèªåã§åãæ¿ããã®ãæ°ã«å
¥ã£ãŠããŸãã ãã¹ã¯ã©ã€ãã Amazon Alexa ã«æ¥ç¶ãããã¹ã¯å·ŠåŽã® Amazon Echo ããé³å£°æäœã§ããããã«ããŠããŸãããã¹ã¯ããé¢ããããšã«ã©ã€ãã®æ¶ãå¿ãã«æ°ã¥ãã®ã§ãé ãããã§ã声ã§ã©ã€ãã®ãªã³ãªããã§ããã®ã䟿å©ã§ãã Echo 㯠Spotify ãªã©ã®é³æ¥œåçãããããä»ã®å®¶é»ã®æäœã«ã䜿ã£ãŠããŸãã ãã¹ã¯å³åŽã¯ Anker ã®ç¡æ¥å°ã¿ã€ãã®å
é»åš ã§ iPhone ã®ã¹ã¿ã³ãã€è¡šç€ºãããŠããŸãã ãã®é£ã«ã¯ iPad mini ããããŠããŠãã¡ãã£ãšããã¡ã¢ãããããäœæ¥ãããªãããªã³ã©ã€ã³ã€ãã³ããèŠãããããšãã«äœ¿ã£ãŠããŸãã å
šäœçã«é»ã§çµ±äžããã®ã奜ãã§ããã©ãã¯ããã ã ããçœãªã®ã§ããããé»ã®æ¹ã«è²·ãæ¿ãã¡ãããããªãšæã£ãŠããŸãã ããŒããŒã㯠Keychron ã®åé¢åŒããŒããŒã Keychron Q11 QMK Custom Mechanical Keyboard ããã€ã³ãããã€ã¹ã¯ Magic Trackpad2 ã§ãã åé¢åŒããŒããŒã è©ãããã²ã©ããªããããã®ã§åé¢åŒããŒããŒãããã£ãšäœ¿ã£ãŠããŸãããQ11 ã¯ããŒã¹ã€ããããšäº€æãããããŒãããã®ã«ã¹ã¿ãã€ãºãç°¡åã§ã倿©èœãªã®ã§ããªãæ°ã«å
¥ã£ãŠããããŒããŒãã§ãã ããŸã¯èµ€è»žã¹ã€ãããšæšæºä»æ§ã®ããŒãã£ãããªã®ã§ãããããããŒãã£ãããå€ããããªããšæã£ãŠãããšããã§ãã ãŸããã«ãªã¢ãŒããšããŠã¯ãããªé話ã®å質ã倧äºã«ãããïŒèªå®
ã§ã¯åã©ããã¡ã®å£°ãªã©ã®ç°å¢é³ãæ··ãããããã®ã§ãèªåãé³é¿ã¯ãã£ãããšçšæããŠããŸãã ãã€ã¯ã¯æåæ§ã® Yeti Nano ã§èªåã®å£°ã ããå
¥ãããã«ã¹ã¿ã³ãèšçœ®ããŠããŸãã Yeti 以åã¯ãããã»ããã䜿ã£ãŠããŸãããããããããç©çã¹ã€ããã§ãã¥ãŒãã§ãããããšããã ããã§ãã æ¥ã«ãããã¿ããããšãã«ãœãããŠã§ã¢ãã¥ãŒãã¯éã«åããªãã®ã§ éã«åºååŽã¯åšãã®é³ãèãããªããšäžäŸ¿ãªã®ã§ããªãŒãã³ã€ã€ãŒã¿ã€ããæçšããŠããŠãããŸã¯ shokz ã® OPENFIT ã䜿ã£ãŠããŸãã æåæ§ãã€ã¯ æåŸã«ãã¹ã¯ã®åŸãã« DIY ã§äœã£ãã³ããã¯æ£ãããã®ã§ãèªæ
¢ããŠãã«ç޹ä»ããããšæããŸãã èªåã奜ããªãã®ãéãããã®ã«å²ãŸããŠä»äºãããã®ã奜ããªã®ã§ãã³ããã¯ïŒãã¶ã 800 åããããããŸããããæ°ãåããŸãããïŒãã²ãŒã ã°ããºããæ°ã«å
¥ãã®ãŠã€ã¹ããŒããããŠããŸãã å®å
šçãå«ããè·éèšç®ãããŠèšèšå³ãã€ãããéšæã®åãåºãããçµç«ãŠãåãä»ããŸã§ã²ãšãã§ãããŸããã ã ããã 2 äžå匷ãããã§ãã¹ãŠæããå
æ¥ã®é床 5 以äžã®å°éã§ã ã³ããã¯ã¯ 1 åãèœã¡ãŸããã§ããã 2023 幎äžåæã®ç·äŒã Fine-day ã§ MVP ãåè³ ãããšãã®ãããã£ãŒã食ã£ãŠããŸãã DIYæ¬æ£ãšMVPãããã£ãŒ ä»äºå Žã§ãããªããèªåããããåºãã€ã€ãä»äºã«ãããèªåãªãã®ãå¿«é©æ§ / åçæ§ããæ±ãããã¹ã¯ã«ä»äžãã£ãŠãããšæã£ãŠããŸãã äž»èšïŒãããïŒ çŠå²¡ãããªã¢ãŒãã§ããã³ããšã³ãã®éçºãããŠããäž»èšïŒ @nesskazu ïŒã§ãã ãã¹ã¯ã®å
šäœåã¯ãã®ãããªæãã§ãã ãã¹ã¯å
šäœ 4k ãã£ã¹ãã¬ã€ã 2 æé
眮ãã³ãŒãã£ã³ã°ããªãããããã°ã§ããããã«ããŠããŸãã ããŒãã£ã³ã°æã«ããã¥ã¡ã³ãçãåç
§ã§ããã®ã䟿å©ã§ãã ãµãã¢ãã¿ãŒã¯ãããã°ãããããwebçã®é²èЧæ§ãè¯ããã瞊é
眮ã«ããŠããŸãã ã³ãŒãã£ã³ã°ãšãããã°ã®ç»é¢é
眮 Thunderbolt ã±ãŒãã«ã§äŒç€Ÿæ¯çµŠ PC ãšç§çš PC ã§å
šãŠã®æ©åšã®æ¥ç¶ãåãæ¿ããããã«ããŠããŸãã ãããã³ã°ã¹ããŒã·ã§ã³ã«ã¯ CalDigit TS3 Plus Dock ã䜿çšããŠããŸãã Thunderboltã±ãŒãã«1æ¬ã§PCåæ¿ ãããã³ã°ã¹ããŒã·ã§ã³ ããŒããŒãã¯éé»å®¹éç¡æ¥ç¹æ¹åŒãã¡ã«ãã«ã«ãªã©ãããã詊ããŠããŸãããã èªåã¯ããŒã¹ãããŒã¯ã®æ·±ãããŒããŒãã¯èŠæïŒç²ãã&ã¿ã€ããã¹å€ãïŒãªããšãããã£ãã®ã§ããŒã¹ãããŒã¯ãæµ
ãããŒããŒãã䜿ã£ãŠããŸãã MX Keys mini ããæ°ã«å
¥ãã§ããããéäžãããã£ã¿ãªã³ã°ãçºçããã Touch ID ãæ¬²ããã£ãã®ã§çŸåšã¯ Apple Magic Keyboard ãæçšããŠããŸãã ãŸããåãæ¿ããå
é»ã®æéããªããããæç·ã§æ¥ç¶ããŠããŸãã Apple Magic Keyboard ãªã¢ãŒãã¯ãŒã¯ãšããããšãããããŒãã£ã³ã°ãçžæãšèªååæ¹ã«ãšã£ãŠå¿«é©ãªãã®ã«ãªãããã«æ§ç¯ããŠããŸãã ãã€ã¯ã¯åšå²ã®é³ãæŸãã«ãããã€ãããã¯ãã€ã¯ïŒSHURE MV7ïŒãæ¡çšããŠããŸãã ã«ã¡ã©ã¯ãªãã¹ãç®ç·ã®é«ãã«åãããã«ãã£ã¹ãã¬ã€éã®ã¹ããŒã«ãŒã®äžã«èšçœ®ããŠããŸãã ãã€ã¯ãšã«ã¡ã© ããŒãã£ã³ã°ã BGM ã®é³ã¯ OWNDAYS ã® HUAWEI Eyewear ã§èããŠããŸãã æ®æ®µã¡ã¬ãä»ããŠãã人ã§ããã°ã¡ã¬ããå€ããã ãã§ã¹ããŒã«ãŒãçããŠããã®ã§äŸ¿å©ã§ãã ããŒãã£ã³ã°ã®ãã³ã«ã€ã€ãã³ãè£
çãããããå¿
èŠããªããªããŸããæè¿é»æ± æã¡ãæªãæŒäŒã¿ã«å
é»ããå¿
èŠããããã Eyewear2 ã®è³Œå
¥æ€èšäžã§ãã Eyewear ã䜿ãåããŠããäŒã¿ã®æ¥ã«ããã³ã³ã¿ã¯ãã䜿ããªããªããŸããã Eyewear æãå®¶ã§ããã°éæ£ã®ãå®ããåŸãããèŠå®ã£ãŠãããŠããŸãïŒ ãã°éæ£ãå®ã ãã®ããã«ä»äºãããããã§äžäŸ¿ãªç¹ãæé€ããå¿«é©ã«äœæ¥çãã§ããããã«æèããŠãã¹ã¯ãæ§ç¯ããŠããŸãã ãŸãšã ãããã§ããã§ããããïŒ çŸåšããã¡ã€ã³ãã£ã§ã¯äžç·ã«åãã¡ã³ããŒãåéäžã§ãã èå³ãããæ¹ã¯ãã¡ããã â herp.careers
ããã«ã¡ã¯ãããã°ãã¯ã éçºçç£æ§ã®å¯èŠåã»åæããµããŒããã Findy Team+ ã®ããã³ããšã³ã ãªãŒããããŠãã @shoota ã§ãã Findy Team+ã¯ãšã³ãžãã¢çµç¹ã®éçºçç£æ§ãå¯èŠåããéçºããŒã ããšã³ãžãã¢ãªã³ã°ã¡ã³ããŒã®ããã©ãŒãã³ã¹ãæå€§åããããã®æ¯æŽãããŠããŸãã ãããŠïŒåœç¶ã®ããšãªããïŒFindy Team+ ãäœã£ãŠããèªåãã¡ããããŒã ãå人ã§ããã°ããŒãã£ã³ã°ãããŠãããŒã ãèªåèªèº«ã®åãæ¹ããšã³ãžãã¢ãªã³ã°çµç¹ã®å¥åº·ãã§ãã¯ãããŠããŸãã ä»åã¯ãã㪠Findy Team+ã®éçºããŒã ã®ãã¡ãããã³ããšã³ãããŒã ãã©ã®ãããªéçºç°å¢ã»éçºã€ã³ãã©ã§åããŠãããã®æŠèŠãã玹ä»ããããšæããŸãã ããã³ããšã³ãæè¡ã¹ã¿ãã¯ãšCIé«éå æè¡ã¹ã¿ã㯠ãŸãã¯ããã«ããã³ããšã³ãã®æè¡ã¹ã¿ãã¯ãç°¡åã«ç޹ä»ããŸããäžè¬çãªSPAæ§ç¯ã®æè¡ã¹ã¿ãã¯ãæ¡çšããŠãããããã»ã©ç¹å¥ãªãã®ã§ã¯ãªãããšããçè§£ããã ãããšæããŸãã React React Router Redux TypeScript GraphQL Apollo Client GraphQL Codegen Emotion Storybook Testing Jest @testing-library/{react,jest-dom,user-event} reg-suit Linter / Formatter ESLint Stylelint Prettier ãããŸã§ã¯ããããäžè¬çãªSPAã®æ§æã§ãããFindy ã®ããã³ããšã³ãã¯ã¢ãã¬ã管çããŒã«ã§ãã Nx ãå©çšããããšã§é«éåãå³ã£ãŠããŸãã Nxã®æ©èœè©³çްã«ã€ããŠã®èª¬æã¯ããã§ã¯çç¥ããŸããããããããŒãžã«ãSmart Monoreposã»Fast CIããšããéããCIã®é«éåãç°¡åã«ç®¡çã§ãããšãããæå€§ã®ç¹åŸŽã𿩿µã ãšæã£ãŠããŸãã Nxã§CIãé«éåãã Nxã¯å
éšã«è€æ°ã®ãããžã§ã¯ããæã€ããšãã§ããäžã€ããããã®äŸåé¢ä¿ãèªåã§è§£æããŸãã ãã®ããããžã§ã¯ãã®äŸåé¢ä¿ããããšã«ããã«ãªã¯ãšã¹ãã§ã®ã倿Žããããããžã§ã¯ãããšããã®ã倿ŽéšåãäŸåããŠãããããžã§ã¯ããã®ã¿ã®ãã¹ããå®è¡ããææ®µãæäŸããŠããŸãã ããã«ãã£ãŠéçºè
ãéçºããŠãããã®ã«é¢ä¿ã®ãªãéšåã¯çç¥ãããããCIãé«éåããŸãã ãã以å€ã®å€æŽã«ã€ããŠãNx Cloudã«ãã£ãã·ã¥ãæ®ã£ãŠããã°ãã®çµæãæ¡çšããŠãã¹ãçããã¹ãããCIãé«éã«å®äºããŸãã CIã®å®è¡çµæãèŒããŠã¿ãŸããã GitHub Actionsã®æ§å å
±éã®hooksãä¿®æ£ããŠã3段ç®ã®ãã«ãªã¯ãšã¹ãã§ã¯ã»ãŒå
šãŠã®ãã¹ããå®è¡ïŒãããŠæ°ãã«ãã£ãã·ã¥ïŒããŠããããã20å以äžã®ãã¹ãæéãããã£ãŠããŸãã äžæ¹ã§ãã®ä»ãã¿ãŠã¿ããšãæ°ããç»é¢ãªã©ã®éåžžéçºã®å Žåã¯å€æŽå
容ããããžã§ã¯ãå
ã§å®çµããŠããã®ã§ãCIã®å®è¡æéã¯æ°åã§çµãã£ãŠããŸãã ãŸãåã«CIãé«éåããã以å€ã«ããNxã¯éçºçç£æ§ã®åäžã«å¯äžããŠãããŸãã ãã㯠ããã«ãªã¯ãšã¹ãã¯ã§ããã ãå°ããäœããããšããéçºæåããCIæéããšããæ°å€ã§å¯èŠå ããŠãããããšã§ãã åè¿°ã®éããã«ãªã¯ãšã¹ãã®å€æŽã®äŸåé¢ä¿ãå°ããã»ã©CIã¯æ©ãçµãããŸãã®ã§ãéã«ãã«ãªã¯ãšã¹ããåºç¯ãªç¯å²ã§å€§ãããªã£ãŠããŸãã»ã©CIæéãé·ããªããŸãã ãã«ãªã¯ãšã¹ãã®ç²åºŠã倧ãããšã1) CIãé
ããªãã2) ã¬ãã¥ãŒäŸé ŒãããŸã§ã®æéã空ããŠå¿ããã¡ã«ãªãã3) ã¬ãã¥ãŒéãå€ããŠæéãããããšããæªåŸªç°ã«é¥ããŸãã ããã§ãã«ãªã¯ãšã¹ããäœãåŽã¯ã©ãã«ããããé¿ããããšããååŠãåããCIãé«éã§ããã°äœæ¥å
容ã«éäžããã¬ãã¥ãŒææã®åå¿ãä¿®æ£ã楜ã«ãªã£ãŠããã®ã§ãã ãã«ãªã¯ãšã¹ã / ã¬ãã¥ãŒã«åå¿ãã åè¿°ã®éãNxã®äŸå管çãåºç€ãšããŠCIãé«éåããŠããŸãããFindy ã§ã¯ã¬ãã¥ãŒäŸé Œãã¬ãã¥ãŒã³ã¡ã³ããªã©GitHubã§ã®ããåããSlackã«ç§»æ€ããŠã³ãã¥ãã±ãŒã·ã§ã³ã®ããªã¬ãŒãéç¥ããŠããŸãã å®éã®Slackã®ç»é¢ã¯ãèŠãã§ããŸãããã以äžã®ãããªã¿ã€ãã³ã°ã§Slackã«ç¶æ³ã宿³ãããã¬ãã¥ãŒäŸé Œãæ¥ãå Žåã¯éç¥ããããŸãã ãã«ãªã¯ãšã¹ããäœã£ãæ ãã«ãªã¯ãšã¹ãã«ã³ã¡ã³ããããæ ãã«ãªã¯ãšã¹ããApproveãããæ ãã«ãªã¯ãšã¹ããããŒãžïŒã¯ããŒãºïŒããæ ãŸãGitHubæšæºã®Slackã¢ã©ãŒãæ©èœã䜵çšããŠããŠãã¬ãã¥ã¯ãŒã«ã¢ãµã€ã³ããããŸãŸã®ãã«ãªã¯ãšã¹ããããã°1æéããšã«éç¥ãããŸãã ããã«ãã£ãŠãã¬ãã¥ãŒäŸé Œã«æ°ã¥ããªãã£ããç¶æ³ãæžãããã¬ãã¥ãŒãæŸçœ®ãã¿ã®ãšãã«ã¯ããªã«ãäºæ
ãããã®ããªïŒäœæ¥ã«å
¥ããªãç¶æ³ããªïŒããšå¯ããããã¬ãã¥ã¯ãŒã倿Žãããªã©ã®å¯ŸåŠãã§ããŸãã ãã®Slack Appã¯åŒç€Ÿããã¯ãªãŒãã® github-to-slack-notification ãããŒã¹ã«æ§ç¯ãããŠããŸãã Findy謹補ã®Slackéç¥App ãã«ãªã¯ãšã¹ããåé¡ãã Findy Team+ ã¯ãéçºã¡ã³ããŒãéçºããŒã ããªããžããªããã«ãªã¯ãšã¹ãã®ã©ãã«ãæ¥æãã«ã¬ã³ããŒæ
å ±ãªã©ã®è€æ°ã®æ¡ä»¶ããã£ã¡ã³ã·ã§ã³ãšããŠãå人ãããŒã ã®ãªãŒãã¿ã€ã ãã¢ã¯ã·ã§ã³æ°ãªã©ã®ããã©ãŒãã³ã¹ãèšæž¬ã§ããŸãã ãã«ãªã¯ãšã¹ãã¯æ©èœéçºããªãã¡ã¯ã¿ãªã³ã°ããã°ä¿®æ£ãããã¥ã¡ã³ããŒã·ã§ã³ãªã©å
å®¹ãæ§ã
ã«ãªã£ãŠããŸããããããã©ãŒãã³ã¹ãã©ã®ãããªéšåã§çºæ®ãããŠããããåé¡ããã®ã¯éåžžã«å°é£ã§ãããTeam+ã§ã¯ãã«ãªã¯ãšã¹ãã®ã©ãã«ãå©çšããŠäžå®ã®åé¡ãã§ããããã«ããŠããŸãã ãããäžæ¹ã§ãããã«ãªã¯ãšã¹ãã«ã©ãã«ãã€ããŠããããšããäœæ¥ãå®åžžçã«ããã¹ãŠã®ãšã³ãžãã¢ããæŒããªããééããªãã宿œããŠããã®ã¯ãã«ãªã¯ãšã¹ãã®åé¡ä»¥äžã«å°é£ãªããšã§ãããã SlackãèŠè¿ããšå
¥ç€Ÿ3æ¥ç®ã®èªåããããªãæ¬è³ªãã€ããŠããŸãã ã©ãã«éçšã«ã€ããŠæ°ã¥ãshoota ããæã£ãŠãããšããç§ã«ããããŸããã Findy Team+ã®ããã³ããšã³ãã®ãã«ãªã¯ãšã¹ãã¯èªåã§ã©ãã«ãã€ããŠããŸãã ããããgitäžã®å
šãŠã®ã³ããã㯠Conventional Commits ã«åãããã commit lint ã§å¶çŽãèšããŠããŸãã ãããŠãã«ãªã¯ãšã¹ãã®ã¿ã€ãã«ãConventional Commitsã®åœ¢åŒã«ããããã«ã«ãŒã«åããŠããã®ã§ããã«ãªã¯ãšã¹ãã®ã¿ã€ãã«ã«ã¯ãããã®æ¥é å¥ãå¿
ãããããããæ€ç¥ããŠGitHub Actionsã§åé¡ã察å¿ãããã®ã«ã©ãã«ãã€ããããã«ããŠãŸãã ãã«ãªã¯ãšã¹ãã®çš®é¡ã¯ãã¿ã€ãã«ããèªåã§åé¡ãããŠãã ãããã€ãã å°ããªãã«ãªã¯ãšã¹ããç¡äºã«ããŒãžããããããããã€ããŠãããŸããTeam+ ããã³ããšã³ãã¯ãGitHub Actionsã® schedule cronãå©çšããŠäžæ¥ã«2å宿ãããã€ãããŠããŸãã gitã¯git-flowãããŒã¹ã«ããéçšããã€ã€ããã«ãªã¯ãšã¹ããã³ãã¬ãŒãã«ãªãªãŒã¹æã«å¿
èŠãªç¢ºèªé
ç®ãå
¥åããæ¬ãèšãããªãªãŒã¹æã«ã¯ãã®ç¢ºèªé
ç®ãèªåçæããããã«ãªã£ãŠããŸãã ãŸãã¯gitã®éçšãããŒãç°¡åã«å³åŒåããŠã¿ãŸããã ãã©ã³ãéçš â» ã®éšåã¯ãªãªãŒã¹çšãã«ãªã¯ãšã¹ãã®commit hashãmasterããdevelopãžç§»åããããã®æäœã§ãåºæ¬çã«ã¯å·®åã¯çºçããªããã®ã§ã developãã©ã³ãã宿éã§ãªãªãŒã¹çšãã©ã³ãã«æŽŸçããŠãã¹ããŒãžã³ã°ã«ãããã€ããŸãã ãã®ãšãã®äž»ãªãã§ãã¯é
ç®ãšããŠã ããã¯ãšã³ãã§å
è¡ãããã«ãªã¯ãšã¹ãããªããïŒããå Žåã¯ãã®ãã«ãªã¯ãšã¹ãã®ãªã³ã¯ïŒ APIã¬ã¹ãã³ã¹ã®å€åããšã©ãŒãã³ããªã³ã°ãåŸæ¹äºææ§ãªã©ãéçºè
ã®ã¿ã確èªã§ãã確èªé
ç®ããªãã å®è£
æ©èœãšæ³å®ä»æ§ã®åèŽãªã©ãæ©èœãªãªãŒã¹ã®ããã®QAãå¿
èŠã§ãªãã ããã«ãªã¯ãšã¹ããã³ãã¬ãŒãã§èšèŒããããã«ããŠããããªãªãŒã¹ãã«ãªã¯ãšã¹ãã«ã¯ããããã¹ãŠãåæããŠç°¡æçãªãªãªãŒã¹å€å®ãè¡ã£ãŠããŸãã ãŸãšã ä»å㯠Findy Team+ ã®éçºãããŒã«çŠç¹ãããŠãŠããã€ãã®èŠçŽ ãã玹ä»ããŸããã ãã以å€ã«ãããŸããŸãªããŒã«ããµãŒãã¹ãå©çšããŠå質ãšã¹ããŒããäž¡ç«ãããããã®éçºåºç€ãæã£ãŠããŸãããã²ãšããšã§ã¯ãäŒããã«ãããã®ãããã®ã§ããããããã詳现ãªèšäºã§ã玹ä»ããŠè¡ããã°ãšæããŸãã ã¹ããŒããæèããããã³ããšã³ãé åã®éçºç°å¢ãšããŠé«ãã¬ãã«ã§æŽåããå¯èŠåããŠæ¹åããããã«å¿ãããŠããŸãã èªåã®éçºèœåãã¹ããŒãããã«ã«çºæ®ããããšããæ¹ã¯ããã²äžã®æ¡çšæ
å ±ãããããã ããã herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£æ ªåŒäŒç€Ÿã§æ©æ¢°åŠç¿ãšã³ãžãã¢ãããŠããŸãsasanoshouta( @Edyyyyon )ã§ãããã®èšäºã¯ãèšèªåŠçåŠäŒç¬¬30å幎次倧äŒïŒNLP2024ïŒã«ç€Ÿã§åããŠãã©ããã¹ãã³ãµãŒãšããŠåå ããŠããŸããã®ã§ããã®åå å ±åã«ãªããŸãã NLP2024ãšã¯ïŒ èšèªåŠçåŠäŒç¬¬30å幎次倧äŒïŒNLP2024ïŒã¯ïŒ2024幎3æ11ïœ15æ¥ã®æéïŒ5æ¥éã®æ¥çšã§éå¬ããããŸãïŒãã¥ãŒããªã¢ã«ã¯3æ11æ¥ååŸ1æã«éå§ïŒæ¬äŒè°ã¯3æ11æ¥ååŸ4æåãã14æ¥ååŸ7æãŸã§ã®4æ¥éã§ãïŒçŸåšïŒçŸå°ãšãªã³ã©ã€ã³ã®ãã€ããªããéå¬ã®åœ¢æ
ã§æºåãé²ããŠããŸãïŒçŸå°ãšãªã³ã©ã€ã³ã®äž¡æ¹ããåå ãïŒçºè¡šã»èŽè¬ã»è°è«ãããããšãã§ããŸãïŒ *1 å€§äŒæŠèŠã¯åŒçšæã®éãã§ãä»å¹Žã¯ç¥æžããŒãã¢ã€ã©ã³ãã®ç¥æžåœéäŒè°å Žã§éå¬ãããŸããã åå ã®èæ¯ ä»åååå ãšãªããŸãããã¹ãã³ãµãŒããã«è³ã£ãèæ¯ã¯ä»¥äžã®éãã§ãã æ©æ¢°åŠç¿ãããŒã¿ãµã€ãšã³ã¹ãåããšããããŒã¿ç³»è·çš®ã»çéãžã®èªç¥æ¡å€§ãæã¡æãè¶³ããŠãããããã®è¶³ããããšããŠã®ã¹ãã³ãµãŒã ãã¡ã€ã³ãã£ã§ãããŒã¿ç³»è·çš®ãçµ¶è³åéããŠããããããããæ©æ¢°åŠç¿ãããŒã¿ãµã€ãšã³ã¹ã«ãåãçµãã§ããäŒç€Ÿã§ãããšã®èªç¥ãåºããããŠããªãã®ã§ããäœãïŒãªãïŒã©ã®ããã«åãçµãã§ããã®ãïŒããç¥ã£ãŠé ããã ããšã³ãžãã¢éçºãæ¯æŽããäŒæ¥ãã§ããããšãã¢ããŒã«ã§ããŠããäžæ¹ã§ãå®ã¯å
éšã§ããŒã¿æŽ»çšã»æ©æ¢°åŠç¿ã䜿ã£ãŠããäºã®èªç¥ãåºããããŠããªãèæ¯ãããããŸãã¯ç¥ã£ãŠé ããããšèšãäºã§ãä»åã¹ãã³ãµãŒãšããŠåå ããŠããŸããã äŒå Žã®é°å²æ° åè¿°ã®éããåŒç€Ÿã§ã¯NLP2024ãå«ãåŠäŒãžã®åå çµéšãå
šããªãã£ãã®ã§ãéå»ã®NLP202X幎床ã®é°å²æ°ããä»ç€Ÿããã®éå»åå èšäºãåèã«æºåãé²ããŠããŸããããŸããç§èªèº«ãä»ååè¡ããã¡ã³ããŒã®äžã«ãåŠäŒåå çµéšè
ãæ°åããäºããããæ®æ®µåŒç€Ÿãåå ããã«ã³ãã¡ã¬ã³ã¹ã€ãã³ããªã©ãããå°ããã£ã¡ããšããæºåãé²ããŠããŸãããããåœæ¥äŒå Žã«çããŠã¿ããšæ³åããŠãããããã©ãã«åå ã§ããããªé°å²æ°ã§ãããïŒçè
ãæåŸã«åå ããŠããé ã®åŠäŒãX幎åã§ãçé¢ç®ãªé°å²æ°ã®å°è±¡ããã£ãçºããæãæµããŠåå ããããé°å²æ°ã«ãªã£ãŠããã®ã¯é©ããŸãããïŒ ãã¹ã¿ãŒã»ãã·ã§ã³ã®é°å²æ° åŒç€Ÿã¹ãã³ãµãŒããŒã¹ ãã¡ãã®ç»åã®ãæ²ç€ºã¹ããŒã¹ãå°ããã®å¯ãããªããŒã¹ããã¡ã€ã³ãã£ã®ã¹ãã³ãµãŒããŒã¹ã«ãªããŸãããã¹ã¿ãŒã®çšæãéã«åããªãã£ãçºãèŠèã®çãšããŠåŒç€Ÿã®ããŒã¿ç³»è·ç𮿡çšè³æãå°å·ããŠæ²ç€ºããŠããŸããã åŒç€Ÿã¹ãã³ãµãŒããŒã¹ã®é°å²æ° ã©ãããŠãããªã«å¯ãããªã£ãŠããŸã£ãã®ããšèšããšãããšããšçè
ããã¹ã¿ãŒæºåæ
åœã ã£ããã§ãããçŽåã®äœèª¿äžè¯ã«ããäœæ¥ãé²ããäºãã§ãããæ¢ããªãæºåæéãéãå»ã£ãŠããŸã£ãçºã§ãããããããªãåŽé¢ã¯ãããŸãããæ²¢å±±ã®æ¹ãšã話ã§ããã®ã§äŒžã³ãããšæããŠæ¬¡ååå æããã¯æ²ç€ºç©ãäœã£ãŠåå ããããšæããŸãã ã¹ãã³ãµãŒããŒã¹ã§ã話ããããš ä»åã¯ãåŒç€ŸããŒã¿ãœãªã¥ãŒã·ã§ã³ããŒã ã®æ¡çšè³æãããæ©æ¢°åŠç¿ã«ããåãçµã¿äºäŸãããã€ãæåããã¢ãã¿ãŒã«æåœ±ããªããããããæ¹ã«åŒç€Ÿã®ããŒã¿æŽ»çšå
ãšãã®å®çŸæ¹æ³ã«ã€ããŠç޹ä»ããããŠããã ããŸããããŸããèšèªåŠçåŠäŒãšèšãäºããããå®éã«ç€Ÿå
ã§ãæ€èšããŠããNLPãåãå
¥ããä»åŸã®æ¹åæ§ãåæ ãããã®ã«ãªã£ãŠããŸããæ¡çšè³æãã2ã€æç²ããŠç°¡åã«ç޹ä»ããŸãã 1ã€ç®ã¯ãLLMãçšãããã£ãªã¢ãµããªã®äœæãã§ããð LLMãçšãããã£ãªã¢ãµããªã®äœæ 1幎ã»ã©åã®åãçµã¿ã«ãªããŸãããOpenAI APIå
¬éåŸã«æŽ»çšæœç第1匟ãšèšãäºã§ã1é±éã§ã®ãªãªãŒã¹ãç®æšã«äœæããæ©èœã«ãªããŸãã è·åçµæŽæžãªã©ã®æ
å ±ãå
¥åãããšããããèŠçŽããŠäºã€åãã€ããŠããããšèšã£ãæ©èœã§ããã ç§ã®å Žåã¯ããAIã®éè¡åž«ããAIã®ãã©ãŒã³ã³ãµã«ã¿ã³ãããšèšãååãã€ããŠãããŸããã 2ã€ç®ã¯ãè¡åãã°ã掻çšããè»¢è·ææ¬²ãå¿åã®æ€ç¥ãã§ããð è¡åãã°ã掻çšããè»¢è·ææ¬²ãå¿åã®æ€ç¥ ãã¡ãã®æ©æ¢°åŠç¿ã¢ãã«ã¯ãè»¢è·ææ¬²ãé«ãã«ãé¢ãããããããã£ãŒã«äžè»¢è·ææ¬²ãäœããŸãŸã«ãªã£ãŠããŸã£ãŠããæ¹åãã®æ©èœãšããŠã䜿ãããšãã§ããŸãããã©ã¡ãããšããã° è»¢è·æŽ»åã®ææ¬²ããªãã®ã«ã¹ã«ãŠããéãããŠãã äºã§ã®ç
©ãããã軜æžããé²åŸ¡ã®åœ¹å²ãæã£ãæ©èœãšããŠéçšããŠãããã®ã«ãªããŸãã ãããã£ãŒã«ã®ã¹ããŒã¿ã¹ã¯è»¢è·ææ¬²ãé«ããŸãŸã«ãªã£ãŠããããå®éã«ã¯ è»¢è·æŽ»åãå®äºãããŸãŸã¹ããŒã¿ã¹ã倿Žããã®ãå¿ããŠããŸã£ãŠãã ãšããã±ãŒã¹ããã£ããããŸãã ããããæ¹ã«ãã¹ã«ãŠãã远æããŠããŸããšè»¢è·ãµãŒãã¹ãšããŠã®äžä¿¡æã«ç¹ãããããªãã®ã§ãäºåã«äºé²ã§ãããã®ã¯åºæ¥ãéãäºé²ããããã«ããŠããŸãã ããŒã¹ã«ç«ã£ãŠã¿ãŠ åœåæ³å®ããŠãããããå€ãã®æ¹ãããŒã¹ã«æ¥ãŠãã ãããçè
ãããŒã¹ã«ç«ã£ãŠæèŠäº€æããããŠé ããŸãããããŒã¹ã«èãã«æ¥ãŠé ããçæ§ããããšãããããŸããã ãã¡ã€ã³ãã£èªäœãã ãšã³ãžãã¢ã«ç¹åããäžé転è·ãµãŒãã¹ãäžå¿ã«äºæ¥ãå±éããŠãã ãäºãšãåŠäŒã«åå ãããŠããæ¹ã
ã®å±æ§ãã æ©æ¢°åŠç¿ã»ããŒã¿ãµã€ãšã³ã¹ãçæ¥ãšãããŠãã瀟äŒäººåå ã®æ¹ 倧åŠã»å€§åŠé¢å€§åŠããåŠçåå ã®æ¹ ã®2屿§ã®æ¹ã
ãã¡ã€ã³ã§ãã£ãäºãšçžãŸã£ãŠãã ãã¡ã€ã³ãã£æ ªåŒäŒç€Ÿ ããšã äœãããŠããäŒç€ŸãïŒ ãã®ç¥å床ã«ã¯ããªãã®äŒžã³ä»£ãæããŸãããäžæ¹ã§ãå®å
šã¢ãŠã§ãŒã ã£ãèš³ã§ããªããã ã¹ãã«åå·®å€ã®äŒç€Ÿ ããšããŠèªç¥ããã ããŠããæ¹ãå€ãã£ãã§ããããŒã¿çéã§ã®æ©èœãšãµãŒãã¹ã»äŒç€Ÿåã®ç¹ã蟌ã¿ã«ãŸã ãŸã 課é¡ãæ®ãã€ã€ããæ©æ¢°åŠç¿ã»ããŒã¿ãµã€ãšã³ã¹ã®çéã«ãäžå®åãçµã¿ãå±ããããŠããäºãæããããŸããã å人çãªèŽè¬ã»ãã·ã§ã³ã®ææ³ ã¹ãã³ãµãŒãšããŠããŒã¹ã«ç«ã€åãããã¡èŽè¬è
ãšããŠã»ãã·ã§ã³ãããã€ãèãããä»ç€Ÿã¹ãã³ãµãŒããã®äŒæ¥ããŒã¹ã«ãéªéããŠã話ã䌺ãããŠããã ãããããã®ã§ãã¡ã¢ããŒã¹ã«ã¯ãªããŸããå人çãªææ³ãæžãé£ããŠãããŸãð ãªãŒã©ã«ã»ãã¹ã¿ãŒã»ãã·ã§ã³ããããã«å
±éããŠèšããã®ã¯ãå€§åæ LLMã«é¢ããç ç©¶çºè¡šã§ãã äºãã»ãšãã©ã§ããã ã ãããšèšã£ãŠã OpenAI API ããã®ãŸãŸäœ¿ã£ãŠç ç©¶ãããŠãããããµãŒãã¹å®è£
ããŠã³ã¢æ©èœãšããŠããäŒæ¥ãããç ç©¶ãã»ãšãã©ãªããããªå°è±¡ã§ããã ãªã¯ã«ãŒãããããµã€ããŒãšãŒãžã§ã³ããããªã©ã®ããã¹ãããŒã¿ãæœ€æ²¢ã«æã¡åãããŠããèšç®è³æºãè±å¯ãªäŒæ¥ã§ããäžéšããã»ã¹ã«åãå
¥ããããŠãããšãèãããŸããã 瀟å
åãã«ãå
šç€Ÿã®æ¥åå¹çåãç®çãšããŠRAGãæç« åã蟌ã¿(embedding)ã䜿ããLLMã®åŒ±ç¹ã§ããhallucinationãäœæžããä»çµã¿ãåãå
¥ãããåãåããbotãå®è£
ã»éçšããŠããã æ§ã
ã話ã䌺ã£ãæãçŸåšã®LLMçéã®ãã¬ã³ãã§ã¯ããåãåããbotã®ãããªæŽ»çšããã¬ã³ããšãªã£ãŠãããã§ïŒå人ã®èŠè§£ïŒããã®ãããªæµãã¯ãã°ããç¶ããããªé°å²æ°ãæããã äžæ¹ã§ãå¢ããè¥å¹²å€±éããæã¯ãããŸãããã èªç€Ÿå°çšã®LLMãã¹ã¯ã©ããã§éçºãã ãšããäŒæ¥ããã®ã話ãããã€ã䌺ããŸããã ãChatGPTãšãClaude3ãšãäœäŸ¡æ Œã§é«æ§èœãªAIãåºãŠãããä»åŸããã®æµãã¯å€ãããªãã¯ããªã®ã«ãªãïŒã ãšæããã話ãèãããŠã¿ãŸããã èªç€Ÿã§LLMãäœã£ãŠããäºã§ãGAFAMOãæäŸããLLMã®èŠçŽãå€ãã£ãæã®ãªã¹ã¯ãããžã«ãªã ãšã®æ¹éã§ãç ç©¶ããããŠããªããšã®äºã ã©ã®äŒæ¥ããã«ãå
±éããŠããã®ã¯ã1ã€èªç€Ÿã®LLMãäœããŠãããšçšéã«åãããŠæè»ã«ã«ã¹ã¿ãã€ãºãã§ããç¹ããå
補åã®ã¡ãªããã®1ã€ãšã®äºã§ããã çºã«ãªã£ãã»ãã·ã§ã³ å
šãŠã®ã»ãã·ã§ã³ãè峿·±ãèããããããããææ¥äœ¿ãããã®ãã¡ã倿°ã§ããããå人çã«1çªå匷ã«ãªã£ãã»ãã·ã§ã³ãå
±æããŸããå
šäœã®çºè¡šã¹ã±ãžã¥ãŒã«ã¯ ãã¡ã ããã æç« ã®ãã£ã³ã¯ã«åºã¥ãç¥èã°ã©ããæŽ»çšããRAGïŒç£ç·ç ããïŒ å
è«æã¯ ãã¡ã ãã RAGã䜿ã£ãŠLLMã®åç粟床ãé«ããçºã®åãçµã¿ã¯ããã€ããããŸãããLLMã«äžããããã¯ãšãªã«contextãä»äžããçºã«ç¥èã°ã©ããDBãšããŠæ§ç¯ããŠãããç¥èã°ã©ãããã®æ
å ±æ€çŽ¢ããã»ã¹ãRAGã«çµã¿èŸŒãããšèšããã®ã§ãããåŒç€Ÿã§ãRAGãçšãã質ååçbotãäœã£ãŠéçšãããããŠããããªãŒãœããã¯ã¹ã«é¡äŒŒåºŠèšç®ããäžäœNä»¶ããåçãäœæãããšèšãã·ã³ãã«ãªæ§æãåã£ããããŠããŸãããã¡ãã®ç ç©¶ã«ããéããã¯ãšãªã®æèã¯ãã¹ãŠé¡äŒŒåºŠã§æž¬ãããšã¯éããªãããšèšãäºãçæããŠããã®ã§ããã¡ãã®ç ç©¶ãåèã«ããŠã¿ãããšæããŸããã åå ããŠã¿ãŠã®ææ³ åããŠèšèªåŠçåŠäŒã«ã¹ãã³ãµãŒãšããŠåå ããŠã¿ãŠããã¯ãããŒã¿ç³»è·çš®ã»çéã§ã®èªç¥æ¡å€§ã®äŒžã³ä»£ãããäºã匷ã宿ããŸããã ãã®çç±ã¯ããã€ããããšæããŸããããããŸã§ä»åã®ããã«ããŒã¿ç³»è·çš®ã®æ¹ãéãŸãåŠäŒãã«ã³ãã¡ã¬ã³ã¹ã«ç©æ¥µçã«åå ããŠãããŠãªãã£ãæã倧ãããšæããŸããã ãã¡ããããã ãã§ã¯ãªãã瀟å
ã§ãããŒã¿ã掻çšããåãçµã¿ã¯æ²¢å±±åãããããããå§ãŸã£ããããŠããæäžãªã®ã§ãããããåãçµã¿ããã£ãšç©æ¥µçã«çºä¿¡ããäºã§ãããå€ãã®æ¹ã«ãã¡ã€ã³ãã£ãç¥ã£ãŠé ããããªãšæããŸãã ãã¡åå è
ãšããŠããçãæéã§ãŸãšãŸã£ãæ°ã®NLPã«é¢ããç ç©¶çºè¡šãèªåã®äºæã§æããæ©äŒã¯äžã
ãªãã£ãã§ãããå€çš®å€æ§ãªåãçµã¿ãäŒæ¥ãããšã話ã§ããŠãšãŠãè¯ãåºæ¿ã«ãªããŸãããããã«è©ŠããããªããŠããŠã沢山åŸãããšãã§ããŸããããå¿ããªããã¡ã«çŸåšã®åãçµã¿ã®åèã«ãããŠããã ãããšæããŸããã ä»åŸã¯ãèšèªåŠçåŠäŒãã¯ããåŠäŒãžã®ã¹ãã³ãµãŒããã¹ã¿ãŒçºè¡šãªã©ã«ãåãå
¥ããŠãããŸãã®ã§ãã©ããã§èŠãããéã¯äœåãããããé¡ãããããŸãã ãããã« ãã¡ã€ã³ãã£ã§ã¯ãæ©æ¢°åŠç¿ãšã³ãžãã¢ã»ããŒã¿ãµã€ãšã³ãã£ã¹ãã»ããŒã¿ã¢ããªã¹ããçµ¶è³æ¡çšäžã§ãã以äžã®ããŒãžããå¿åé ããŸãã®ã§ãèå³ã®ããæ¹ã¯æ¯éã«ãžã¥ã¢ã«é¢è«ãªã©ã§ã話ããŸãããã findy-code.io findy-code.io *1 : â» NLP2024å
¬åŒããŒãž ããæç²
1. ã¯ããã« Findyã§ããŒã¿ãšã³ãžãã¢ãšããŠåããŠãã ã²ããïŒ hiracky16 ïŒã§ãã ãã®èšäºã§ã¯Findyã§åãçµãã§ããããŒã¿åºç€ã«ã€ããŠç޹ä»ããŸãã Findyã§ã¯2023幎ããããŒã¿ãšã³ãžãã¢ãæ¡çšãæ¬æ Œçã«ããŒã¿åºç€æ§ç¯ã«çæããŠããŸãã ãããŸã§ã¯BigQueryïŒGoogle CloudïŒãäžå¿ãšããããŒã¿èç©ã»å©æŽ»çšãããŠããŸããã ä»åŸãã£ãšããŒã¿åæãæ©æ¢°åŠç¿ãªã©ã®ããŒã¿å©çšãå éããããã«ããŒã¿ãããžã¡ã³ããäžå¯æ¬ ã ãšèããŠãããããŒã¿ãšã³ãžãã¢ãæ¡çšããŠããŸãã ãŸã 1人ç®ã®ããŒã¿ãšã³ãžãã¢ããžã§ã€ã³ããŠããå幎éãããã®åãçµã¿ã§ãããçŸæç¹ã®ã¢ãŒããã¯ãã£ãæè¡ã¹ã¿ãã¯ã䌞ã³ããã屿ãªã©ãèšããŸãã 1. ã¯ããã« 2. ãããŸã§ã®ããŒã¿åºç€ã®äŒžã³ãã 3. çŸç¶ã®ããŒã¿åºç€ã¢ãŒããã¯ã㣠3.1. æ¬çªç°å¢ã®IaCåãšéçºç°å¢ã®æºå 3.2. ããŒã¿ããŒãç³»ã®ããŒã«å·æ° 3.3dbtããDataformãžã®å€æŽ 3.4. ããŒã¿ã4å±€ã§ç®¡ç 4. ä»åŸããããããš 4.1. å
šäœãçµ±æ¬ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŒã«ã®å°å
¥ 4.2. ããŒã¿åºç€ã®å©çšè
æ¡å€§ã«åããã«ãŒã«ãšæš©é 4.3. è€æ°éšéãŸããã ããŒã¿åºç€ã®èšèšãæ§ç¯ 5. çµããã« 2. ãããŸã§ã®ããŒã¿åºç€ã®äŒžã³ãã åãå
¥ç€Ÿããåã®ã¢ãŒããã¯ãã£ããããªæãã§ãã ãããã¯ãã®RDSããEmbulkã䜿ã£ãŠ1æ¥1åå¿
èŠãªããŒã¿ãBigQueryãžè»¢éããŠããŸããã ãããã¯ãã®ããŒã¿ã ãã§ãªãGAã€ãã³ãããŒã¿ãèç©ããŠããŸããã æšå¹ŽããTransformã®ããŒã«ã«dbtãå°å
¥ããŠãã宿çã«å®è¡ãããã¯ãšãªãåŸã
ã«dbtãžç§»è¡ããŠããç¶æ
ã§ããã ããŒã¿å©çšã§èšããšå®æçã«èŠãã¹ãæ°å€ã¯Looker Studioã§å¯èŠåããããGASããBigQueryãžã¯ãšãªçºè¡ããŠã¹ãã¬ããã·ãŒãã§è¡šç€ºããŠããŸãã ãŸãå¥Google Cloudãããžã§ã¯ãã«ããæ©æ¢°åŠç¿çšã®ããŒã¿ã»ããã«ã³ããŒããããŠããŸããã äžèšãèžãŸããŠçŸå Žã®èª²é¡æãã¢ãŒããã¯ãã£å³ãèŠãŠã®å®¢èгçãªäŒžã³ããããŸãšããŠã¿ãŸããã Embulkãªã©ããŒã¿ããŒãç³»ã®ãžã§ãã倱æããå Žåã®ãªã«ããªã«è² è·ãããã£ãŠãã dbtã䜿ã£ãã¯ãšãªãå¢ããªã ã¹ãã¬ããã·ãŒããšGASã§å®è¡ããŠããã¯ãšãªã®æ£ç¢ºæ§ãæ
ä¿ã§ããŠããªã ããŒã¿ãœãŒã¹ã®å€æŽã«å¯Ÿãã圱é¿ç¯å²ãèŠç©ãããªãïŒããŒã¿ãªããŒãžã远ããªãïŒ ããŒã¿åºç€ã𿩿¢°åŠç¿çšã®æ€èšŒç°å¢ããªãããæ°èŠéçºãã¢ããããŒãã«ããŒãã«ããã æ©æ¢°åŠç¿ã®ãããžã§ã¯ããšããŒã¿åºç€ã®ãããžã§ã¯ããå¥ã«ãªã£ãŠããããŒã¿é®®åºŠãç°ãªã 3. çŸç¶ã®ããŒã¿åºç€ã¢ãŒããã¯ã㣠3.1. æ¬çªç°å¢ã®IaCåãšéçºç°å¢ã®æºå ãŸãåãæãã£ãã®ãæ¬çªç°å¢ã®IaCåã§ããã äžèšã«ç€ºããã¢ãŒããã¯ãã£å³ãæžãåã«æ¬çªç°å¢ã®äž»èŠãªãªãœãŒã¹ãTerraformã«ã€ã³ããŒãããŠã³ãŒã管çã§ããããã«ããŸããã ãã®éçšã§äžèŠãªãªãœãŒã¹ãæŽçã§ããæ¬åœã«å¿
èŠãªãã®ã ããèŠæ¥µããããšãã§ããŸãã ããŸãã«ã³ã¹ãåæžã«ãç¹ãããŸãã äžéãTerraformãžã®æžãèµ·ãããå®äºããããããšã¯éçºç°å¢ã®Google Cloudãããžã§ã¯ããäœãTerraformãé©çšããã ãã§ãã ããŒã¿ã«é¢ããŠã¯1æ¥1åãData Transferã§ããŒã¿ã»ããããšã³ããŒããŠããŸãã éçºç°å¢ã«æ¬çªç°å¢çžåœã®ããŒã¿ãšGoogle CloudãªãœãŒã¹ãæã£ãã®ã§ãåŸã«ç޹ä»ããDataformã䜿ã£ã宿å®è¡ã¯ãšãªã®éçºãå¢ãããŠããŸãã ããã«ãã£ãŠæ¬çªç°å¢ã«ãŠæ€èšŒçšããŒãã«ãã§ããããééããŠããŒãã«ãæ¶ããŠããŸããªã©ã®åé¡ãæžããããšæããŸãã 3.2. ããŒã¿ããŒãç³»ã®ããŒã«å·æ° ããŒã¿ãåã蟌ãããŒã«ãšã㊠trocco ãš Datastream ãæ¡çšããŸããã troccoã¯ããšããšå¥ããŒã ã§ç®¡çããŠãããã®ã«çžä¹ããããŠããã圢ã§äœ¿ã£ãŠããŸãã MAããŒã«ãä»ã®ã¯ã©ãŠããµãŒãã¹ãšãã£ãæ§ã
ãªããŒã¿ãœãŒã¹ã«å¯Ÿå¿å¯èœãªããéå®ããŠããŸãã ãŸãããŒãã ãã§ãªãReverse ETLã«ã圹ç«ã£ãŠãããäœã£ãããŒã¿ããŒããå¥ãµãŒãã¹ã«èªã¿èŸŒãã§æŽ»çšããŠããŸãã Datastreamã¯CDCã®ãµãŒãã¹ã§ãµãŒãã¬ã¹ãªã®ã§éçšã«æéãããããªãç¹ã§Embulkã®ä»£ããã«æ¡çšããŸããã äžæ¹ã§ãªã¢ã«ã¿ã€ã ã«ãœãŒã¹ãå€ããããéèšã®ãã³ã«æ°å€ãå€åãããããåé¡çºçæã®åå 調æ»ãå°é£ã«ãªããŸããã çŸç¶éçšäžã§ã«ããŒã§ããŠããŸãããåçŸæ§ãšèª¬æã®å®¹æããåäžãããã¹ãéèšã«äœ¿ã£ãããŒã¿ãå¥ã§æã€ã¹ããæ©ãã§ãããšããã§ãã ãŸãã¹ãã¬ããã·ãŒãäžã§ç®¡çããŠãããã¹ã¿ããŒã¿ã«ã察å¿ãã¹ãBigQueryã®å€éšããŒãã«ãšããŠæ±ã£ãŠããŸãã 3.3dbtããDataformãžã®å€æŽ ããŒã¿å€æã®ããã®ããŒã«ãdbtãã Dataform ãžå€æŽããŸããã dbtã¯Dataformã«æ¯ã¹ãŠéçºã掻çºã§ãã©ã€ãã©ãªãå
å®ããŠããããæ¡çšããŸããã ãã®åæã§dbtã«ã¯ãšãªãç¥èãéçŽãããã¹ãBigQueryã®ãŠãŒã¶ãŒãå·»ã蟌ã¿å©çšãä¿ããŠããŸãããããªããªãã¢ãã«ïŒããŒãã«ïŒã®æ°ãå¢ããŸããã§ããã çç±ãšããŠ2ã€ã®ããŒãã«ããããŸããã 1ã€ç®ãBigQueryã§ã¯ãšãªãèšè¿°åŸãšãã£ã¿ãéããdbt çšã«æžãè¶³ãäžæéããã£ãŠããŸãããšã倧ããªããŒãã«ã«ãªã£ãŠããããšã 2ã€ç®ã¯dbtåŽã®å¶çŽïŒäž»ã«ã¢ãã«åã®äžæå¶çŽïŒãããŒã¿åºç€åŽã®èšèšããå®ããã«ãŒã«ãæ°è»œã«ã³ããããã¥ããç¶æ³ãäœã£ãŠããŸããŸããã ãããã®ããŒãã«ãã¯ãªã¢ãã¹ãDataformã®å©çšãæ€èšããŸããã Dataformã¯ãã©ãŠã¶ã§å®çµãBigQueryã®ã¡ãã¥ãŒã«ããããå€å°ããŒã«éã®ç§»åã³ã¹ã軜æžãããŸãã ãã€Dataformã«ã¯ã¢ãã«åã®äžæå¶çŽããªãBigQueryãšåæ§ã«ããŒã¿ã»ããéã§è¢«ããªããã°ååã®ã¢ãã«ããããžã§ã¯ãã«è€æ°ååšããŠãåé¡ãããŸããã å°å
¥ããçµæãã¢ãã«æ°ã¯dbtãããžã§ã¯ãã«æ¯ã¹ãŠ3åã»ã©ã§ããŠãããå®éã«äœ¿ãããããšãã声ãããã®ã§äžå®æåã ã£ãã®ããªãšæã£ãŠããŸãã Dataformããdbtãžä¹ãæãã話ã¯èŠèãããããšããããŸãããdbtããDataformãžã®ã±ãŒã¹ã¯èŠãããšãªãã®ã§äžå®æéçµã£ãããŸãæ¯ãè¿ãã®èšäºãæžãããšæããŸãã 3.4. ããŒã¿ã4å±€ã§ç®¡ç åèã«ããã®ã¯dbtã®ãã¹ãã©ã®1ã€ã§ãããHow we structure our dbt projectsãã§ãã dbtãããŒã«ãšããŠã¯äžæ¡çšã«ããŸããããèãæ¹ã¯å©çšãããŠããã£ãŠããŸãã ð docs.getdbt.com åœå3å±€ïŒlake/warehouse/martïŒã§äœãããšããŠããŸããããããŒã¿ãœãŒã¹ã«å¯ŸããŠçŽæ¥ã¯ãšãªããããšãããšBigQueryäžã§äžéœåãªããšããããŸããã äŸãã°Datastreamã§è»¢éããŠããæ¥æã®ããŒã¿ããã¹ãŠDATETIMEåã«ãªã£ãŠããŸããTimeZone ãèæ
®ããèšç®ãã§ããŸããã§ããã æ¯åTIMESTAMPåã«å€æããåŠçãwarehouseå±€ã«æžãããã®ãå³ããã®ã§stagingå±€ãèšããŠå倿ãªã©ã®ç°¡åãªå€æãããããšã«ããŸããã 4. ä»åŸããããããš 4.1. å
šäœãçµ±æ¬ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŒã«ã®å°å
¥ çŸåšãããŒã¿æœåºãšèªã¿èŸŒã¿ã¯troccoãDatastreamã§è¡ãããŸãããDataformã«ãã倿ã¯ãã®èªã¿èŸŒã¿ãçµãã£ãé ãèŠèšãã£ãŠå®è¡ããŠããŸãã ããtroccoã«ããããŒã¿ããŒãã倱æããéã«Dataformã«ãã倿ãå®è¡ãããŠããŸãã®ã§ãããŒã¿ãé²èЧããæ¹ãå€ãããŒã¿ãèŠãŠããŸãå¯èœæ§ããããŸãã ãŸãçŸç¶troccoãDataformããããã§ãšã©ãŒæ€ç¥ã®ä»çµã¿ãåããŠãããæ¥åžžæ¥åã®ç£èŠã«äžå®ã³ã¹ããããã£ãŠããŸãã ããŒã¿ã®æœåºããæäŸãŸã§ã®æµããå¹ççã«ç®¡çã»ç£èŠããéçšã³ã¹ãããããã«è¡ãããã«ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ããŒã«ã®å°å
¥ãä»åŸå¿
èŠã§ãã 4.2. ããŒã¿åºç€ã®å©çšè
æ¡å€§ã«åããã«ãŒã«ãšæš©é ãã£ããäœã£ãã®ã§ãã£ãšæ°ããããŒã¿åºç€ã䜿ã£ãŠãããããã®ã§ãããã«ãŒã«ããªããšãã£ããã®èšèšãè
æããŠããŸããŸãã äŸãã°GASããçŽæ¥ã¯ãšãªãçºè¡ããããšã¯SQLã®å
容ãGASã«éããŠããŸãã¡ã³ããã§ããªããªã£ãŠããŸãã®ã§æ°ç°å¢ã§ã¯çŠæ¢ããŠãããããšèããŠããŸãã 4å±€ã®ã¢ãŒããã¯ãã£ãéçºäžæèããªããŠã¯ãªããªãã«ãŒã«ãªã®ã§ããªãå¿
èŠãªã®ãçç±ãšãšãã«äœãã€ããã§ãã ãŸããé©åãªæš©éãå
¬éç¯å²ã®èšå®ãå¿
èŠã§ãã ã©ã®ããŒã ãã©ã®ç¯å²ã®ããŒã¿ã»ãããæ±ãããšãã§ãããæŽçããªããšäºæãã¬å€æŽãããŠããŸããªã©ã®äºæ
ã«ã€ãªãã£ãŠããŸããŸãã çãå®å¿ããŠäœ¿ããããŒã¿åºç€ã«ããããã«ãé©åãªæš©éèšå®ãã«ãŒã«äœããæ¥åã ãšèããŠããŸãã 4.3. è€æ°éšéãŸããã ããŒã¿åºç€ã®èšèšãæ§ç¯ æåŸã«å£®å€§ãªè©±ãããŠçµããããã§ãããè€æ°éšéã§ã®ããŒã¿åºç€éçšãä»åŸãã£ãŠã¿ãããšèããŠããŸãã å®ã¯ä»ãŸã§èª¬æããŠããã®ã¯åŒç€Ÿã®äžäºæ¥éšå
ã§ã®è©±ã§åŒããŒã ã§ã¯ä»äºæ¥éšãšã¯ããŸããŸã é¢ãããŠããªãç¶æ³ã§ãã ãšã³ãžãã¢é åã®äºæ¥ããã£ãŠããäºæ¥éšéã®ãã¡ã€ã³ã¯è¿ãã®ã§ããŒã¿æèã§ã³ã©ãã¬ãŒãã§ããããšã¯ãããšèããŠããŸãã ãŸãäºæ¥éšå¥ã§äœ¿ããããã¹ã¿ãæ°ã
ååšããŠããå
±éåãããšæšªæããŠããŒã¿å©çšã§ããåå£ãæŽããšèããŠããŸãã ãã®ããã«ã¯è€æ°äºæ¥éšã®ããŒã¿åºç€ã管çããããã®èšèšãã«ãŒã«ãšéçºã»éçšãæ
åœããããŒã¿ãšã³ãžãã¢ãå§åçã«è¶³ããŠããŸããã 5. çµãã㫠以äžãããå幎éã§æŽãã€ã€ãããã¡ã€ã³ãã£ã®ããŒã¿åºç€ã¢ãŒããã¯ãã£ãšæè¡ã¹ã¿ãã¯ã®ç޹ä»ã§ããã ããããããšã«ãæããŸããããããŒã¿ã®æ»å®ã«ãããŠãšã³ãžãã¢ãè¶³ããŠããªãç¶æ³ã§ãã ãšã³ãžãã¢ã®ããã®ããŒã¿ãã©ãããã©ãŒã ãäœãããã«ããå°ãã§ãèå³ãæ¹§ããæ¹ã¯ã«ãžã¥ã¢ã«é¢è«ãåŸ
ã¡ããŠãããŸããð herp.careers
ããã«ã¡ã¯ã Findyã§Tech LeadãããããŠããã£ãŠãæžç°ã§ãã æšå¹Ž(2023幎)ã Findy Team+ ã«ãŠã4åã§3ã¶æã»ã©ãããŠå€§èŠæš¡ãªããã³ããšã³ãã®èšèšå·æ°ãè¡ããŸããã Findy Team+ã¯ãšã³ãžãã¢çµç¹ã®ããã©ãŒãã³ã¹åäžãæ¯æŽããSaaSãµãŒãã¹ã§ã2020幎ããéçºãã¹ã¿ãŒãããŸããã 3幎以äžã®éãæ©èœéçºãè¡ã£ãŠãµãŒãã¹ã䌞ã°ããŠããŸããããåæã«æ§ã
ãªèª²é¡ãçããŠããŸããã ä»åã¯ããã«è³ããŸã§ã®çµç·¯ãšãå®éã«è¡ã£ãããšã玹ä»ããŸãã ãªãããã³ããšã³ãã®èšèšå·æ°ã決æããã®ã åœæãèªåã¯ä»ã®ãããã¯ãã®éçºããŒã ã§ã³ãŒããæžããŠããã®ã§ãããããæ¥Findy Team+ã®éçºããŒã ãžç°åããããšã«ãªããŸããã ç°ååŸã«2é±éã»ã©Findy Team+ã®ããã³ããšã³ãã®éçºãããã®ã§ãããããããšã«æ°ã¥ããŸãã ã³ãŒãèšèšãæã£ãããè€éãããããªã ç°åååŸã§çè§£ã®ããããããã«ãªã¯ãäžãããŸã§ã®æéã«å·®ãããããã«æããã®ã§ãFindy Team+ã§ã®èªåã®çç£æ§ã®æ°å€ãæ¯èŒããŠã¿ãããšã«ããŸããã ãããšãç°ååãšæ¯ã¹ãŠèªåã®ã¢ãŠããããã®éãåå以äžãŸã§äžãã£ãŠããããšãæããã«ãªããŸããã æèŠå€ãšå®éã®çç£æ§ã®æ°å€ãäžèŽãããããã©ããããã«äœãåé¡ãããã®ã§ã¯ïŒãšãã仮説ãç«ãŠãŸããã ç°åååŸã§ã®å€åãæŽãåºããŠã¿ãçµæãã³ãŒãã®èšèšã«åé¡ãããé«ãããšãçªãæ¢ããŸããã ããããã³ãŒãã®èšèšãå·æ°ãããã«ããããã«ã¯å€§ããªã³ã¹ããšæéãæãããŸãã ãã®å€§ããªã³ã¹ãããç°åååŸã®çç£æ§äœäžã®æèŠå€ã ãã§åšãã®äººéãçŽåŸãããããšã¯äžå¯èœã§ãã ããã§ãä»ã®ã³ãŒãã®èšèšã®åé¡ç¹ãæŽãåºããŠãäœãã©ãåé¡ã§çç£æ§ãäœãã®ãå
·äœçãªæŽãåºãã«çæããŸããã åé¡ç¹ã®æŽãåºã é床ãªå
±éå ãŸãå
šäœçã«é床ãªå
±éåãè¡ãããŠããŸããã äŸãäžãããšãã°ã©ããããŒãã«ã«æ°å€ã衚瀺ããéã«è¡šç€ºããcomponentå
ã§ãããŒã¿ååŸãåæã«è¡ã£ãŠããŸããã ãããªã£ãŠããŸã£ãå Žåãã°ã©ããããŒãã«ã®èŠãç®ã¯åãã ãã©è¡šç€ºããããŒã¿ãç°ãªãå Žåã«å¯Ÿå¿ã§ããªããªããŸãã ãã®ãããªè€æ°è²¬ä»»ãæã£ãã³ã³ããŒãã³ãã幟ã€ãååšããŠãããããã³ãŒããªãŒãã£ã³ã°ãããŒã¿ã®æµãã远ãããšãéåžžã«å°é£ã«ãªã£ãŠããŸããã ããŒã¿ã®ååŸãšæç»ã¯è²¬åãç°ãªãåŠçãªã®ã§åããŠå®è£
ããã¹ãã§ããã åŠçã«äžè²«æ§ããªã APIã®åŒã³åºãã«é¢ããã«ãŒã«ãååšããŠããããè€æ°åæããè²ã
ãªã¿ã€ãã³ã°ã§åŒã³åºãããŠãããããŒã¿ã®æµãã远ãããšãéåžžã«å°é£ã«ãªã£ãŠããŸããã åè¿°ããé床ãªå
±éåããã®åé¡ãåŒãèµ·ãããŠããã1ã€ã®componentå
ã§å
šãŠã®ããšãåŠçããããšããŠããŸããã ããŒã¿ååŸãšæç»ãå¯çµåã§å®è£
ãããŠããã®ã§ããã®éšåã¯å
±éåããŠãã®ã§componentå
ã§ããŒã¿ååŸããŠæç»ããŠããã©ããã®éšåã¯å
±éåããŠãªãããããŒã¿ãpropsçµç±ã§è²°ã£ãŠããŠãããšãã£ããããªç¶æ³ãå€çºããŠããŸããã ããã«ãããã©ãããããŒã¿ãåã£ãŠããŠããã®ãæ¢ãã«è¡ãäœæ¥ãå€çºããã³ãŒããªãŒãã£ã³ã°ã«å¿
èŠä»¥äžã®æéãåãããŠãããããªç¶æ³ã§ããã ãã¹ãã³ãŒããæžãã«ãã é床ãªå
±éåã«ããããŒã¿ã®ååŸãšæç»ãåæã«è¡ãããŠããããã責åã®åæ
ãã»ãšãã©ã§ããŠããªãç¶æ³ã§ããã ãã®ããããã¹ãã³ãŒããæžãã«ããç¶æ³ã«ãé¥ã£ãŠããŸããã æç»ã«å°ä»»ããã¹ãcomponentã®äžã§ããŒã¿ååŸãããŠããããã§ãããŒã¿ååŸéšåã®ã¢ãã¯ãçšæããªããã°ãã¹ããã§ããããã¹ãã³ãŒããå¿
èŠä»¥äžã«è¥å€§åããŠããŸããã èšèšå·æ°ã«å¯Ÿããèªèåãããšåæåœ¢æ ã¡ã³ããŒãšã®èªèåãã Tech LeadãCTOãããã£ãŠã»ããããšèšã£ãŠäœæ¥ããŠãããããšã¯æ¯èŒçç°¡åã§ãããèªåãã¡ã§ãããããšæ±ºæããŠããããšã¯äŸ¡å€ã倧ããéããŸãã ããçšåºŠã®åé¡ç¹ãæŽãåºãããšãåºæ¥ãã®ã§ããããå
ã«ã¡ã³ããŒãšæèŠäº€æãããããšã«ããŸããã ãã®æã¡ã³ããŒå
šå¡ãäžåã«éããŠè©±ãã®ã§ã¯ãªããã¡ã³ããŒ1人ãã€æéãåã£ãŠè©±ãããããšã決ããŸããã ã¡ã³ããŒå
šå¡ãäžåã«ä»ããŠãã®æã®è©±ããããšã声ã倧ããã¡ã³ããŒã®æèŠãåæ ãããã¡ã ãšèããããã§ãã çã«èªåãã¡ã§ãããããšæ±ºæããŠè²°ãããã£ãã®ã§ã1人ãã€æéãåã£ãŠæ¬é³ãèãããšã«ããŸããã ããã³ããšã³ãã®ã¡ã³ããŒå
šå¡ãš1on1ã§è©±ãèããŠã¿ãçµæãçŸè¡ã®èšèšã«å¯ŸããæèŠãšæèŠå€ãã»ãŒäžèŽããŠããŸããã ãã£ãšãªãã¡ã¯ã¿ãå
¥ãããã£ããã©ããã®èŠæš¡ãŸã§æ¥ããšãªãã¡ã¯ã¿èªäœã«æéãæãããããŠããŸã æ©èœè¿œå ã«æéãåããªããªã£ãŠããŸãã®ã§ããªãã¡ã¯ã¿ããããããŠãèšãåºããªãã£ã ä»ã®èšèšã®ç¶æ
ã®ãŸãŸãæŽã«éçºã¹ããŒããäžããŠããã®ã¯é£ãã ããããå
ã®éçºã¹ããŒããæŽã«å éããããã«ããããã³ããšã³ãã®èšèšå·æ°ã¯å¿
èŠäžå¯æ¬ ã§ãããšããŒã å
šäœã§çµè«ãåºãŸããã çµå¶é£ãšã®åæåœ¢æ ããã§çµå¶é£ãPdMã®ã¡ã³ããŒãšãèšèšå·æ°ã«å¯Ÿããåæåœ¢æãäœãã«è¡ããŸããã å
šäœçã«äœãçŽãå¿
èŠããããããæ°èŠéçºãå¯èœãªéãã¹ãããããŠãäžå®æéãäœãçŽãã«éäžããå¿
èŠããããŸãã ããã«é¢ããŠã¯å€§ããªå察æèŠãåºãããšããªããæ¯èŒçã¹ã ãŒãºã«äºæ¿ãåŸãããšãå¯èœã§ããã è°è«ããã®ã¯ãã©ã®ãããã®æéãæ°èŠéçºã¹ããããããã©ãããããã§ãã ãªã倧ããªå察æèŠãåºãªãã£ãããšèšããšã 以åã«ãåæ§ã®ã·ã¹ãã ã®èšèšå·æ° ãè¡ã£ãããšããããããã«å¯Ÿããæåäœéšã倧ããã£ãããã§ãã 確ãã«å€§ããªã³ã¹ãã¯æãããŸãããæ¯èŒçæ©ã段éã§ãã®ã³ã¹ããååã§ãããšããæåäœéšãããããªãã¡ã¯ã¿ãèšèšå·æ°ã«å¯Ÿããæµææãæ¯èŒçäœãç¹ã¯åŒç€Ÿã®è¯ãç¹ã§ãã éå»ã®æåäœéšãšçŸåšã®ç¶æ³ãæ¯èŒããæããã³ã¹ããšååæéãæç€ºã§ãããããæ¯èŒçã¹ã ãŒãºã«äºæ¿ãåŸãããšãå¯èœã«ãªããŸããã çæåã®æºå æ°èšèšã®æ¹éãåºãã æ°èšèšã®åºæ¬æ¹éãšããŠãå€å°åé·ãšãªã£ãŠãæ§ããªãã®ã§å
±éåãæå°éã«çããããšãšããŸããã æåããå
±éåããŠå®è£
ããã®ã§ã¯ãªããå®è£
åŸã«å
±éåããã¹ããã©ãããè°è«ãããã®è°è«ãéã£ããã®ã ãåŸããå
±éå察å¿ããããšã«ããŸããã ãŸããã³ãŒãã®è²¬åãæç¢ºã«ããå¿
èŠä»¥äžã®ããšã1ã€ã®ãã¡ã€ã«å
ã§å®è¡ããªãããšã培åºããŸããã æŽã«componentãšããžãã¯ãåé¢ããããšãåºæ¬ãšããäŸåé¢ä¿ãåæ¹åã«ãããŸããã ããŒã¿ååŸãšæç»ã®åŠçãæç¢ºã«åããæç»ã«å¿
èŠãªããŒã¿ã¯å
šãŠpropsãªã¬ãŒã§åãåãããšã矩åä»ããŸããã propsãªã¬ãŒãé·ããªããšãã©ããªãå¯èœæ§ããããŸããã責åãæ··åšããŠãã¹ãã³ãŒããæžãã¥ãããªãããšãšæ¯ã¹ãããã·ãšãã倿ã§ãã å°ããªç»é¢ãæ°èšèšã§1ã€ã ãäœãçŽããŠã¿ã æ°èšèšã®æ¹éãããçšåºŠèŠããŠããã¿ã€ãã³ã°ã§ãç°¡åãªç»é¢ã1ã€ã ãäœãçŽããŠãã¡ã³ããŒã«æ¹éãå±éããããšã«ããŸããã æ¹éãæåãå£é ã§èª¬æããããããå®éã®ã³ãŒããèŠãŠã³ã¡ã³ãããŒã¹ã§èª¬æããæ¹ãçè§£ããããããã§ãã ããããæ°èšèšã«å¯ŸããæèŠãã¡ã³ããŒããè²°ãã1ã¶æçšåºŠã§æ¹éãåºãŸããŸããã å®éã®äœãçŽãã®æµããæ±ºãã å®éã«æ¬çªç°å¢ãåããŠããã倿°ã®ã¯ã©ã€ã¢ã³ããå©çšããŠããç¶æ³ã ã£ãã®ã§ã次ã®3ã€ã倧ååã«æ²ããŸããã çŸç¶ã®æ©èœãç¶æãã çŸç¶ã®ã¹ã¿ã€ã«ãç¶æãã å®å
šã«ç§»è¡ãã ããŒãžåäœã§äœãçŽããé²ããAPIã¯æ¢ã«å©çšããŠãããã®ã䜿ãåãããšã決å®ããŸããã äœãçŽãã®æµã åºæ¬çãªäœãçŽãã®æµãã¯æ¬¡ã®éãã«ãªããŸãã åãç»é¢ãå¥URLã§å®è£
æ¢åç»é¢ã®ã³ãŒãã«æãå ããã®ã¯åºæ¬NG äžæçã«åãç»é¢ãç°ãªãURLã§å
¬éããã æ¢åç»é¢ãšç°ãªãã³ãŒãã§å®è£
ããŠããã®ã§ãPullrequestãã¬ã³ã¬ã³mergeã§ãã æ°èšèšã§ã®å®è£
ãå®äºåŸãæ¬çªç°å¢ã§åäœç¢ºèªãè¡ã åäœç¢ºèªãOKã§ããã°æ§èšèšã®URLã®ã«ãŒãã£ã³ã°ãæ°èšèšã®ç»é¢ã«åãã æ°ç»é¢ã§äœãããäžå
·åãçºçããå Žåã¯ãã«ãŒãã£ã³ã°ãæ»ãããšã§ããã«åãæ»ããå¯èœ äžå®æéæ§åãèŠãŠãåé¡ãªããããªãæ§å®è£
ã®ã³ãŒããå
šåé€ ãã®æµãã«ãããæ§å®è£
ã®ç»é¢ã®ããšãæ°ã«ããããšãªãæ°èšèšã®Pullrequestãmergeããããšãå¯èœã«ãªããåé¡ãçºçããŠãåãæ»ãã容æã«ãªããŸãã æ¯ãè¿ã çµæãšããŠæ°èšèšã®ã³ãŒããžã®ç§»è¡å®äºåŸã®ããŒã å
šäœã®çç£æ§ããå幎æ¯ã§2.5åçšåºŠãŸã§äžãããŸããã äœãçŽãããªãã¡ã¯ã¿ãèšèšå·æ°ãææ¡ããåã«ããŸãæèŠå€ãšå®éã®æ°å€ãèŠæ¯ã¹ãã¡ã³ããŒãšèªèåãããããããšãéèŠã§ãã ãŸããçµå¶é£ãå§ããšããæ±ºè£æš©ããã人éãçŽåŸãããããã«æ°åã¯å¿
èŠäžå¯æ¬ ã§ãã æåäœéšãããã°æ¬¡ã®ææ¡ã¯æã£ã以äžã«ã¹ã ãŒãºã«é²ã¿ãŸãããäžçªæåã®æåäœéšãäœãããšã¯éåžžã«é£ãããã®ã§ãã å°ãããŠãããã®ã§æ°åãåºããå°ããªæåäœéšãå€ãè©°ãããšãéèŠã§ãã ãŸãšã ãããã§ããã§ããããïŒ ãªãã¡ã¯ã¿ãäœãçŽããèšèšå·æ°ãæ€èšããŠããæ¹ã®åèã«ãªãã°å¹žãã§ãã çŸåšããã¡ã€ã³ãã£ã§ã¯äžç·ã«åãã¡ã³ããŒãåéäžã§ãã èå³ãããæ¹ã¯ãã¡ãããâ herp.careers
ããã«ã¡ã¯ããã¡ã€ã³ãã£ã§ Findy Team+ ïŒä»¥äžTeam+ïŒãéçºããŠããENDïŒ @aiandrox ïŒã§ãã ç§ãå
¥ç€Ÿããã®ã2023幎2æã ã£ãã®ã§ãããæ°ãã€ããã1幎éãéããŠããŸããã ãã£ãããªã®ã§ãèªåããã®1幎ã§ãã£ãããšãæããããšãéããŠãã¡ã€ã³ãã£ã®éçºçµç¹ã«ã€ããŠç¥ã£ãŠããã ããããšæããŸãã 1幎ã§ãã£ãããš Team+ã®ç»é¢ããŒã¹ã§æ¯ãè¿ã å
¥ç€Ÿãã1幎1ã¶æïŒ2023/2/1~2024/2/29ïŒã®ã¢ãŠããããã«ã€ããŠã¯ä»¥äžã®ããã«ãªã£ãŠããŸãã ãã«ãªã¯äœææ°ïŒ1229ä»¶ïŒ4.8ä»¶/æ¥ïŒ ã³ããããããªãŒãã³ãŸã§ã®å¹³åæéïŒ4.2h ãªãŒãã³ããããŒãžãŸã§ã®å¹³åæéïŒ10.3h ã¢ãŠããããéèªäœã¯ããšã³ãžãã¢ã®äžã§ã¯å€ãã®éšé¡ã ãšæããŸãããã ãç»åäžéšã®ã¢ã¯ãã£ããã£ã®æšç§»ãèŠããšãããéãããšãŠãã°ãã€ãããããŸãã éçºã®ä»ã«ãäžèšæ¥åãæ
åœããŠããã®ãšãå€éšé£æºãµãŒãã¹ã®API調æ»ãQAãªã©ã®ãã«ãªã¯ãšã¹ãã䌎ããªãã¿ã¹ã¯ãããããã§ãã åãåããå¯Ÿå¿ ã¢ã©ãŒãèª¿æ» éå®³å¯Ÿå¿ ãªãŒãã¿ã€ã ã«é¢ããŠã¯ä»¥äžã®ããã«ãªã£ãŠããŸãã å€ãå€ã®åœ±é¿ãåããŠããŸããããã以å€ã®ç®æã§ã¯å
¥ç€ŸåœåããçŸåšã®æ¹ããªãŒãã¿ã€ã ãæžå°ããŠããŸããçŸåšã¯ãéçºã«éäžããŠãããšãã®ãªãŒãã¿ã€ã ã¯ããçšåºŠå®å®ããããã«ãªããŸããã æ¥é ããéçºã®ããã©ãŒãã³ã¹ãäžããããã«æèããã®ã¯ä»¥äžã®ç¹ã§ãã äºåã«èšèšã¬ãã¥ãŒãã¿ã¹ã¯ãèŠãŠãããããã«ãã descriptionã§ã¿ã¹ã¯ã®æµããæžããŠãã ã¬ãã¥ãŒåŸã®ãªãŒãã¿ã€ã ãççž®ãã äºåã«èšèšã¬ãã¥ãŒãã¿ã¹ã¯ãèŠãŠãããããã«ãã èšèšã«é¢ããŠã¯ãã€ã·ã¥ãŒå
ã§ç¢ºèªããããšãããã°ãäºåã«Draftãã«ãªã¯ãäœæããŠã¬ãã¥ãŒããŠããã£ããããŸãã ããã«ãã£ãŠãææ»ããæžããããšãã§ããŸããããŸããäºåã«èŠãŠãããããšã§ã¬ãã¥ã¢ãŒã®è² è·ãäžããããšãã§ããŸããã descriptionã§ã¿ã¹ã¯ã®æµããæžããŠãã ãã«ãªã¯ã现ååããé¢ä¿äžãdescriptionãæžãæéãå¢ããŸããã¬ãã¥ã¢ãŒã®è² è·ãšèªåã®æéã®éãåã£ãçµæãèªåã¯ãããã®ãã©ãŒãããã䜿ã£ãŠããŸãã ã¿ã¹ã¯1 â ã¿ã¹ã¯2 âã€ãã³ã³ â ã¿ã¹ã¯3 ã¬ãã¥ãŒåŸã®ãªãŒãã¿ã€ã ãççž®ãã åºæ¬çã«ã¯ããã¡ã€ã³ãã£ã®ãšã³ãžãã¢ã¯ã¬ãã¥ãŒäŸé Œããã¬ãã¥ãŒãŸã§ãçéã§ããããããå
¥ç€Ÿåœåã¯èªåãã¬ãã¥ãŒãåããŠããåã¬ãã¥ãŒäŸé ŒããããŸã§ã«æéãããã£ãŠããŸããããã®ãããã¬ãã¥ãŒããããšãã«å¥ã®ãã«ãªã¯ã§äœæ¥ãããŠãããšããŠããã¬ãã¥ãŒãžã®å¯Ÿå¿ãåªå
ããããã«ããŸããã ãŸãããã«ãªã¯ãããã«ããŒãžããå¿
èŠããªãã£ããšããŠããã¬ãã¥ã¢ãŒã®ã«ã¬ã³ããŒã®äºå®ãèŠãŠã¬ãã¥ãŒäŸé Œãåå¥ã§ã¡ã³ã·ã§ã³ããããã«ããŸããã ãã¡ã€ã³ãã£ã§ã¯çéã¬ãã¥ãŒisæ£çŸ©ã®äŸ¡å€èгãããã®ã§ãå§ã¯ããŸããªãâŠâŠã¯ãã ãããžã§ã¯ãããŒã¹ã§æ¯ãè¿ã ãã®1幎ã§ãäž»ã«ä»¥äžã®ãããžã§ã¯ãã«é¢ãããŸãããã©ããTeam+ã®æ ¹å¹¹ã®æ©èœã§ãã¢ãŒããã¯ãã£ã®çè§£ãæ·±ãŸããŸããããŸããåŸåã¯ãããžã§ã¯ãã®ãªãŒãã«ææŠã§ããŸããã ãã«ãªã¯ã®ã¬ãã¥ãŒããžãã¯ã®å€æŽ å€èšèªåå¯Ÿå¿ ã®ããã¯ãšã³ãå
šè¬ãšããã³ããšã³ãå°ã GitHub飿ºãOAuth AppããGitHub Appã«ç§»è¡ Bitbucket Cloud飿º ã®ããã¯ãšã³ã æ¯ãè¿ã£ãŠã¿ããšããã®1幎ã¯é£æºåŠçãã¡ã€ã³ã§éçºããŠããããã§ãã ãããžã§ã¯ãã®äžã§ããµãŒãã¹ã«å¿ããŠã©ãããã¢ãŒããã¯ãã£ã«ãããã ãšããæ¢åã®èšèšã ãšç¡çãããç®æãªã©ãæ¹ä¿®ãã€ã€é²ããããŠããŸããèšèšãã©ããããèããã®ã¯èªåã奜ããªã®ã§ããããã£ãããšãä»»ããŠããã ãã壿ã¡ãçžè«ãããŠããããã®ããšãŠãããçµéšã«ãªããŸããããããŠããã§ã«è¥å¹²èšèšã®ã€ãã¿ãæããŠããŸãããããæ¬¡ã«æŽ»ããã®ã âŠâŠã ãŸãããããžã§ã¯ãã®é²ãæ¹ã«ã€ããŠãåŠã³ããããŸãããTeam+ã§ã¯ã倧ããã®éçºã¯ãPdMãäŒç»ãè¡ãâãšã³ãžãã¢ãšããåããã€ã€ä»æ§ããŸãšããâéçºâQAâãªãªãŒã¹ãšããæµãã«ãªã£ãŠããŸãã ãã®ãããèª¿æ»æ®µéããPdMãšèªèã®ããåãããè¡ãã€ã€ãéçºçæåŸã«åºãŠããæžå¿µç¹ãªã©ã¯é©å®PdMã«å
±æããããã«ããŸããããŸããQAã§ãéçºè
QAãšQAããŒã ã«ããQAãã©ãæ
åœããŠããããªã©ã調æŽããããã«ããŸãããçµæãšããŠãããããã®ãããžã§ã¯ãã«åçç¹ã¯ãããã®ã®ãéœåºŠãªã«ããªãŒã§ãããããªéçºäœå¶ã«ã¯ã§ããŸããã ã€ãã³ãåå ç¹ã«èšæ¶ã«æ®ã£ãŠããã®ã¯ä»¥äžã®ã€ãã³ãã§ããä»ãŸã§ã¯å°èŠæš¡ã®ãªãã©ã€ã³ã€ãã³ãã«å
¥ã£ãããšããããã®ã®ãå€§èŠæš¡ãªã«ã³ãã¡ã¬ã³ã¹ã«ã¯åå ããããšããªãã£ãã§ãã ãã¡ã€ã³ãã£ã§ã¯ããšã³ãžãã¢ç³»ã€ãã³ããžã®ã¹ãã³ãµãŒãç©æ¥µçã«èªç€Ÿã€ãã³ããéå¬ããŠããã®ã§ãéå¶ãæäŒãã€ã€åå ããæ©äŒãLTãªã©ç»å£ãããŠããã ãæ©äŒãåŸãããã§ãã RubyKaigi 2023 RubyKaigiã¯ãã£ãšæ°ã«ãªã£ãŠããã®ã§ãããæçµŠãåãã®ã¯ããŒãã«ãé«ãã2023幎ã«åããŠåå ããŸãããæã£ãŠãããããæè¡çãªããŒãã«ã¯äœããããããªããšãããã®éãæ¥œãããŸããããŸããã«ã³ãã¡ã¬ã³ã¹äžã®ã€ãã³ããå€ãããããã亀æµãã§ããã®ã貎éãªçµéšãšãªããŸããã2024ãè¡ãã®ã§ãåºäŒã£ãæ¹ã¯ãããããé¡ãããŸãã ãŸãã After RubyKaigi ã§åããŠã®LTãããŸãããååå ã®ããã·ã§ã³ã§ãããŸããããæ¬¡åã¯æè¡çãªããšã詊ããŠã¿ããã¿ãããªã®ãããããã§ãã éçºçç£æ§ã«ã³ãã¡ã¬ã³ã¹ 2023幎ããã¡ã€ã³ãã£ã§ã¯2åã®éçºçç£æ§ã«ã³ãã¡ã¬ã³ã¹ãäž»å¬ããŸãããç§ã¯Team+ãéçºããŠããã®ãããããã¡ã€ã³çè§£ãæ·±ããããã«åå ããŸãããç¹ã«åœ¹å²ããªããäžåå è
ãšããŠæ¥œããŸããŠããã ããŸããã dev-productivity-con.findy-code.io ãã¡ãã®ã«ã³ãã¡ã¬ã³ã¹ã¯ãéçºçç£æ§ã«é¢ããçè«çãªã»ãã·ã§ã³ãå€ãã£ãã§ããæžç±ãªã©ã§ãªããšãªãé ã«ããããšãã€ãªãã£ãããä»ãŸã§å人ã®ãšã³ãžãã¢ã«èãããããšã«ã€ããŠã®è»¢æçãªè©±ãããããããããèãæ¹ãããã®ãããšæ°ä»ããåŸããããŸããã ç¹ã«ãSLIãæ±ºããããšã§èš±å®¹å¯èœãªäžå
·åã®éïŒãšã©ãŒããžã§ããïŒã決ãŸãã®ã§ãããã¯éåžžã®éçšã®é害ããŠã³ã¿ã€ã ãšããŠäœ¿ã£ãŠãããããææŠçãªåãçµã¿ã«ãã£ãŠã®ããŠã³ã¿ã€ã ãšããŠäœ¿ã£ãŠããããšããèãæ¹ãç®ããé±ã§ããã findy.connpass.com ãã¡ãã®ã€ãã³ãã§ã¯ãå
·äœçãªåãçµã¿ãäžå¿ã«èããŸãããå
šç€Ÿçã«æåãæ ¹ä»ãããããã«ã©ããããããšãã£ãåèæŽ»åã®åãçµã¿ãå°è±¡ã«æ®ã£ãŠããŸãã çµå¶å±€ã»ããžãã¹éšéãžã®çè§£ä¿é²ãä¿ããã¹ããŒã¯ãã«ããŒãå·»ã蟌ã¿ã€ã€ææãåºããŠäŸ¡å€ã瀺ãããšãç©ã¿éããŠããŸãããåãçµã¿ãæ³¥èããã£ãŠãããããªãäžã§ãTeam+ã¯ææã»äŸ¡å€ã瀺ãããã®ããŒã«ãšããŠäœ¿ãããŠããããšãæããŸããã ãã®ä»ãªãã©ã€ã³ã€ãã³ã ãã¡ã€ã³ãã£äž»å¬ã®ã€ãã³ããäžå¿ã«ãããŸããŸãªãªãã©ã€ã³ã€ãã³ãã«åå ããŸãããããŒã ãªã®ã§å®å¿æããããæ°è»œã«è¡ããããã£ãã§ãã ãªãã©ã€ã³ã€ãã³ãã®ãããšããã¯ããªã³ã©ã€ã³ã§ã¯è©±ãã¥ããå
容ãèããããšãšåŸåã®äº€æµã ãšæã£ãŠããŸããã€ãã³ããéããŠãããããªãšã³ãžãã¢ã®æ¹ãšè©±ãããšãã§ããŸããããã®äžã§ã¯ãTeam+ã䜿ã£ãŠãããšã³ãžãã¢ã®æ¹ããããçã®å£°ãèããã®ãããã£ãã§ããæ©èœã®èŠæã ã£ãããTeam+ãžã®æè¬ãªã©ãããã ããŠãæ¥é ã®éçºã®ã¢ãããŒã·ã§ã³ã«ãªããŸããã 1幎ã§å€ãã£ãããš çµç¹ã®æ¡å€§ å
¥ç€Ÿæã¯ç€Ÿå¡æ°ã120人ãããã§ããããçŸåšã¯200人ãè¶
ããŸããããšã³ãžãã¢ãå¢ããŠãä»å¹ŽããTeam+ã®ãšã³ãžãã¢ã¯2ããŒã äœå¶ã«ãªããŸãããããŒã ç·šæãšããŠã¯ãå€éšãµãŒãã¹é£æºã«æ³šåããããŒã ãšãã®ä»ã®æ©èœãéçºããããŒã ã§ãã qiita.com ãŸããBizãµã€ãã®äººæ°ãå¢ããŠããã«åŸã£ãŠäºæ¥å
šäœã®å¢ããæããŠããŸããã¡ã³ããŒãã©ãã©ãå
¥ç€Ÿããçéãªã³ããŒãã£ã³ã°ã§ããã«ç«ã¡äžãã£ãŠããŠæ¬åœã«å°æ¬ã§ãã ãããŠãèªåãäœã£ãŠãããããã¯ãã®äŸ¡å€ãããããã®äººã«ç¥ã£ãŠããããŠããã®ãçŽç²ã«å¬ããã§ãã çµç¹ã®æ¡å€§ã«äŒŽã£ãŠèª²é¡ãçãŸãã åçŽã«äººæ°ãå¢ããéçºããŒã ãšããŠã§ããããšãå¢ããŸããããã®äžã§ãããŒã ã®æ§æãããããžã§ã¯ãã®é²ãæ¹ã«ã€ããŠã¯ææ¢ãã®ç¶æ
ã§ãã çŸåšãããŒã ãªãŒããŒãäžå¿ã«ãããããªããæ¹ã詊ãã€ã€ãããããªããæ¹ãæ¢ã£ãŠããŸããæ¹åãµã€ã¯ã«ãåããŠãããªããããã®æã
ã«é©ããããŒã ã»éçºäœå¶ã§é²ããŠãããããã«ãããã§ãããã®ããã«ããèªåã®èŠç¹ãããããããã¢ã€ãã¢ãåºããŠããããã§ãã ãã®ä»ã«ã¯ã以äžã®ãããªèª²é¡ãåºãŠããŸãããããã¯çŸåšæéãåã£ãŠå¯Ÿå¿ããŠãããšããã§ãã Bizãµã€ãã®å¢å ã«äŒŽãããšã³ãžãã¢ãžã®ãããã¯ãã«å¯Ÿããæè¡çãªè³ªåãå¢å ããã¥ã¡ã³ãã®äžè¶³ / æŽæ°ãããŠãªã 1幎ã§å€ãããªãããš æ ¹æ¬çãªç€Ÿé¢šã¯å€ãã£ãŠããªãã§ãã ååãã»èª å®ã»ããŒã ã¯ãŒã¯ã»ã¹ããŒãã»No.1 ã®ããªã¥ãŒéããèªåèªèº«ããããããšèšã£ãããšã¯ã©ãã©ããã£ã¬ã³ãžãããŠããããŠããŸãã ä»ã®ã¡ã³ããŒã«ãµããŒãããŠããã ããªãããGitHub App, Bitbucket飿ºããªãŒãã§ãã èªåäž»å°ã§é£æºåšãã®èšèšã®å·æ°ãGitHub Actionsã«ããOpsæ¹åã«ãã£ã¬ã³ãžã§ãã ãISUCONã«åºãŠã¿ããããš1on1ã§èšã£ãŠã¿ããšããã瀟å
ã®æå¿ããŒã ã§åºå Žã§ããïŒ ã¬ãèšäº ïŒ ä»åŸã®1幎ã«åããŠ åºæ¬çã«ã¯ãçééçºããªãããããã¯ããæé·ãããã®ãäžçªã®ç®æšã§ãããã®ããã«ããèªåèªèº«ãæé·ããããšæã£ãŠããŸãã èªåãã§ããå¹
ãåºããŠãããã ããã¯æè¡ã«ã€ããŠãããã ããæè¡ä»¥å€ã«ã€ããŠãã§ãããããããããšã«æ°ããããšã«ææŠããããšãæè¿ãããŠããçµç¹ãªã®ã§ãããŸããŸãªææŠãããŠããããã§ããæè¡çã«ã¯ãèšèšåšãã®åŒãåºããå¢ããããšãã€ã³ãã©ãããã³ããšã³ãã®ã¿ã¹ã¯ããã£ãšããªããããã«ãªãã®ãç®æšã«ããŠããŸãã çµç¹ã®æ¡å€§ã«äŒŽã£ãŠçãŸããŠãã課é¡ã®è§£æ¶ããããã éçºçç£æ§ãé«ãããããã¯ããäœã£ãŠããããããããã¡ã®ããŒã ã¯çç£æ§ãé«ããïŒãšèžã匵ã£ãŠèšããç¶æ
ã§ãããã§ãã ä»ã®ã¡ã³ããŒã¯ã¡ã€ã³ã®ãããžã§ã¯ããé²ãã€ã€èª²é¡è§£æ¶ã®åãçµã¿ãããŠããã®ã§ãèªåããããªé¢šã«åããããã«ãªãã®ãç®æšã§ããçŸç¶ã¯ããããžã§ã¯ãããããšãã£ã¡ã§ãã£ã±ãã«ãªã£ãŠããã®ã§ãããªãã¬ãã«ã¢ãããç®æããŸãã çºä¿¡ãé 匵ããã èªåããã£ãããšããã®ãšãã«èããããšãæ®ããŠããããæ°æã¡ããããŸããçµæãšããŠããã¡ã€ã³ãã£ã®ããšãç¥ã£ãŠãããããšã«ãã€ãªããã®ã§ãäžæ¹Winã«ãããã§ãã ãã®èšäºãããã§ãããããã¯ããã°ã掻çšããŠãããããªããšãçºä¿¡ããŠãããããããªãšæã£ãŠããŸãããªã®ã§ããããªããšãæ°ã«ãªããšãã£ããã®ãããã°ãæèŠããã ãããšãããããã§ãã æåŸã« çŸåšããã¡ã€ã³ãã£ã§ã¯äžç·ã«åãã¡ã³ããŒãåéäžã§ãïŒ èå³ãæã£ãæ¹ã¯ããã²ã«ãžã¥ã¢ã«é¢è«ã§è©±ãèãã«æ¥ãŠãã ããïŒ æ¡çšæ
å ±ã¯ãã¡ãâ herp.careers
Findyã§EMãããŠããæ æ²¢ïŒ @nipe0324a ïŒã§ãã ä»åã¯ãFindyã®ãšããRailsã®CIã®ãã¹ãå®è¡æéã10åãã5åã«é«éåãã話ãã玹ä»ããŸãã ãCIã®ãã¹ãå®è¡æéãé
ã...ã ãCIã®å®è¡æéãçãããã!!ã ãšæããŠããæ¹ã¯ãã²ã芧ãã ãããŸãã Findyã§ã¯2024幎2æçŸåšã1人ããã1æ¥4ãã«ãªã¯ãå¹³åã§äœã£ãŠããŸããéçè§£æãèªåãã¹ããªã©ã峿ã«è¡ãCIç°å¢ããªããšã¹ããŒãæã®ããéçºãã§ããªããªããããCIãé«éã§åãã¿ã¹ã¯ãå®äºãããå¿
èŠããããŸããæ©èœãå¢ãããã¹ãã±ãŒã¹ãæ¡å
ããããšã§CIã®é«éåãæ±ããããããã«ãªããŸããã ãŸããå人çã«ã¯ãCIã¯é
ããŠã10åãçæ³ã¯5å以å
ã§çµããã®ã1ã€ã®ç®å®ã«ããŠããŸãããããããã®ã¹ããŒãæã§CIãå®äºãããšãããã«ãªã¯äœã£ãŠã¬ãã¥ãŒäŸé Œãããããã¬ãã¥ãŒã³ã¡ã³ãããã£ãŠå¯Ÿå¿ããããšãã£ãããšããµã¯ãµã¯ã§ããŸãïŒ 1. CIãã¹ãå®è¡æéã®é«éåã®çµæ 2. ãã¹ãå®è¡æéã®é«éåã®åææ¡ä»¶ 3. ä»åã®ãã¹ãå®è¡æéã®é«éåã§å®æœããããš 3.1. äžèŠãªã«ãã¬ããžã¬ããŒãã®äœæããªãã 3.2. ãã¹ãå®è¡ã®äžŠå床ãé«ãã 3.3. ãã¹ãå®è¡æéã®åããæžãã 4. æåŸã«GitHub Actionsã®ã³ã¹ãã«ã€ã㊠5. CIãã¹ãå®è¡æéã®é«éåã®ãŸãšã 1. CIãã¹ãå®è¡æéã®é«éåã®çµæ æåã«ãã¹ãå®è¡æéã®é«éåã®çµæã玹ä»ããŸãã åŒç€Ÿã§ã¯ããœãŒã¹ã³ãŒããGitHubã§ç®¡çããŠããã®ã§ãCIããŒã«ããããªãGitHub Actionsã䜿ã£ãŠããŸãã GitHub Actionsã®ã䞊ååã®ä¿é²ããããã¹ãå®è¡ã®åãããæžããããšã§ãCIã®ãã¹ãå®è¡æéãçŽ2åã®1ã«ããŸããã 察å¿åïŒçŽ10å 察å¿åŸïŒçŽ5å ãŸããè²»çšå¯Ÿå¹æãããã£ããšèããŠããŸãã æéã®GitHub Actionsã®ã³ã¹ãã2äžåãããå¢å 1ã¶æãããã®CIåŸ
ã¡æéãçŽ7æ¥åæžã 2. ãã¹ãå®è¡æéã®é«éåã®åææ¡ä»¶ ããããæ¢åã§ããCIäžã®ãã¹ãã¯ãã5å°ã®ãã·ã³ããã€ã1ãã·ã³ããã4ã³ã¢ããš20䞊åã§ãã¹ããå®è¡ããŠããŸããã ãã¹ãã20䞊åã§å®è¡ããããã«ãGitHub Actionsã®ã¯ãŒã¯ãããŒã§æ¬¡ã®ãããªãã¯ããã¯ã䜿ã£ãŠããŸããã 5å°ã®è€æ°ãã·ã³ã§ãã¹ãå®è¡ GitHub Actionsã®matrixã䜿ã5å°ã®ãã·ã³ãåãã 察象ã®ãã¹ããã¡ã€ã«ã5å°ã®ãã·ã³ã«åæ£ãããç°¡æãªshellã¹ã¯ãªããã䜿ã 4ã³ã¢ã§ãã¹ãå®è¡ 4ã³ã¢ã®Ubuntu Runnerãå©çšããïŒåèïŒ ãã倧ããªã©ã³ããŒã®æŠèŠ ïŒ parallel_tests ã䜿ã£ãŠCPUã³ã¢æ°ã®äžŠå床ã§ãã¹ãå®è¡ã§ããããã«ãã ãã®ãããªå¯Ÿå¿ãããŠããããžã§ã¯ãèŠæš¡ã®æ¡å€§ãšãšãã«CIã®ãã¹ãå®è¡æéãé
ããªã£ãŠããã®ã§ããããªãæ¹åã宿œããŸããã 3. ä»åã®ãã¹ãå®è¡æéã®é«éåã§å®æœããããš ä»åã®ãã¹ãå®è¡æéã®é«éåã«ããããå
·äœçã«ã¯æ¬¡ã®3ã€ã宿œããŸããã äžèŠãªã«ãã¬ããžã¬ããŒãã®äœæããªãã ãã¹ãå®è¡ã®äžŠå床ãé«ãã ãã¹ãå®è¡æéã®åããæžãã ãããã广ããã£ãã®ã§ãããããã¹ãå®è¡æéã®åããæžããããä»ã®å¯Ÿå¿ãšã®çžä¹å¹æããã¿ã ãããã¹ãå®è¡æéã倧ããæžããããšãã§ããŸããã 3.1. äžèŠãªã«ãã¬ããžã¬ããŒãã®äœæããªãã 察å¿åã®ãã¹ãã®ã¯ãŒã¯ãããŒãèŠããšããã¹ãå®è¡åŸã«ãPost coverage reportããšãããžã§ãã§ã«ãã¬ããžã¬ããŒãããã«ãªã¯ã«ã³ã¡ã³ãããŠããŸããã ããã¯ãèªåãã¹ããæ¡å
ãããšãã«äœ¿ãããŠããã®ã§ãããæ¢ã«ãã¹ãã«ãã¬ããžã¯90%以äžã«ãªã£ãŠããããã»ãŒå¿
èŠãªããããªãªãŒã¹ãã«ãªã¯ä»¥å€ã§ã¯å®è¡ããªãããã«ããŸããã ããã§ããã¹ãã®å®è¡æéã30ç§ãããæ©ããªããŸããã 3.2. ãã¹ãå®è¡ã®äžŠå床ãé«ãã æ¬¡ã«ããã·ã³å°æ°ã5å°ãã10å°ã«å€æŽããããšã§ã䞊å床ã20ãã40ãš2åã«é«ããŸããã ãã·ã³å°æ°ã®å¢å ã¯æ¢åã§ä»çµã¿ãæã£ãŠããã®ã§ã倿Žã¯æ¬¡ã®ããã«å®æœã§ããŸããã # .github/workflows/test.yml strategy: fail-fast: false matrix: - ci_node_total: [5] - ci_node_index: [0, 1, 2, 3, 4] + ci_node_total: [10] + ci_node_index: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] steps: # çç¥ - name: Run tests env: CI_NODE_TOTAL: ${{ matrix.ci_node_total }} CI_NODE_INDEX: ${{ matrix.ci_node_index }} run: | TEST_FILES="$(find ./spec -type f -name "*_spec.rb" | xargs ./scripts/ci/rspec_split_files.sh)" bundle exec parallel_rspec -- --format progress --color -- $TEST_FILES ããã§ãã¹ãå®è¡æéã2-3åã»ã©æ©ããªãã6-7åãããã«ãªããŸããã 3.3. ãã¹ãå®è¡æéã®åããæžãã æåŸã«ããã¹ãå®è¡æéã®åããæžããåãçµã¿ãããŸããã ãã¹ãã®äžŠå床ã2åã«ããã®ã«ãããŸãã¡ãã¹ãå®è¡æéãæ©ããªããŸããã§ããããã®ãããã©ããããã«ããã¯ã«ãªã£ãŠãããã調ã¹ãŠã¿ããšããã¹ãå®è¡æéã®åããããã«ããã¯ã«ãªã£ãŠãããã§ããã 以äžã®äŸã§ããšãã Test (10, 8) ãã2m25sãªã®ã«æ¯ã¹ãŠãã Test (10,3) ãã5m30sãšãªã£ãŠããããã¹ãå®è¡æéã®å·®ãæå€§3åã»ã©ãããŸãã ããã«ã詳现ãã¿ãŠãããšãããã·ã³ããšã®ãã¹ãå®è¡æéã®åãããšããã·ã³å
ã®ã³ã¢ããšã®ãã¹ãå®è¡æéã®åããã®äž¡æ¹ãçºçããŠããŸããããã®ãããæ¬¡ã®å¯Ÿå¿ãããŠãã¹ãå®è¡æéã®åããæžãããŸããã ãã·ã³ããšã®ãã¹ãå®è¡æéã®åãã®å¯Ÿå¿ ãã·ã³ãžã®ãã¹ããã¡ã€ã«ã®æ¯ãåãããã¡ã€ã«åãããã¹ããã¡ã€ã«ã®ãµã€ãºé ã«å€æŽ ããã¡ã€ã«ãµã€ãº â ãã¹ãå®è¡æéããšèããŠãæéãããããã¹ããã¡ã€ã«ãåããªãããã«å€æŽ ã³ã¢ããšã®ãã¹ãå®è¡æéã®åãã®å¯Ÿå¿ ãã·ã³å
ã§ã³ã¢ããšã«ãã¹ããã¡ã€ã«ãå²ãåœãŠãããŠå®è¡ãããŠããã®ã§ãæéãããããã¹ããã¡ã€ã«ãå²ãåœãŠãããŠããã³ã¢ã®å®è¡æéãããã£ãŠãã ãã¡ã€ã«åäœãããã£ã³ã¯åäœã§ãã¹ããå®è¡ããããã«ã parallel_tests ã parallel_split_test ã«çœ®ãæãïŒâ»parallel_testsãšäœè
åãïŒ # .github/workflows/test.yml - name: Run tests env: CI_NODE_TOTAL: ${{ matrix.ci_node_total }} CI_NODE_INDEX: ${{ matrix.ci_node_index }} run: | - TEST_FILES="$(find ./spec -type f -name "*_spec.rb" | xargs ./scripts/ci/rspec_split_files.sh)" + TEST_FILES="$(find ./spec -type f -name "*_spec.rb" -exec ls -l {} + | sort -n -k 5 | awk '{print $9}' | xargs ./scripts/ci/rspec_split_files.sh)" echo $TEST_FILES - bundle exec parallel_rspec -- --format progress --color -- $TEST_FILES + bundle exec parallel_split_test $TEST_FILES --format progress --color ããã§ãã·ã³ãšã³ã¢ã®ããããã§ãã¹ãå®è¡æéã®åããæžå°ãã5å以å
ã«ãã¹ããå®äºããããã«ãªããŸããã 4. æåŸã«GitHub Actionsã®ã³ã¹ãã«ã€ã㊠䞊å床ã2åã«å¢ãããŸããããã³ã¹ãã¯ãããŸã§é«ããªã£ãŠããŸããã GitHub Actionsã®æéã¯ãOS x vCPUæ° x åãããã®æéãã§èª²éãããŸãïŒåèïŒ GitHub Actionsã®èª²éã«ã€ã㊠ïŒãä»åã¯ã䞊å床ã2åã«å¢ãããŸããããBillable timeã¯30åååãã40åããããš1.2ã1.3åããããªã®ã§ãã³ã¹ãã1.2ã1.3åãããã®å¢å ã«ãªã£ãŠããŸãã 1ã¶æåäœã ãšãã ãã£ãã2äžåãããã®ã³ã¹ãå¢å (â»1)ã«ãªããŸãããCIåŸ
ã¡æéã7æ¥åãããåæž(â»2) ãã§ããŸãããå¿
ãããCIåŸ
ã¡æéãã ãã§ã¯ãªãã§ããããšã³ãžãã¢ã®äººä»¶è²»ãèãããšè²»çšå¯Ÿå¹æã¯é«ãã®ã§ã¯ãšèããŠããŸãã â»1. 4coreã®åãããã®æé $0.016 x (倿ŽåŸã®Billable time 40å - 倿Žåã®Billable time30å) x æéCIãã¹ãå®è¡åæ° 700å x çºæ¿150å â»2. åŸ
ã¡æéã®åæžæé 5å x æéCIãã¹ãå®è¡åæ° 700å ÷ (60å x å¶æ¥æé 8æé) 5. CIãã¹ãå®è¡æéã®é«éåã®ãŸãšã æåŸã«ãŸãšãã§ãã ä»åã¯ãFindyã®Railsãããžã§ã¯ãã§ãCIã®ãã¹ãå®è¡æéã10åãã5åãš2åã®1ã«é«éåãã話ãã玹ä»ããŸããã å
·äœçã«ã¯ã次ã®ãã¯ããã¯ã§é«éåãå®çŸããŸããã äžèŠãªã«ãã¬ããžã¬ããŒãã®äœæããªãã ãã¹ãå®è¡ã®äžŠå床ãé«ãã ãã¹ãå®è¡æéã®åããæžãã ãŸããè²»çšå¯Ÿå¹æãããã£ããšèããŠããŸãã æéã®GitHub Actionsã®ã³ã¹ãã2äžåãããå¢å 1ã¶æãããCIåŸ
ã¡æéãçŽ7æ¥åæžã ãªã«ããåèã«ãªãå
容ãããã°å¬ããã§ãã æåŸã«ãåŒç€Ÿã®ãšã³ãžãã¢ã次ã®ãããªã¹ã©ã€ããå
¬éããŠããã®ã§èå³ãããã°ã芧ãã ãããŸãã speakerdeck.com ãŸããFindyã¯ç©æ¥µçã«ãšã³ãžãã¢ãæ¡çšããŠããŸããCI/CDãå§ããFour Keysãéçºçç£æ§ãæè¡ãã¬ã³ãã転è·åžå Žãªã©èå³ã®ããæ¹ã¯ããæ°è»œã«ã«ãžã¥ã¢ã«é¢è«ãåããŠã¿ãŠãã ãã :) Findyã®æ¡çšæ
å ±ã¯ãã¡ãâ herp.careers
ããã«ã¡ã¯ïŒFindy CTOã®äœè€( @ma3tk )ã§ãã æ¬æ¥ããFindyã§ããã¯ããã°ãå§ããããšã«ããŸãããFindyã¯ãææŠãããšã³ãžãã¢ã®ãã©ãããã©ãŒã ãã€ããããšããããžã§ã³ãæ²ããŠããŸãããæšå¹Žæ§ã
ãªæ¹ãšã話ãããé¢è«ãããŠããã ãäžã§ãFindyã®éçºçµç¹ã®è¯ããäŒããããŠããªããšãã課é¡ã«æ°ã¥ããŸããã Findyã®éçºçµç¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãªã©ãéããŠç¥ã£ãŠããã ããšããšãŠãé¢çœãããšèšã£ãŠããã ããã®ã§ããããã®é¢çœããäºåã«ãäŒãã§ããŠããªãããšããããŸãããä»åã®ããã¯ããã°ã¹ã¿ãŒãããã®èª²é¡ã解決ããããã®äžæ©ã«ãªãã°ãšæãéå§ããŸããã ååã¯ã倧äºã«ããŠããããšãšéçºããªã·ãŒã®èгç¹ããFindyã®éçºçµç¹ã®ç޹ä»ãããããšæããŸãã Findyã®éçºçµç¹ã§äžçªå€§äºã«ããŠããããšã¯5ã€ã®ããªã¥ãŒ Findyã®éçºçµç¹ã¯ã次ã®5ã€ã®ããªã¥ãŒã倧äºã«ããŠããŸãã Findyã®5ã€ã®ããªã¥ãŒã¯ç€Ÿå
ã«ããã¡ã³ããŒãå¿
ãæèãããã®ã«ãªã£ãŠããŸãã äŸãã°ã次ã®ãããªåœ¢ã§æèããŠããŸãã ååãâŠã¯ãœã³ãŒããšåŒã°ãã«ã䌞ã³ããããšåŒã¶ãäºçްãªèšèé£ãã§ãååããªèšèãéžã¶ããšã§çµç¹å
šäœã®é°å²æ°ãè¯ããã èª å®âŠé¡§å®¢ã«å¯ŸããŠã®åãåãæ¹ã¯ãã¡ããã瀟å
ã®ã¡ã³ããŒéã§ã®ã³ãã¥ãã±ãŒã·ã§ã³ããµãŒãã¹ã«å¯ŸããŠãèª å®ã§ããç¶ãã ããŒã ã¯ãŒã¯âŠåäººã®ææä»¥äžã«ããŒã ã§è¯ãåãçµã¿ãè¡ããããŒã ãè·çš®ã®å£æ ¹ãè¶
ããŠååãåãããšã倧äºã«ãã ã¹ããŒãâŠã¹ã¿ãŒãã¢ããã ããããã¹ããŒãæãæã£ãŠåãçµããæè¡ã«ã¹ããŒãã¯å¿
èŠã§ãããæè¡ã®é²åã«åžžã«è¿œåŸãç¶ãã No.1âŠNo.2ãç®æããŠãNo.1ã«ã¯ãªããªããåžžã«No.1ãç®æãããšã§ãèªåãã¡ã®æé·ãä¿é²ãã ãã¡ãããã以å€ã«ãæ§ã
ãªèгç¹ã§5ã€ã®ããªã¥ãŒãäœçŸããããšã倧äºã§ãã éçºããªã·ãŒ ããªã¥ãŒãäœçŸããã ãã§ã¯ãªããåãFindyã®éçºçµç¹ãšããŠã®æè¡ã«å¯Ÿããèãæ¹ããããŸãã æè¡ã¯ã¢ãã³ãåœããå çéé¡§å®¢äŸ¡å€æäŸ ãšã³ãžãã¢ãã¿ãŒã²ãããŠãŒã¶ãŒ ä»ãŸã§ãã®3ã€ã倧äºã«ããªããéçºãç¶ããŠããŸããã â»ä»åŸçµç¹ã®ç¶æ³ãªã©ã«åãããŠå€ããå¯èœæ§ããããŸãã 1. æè¡ã¯ã¢ãã³ãåœããå æè¿ã§ã¯å€ãã®ã¹ã¿ãŒãã¢ãããã¢ãã³ãªæè¡ãç°å¢ãæ§ç¯ããŠããããšãçããã¯ãªãã§ãããFindyããªãã¹ãææ°ã®æè¡ã«è¿œåŸããªããéçºãé²ããŠããŸããGitHub CopilotãTypeScriptãNxãRuby on RailsãGraphQLãTerraformãªã©æ§ã
ãªæè¡ã掻çšããŠããŸã(å·çæçŸåš)ã äŸãã°åçš®ã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã«é¢ããŠã¯ã»ãŒãã¹ãŠã®ãããã¯ãã§ææ°ããŒãžã§ã³ãå©çšããŠããŸããäžéšææ°ããŒãžã§ã³ã«è¿œåŸã§ããªããã®ã¯ãã©ã€ãã©ãªã®ææ°ããŒãžã§ã³å¯Ÿå¿ãã§ããŠããªããªã©ã®äŸåé¢ä¿ã§ããã«ã¢ããããŒããé£ããããã§ãã ãã ãå€ãã®å ŽådependabotãæŽ»çšãææ°ã®ããŒãžã§ã³ã«ã¢ããããŒããããå®çŸã§ããç¶æ
ã«ããŠããŸããããã¯ããŠããããã¹ããå
å®åããããããžã§ã¯ãã«ãã£ãŠã¯ãã¹ãã«ãã¬ããž95%匷ããããŠã«ãã¬ããžã ãã§ã¯ãªããã¹ãã®å
容ããã°ãçºçãã«ãããããªæå³ãæã£ãå®ãããã¹ãã«ãªã£ãŠãããã©ããã確èªããŠããŸãã ãŸããCI/CDãæŽåããŠããããã¹ããéããªããšããŒãžã§ããªãããã«ããŠããŸããããã«ãããäºæãã¬ãã°ããã°ã¬ãªã©ãæ€ç¥ã§ãããªãªãŒã¹åŸã®ãã©ãã«ã倧ããæžãããŠããŸããå®ãããã¹ããæžãç¶ããCI/CDç°å¢ãæŽåããããšã§æ°ããã¢ããããŒãããã£ãŠããã¹ãã§å®ãããããããŒãžããããªã«ãèµ·ãããããããªãããšããç¶æ³ãæžããåããã§ããŠããŸãã ãã®ããã匷æ°ã§ãïŒã¢ããããŒãå
容ã確èªããäžã§ïŒãã¹ããéã£ãŠããã°å³ããŒãžããšããããšãã§ããç°å¢ã«ãªã£ãŠããŸãã ã©ããªããã°ã©ãã³ã°èšèªããã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªã䜿ãã«ãããææ°ã®ããŒãžã§ã³ã«è¿œåŸããããšã§ã»ãã¥ãªãã£ãšéçºå¹çã®äž¡æ¹ã®èгç¹ã§ã»ãã¥ã¢ãã€é«å質ãªç¶æ
ãä¿ãŠãŠããŸãã 2. çéé¡§å®¢äŸ¡å€æäŸ ã¢ãã³ãªæè¡ã掻çšããŠãããããããåããæäŸããæè¡ã¯åžžã«çéã§ããããŠé¡§å®¢ã«äŸ¡å€ãå±ãããã®ã§ããã¹ãã ãšèããŠããŸãã å
ã»ã©è¿°ã¹ãããã«ãFindyã¯ãã¹ãã«ãã¬ããžã®é«ããšCI/CDç°å¢ãæã£ãŠããç°å¢ã§ãã顧客ã«äŸ¡å€ãæäŸããŠãããäžãäžãã°ãå«ããã®ã§ãã£ããšããŠããããã«ä¿®æ£ãã§ããç¶æ
ã§ãããŸããã»ãŒãã¹ãŠã®ãããã¯ãã§ããã³ããšã³ããšããã¯ãšã³ãäž¡æ¹ã§æ¯æ¥ãªãªãŒã¹äœæ¥ãè¡ãããããªãªãŒã¹äœæ¥ã®èªååãè¡ããããã«CI/CDãæŽåããŠããŸããã ãããŠæ°æ©èœéçºãæ©èœæ¹ä¿®ãªã©ã®æ¯ãè¿ãã«ãããŠããèªåãã¡ãFindy Team+ãæŽ»çšããéçºãµã€ã¯ã«äžã®èª²é¡ãããéšåãç¹å®ããã®åé¡ã察åŠã解決ããããšã§ãFindyã®éçºçµç¹ã«ãããŠå¹çã®è¯ãéçºã¹ã¿ã€ã«ãç¶ç¶ã§ããŠããŸãã Findyã®ãã«ãªã¯æ°ãšãªãŒãã¿ã€ã ã®å€å äŸãã°2020幎1æã®Findyã®éçºçµç¹ã«ãããŠã¯ããã«ãªã¯ãäœã£ãŠããããŒãžãããŸã§ã«3ã7æ¥(70æéã150æé)ã»ã©ããã£ãŠããŸãããã2024幎2æçŸåšã§ã¯ã5.2æéãš13.4ã28.8åã»ã©é«éåã§ããŠããŸãã Findyã®éçºè
æ°ãšäžäººãããã®ãã«ãªã¯äœææ° ãŸããäžäººãããã®ãã«ãªã¯éãã1æ¥0.7ä»¶ãã4.7ä»¶ãš6.7åã»ã©å¢å ããŠããŸããéçºäººå¡ã3.3人ãã26.6人ãš8åã®äººæ°èŠæš¡ã«å¢ããŸãããããŒã¿ã«ã§1æ¥2.8ä»¶ã»ã©ããåºãŠããªãã£ããã«ãªã¯éãã1æ¥129ä»¶ãš46åã«å¢å ããŠããŸãã éåžžã人æ°ãå¢ãããšçç£æ§ã¯äœäžåŸåã«ãããŸããã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ãã倧ãããªãã調æŽã³ã¹ãããããããã§ããããããFindyã®éçºçµç¹ã¯äººãå¢ããŠãããŸãåããããªãªã³ããŒãã£ã³ã°æœçããã³ãã¥ãã±ãŒã·ã§ã³ã³ã¹ããäžãããããªæœçãå¢ãããéçºçç£æ§ãé«ãç¶ããŠããŸããã ãã®çµæãæ°ããæ©èœã远å ããã¹ããŒãããªã«ããèµ·ãã£ãæã«åãæ»ãã¹ããŒããé«ãç¶æ
ãå®çŸã§ãã顧客䟡å€ã远æ±ã§ããããã«ãªããŸããããŸããããã ãã§ã¯ãªãGitHub Copilotããšã³ãžãã¢åžæè
å
šå¡ã«è²žäžããŠããç¶æ³ã§ãã£ããããªãã¹ãéçºçç£æ§ãé«ãããšã³ãžãã¢ã§ãã£ãŠãKPIãKGIãªã©ã®çµæææšã«è²¢ç®ã§ãããããªåãæ¹ãåžžã«æš¡çŽ¢ãç¶ããŠããŸãã 3. ãšã³ãžãã¢ãã¿ãŒã²ãããŠãŒã¶ãŒ Findyã®éçºçµç¹ã¯éçºçç£æ§ãé«ãç¶æ
ã ããããããã©ããªææãåºãã¹ããªã®ãããèããããšãã§ããPdMãšã®é£æºãåããããç¶æ³ã«ãªã£ãŠããŠããŸãã æã
Findyã¯ãææŠãããšã³ãžãã¢ã®ãã©ãããã©ãŒã ãã€ããããšããããžã§ã³ã®å
ããšã³ãžãã¢ãææŠããããç°å¢ãã€ãããå€ãã®ãšã³ãžãã¢ã®æ¹ã«ãšã£ãŠæšªã§äŒŽèµ°ã§ãããããªååšãšããŠããç¶ããããšæã£ãŠããŸãã ãšã³ãžãã¢ã«åããäºæ¥å±éãããŠããããããšã³ãžãã¢ã§ããèªåãæ¬²ãããã®ãçã¿åºããè¯ãããããæ¬åœã«æ¬²ãããã®ãææ¡ãããè°è«ããªããéçºã§ããç°å¢ã§ãã ããã«ããããã¯ããããŒãžã£ãŒããã¶ã€ããŒãšé£æºãåãã ãã§ã¯ãªããå¶æ¥ã¡ã³ããŒã«ããã£ãŒãããã¯ãããããéã«ãã£ãŒãããã¯ããŠããããããç°å¢ã§ããå¶æ¥ã¡ã³ããŒããšã³ãžãã¢ã®ããšãç¥ãããšå¯Ÿå€ã®ãšã³ãžãã¢ãŠãŒã¶ãŒã«äŸ¡å€æäŸãã§ããçµæãšããŠèªåã®ææã«ãç¹ãããŸãããšã³ãžãã¢ãåçŽã«èšããããã®ãäœãã®ã§ã¯ãªããé¡§å®¢ãæ¬åœã«æ¬²ãããã®ã¯ãªããªã®ããç¥ããããªãŠãŒã¶ãŒã€ã³ã¿ãã¥ãŒã«ååžãããã瀟å
ã®å¶æ¥ã¡ã³ããŒãšé£æºãããŠé¡§å®¢ã®è§£å床ãäžããããšã«ããã£ã¬ã³ãžããŠããŸãã Findyã«é¢ããå
šãŠã®ã¡ã³ããŒããäºãã«ã³ãã¥ãã±ãŒã·ã§ã³ãåãç¶ããã¡ãªãããçãŸããããããšã³ãžãã¢ãšããŠã¯çã«å±ããµãŒãã¹éçºãã§ããããšãæå€§ã®é
åã§ãã Findyã®ããããã®ãšã³ãžãã¢ãªã³ã°ãšã¯ïŒ Findyã¯é«å¹çã§åžžã«CI/CDç°å¢ãšãŠããããã¹ããå
å®ããç¶ãã1人ãããã®çç£æ§ãäžãããããªåãæ¹ãããŠããŸãããçŽè¿ã§ããå¹çããéçºãã§ããç°å¢ãæ±ããŠå
¥ã£ãŠããã ããŠããæ¹ãäœåãFindyã«ãžã§ã€ã³ããŠããŸããããããã人ãå¢ããŠããã£ãšå¹çããéçºãã§ããããã«éçºçç£æ§ãé«ãç¶ãããããã®ã¢ãŠãããããåºããçŽæ¥çã«è²¢ç®ãé£ããKPIã売äžãªã©ã®ã¢ãŠãã«ã ã«è²¢ç®ã§ããç¶æ
ãäœãææŠãç¶ããããšæããŸããé£ããããšãããããŸãããããã«ææŠã§ããçµç¹ãFindyã«ã¯ãããŸãã Findyã¯çŸåš5ã€ã®äºæ¥ãå±éããŠããŸããããããããããã«å€ãã®äºæ¥ãéããŠãšã³ãžãã¢ã«äŸ¡å€ãæäŸããŠããææŠãããšã³ãžãã¢ã®ãã©ãããã©ãŒã ãã€ãããããšãå®çŸããŠãããããšæã£ãŠããŸããä»åŸã®æ°å¹Žã§ãšã³ãžãã¢èŠæš¡ã2-3åã«ãªããæ°äºæ¥ã®ç«ã¡äžããäºæ¥é飿ºãã€ããŒããªã³ã°ããŒã ã®çµæãèªèšŒåºç€ãã€ã³ãã©åºç€ã®æ§ç¯ãªã©äŒç€Ÿã»æè¡çã«é¢çœããã§ãŒãºã«å
¥ã£ãŠãããŸãã ããããäžç·ã«ã¿ããªã§æé«ã®éçºãããŠãããããšæã£ãŠããŸãã®ã§ãèå³ã®ããæ¹ã¯æ¯éãé£çµ¡ãã ããïŒ Findyã®æ¡çšæ
å ±ã¯ãã¡ãâ herp.careers ãããã« ä»åã¯Findyã®éçºçµç¹ã®ç޹ä»ãããŸããã é¢è«ã颿¥ãã€ãã³ããªã©å«ãæ§ã
ãªæ©äŒã§ãäŒãã§ããããšã楜ãã¿ã«ããŠããŸãïŒ