ããã«ã¡ã¯ãããã¯ãšã³ããšã³ãžãã¢ã®é è²ïŒ @sugaishun ïŒã§ãã ä»åã¯ã¿ã€ããŒãæ¬çªéçšããŠããRailsã¢ããªã±ãŒã·ã§ã³ã«å¯ŸããŠRuby3.3.0ãžã®ã¢ããããŒããè¡ã£ãïŒYJITã¯åŒãç¶ãæå¹ãªãŸãŸïŒã®ã§ãã®çµæãã玹ä»ããããšæããŸãã æšå¹ŽåŒç€Ÿã® id:euglena1215 ãæžãããšã³ããªãŒã®Ruby3.3.0çã§ãã tech.timee.co.jp åæ ã¿ã€ããŒã®Webã¢ããªã±ãŒã·ã§ã³ãšããŠã®ç¹æ§ã¯åºæ¬çã«ã¯æšå¹Žãšå€ãããããŸãããã§ãã®ã§ãæšå¹Žã®å
容ããã®ãŸãŸåŒçšãããŠããããŸãã ã¿ã€ããŒãæ¯ããããã¯ãšã³ãã® Web API ã¯å€ãã®ã±ãŒã¹ã§Â Ruby ã®å®è¡ããã DB ãããã«ããã¯ã®äžè¬çãªÂ Rails ã¢ããªã±ãŒã·ã§ã³ã§ããJSON ãžã® serialize ã¯Â active_model_serializers  ãå©çšããŠããŸãã ä»åã®éèšã§ã¯Â API ãªã¯ãšã¹ããžã®ããã©ãŒãã³ã¹åœ±é¿ã®ã¿ãéèšããSidekiq, Rake ã¿ã¹ã¯ãšãã£ãéåæã§å®è¡ãããåŠçã¯éèšã®å¯Ÿè±¡å€ãšããŠããŸãã ä»åã¯Ruby3.2.2+YJITããRuby3.3.0+YJITãžã¢ããããŒããè¡ããããã©ãŒãã³ã¹ã®å€åã確èªããŸããã çµæ 以äžã®ã°ã©ãã¯APIãªã¯ãšã¹ãå
šäœã®ã¬ã¹ãã³ã¹ã¿ã€ã ã®50-percentileã§ãã ã°ã¬ãŒã®ç¹ç·ãã¢ããããŒãåã®é±ã§ãéãç·ãã¢ããããŒãåŸã®é±ã«ãªããŸããéèšããæéã§ã¯ã¢ããããŒãååŸã®å¹³åã§ã¬ã¹ãã³ã¹ã¿ã€ã ã 10%é«éå ããŠããŸããã ä»åãååã«ãªãã£ãŠã¬ã¹ãã³ã¹ãé
ããæéãããã®ãªã¯ãšã¹ãæ°ãå€ããšã³ããã€ã³ãã«æ³šç®ããã¿ã€ããŒã®Web APIã®ãã¡3çªç®ã«åèšã®åŠçæéãé·ããšã³ããã€ã³ããžã®ããã©ãŒãã³ã¹åœ±é¿ã確èªããŸããã 以äžã®ã°ã©ãã¯3çªç®ã«åèšã®åŠçæéãé·ããšã³ããã€ã³ãã®ã¬ã¹ãã³ã¹ã¿ã€ã ã®50-percentileã§ãããã¡ããåæ§ã«ã°ã¬ãŒã®ç¹ç·ãã¢ããããŒãåã®é±ã§ãéãç·ãã¢ããããŒãåŸã®é±ã«ãªããŸããéèšããæéã§ã¯ã¢ããããŒãååŸã®å¹³åã§ã¬ã¹ãã³ã¹ã¿ã€ã ã çŽ12%é«éå ããŠããŸããã ãŸãECSã®èµ·åã¿ã¹ã¯æ°ã«ãè¯ãå€åããããŸããã ã¿ã€ããŒã§ã¯CPU䜿çšçãäžå®ã®å²åã«ãªãããã«ã¿ã¹ã¯é
眮ããèšå®ãããŠããã®ã§ããããªãªãŒã¹åŸã¯èµ·åã¿ã¹ã¯æ°ãæžããŸããããªãªãŒã¹ååŸ1é±éã®æ¯èŒã§äžèšã®ããã«å€åããŠããŸãã å¹³åã§33.1 tasks â 30.36 tasks æå€§å€ã§58.6 tasks â 53.0 tasks ãã®ãããã¯YJITã®å¹æã§ãªã¯ãšã¹ãã«å¯ŸããCPUè² è·ãäžãã£ã圱é¿ã§ã¯ãªãããšæšæž¬ããŠããŸããã¡ã¢ãªäžã«é
眮ããæ©æ¢°èªãå®è¡ããJITãªãã§ã¯ããšããæããããŸããã³ã¹ãçã«ã©ãã ãã€ã³ãã¯ãããããå
·äœçãªæ°å€ã¯åºããŠããŸããããããã©ãŒãã³ã¹ä»¥å€ã®ã¡ãªãããããããã§ãã ãšããããŸã§ã¯è¯ãã£ãç¹ã§ãã 以éã§ã¯èªåãã¡ãééããäºè±¡ã«ã€ããŠè¿°ã¹ãããšæããŸãã äžéšã®APIã§ã¡ã¢ãªäœ¿çšçãå¢å ã¿ã€ããŒã®Railsã¢ããªã±ãŒã·ã§ã³ã¯ã¢ããªã¹ã§ãããECSäžã§ã¯ãã€ãã£ãã¢ããªåãã®APIãšã¯ã©ã€ã¢ã³ãæ§ã®ç®¡çç»é¢åãã®APIã¯ããããå¥ã®ãµãŒãã¹ãšããŠçšŒåããŠããŸããåè
ã®ãã€ãã£ãã¢ããªåãAPIã§ã¯ç¹ã«åé¡ãªãã£ãã®ã§ãããåŸè
ã®ç®¡çç»é¢åãAPIã§ã¯ ã¡ã¢ãªäœ¿çšéã®æå€§å€ãçŽ3åè¶
ïŒ20%匱â65%çšåºŠïŒã«ãªããŸããã 以äžã®ã°ã©ãã®èµ€ãã©ã€ã³ãRuby3.3.0ã«ã¢ããããŒãããã¿ã€ãã³ã°ã«ãªããŸãã ãããã«3åè¶
ã¯å°ã£ããªãšæãã YJITã®README ãèªãã ãšããäžèšã®ããã«ãããŸããã Decreasing --yjit-exec-mem-size The --yjit-exec-mem-size  option specifies the JIT code size, but YJIT also uses memory for its metadata, which often consumes more memory than JIT code. Generally, YJIT adds memory overhead by roughly 3-4x of --yjit-exec-mem-size  in production as of Ruby 3.3. You should multiply that by the number of worker processes to estimate the worst case memory overhead. We use --yjit-exec-mem-size=64  for Shopify's Rails monolith, which is Ruby 3.3's default, but smaller values like 32 MiB or 48 MiB might make sense for your application. While doing so, you may want to monitor RubyVM::YJIT.runtime_stats[:ratio_in_yjit]  as explained above. ã¡ã¿ããŒã¿( yjit_alloc_size )ã®å¢ãæ¹ãæ³å®ä»¥äžãªã®ã§ã¯ãšæãã€ã€ãddtrace *1 ã§ã¯ yjit_alloc_size ã¯éä¿¡ããŠããªããããªã®ã§ã code_region_size ã確èªãå®éãYJITã® code_region_size (JITã³ãŒãã®ãµã€ãº)ãšã¡ã¢ãªäœ¿çšçã¯ã»ãŒåãåããããŠããŸããã以äžã®ã°ã©ãã®å·Šã code_region_size ã§ãå³ãã¡ã¢ãªäœ¿çšçã§ãã ãšããããã§ --yjit-exec-mem-size ãããã©ã«ãã®64MiBãã32MiBã«æžããããšãããã¡ã¢ãªäœ¿çšéã¯ã¢ããããŒãåããå°ãå¢ããçšåºŠã®æ°ŽæºãŸã§æããããšãã§ããŸããããªãããã®å€æŽã«ããããã©ãŒãã³ã¹ãžã®åœ±é¿ã¯èŠãããŸããã§ããã 以äžã®å³ã®ã°ã©ããã¡ã¢ãªäœ¿çšçã§ãèµ€ãã©ã€ã³ã --yjit-exec-mem-size ã®å€æŽããªãªãŒã¹ããã¿ã€ãã³ã°ã«ãªããŸããå®éã«ã¡ã¢ãªäœ¿çšçãäžãã£ãŠããã®ãèŠãŠåããŸãã ä»åã®ã¡ã¢ãªäœ¿çšéã®å€§å¹
ãªå¢å ã¯å®å
šã«äºæ³å€ã§ãã¹ããŒãžã³ã°ç°å¢ã§ãã¡ã¢ãªäœ¿çšéã®å€åã¯ãŠã©ããããŠããŸããããç¹ã«å€§å¹
ãªå¢å ã¯èŠãããæ¬çªç°å¢ã§åããŠçºèŠããäºæ
ã«ãªããŸããããã§ã«Ruby3.2ç³»ã§YJITãæå¹ã«ããŠãããããã¯ãã§ããRuby3.3.0+YJITã«ã¢ããããŒããããéã«ã¯ --yjit-exec-mem-size ã®å€ã«ã¯æ³šæããã»ããè¯ãããã§ãã ãŸãšã Ruby3.2ã§ãã§ã«YJITãæå¹ã«ããŠãããããã¯ãã§ãRuby3.3.0ã«ã¢ããããŒãããŠããã©ãŒãã³ã¹ã®æ¹åãèŠãããŸããïŒYJITã®åœ±é¿ãªã®ããã以å€ã®æé©åã«ããæ©æµãªã®ããŸã§ã¯æ€èšŒããŠãããŸããïŒã ãã§ã«YJITãæå¹ã«ããŠããå Žåã§ãRuby3.3.0ãžã®ã¢ããããŒãã§ã¡ã¢ãªã®äœ¿çšéã倧å¹
ã«å¢å ããå¯èœæ§ãããã®ã§æ³šæããŸãããã 調æ»ã®éã«ã¯äžèšã®ïŒäž»ã«k0kubunããã®ïŒããã¥ã¡ã³ãã«éåžžã«å©ããããŸããããã®å ŽãåããŠã瀌ãç³ãäžããŸãã github.com k0kubun.hatenablog.com gihyo.jp æ¬ãšã³ããªãŒãããããRuby3.3.0+YJITãžã¢ããããŒããããæ¹ã®ã圹ã«ç«ãŠã°å¹žãã§ãã *1 : ã¿ã€ããŒã¯Datadogã䜿ã£ãŠããŸããddtraceã¯Datadogã«ã¡ããªã¯ã¹ãéä¿¡ããgemã§ã
ã€ãã³ãæŠèŠ 2024幎2æ21æ¥ã«ãGENBA #2 ãFront-End Opsã®çŸå Žãããšé¡ããŠã¿ã€ããŒãSansanãã³ã³ãã©ãX Mileã®4瀟ã§Front-End Opsã«é¢ããååå匷äŒãéå¬ããŸããã ä»åã¯ãã¡ãã®å匷äŒããã¿ã€ããŒããã³ããšã³ããšã³ãžãã¢ã®è¥¿æµŠå€ªåºããã®çºè¡šãã€ãã³ãã¬ããŒãã§ãäŒãããŸãã ããã«ã¡ã¯ã西浊 倪åºã§ããå®¶æã§åæµ·éæå¹åžã§æ®ãã33æ³ã§ãã Javaã§ãã£ãªã¢ãã¹ã¿ãŒãããä»ã¯ããã³ããšã³ããšã³ãžãã¢ãšããŠ3幎ç®ã«ãªããŸããè¶£å³ã¯ã«ã¬ãŒäœããšã²ãŒã ã§ãã æ¬æ¥ã¯ããã€ãæ¥ãã倧æ¹ä¿®ã®ããã«åããŠããã¹ãããšãã«ã€ããŠãå®éã«å€§ããªæ¹ä¿®ãçµéšããŠåŠãã ããšãæ³¥èãçŸå Žã®è©±ãåçç¹ãããšããœãŒãããŒã¹ã§ã·ã§ã¢ããŸãã 1. ã©ããªå€§æ¹ä¿®ã ã£ãã åºèåãã®ç®¡çç»é¢ãã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒSPAïŒãžç§»è¡ããæ¹ä¿®ã§ãããããšããšãµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒã§æ§ç¯ãããŠããã·ã¹ãã ããReactãšNext.jsã䜿çšããSPAã«æ®µéçã«ãªãã¬ã€ã¹ããŠãããŸãããæ¹ä¿®ããæ©èœã¯å€§ããäžèš3ã€ã§ãã æ±äººæ©èœïŒäœæ/ç·šéïŒ æ±äººã²ãªåœ¢æ©èœïŒäœæ/ç·šéïŒ ã¡ãã»ãŒãžæ©èœïŒäžèŠ§è¡šç€ºïŒéä¿¡ïŒ 2. æ³¥èãã£ãããš æ¢åæ©èœã®ä»æ§èª¿æ»ã«èŠåŽ æ¢åã®SSRç»é¢ã®è©³çްãªããã¥ã¡ã³ããæ®ã£ãŠããããéåžžã«èŠåŽããŸãããããã¯ãã¿ã€ããŒå
¥ç€Ÿåã®Sleræä»£ãããçµéšããããšã§ã âããããâ ãªã®ã§ãããç¶æ³ãæéããããã«ã¯éåžžã«æ³¥èã調æ»ãå¿
èŠã§ãããã¡ããããã¥ã¡ã³ããå
šãæ®ã£ãŠããªãããã§ã¯ãªããFigma ã Notion ã«éšåçã«æ®ãããŠã¯ããã®ã§ãããå®å
šã«ã¯ã«ããŒãããŠããŸãããããŸãã«ãœãŒã¹ã³ãŒãã®æ
å ±ãå¿
ãããæ£ç¢ºã§ãªãããšããããããªãã®æéãšåŽåãããã調æ»ãè¡ããŸããã E2Eèªååã®ä»çµã¿ããªãã431ä»¶ã®E2Eãã¹ãé
ç®ã«èªåãã¹ãã宿œãã ãŠããããã¹ãã¯ã³ã³ããŒãã³ãåäœã§ååšããŠããŸããããE2Eèªååã®ä»çµã¿ãååšããŸããã§ãããVRTïŒVisual Regression TestingïŒã¯ãStorybook ãçšããŠè¡ãããŠããã®ã§ãããä»åã®ãããžã§ã¯ãã®èŠæš¡ã顧客ãžã®åœ±é¿ãèãããšãè»œãæ€èšŒãè¡ãã ãã§ã¯ãªã¹ã¯ã倧ãããšå€æããçµæçã« 431ä»¶ã® E2Eãã¹ããæåã§æ³¥èã宿œããéãéžã³ãŸããã ã¬ãã¥ãŒäœå¶ããªããã¬ãã¥ãŒã³ã¹ãã倧ãããªã£ã åœæã®ããã³ããšã³ãããŒã ã¯ã¬ãã¥ãŒäœå¶ã®æŽåãäžååã§ãã¡ã³ããŒãéãããŠãããã¬ãã¥ãŒã³ã¹ããé«ããªã£ãŠããŸããŸãããããŒã ã¯åãå«ããŠããã2人ãšãéåžžå€ã®æ¥åå§èš1人ãã¬ãã¥ãŒã«ååãªæéã確ä¿ããã®ãé£ããããããžã§ã¯ãã®é²è¡ã«åœ±é¿ãåºãŠããŸããããã®ãããã¬ãã¥ãŒãå¹ççã«é²ããããã«ãäžäººã®ãšã³ãžãã¢ã®æéããŸãšããŠç¢ºä¿ããäžæ°ã«ã¬ãã¥ãŒãå®äºãããæ¹æ³ãåããŸãããæ¬æ¥ã¯ããã«ãªã¢ãŒãã§ã®éåæã¬ãã¥ãŒãè¡ããäœå¶ãçæ³çã ãšæããŸãã 3. åããŠããã¹ããšæããããš æ©èœã®ä»æ§ã¯èæ¯èŸŒã¿ã§æ®ããŠãã 詳现ãªãœãŒã¹ã³ãŒãã³ã¡ã³ããå®çŸ©æžãããã°ãå°æ¥ã®æ¹åã«åœ¹ç«ã¡ãŸããç¹ã«è€éãªæ©èœãå€ãã®å
¥åé
ç®ãæã€å Žåãå®è£
ã®èæ¯ãçè§£ããããšã§ãåŸã
ã®æ¹åã容æã«ãªããå±äººåãé¿ããããšãã§ããŸããæè¿ã¯ãFigma ã Notion ã«ä»æ§ãšèæ¯ãå«ããŠèšé²ããããå¿ãããŠããŸãã èªååãã¹ãã®ä»çµã¿ãå°å
¥ãã ãããŸã§UTãVRTãå
å®ããŠããã°ããããŸã§E2Eã¯éèŠã§ã¯ãªããšèããŠããŸãããããããä»åã®ãªãã¬ã€ã¹ãçµãŠãèªååãã¹ãã®éèŠæ§ãåèªèããŠããŸããE2Eã«ãã£ãŠãUTã§æ€ç¥ã§ããªãåé¡ããªãªãŒã¹åã«ç¹å®ã§ããããšããããæ¹ããŠE2Eã®éèŠæ§ãšèªååã®å©ç¹ã宿ããŸããã ã¬ãã¥ãŒæã®èгç¹ãæŽå ã¬ãã¥ãŒã®æåãæ ¹ä»ãããŠãã åæã«ã¬ãã¥ãŒæã®èгç¹ãèŠç¹ã«é¢ããŠããŒã å
ã§ææå ããã¥ã¡ã³ãåããããšã§æ®æ®µããã¬ãã¥ãŒã³ã¹ããäžããŠãã ã¬ãã¥ãŒæåããã£ããæ ¹ä»ããã€ã€ãã¬ãã¥ãŒã®ãã€ã³ããããŒã å
ã§ãã£ããããã¥ã¡ã³ãåããŠããããšã倧äºã§ããããã¥ã¡ã³ãåããŠãªããšãéœåºŠã®ããåããã§æéãåãããã¬ãã¥ãŒã³ã¹ããå¢ããŸãããã®çµæããªãªãŒã¹ãµã€ã¯ã«ãé
ãããããããã§ããçŸåšã¯ããã³ããšã³ãããŒã ã®æ¡å€§ããããã¬ãã¥ãŒã«ãŒã«ãææåããäœæ¥ãé²ããŠããŸãã ãŸãšã ç§ãSleræä»£ã«çŽé¢ãããããœãŒã¹ã³ãŒããèŠãªããã°ä»æ§ãçè§£ã§ããªãããšãã£ã âããããâ ãªå
容ãå«ããæ¥é ãã倧ããªãªãã¬ã€ã¹ã«åããå¿æ§ããåããå¿
èŠæ§ãå
±æã§ãããå¬ããã§ããæ³¥èãäœæ¥ãçºèŠããããæ²èŠ³çã«ãªãã®ã§ã¯ãªããããã¯èãçŽãã¿ã€ãã³ã°ã ãªããšãããã€ã³ããæã€ããšã倧åããšæããŸãã nåãšèšãã€ã€ãããŸã§æ°ã¯æããããªãã£ã æ¥é ããå€§èŠæš¡ãªãã¬ã€ã¹ã«åããå¿æ§ããããŠããããšã¯å€§äº ïŒäœãèµ·ããããããããªãã®ã§ïŒãããããªãé転 ãããããªå
容ã«ãªã£ããšæããŠãã Timee以å€ã®ãããžã§ã¯ãïŒSESå°±æ¥æä»£ïŒã§ãçŽé¢ããäºãå€ãã£ã æ³¥èãããšã åããŠããã¹ãããšãã«ç¹ãããã€ã³ãã倧äºã«æãã ãã®ä»ã®æ¹ã®çºè¡šãæ°ã«ãªãæ¹ã¯ãã¡ãïŒ www.youtube.com å°ãã§ãèå³ãæã£ãŠããã ããæ¹ã¯æ¯éãã¡ãããã«ãžã¥ã¢ã«ã«ã話ããŸãããïŒ product-recruit.timee.co.jp
ã¯ããã« ããã«ã¡ã¯ãæ ªåŒäŒç€Ÿã¿ã€ããŒã®è²åºãšç³ããŸããããŒã¿ãµã€ãšã³ãã£ã¹ããšããŠåããŠãããçŽè¿ã¯ã«ã¹ã¿ããŒãµããŒãã®æ¥åæ¹åã«åããPoCãã·ã¹ãã éçºãªã©è¡ã£ãŠãããŸãã ããŠãä»åã¯2024幎3æ11æ¥ïŒæïŒïœ3æ15æ¥ïŒéïŒã«éå¬ããããèšèªåŠçåŠäŒç¬¬30å幎次倧äŒ(NLP2024)ãã«ãªã³ã©ã€ã³ã§åå ããŠããŸããã®ã§ãåå ã¬ããŒããå·çãããŠããã ããŸãã èšèªåŠçåŠäŒå¹Žæ¬¡å€§äŒã«ã€ã㊠www.anlp.jp èšèªåŠçåŠäŒå¹Žæ¬¡å€§äŒã¯ èšèªåŠçåŠäŒ ãäž»å¬ããåŠè¡äŒè°ã§ãããåœå
ã®èšèªåŠçã®ç ç©¶ææçºè¡šã®å ŽãšããŠããŸãåœéçãªç 究亀æµã®å ŽãšããŠã®åœå
æå€§èŠæš¡ã®ã€ãã³ããšãªã£ãŠããŸãã ä»åã®å¹Žæ¬¡å€§äŒã¯ç¬¬30åãè¿ããçºè¡šä»¶æ°ã599ä»¶ãåå è
æ°ïŒåœæ¥åå è
ã¯é€ãïŒã2045人ãšå€§äŒã®èŠæš¡ãé廿倧ãšãªã£ãŠããã幎ã
倧äŒãçãäžãã£ãŠããããšã䌺ããŸãã â» äžã®ã°ã©ãã¯å€§äŒã®ãªãŒããã³ã°ã§å
±æããããã®ã§ãã èšèªåŠçåŠäŒç¬¬30å幎次倧äŒã«åå ã§ããªãã£ãæ¹ã§ãã ãã¡ã ããçºè¡šè«æãé²èЧã§ããŸãã è峿·±ãã£ãç ç©¶ 忥ã®ãã¥ãŒããªã¢ã«ããæçµæ¥ã®ã¯ãŒã¯ã·ã§ãããŸã§è峿·±ãçºè¡šããããããããŸããããå人çã«æ°ã«ãªã£ãçºè¡šãããã€ãããã¯ã¢ããããŸãã [C3-4] InstructDoc: èªç¶èšèªæç€ºã«åºã¥ãèŠèŠçææžçè§£ æŠèŠ ãã¡ãã®ç ç©¶ã§ã¯ãèªç¶èšèªæç€ºã«åºã¥ããŠææžãèŠèŠçã«çè§£ããããã®åºç€ããŒã¿ã»ãããInstructDocããææ¡ãããŠããŸããInstructDocã¯ã12çš®é¡ã®èŠèŠçææžçè§£ïŒVDUïŒã¿ã¹ã¯ããæ§æããã倿§ãªèªç¶èšèªæç€ºãæäŸããæå€§èŠæš¡ã®ããŒã¿ã»ãããšãªã£ãŠããŸãã ç ç©¶ããŒã ã§ã¯ãå€§èŠæš¡èšèªã¢ãã«ïŒLLMïŒã®æšè«èœåãæŽ»çšããææžã®ã¬ã€ã¢ãŠããèŠèŠèŠçŽ ãåæã«çè§£ããããšãå¯èœãªæ°ããã¢ãã«ãInstruction-based Document reading and understanding modelïŒInstructDrïŒããææ¡ããå®éšãéããŠãã®æ§èœãæ€èšŒããŠããŸããInstructDrã¯ãèªç¶èšèªæç€ºãåºã«æªç¥ã®VDUã¿ã¹ã¯ã«é©å¿ããåŸæ¥ã®ãã«ãã¢ãŒãã«LLMã®æ§èœãè¶
ããããšã確èªãããŸããããŸããæç€ºãã¥ãŒãã³ã°æžã¿ã®ã¢ãã«ã®éã¿ãåæå€ãšããŠFine-Tuningããããšã§ãè€æ°ã®VDUã¿ã¹ã¯ã§äžçæé«æ§èœãéæããŸããã ææ³ ãã¡ãã®ç ç©¶ã§ã¯èŠèŠçææžçè§£ã®æ±åæ§èœã®åäžã«è²¢ç®ãããŠããŸããèªç¶èšèªæç€ºãçšããŠææžç»åããã¿ã¹ã¯ãæ±çšçã«å®è¡ã§ããæè¡ã¯ã瀟å
ãªãã¬ãŒã·ã§ã³ã®æ§ã
ãªã¿ã¹ã¯ã容æã«ããå¯èœæ§ãç§ããŠãããä»åŸã®ç ç©¶ã«ãæåŸ
ã§ãã NTT人éæ
å ±ç ç©¶æã®æ¹ã«ãã以äžã®éå»çºè¡šè³æãšä»åã®ç ç©¶ã¯ãªã³ã¯ããå
容ã ãšæããŠãããåãããŠèªãããšã§å
šäœåãã€ã¡ãŒãžããããã£ãã§ãã Collaborative AI: 視覚・言語・行動の融合 - Speaker Deck [A6-1] Swallowã³ãŒãã¹: æ¥æ¬èªå€§èŠæš¡ãŠã§ãã³ãŒãã¹ æŠèŠ ãªãŒãã³ãªæ¥æ¬èªèšèªå€§èŠæš¡ã¢ãã«ã®åŠç¿ã«ã¯ãCC-100ãmC4ãOSCARãªã©ã®ã³ãŒãã¹ã®æ¥æ¬èªéšåãçšããããŠããŸããããããããããã¯ãããŸã§æµ·å€ã§éçºããããã®ã§ãããæ¥æ¬èªããã¹ãã®å質ãéèŠããŠäœãããããã§ã¯ãããŸããã ããã§ãç ç©¶ããŒã ã¯åçšå©çšå¯èœãªæ¥æ¬èªã³ãŒãã¹ãšããŠã¯æå€§ã®ãŠã§ãã³ãŒãã¹ãæ§ç¯ããŸãããCommon Crawl ã®ã¢ãŒã«ã€ãïŒ2020 幎ãã 2023 幎ã«ãããŠåéããã 21ã¹ãããã·ã§ããåãçŽ 634 åããŒãžïŒãããæ¥æ¬èªã®ããã¹ããç¬èªã«æœåºã»ç²Ÿé¬ããæçµçã«ã¯çŽ3,121 åæåïŒçŽ 1.73 åããŒãžïŒãããªãæ¥æ¬èªãŠã§ãã³ãŒãã¹ïŒ Swallowã³ãŒãã¹ ïŒãæ§ç¯ããŠããŸãã Swallowã³ãŒãã¹ã¯ãã(1) Common Crawl ã® WARC ãã¡ã€ã«ããæ¥æ¬èªããã¹ããæœåºããã(2) å質ãã£ã«ã¿ãªã³ã°ããã³éè€é€å»ã§æ¥æ¬èªããã¹ããå³éžããã(3) ããã¹ãå
ã®æ£èŠåãè¡ãããã®æé ã«ããæ§ç¯ãããŸããã Swallowã³ãŒãã¹ãçšã㊠Llama 2 13B ã®ç¶ç¶äºååŠç¿ãè¡ã£ããšãããæ¢åã®ã³ãŒãã¹ãçšããå Žåãšæ¯ã¹ãŠåçããããäžåãæ§èœã® LLM ãæ§ç¯ã§ãããšå ±åãããŠããŸãã ææ³ æ¥åäžLLMã®æ¥æ¬èªå€§èŠæš¡ã³ãŒãã¹ãäœãããšã¯ãããŸããããèªç¶èšèªåŠçã®ããŒã¿ã»ãããäœæããããã§ã®TipsãšããŠå€§å€å匷ã«ãªããŸãããäŸãã°ãæ¥æ¬èªå€å®ãããããã«ãµããŒããã¯ã¿ãŒãã·ã³ãåŠç¿ãã fastText ããé«éåããã話ããMinHash ã«ããææžã®éè€å€å®ãªã©ã ãŸãã [A8-5] ã§ã¯ Swallow ã³ãŒãã¹ãå©çšããç¶ç¶åŠç¿ã«ã€ããŠè©³ããå
容ãçºè¡šãããŠããããã¡ããé¢çœãã£ãã§ãã [ A7-6 ] AmbiNLG: èªç¶èšèªçæã®ããã®æç€ºããã¹ãã®ææ§æ§è§£æ¶ æŠèŠ å€§èŠæš¡èšèªã¢ãã«ïŒLLMïŒã®ç»å Žã«ããèªç¶èšèªã®æç€ºãçšããæç€ºã«ãã£ãŠæ§ã
ãªèšèªåŠçã¿ã¹ã¯ãå®è¡å¯èœã«ãªããŸããããããããããã®æç€ºã®ææ§æ§ã«ãããŠãŒã¶ã®æå³ãšç°ãªãããã¹ããçæãããããšãåé¡ãšãªã£ãŠããŸãã ãã¡ãã®ç ç©¶ã¯ãèªç¶èšèªçæïŒNLGïŒã¿ã¹ã¯ã§ã®æç€ºããã¹ãã®ææ§æ§ãè§£æ¶ããããã®ãã³ãããŒã¯ããŒã¿ã»ãããšããŠãAmbiNLGããææ¡ãããŸãããAmbiNLG ã§ã®ããŒã¿ã»ããã®äœæã« LLM ãçšããŠã¢ãããŒã·ã§ã³ãè¡ããå¹
åºã29ã®NLGã¿ã¹ã¯2000äºäŸãããªãããŒã¿ã»ãããæ§ç¯ãããŠããŸãããŸããå®éšã«ããææ§æ§è£å®ã®ææ³ã«ã€ããŠã¯ãå®éšã«ããè€æ°ã®ææ§æ§ã«ããŽãªãæç€ºçãã€çµã¿åããã§äžããããšãéèŠã§ãããšç€ºåãããŸããã ææ³ LLMã䜿ãããªãããã«ã¯ããã³ãããé©åã«èª¿æŽããããšãéèŠã ãšèšãããŠããŸãããæç€ºããã¹ãã®ææ§æ§ãèœåçã«ææ or ä¿®æ£ã§ãããããªä»çµã¿ãããã°ããããŠãŒã¶ãŒãã¬ã³ããªãŒãªLLMãæ§ç¯ããããšãå¯èœããšæãããŸããå人çã«ã欲ããæ©èœã§ãïŒ ä»åŸã®å±æã§ã¯ãææ§æ§èªèã»è¿œå æç€ºã®çæã»æšè«ãend-to-end ã§è¡ã察話ã·ã¹ãã ã®æ§ç¯ã«ã€ããŠèšåãããŠããã®ã§ãå®éã«ãŠãŒã¶ã®æå³ãã©ã®ããã«ã·ã¹ãã åŽã§æ±²ã¿åã£ãŠããããæ°ã«ãªããŸãã ãããã« NLP2024ã§ã¯ãä»ã«ã倿°ã®é
åçãªç ç©¶ãçºè¡šããã5æ¥éãšããæéãéåžžã«å
å®ãããã®ãšãªããŸãããç¹ã«ãå€§èŠæš¡èšèªã¢ãã«ïŒLLMïŒã«é¢é£ããç ç©¶ãç®ç«ã¡ãŸãããããã®ç¯å²ã¯ããŒã¿ã®æ§ç¯ããäºå®æ§ãå®å
šæ§ã®æ€èšŒã«è³ããŸã§åºãã£ãŠããã倿§ãªè§åºŠããã®ç ç©¶ææãèŠãããšãã§ããã®ãå°è±¡çã§ããã çŸåšãã¿ã€ããŒã§ã¯ãããŒã¿ãµã€ãšã³ã¹ããšã³ãžãã¢ãªã³ã°ã®åéã§ãå
±ã«æé·ãã驿°ãæšãé²ããŠãããæ°ããªããŒã ã¡ã³ããŒãç©æ¥µçã«æ¢ããŠããŸãïŒ ãŸããæ°è»œãªé°å²æ°ã§ã® ã«ãžã¥ã¢ã«é¢è« ãéæè¡ã£ãŠãããŸãã®ã§ããã²ãæ°è»œã«ãšã³ããªãŒããŠãã ãããâ hrmos.co hrmos.co
ããã«ã¡ã¯ãiOSãšã³ãžãã¢ã®åç°( @naoya_maeda ) ãæ©å·( @hykwtmyk )ãäžå¥œãå²éšïŒ @beryu ïŒãAndroidãšã³ãžãã¢ã®ã¿ãã¿ïŒ @mono33 ïŒã§ãã 2024幎3æ22-24æ¥ã«æžè°·ã§éå¬ãããtry! Swift Tokyoã«ãã¿ã€ããŒãGOLDã¹ãã³ãµãŒãšããŠåè³ãããŠé ããŸããã ç§éãã€ãã³ãã«åå ããã®ã§ãã¡ã³ããŒãããããæ°ã«ãªã£ãã»ãã·ã§ã³ã玹ä»ããŸãã ç¹ã«æ°ã«ãªã£ãã»ãã·ã§ã³(åç°ç·š) åãç¹ã«æ°ã«ãªã£ãã»ãã·ã§ã³ã¯ããªã«ãªããµããã«ãããSF Symbolsã®èžè¡çäžçïŒéããªãå¯èœæ§ãè§£ãæŸã€ãã§ãã ãªã«ãªããµããã¯ãiOSDC Japan 2022ã§ã SF Symbolsã¢ãŒãã®å¯èœæ§ ã«ã€ããŠã話ãããŠãããä»åã®ã»ãã·ã§ã³ã§ã¯ãã¢ãã¡ãŒã·ã§ã³ã亀ãããã€ãããã¯ãªSF Symbolsã¢ãŒãã玹ä»ãããŠããŸããã SF Symbolsãšã¯ SF Symbolsã¯ãAppleãæäŸããã¢ã€ã³ã³ããã³ã·ã³ãã«ã®ã»ããã§ãã WWDC 2019ã§åããŠéçºè
ã«å
¬éãããiOS ãmacOSãwatchOSã§äœ¿çšå¯èœã«ãªããŸããã SF Symbolsã¯ã宿çã«ã¢ããããŒããè¡ãããæ°ããã¢ã€ã³ã³ãã·ã³ãã«ã®è¿œå ãããã©ãŒãã³ã¹ã®æ¹åãè¡ãããŠããŸãã SF Symbols 5ãšã¯ SF Symbols 5ã§ã¯ã5000ãè¶
ããã¢ã€ã³ã³ããã³ã·ã³ãã«ãæäŸãããŠããŸããããã«ããããæ°è¡ã®ã³ãŒãã§ã¢ãã¡ãŒã·ã§ã³ãšãã§ã¯ããå®çŸããããšãã§ããããã«ãªããŸããã ãSF Symbolsã®èžè¡çäžçïŒéããªãå¯èœæ§ãè§£ãæŸã€ãã§ã¯ãããŸããŸãªã¢ã€ã³ã³ãã·ã³ãã«ããããŠSF Symbols 5ã§è¿œå ãããã¢ãã¡ãŒã·ã§ã³æ©èœããã«ã«æŽ»çšãããã€ãããã¯ãªSF Symbolsã¢ãŒãäœåã玹ä»ãããŠããŸãã www.youtube.com æ®æ®µäœæ°ãªã䜿çšããŠããSF Symbolséãçµã¿åããããŠãããäžã€ã®SF Symbolsã¢ãŒãäœåã«ãªãæ§ã¯å§å·»ã§ããïŒ ãŸããSF Symbols 5ã«ã¯ãæ§ã
ãªã¢ãã¡ãŒã·ã§ã³ãšãã§ã¯ããçšæãããŠãããšç¥ãããšãã§ããã¿ã€ããŒã¢ããªå
ã§ãSF SymbolsãæŽ»çšããŠãããããšæããŸããã ä»åã玹ä»ããããªãã£ãäœåã¯GitHubã§å
¬éãããŠããã®ã§ããã²äžåºŠã芧ãã ããïŒ github.com ãç»å£è³æ www.docswell.com ç¹ã«æ°ã«ãªã£ãã»ãã·ã§ã³(æ©å·ç·š) ä»åãèªåãæ°ã«ãªã£ãã»ãã·ã§ã³ã¯ã ã³ãŒã眲åãæ¥œããä¹ãåãæ¹æ³ ãã§ãã ãã®ã»ãã·ã§ã³ã§ã¯CertificateãProvisioning ProfileãApplication Identifierãªã©ãã¢ããªããªãªãŒã¹ããäžã§å¿
èŠãªã³ãŒã眲åã®èŠçŽ ãåãããããããºã«ã«èŠç«ãŠãŠè§£èª¬ããŠããŸããã ãŸããããºã«ã«èŠç«ãŠãããšã«ãã£ãŠã©ãã«ãšã©ãŒãèµ·ããŠããã®ããåããããããªã解決ããããã®èŠçŽ ã®æšæž¬ã容æã«ãªã£ãããªãšæããŸãã äžã®å³ã§èšããšProvisioning Profileã¯Certificateãšã¯åé¡ãªãçµã³ã€ããŠããŸãããApplication Identifierãšæ£ããçµã³ã€ããŠããªããããšã©ãŒãèµ·ããŠããŸãã 解決ããã«ã¯ãProvisioning Profileã«çµã³ã€ããŠããApplication IdentifierãšäžèŽããããã«ã¢ããªåŽã®Application Identifieãèšå®ããªããããããProvisioning Profileãã¢ããªåŽã«èšå®ãããŠããApplication Identifierã«åãããŠäœæããªããããã«ãªããŸãã åèŠçŽ ãããºã«ã®ããŒã¹ã«èŠç«ãŠãããšã§ãçžäºã®çµã³ã€ããèŠèŠçã«è§£å床é«ãçè§£ã§ããŸããã ç»å£è
ã® Josh Holtz ããã®çºè¡šå
容ãçžãŸã£ãŠã³ãŒã眲åãæ¥œããæããããšãã§ããŸããç¬ ç¹ã«æ°ã«ãªã£ãã»ãã·ã§ã³(ã¿ãã¿ç·š) ç¹ã«å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ã¯ããã¯ãããã¹ããããã§ããä»åã®try! Swiftã§ã泚ç®ãéããŠãã TCA ãéçºããã Point-Free ã®StephenãããšBrandonããã«ããçºè¡šã§ãã github.com çºè¡šãã£ãããŸãšã ãã¯ãã¯Swift 5.9ããå°å
¥ãããã³ã³ãã€ã«æã«ãœãŒã¹ã³ãŒãã®äžéšãçæããæ©èœã§ããäž»ã«ãã€ã©ãŒãã¬ãŒããæžããããšãç®çã«å©çšãããŸããiOSã¢ããªéçºã®äžçã§ã¯SwiftUIã®ãã¬ãã¥ãŒãç°¡æœã«è¡ãã#Previewããæ°ããããŒã¿æ°žç¶åã®ãã¬ãŒã ã¯ãŒã¯ã§ããSwiftDataã®ã¢ãã«å®çŸ©ãç°¡ç¥åããã@Modelãã¯ãããªã©ã®æšæºã®ãã¯ããæ°å€ãçšæãããŠããŸãã ãã¯ãã¯æçã§ã¯ãããã®ã®ãã¯ãã«ãã£ãŠçæãããã³ãŒããå€ããã°å€ãã»ã©ãšã©ãŒãçºçããå¯èœæ§ã¯é«ãŸããŸããç¹ã«ãã¯ããå®è£
ããå Žåã¯çæãããã³ãŒãã察象ã«ãSwiftã®ææ³ã®ãããããšããžã±ãŒã¹ãèæ
®ããŠå€ãã®ãã¹ããè¡ãããšãæãŸããã§ãã ãããããã¯ãã®ãã¹ããå€ãã®èª²é¡ããããŸããäŸãã°ãã¯ãã§çæãããã³ãŒãã®ãšã©ãŒãèŠåãXcodeäžãããããã«ããã Appleæšæºã®ãã¯ãã®ãã¹ããã«ããŒã®æåæ¯èŒã®å€å®ãã·ãã¢ã§ãã©ãŒããããªã©ã®æ¬è³ªçã§ã¯ãªãéšåã§ãã¹ããèœã¡ãŠããŸããšããåé¡ããããŸãããŸãããã¯ãã®å®è£
ãå€ãã£ãå Žåã¯ãã¹ããä¿®æ£ããå¿
èŠãããã¡ã³ããã³ã¹ã倧å€ã§ãã ããã§Point-Freeã swift-macro-testing ãšãããã¹ãã©ã€ãã©ãªãå
¬éããŠããŸããswift-macro-testingã¯æ€èšŒããããã¯ãã®ãœãŒã¹ã³ãŒãã assertMacro() ã«æžã蟌ãã ãã§ã©ã®ããã«å±éãããããèªåã§ãã¹ãã³ãŒãã«åæ ããŸãã ææ³ éäžã§ã©ã€ããã¢ããã£ãããé»éè¡çã«çæããããã¹ãã³ãŒããæ«é²ãããããšãªããšãªãäŒå Žãè³ãã£ãŠããæ°ãããŸããAndroidã«ãããŠèªåçæãè¡ãã³ãŒãã¯ããŸã«æžãã®ã§ãããèªåçæã®ã³ãŒãããã¹ããããšããã®ã¯å人çã«ç²ç¹ã§é¢çœããªãšæããŸããã ç¹ã«æ°ã«ãªã£ãã»ãã·ã§ã³(äžå¥œç·š) ä»åæ°ã«ãªã£ãã»ãã·ã§ã³ã¯ã å¹³åã«å€§èŠæš¡ãªã³ãŒãããŒã¹ãç§»è¡ããæ¹æ³ ã§ãã æ°ããã»ãã·ã§ã³ã®äžã§ã¯ãå²ãšå®çšçã§ããã«æŽ»çšã§ãããããªå
容ã§ããã ã»ãã·ã§ã³è³æã¯ãã¡ã drive.google.com ç Žå£ç倿Žãé¿ããæ¹æ³ ããã©ã«ããã©ã¡ãŒã¿ãå©çš ã¡ãœãããæ¡åŒµãããšãã«ããã©ã¡ãŒã¿ãå¢ãããšãããå©çšããåŽãã¹ãŠã®ä¿®æ£ãå¿
èŠã«ãªã ããã©ã«ããã©ã¡ãŒã¿ãå©çšããããšã§ãå©çšããåŽã®å€æŽãªãæ©èœæ¡åŒµããããšãã§ãã protocol extensionãå©çš ãããã³ã«ã®ã¡ãœãããå¢ãããšãããã«æºæ ããclassãstructã§ã¯ãã®ã¡ãœãããå¿
ãå®è£
ããå¿
èŠããã protocol extensionãå©çšããããã©ã«ãã®å®è£
ãå®çŸ©ããããšã§ãå©çšããåŽã¯å€æŽãªãæ©èœæ¡åŒµããããšãã§ãã @availableã®å©çš åœå倿Žãç Žå£ç倿Žã«ãªããã Diagnosticã®warningãå©çš enumã®å©çš caseãå¢ãããšãå©çšåŽã§defaultå®è£
ããªãå Žå倿Žãå¿
èŠã«ãªã non-frozen enumã ãšã@unknown defaultã®å®çŸ©ãå¿
èŠãªã®ã§ãç Žå£ç倿Žã¯é¿ãããã ããããnon-frozen enumã¯éçºè
ã«æäŸãããŠãããå©çšã§ããªã enumã®caseãããããstatic letã§å©çšã§ããããã«ãã Disfavoured Overload @_disfavoredOverloadã䜿ã ããã©ã«ããã©ã¡ãŒã¿ãæžãããªã© æ©èœåæžã§ã®ç Žå£ç倿Žãé¿ããç®çã§äœ¿ããã Finding Problem swift package diagnose-api-breaking-changes [ãã©ã³ãå] äžèšã³ãã³ãã§ãæå®ãããã©ã³ãã®éã§ç Žå£ç倿ŽããããæããŠããã ãã€ç Žå£ç倿Žãè¡ãã®ã æè¡çè² åµãšãŠãŒã¶ãŒã®ã€ã©ã€ã©ã倩秀ã«ãããéã«å€§ããªåããçãŸãããšã @_disfavoredOverloadçååšèªäœç¥ããªãã£ãã®ã§ããšãŠãå匷ã«ãªããŸããã æ¥å¹Žã®éå¬ãããšæãã®ã§ããã²çãããåå ããŠã¿ãŠãã ããã ç¹ã«æ°ã«ãªã£ãã»ãã·ã§ã³(å²éšç·š) try! Swiftã¯4åç®ïŒ2016,2018,2019,2024ïŒã®åå ã§ããïŒ2017幎ã®èšæ¶ãææ§ãªã®ã§ã5åç®ãããããªãâŠïŒã ã©ã®ã»ãã·ã§ã³ãææçŸ©ã§ããããç§ã¯ç¹ã«ãAccessibility APIã䜿ã£ãŠã¢ããªã±ãŒã·ã§ã³ãæ¡åŒµãããã®ã»ãã·ã§ã³ãéåžžã«è峿·±ãããµã³ãã«ã¢ããªãŸã§äœããŸããã 1åã«ãŸãšããã·ã§ãŒãåç»ãçšæããã®ã§ã芧ãã ããã æéã®é¢ä¿ã§åç»äžã§ã¯è©³çްã«è§ŠããŠããŸããããAccessibility APIãéããŠååŸã§ãã AXUIElement ã€ã³ã¹ã¿ã³ã¹ã«ã¯å€§ããªå¯èœæ§ãæããŸããããã®ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã«ã¯èµ·åäžã®å
šã¢ããªã«ã€ããŠã®ä»¥äžã®ãããªãŠã£ã³ããŠæ
å ±ãè©°ãŸã£ãŠããŸãã ã¢ããªå ãŠã£ã³ããŠã®XYåº§æš ãŠã£ã³ããŠãµã€ãº ä»ã®ã¢ããªã®UIã«èªåã®ã¢ããªãçŽæ¥çã«äœçšã§ãããã®èãæ¹ã¯ãSandboxã®capabilityãåãé€ããmacOSãªãã§ã¯ã§ãšãŠãé¢çœããšæããŸããã å®éã«ãŠãŒãã£ãªãã£ã¢ããªäœãéã¯ã以äžã®ãããªæé ã§è¡ããŸããã Xcodeãããžã§ã¯ãæ°èŠäœæãmacOSã¢ããªãéžæ ãŸãã¯ã¹ã©ã€ãã«ããèšå®ã宿œ capabilityããSandboxèšå®åé€ ContentViewãéããŠéã«å®è£
ä»ãŠã£ã³ããŠã®æ
å ±ãåããæ§é äœãšé
å ä»ãŠã£ã³ããŠã®æ
å ±ãéããã¡ãœãã æå®ãããŠã£ã³ããŠãã¢ã¯ãã£ãã«ããã¡ãœãã ãŠã£ã³ããŠã®èæ¯ãéæã«ããView ãããããŒãç£èŠããã¡ãœãã ããããçµã¿åãããŠå®æ 以äžã®GitHubãªããžããªã§å
¬éããŠããã®ã§ããã²è§Šã£ãŠã¿ãŠãã ããã ïŒãããŸã§æ€èšŒçšã§äœã£ãã®ã§ç²ã¯å€ããšæããŸãâŠãPRããåŸ
ã¡ããŠãããŸãïŒ github.com æåŸã« try!Swiftã¯äžçäžããiOSãšã³ãžãã¢ãéãŸãã€ãã³ããªã®ã§ä¹
ããå人ã«äŒããã®ã¯ãã¡ãããã¿ã€ããŒã®ãšã³ãžãã¢ã¯ãã«ãªã¢ãŒãã§åããŠããã®ã§æ®æ®µWEBã«ã¡ã©è¶ãã«ãã話ããŠããªãååãšã察é¢ã§äŒè©±ã§ããŠéåžžã«æ¥œããæéã§ããã ãã®å ŽãçšæããŠãã ãã£ãéå¶ããŒã ã®çãããããã³äŒå Žã§ã話ãããŠãã ãã£ãçããã«å¿ããæè¬ããŸãã äžèšã§ç޹ä»ããã»ãã·ã§ã³ä»¥å€ã«ãéåžžã«è峿·±ãã»ãã·ã§ã³ãå€ããããŸããã èšäºã«ããå
容ãããã®ä»ã®å
容ã«ã€ããŠããããã¿ã€ããŒã®ãšã³ãžãã¢ãšè©±ããããšããæ¹ãããã£ãããã°ãã²ãæ°è»œã«ã話ãããŸãããïŒ product-recruit.timee.co.jp
ã¿ã€ããŒã®ç¢å°»ãé è²ãrazã§ãã ãœãããŠã§ã¢ãã¹ãã«é¢ããåœå
æå€§çŽã®ã«ã³ãã¡ã¬ã³ã¹ãJaSST (Japan Symposium on Software Testing) â24 Tokyoãã2024/03/14ã15ã®2æ¥éã«ããã£ãŠéå¬ãããŸããã jasst.jp ç»å£æã®æ§å ä»åã¯æããGo AkazawaãšYorimitsu Kobayashiãç»å£ïŒãã®å¿æŽãå
ŒããŠQAã³ãŒãããšã³ãžãã¢ãã¹ã¯ã©ã ãã¹ã¿ãŒã®3åãåå ãäžçäžã§éå¬ããããã¹ãŠã®æè¡ç³»ã«ã³ãã¡ã¬ã³ã¹ã«ç¡å¶éã§åå ã§ãããKaigi Passããšããå¶åºŠãå©çšããŸããã productpr.timee.co.jp æ¬ã¬ããŒãã§ã¯ãå°è±¡ã«æ®ã£ãã»ãã·ã§ã³ã®å
容ãäžå¿ã«ã2æ¥éã®äŒã®æ§åããäŒãããŸãã åã¿ãããã»ã©ã«å³ããæ·±ããMaking Quality Tangibleã ä»å¹Žã®1æã«å
¥ç€Ÿããã°ããã®é§ãåºãQAã³ãŒãã®ç¢å°»ã§ãã æ¯å¹Žæ¥œãã¿ã«ããŠããJaSST Tokyoã«ä»å¹Žããªã³ã©ã€ã³èŠèŽã§åå ããŸããã èŠèŽãããã¹ãŠã®ã»ãã·ã§ã³ã瀺åã«å¯ãã åŠã³å€ããã®ã§ããããäžã§ãã€ã³ãã¯ãã®å€§ããã£ã Gojko Adzic æ°ã«ããåºèª¿è¬æŒãTangible software qualityã ã®ææ³ãã話ããŸãã ãTangible software qualityããçŽèš³ãããšããå
·äœçãªãœãããŠã§ã¢å質ããšãªããŸãã ãã®ã»ãã·ã§ã³ã§ã¯çŽæ¥çã«ãã¹ãã§ããªããœãããŠã§ã¢âå質âããããã¯ãã«âäœã蟌ãâããã®ãã€ã³ãã»ãããã¢ãã«ã玹ä»ãããŸããã ã»ãã·ã§ã³ã®æåŸã«ç޹ä»ããã5ã€ã®ãMaking Quality TangibleïŒå質ãå
·äœåããããã®ã¬ã€ãã©ã€ã³ïŒãã¯ãå²åŠçã§é£è§£ã§ãããåã¿ãããã»ã©ã«å³ããæ·±ããã®ã§ããã®ã§ç§ãªãã«æèš³ããŠææ³ã«ä»£ããããŠããã ããŸãã MEASURE PRESENCE, not absenceïŒæèš³ïŒäžåšã§ã¯ãªãååšã枬å®ããïŒ æ¬ é¥ãåé¡ç¹ã§ã¯ãªããå®çŸããã䟡å€ã«çŠç¹ãåœãŠãããšã®éèŠæ§ã匷調ãããŸãããããžãã£ããªåŽé¢ãé
åãè©äŸ¡ããããšãã䟡å€ãé
åãæããããã®éµã§ãããšæããŸããã Describe multiple QUALITIESïŒæèš³ïŒè€æ°ã®è³ªãèšè¿°ããïŒ å
容ã«å¿ å®ãªææ³ã§ã¯ãããŸããããäŸãã°ç掻ã®è³ªïŒQOLïŒã®ããã«å¥åº·ã»çµæžçå®å®ã»æè²ã»è·æ¥ã»å®¶æé¢ä¿ã»æåçå
è¶³æãªã©æ§ã
ãªææšã§æ§æãããã©ããäžã€ãæºããããŠããã°å¹žçŠãšããããã§ã¯ãªããšããããšã«äŒŒãŠãããšæããŸããã ãœãããŠã§ã¢ãåæ§ã«ã䜿ãã²ãšã幞ãã§ããããã®å€æ§ãªæ§æèŠçŽ ãèŠæ±ãããæ°Žæºã§æºããããšãéèŠãšåãåããŸããã Trade-offs are a PRODUCT DECISIONïŒæèš³ïŒãã¬ãŒããªãã¯è£œåã®æææ±ºå®ã®äžç°ã§ããïŒ èª°ããt_wadaæ°ã®ã質ãšã¹ããŒãããæ³èµ·ããã®ã§ã¯ãšæã£ãŠããŸãã ãã¡ããã質ãšã¹ããŒããã®éã®ãã¬ãŒããªãã¯è§£æ±ºå¯èœãšç§ãæã£ãŠããŸãããããã§ã¯ç¶²çŸ
çãªãã¹ãã§ãªã¹ã¯ããŒãã«è¿ã¥ããããšã§ã¯ãªããã©ã®åè³ªç¹æ§ãã©ã®çšåºŠéèŠãªã®ãéã¿ä»ããããŠãéèŠãªãã®ãããã©ã³ã¹è¯ããªãœãŒã¹ãé
åããã®ãéèŠãšåãåããŸãããïŒãèŠã¯ãã©ã³ã¹ãã§ããïŒ Shape priorities with a MODELïŒæèš³ïŒã¢ãã«ãçšããŠåªå
床ã圢æããïŒ è£œåã®æææ±ºå®ã®äžç°ãšããŠçãããã¬ãŒããªãã倿ããåºæºãšããŠåã¯éçšããŸãããããã§ã·ã³ãã«ã§æçšãªã¢ãã«ãšããŠãæçšæ§ããå·®å¥åãã飜åç¹ãããæãQUPER ModelãšãããºããŒã®5æ®µéæ¬²æ±ã¢ãã«ãã玹ä»ãããŠããŸããã QUPER model for better requirements Redefining software quality VISUALISE and ACTïŒèŠèŠåããŠè¡åããïŒ ããããã¯åé¢éããåéããã¡ããªã¯ã¹ãæ ¹æ ã«è¡åããããšããããšããšæããŸãã ïŒããããã°æè¿ãèŠããåãã£ãŠèããªããªããŸãããïŒ ãŸãã«ã¿ã€ããŒã§ã䟡å€ãããœãããŠã§ã¢ãæéã§ããªããªãŒããããã«ããŒã ããããžãŒåã®çµç¹æŠç¥ãæ¡çšããŠããŸãã䟡å€ã«çç®ããŠããç¹ã§åãæ¹åæ§ã®ã»ãã·ã§ã³ã ãšæããŸããã®ã§ãä»å玹ä»ãããã¢ãã«ãã¡ããªã¯ã¹ã¯æã«è§ŠããŠããŒã ã§ç޹ä»ã詊ããŠãããããšèããŠããŸãã ç°æ¥çš®ã®å質ä¿èšŒããåŸãããåŠã³ èªåãã¹ãã奜ããªããã¯ãšã³ããšã³ãžãã¢ã® é è² ã§ãã JaSSTã¯ååå ïŒãªã³ã©ã€ã³èŠèŽïŒã§ããŠãåŒç€Ÿã®èµ€æŸ€ãšå°æã®ç»å£ãå¿æŽããããšããã®ããã£ããã§ããã å
šäœãéããŠäžçªå°è±¡ã«æ®ã£ãã®ã¯ããšã¿èªåè»ã®é·å°ŸæŽå¹³æ°ã«ããã èªåè»ã®ãœãããŠã§ã¢å質ã«é¢ããçŸå Žã®è©Šè¡é¯èª€ ãã§ãã èªåè»ãå¶åŸ¡ãããœãããŠã§ã¢ã¯æ°åäžããæ°åè¡ã®ã³ãŒããããªã£ãŠããããŸããã®èŠæš¡ãšè€éãã«é©ããŸããããŸãããã¹ãã³ãŒãã®å質ã«ãèŠæ Œãããããã®è³ªãæ
ä¿ããããã«ãã¥ãŒããŒã·ã§ã³åæãªã©ã掻çšããŠããããã§ãã äžæ¹ã§å®æ©ãã¹ãã®å¶çŽã®å€ãã«èŠåŽãããŠãããšã®ããšã§ããã¯èªåè»ãªãã§ã¯ã®æ©ã¿ã ãªãšæããŸããããã¹ãã®ã¢ãããŒããšããŠQAãèŠä»¶å®çŸ©æ®µéããé¢äžããããããã·ããã¬ãããå®è·µãããŠããç¹ãéåžžã«è峿·±ãã£ãã§ãã ãŸãä»ã®ã»ãã·ã§ã³ã§ããšã 鳿¥œã®äžçããåŠã¶ããœãããŠã§ã¢å質 ãã¯ãããæŒå¥è
ãæããŠé³æ¥œãšãœãããŠã§ã¢ãšããç¡åœ¢ã®ãããã¯ãã®è³ªã«ã€ããŠæ¢ãéå¿çãªè©Šã¿ã§ããã ç§ã¯ãœãããŠã§ã¢ãšã³ãžãã¢ãšããç«å Žã§ãããæ¥ã
ã®éçºã§ã¯èªèº«ã§ããã¹ããè¡ã£ãŠããããã倧å€åŠã³ã®å€ãã€ãã³ãã§ããã ãã¢ãžã£ã€ã«ããã¹ã¯ã©ã ããå€ãåºãŠããããšã«é©ã QAããã¹ãçéãã©ããªæããªã®ãæ°ã«ãªã£ãã®ã§åå ããŸããã¹ã¯ã©ã ãã¹ã¿ãŒã® raz ã§ãã ç§ãJaSSTã«ååå ïŒãªã³ã©ã€ã³ïŒã§ãããæ£çŽãªãšããã瀟å
ã§åå åžæè
ãåããŸã§ãååšãç¥ããªãã£ãã®ã§ãããåå ã§ããŠããã£ãã§ãã ç§ãå°è±¡ã«æ®ã£ãã®ã¯ãããšã¿èªåè»ã®é·å°ŸæŽå¹³æ°ã«ããã èªåè»ã®ãœãããŠã§ã¢å質ã«é¢ããçŸå Žã®è©Šè¡é¯èª€ ããªã®ã§ãããé è²ãããææ³ãæžããŠãã ãã£ãŠãã®ã§å²æããŠãããŸãç¬ã è²ã
ãªçºè¡šãèŠãããŠããã ããŸããããå
šäœçãªææ³ãšããŠãã¢ãžã£ã€ã«ãããã¹ã¯ã©ã ããšãã£ãããŒã¯ãŒããããããåºãŠããã®ãé©ãã§ããããœãããŠã§ã¢ãšã³ãžãã¢ãã¢ãžã£ã€ã«ãªãããã¯ãéçºã«å€åããŠãã£ãäžã§ãQAçµç¹ãQAãšã³ãžãã¢ããã®å€åãžé©å¿ããŠããããšããŠããããã«æããŸããã ãã®äžã§ããå質ãã«ã€ããŠã 誰ã®ãªãã®ããã®å質ãªã®ã ããèããŠããã®ãããšãŠãè¯ãã£ãã§ããçºè¡šã®äžã«ã¯ãæ¬åœã«ãã®èãã§ããã®ãïŒããšããè°è«ã®äœå°ã¯ãã£ããããããŸãããã顧客äžå¿ã«å質ãè°è«ããæŽ»åããããç¶ç¶ããã®ã¯çŽ æŽãããããšã ãšæããŸãã åŒç€Ÿã§ãã顧客ã®ããã®å質ãã«ã€ããŠããã£ãšèããŠãããã°ãšæããŸãã ãããã« åŒç€Ÿã¯ä»åãŽãŒã«ãã¹ãã³ãµãŒãšããŠåããŠJaSST Tokyoã«åè³ãããŠããã ããŸãããæ¬¡å以éããªãããã®åœ¢ã§è²¢ç®ããŠäžç·ã«ã³ãã¥ããã£ãçãäžããŠãããã°ãšæããŸãã ã¿ã€ããŒã®QAããœãããŠã§ã¢ãã¹ãã«ã€ããŠãã£ãšç¥ããããšããæ¹ã¯ãã²ã«ãžã¥ã¢ã«é¢è«ã§ã話ããŸãããã product-recruit.timee.co.jp
ã¯ããã« èª²é¡æã»èæ¯ äœ¿çšããŠããBIããŒã«ã«ã€ã㊠BIããŒã«ã®äœ¿çšããªã¥ãŒã æã«ã€ã㊠ãã£ãããšïŒæŠèŠ ãã£ãããšïŒè©³çް referenced tableã«ããŒãã«åã§ã¯ãªãdbtã¢ãã«åãå
¥ãããã«ããããšã«ã€ã㊠åçš®ã¢ãŠããããã®å
¬éèšå®ãmetaæ
å ±ãšããŠä»äžããæ¹éãšããããšã«ã€ã㊠tagã远å ããŠexposureã®æ€çŽ¢æ§ãåäžãããããš exposureã®nameã«ã·ãŒããšããã·ã¥ããŒãã®ã¿ã€ãã«ãåæ ããæ¹éã«ããããš ä»åŸã®çºå± ä¿å®éçšã®èšèš ã«ã©ã ã¬ãã«ãªããŒãžã¥ âïž exposure ãããã« We're Hiring!! ã¯ããã« ããã«ã¡ã¯ãokodooonã§ãïŒïŒ ããŒã¿åºç€ãåç
§ããã¢ãŠããããã瀟å
ã«æº¢ãããã£ãŠããŸãããïŒ åŒç€Ÿã¯è¿œããããŠããªãLookerStudioãConnectedSheetããã¡ããã¡ã溢ãããã£ãŠããŸããã ãããªæãyoshidaããã®ä»¥äžã®èšäºãæèªããããŸããŠãä»åã®å®è£
ã«è³ã£ã次第ã§ããããŸãã LookerStudioã®èšäº ConnectedSheetã®èšäº www.yasuhisay.info www.yasuhisay.info é¢èãªãã§ãããã®å Žãä»¥ãŠæè¬ã®æã衚ãããŠããã ããŸãïŒããããšãããããŸãïŒ èª²é¡æã»èæ¯ äœ¿çšããŠããBIããŒã«ã«ã€ã㊠åŒç€Ÿã§ã¯BIããŒã«ãæ°çš®é¡å©çšããŠãBigQueryããŒã¿åºç€äžã®ããŒã¿ã掻çšããŠããŸãã 以äžããã®äžèЧãšãã£ãããšãã圹å²ã§ãã Looker : 瀟å
ã®äž»èŠãªåæããã»ã¹ãã«ããŒããã»ãã³ãã£ãã¯ã¬ã€ã€ãŒãæäŸ LookerStudio : ã¢ãããã¯ãªã¬ããŒãã£ã³ã°ãLookerã§ã«ããŒããããŠããªãææšãçšããããã·ã¥ããŒãæ§ç¯ Googleã¹ãã¬ããã·ãŒãã®ConnectedSheet : ã¹ãã¬ããã·ãŒãäžã§ããžãã¹ã¡ã³ããŒãäœæ¥ããéã®ããŒã¿ãœãŒã¹ãšããŠã®äœ¿ããæ¹ Redash : å
ã
LookerStudioåæ§ã®äœ¿ããæ¹ãããŠãããã¬ããã³ã¹åäžãšSSoTå®çŸã®ããã«å»æ¢äœæ¥äž Lookerçµç±ã®ã¢ãŠããããã§ããã°ããœãŒã¹ããŒã¿ã«å€æŽãçºçããã瀟å
ã®ææšåºåããžãã¯ã«ä¿®æ£ãçºçããå Žåã«ããã£ã¡ã³ã·ã§ãã«ã¢ããªã³ã°å±€ã§åžåãããLookerã®ContentValidatoræ©èœãªã©ã§ã¬ããã³ã¹ãå¹ãããããšãã§ããŸãã ãããBIããŒã«åŽã«çŽæ¥ã¯ãšãªãæžã圢ãšãªãLookerStudioãšConnectedSheetãçšããã¢ãŠããããã®ä¿å®ãšã¬ããã³ã¹ãåé¡ãšãªã£ãŠããŸããã BIããŒã«ã®äœ¿çšããªã¥ãŒã æã«ã€ã㊠ãããªæãã®ã¯ãšãªã§èª¿æ»ããŠããŸãã SELECT DISTINCT JSON_VALUE(protopayload_auditlog.metadataJson, " $.firstPartyAppMetadata.sheetsMetadata.docId " ) AS sheet_id, FROM `example-project.bq_usage_logs.cloudaudit_googleapis_com_data_access_*` WHERE protopayload_auditlog.serviceName = " bigquery.googleapis.com " AND JSON_VALUE(protopayload_auditlog.metadataJson, " $.firstPartyAppMetadata.sheetsMetadata.docId " ) IS NOT NULL SELECT DISTINCT label.value AS report_id, FROM `example-project`.`region-xx`.`INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION`, UNNEST(labels) AS label, WHERE label.key = " looker_studio_report_id " éå»å幎ã«ã¯ãšãªãèµ°ã£ãConnectedSheetã®æ°: 600å匷 éå»å幎ã«ã¯ãšãªãèµ°ã£ãLookerStudioã®æ°: 400å匷 åè¿°ããããžãã¯ããœãŒã¹ã·ã¹ãã åŽã®ç Žå£çãªå€æŽãžã®å¯Ÿå¿å·¥æ°ã®èгç¹ä»¥å€ã«ãããã䜿ãããŠããªãConnectedSheetã«é
ä¿¡ãç¶ããŠããå¯èœæ§ãªã©ãèããããããããŸãã¯ã¢ãŠããããã管çã§ããäœå¶ãå¿
èŠã§ãããšèããŸããã ãã£ãããšïŒæŠèР以äžã®ãããªåŠçã®æµããæ§ç¯ããŸããã exposureç»é²æ
å ±ãåºåããviewãdbtã§æ§æ 以äžã®åŠçãweeklyã§å®è¡ viewã®çµæãååŸããŠexposureã®yaml圢åŒã«å€æ ã¢ãŠããããåäœã§exposureã®yamlãã¡ã€ã«ãäœæ æªç»é²ãšå€æŽããã£ãexposureãç»é²ããpull requestãäœæ åèã«ããããã°ãããåŒç€Ÿã®éçšã«åãããŠå€æŽããç¹ã¯ä»¥äžã§ãã exposureåäœã§yamlãã¡ã€ã«ãäœæããæ¹éã«å€æŽããŸãã referenced tableã«ããŒãã«åã§ã¯ãªãdbtã¢ãã«åãå
¥ãããã«ããŸãã åçš®ã¢ãŠããããã®å
¬éèšå®ãmetaæ
å ±ãšããŠä»äžããæ¹éãšããŸãã tagã远å ããŠexposureã®æ€çŽ¢æ§ãåäžãããŸãã exposureã®nameã«ã·ãŒããšããã·ã¥ããŒãã®ã¿ã€ãã«ãåæ ããæ¹éã«ããŸãã ä»åã®å®è£
ã«ãã£ãŠä»¥äžã®ãããªåœ¢åŒã®exposureçšã®yamlãã¡ã€ã«ãèªåçæãããŸãã version : 2 exposures : - name : {{ ConnectedSheetã¿ã€ãã« }} _{{ConnectedSheetId}} label : {{ ConnectedSheetId }} type : dashboard tags : - shared_externally - spreadsheet url : https://docs.google.com/spreadsheets/d/{{ConnectedSheetId}} owner : name : test@example.com email : test@example.com depends_on : - ref('hogehoge_model') - ref('foo_bar_model') - ref('chomechome_model') meta : visibility : shared_externally ãã£ãããšïŒè©³çް 説æããããšããããããããªéšåã®è©³çްãèšèŒããŠãããããšæããŸãã referenced tableã«ããŒãã«åã§ã¯ãªãdbtã¢ãã«åãå
¥ãããã«ããããšã«ã€ã㊠åŒç€Ÿã¯dbtã¢ãã«åãšBigQueryäžã®ããŒãã«åãäžèŽããªããããINFORMATION_SCHEMAãaudit_logããååŸããããŒãã«åãref颿°åããŠããªããŒãžã¥ãäœæã§ããŸããã ãã®ãããdbtã¢ãã«åãšBigQueryäžã®å¯Ÿå¿é¢ä¿ãååŸããããã«dbt-elementaryå®è¡æã«çæããã dbt_models ããŒãã«ã掻çšããŸããã ãã®ããŒãã«ã¯ ã«ã©ã å å
容 dbt_models.name dbtã¢ãã«å dbt_models.alias BQããŒãã«å dbt_models.schema_name BQããŒã¿ã»ããå dbt_models.database_name BQãããžã§ã¯ãå ãã®ãããªæ
å ±ãæã€ã«ã©ã 矀ãä¿æããŠããŸãã ãã®ããŒãã«ã掻çšããããšã§INFORMATION_SCHEMAãä¿æããBQããŒãã«åãdbtã¢ãã«åã«å€æããŠrefæå®ããããšãã§ããŠããŸãã åçš®ã¢ãŠããããã®å
¬éèšå®ãmetaæ
å ±ãšããŠä»äžããæ¹éãšããããšã«ã€ã㊠https://support.google.com/a/answer/9079364?hl=ja google workspaceã®activityãã°ã䜿ãããšã§ãLookerStudio,SpreadSheetã®å
¬éèšå®ãšã¿ã€ãã«ãååŸããããšãã§ããã®ã§ãããããååŸããŠããŸãã SELECT data_studio.asset_id AS report_id, data_studio.asset_name AS report_name, data_studio.visibility AS visibility FROM example-project.google_workspace.activity WHERE activity.data_studio.asset_type = 'REPORT' AND activity.event_name = 'VIEW' SELECT drive.doc_title AS sheet_title, drive.doc_id AS sheet_id, drive.visibility FROM `example-project.google_workspace.activity` WHERE drive.doc_type = 'spreadsheet' tagã远å ããŠexposureã®æ€çŽ¢æ§ãåäžãããããš dbt exposureã¯meta, owner, typeãªã©ã®æ
å ±ã䜿ã£ãŠãdbt lsã³ãã³ããªã©ã§ã¢ãŠãããããäžèЧããããšãã§ããŸãã dbt ls --resource-type exposure --type dashboard --owner example@example.com ã¿ãããªããšããããã®ã§ããã§ããªãã§ãã ãã®ãããexposureã«å¯ŸããŠé©åãªtagãä»äžããããšã§çµã蟌ã¿ãã§ããããã«ããŸããïŒ ä»åã¯å
¬éèšå®,ã¢ãŠããããçš®å¥ã®äºã€ãtagãšããŠæãããŸããã ããã«ãã£ãŠ ãxxx_modelãåç
§ããŠããshared_externallyèšå®ã«ããŠããã¹ãã¬ããã·ãŒãäžèЧãåºãããããšããèŠæã«å¯Ÿã㊠dbt ls --select xxx_model+,tag:shared_externally,tag:spreadsheet --resource-type exposure ãã®ãããªã³ãã³ãã§åºåãã§ããããã«ãªããŸã exposureã®nameã«ã·ãŒããšããã·ã¥ããŒãã®ã¿ã€ãã«ãåæ ããæ¹éã«ããããš Add Exposures to your DAG | dbt Developer Hub ãã¡ãå
¬åŒDocã«exposureã®nameã«æå®ããã®ã¯ã¹ããŒã¯ã±ãŒã¹ã«ããŠãã ãããšããèšèŒããããŸããããªããšã¹ããŒã¯ã±ãŒã¹ã«ããªããŠãæ¥æ¬èªåã§ãéããŸã!ïŒååããŠããŒã¯ã«ããå¿
èŠã¯ãããŸãïŒ ãããŠexposure.nameããªããŒãžã¥äžã§è¡šç€ºãããååãªã®ã§ãããŒã¿ãªããŒãžã¥ã®å¯èŠæ§ãé«ããããã«LookerStudioãšã³ãã¯ãããã·ãŒãã®ã¿ã€ãã«ãnameã«å«ã圢ã§èšå®ããŠããç¶æ
ã§ãã LookerStudioID, SpreadSheetIDã ããnameã«ãããšããã®ããã«ããŒã¿ãªããŒãžã¥äžã§ã©ã®ã¢ãŠããããã®exposureãã±ã£ãšèŠå€æãã€ããªãã®ã§ãã {{ã¿ã€ãã«}}_{{ID}} ã®åœ¢åŒã«ããããšã§ããŒã¿ãªããŒãžã¥äžã®å¯èŠæ§ã確ä¿ãã圢ã§ãã ä»åŸã®çºå± ä¿å®éçšã®èšèš ã¢ãŠãããããå
šä»¶èªåã§ç®¡çãããããã«ã¯ãªã£ãããšã§ãããœãŒã¹ã·ã¹ãã ã«åœ±é¿ãèµ·ããå Žåãããç®åºããžãã¯ã«å€æŽãçããå Žåãã®åœ±é¿ç¯å²ã¯è¿
éã«ææ¡ã§ããããã«ãªããŸããã ããã䜿ãããŠããªãããšãããã£ãã¢ãŠããããã«å¯ŸããŠã©ã®ããã«ã¢ã¯ã·ã§ã³ããŠããã®ãããããŒãçµããŠããªãç¶æ
ã§ãã 管çãã§ããããã«ãªã£ãäžã§ã©ã®ããã«éçšæ¹åã«ç¹ããã®ããã©ã®ããã«åé€ãdeprecatedã«ããŠããã®ãããããã®ãããŒã¯ãã£ãããšçµãã§ããŠãŒã¶ãŒã®ç®ã«è§Šããã¢ãŠããããã®åè³ªã®æå€§åã«åªããŠããããã§ãã ã«ã©ã ã¬ãã«ãªããŒãžã¥ âïž exposure dbt cloud enterpriseã§ã¯ã«ã©ã ã¬ãã«ã®ãªããŒãžã¥ãexploreäžã§ç¢ºèªã§ããããã«ãªããŸããã docs.getdbt.com éèŠãªã¢ãŠããããã¯BIããŒã«åŽã«ã¯ãšãªãæžãã®ã§ãªããdbtåŽã«ãã®ã¢ãŠããããå°çšã®ããŒããäœæããããšã§ãã«ã©ã ã¬ãã«ã§ã®åœ±é¿ç¯å²èª¿æ»ãå¯èœãšãªãã®ã§ã¯ãšèããŠããŸãã before after ãã®å³ã§ããbeforeããafterã®æ§æã«å€ããããšã§ããŒããŸã§ã¯dbtã§ç®¡çãããããã«ãªããããdbt exploreã®column level lineageã§å¯èŠåããããšã§ãã«ã©ã ã¬ãã«ã§ã®ã¢ãŠãããããžã®åœ±é¿ç¯å²ã確èªå¯èœã§ãã ããããããšã§ãããã®ããŒãã«ã«äœããã倿Žãå ãããæå€§ã§ã©ã®ãããã®æ°ã®ã¢ãŠããããã«åœ±é¿ããããã ãããããããã®ããŒãã«ã®ãã®ã«ã©ã ãæ¶ãããã©ã®ã¢ãŠããããã«åœ±é¿ããããã ããããŸã§åœ±é¿èª¿æ»ã®è§£å床ãäžããããšãã§ããŸãã ãããã£ãçç±ãããã¢ãŠããããå°çšããŒãäœæã®åãçµã¿ãå§ããããããªãšæã£ãŠãããŸãã (column level lineageã¯çŸç¶dbt exploreã§èŠãããšãã§ããã ãã§ãããããã¡ãã£ãšäœ¿ãããããªã£ãŠæ¬²ããã§ã) ãããã« yoshidaããã®èšäºãåèã«å°ãã ãã«ã¹ã¿ãã€ãºããã ãã§ã課é¡ãšãªã£ãŠããã¢ãŠãããã管çã®åé¡ã解決ããããšãã§ããŸããïŒ éçšé¢ãªã©ãŸã ãŸã 磚ã蟌ãã§ããããéšåã¯å€åã«ãããŸããããã®å®è£
ãéããŠç€Ÿå
ãŠãŒã¶ãŒã®ããŒã¿æŽ»çšäœéšã®æå€§åã«ç¹ããŠããããã§ãïŒ ã¢ãŠããããããã£ã±ãç»é²ãããŸãããïŒãªã¬ã³ãžè²ãexposureïŒ We're Hiring!! ã¿ã€ããŒã§ã¯ããŒã¿åºç€ãäžç·ã«éçºããŠããã仲éãåéããŠããŸãïŒ ãåãã貞ãããã ããæ¹ããã£ããããŸããããå¿åãåŸ
ã¡ããŠãããŸãïŒ product-recruit.timee.co.jp
ããã«ã¡ã¯ïŒã¿ã€ããŒã®ããŒã¿ã¢ããªã¹ãã®@ yuya ã§ãã 2020幎㫠ã¹ãã ã²ãŒã ãéçšããäŒæ¥ãžæ°åå
¥ç€Ÿãããã€ãã³ããã©ã³ããŒå
ŒããŒã¿ã¢ããªã¹ããšããŠæŽ»åã2瀟ç®ã« ECãµã€ã ãéçšããäŒæ¥ã§ããŒã¿ã¢ããªã¹ããšããŠåŸäºããåŸã2023幎3æã«3瀟ç®ãšãªãã¿ã€ããŒãžå
¥ç€ŸããŸãããå
¥ç€Ÿããã¡ããã©1幎ãçµã£ãã®ã§ãã¿ã€ããŒã§ã®ããŒã¿ã¢ããªã¹ããšããŠã®åãæ¹ããããŸã§èªåãæå±ããäŒæ¥ãšæ¯èŒããŠãã©ãã ã£ããã«ã€ããŠæ¯ãè¿ããããšæããŸãã ã¿ã€ããŒã§ã®åœ¹å² ãŸãã¯ãç§ãã¿ã€ããŒã§ã©ã®ãããªåœ¹å²ãæ
ã£ãŠããããŒã¿ã¢ããªã¹ããªã®ããèšèŒããããšæããŸãã ã¿ã€ããŒã®ããŒã¿ã¢ããªã¹ãããŒã ã¯ã倧ãã以äžã®3ã€ã®åœ¹å²ã«åãããŠãããŸãã ãããã¯ãã¢ããªãã£ã¯ã¹ïŒãããã¯ãã®æ©èœéçºã«é¢ããåæ ããŒã±ãã£ã³ã° ã¢ããªãã£ã¯ã¹ïŒ ããŒã±ãã£ã³ã° ã«é¢ããåæ ããžãã¹ã¢ããªãã£ã¯ã¹ïŒçµå¶ã»äºæ¥æŽ»åã«é¢ããåæ ç§ã¯ãããžãã¹ã¢ããªãã£ã¯ã¹ã«æå±ããŠãããå¶æ¥åšãã®ããŒã¿åæãåºèåšãã®ããŒã¿åæãäž»ã«è¡ã£ãŠãããŸãã ã¿ã€ããŒã§ã®1å¹Žãæ¯ãè¿ã ãªã³ããŒãã£ã³ã°æ å
¥ç€ŸçŽåŸã®ãªã³ããŒãã£ã³ã°æã¯ã瀟å
ã®ããŒã¿æ§é ãçè§£ããªãããããŒã¿æœåºãè¡ãäŸé ŒãããªããŠãããŸããã ã¿ã€ããŒã§ã¯ãåè¿°ãã3é åã«é¢ããããå
šç€Ÿçã«ããŒã¿æœåºãç°¡åãªåæãããŒã¿ã¢ããªã¹ãã«äŸé Œã§ãããããŒãååšããŠãããããã®äŸé Œãæ
åœããããšã§ãã¢ããªé¢é£ã®ããŒã¿ã ããŒã±ãã£ã³ã° é¢é£ã®ããŒã¿ãå¶æ¥é¢é£ã®ããŒã¿ãªã©ãã¿ã€ããŒå
ã«ååšããæ§ã
ãªããŒã¿æ§é ãçè§£ãã䜿ãããªããããã«ãªãããåªããŠããŸããã å人çã«ããããŸã§å¶æ¥ãååšããäŒæ¥ã«æå±ããããšããªãã£ããããå¶æ¥é¢é£ã®ããŒã¿ã«è§Šããããšãæ°é®®ã§ãåæé åãšããŠã1ã€åºãã£ãŠããæèŠããããéåžžã«é¢çœã¿ãæããŠããŸããã ãŸããå€ãã®ããŒã¿ãåæããããããã«æŽåãããŠãããã¯ãšãªãæžãã®ã楜ã ã£ãã®ãå°è±¡çã§ããã ããžãã¹ã¢ããªãã£ã¯ã¹é åã«é
å± ãªã³ããŒãã£ã³ã°æãçµãããšãããžãã¹ã¢ããªãã£ã¯ã¹é åã«é
å±ãšãªããŸããã ç§ãé
å±ãããçŽåŸã¯ããã§ã«ç€Ÿå
ã§ã®é£æºéšçœ²ãå®ãŸã£ãŠããã飿ºéšçœ²ãšã®éã§åæããŒããæ±ºããŠåæã«åãçµãã§ãããŸããã åœååãçµãã§ããããŒããšããŠã¯ããåºèã® æµå
¥ çµè·¯å¥ã®LTVã®åæãããæ°èŠå°å
¥ã«è³ããŸã§ã®ãã¡ãã«åæãããCPã®å¹ææ€èšŒããªã©ã®ããã«ã課é¡ã®ç¹å®ãæŠç¥ã«é¢ããéšåã®åæããæœçã®å¹ææ€èšŒãŸã§å¹
åºãæ§ã
ãªåæãè¡ã£ãŠãããŸããã åããŠå¶æ¥é¢é£ã®åæã«çæããäžã§äžçªèŠæŠããã®ãããã©ã®ããŒã¿ã䜿ããã®ãïŒããæç¢ºã«ãããšããã§ããã åè·ãšåã
è·ã§ã¯ãã¢ããªã ããŒã±ãã£ã³ã° ã®ããŒã¿ãåæããŠãããåºæ¬çã«èªåã§ããŒã¿åéãããŠããç¶æ³ã§ãããããããå¶æ¥é¢é£ã®ããŒã¿ã¯ãå¶æ¥ã®æ¹ãæåã§ããŒã¿ãå
¥åããªããšãããªããããããšãããŒã¿ãšããŠã«ã©ã ãååšããŠãããšããŠããããŒã¿ãå
¥åããŠãã人ãšããŠããªã人ãååšããŠããããããŒã ã«ãã£ãŠè¥å¹²éçšæ¹æ³ãéã£ãŠãããããŠãããããçŸå Žãžã®ç¢ºèªãå¿
èŠã§ããã ä»ããããŒã¿ããã©ã㪠ã€ã³ã㯠ããåºãããããèããã®ã倧äºã§ãããããããã©ã®ãããªããŒã¿ããã¡ããšåéããŠãããšè¯ããããªã®ãããããã©ããã£ãããã¡ããšåéã§ããããã«ãªãã®ããèããŠããã®ãéèŠããã ãªãšããæ°ã¥ããåŸãŸããã å¶æ¥çµç¹ãå€é©ãã飿ºéšçœ²ã忀èšãã ããžãã¹ã¢ããªãã£ã¯ã¹é
å±ããçŽå幎åŸãå¶æ¥çµç¹ãå€é©ãããã€ãã³ããçºçããŸããã ãããæ©ã«ãæ¹ããŠãããŒã¿ã¢ããªã¹ããšããŠãã©ã®ãããªåãæ¹ããããšäŸ¡å€ãæå€§éçºæ®ã§ããã®ãïŒããèããŠããããšã«ãªããŸãã ãã¡ãã«ã€ããŠããŸã æç¢ºãªçµè«ã¯åºãŠããªããã®ã®ãçŸç¶ã®å¶æ¥çµç¹ã®è§£å床ãäžããïŒã©ãã§ã©ã®ãããªäººãé¢ãããã©ã®ããã«æææ±ºå®ãè¡ãããã©ã®ããã«åœ±é¿ããŠããã®ããªã©ãæç¢ºã«ããïŒããšã§ãããŒã¿ã¢ããªã¹ããšã㊠ã€ã³ã㯠ããäžããŠãããåããã§ããããã®ä»®èª¬ãäžå®ç«ãŠããããšãããŸã§ã¯æ¥ãããªãšæã£ãŠãããŸãã ãããŸã§æå±ããŠããäŒæ¥ïŒããŒã ïŒãã20åçšåºŠãš100åçšåºŠã§ãã£ããããç¹ã«æèããªããŠãã©ãã§èª°ãäœãããŠãããçè§£ã§ããŠããã®ã§ãããã¿ã€ããŒã®ããã«çµç¹ãæ¥æé·ãéããèŠæš¡ã1,000人ãè¶
ããŠãããããªå€§ããªçµç¹ã«ãªã£ãŠãããšããã¡ããšçŸå Žã®ç¶æ³ããã£ããã¢ãããã«ããåããããããšãéèŠãªã®ã ãªãšæ¹ããŠæ°ä»ããããŸããã æåŸã« ãããŸã§ãæç³»åçã«ã©ã®ãããªããšãè¡ã£ãŠããã®ããç°¡åã«ç޹ä»ããŠããŸããã ã¿ã€ããŒã¯ãçŸåšãµãŒãã¹ãçµç¹ãæ¥æé·äžã§ãããç°å¢ãç®ãŸããããå€ãã£ãŠãã£ãŠãããéœåºŠéœåºŠãã®å€åã«é©å¿ããŠããå¿
èŠããããŸãããã®ãããããŒã ãšããŠãæç¢ºãªåã®ãããªãã®ãååšããŠããããã§ã¯ãªããåžžã«ãã©ã®ããã«åãããšãäžçª ã€ã³ã㯠ããåºããã®ãïŒããèããç¶æ³ã«åãããŠæè»ã«åãæ¹ãå€ããŠããå¿
èŠããããªãšæããŠããŸãã ãããŸã§æå±ããäŒæ¥ã§ã¯ãè¯ããæªãããããŒã¿ã¢ããªã¹ããšããŠã®åãæ¹ããã§ã«åºãŸã£ãŠãããæããããåãæ¹ãããã ãã§ãèªç¶ãš ã€ã³ã㯠ããåºãããããªç°å¢ã§ããããã®ãããçµç¹ãšããŠèªåãã©ã®ããã«æ¯ãèãããšãäžçª ã€ã³ã㯠ããåºããã®ããèããæ©äŒãããŸããããŸããã§ããããã¿ã€ããŒã§ã¯ãæ¥ã
ãã®ãããªããšãèãããããèŠéãåºããè¯ãæ©äŒã«ãªã£ãããªãšæã£ãŠãããŸãã çµç¹ãæ¥æ¡å€§ããäžã§ãã«ãªã¹ãªããšãå€ãã§ããããããŸã§ã«ãªãçµéšããåŸãããåŠã³ãæ°ä»ããå€ããã¿ã€ããŒã«è»¢è·ããŠè¯ãã£ããªãšæããŠãããŸãã Weâre Hiring! ç§ãã¡ã¯ããšãã«åãã¡ã³ããŒãåéããŠããŸãïŒïŒ ããŒã¿ã¢ããªã¹ãã®ããžã·ã§ã³ ã«ãžã¥ã¢ã«é¢è« ãè¡ã£ãŠããŸãã®ã§ãå°ãã§ãèå³ããããŸããããæ°è»œã«ãé£çµ¡ãã ããã
ã€ãã³ãæŠèŠ 2023幎12æ5æ¥ã«ãNext Year Con for SREãæ¥å¹Žã®ç»å£ãå¿æŽããå匷äŒãããšé¡ããŠSREã«é¢ãããããã¯ã§ã¿ã€ããŒãã³ã³ãã©ããããããŒãããžãã¯ã¢ãŒã¡ã³ãã®4瀟ååã§å匷äŒãéå¬ããŸããã ãã®äžã§ã¿ã€ããŒããã¯ãšã³ããšã³ãžãã¢ã®å²¡éããïŒ @Juju_62q ïŒã®è¬æŒãã€ãã³ãã¬ããŒãã«ãŸãšããŠãå±ãããŸãã ããŒã åå²ã«ãããŠããããã¢ã©ãŒããããŒã ã§è²¬ä»»ãæãŠã圢ã«åèšèšãã èªå·±ç޹ä»ïŒæ³å®èŽè¡ 2020幎ã«ã¿ã€ããŒã«å
¥ç€ŸããçŸåšã§ã¯3幎åã»ã©ãšã³ãžãã¢ãããŠãã岡éãšç³ããŸãã äž»ã«ã¹ããªãŒã ã¢ã©ã€ã³ãããŒã ã®æ©èœéçºãæ
åœããŠããããã®äžæ¹ã§ãµã€ããªã©ã€ã¢ããªãã£ãšã³ãžãã¢ãªã³ã°ãè¡ã£ãŠããŸãã æ³å®èŽè¡ ãããããã¢ã©ãŒããã«å°ã£ãŠãããšã³ãžã㢠çµç¹åå²ãèããŠããEMãCTO Enablingããã£ãŠããããSREs 仿¥ã話ããªãããš ã©ã®ãããªã¢ã©ãŒããèšå®ãã¹ããªã®ã ã¢ã©ãŒãããç¹ãããªã³ã³ãŒã«å¯Ÿå¿åšèŸºã®è©± ã¢ã©ãŒããšFBãµã€ã¯ã«ãšããŒã ç§ãæãåªããŠãããšèããã¢ã©ãŒãïŒå³ã®å³ïŒã¯ãåé¡ãçºçãããããšã³ãžãã¢ãåé¡ã解決ãããšå®£èšãããªã«ããŒããã¢ã©ãŒãã§ããçæ³çã«ã¯ãåé¡ãèªåçã«è§£æ±ºããããšãæãŸããã§ãããä»åã®è©±ã®ç¯å²ã§ã¯ãã¢ã©ãŒãã®è²¬åãè¶
ããŠãããšæããçæ³çãªã¢ã©ãŒãã®åœ¢ããã®ããã«èããŠããŸãã æ¬¡ã«ããããã¢ã©ãŒãïŒå·Šã®å³ïŒã¯ãCPU䜿çšçãN%ãè¶
ãããšããšã³ãžãã¢ãä»å
¥ãããšãæéãšå
±ã«å埩ãããã500ãšã©ãŒãyåãè¶
ãããšäœããããšãå埩ãããããªã¢ã©ãŒãã§ãããã®ãããªã¢ã©ãŒãã¯ãæéãçµéãããšèªç¶ã«è§£æ±ºããæ¬¡ç¬¬ã«ç¡èŠãããã¡ã§ãã æ¬æ¥ã¢ã©ãŒãã¯ã¢ã¯ã·ã§ã³ãèŠæ±ããããã®éç¥ã§ããã¹ãã§ãããã¢ã¯ã·ã§ã³ãªãã«ã¢ã©ãŒãã鳎ãããšã¯ç¡æå³ã§ããå®éã«ã¿ã€ããŒã«ãããã®ãããªç¡é§ãªã¢ã©ãŒããé·æéååšããŠããŸããã çŸç¶ãå®å
šãªè§£æ±ºã«ã¯è³ã£ãŠããŸããããã¿ã€ããŒãã¢ã©ãŒããå°ããã€æ¹åãã話ãå
±æããŠãããŸãã ã¿ã€ããŒã§ã¯ã©ã®ããã«ããŠãããããã¢ã©ãŒãããã§ããã®ã åææ¡ä»¶ 1. éçºãšéçšãåãããŒã ã§ãã£ãŠããããš ã¿ã€ããŒã§ã¯ãCTOãéçºãšéçšãäžã€ã®ããŒã ã§è¡ãããšãéèŠããŠããŸããCTOã奜ãã§ããããŒã ããããžãŒã®æžç±ã§ã¯ããéçšã¯éçºãžã®æå€§ã®ãã£ãŒãããã¯æºã§ããããšè¿°ã¹ãããŠãããç§ãã¡ã®çµç¹ã§ãããã倧åã«ããŠããŸãã 2. ãšã³ãžãã¢ã¯ã¢ã©ãŒãããªã£ãŠããããšã奜ãŸããæã£ãŠããªãããš ãšã³ãžãã¢ã¯ã¢ã©ãŒãã鳎ãç¶æ³ã奜ãŸããæã£ãŠããŸãããè¡åãèµ·ãããã©ããã¯å¥ãšããŠãã¢ã©ãŒãã鳎ã£ãŠããããšèªäœã¯å¥œãŸããŠããŸããã§ããã 3. ãšã³ãžãã¢ã¯æ©èœéçºä»¥å€ã«ããçšåºŠã®æéã䜿ããããš ã¿ã€ããŒã®ãšã³ãžãã¢ã¯ã10%ãã20%ã®æéãæè¡æ¹åã«å
ãŠãããšãã§ããŸããå®éã«ã¯ãå°ãªããšã10%ã®æéãããã«å²ãåœãŠãããšãæ±ããããŠããŸãã 2ã3幎åãæã
ã®ããŒã ã¯ä»¥äžã®ãããªæšªå²ãã®æ§é ã§ããã ããã¯ãšã³ãããŒã Webããã³ããšã³ãããŒã ã¢ãã€ã«ããŒã ãããã®ããŒã éã§ã¯ãããã¯ãšã³ãããŒã ãã¢ã©ãŒãã®èšå®ãè¡ããé害çµéšãåºã«ã¢ã©ãŒãã·ã¹ãã ãæ§ç¯ãããŸããããã®ææã«ã¯ããŠãŒã¶ãŒæ°ãå°ãªããã¢ã©ãŒã察å¿ã®é£æåºŠãäœãã§ãããèµ€ã衚瀺ãããã¢ã©ãŒãã«å¯ŸããŠã¯ãããŒã æåãšããŠç©æ¥µçã«å¯Ÿå¿ããŠããŸããã ãããããã®æšªå²ãçµç¹ã§ã¯ãäžã€ã®ããŒã ã ãã§æ©èœãå®å
šã«æäŸããããšãé£ãããããã課é¡ãšãªããŸããããã®ãããè·èœã暪æãã瞊å²ãã®çµç¹æ§é ãžã®ç§»è¡ãé²ããŸããããã®æ°ãã圢ã§ã¯ãã¢ãã€ã«ãWebããã³ããšã³ããªã©ãç°ãªãå°éåéã®ã¡ã³ããŒãåäžããŒã ã«æå±ããããã«ãªããŸããã ãã ãããã®çµç¹å€æŽã®éã«ãã¢ã©ãŒãã·ã¹ãã ã®èŠçŽãã¯è¡ããããããã¯ãšã³ããšã³ãžãã¢ãåŒãç¶ãã¢ã©ãŒãã®è²¬ä»»ãæ
ãããšã«ãªããŸããã ã¢ã©ãŒãã鳎ã£ãéã®åå¿ã¯ã©ãã ã£ãããšãããšã以äžã®ãããªåå¿ãäžè¬çã§ããã AããŒã ãã¢ã©ãŒã鳎ã£ãŠããã©ããããããããªã BããŒã ãã¢ã©ãŒã鳎ã£ãŠããã©ããã¡ã®ããŒã ãšã¯é¢ä¿ç¡ãããã ããŒã éã§åæãããŠãããšãç¹å®ã®æ©èœã«ã€ããŠã©ã®ããŒã ã察å¿ãã¹ããã®å€æãé£ãããªããŸããç¹ã«ã人å¡ãå¢å ããã«ã€ããŠãéå»ã®çµç·¯ã倱ããããã®ãããªåé¡ã¯å¢ããŠãããŸãã ãã€ã鳎ã£ãŠãã仿¥ã倧äžå€«ã ãã ããã€ã鳎ã£ãŠããã仿¥ã倧äžå€«ã ããããšããæèŠãåžžæ
åãããšãã¢ã©ãŒããé »ç¹ã«é³Žãããã«ãªããŸããã¢ã©ãŒããæŸçœ®ããã察å¿ãè¡ãããªããããã¢ã©ãŒãã®æ°ã¯å¢å ã®äžéããã©ããŸãã æ¹åããããã©ããŒãã«ãé«ãã ä»®ã«ææ¬²çãªãšã³ãžãã¢ãçŸããŠãããäœãšããããããã©ãå€ããã°ãããããããªãããšããç¶æ³ã«é¥ããã¡ã§ããAããŒã ã®ååã¯ååçã§ãããBããŒã ã¯çžå¯Ÿçã«è·é¢ããããããæèŠãè¿°ã¹ãã®ãé£ãããšæããããšããããŸããåãäŒç€Ÿã«å±ããŠããŠããæ¥åžžçã«é¡ãåãããŠããªã人ã«å¯ŸããåæãåŸãå¿
èŠããããããããªããšããæžå¿µãçããŸãã ãªããã®ãããªããšãèµ·ããã®ã ãªããã®ãããªç¶æ³ãçºçããã®ãããã®åå ãèå¯ããŸãã ã¢ã©ãŒãã®äœæã¯å
ã
ãããã¯ãšã³ãããŒã ã責任ãæã£ãŠèšå®ããŠããŸãããåœåãã¢ã©ãŒãã«å¯Ÿãããã£ãŒãããã¯ã¯ããã¯ãšã³ãããŒã ã«éäžããŠããããã®ããŒã ã ãã§ã¢ã©ãŒãã®åé€ãä¿®æ£ãè¡ãããŠããŸãããããã瞊å²ãçµç¹ãžã®ç§»è¡åŸãã¢ã©ãŒãã«é¢ãããã£ãŒãããã¯ã¯è€æ°ã®ããŒã ã«åæ£ããåäžã®ããŒã ã ãã§ã®åé€ãä¿®æ£ãé£ãããªããŸãããã¢ã©ãŒãã«å¯Ÿãã察å¿ãäžæç¢ºã«ãªããé·æéå€åããŠããçµéšè±å¯ãªã¡ã³ããŒã«çžè«ããããšããã¢ã©ãŒãã«é¢ãã倿Žã®æ¿èªãåŸããŸã§ã®ããã»ã¹ãå¿
èŠã«ãªãããšããããŸããããã®ããã«ããã£ãŒãããã¯ãæ©èœããªããªã£ãçµæãã¢ã©ãŒãã®æ°ã¯å¢å ããç¹ã«æ°å
¥ç€Ÿå¡ã«ãšã£ãŠã¯çè§£ãã¥ãããã®ãšãªããŸããããã®ç¶æ³ãããããããã¢ã©ãŒããã®èªçã«ç¹ãã£ãã®ã§ãã ãããããã¢ã©ãŒãããæ¹åããããã«ããããš çµè«ãè¿°ã¹ããš AããŒã ã»BããŒã ããããã«ãã£ãŒãããã¯ãšæææ±ºå®æš©ãäžããŸããã å
·äœçãªè¡å åããŒã ã§å¯Ÿå¿ã®å¿
èŠããããšæãããã¢ã©ãŒããéžãã§ããã ã¢ã©ãŒãã«å¯ŸããŠããŒã ã¡ã³ã·ã§ã³ãã€ãã ã¢ã©ãŒãã¯ã¡ã³ã·ã§ã³ã®ããåäžããŒã ã§å€æŽããŠãããšåšç¥ãã ã¢ã©ãŒã察å¿ã«é¢ããæ¯ãè¿ãã宿œ åããŒã ã§å¯Ÿå¿ã®å¿
èŠããããšæãããã¢ã©ãŒããéžãã§ããã ãã¹ãŠã®åé¡ãå³åº§ã«è§£æ±ºããã®ã¯é£ãããããSlackã«ãåé¡ãªãããŸãã¯ãåé¡ããããªã³ã³ãŒã«å¯Ÿå¿ãå¿
èŠããšããã³ã¡ã³ããæ®ãããšãæäœéè¡ãããšã«ããŸããããã®ãšããå€ãã®ã¢ã©ãŒãã®ãã¡ãéžã°ããªãã£ãã¢ã©ãŒãã¯äžæŠãã¹ãŠåé€ããŸããã ã¢ã©ãŒãã«å¯ŸããŠããŒã ã¡ã³ã·ã§ã³ãã€ãã æ¬¡ã«ãã¢ã©ãŒãã«å¯ŸããŠããŒã ã¡ã³ã·ã§ã³ãã€ããããšã«ããŸããã以åã¯ã¢ã©ãŒãã«ã¡ã³ã·ã§ã³ããªããå
šãŠã®ãã£ã³ãã«éç¥ããªã³ã«ããéçšã§ããããããã§ã¯ã©ã®ããŒã ã察å¿ãã¹ããäžæç¢ºã§ãããããã§ãã¢ã©ãŒãã«ã¡ã³ã·ã§ã³ãä»äžããããã®ã¡ã³ã·ã§ã³ã®ããŒã ããªãŒããŒã§ãããšäŒããããã«ããŸããã ã¡ã³ã·ã§ã³ã®ããåäžããŒã ã§å€æŽããŠãããšåšç¥ãã æ¬¡ã«ãããã¯ãšã³ãã®ã¢ã©ãŒãã«é¢ããŠã¯ãããã¯ãšã³ãããŒã å
šäœã®èš±å¯ããªããã°å€æŽã§ããªããšèããããŠããŸãããããããã¡ã³ã·ã§ã³ã®ããåäžããŒã ã§ã®æææ±ºå®ã«ãã倿Žãæšé²ããŸãããããã«ãããåããŒã ã¯çŽ æ©ãæèŠãåæ ã§ããããã«ãªããŸããã ã¢ã©ãŒã察å¿ã«é¢ããæ¯ãè¿ãã宿œ æåŸã«ãã¢ã©ãŒã察å¿ã«é¢ããæ¯ãè¿ãã宿œããŸãããæåã®æ¹åã¯ã§ããã ããµããŒããããããã¡ã³ã·ã§ã³ä»ãã®ã¢ã©ãŒã察å¿ã«ã€ããŠ1ã¶æåŸã«ç¬¬1åã®æ¯ãè¿ããåããŒã ã§è¡ããŸãããããã¯ãå¿
èŠã«å¿ããŠ2åã3åãšç¶ããŸããããã®æµãã§ãããŒã å
ã§ã®æ¹åãå°ãªããšã1åè¡ããããšãããŸã§æ¹åã§ããŸããã ä»ãã©ã®ãããªå€åããã£ãã®ã çŸåšãã¢ã©ãŒãã·ã¹ãã ã«ãããŠä»¥äžã®ãããªå€åãçããŠããŸãã ã¢ã©ãŒãã«åå¿ãã人ãããŒã ã®å¢å ã¢ã©ãŒãã«åå¿ãã人æ°ãããŒã ãæç¢ºã«å¢ããŸããã ã¢ã©ãŒãã®å®æçãªå€æŽãèŠçŽã ã¢ã©ãŒãã«å¯Ÿå¿ããªããšèªåãã¡ãå°é£ãªç¶æ³ã«é¥ãããã倿ŽãèŠçŽãã宿çã«è¡ãããã«ãªããŸããã Runbookã®æŽå ããŒã ããšã«RunbookãæŽåãããã¢ã©ãŒã察å¿ã®ããã»ã¹ãæ°äž»åãããŠããŸãããã®åéã«ã¯ãŸã æ¹åã®äœå°ããããšæããŠããŸãããè¯ãå€åãèŠãããŠãããšæããŸãã ãããã®å€åã«ããããããããã¢ã©ãŒããããåŸã
ã«è±åºããŠãããšæããŠããŸãããã ããäžèŠãªã¢ã©ãŒããå€ãããšãã埩æ§ã®èªååããŸã ååã§ã¯ãªãããšã¯ãä»åŸã®å€§ããªæ¹åãã€ã³ãã§ãã ãŸãšã ã¢ã©ãŒãã¯çµç¹æ§é ãšFBãåãã人ãäžäžèŽã®å Žåã«æ©èœããªããªã£ãŠãã ã¢ã©ãŒãã¯åäžããŒã ã§å€æŽã®æææ±ºå®ãã§ããªããšç¡¬çŽåãã çµç¹ãå€ãã£ãéã«ãã¢ã©ãŒãã®çµç¹ã«åãããŠå€æŽããã®ãå€§å æåŸã«ãã¢ã©ãŒãã·ã¹ãã ã®ãŸãšãã§ããã¢ã©ãŒãã¯ãããŒã ã®æ§é ãšãã£ãŒãããã¯ãäžäžèŽã«ãªããšã广ã倱ã£ãŠããŸãå¯èœæ§ããããŸãããã£ãŒãããã¯ãåãã人ã
ãæç¢ºã§ãªãå Žåãã¢ã©ãŒãã®æ©èœæ§ãäœäžããåŸåããããŸãããŸãã¢ã©ãŒãã«é¢ããŠã¯ããåçŽæ¥è§Šå¹æãã®ãšãããæ¥åžžçã«é¡ãåããã人ã
ã«å¯ŸããŠæèŠãäŒããããããšãå€ãã§ãããã®ãããåäžã®ããŒã ã§æææ±ºå®ãã§ããªãå Žåãã¢ã©ãŒãã·ã¹ãã ã¯ç¡¬çŽåãããããšæãããŸãã çµè«ãçµç¹ãå€åããéã«ã¯ãã¢ã©ãŒãã·ã¹ãã ã®æ§é ãçµç¹ã®åœ¢æ
ã«åãããŠå€æŽããããšãéèŠã§ãã ãã®ä»ã®æ¹ã®çºè¡šãæ°ã«ãªãæ¹ã¯ãã¡ãïŒ www.youtube.com å°ãã§ãèå³ãæã£ãŠããã ããæ¹ã¯æ¯éãã¡ãããã«ãžã¥ã¢ã«ã«ã話ããŸãããïŒ
ã¯ããã« ããã«ã¡ã¯ãã¿ã€ããŒã§ããã¯ãšã³ããšã³ãžãã¢ãããŠãã æ°è°· ã é è² ã 飿³¢ ã§ãã 2æ10æ¥ã« åºå³¶åœéäŒè°å Ž ã§ YAPC::Hiroshima 2024 ãéå¬ãããŸãããã¿ã€ããŒã¯Gold SponsorãšããŠããŒã¹åºå±ãããŠããããšã³ãžãã¢ã3åãšDevEnable宀ã3åã®ç·å¢6åã§åå ãããŠããã ããŸããã ã©ã®ã»ãã·ã§ã³ãè峿·±ãã£ãã®ã§ããããã®èšäºã§ã¯æã
ãæèŠããã»ãã·ã§ã³ã®ãã¡ç¹ã«å°è±¡ã«æ®ã£ããã®ãããã€ãããã¯ã¢ããããŠã玹ä»ããŸãã ãªããã¿ã€ããŒã«ã¯äžçäžã§éå¬ãããŠããå
šãŠã®æè¡ã«ã³ãã¡ã¬ã³ã¹ã«ç¡å¶éã§åå ã§ãããKaigi Passããšããå¶åºŠãããããšã³ãžãã¢ã¯ããã䜿ã£ãŠåå ããŠãããŸãã詳ããã¯äžèšã®ãªã³ã¯ãã芧ãã ããã productpr.timee.co.jp çµå¶ã»ææã»ãšã³ãžãã¢ãªã³ã° speakerdeck.com æ®æ®µæã
ãè¡ãªã£ãŠãããœãããŠã§ã¢éçºã®å»¶é·ç·äžã« CTO ã®ä»äºããããããšããçºè¡šã§ãããçµå¶è
ãç©äºãã©ãæããŠããã®ããå£éèŠãããšãã§ããå人çã«ã¯ãã¹ã ããŒã¯ ã§ããã ãœãããŠã§ã¢èšèšãšçµç¹èšèšãçžäŒŒç㪠ã¢ãŒããã¯ã㣠ã§ãããšããããšã¯ ã³ã³ãŠã§ã€ ã®æ³åãªã©ãããããšããçŽæçã«çè§£ã§ããŸããããäºæ¥èšèšãšãçžäŒŒç㪠ã¢ãŒããã¯ã㣠ã§ãããšãã話ã¯ãŸã ãã³ãšããŠããªãã®ã§ãŸãã©ããã®ã¿ã€ãã³ã°ã§ã䌺ãããããšæã£ãŠããŸãã ãŸããææãéèŠãšãã話ã¯ãããžã§ã¯ããæåããããã«ã¯åŒ·ãææãæã€æšé²è
ãå¿
èŠäžå¯æ¬ ãšããç¹ã§å
±æããŠããŸããããã ããããžã§ã¯ããçæéã§çµãããã®ã§ããã°è¯ãã®ã§ãããããçšåºŠæéã®ãããé¡ã®ãã®ã¯åäººã®ææã§ã¯é£ããããšãããããšæã£ãŠããŠããããã£ããã®ã¯ã©ã察åŠããŠãããã ãããšãæ°ã«ãªããŸããã çæçææã®éåã«è² ããªããããããããã®ãããã¯ãéçºãè¡ãªã£ãŠãããããšæããŸãã ïŒæ°è°·ïŒ 颿°åããã°ã©ãã³ã° ãšåã·ã¹ãã ã®ã¡ã³ã¿ã«ã¢ãã« speakerdeck.com ã³ã³ãã¥ãŒã¿ ã¢ãŒããã¯ã㣠ã«è¿ãæç¶ãåããã°ã©ãã³ã°ãã 颿°åããã°ã©ãã³ã° ãžã¡ã³ã¿ã«ã¢ãã«ãå€ããŠãããããšããçºè¡šã§ãããç§ã¯æ®æ®µ Ruby on Rails ã§ã¢ããªã±ãŒã·ã§ã³éçºãããŠããŠ é¢æ°åããã°ã©ãã³ã° ãšã¯è·é¢ãããã®ã§ãšãŠãè峿·±ãèãããŠããã ããŸããã ãªããªã³ ã¢ãŒããã¯ã㣠㯠DI ãã§ãããšãã¢ãã¯ãå¯èœãšããéèŠãªã®ã§ã¯ãªãã æç¶ãåèšèª ã®èãã«åŒãæºãããã¡ãª I/O ã®éšåãæ¥åããžãã¯ããåãé¢ããæ¥åããžãã¯ã«å¯ŸããŠå¥ã® ãã©ãã€ã ãé©çšã§ããããã«ããã®ãæ¬è³ªãšãã話ãèãããªãã»ã©ãšå匷ã«ãªããŸããã äžæ¹ã 颿°åããã°ã©ãã³ã° ã Web ã¢ããªã±ãŒã·ã§ã³ã®ããã¯ãšã³ãã«æ¬åœã«é©çšã§ããã®ãã¯ãŸã ã€ã¡ãŒãžãæ¹§ããŠããªãã®ãæ£çŽãªãšããã§ã¯ãããŸãã質çå¿çã§è³ªåããããŠããã ã㊠RDB ã®æžã蟌ã¿ã«çžåœãã I/O ã®éšå㯠Repository å±€ã«éã蟌ãããšãã話ã¯çŽåŸããã®ã§ãããWeb ã¢ããªã±ãŒã·ã§ã³ã¯æ¬è³ªçã«äžŠè¡åŠçã ãšæã£ãŠããŠããªã¯ ãšã¹ ããåŠçããŠããæäžã«ç¶æ
ãæžãæããããšãã©ããã£ãŠçŽç²ãªé¢æ°ã§è¡šçŸããã®ããæ°ã«ãªã£ãŠããŸãã æèŠªäŒã§ç¢ºå®ç³åã®è©±ãšäžç·ã«è³ªåããããšæã£ãŠããã®ã§ããæ®å¿µã§ãã⊠ãã¹ãã³ãªïŒç¢ºå®ç³åã®è©±ã¯ãŸãä»åºŠïŒã ãšã䟿ã®éœåã§å
ã«ãããnaoyaæ° #yapcjapan pic.twitter.com/drogfb5b5Q — 941 (@941) 2024幎2æ10æ¥ ïŒæ°è°·ïŒ 倿Žå®¹ææ§ãšçè§£å®¹ææ§ãæ¯ããèªåãã¹ã speakerdeck.com èªåãã¹ãã®ç®çã¯ ä¿¡é Œæ§ã®é«ãå®è¡çµæã« çãæéã§å°éããç¶æ
ãä¿ã€ããšã§ã éçºè
ã«æ ¹æ ããèªä¿¡ãäžãã ãœãããŠã§ã¢ã®æé·ãæç¶å¯èœã«ããããš ãšããçµè«ããã¹ã¿ãŒããããã®çµè«ã«åãã£ãŠäžã€ãã€è§£èª¬ããŠããå
容ã§ããã ãã®ç®çã¯æ¥µéãŸã§åãã°ããœãããŠã§ã¢ã®æé·ãæç¶å¯èœã«ããããšãã ãšç§ã¯æããŸããããã ãã ãšé£èºãããã®ã§äžã€ãã€é ã远ã£ãŠãããšããŸããœãããŠã§ã¢ã®æç¶å¯èœãªæé·ã«ã¯å€æŽå®¹ææ§ïŒå€æŽããããïŒãšçè§£å®¹ææ§ïŒããããããïŒãå¿
èŠã§ãïŒãªããšãã©ãïŒããããŠå€æŽã«ããæ¢åæ©èœãžã®åœ±é¿ãç¥ãææ®µã®ã²ãšã€ã«èªåãã¹ãããããŸãããŸããèªåãã¹ãã«ã¯æ¢åã³ãŒãã®çè§£ãå©ãã圹å²ããããŸãããã¡ãããã èªåãã¹ããããã°ããããã§ã¯ãªãã è¯ãèªåãã¹ã ãå¿
èŠã§ãã ã§ã¯ã©ãããã°è¯ãèªåãã¹ããæžããã®ããšãã話ã«ãªãããã§ãããããã§ç§ãæãåºããã®ã¯ã åäœãã¹ã ã®èãæ¹/äœ¿ãæ¹ãïŒVladimir Khorikov èãé ç°æºä¹ èš³ïŒã§ãã ãã®æ¬ã®ã4.1 è¯ã åäœãã¹ã ãæ§æãã4æ¬ã®æ±ãã§ä»¥äžã®4ã€ã®èŠçŽ ãæããããŠããŸãã éè¡ïŒregressionïŒã«å¯Ÿããä¿è· ãªãã¡ã¯ã¿ãªã³ã° ãžã®èæ§ è¿
éãªãã£ãŒããã㯠ä¿å®ã®ãããã ç®çã§æãããããä¿¡é Œæ§ã®é«ããã¯ãéè¡ã«å¯Ÿããä¿è·ãïŒ åœé°æ§ ãããããã¯ã·ã§ã³ã»ã³ãŒããå®ããã®ïŒãšã ãªãã¡ã¯ã¿ãªã³ã° ãžã®èæ§ãïŒ åœéœæ§ ã®æ°ãæå°éã«æãããã®ïŒã§ããããçãæéã§å°éããç¶æ
ãã¯ãè¿
éãªãã£ãŒãããã¯ãã«çžåœããŸãããããŠãä¿¡é Œæ§ã®é«ãå®è¡çµæã«çãæéã§å°éããç¶æ
ã ä¿ã€ ãããã«ã¯ãä¿å®ã®ããããããæ¬ ãããŸãããã€ãŸãåé ã®äºè¡ã«è¯ããã¹ãã®æ¡ä»¶ããã¹ãŠåçž®ãããŠããã®ã§ãã çºè¡šã«ãã£ããå®è¡çµæã¯æ
å ±ããšããææã«ã¯è¯ããã£ãŒãããã¯ã®éèŠæ§ãæããŸããããŸãã Google ã®ãã¹ããµã€ãºã®è©±ãªã©ãéåžžã«å匷ã«ãªããŸãããä»åã®ã»ãã·ã§ã³ããã£ããã«æ¹ããŠèªåãã¹ãã®ç®çã«ç«ã¡è¿ããèªåãã¡ãããæ ¹æ ã®ããèªä¿¡ãæã£ãŠã³ãŒããæžããããã«ããŠãããããšåŒ·ãæããŠããŸãã æåŸã«äœè«ã§ãããçºè¡šã®äžã§æ°ã«ãªã£ãããšãæèŠªäŒã§twadaãããæ¬äººã«çŽæ¥è³ªåã§ããã®ã¯ãªãã©ã€ã³ã€ãã³ãã®ééå³ã ãªãšãã¿ãã¿æããŸããã ïŒé è²ïŒ éåæãªéçºäœå¶ãæ¯ããããã¥ã¡ã³ãæå speakerdeck.com æå·®ã®ããã¡ã³ããŒå士ã§ãé©åã«ã³ãã¥ãã±ãŒã·ã§ã³ãè¡ãããã« Launchable, inc.ã§å®éã«è¡ãããŠãã ããã¥ã¡ã³ããŒã·ã§ã³ ã®äºäŸã玹ä»é ãå
容ã§ããã çºè¡šã®äžã§ç¹ã«å°è±¡ã«æ®ã£ããã®ã3ã€ã»ã©æããããŠããã ããŸãã ãã£ãŒãããã¯ã®å¹³çæ§ æ€çŽ¢æ§ã®æè ããã¥ã¡ã³ãã®åå ãŸãããã£ãŒãããã¯ã®å¹³çæ§ãã«ã€ããŠã§ããçµç¹ã«ããã¡ã³ããŒã¯å€æ§ã§ããèãã話ã«ã€ããŠçŽ æ©ãèããŠè©±ãããšãåŸæãªäººãããã°ãã£ããèããã人ãããŸãããŸãçµç¹å
å
¬çšèª ãšããŠäœ¿ãããŠããèšèªã 第äžèšèª ã§ãªã人ãããŸãããããã£ãå Žåã«åæç㪠MTG ã§ããåããããšè°é¡ã«å¯Ÿãããã£ãŒãããã¯ãè¡ã人ãåãåŸåãããããŸããã£ãŒãããã¯ã®èгç¹ãåããã¡ã§ããéåæã«ãã£ãŒãããã¯ããããããã«ããããšã§ãã®èª²é¡ã®å¯ŸçãšããŠãããšããã®ã¯è¯ãèŠç¹ã ãšæããŸããããªããã¿ã€ããŒã§ãåå è
ãå€ãäžéšã® MTG ã§ã¯è°äºé²ã®ããã¥ã¡ã³ãã«ãã£ãŒãããã¯ã®æ¬ãããããŸã MTG ã®é²ç»ãè¡ãããšã§éåæã«ãã£ãŒãããã¯ãè¡ããããéçšãããŠãããããŸãã æ¬¡ã«ãæ€çŽ¢æ§ã®æèãã«ã€ããŠã§ããããã¥ã¡ã³ãããã£ããæ®ãããšã¯éåæãåŠãã«é¢ãããéåžžã«è¯ãæåã§ããå®è·µããŠããçµç¹ãå€ããšæããŸãããããã¥ã¡ã³ããå¢ãããšå¿
ç¶çã«èµ·ããã®ãæ€çŽ¢æ§ã®æªåã§ããã¿ã€ããŒã§ã¯ ããã¥ã¡ã³ããŒã·ã§ã³ ã«Notionã䜿çšããŠããã®ã§ãããé²èЧãããããã¥ã¡ã³ãããªããªãèŠã€ãããªãã£ãããèŠã€ãã£ãããã¥ã¡ã³ããå®ã¯å€ããã®ã ã£ããšãã£ãããšã¯ã©ãããŠãçºçããŸãããã®å¯ŸçãšããŠãŸãéšéããšã«Confluenceã®spaceãåããŠãããšã®ããšã§ãããä»éšéã®æ
å ±ãç°¡åã«é²èЧã§ãããšããéææ§ã¯éèŠã§ã¯ãããã®ã®ãããã¯æš©é管çããã£ããããã°è§£æ±ºã§ããããšã§ãããŸãç©æ¥µçã« ã¢ãŒã«ã€ã ïŒâ åé€ïŒãè¡ãããšã§ããã©ã«ãã®æ€çŽ¢èšå®ã§ã¯æ€çŽ¢ã«ãããããªãããã«ãããšãã話ããããããã¯ãã®éãã ãšæãäžæ¹ã§ãããçµç¹æåãšããã®ã¯äžæäžå€ã§ã¯ç¡ããªãšæããŸãã æåŸã«ãããã¥ã¡ã³ãã®ååãã«ã€ããŠã§ããããã¥ã¡ã³ããäžå®ã®ãã©ãŒãããã«æºããŠäœãããŠããã°æžãæã«ãšã£ãŠã¯æžãã¹ãæ
å ±ãæŒãã«ããã§ãããèªã¿æã«ãšã£ãŠãæ
£ããã°æ
£ããã»ã©èŠç¹ãçè§£ãããããªããŸãããŸãé©åãªãã£ãŒãããã¯ãåããããã® 30/60/90% framework for feedback ã«ã€ããŠãå匷ã«ãªããŸãããããã¯ããã¥ã¡ã³ãã®ãã§ãŒãºã«å¯ŸããŠé©åãªãã£ãŒãããã¯ãè¡ãããšãããã®ã§ãæ®æ®µããæèããŠã¯ãããã®ã®ãããã£ãååãä»ããŠããããšã¯ç¥ããªãã£ãã®ã§ä»åŸã®ã³ãã¥ãã±ãŒã·ã§ã³ã®éã«äœ¿ãããšæããŸãããããŠé¢é£è³æã®ããã¥ã¡ã³ããžã®èšèŒã§ããããã¥ã¡ã³ããæžãéã¯äœãããåèã«ããå¥ã®ããã¥ã¡ã³ããšãããã®ãããå Žåãå€ãã§ãããæžãæã«ãšã£ãŠã¯èªæã§ãèªã¿æã«ãšã£ãŠã¯ããã§ãªãå Žåãå€ãã§ãããããã£ãè³æã®ãªã³ã¯ãæžãæã ãã§ãªããèªã¿æãç©æ¥µçã«ããã¥ã¡ã³ãã«æ®ããŠããããšããã®ã¯ä»åŸããæèããŠããããã§ãã ïŒé£æ³¢ïŒ æç« ã
ããã®ããŒããŒã ãã®æ¥ãã®å Žã«ããããšãèªæ
¢ãç¶ããããšæããŸãã ïŒé è²ïŒ ãããã« YAPC ã¯é·ãç¶ããŠããã€ãã³ãã§ãããä»åãšã³ãžãã¢ã§åå ããã¡ã³ããŒã¯ååå ã ã£ãã9幎ã¶ãã®åå ãšããæãã§ãããããã§ã YAPC ã®åãããªé°å²æ°ãš Perl ã«é¢ä¿ããããŒããããã§ãªããã®ãåãå
¥ããŠããå
容åã§ç倧倿¥œããããšãã§ãããŸãå匷ã«ãªã£ãã«ã³ãã¡ã¬ã³ã¹ã§ããã æ¥å¹Žä»¥éããŸãã¹ãã³ãµãŒãåå ãã§ããã°ãšæããŸãã æåŸã«ã©ã³ããšããŠé
ãããåºå³¶åç©ã®ããªãããã®ç»åã貌ã£ãŠçµãããšããŸãã
ã€ãã³ãæŠèŠ 2023幎11æ15æ¥ã«ãGENBA #1 ãRubyãšRailséçºã®çŸå Žãããšé¡ããŠRuby/Railsã§ã®éçºã«é¢ãããããã¯ã§ã¿ã€ããŒãšãšã³ãã€ç€Ÿååã§å匷äŒãéå¬ããŸããã ãã®äžã§ã¿ã€ããŒããã¯ãšã³ããšã³ãžãã¢ã®pokohideããïŒ @pokohide ïŒã®çºè¡šãRailsã¢ããªã§ç§å¿æ
å ±ãç°å¢å€æ°ããCredentialsã«ç§»è¡ãã話ããã€ãã³ãã¬ããŒã圢åŒã§ãå±ãããŸãã ç»å£è
çŽ¹ä» Credentialsãšã¯ Credentials ã¯ãRails 5.2ãã远å ãããç§å¿æ
å ±ã管çããããã®ä»çµã¿â»1 ã§ãRails 6ããè€æ°ã®ç°å¢ããµããŒãâ»2 ããŠããŸãã ãäž»ãªç»å Žäººç©ã æå·åãã¡ã€ã«ïŒ config/credentials/ .yml.enc 埩å·çšã®äŒŽïŒ ENV[âRAILS_MASTER_KEYâ] or config/credentials/ .key ãã»ãã¥ã¢ãªæ§æç®¡çã Railsã¢ããªèµ·åæã« Rails.env ã«å¯Ÿå¿ããæå·åãã¡ã€ã«ãšéµãåç
§ã埩å·ãã 埩å·åãå®äºãããš Rails.application.credentials çµç±ã§ååŸå¯èœã«ãªã ãæå·åãšåç
§æ¹æ³ã YAMLåœ¢åŒ ã®ãã¡ã€ã«ãæå·åïŒYAMLã®æ§æã«äŸåïŒ â åŸ©å· åŸ©å·åãããåŸã¯ ActiveSupport::OrderedOptions ãä»ããŠã¢ã¯ã»ã¹å¯èœ fetch ã dig ã䜿ãã â²Credentialsã®äŸ â»1Add credentials using a generic EncryptedConfiguration class #30067 â»2Add support for multi environment credentials. #33521 Credentialsãžã®ç§»è¡ç®ç Credentialsãžã®ç§»è¡ã¯ãçµç¹å
ã§ã®ç§å¿æ
å ±ç®¡çã®è²¬ä»»ãæç¢ºåãããããã€ããã»ã¹ãå¹çåããããšãç®çãšããŠããŸãã æéã®åæž ä»¥åã¯ECSã®ã¿ã¹ã¯å®çŸ©ã«ç°å¢å€æ°ãšããŠãã©ã¡ãŒã¿ã¹ãã¢ã®SecureStringãå©çšããŠããŸãããç§å¿æ
å ±ã远å ããéã«ãã©ã¡ãŒã¿ã¹ãã¢ã«ç»é²ããECSã¿ã¹ã¯å®çŸ©ãšã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®äž¡æ¹ã倿Žããå¿
èŠããããæéãããã£ãŠããŸããã 責任å¢çã®ææ§ã AWSãªãœãŒã¹ã®ç®¡çã¯ã€ã³ãã©ããŒã ãäž»å°ããŠããŸãããããã®çµæã責任å¢çãææ§ã«ãªãããšããããŸããã â Credentialså°å
¥ã«ãã£ãŠãç§å¿æ
å ±ã®ç®¡çã«é¢ããè²¬ä»»ã®æåšãæç¢ºã«ãªãã責任å¢çãæç¢ºåãããŸããã ãããã€ã®é£æåºŠ è€æ°ã®å Žæã§ã®æäœãå¿
èŠã ã£ãããããããã€ã容æã§ã¯ãããŸããã§ããã â Credentialså°å
¥ã«ãã£ãŠãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã倿Žããããšã§ç§å¿æ
å ±ã远å ã»åç
§ã§ããããã«ãªãããããããã€ã容æã«ãªããŸããã ã¬ãã¥ãŒã®å°é£ã ç¬èªã®å¯Ÿè©±åCLIã䜿çšããŠãã©ã¡ãŒã¿ã¹ãã¢ãæäœããŠãããããããã»ã¹ã®ã¬ãã¥ãŒãå°é£ã§ããã ã»ãã¥ãªãã£ã®åäž â Credentialså°å
¥ã®å¯ç£ç©ãšããŠãã»ãã¥ãªãã£åäžãæããããŸããRAILS_MASTER_KEYã®ã¿ã管çããããšã§ãã©ã¡ãŒã¿ã¹ãã¢ã®æäœæš©éãåæžã§ããå
šäœçãªã»ãã¥ãªãã£ã¬ãã«ãåäžããŸããã Credentialsã®å®å
šæ§ Credentialsã®å®å
šæ§ã¯ãäž»ã«äœ¿çšãããæå·åã¢ã«ãŽãªãºã ãšãã¹ã¿ãŒããŒã®ç®¡çæ¹æ³ã«äŸåããŸãã2023幎æç¹ã§ãAES-256-GCMæå·åã¢ã«ãŽãªãºã ãçšããæå·åã¯ãæãå®å
šã ãšããããŠããŸãã ããããæãéèŠãªã®ã¯ãã¹ã¿ãŒããŒã®ç®¡çã§ãããã¹ã¿ãŒããŒãæµåºããã°ãæå·åãããæ
å ±ã容æã«è§£èªãããŠããŸãå¯èœæ§ããããŸãããã®ããããã¹ã¿ãŒããŒã®å®å
šãªä¿ç®¡ãšã¢ã¯ã»ã¹ç®¡çã¯éåžžã«éèŠã§ãã ç®¡çæ¹æ³ã«ã€ããŠã¯ãããžãã¹ã®ç°å¢ããªã¹ã¯ã«å¿ããŠæ
éã«æ€èšããé©åãªã»ãã¥ãªãã£å¯Ÿçãè¬ããå¿
èŠããããŸãã Credentials ç§»è¡ã®æé ç§»è¡ã®æé ã¯ããšãŠãã·ã³ãã«ã§ãã äœãç§»è¡ãããæ±ºãã ç§»è¡å¯Ÿè±¡ã®ç§å¿æ
å ±ãå
šãŠCredentialsã«è¿œå ãã å°ãã〠Rails.application.credentials ã«ç§»è¡ãã 1. äœãç§»è¡ãããæ±ºãã ãŸããäœãCredentialsã«ç§»è¡ããããæ±ºå®ããŸããã¢ããªã±ãŒã·ã§ã³ã®æ§é ãåæããç°å¢å€æ°ããªã¹ãã¢ããããŸããç§å¿æ
å ±ã«ã¯ãç°å¢å€æ°ã ãã§ãªããèšŒææžãç§å¯éµãGoogle Cloudã®èªèšŒçšJSONããŒãªã©ãå«ãŸããå¯èœæ§ããããŸãã ãŸããç§å¿æ
å ±ãæ¬åœã«Credentialsãžã®ç§»è¡ãå¿
èŠããèããŸããããç°å¢ããšã®åºæã®èšå®ã§ããã° config_for ã䜿çšããããšã§è§£æ±ºã§ããããç¥ããŸãããã³ã³ããåãããç°å¢ãããŒã¿ããã¯ãµãŒãã¹ã®ãããªåçã«æ³šå
¥ããå¿
èŠãããæ
å ±ããé »ç¹ã«æŽæ°ãããæ
å ±ã¯ãCredentialsãžã®ç§»è¡ãé©åãã©ãããæ
éã«æ€èšããŸãã 2. ç§»è¡å¯Ÿè±¡ã®ç§å¿æ
å ±ãå
šãŠCredentialsã«è¿œå ãã ç§å¿æ
å ±ãäžæ¬ã§Credentialsã«è¿œå ããããšãããããããŸãããã®çç±ã¯ãæå·åãã¡ã€ã«ã®ã¬ãã¥ãŒãé£ããããã§ããCredentialsãžã®ç§»è¡åãã¬ãã¥ãŒã¯é£ããç¶æ³ã§ããããæå·åãã¡ã€ã«ãæ±ãçŸåšãåæ§ã§ãããã®ãããç§å¿æ
å ±ããŸãšããŠç§»è¡ããRailsã³ã³ãœãŒã«ã§ãªãªãŒã¹åã«å€ãæ£ããäžèŽããŠããã確èªããããšã§ãããã»ã¹ãããã¹ã ãŒãºã«ãªããŸãã 3. å°ãã〠Rails.application.credentials ã«ç§»è¡ãã Rails.application.credentials ãžã®ç§»è¡ã¯æ®µéçã«è¡ããŸãããã®ããã»ã¹ã¯ãå€ãã®ãã«ãªã¯ã®äœæãšå¯Ÿå¿ã䌎ããé害ãçºçããå¯èœæ§ããããŸããå®éã«èµ·ããäžäŸãšããŠãå
šè§ã¹ããŒã¹ãšåè§ã¹ããŒã¹ãééããŠç»é²ããåç
§æã«ãšã©ãŒãçºçããŸãããç§å¿æ
å ±ã®ãã¡ã€ã«ã¬ãã¥ãŒã¯éåžžãSyntax Highlightãå¹ããªãçŽ ã®Vimãªã©ã§è¡ããããããç¹ã«çްå¿ã®æ³šæãå¿
èŠã§ãã ã¿ã€ããŒã§ã¯æè¡æ¹åã®ããã«å²ãåœãŠãããæéãå
šäœã®çŽ20%ã§ããã®æéãå©çšããŠCredentialsãžã®ç§»è¡äœæ¥ãè¡ããŸãããå
šäœãšããŠã¯çŽ5ã¶æã®æéãèŠããŸãããããç°å¢ãç°ãªãã°ãç§»è¡ã«ãããæéã¯1ã¶æçšåºŠã«ççž®å¯èœãããããŸãããç§»è¡ã®éçšã§ã¯ãã¹ããŒãžã³ã°ç°å¢ãšæ¬çªç°å¢ã§åãç§å¿æ
å ±ã䜿çšããŠããããšãããããã®ãããªç¹ã«ã察å¿ããªããäœæ¥ãé²ããŸããã Credentialsç§»è¡æã®Tips 1. config.require_master_key èšå®ãæå¹ã«ãã Railsã¢ããªã±ãŒã·ã§ã³ãèµ·åããéã«ã¯ãCredentialsã®ãã¹ã¿ãŒããŒãå¿
é ã§ãããã¹ã¿ãŒããŒããªããšã¢ããªã®èµ·åã«å€±æããèšå®ãæå¹ã«ããŠãããšè¯ãã§ãããã 2. ãšãã£ã¿ã®æå® æå·åãã¡ã€ã«ã®ç·šéã«ã¯ãšãã£ã¿ã®æå®ãå¿
é ãªã®ã§çšæïŒDockerãå©çšããŠããå Žåã¯emacsãªã©ã§ãOKïŒ 3. ãšã¹ã±ãŒãæåã®æ±ã ç§å¿æ
å ±ã«ãšã¹ã±ãŒãæåãå«ãŸããŠããå Žåã¯ãããã«ã¯ã©ãŒããŒã·ã§ã³ã§å²ãããšãæšå¥šãããŸããæå·åãã¡ã€ã«ãYAML圢åŒã«äŸåããŠãããããYAMLã®æ§æèŠåã«åŸãå¿
èŠããããŸãã 4. æ¹è¡ã®å©ç𿹿³ ç§å¿æ
å ±ã«æ¹è¡ãå«ãããå Žåã¯ããã€ããªã©ã®YAMLã®æ§æãå©çšããŸãã 5. å€éšãµãŒãã¹ãšã®èªèšŒæ¹æ³ã倿Žãã å€éšãµãŒãã¹ãšã®èªèšŒæ¹æ³ã倿ŽããŸãããå
·äœçã«ã¯ã以åã¯ç§å¿æ
å ±ããã¡ã€ã«ããèªã¿èŸŒãã§ããèªèšŒæ¹æ³ããCredentialsã§ç®¡çãã圢åŒã«å€æŽããŸããã 6. ãã€ããªããŒã¿ã®åãæ±ã YAML圢åŒã¯ããã¹ãããŒã¹ã®ããŒã¿åœ¢åŒã§ããããã€ããªããŒã¿ã®çŽæ¥çãªæ±ãã«ã¯åããŠããŸãããç¹ã«ãèšŒææžãªã©ã®ãã€ããªããŒã¿ãCredentialsã§ç®¡çããéã¯ãäºåã«Base64ã§ãšã³ã³ãŒãããå¿
èŠããããŸããã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã®ãšã³ã³ãŒããããããŒã¿ãååŸããé©åã«ãã³ãŒãããŠäœ¿çšããŸããããŒã¿ã®èå¥ã容æã«ããããã«ãYAMLãã¡ã€ã«å
ã§ãšã³ã³ãŒããããå€ã«ã¯ base64_encoded ãšãããã¬ãã£ãã¯ã¹ãä»ãããšäŸ¿å©ã§ãã 7. ç§å¿å€ãã³ã³ãœãŒã«ã§é衚瀺ã«ãã Railsã³ã³ãœãŒã«ã䜿çšããéãããã©ã«ãèšå®ã§ã¯ç§å¿å€ã衚瀺ãããŠããŸãããšããããŸããïŒRails 7.1ããã¯ããã®ç§å¿å€ãé衚瀺ã«ããæ©èœãæšæºã§å®è£
ãããŠããŸããïŒãã®å€æŽã«ãã£ãŠãRailsã³ã³ãœãŒã«ããç§å¿æ
å ±ã誀ã£ãŠé²åºãããªã¹ã¯ã軜æžã§ããŸãã 8. SECRET_KEY_BASEã Credentials ã«ç§»è¡ Secrets㯠Rails 7.1ããæç€ºçã«éæšå¥šå ããããããSECRET_KEY_BASEã Credentials ã«ç§»è¡ããŸãããåç°å¢ã® credentials.yml ã« SECRET_KEY_BASE ãç§»è¡ããã°OKãªã¯ãã§ããRails 5.1以åã§ secrets.yml ã䜿çšããŠç§å¿æ
å ±ã管çããŠããã¢ããªã±ãŒã·ã§ã³ã®å Žåãç§»è¡ããã»ã¹ã¯å°ãè€éã«ãªãå¯èœæ§ããããŸãã 9. SECRET_KEY_BASE_DUMMYã®æŽ»çš Rails 7.1ãã SECRET_KEY_BASE_DUMMY ãå°å
¥ ãããŸãããããã¯ãSECRET_KEY_BASE ã®ä»£ããã«ãããŒå€ãèªåçã«èšå®ãã SECRET_KEY_BASE_DUMMY ã§ããassets:precompile å®è¡æã« SECRET_KEY_BASE ãå¿
èŠãªãå Žåã§ãããšã©ãŒãçºçããããšãé²ããŸãã 10. Heroku Data for Redis ããã¯ã¿ã€ããŒã§ã¯ãªãå人ã®ã¢ããªã§ã®çµéšã§ããã Herokuã§éçšãHeroku Data for Redisãå©çšããŠãå人ã¢ããªã®REDIS_URLãCredentialsã«ç§»è¡ãããRedisã«æ¥ç¶ã§ããªããªããŸãããèªåã§ç®¡çããŠããªãç°å¢å€æ°ãªã©ãç§»è¡ããå Žåã¯æ³šæããŸãããã ç§»è¡ã®çµæ Credentialsã«ç§»è¡ããçµæãäžèšã®ãããªææã宿ããŠããŸãã ãã ããäŸç¶ãšããŠã¬ãã¥ãŒã倧å€ã§ããããŒã¿ãæå·åãããŠããããããã«ãªã¯ãšã¹ããåºããŠãå·®åãåããããæå·åãã¡ã€ã«ã®diffã確èªããã«ã¯å
¬åŒã® bin/rails credentials:diff ãå©çšã§ããŸãããRailsã®å®è¡ç°å¢ããgitæäœãå¿
èŠã§ããäžè¬çãªç°å¢ã§ã¯ãªããããããŸããããåœç€Ÿã§ã¯éçºç°å¢ã«Dockerã䜿çšãããã¹ãåŽã§gitæäœãè¡ã£ãŠããŸãããã®ãããã³ã³ããã«gitãå°å
¥ããæ€èšãããŠããŸãã èšäºã®çºè¡šããã®ä»ã®çºè¡šãæ°ã«ãªãæ¹ã¯ãã¡ãïŒ www.youtube.com å°ãã§ãèå³ãæã£ãŠããã ããæ¹ã¯æ¯éãã¡ãããã«ãžã¥ã¢ã«ã«ã話ããŸãããïŒ product-recruit.timee.co.jp
ã€ãã³ãæŠèŠ 2023幎11æ15æ¥ã«ãGENBA #1 ãRubyãšRailséçºã®çŸå Žãããšé¡ããŠRuby/Railsã§ã®éçºã«é¢ãããããã¯ã§ã¿ã€ããŒãšãšã³ãã€ç€Ÿååã§å匷äŒãéå¬ããŸããã ãã®äžã§ã¿ã€ããŒããã¯ãšã³ããšã³ãžãã¢ã®æ£åŸ³ãã a.k.a ç¥éããïŒ @sinsoku_listy ïŒã®çºè¡šãRailsã¢ããªãšåæ€æ»ããã€ãã³ãã¬ããŒã圢åŒã§ãå±ãããŸãã ç»å£è
æ
å ± Railsã¢ããªãšåæ€æ» RBSã®åºæ¬ RBSãšã¯ RBSïŒRuby SignatureïŒã¯ãRuby 3.0ããå°å
¥ãããèšèªæ©èœã§ãRubyã®ã³ãŒãã«åæ
å ±ã远å ãã忀æ»ãšå
¥åè£å®ãå¯èœã«ããããã®èšèªã§ããRBSãã¡ã€ã«ã®æ¡åŒµå㯠.rbsã§ãéåžžã¯ãããžã§ã¯ãå
ã® sig/ ãã£ã¬ã¯ããªã«é
眮ãããŸãã RBSã®ã¡ãªãã RBSã®äž»ãªã¡ãªããã¯ã忀æ»ããšãå
¥åè£å®ãã®2ã€ããããŸãã 忀æ»ãšã¯ 忀æ»ã«ã¯ãSteepãšåŒã°ããããŒã«ããããŸããSteepã䜿çšãããšãRBSã®å®çŸ©ã«éåããã³ãŒããæ€åºãã圹å²ãæãããŸããäŸãã°ã颿°ã«æå®ãããåŒæ°ã®æ°ãå®éã®åŒã³åºããšäžèŽããªãå Žåããšã©ãŒãæ€åºãããŸãããã®åæ€æ»ã¯ãRubyã³ãŒããå®è¡ããåã«åé¡ãçºèŠã§ããŸãã äžèšã¯åæ€æ»ïŒSteepïŒã®å®è¡äŸã§ãã å
¥åè£å®ãšã¯ VS Codeã« soutaro.steep-vscode æ¡åŒµãã€ã³ã¹ããŒã«ãããšãRBSãã¡ã€ã«ãèªã¿èŸŒãã§ãRubyã³ãŒãã®å
¥åè£å®ãè³¢ããªããŸãã IRB v1.9.0ã§ãRBSã䜿ã£ãå
¥åè£å®ããµããŒããããŸãããå
¥åè£å®ãæå¹ã«ããã«ã¯ãgem install prismã³ãã³ãã§prismãã€ã³ã¹ããŒã«ããIRBãèµ·åãããšãã«-r prismãªãã·ã§ã³ãæå®ããŸãã ã¿ã€ããŒã®å°å
¥äºäŸïŒå®éã®æé ãããŸã§äžå¿RBSã®åºæ¬ã®è©±ã ã£ããã§ããã©ãåŒç€Ÿãå®éã«å°å
¥äºäŸã玹ä»ããããšæããŸãã RBSå°å
¥ã®ãã£ãã RubyKaigi 2023ãã¡ããã¢ã®ããã°ãèªãã ããšãããRBSã®å°å
¥ãžã®ææ¬²ãé«ãŸããŸããã å®éã«è©ŠããŠã¿ããšãåãã§ãã¯ãç¡å¹ã«ããŠãå
¥åè£å®ã«éç¹ã眮ãããšã§ãæ¯èŒçç°¡åã«RBSãå°å
¥ã§ããããšãåãããŸãããããã«ç€Ÿå
ã§ã®èª¿æŽãè¡ããæ¹éãçå®ããŸããã 瀟å
ã®éçºè
ã«è³ªåããŠã¿ããšãããRBSãå®å
šã«æžãããšã«ã¯ä¹ãæ°ã§ã¯ãªããã®ã®ãéèŠãªéšåã ããäžéšèšè¿°ããããšããããŒãºããããŸããã ãããããããå¥ã®ãã¡ã€ã«ã«æžãã®ã¯å°ãã€ãããšãã声ãèãããŸããã ããã§å
ã
åŒç€Ÿã§äœ¿çšããŠãã YardïŒã€ãŒãïŒã®ããã¥ã¡ã³ããæŽ»çšããéèŠãªéšåã«åæ
å ±ãæç€ºããã³ã¡ã³ãããRBSãçæããŠæŽ»çšããã¢ãããŒããèããŸããã å®éã«ãããžã§ã¯ãã§æ€èšŒããçµæãããŸãæ©èœãããã ã£ãããããå
¥ããŠã¿ãŠãã¡ã ã£ããæ¶ããããšããããªã§ã詊ããŠã¿ãããšã«ãªããŸããã 1. Gemfile ã« rbs_rails, steepã远å ããŸã 2. Steepfileã远å ããæ¢åã®åæ€æ»ãšã©ãŒã¯ç¡èŠãã 3. rbs_collection.yaml ãäœæãã Rubyå
¬åŒã§ç®¡çãããŠãã rbs-gem-collection ãšãããªããžããªã«ãæå¿ã®æ¹ãæäŸããŠããæ
å ±ãå©çšããrbs_collection.yaml ãã¡ã€ã«ãäœæããŸãã 4. RBSãçæããRakeã¿ã¹ã¯ã远å ãã æ§ã
ãªã³ãã³ããåå¥ã«å®è¡ããã®ã¯æéãããããããäžåºŠã«ã¿ã¹ã¯ãçæã§ãããRBSã»ããã¢ããããšããç¬èªã®ã³ãŒããäœæããŸããã ãã®ã³ãŒãã¯ãrbs-gem-collection ããRBSãããŠã³ããŒãããèªç€Ÿã®ãããã¯ãã®ã³ãŒããè§£æããé©åãªé圢ãçæããå
šãŠã®ã¯ã©ã¹ãšã¡ãœããåãå«ãŸããRBSãçæã§ãããã®ã§ãã 5. .gitignore ã§ãã£ã¬ã¯ããªãç¡èŠãã RBSã¯çæããããã®ãšããŠæ±ã£ãŠããããã .gitignore ãã¡ã€ã«ã§ãããç¡èŠããããã«èšå®ããŸãã 6. RBSã®å®çŸ©ãšã©ãŒãåé¿ããããã«æå°éã®åãæžã ãããŸã§ã®äœæ¥ã§ãå€ãã®åæ
å ±ãçæã§ããŸãããããã¯ãäžéšã®åæ
å ±ã¯èªåçæã§ããªãå ŽåããããŸãããã®ãããªå Žåãæåã§æå°éã®åæ
å ±ãèšè¿°ããããšã§ããšã©ãŒãåé¿ããŸããäŸãã°ãActive Admin ãªã©äžéšã®ãžã§ã ã¯å
¬åŒã®åæ
å ±ãæäŸãããŠããªããããèªç€Ÿã§åæ
å ±ãèšè¿°ããå¿
èŠããããŸãããããŸã§å®æœããRBSã®ææ³ãšã©ãŒããªãç¶æ
ã«ãããžã§ã¯ããæã£ãŠãããŸãã ãŸãšãïŒæå°éã®RBSã§å
¥åè£å®ã«åã䜿çšã§ãã RBS + Sord ã®å°å
¥æ¹æ³ Sordãšãããžã§ã ã䜿çšãã€ãŒãããã¥ã¡ã³ãããRBSã³ãã³ãã®åãçæããŸãã ãŸãSordãå°å
¥ããRakeã¿ã¹ã¯ã§sordãå®è¡ããŸãããã®ãšã sord ã®ãã°ã¯ãGSub ã§æžãæãããšããŸãããããšããããŸãã ãã®æé ã§ã bin/rails rbs:setup ãå®è¡ãããšRBSãçæãããå
¥åè£å®ãè³¢ããªãäžçãäœãããšãã§ããŸããã ã¡ãªã¿ã«ãRubyMine ã VS Code ã䜿çšããŠãããšãå
¥åè£å®ãè³¢ããªãã±ãŒã¹ãããããã§ãã 忀æ»ã®èª²é¡ ã¿ã€ããŒã«ããã忀æ»ã®èª²é¡ã¯ãSteepã®åå®çŸ©ãå°ãªãããã誀æ€ç¥ãçºçããå¯èœæ§ãããããšã ãŸããç¹å®ã®ãã¡ã€ã«ã®ã¿ãç¡èŠããããšãã§ããªããããæ®µéçãªå°å
¥ãé£ããããšãæããããŸãã å®éã«ã©ãããããšã©ãŒãæ€åºããããæ€èšŒãããŠã¿ããšã656ä»¶ãããŸãããã»ãšãã©ã誀æ€ç¥ã§ããããã®ãªãã§3ä»¶ã»ã©é¢çœããšã©ãŒããããŸããã®ã§ã玹ä»ããŸãã 忀æ»ã§èŠã€ããã³ãŒãäŸïŒ 忀æ»ã§ã¯ãnilãã§ãã¯ãçããããããŒã¹ãããåŸã«nilãæ¥ãå¯èœæ§ãããããšãèæ
®ãããIDãªã©ã®å€ã«ä»£å
¥ããŠããŸãã±ãŒã¹ããããŸããã 忀æ»ã§èŠã€ããã³ãŒãäŸïŒ ã¿ã€ããŒã§ã¯ãããã·ã¥ããéè¡ã³ãŒããååŸããéã«ãå
šéã³ãŒãããªãå Žåãnilãè¿ãããŸãããã®ãšããšã©ãŒãæ€ç¥ããŠããŸããŸããããã¯ãSteepãå
šéã³ãŒããæ£ããå€ããæž¡ãããªãããšãåæãšããŠããããã§ãïŒå
šéã³ãŒããååšããªãã±ãŒã¹ãæ³å®ã§ããŠããªãïŒ åæ€æ»ã§èŠã€ããã³ãŒãäŸïŒ è¶³ãç®ãšæãç®ããããšãã«ãå³ã®å€ããŒã£ã¡æŒç®åã䜿ãã®ã§ããããã®ãšãNilãšã©ãŒãçºçããŸã ãŸãšã ä»åŸãéçºãããã«é²åããå
ç¢ãªã³ãŒããæè»œã«æžããäžçããã£ãŠãããããããŸãããç¹ã«ãå
¥åè£å®ã®æèã§åæ€æ»ãå°å
¥ããããšã¯å°å
¥ããŒãã«ãäœããRailsã¢ããªã±ãŒã·ã§ã³ã®éçºã«å€§ããªäŸ¡å€ãããããå¯èœæ§ããããŸããææ¥ããã§ãæ¯éãRailsã¢ããªéçºã«åæ€æ»ãåãå
¥ããŠã¿ãŠãã ããã èšäºã®çºè¡šããã®ä»ã®çºè¡šãæ°ã«ãªãæ¹ã¯ãã¡ãïŒ www.youtube.com å°ãã§ãèå³ãæã£ãŠããã ããæ¹ã¯æ¯éãã¡ãããã«ãžã¥ã¢ã«ã«ã話ããŸãããïŒ product-recruit.timee.co.jp
ã¿ã€ããŒã§ããã¯ãšã³ããšã³ãžãã¢ãããŠããæ°è°· id:euglena1215 ã§ãã ä»åã¯ç€Ÿå
ã§æ±ºããã³ãŒãã£ã³ã°ã«ãŒã«ã«åŒ·å¶åãæãããããã« CustomCop ãäœã£ã話ã玹ä»ããŸãã èæ¯ ã¿ã€ããŒã® Rails ã¢ããªã±ãŒã·ã§ã³ã«ã¯ /app/services ãã£ã¬ã¯ã ãªãããã Service ã¯ã©ã¹ãååšããŠããŸãã ãããŸã§ç€Ÿå
ã§ Service ã¯ã©ã¹ã¯ããªãã¹ã䜿ããªãæ¹ã奜ãŸãããã®ã®ãã©ããªæã«äœ¿ã£ãŠãããã¯ç¹æ®µæèšãããŠããªãç¶æ³ã§ããã ãã®çµæãã¯åãããŸããããäžéšã®æ©èœã§ã¯ Service ã¯ã©ã¹ãå€çšã Service ã¯ã©ã¹ã Service ã¯ã©ã¹ãåŒãã§ãããªã©è€éã«ãªã£ãŠãããã³ãŒããªãŒãã£ã³ã°ã®è² è·ãé«ãŸã£ãŠããŸããã ãã®çŸç¶ã«èª²é¡æãæã£ã @rhiroe ã以äžã®ãããªåé¡æèµ·ãè¡ããŸããã ãã®åé¡æèµ·ãåããããŒã 暪æã®æè¡é åããšã®ãããã¯ã«ã€ããŠè©±ãåã MTG ã§ä»åŸã® Serivce ã¯ã©ã¹ã®éçšæ¹éã¯ä»¥äžã®ããã«æ±ºãŸããŸããã Serviceã¯ã©ã¹ã¯åºæ¬çã«ç©æ¥µçãªå©çšã¯æšå¥šããªãã Service ã¯ã©ã¹ã¯ Controller ã Sidekiq Worker ããåŒã¶ãã®ãšäœçœ®ä»ãããããã以å€ããåŒã³ãããªã£ãå Žå㯠Model ã®äœæãæ€èšããããšã æ¹éã«ã€ããŠããã¯ãšã³ããšã³ãžãã¢å
šäœã«åšç¥ã¯è¡ãããŸãããããããŸã§ããã¡ããšèŠããŠãããŸãããããã«çãŸããä»®ã«å®è£
è
ãšã¬ãã¥ã¢ãŒãæãåºãããšãã§ããªããã°ãã®ãŸãŸããŒãžãããŠããŸããŸãã ãã®ããããã®ã«ãŒã«ã æ©æ¢°ç ã«é©çšã§ãããšããããããšãã話ããããçšéã«åããã CustomCop ãäœãããšã«ãªããŸããã ç¹å®ã®suffixãæã€ã¯ã©ã¹ä»¥å€ããã®ãµãŒãã¹ã¯ã©ã¹åŒã³åºããèŠåãã cop æ©éã§ãããCustomCop ã®å®è£
ããŸãã£ãšå
¬éããŸãã # frozen_string_literal: true begin require ' rubocop ' rescue LoadError return end module CustomCops # ç¹å®ã®suffixãæã€ã¯ã©ã¹ä»¥å€ãããµãŒãã¹ã¯ã©ã¹ãåŒã³åºããå Žåã«èŠåããŸãã # AllowSuffix 㯠config ãã©ã¡ãŒã¿ã§èšå®ã§ããŸãã # # @example # # bad # # AllowSuffix ã« Service ãå«ãŸããŠããªãå Žå # class SampleService # def call # Service2Service.new.call # end # end # # # good # # AllowSuffix ã« Service ãå«ãŸããŠããå Žå # class SampleService # def call # Service2Service.new.call # end # end # class AllowServiceCallClassSuffix < RuboCop :: Cop :: Base MSG = ' ç¹å®ã®suffixãæã€ã¯ã©ã¹ä»¥å€ãããµãŒãã¹ã¯ã©ã¹ãåŒã³åºãããšã¯ã§ããŸããã%<suffixes>s ã®ã¿ãèš±å¯ãããŠããŸãã ' # â èš±å¯ãããŠãã Suffix ãæã€ã¯ã©ã¹ã®å®çŸ©ãã©ãã # â¡ ã¯ã©ã¹å®çŸ©ã®äžã§æŽã«ã¯ã©ã¹ãã¢ãžã¥ãŒã«ãå®çŸ©ããŠãããã©ãã # ãã® cop ã§éèŠãªã®ã¯æãæ·±ãã¯ã©ã¹å®çŸ©ã§ã®æ
å ±ãªã®ã§ãã¹ãããŠãããã®ã¯ç¡èŠ(â蚱容)ãã def_node_matcher :define_allow_class? , <<~ PATTERN { (class (const ... #allow_class_name_suffix?) ...) (class const ... {class module}) } PATTERN # (send (const nil? #service_class_name?) :new ...) => FooService.new(...) # (send (const cbase #service_class_name?) :new ...) => ::FooService.new(...) # (send (const const #service_class_name?) :new ...) => Bar::FooService.new(...) def_node_matcher :call_service_class? , <<~ PATTERN (send (const {nil? cbase const} #service_class_name?) :new ...) PATTERN # on_class ã¯ã¯ã©ã¹å®çŸ©ãè¡ãããæã«åŒã³åºãããã¡ãœãã def on_class (node) # 蚱容ãããã¯ã©ã¹ã§ããã°ç¡èŠãã return if define_allow_class?(node) node.each_descendant( :send ) do |send_node| # ãµãŒãã¹ã¯ã©ã¹ã®åŒã³åºããããŠããã°èŠåãã add_offense(send_node, message :) if call_service_class?(send_node) end end private # AllowSuffix ã§æå®ãã suffix ãèŠåã¡ãã»ãŒãžã«å ãããã£ãã®ã§äžæžãããŠãã def message format( MSG , suffixes : allow_suffixes.join( ' , ' )) end # call_service_class? ãããã£ã§äœ¿ã£ãŠãã def service_class_name? (name) name.to_s.end_with?( ' Service ' ) end # define_allow_class? ãããã£ã§äœ¿ã£ãŠãã def allow_class_name_suffix? (name) allow_suffixes.any? { |suffix| name.to_s.end_with?(suffix) } end def allow_suffixes # `cop_config` ã§ rubocop.yml ã§æå®ããèšå®ãååŸã§ãã @allow_suffixes ||= cop_config[ ' AllowSuffix ' ] || [] end end end rubocop.yml ã«ã¯ä»¥äžã®ãããªèšè¿°ãè¡ããŸãã CustomCops/AllowServiceCallClassSuffix : AllowSuffix : - Controller - Worker ã©ã㪠cop ãã軜ã説æããŸãã rubocop.yml ã§æå®ãã AllowSuffix ã suffix ã«æã€ã¯ã©ã¹ããã® Service ã¯ã©ã¹ã®åŒã³åºãã蚱容ãããã以å€ã®ã¯ã©ã¹ããã®åŒã³åºãæã«ã¯èŠåãåºããŸãã ã¿ã€ããŒã§ã¯ãService ã¯ã©ã¹ã« XXXService.call ã®ãããªç¹ç°ã¡ãœãããçšæããã XXXService.new.call ãšããããã« ã€ã³ã¹ã¿ã³ã¹ ãäœæããäžã§åŒã³åºãããšãéäŸãšãªã£ãŠãããã XXXService ã® new ã¡ãœãããåŒã³åºãããããšãæ€ç¥ããŠããŸãã ããã¯ãå瀟ã®éäŸã«åãããŠãããã§ãããä»»æã®ã¡ãœãããåŒã³åºããããšãæ€ç¥ããŠãè¯ããšæããŸãã ãŸãã service_class_name? ã¡ãœããã§ã¯ã¯ã©ã¹åã® suffix ã "Service" ãã©ããããã§ãã¯ããŠããŸãããããã倿Žããã° Service ã¯ã©ã¹ä»¥å€ã«ãé©çšå¯èœã§ãã Model, View, Controller 以å€ã®ã¬ã€ã€ãæ¡çšããŠãã Rails ã¢ããªã±ãŒã·ã§ã³ã§ããã°ãService ã¯ã©ã¹ä»¥å€ã§ãåŒã³åºãç®æãå¶éãããããšããããããããŸããã çµæã©ããªã£ãã äžèšã® CustomCop ãã¿ã€ããŒã® Rails ã¢ããªã±ãŒã·ã§ã³ã«å°å
¥ããçµæãéåããŠããç®æã 67ä»¶ èŠã€ãããŸãããéåããŠãããã¡ã€ã«ã rubocop_todo.yml ããçºããŠã¿ããšãModel ãã Service ãåŒã³åºããŠããã±ãŒã¹ãš Service ãã Service ãåŒã³åºããŠããã±ãŒã¹ãåã
ãããã®ããã§ãã 2024/01/24 æç¹ã§ã¯ãå°å
¥ããã°ããã§ãããã®éåã解決ããããã®åãã¯åããŠããŸããã ã§ãããå¢ããããšãããš RuboCop ã«æãããã®ã§ãã以äžå¢ããããšã¯ãªãã®ã§ã¯ãªãããšèããŠããŸãïŒããä¿¡ããŠããŸãïŒã ã¿ã€ããŒã®ãããã¯ã㯠1ã€ã® ã¢ããªã¹ 㪠Rails ã¢ããªã±ãŒã·ã§ã³ã®äžã§åããŠããŸãããã®äžã§ã®67ä»¶ãå€ããå°ãªããã¯ã¿ãªããã®å€æã«ãä»»ãããŸããæã
ã¯ããã䌞ã³ããã ãšæããããã°ã£ãŠããããšæããŸãã
ã¯ããã« ç§èªèº«ã®äºäŸ æ¥ã
ã®åŠç¿ã»ç ç©¶æéã®ç¢ºä¿ è²å
ãšã®æãåã ããŒãããŒãå®¶æã®ãµããŒãã®éèŠæ§ æ¥ã
ã®åŠç¿ãç ç©¶ã®å¹çå å¹ççãªå匷æ³ãç ç©¶ã®é²ãæ¹ã®æç® 瀟äŒäººã®ç¹æš©ã®ããŒã«ãžã®æè³ ã¹ãã¬ã¹ç®¡çãšå¿ã®å¥åº· ã¿ã€ããŒãšããæé©ãªç°å¢ è²å
ãžã®æ¯æŽå¶åºŠ èªå·±ç éœãžã®æ¯æŽå¶åºŠ DSã°ã«ãŒãã§ã®åãæ¹ ãŸãšã ã¯ããã« ããã«ã¡ã¯ãæ ªåŒäŒç€Ÿã¿ã€ããŒã®ããŒã¿ãšã³ãžãã¢ãªã³ã°éšããŒã¿ãµã€ãšã³ã¹ïŒDSïŒã°ã«ãŒãæå±ã®è²åºã§ãã ç§ã¯çŸåšã¿ã€ããŒã§åããªãããè²å
ãã€ã€ã瀟äŒäººå€§åŠé¢ïŒä¿®å£«ïŒã«éã£ãŠããŸããä»åã®ããã°ã§ã¯ãä»äºã»è²å
ã»ç€ŸäŒäººå€§åŠé¢ãã©ã調æŽããŠé²ããŠãããã«ã€ããŠæžããŠãããããšæããŸãã ç§èªèº«ã®äºäŸ ç°¡åãªç§ã®ãããã£ãŒã«ãšããŠã¯ã以äžãšãªããŸãã 劻ãšäžæ³ã®æ¯åã®äžäººå®¶æ 劻ã¯2023幎床ãŸã§ã¯è²äŒãååŸäºå® ã¿ã€ããŒã§é±5ãªã¢ãŒãã¯ãŒã¯å€å JAISTå士åæèª²çšç€ŸäŒäººã³ãŒã¹ã®ç€ŸäŒäººå€§åŠé¢çïŒ2023幎4æããïŒ ãšãªããŸãã ããšããšå€§åп代ã§ã¯å¥åéãå°æ»ããŠãããšããããšããããæ¥åãé²ããäžã§æ
å ±ç§åŠã®ç¥èãç ç©¶çµéšãååã§ãªãããšã«èª²é¡ãæããŠããç§ã¯ã劻ã®åŸæŒããããã2022幎2æé ã«ç€ŸäŒäººå€§åŠé¢ãžã®é²åŠã決æããŸãããç 究宀ã®å
çãåè·ã®ååã®å©ãããããç¡äºã«JAISTã«å
¥åŠããããšãã§ããŸããã ãã ãå
¥åŠããããšãããä¿®äºããããšã®æ¹ãäœåã倧å€ã§ããããã®ããã«ã¯ãè²å
ãšä»äºãããªãã€ã€ãæ¥ã
ã®åŠç¿ãç ç©¶ãé²ããå¿
èŠããããŸããã æ¥ã
ã®åŠç¿ã»ç ç©¶æéã®ç¢ºä¿ 瀟äŒäººå€§åŠé¢çã¯ãéåžžã®å€§åŠé¢çã«æ¯ã¹ãŠå§åçã«æéãè¶³ããªããªããŸããããã«å ããè²å
ã«ããããã«æéããªããªããŸãããã®ãããã©ãã«ã工倫ãããŠæéãæ»åºããå¿
èŠããããŸããã æéã確ä¿ããã¢ãããŒããšããŠãå人çã«ã¯ä»¥äžããšã£ãŠããŸãã è²å
ãšã®æãåããã€ããæéã確ä¿ãã æ¥ã
ã®åŠç¿ãç ç©¶ãå¹ççã«é²ãã è²å
ãšã®æãåã åºæ¬æ¹éãšããŠã¯ãåäŸãå¯ãŠããéã«åŠç¿ã»ç ç©¶æéã®ç¢ºä¿ãå¯èœã§ãããã®ããã æ5æã«èµ·ããåäŸãèµ·ãããŸã§éäžçã«æéã確ä¿ãã åäŸã®å¯ããã€ããçµãã£ãŠããã®æéã確ä¿ãã ãã§ããŸããç§ã®å Žåã¯ãæ©æã® 5:00~7:00 ãšãå€ã® 21:00 ~ 22:30 ã®ãããã確ä¿ããŠããŸãããã ãåäŸã6:30ãããã«èµ·ããããšãããã®ã§ããã®ãšãã¯æ©ãã«åãäžãããããŠããŸãã ããŒãããŒãå®¶æã®ãµããŒãã®éèŠæ§ ããšã¯ã鱿«ãäŒæ¥ã®ä»äºããªããšãã劻ã«åäŸãèŠãŠããã£ãŠããæéã«ãåŠç¿ã»ç ç©¶æéã確ä¿ããŸãããã ããããã«ã€ããŠã¯å®¶åºå
ã§ååã³ãã¥ãã±ãŒã·ã§ã³ãåãã劻ã®çè§£ãåŸãããšãå¿
èŠã§ãããŸãã倫婊éã§ãã©ã³ã¹ã厩ããªãããã«èª¿æŽããããšãå¿
èŠã§ãã èªåãåäŸãèŠãæéã¯ãäžç·ã«å
¬åãè¿æã®å
¬æ°é€šã«è¡ãã劻ã®ããªãŒã®æéããªãã¹ã確ä¿ã§ããããã«åªåããŠããŸããæè¿ã¯æ©ããããã«ãªã£ãŠããããæ¥œãããïŒ æ¥ã
ã®åŠç¿ãç ç©¶ã®å¹çå æéã確ä¿ããã¢ãããŒãã®2ã€ç®ãšããŠæããããæ¥ã
ã®åŠç¿ãç ç©¶ãå¹ççã«é²ãããã宿œããããã«ã å¹ççãªé²ãæ¹ã«é¢ããæç®ã調æ»ããå®è·µãã ãã¯ãããžãŒã掻çšããããŒã«ã«æãã¿ãªãæè³ãã ãè¡ã£ãŠããŸãã å¹ççãªå匷æ³ãç ç©¶ã®é²ãæ¹ã®æç® å¹ççãªå匷æ³ãç ç©¶ã®é²ãæ¹ã£ãŠããããã©ãããã®ïŒãšãããšãããçŸåœ¹ã®åŠçã«ãªã£ãã€ããã§å床å匷ããŸãããåèã«ãªã£ãæ¬ãšããŠã¯ã以äžã®æ¬ããããŸãã ãå匷æ³ã®ãã¹ãã»ã©ãŒ100åãã®ãã€ã³ããïŒåã«ãŸãšããŠã¿ãã ç ç©¶ã®è²ãŠæ¹: ãŽãŒã«ãšããã»ã¹ã®ãèŠããåã åè«ã»ä¿®è«ç ç©¶ã®æ»ç¥æ¬:ææçŸ©ãªç ç©¶å®€çæŽ»ãéãããã®å®è·µã¬ã€ã åŠç¿ã«ã€ããŠã¯ãã(1)ããŸãã«åŸ©ç¿ããã ãš (2) èŠããããšãã¢ãŠããããããïŒå£ã«åºãã空ã§èª¬æãããæžãïŒãã倧äºã«ããŠããŸããããšã¯ãæéãæ±ºããŠéäžã§ããããã«ããŠåãçµããªã©ã äžå¹Žç®ã¯è¬çŸ©ã«éäžããŠããããç ç©¶ã¯ããŸãé²ãã§ããªãã§ãããå
çšæããæ¬ãåèã«ç ç©¶ã®å¹çåãé²ããã°ãšèããŠããŸãã 瀟äŒäººã®ç¹æš©ã®ããŒã«ãžã®æè³ 瀟äŒäººãšçŸåœ¹ã®åŠçã®æå€§ã®éãã¯æéãšãéã ãšæã£ãŠããã瀟äŒäººã¯æéããªãåãä»äºã§çšŒãã ãéã䜿ã£ãŠèªèº«ã®åŠç¿ãžã®æè³ãå¯èœã«ãªããŸãã ç§ã®ã±ãŒã¹ã ãšãè«æèªã¿ãããŒãã®ããã« iPad Air ã賌å
¥ããŸããã䟿å©ãªã¢ããªãšããŠã¯ä»¥äžãå©çšããŠããŸãã Good Note 6ïŒé»åããŒãïŒ PaperpileïŒè«æç®¡çããŒã«ïŒ KindleïŒæ¬ïŒ ãããã®ããŒã«ãçšããããšã§ãããŒããæ¬ãè«æãæã¡æ©ããªããŠããã©ãã§ãåŠç¿ãè«æèªã¿ãå¯èœã«ãªããŸãïŒ Good Note 6 ã¯ã空çœã®ããŒãã ãã§ãªãè¬çŸ©ã®ã¹ã©ã€ããèªã¿èŸŒããã®ã§ãããžã¿ã«äžã§ã¹ã©ã€ãã«æžã蟌ãããšããããšãŠã䟿å©ã§ãã Paperpile ã¯è«æç®¡çããŒã«ã§ãããè¬çŸ©ã® Class Note ã PDF圢åŒã®æç§æžãšããŠèªã¿èŸŒãã§ã䟿å©ã§ããäŸãã°ãç®æ¬¡ãåŒã®çªå·ãããŒã¹ããŠãããŠããªã³ã¯ãšããŠé£ã¹ãããã«ãªã£ãŠããã®ã§ãèªãå¹çãäžãããŸããèªåã®èªèããŠããç¯å²ã ãšãGood Note 6ã«ã¯ãã®æ©èœããªãã®ã§ã䜿ãåããŠããŸãããã³ãããŒã«ãŒãªã©ã®æžãèŸŒãæ©èœã«ã€ããŠã¯ãGood Note 6ã®æ¹ãèªç±åºŠãé«ãã§ããã ã¹ãã¬ã¹ç®¡çãšå¿ã®å¥åº· æ¥ã
ã®éãããæéã®äžã§ãä»äºãšè²å
ããããã瀟äŒäººå€§åŠé¢ãšããããããããšããããçæŽ»ã«äœè£ããªããªã£ãŠããŸããç¥ããªããã¡ã«ã¹ãã¬ã¹ãæºããŠããŸãããšããããŸããããããåå ã§ãç ããªãã£ããããããããããããŠããŸãããšããããŸãããå¿ã®å¥åº·ãä¿ã€ããã«ãã¹ãã¬ã¹ç®¡çã«æ³šæããå¿
èŠããããŸãã ç§ãæ°ãã€ããããã«ããŠããããšã¯ã 1,2 æéãããæºã§äœæ¥ããåŸã¯ã10åããããµãã£ã𿣿©ãããã¹ãã¬ãããããããã é ãç²ããŠåããªãå Žåã¯ããŒãŒã£ãš10åãããäœãããªããäœãèããªãïŒçæ³ãšããã°çæ³ïŒã ç ããšãã¯é æ
®ããã«å¯ã 宿çã«å®¶æå
ãåéã®ã€ãã³ããäœã£ãŠãå
šåã§æ¥œãã ãžã ã«è¡ã£ããããžã§ã®ã³ã°ãããããªã©ã宿çãªéåã®ç¿æ
£ãäœã 1æ¥ã®æåŸã¯å€«å©Šã§ãããã¹ããããŠããªã©ãã¯ã¹ãã ã§ãã ãŸããåŠç¿ãç ç©¶ãã©ãããŠãäºå®éãã«ãããªãããšããããŸããåäŸãç±ã§äœèª¿ã厩ããããæ¥éœå¥ã®äºå®ãå
¥ã£ãããªã©ããŸããèªåã®ã¿ã€ã ãããžã¡ã³ããããŸãããããæã£ãããã«åŠç¿ãç ç©¶ãé²ãŸãªãããšããããŸãã ãã®ãããªãšãã¯äžæŠç¡çãªã¹ã±ãžã¥ãŒã«ãåŒããŠããç¶æ
ãèªèããŠãç·æ¥åºŠãšéèŠåºŠã®ãããªã¯ã¹ãäœæããåªå
床ã®äœããã®ããã¯æ€éããããã«ããŠããŸãããã£ã±ãç¡çãªãã®ã¯ç¡çãªã®ã§ã ã¿ã€ããŒãšããæé©ãªç°å¢ ããŠããããŸã§ã¯è²å
ã倧åŠé¢ã§ã®éããæ¹ãªã©ãã©ã€ããŒãã«é¢ãã話ãã»ãšãã©ã§ããããåé ã«ãæžããéããã¿ã€ããŒã§ã¯è²å
ãèªå·±ç éœãžã®æ¯æŽå¶åºŠããããç§ã®ãããªæè¡è·ã«ã¯å€§å€ãããããç°å¢ãšãªã£ãŠããŸãã è²å
ãžã®æ¯æŽå¶åºŠ ã¿ã€ããŒã§ã¯ç£äŒã»è²äŒãšã¯å¥ã«ä»¥äžã®å¶åºŠããããŸãã åºç£äŒæïŒé
å¶è
ãåºç£ããéãç£äŒã»è²äŒãšã¯å¥ã«ãåºç£åœæ¥ãŸã§ã®éã§3æ¥éã®ç¹å¥äŒæãä»äžïŒæçµŠïŒ åã®çè·äŒïŒåã©ãã®çè·ãç®çã«ãåã©ã1人ã«ã€ã幎é5æ¥ä»äžïŒåã©ã2人以äžã¯10æ¥ãäžéïŒ corp.timee.co.jp èªå·±ç éœãžã®æ¯æŽå¶åºŠ ãŸããã¿ã€ããŒã§ã¯ãšã³ãžãã¢ã®åžå ŽäŸ¡å€åäžã«ã€ãªããæé·æ¯æŽãåŠç¿æ¯æŽãæ©äŒæäŸãçç£æ§åäžã«è³ããåãçµã¿ã宿œããŠããŸãããã®ããã®çµç¹ãšã㊠DevEnable 宀ãèšç«ãããTDE10ïŒTimee Dev EnableïŒããšããããšã³ãžãã¢ã®é²åã®ããã®10ã®æœçãé²ããããŠããŸãã DSã°ã«ãŒãã§ã®åãæ¹ DSã°ã«ãŒãã§ã¯ããã«ãªã¢ãŒãå€åãå¯èœã§ããããã¬ãã¯ã¹ã¿ã€ã å¶ïŒã³ã¢ã¿ã€ã 12:00ïœ16:00ïŒæå®åŽåæé8æé00åãäŒæ©60åïŒã§ãããããå人ã®ç¶æ³ã«ããããŠåãæ¹ã調æŽããããšãã§ããŸããå®éã«ãä¿è²åã«éã£ãŠãããåããããã瀟å¡ã¯ãä¿è²åãžã®ãè¿ãã®æéã«ããããŠå°±æ¥æéã調æŽããŠãããããŸãã ãŸãšã ä»åã®äºäŸã§ã¯ãç§ã®ã±ãŒã¹ãè²å
ãšç€ŸäŒäººå€§åŠé¢ã®äž¡ç«ãšããã¬ã¢ãªã±ãŒã¹ã§ããããã¿ã€ããŒã§ã¯åããªããè²å
ãèªå·±åŠç¿ã«åãçµã瀟å¡ãããããããŸããåœç€Ÿã¯å€æ§ãªåãæ¹ãå¯èœãªè·å Žç°å¢ãæäŸããæè»ã§ãµããŒããå
å®ããŠããæ¡ä»¶ã®ããšãç°ãªãããã¯ã°ã©ãŠã³ããã©ã€ãã¹ã¿ã€ã«ãæã€æ¹éãæŽ»èºããŠããŸãã çŸåšãã¿ã€ããŒã§ã¯ããŒã¿ãµã€ãšã³ãã£ã¹ãããšã³ãžãã¢ãªã©ãäžç·ã«åãæ°ããã¡ã³ããŒãç©æ¥µçã«åéããŠããŸãïŒ ãŸããæ°è»œãªé°å²æ°ã§ã® ã«ãžã¥ã¢ã«é¢è« ãéæè¡ã£ãŠãããŸãã®ã§ããã²ãæ°è»œã«ãšã³ããªãŒããŠãã ãããâ hrmos.co hrmos.co
èªå·±çŽ¹ä» éšçœ²çŽ¹ä» äžæ¥ã®æµã æã®ã«ãŒãã³: ååäžã®ä»äº: 9:00~11:00 ãã©ãŒã«ã¹èª²é¡ã®åæ 11:00~11:30 ããŒã¿ã¢ããªã¹ãå
šäœã®ãã€ãªãŒããŒãã£ã³ã° 11:30~12:00 ä»ã®ã¡ã³ããŒã®ã¯ãšãªã¬ãã¥ãŒ æŒäŒæ©: ååŸã®ä»äº: 13:00~13:30 äŸé Œã¿ã¹ã¯ã®ãã¢ãªã³ã° 13:30~14:30 äŸé Œã¿ã¹ã¯ã®å¯Ÿå¿ãçŽå 14:30~16:30 ãã©ãŒã«ã¹èª²é¡ã®åæ 16:30~17:00 å®äŸããŒãã£ã³ã°ïŒéšçœ²é£æºã®æç¶PJTïŒ 17:00~18:00 æ¡çšé¢æ¥ 18æããäžæãïŒãããã¯ãã®ãŸãŸéå€ïŒ: 20~21æä»¥åŸ: 20:00~20:30 颿¥ã®è°äºé²å®æãè©äŸ¡ã®å®äº å€åäœç³» Weâre Hiring! èªå·±çŽ¹ä» ããã«ã¡ã¯ãã¿ã€ããŒã®ããŒã¿ã¢ããªã¹ãããŒã ã®äžå¡ãè¡ã§ãã ç§ã®æ¥æ¬ã§ã®ãã£ãªã¢ã¯çŽ10幎åãæ©çš²ç°å€§åŠé¢ã§MBAååŸãç®æããŠæ¥æ¥ããããšããå§ãŸããŸããã åŠäœååŸåŸãéçºãã³ããŒäŒæ¥ã§ãšã³ãžãã¢ãšããŠãã£ãªã¢ãã¹ã¿ãŒããããã®åŸäžå°äŒæ¥ã§ã·ã¹ãã çµ±æ¬ã®è²¬ä»»è
ãè£œé æ¥ã®ãã³ãã£ãŒäŒæ¥ã§ã®çµéšãç©ã¿ãŸããã ãããã®è·å Žã§ãããŒã¿ã«é¢ããå€ãã®èª²é¡ã«çŽé¢ããèªãã®æã§ç€Ÿå
ã®ããŒã¿ç°å¢ãæŽåããããšããããŸããã ãã®çµéšããããŒã¿ã¢ããªã¹ããšããŠã®ã¹ãã«ã磚ã倧ããªå¥æ©ãšãªããæçµçã«ã¿ã€ããŒã§ã®ãã£ãªã¢ãã¹ã¿ãŒããããã«è³ããŸããã ãã©ã€ããŒãã§ã¯ã2æ³ã«ãªãåšãæã€äžäººå®¶æã®äžå¡ãšããŠãå¿ããæ¥ã
ãéãããŠããŸãã æè¿ã§ã¯ãè¶£å³ãšèšãã°ãã£ããåè²ãŠã«å€¢äžã«ãªã£ãŠããŸããåè²ãŠã¯æ¥ã
ã®æ°ããçºèŠãšåã³ã«æºã¡ãŠãããç§ã®äººçã«ãšã£ãŠå€§åãªéšåã§ãã å®¶åºãšä»äºã®ãã©ã³ã¹ãä¿ã¡ãªãããæ¥ã
æé·ãç¶ããŠãããããšæããŸãã ã¿ã€ããŒã§åãããšã§ãå
å®ãããã£ãªã¢ãç¯ãã€ã€ãå®¶æãšã®æéã倧åã«ããããšãå¯èœã§ãã éšçœ²çŽ¹ä» ã¿ã€ããŒã¯ãæ¥éã«æé·ãéããŠãããã³ãã£ãŒäŒæ¥ã§ãããã®æé·ã®åºç€ã®äžã€ããç§ãã¡ããŒã¿çµ±æ¬éšã§ãã ããŒã¿ã¢ããªã¹ãã¯ãçŸå Žã®ããŒã ãšååããªãããå®éã®æ¥åã«å³ããåæãè¡ã£ãŠããŸãããŸããçµå¶å±€ãšã®å¯æ¥ãªé£æºãéããŠãçµå¶ã«é¢ããçŽæ¥çãªææ¡ãè¡ãããšãå¯èœã§ãã ç§ã¯ãããã¯ãã¢ããªãã£ã¯ã¹ããŒã ã«æå±ãããããã¯ãã®æ¹åãšåäžã«æ¥ã
è²¢ç®ããŠããŸããåãéšçœ²ã§ã®ååã§ããtakahideããã®èšäºãåèã«ãªãã§ãããã> takahideããã®èšäºã¯ãã¡ã 仿¥ã¯ãã¿ã€ããŒã®ããŒã¿ã¢ããªã¹ããšããŠã®äžæ¥ã玹ä»ããç§ãã¡ã®æ¥åã®æµããå
·äœçã«ãäŒãããŸããããã§ã¯ããã£ããå§ããŠãããŸãããã äžæ¥ã®æµã æã®ã«ãŒãã³ : æã¯7æé ã«èµ·ããŸããå®¶æãšã®æé£ã¯äžæ¥ã®å§ãŸãã®å€§åãªã²ãšãšãã åšãä¿è²åã«éãåºããåŸã9æååŸã«èªå®
ã®ä»äºã¹ããŒã¹ãžãšç§»åããäžæ¥ã®æ¥åãã¹ã¿ãŒãããŸãã ä»äºãå§ããåã«ãçãæéã䜿ã£ãŠã¡ãŒã«ã®ãã§ãã¯ãäžæ¥ã®ã¹ã±ãžã¥ãŒã«ãèŠçŽããŸãã ååäžã®ä»äº : 9:00~11:00 ãã©ãŒã«ã¹èª²é¡ã®åæ çŽè¿ã®ãã©ãŒã«ã¹ããŠãã課é¡ãšããŠãæçµŠãšå€åç¶æ³ã®é¢ä¿æ§ã«é¢ããåæã§ãã ãã¡ãã¯ããããã¯ãããŒã±ãã£ã³ã°ïŒPMMïŒéšãšé£æºããªããé²ããŠãããåŸãããããŒã¿ããæ°ããªããžãã¹æŽå¯ãåŸãããšãç®æšã§ãã ãã©ãŒã«ã¹èª²é¡ã¯ãæ
åœããéšçœ²ã®ç®æšããæŽŸçãã課é¡ããæ¥ã
ã®æ¥åããåŸãæ°ä»ãã«åºã¥ãèªç±ç ç©¶ãå«ãŸããŸãã é²ãæ¹ãšããŠã¯ãè°è«ãéããŠä»®èª¬ãç«ãŠãŠããããæ€èšŒããŠãããµã€ã¯ã«ãåããŸãããã®éçšã«çœ®ããŠãPMMéšãšã®ååã¯éåžžã«éèŠã§ãã圌ãã®åžå Žã«å¯Ÿããæ·±ãæŽå¯ãšç§ãã¡ã®ããŒã¿åæèœåãçžä¹å¹æãçã¿åºãããšã§ãæçµçã«ã¯ããã®åæããããã¯ãæ©èœã®æ¡åŒµãšãã圢ã§å®çŸãããããšãç®æããŠããŸãã 11:00~11:30 ããŒã¿ã¢ããªã¹ãå
šäœã®ãã€ãªãŒããŒãã£ã³ã° ãã®æé垯ã¯ãããŒã¿ã¢ããªã¹ãããŒã å
šäœã§ã®ãã€ãªãŒããŒãã£ã³ã°ãè¡ããŸãã ããã§ã¯ãããŒã å
šå¡ã§å
±éã®é£çµ¡äºé
ãå
±æããããŒã¿ã¢ããªã¹ãéšåãã®äŸé Œã¿ã¹ã¯ã®å¯Ÿå¿æ¹æ³ã«ã€ããŠè©±ãåããŸããéåžžããã®ããŒãã£ã³ã°ã¯30åéèšå®ãããŠããŸãããå
容ã«ãã£ãŠã¯æ©ãçµããããšããããŸãããæ°ããã¢ã€ãã¢ãæœçã«ã€ãªããè°è«ãçãäžããããšããããŸãã äŸé Œã¿ã¹ã¯ã«ã€ããŠå°ã詳ãã説æããŸããçŸåšãç§ãã¡ã®ããŒã ã¯ããŒã±ãã£ã³ã°ãããžãã¹ããããã¯ããšãã£ããŠãããããšã«åãããŠãããåãŠãããã¯éåžžãç¹å®ã®èª²é¡ã«éäžããŠããŸããããããå
šç€Ÿããã®ããŒã¿æœåºäŸé Œã倿°å¯ããããããããããã«å¯Ÿå¿ããã«ã¯ããŒã å
šäœã§ãªãœãŒã¹ãå¹ççã«èª¿æŽããå¿
èŠããããŸãã Lookerã®å°å
¥ãšæ®åã«ãããå€ãã®ããŒã¿æœåºã¯åéšçœ²ãèªåã§è¡ããããã«ãªããŸããããè€éãªããŒã¿éèšãLookerã§å¯Ÿå¿ã§ããªãé
ç®ãããå Žåã¯ãäŸç¶ãšããŠç§ãã¡ã®ããŒã ãžäŸé Œãæ¥ãŸãã ãããã®ã¿ã¹ã¯ã¯å°éæ§ãèŠæ±ãããããšã¯å°ãªãã§ãããç·æ¥æ§ãé«ãè¿
éãªå¯Ÿå¿ãæ±ããããŸããã¡ã³ããŒäžäººã²ãšãããããã®ã¿ã¹ã¯ã«åãçµãé »åºŠã¯ãé±ã«1åãããã§ãã 11:30~12:00 ä»ã®ã¡ã³ããŒã®ã¯ãšãªã¬ãã¥ãŒ äžè¬çã«ãç§ãã¡ã®æ¥åžžçãªèª²é¡ãäŸé Œã¿ã¹ã¯ã®ææç©ã¯ãããŒã¿ãæœåºããåŸããã®ãŸãŸæåºããŠå®äºãšãªããŸãã ãããã瀟å€åãã®è³æã財åã«é¢ããããŒã¿ãªã©ãç¹ã«æ£ç¢ºæ§ãéèŠèŠãããå ŽåããããŸããããããå Žåã«ã¯ãååãšããŠã¬ãã¥ã¯ãŒãå²ãåœãŠãŠãäºéãã§ãã¯ã®äœå¶ãåããŸãã ãã®äºéãã§ãã¯ããã»ã¹ã¯ãããŒã¿ã®å質ãä¿èšŒãããšã©ãŒã誀解ãé²ãããã«äžå¯æ¬ ã§ããã¬ãã¥ãŒã¯ãããŒã¿ã®æ£ç¢ºæ§ã ãã§ãªãã䜿çšãããåææ¹æ³ãå°ãããçµè«ã®åŠ¥åœæ§ã«ã€ããŠãæ€èšŒããŸãã ããã«ãããæäŸããããŒã¿ãšæ
å ±ã®ä¿¡é Œæ§ãåäžãããç§ãã¡ã®ããŒã¿ã¢ããªã¹ãæ¥åã®å質ãé«ããããšãã§ããŸãã æŒäŒæ© : æŒäŒæ©ã®æéã¯ãæ¥ã«ãã£ãŠå€å°ååŸããããšããããŸãããåºæ¬çã«ã¯å·èµåº«ã«ãã飿ã䜿ã£ãŠææ©ãæçãäœããé£äºãããŸãã æéãèš±ãã°ã10ã15åã®çãä»®ç ããšãããšããããŸãã ååŸã®ä»äº : 13:00~13:30 äŸé Œã¿ã¹ã¯ã®ãã¢ãªã³ã° ååäžã«ã¢ãµã€ã³ãããäŸé Œã¿ã¹ã¯ã®åãçµã¿ã«å
ç«ã¡ãäŸé Œè
ãžã®ãã¢ãªã³ã°ãè¡ããŸããäŸé Œã¿ã¹ã¯ã®èŠä»¶ã¯éåžžãäºåã«äŸé Œè
ã«ãã£ãŠææžåãããŠããŸãããããè©³çŽ°ãªæ
å ±ãå¿
èŠãªå Žåã¯ãããªã確èªãè¡ãããŸãã ãã®ã¹ãããã¯å¿
ãè¡ãããã§ã¯ãªããèŠä»¶ãæç¢ºã«å®çŸ©ãããå Žåã¯ãææç©ãäœæããåŸã«äŸé Œè
ãšã€ã¡ãŒãžãããåãããããçµæãçŽæ¥ãã£ããã§äŒãããããããšããããŸãã 䜿ãéã®ç¢ºèª æœåºããŒã¿ãã©ã®çšåºŠã®èŠæš¡ã§ãã©ããããã®æé䜿çšããããã確èªããããã«åºã¥ããŠé©åãªåºå圢åŒãææ¡ããŸãããŸããæœåºããŒã¿ãä»ã®ç®çã«ãæ±çšçã«äœ¿çšã§ããå Žåãä»åŸã®äŸé Œã¿ã¹ã¯ã§ã®æµçšã®å¯èœæ§ãæ€èšããŠäœæããŠãããŸãã é
ç®ã®å®çŸ©ã®ããåãã é
ç®ã«ãã£ãŠã¯ãéšçœ²ããšã«åºæºãç°ãªãããšããããŸãããã®ãããéèšæ¡ä»¶ãé
ç®ã®å®çŸ©ãæç¢ºã«ããŠãããŸãã æœåºé
ç®ã®ææ¡ æã«äŸé Œè
ãããŒã¿ã«é¢ãããªãã©ã·ãŒãäœãå ŽåããèŠä»¶ãååã«èšèŒãããŠããªãå ŽåããããŸãããã®ãããªç¶æ³ã§ã¯ãå®éã«æ±ããããŠããå
容ã詳ãããã¢ãªã³ã°ããæé©ãªåºåæ¹æ³ãã¢ããã€ã¹ããŸãã 13:30~14:30 äŸé Œã¿ã¹ã¯ã®å¯Ÿå¿ãçŽå å
ã»ã©ãã¢ãªã³ã°ã§åŸãçµè«ã«åºã¥ããŠæ©éäœæ¥ã«åãçµã¿ãŸããã¿ã¹ã¯ã®é£æåºŠã«ã¯ã°ãã€ãããããããå®äºãŸã§ã®æéã¯ããŸããŸã§ããéåžžã¯30åãã60åã§å®äºããã¿ã¹ã¯ããããŸãããäŸé Œè
ãšã®æ®µéçãªãããšããå¿
èŠãªå Žåã¯ãå
šäœãšããŠæ°æéãèŠããããšããããŸãã 14:30~16:30 ãã©ãŒã«ã¹èª²é¡ã®åæ ååäžã«åãçµãã§ãããã©ãŒã«ã¹èª²é¡ã®åæäœæ¥ãç¶ããŸãããã®äœæ¥ã«ã¯ãéäžãèŠãããããäžæãããããšãªãç¶ç¶çã«åãçµãããšãéèŠã§ãããã®ããããããããã¹ã±ãžã¥ãŒã«ããããã¯ããŠããããšã§ãåæã«å°å¿µããæéã確ä¿ã§ããŸãã 16:30~17:00 å®äŸããŒãã£ã³ã°ïŒéšçœ²é£æºã®æç¶PJTïŒ ããŒã¿çµ±æ¬éšä»¥å€ã®éšçœ²ãšååããŠé²ããŠããæç¶çãªãããžã§ã¯ãã®å®äŸããŒãã£ã³ã°ãè¡ããŸãããããžã§ã¯ãã®æ§è³ªã«ãã£ãŠããã®æéã¯éåžžæ°é±éããæ°ã¶æã«åã³ãç¶æ³ã«å¿ããŠå®äŸããŒãã£ã³ã°ä»¥å€ã®æ¹æ³ã§ã®é£æºãè¡ãããããšããããŸãã ãã®å®äŸããŒãã£ã³ã°ã§ã¯ãç§ã瀟å
ã§ãªãªãŒã¹ããå¶æ¥çšããã·ã¥ããŒãã®å©çšç¶æ³ãšæ¹åç¹ã«éç¹ã眮ããŠããŸãããã®ããã·ã¥ããŒãã¯ç€Ÿå€åãã§ãå¶æ¥æŽ»åã«ãããéèŠãªããŒã«ãšããŠå©çšãããŠããŸããçŸåšã瀟å
ã§æãé »ç¹ã«åç
§ãããããã·ã¥ããŒãã®äžã€ã§ãããå¶æ¥å¹çã®åäžãšå¶æ¥ã¬ãã«ã®å¹³æºåã«å€§ããå¯äžããŠããŸãã 17:00~18:00 æ¡çšé¢æ¥ æ¥éã«æ¡å€§ããŠããã¿ã€ããŒã§ã¯ãæ°ããªæèœãšã¹ãã«ãæã€ä»²éãå¢ããããšãéåžžã«éèŠã§ãã 颿¥ã§ã¯ãåè£è
ã®æè¡çèœåãããŒã ãšã®çžæ§ãå°æ¥ã®ããã³ã·ã£ã«ãè©äŸ¡ããŸããããã«ã¯ãå°éçãªã¹ãã«ã ãã§ãªããçµç¹æåãžã®é©åæ§ãã³ã©ãã¬ãŒã·ã§ã³èœåãå«ãŸããŸããç§ãã¡ã¯ãåªç§ãªäººæãèŠæ¥µããããŒã ãšäŒç€Ÿå
šäœã®æé·ãæ¯ãã人æãæ¡çšããããšãç®æããŠããŸãã 18æããäžæãïŒãããã¯ãã®ãŸãŸéå€ïŒ : äžæ¥ã®ä»äºãçµããåŸã®å€æ¹ã¯ãå®¶æãšã®å€§åãªæéã§ãã æåã«ä¿è²åã«åšãè¿ãã«è¡ãããã®åŸã¯å®¶ã§å€é£ã®æºåã«åãæãããŸããå®¶æã¿ããªã§é£äºãå
±ã«ãããã®åŸã¯åäŸãšäžç·ã«æ¥œãããã¹ã¿ã€ã ãéãããŸãã æ¯æ©ã§ã¯ãªããã®ã®ãåšãå°±å¯ããæéãè¿ã¥ããšããã®æºåã¯åŠ»ãæ
åœããç§ã¯ãã®éã«è¿œå ã®ä»äºã«åãçµãããšããããŸãã 20~21æä»¥åŸ : 20:00~20:30 颿¥ã®è°äºé²å®æãè©äŸ¡ã®å®äº è¡ããã颿¥ã«é¢ããè°äºé²ã®ãŸãšããã颿¥è©äŸ¡ãè¡ããŸãã ãŸãããã®æéã䜿ã£ãŠè¿œå åæãã¿ã¹ã¯ã®æŽçãè¡ãããšããããŸãããããã¯ããã®ãŸãŸåãäžããŠãã©ã€ããŒãã§æ ç»ãèªæžãªã©ã«å
ãŠãããšããããŸãã ãã¡ãã¯ç§ã®ããäžæ¥ã®éããæ¹ã§ããã¿ã€ããŒã§ããŒã¿ã¢ããªã¹ããšããŠåãäžã§ãä»äºãšãã©ã€ããŒãã®ãã©ã³ã¹ãä¿ã¡ã€ã€ãæ§ã
ãªèª²é¡ã«åãçµãæ¯æ¥ãéã£ãŠããŸãã ãããã§ãããããå°ãã§ãã¿ã€ããŒã§ã®ããŒã¿ã¢ããªã¹ããšããŠã®ä»äºã®ã€ã¡ãŒãžãã€ããã幞ãã§ãã å€åäœç³» ããŒã¿çµ±æ¬éšã§ã¯ããã«ãªã¢ãŒãã¯ãŒã¯ãå¯èœã§ãããå§æ¥æéãæè»ã«èšå®ã§ããŸããããã«ãããç§ãã¡ã¯èªåã®ã©ã€ãã¹ã¿ã€ã«ã«åãããåãæ¹ãéžã¶ããšãã§ããŸãã ç§ã®å Žåãè²å
ã®ããã18æã«ã¯ä»äºãåãäžããããšãã§ããŸããããã«ãããå®¶æãšã®æéã倧åã«ããªãããå¹ççã«æ¥åãé²ããããšãå¯èœã«ãªã£ãŠããŸãã ããã«ãæè¿ã¯åšãæã«äžåºŠçšåºŠç±ãåºãããšãããããã®éœåºŠã¹ã±ãžã¥ãŒã«ã調æŽããããååããã®ãµããŒããåãããããŠããŸããã¿ã€ããŒã§ã¯ããã®ãããªç¶æ³ã«ãæè»ã«å¯Ÿå¿ããããç°å¢ãæŽã£ãŠããŸãã Weâre Hiring! ç§ãã¡ã¯ããšãã«åãã¡ã³ããŒãåéããŠããŸãïŒïŒ product-recruit.timee.co.jp
ã¿ã€ããŒã®yama_sitterãé è²ãå°æã§ãã åœå
æå€§çŽã® ã¢ãžã£ã€ã« ã ã¹ã¯ã©ã é¢é£ã®ã€ãã³ããRegional Scrum Gathering Tokyo 2024ïŒRSGT2024ïŒã ã1/10ã1/12ã®3æ¥éã«ããã£ãŠéå¬ãããŸããã 2024.scrumgatheringtokyo.org ã¿ã€ããŒã«ã¯äžçäžã§éå¬ããããã¹ãŠã®æè¡ç³»ã«ã³ãã¡ã¬ã³ã¹ã«ç¡å¶éã§åå ã§ãããKaigi Passããšããå¶åºŠããããŸãã productpr.timee.co.jp ãã¡ãã®å¶åºŠãå©çšããŠä»å¹Žã¯ ã¹ã¯ã©ã ãã¹ã¿ãŒ3åããšã³ãžãã¢3åãåå ããŠããŸããã åç·š ã«ç¶ããåŸç·šã®ä»åã¯ãšã³ãžãã¢3åããåå ã¬ããŒãããéãããŸãã SM/EMãããšã³ãžãã¢ã«èŠç¹ãå€ããŠåå ãšã³ãžãã¢ã® yama_sitter ã§ãã åå ã¯ä»å¹Žã§2åç®ã«ãªããŸããååã¯åè·ããSM/EMã®ç«å ŽãšããŠåå ããŸããããä»åã¯ã¿ã€ããŒã®çŸå Žãšã³ãžãã¢ãšããç«å Žã§åå ãã圢ãšãªããŸããã ããšã³ãžãã¢ããSMã«ãªããEMãçµãŠãšã³ãžãã¢ã«æ»ã£ã人ããšããèŠç¹ã§ãç¹ã«å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ã3ã€ãããŸããã®ã§ç޹ä»ããŸãã Badãã©ã¯ãã£ã¹ãéžãã§å€±æããªããé²ããæ°èŠãããã¯ãéçº èªåã¯SMæä»£ã«ã圢ãã«æãããéããŠè²ã
ãªå€±æãéããŠããŸãããäžæ¹ã§ä»æå±ããããŒã ã§ã¯ãããã ã¹ã¯ã©ã ã®åœ¢åŒã§ã¯ä»äºãããŠããããããã§ãã¡ãããšææãåºããŠããç¶æ
ã§ãïŒâ»1ïŒããããã®çµéšããããã®1幎ã»ã©ã¯ã ã¢ãžã£ã€ã« ã¯åœ¢ãããªãããšããã®ãèªåãªãã«çè§£ãããŸãèãç¶ããŠããŸãããïŒãã®éãäžã«åºåããã¹ãè«ãããã ã©ã¯ ãã£ã¹ãã¿ãããªãã®ããšã«ããçã£ãŠããã£ãŠããŸããïŒ ãããªäžèŠãã®ããã®ãBadã ã©ã¯ ãã£ã¹ãéžãã§~ãã®ã»ãã·ã§ã³ã§ããããã§ã¯äžéçã«ã¯NGãšãããã ã©ã¯ ãã£ã¹ãæ¢ããŠçšããïŒãã¡ããèŠãã¿ãªãããïŒã¡ãããšææãåºããäºäŸãèªãããŠããŸãããBadãšèšããããã®ã ãšåãã£ãäžã§ããã®ãªã¹ã¯ãçè§£ãåãå
¥ããçµæã«çµã³ä»ããããã®ããæ¹ã¯æç§æžçã§ãããªããã®ã®ãã¡ãããšããäžã€ã®è§£ã ãªãããšã ã€ãŸããšããã䟡å€ã«åãåããèªåãã¡ãèããã/æã¡ããæå€§ã®åã§ææãçã¿åºããããšãéèŠãªã®ã§ãã£ãŠã圢ã§ã¯ãªããªãšãã話ã§ããä»ã®èªåãæããŠããããšãåŸæŒããæŽã«åã«é²ããŠããããã®ã»ãã·ã§ã³ã¯éåžžã«ææçŸ©ãªãã®ã§ããã ãã¡ãã¯ã¹ã©ã€ããããã®ã§æ¯éãäžèªãã speakerdeck.com â»1 ãããŸã§äŒç€Ÿå
šäœãšããŠã¯ ã¹ã¯ã©ã ã«åãå
¥ããŠãããèªããŒã ã¯ç¹æ®ãªã±ãŒã¹ã§ã Lack of curiosity: The silent killer of agile ã奜å¥å¿ã®ç¡ãã¯ã¢ãžãªãã£ã殺ãããšãã話ã§ããå
容ã¯å¿è«ã§ãããç¹ã«ãã®ã¿ã€ãã«ã匷ãå°è±¡ã«æ®ã£ãŠããŸãã å
¥ç€ŸããŠå幎ã以åèããŠããæœè±¡çãªåãããã¯é¢ããŠä»ã¯ã²ãããã«å
·è±¡ãšåãåã£ãŠããŸããå
¥ç€ŸçŽåŸã«æããŠããæ§ã
ãªçåãå°ããã€èããŠããŸãããã¢ãŠããããããåºããŠãããšã¯æããŸããããå°ããã€ãçåã«æãåãããã¯ã¯ã¯ã¯ããåããããããŠãã£ãŠããã®ãæããŠããŸãã ããã ãšãæ¬åœã«åãåãã¹ã課é¡ã«æ°ä»ãåãåãããšãã§ããªããã§ããããã»ãã·ã§ã³ã§ãè¿°ã¹ãããŠããŸããããã人éã¯ã«ãŒãã³ã奜ãããªã®ã§å°æŽã§ãã èªåãç®ã®åã®ã³ãŒããšã²ãããåãåãã ãã§ã¯é«ãèŠç¹ããã¯ç©äºãèããããŸãããçåã«æããªããã°è³ãåºæ¿ãåããã«éåããŠãããŸããã¯ã¯ã¯ã¯ããŠããªããã°éäžã§åå°œããŸããçµæãšããŠæ°ä»ãã課é¡ãåãåã課é¡ãããããããã ã«ãªã£ãŠããã çŸå Žã«ãã©ãŒã«ã¹ããã ãã ãšãå·¡ãå·¡ã£ãŠè¯ããšã³ãžãã¢ã«ã¯ãªããªããªããã¡ãããšå¥œå¥å¿ãæã¡ç¶ããåªåãããªããšãªãããšæããããã»ãã·ã§ã³ã§ããã Solving The Value Equation ãã¬ã¬ã·ãŒã³ãŒãæ¹åã¬ã€ããã®èè
ã§ããMichael Feathersããã®ããŒããŒãã§ãã ãã¡ããã¡ãããã«ãªã話ã°ããã§ããããå人çã«åºãã£ãã®ã¯ãããã»ã¹ã ã¢ãŒããã¯ã㣠ãããŒã ã®èœåãçµç¹æ§é ãšãã£ãåã¬ã€ã€ãŒã®ç®æšã¯ã â䟡å€ã«è³ããŸã§ã®ãããã·â ã§ãããªãããšãã話ã§ãã âãããã·â ãšããã®ãç¹ã«è¯ããŠããããæèãããšãä»ã®åãçµã¿ãšãã®çµæã¯ãå¿
ãäœããã®äŸ¡å€ã«è»¢æãããããã«ååšããããšããèãæ¹ãã§ããŸããåœç¶ã®ããšã§ã¯ãããã§ãããç®ã®åã®ããšã«ãã©ãŒã«ã¹ããããã¹ãè«ãã«åãããããããšå¿ããã¡ã ãªãâŠãšæã£ããããŸãã äœè«ã§ãããåè·ã®SMæåæã®é ã¯ãããã£ãœãã¡ããªã¯ã¹ããèŠã€ããŠã¯å³åŸå·ŠåŸããŠããŸãããããã¯ããã§å¿
èŠãªããã»ã¹ã ã£ããã®ã®ãã§ããã°ãã® âãããã·â ã®èãæ¹ãæã£ãŠããããã£ãã§ãã èŠç¹ãå€ããŠã®åå ãšãªããŸããããéžã¶ã»ãã·ã§ã³ãèŠãã¹ã¿ã³ã¹ãæããããšãåŸããããã®ãããªãéãããåŸããã®ã®å¹
ãå¢ããŠããããšã«æ°ä»ããŠé¢çœãã£ãã§ããäžåºŠå
šåã§SMããã£ãŠãããšã³ãžãã¢ã«æ»ããšé¢çœãã§ããã ãšãŸããããŸã§è²ã
æžããŸããããæ£çŽã»ãã·ã§ã³ããããçŽ æŽãããã»ãã·ã§ã³ãèŠãããšã«åãç±éãæã£ãã¿ã€ããŒã¡ã³ããŒãšéãŸããé
ã飲ã¿ãªããè°è«ãããæéãäžçªè¯ãã£ãã§ãããããã£ãæéã®ããã«è¡ã£ãŠãããã·ããããã ç·ããŠãRSGTã¯ä»å¹Žãè¯ãã€ãã³ãã§ãããäŒç»/éå¶ã®çããŸãããããšãããããŸãã ã¡ã³ããŒãšèªåãã¡ã®çµç¹ã«ã€ããŠèªãåããã£ããã« ãšã³ãžãã¢ã® é è² ïŒCSMä¿æïŒã§ãã RSGTã¯ä»åãååå ã§ããŠçŸçãªãªã³ãµã€ããã±ããã®äºå¥ªæŠãåã¡æããŠçŸå°ã«è¡ã£ãŠãŸãããŸãããèªåã¯çŸåšã¯ãããŒãžã£ãŒã§ã ã¹ã¯ã©ã ãã¹ã¿ãŒã§ãç¡ãã®ã§ããã以åããããŒã ã»çµç¹ã§ææãåºãã«ã¯ã©ãããã°è¯ãããšãã£ãããŒãã«èå³ããã£ãã®ã§åå ããŸããã åºæ¬ã¯ã»ãã·ã§ã³ãèãããšãäžå¿ã«ãåéã®äŒæ©æéãªã©ã§ç¥ãåãã®æ¹ãšã話ãããŠéãããŸãããäžã§ãå°è±¡ã«æ®ã£ãã»ãã·ã§ã³ã®ã²ãšã€ã¯Joe Justiceããã®ã ãžã§ãŒãèªããTeslaã§ã®è¡æçãªéçºã¹ããŒã ãã§ãã黿°èªåè»ã¡ãŒã«ãŒTeslaã®éçºãµã€ã¯ã«ã®ããŸãã®éãã«æ¬åœã«èªåè»ã®éçºãªã®ãïŒïŒãšé©ãã®é£ç¶ã§ããããšåæã«ããŒãã§ãã®ã¹ããŒãã§ã§ããŠããã®ã ãããœãããŠã§ã¢éçºãããŠããèªåãã¡ããã£ãšãããã®ã§ã¯ãåæã«ã§ããªããšæã£ãŠããã ããªã®ã§ã¯ããšããåçããããŸããã ãªããããã¯ãªãšããã ãšäŒå Žå
ã§ããã®ã«ã¡ã©ãã³ã«åçãæ®ã£ãŠãããããã©ãããŒã¹ããã£ãã®ãè¯ãã£ãã§ããGlobal Scrum Gathering Amsterdamã§è¡ãããŠãããã®ãæ¥æ¬ã«ã茞å
¥ãããããã§ãã ããã®ã«ã¡ã©ãã³ã«æ®åœ±ããããã£ããŒãããšShinoPãã èªåãã¡ã¯æ®æ®µãã«ãªã¢ãŒããªã®ã§ãåŒç€Ÿã®ã¡ã³ããŒãšèªåãã¡ã®çµç¹ãªã©ã«ã€ããŠå¯Ÿé¢ã§ãã£ãã話ããã®ãéåžžã«è¯ãäœéšã§ããããã£ã³ã¹ãããã°ãŸãåå ããããšæããŸãã RSGTã¯æ°ã¥ããšåŠã³ã®å Ž ããã«ã¡ã¯ïŒã¿ã€ããŒã§QA ã¹ãã·ã£ ãªã¹ããæ
åœããŠããå°æäŸå
ã§ãã RSGTã¯ãªã³ã©ã€ã³ã§åå ããŸããããä»åãããã£ã±ãããã ã£ããã ããšèªåã®ç¥èãçµéšãåŸæŒãããŠãããçºè¡šå
容ã«ãæè¬ã®æ°æã¡ã§ãã£ã±ãã«ãªããŸããã äºäŸ/å®çžŸãèãæ¹ã®å
±æã¯æ°ã¥ããšåŠã³ã®å Žã ãšãæ¹ããŠæããŸããã å°ãã§ãããç§ãæ°ã«ãªã£ãã»ãã·ã§ã³ã«ã€ããŠã玹ä»ããããšæããŸãã ã ããã·ã㣠Deep Dive ãã§ã¯ããã·ãã£ãçç£æ§ã«æŽ»çšããããšããããŸãããïŒãšããããšã倿§ãªè§åºŠãã説æããŠããŸãããã©ã®è§åºŠããã®èª¬æãçŽåŸæã®ãããã®ã°ããã§ããããäžçªå°è±¡çã ã£ãã®ããâ ã¢ãžã£ã€ã« ã ã¹ã¯ã©ã ãç®æãã®ã¯äŸ¡å€ã®å®çŸã§ããããã®æèã§ã®çç£æ§ã¯ãä»å 䟡å€çç£ãã§ããâãšãã説æã§ããã ã¢ãžã£ã€ã« ãæ¡çšãæ¢çŽ¢ç/å®éšçã«ãããã¯ããéçºã䟡å€ãæäŸãããšããåºæ¬ãå¿ããŠã¯ãããªããšåŠã¹ãŸããã ã ãããã¯ããããããããšã ãã®ã»ãã·ã§ã³ã¯äžè¬ç㪠ã¹ã¯ã©ã ã®è©±ã§ã¯ãããŸããã§ããããå®éã®ãããã¯ãéçºã§ééããå®äŸã§ãããç¹ã«âãããã¯ããçµäºããããšãã®è²»çšâããããã¯ã ããã¯ãã° ã®é äœã®äžã®æ¹ã«å
¥ããŠãããšããèãã«ã¯å
±æã§ããããããã倿ããµãŒãã¹æ€éã«å¿
èŠãªæŽãåºãã¯ããããã¯ããæ¢ãããšãã§ãªãéçºãå§ããéã«æ±ºããŠããå¿
èŠããããšäœåºŠãçæããŠããã®ã§ãæ¹ããŠããŸãŸã§ã®çµéšã¯åœ¹ã«ç«ã€ããšããããšæããŸããã 玹ä»ããã»ãã·ã§ã³ä»¥å€ãããå€ããåŠã¹ãRSGTãæ¥å¹Žã¯çŸå°ã§åå ã§ããããã«ããããšæããŸããã ãŸãšã ãããã§ããã§ããããã åå ããŠæºè¶³ããŠçµäºã§ã¯æå³ããªãïŒãšããããšã§åŸæ¥åå è
å
šå¡ã§æ¯ãè¿ãïŒFun Done LearnïŒãè¡ããŸããããã£ãããš ãã¯ã¹ ãã¢ã¯ã·ã§ã³ãçãŸããã®ã§ãããããããŒã ã»çµç¹ã«ä»ååŸãåŠã³ãéå
ããŠãããã°ãšæããŸãã æ¥å¹ŽããŸãGatheringããŸãããïŒ
ã¿ã€ããŒã®mahoãShinoPããã£ããŒã§ãã åœå
æå€§çŽã® ã¢ãžã£ã€ã« ã ã¹ã¯ã©ã é¢é£ã®ã€ãã³ããRegional Scrum Gathering Tokyo 2024ïŒRSGT2024ïŒã ã1/10ã1/12ã®3æ¥éã«ããã£ãŠéå¬ãããŸããã 2024.scrumgatheringtokyo.org ã¿ã€ããŒã«ã¯äžçäžã§éå¬ããããã¹ãŠã®æè¡ç³»ã«ã³ãã¡ã¬ã³ã¹ã«ç¡å¶éã§åå ã§ãããKaigi Passããšããå¶åºŠããããŸãã productpr.timee.co.jp ãã¡ãã®å¶åºŠãå©çšããŠä»å¹Žã¯ ã¹ã¯ã©ã ãã¹ã¿ãŒ3åããšã³ãžãã¢3åãåå ããŠããŸããã ãã®åå ã¬ããŒããšããŠå°è±¡ã«æ®ã£ãã»ãã·ã§ã³ãã¯ãŒã¯ã·ã§ãããåŠã³ãªã©ãåå è
ããããã®èŠç¹ã§å
±æã§ããã°ãšæããŸããä»åã¯ååŸç·šã®åç·šãšã㊠ã¹ã¯ã©ã ãã¹ã¿ãŒ3åã®ã¬ããŒãããéãããŸãïŒ ååå ã§ OST ã®ãã¹ãã«ææŠ ã¹ã¯ã©ã ãã¹ã¿ãŒãããŠããmahoã§ããRSGTã¯ä»åãååå ã§ç·åŒµããŠããŸããããäžç·ã«çŸå°åå ããã¡ã³ããŒãããã®ã§å¿åŒ·ãã£ãã§ãã ç§ã¯ãŸã ãŸã ã¹ã¯ã©ã ãã¹ã¿ãŒåå¿è
ãšããããšããããã»ãã·ã§ã³ãèŽããŠåŠã³ãæ·±ããããšãäžçªã®ç®çã«ããŠããŸãããã©ã®ã»ãã·ã§ã³ãè峿·±ãå
容ã§ããããå
šäœãéããŠæããå
±éç¹ã¯ä»¥äžã®äžã€ã§ãã ããŒã ã®åºç€ãæ¯ããéèŠãªæ±ã®ã²ãšã€ã¯é¢ä¿æ§ã§ããããš å€åã¯æéããããããšãçè§£ããŠå¿èãæã€ããš ã·ã¹ãã å
šäœãæããããåªããããš ç§ããããäœçŸã§ããããã«ãåŠã³ãå®è·µããªãã粟é²ããŠãããããšæããŸãã ãŸããäžæ¥ç®ã® OST ã«ã¯è©±ãããããŒããçºè¡šãããã¹ããšããŠã®åå ã«ææŠããŠã¿ãŸãããäžå®ã§ãã£ã±ãã®äžãããå§ãŸã£ãŠã¿ããšéãŸã£ãŠãã ãã£ãæ¹ã
ãšäºæ³ä»¥äžã«è°è«ãçãäžããããšãŠã楜ããæéãéããããšãã§ããŸãããã»ãã·ã§ã³ãèŽãã ãã§ãªããGatheringãšããŠãããäœéšãã§ããã®ã§ãããæ¬¡åãåå ããããšã«ãªãã°ãããç©æ¥µçã«è©±ãæ©äŒãäœã£ãŠã¿ãããšæããŸããã ã©ã瀟å
ã«æã¡åž°ããã話ãæéã¯äœäºã«ãå€ãé£ã ã¿ã€ããŒã§ ã¹ã¯ã©ã ãã¹ã¿ãŒããã£ãŠãããã£ããŒãšç³ããŸããæšå¹Žã«åŒãç¶ã2åç®ã®çŸå°åå ã«ãªããŸãã ç§ã¯æ¯å¹Žå¹Žæ«ã«ããŒããæ±ºããŠããŸããŠã1幎ãããŠéæãããã©ãããæ¯ãè¿ã£ãŠããŸãã ãã®äžã§ãRSGTã¯å¹Žåäžçºç®ãšããããšã§å¹Žæ«ã«æ±ºããããŒãã«ã€ããŠç¥èŠãåŸããããã£ã¹ã«ãã·ã§ã³ãã§ããã®ã§éåžžã«å©ãã£ãŠããŸãã ç§ã®æ¬å¹ŽåºŠã®ããŒãã¯ã ã¹ã¯ã©ã ãã¹ã¿ãŒãšããŠæé·ã§ããã»ãã£ãŠã¿ãããªãç°å¢ãäœããã§ãïŒ ããŒãã«æãé¢é£ããŠããã®ã§ä»¥äžã玹ä»ããããŸãã ã ã¹ã¯ã©ã ãã¹ã¿ãŒãè·èœã«ããææŠ - å¥å
šãªããŒã ãå¢ããçµç¹ãããŒã ã¯ãŒã¯ã§ããµããããéã®ã ã ã¹ã¯ã©ã ãã¹ã¿ãŒãã©ã®ããã«å¢ãããŠãã£ãããã©ã®ãããªä»çµã¿ãäœã£ãŠãã£ããã¯å€§å€åèã«ãªããåæ°ãããããŸããïŒ 1on1ã ã³ãŒãã³ ã°ãã¡ã³ã¿ãªã³ã°æŽ»åã¯åŒç€ŸãšããŠãåãçµã¿å§ããŠããã®ã§ããã絊äžã¬ã³ãžã®æ€èšãæé·æ¯æŽã®äºç®ãªã©ã¯æ€èšã§ããŠãªãéšåãªã®ã§åŒç€Ÿãªãã§ã¯ãçµã¿åããã€ã€ãäžã€ã®äºäŸãšããŠç€Ÿå
ã«ç޹ä»ããããšæããŸãã ãŸããã¡ã³ã¿ãŒãšããŠã¯åå¿è
ã®æ¹ãRSGTã§æ¥œãããããã«ç€Ÿå€ã®äººãšã®äŒè©±ã«å
¥ã£ãŠããã£ããã OST ã«åå ããããã«ä¿ãããã è£ç® æšãšããŠæã£ãŠããŸããããæ¥œãããããã§äœããã§ããïŒ çãããæžããŠãŸãããåããã®ãèŠãŠèããŠããã«ã€ããŠã©ã®ããã«ç€Ÿå
ã«æã¡åž°ããã話ãæéã¯äœäºã«ãå€ãé£ãã®ã§ãæ¥å¹Žãåå ããããªãšæããŸãããïŒãªãã©ã€ã³åå ã¯é£ãããããããŸãããïŒ RSGTã®ãªã¹ã¹ã¡ã®æ©ãæ¹ ããã«ã¡ã¯ïŒã¿ã€ããŒã§ ã¹ã¯ã©ã ãã¹ã¿ãŒãããŠãã ShinoP ã§ãïŒ ä»åã®RSGTã¯çŸå°åå ãšããŠã¯2åç®ãªã®ã§ãããååã¯ã»ãã·ã§ã³ãèŽãããšã«å€¢äžã«ãªã£ãŠããŠãæ¬åœã®æå³ã§ã®Gatheringãã§ããŸããã§ããã ãã®äžã§ã OST ã®ãã¹ãããã£ãäºã§ãåå è
å士ã®è§ŠãåããäœéšãGatheringã®æ¬åœã®æå³ãçè§£ããŸããã ã§ãã®ã§ãã»ãã·ã§ã³ã«é¢ããŠã®ææ³ãšããããã¯ãRSGTã®ãªã¹ã¹ã¡ã®æ©ãæ¹ã玹ä»ããããšæããŸãïŒ ä»åã®RSGTã§ã®ç«ã¡åãã¯ã»ãã·ã§ã³ãèŽãã ãã§ãªã⊠ãå»äžã§åããŠäŒã£ã人ãšè©±ãã ããæŒã«ç€Ÿå€ã®äººãšè©±ãã ãç ä¿®ãã³ãã¥ã ãã£ãŒ ã§é¢èã®ãã人ãšè©±ãã ãç»å£è
ãšè©±ãã ã飲ã¿äŒã«åå ããã ããæŒã®30ç§å®£äŒã³ãŒããŒã§è©±ãã ãªã©ãç©æ¥µçã«è¡ã£ãçµæãåããããªæ©ã¿ãæ±ããŠããæ¹ãšè©±ãããšã«ãã£ãŠãã³ããåŸãããããç»å£è
ã®æ¹ãšè©±ããŠã¢ã ãã€ã¹ ãããã£ãããé¢èã®ããæ¹ã
ãšã¯ã€ã¯ã€ã§ãããâŠãã®ãããªæ©ãæ¹ãåŠã³ãããã®ã§æ¯é詊ããŠã¿ãŠãã ããïŒ ãŸããRSGTã ã¹ã¯ã©ã ãã§ã¹ã¯äººã«è©±ããããããæ§é ã«ãªã£ãŠãããšæããŸãã®ã§ãé£ã«åº§ã£ãŠãã人ãšãã«è©±ããããããããšç¹ãããåºãã£ãŠãããšæã£ãŠããŸãã®ã§ãæ¯éæãåã£ãŠè©±ããããäºããªã¹ã¹ã¡ã§ãïŒ ä»åã®ã¬ããŒãã¯ä»¥äžãšãªããŸãã ç¶ãã®åŸç·šã¯ããšã³ãžãã¢ç·šããšããŠè¿æ¥å
¬éäºå®ã§ãã
ãã¡ã㯠Timee Advent Calendar 2023 ã·ãªãŒãº1ã®25æ¥ç®ã®èšäºã«ãªããŸãã æšæ¥ã¯ @tomoyuki_HAYAKAWA ã«ãã Swift Concurrency AsyncStreamを使ってみる #Swift - Qiita ã§ããã ã¿ã€ããŒã§ããã¯ãšã³ããšã³ãžãã¢ãããŠãã id:euglena1215 ã§ãã ã¡ãªãŒã¯ãªã¹ãã¹ð ã¿ãªããã®æå
ã«ã¯ãã¬ãŒã³ãã¯å±ããŠããã§ããããã Ruby ã®äžçã§ã¯ Ruby ã³ããã¿ãŒãµã³ã¿ãããã¯ãªã¹ãã¹ãã¬ãŒã³ããšããŠæ°ãã Ruby ããŒãžã§ã³ããªãªãŒã¹ããŠãããŸãã ä»å¹Žã¯ Ruby 3.3 ã§ãããå人çã«ã¯ 3.3 ã® YJIT ãã©ãã ãéããªãã®ã楜ãã¿ã§ãã ãŸããæ°ããããŒãžã§ã³ã®ãªãªãŒã¹ã«ã¯ã¢ããã°ã¬ãŒããã€ããã®ã§ããã¢ããã°ã¬ãŒãããã«ã¯æ°ããããŒãžã§ã³ã®æ©æµãåããããšã¯ã§ããŸããã ãšããããšã§ãä»åã¯ã¿ã€ããŒã瀟å
ã§éçšããŠãã瀟å
ç Ruby Rails ã¢ããã°ã¬ãŒ ã㬠ã€ãã瀟å€ã«å
¬éããŸãã 瀟å
çã®æ
å ±ãé»å¡ãããŠã¯ç€Ÿå
çãå
¬éããæå³ããããŸããããã®ãããæå€§é åæãã ã§ãéãããŸããåæãšããŠè¶³ããªãéšåã¯ãèšäºçšè£è¶³ããšè¿œèšããŠããŸãã 瀟å
ç Rails ã¢ããã°ã¬ãŒ ã㬠ã€ã ãã®ããã¥ã¡ã³ã㯠Rails ã¢ããã°ã¬ãŒãã®ããã«æ®æ®µããããããšãå®éã®ã¢ããã°ã¬ãŒãã®éã«ããããšããŸãšãããã®ã§ããåºæ¬çã«ã¯äžè¬ç㪠Rails ã¢ããã°ã¬ãŒ ã㬠ã€ããšåãã§ãããQAãã§ãã¯ã®å¿
èŠæ§ãªã©ç€Ÿå
ç¹æã®äºæ
ãèæ
®ãããŠããŸãã äžèšã®ããã¥ã¡ã³ã㯠Rails ã®ã¡ãžã£ãŒããŒãžã§ã³ã»ãã€ããŒããŒãžã§ã³ãäžããéã«æèãã¹ãããšã§ãããããããŒãžã§ã³ã¯æ®æ®µã®ã©ã€ãã©ãªã¢ããããŒãåæ§ã«äžããŠããã£ãŠæ§ããŸããã ð¥ MUST: å®å
šãªã¢ããã°ã¬ãŒãã®ããã«å¿
ã宿œããªããã°ãããŸããã ðš SHOULD: å¿
ã宿œããªããŠãããã§ããããã£ãŠããããšãæšå¥šããŸãã ð© MAY: è¡ããªããŠãã¢ããã°ã¬ãŒãã¯å®æœã§ããŸããé¢å¿ãããæ¹ã ãã§æ§ããŸããã 以äžã®äœæ¥ã¯åºæ¬çã«äžŠåãã€è€æ°äººã§å®æœå¯èœã§ãã 瀟å
ç Rails ã¢ããã°ã¬ãŒãã¬ã€ã æ®æ®µããããš Rails Edge ã®ãã£ããã¢ããïŒð©Â MAYïŒ Rails Edge èµ·å ã§å€±æããŠãããã¹ãã®ä¿®æ£ïŒðšÂ SHOULDïŒ Rails ãžã®ã³ã³ããªãã¥ãŒãïŒð©Â MAYïŒ ã¢ããã°ã¬ãŒãåã«ããããš ã¢ããã°ã¬ãŒãå
ã®CIãçšæããïŒðšÂ SHOULDïŒ RailsããŒãžã§ã³èµ·å ã§ã¹ãããããŠãããã¹ãããªããïŒð¥Â MUSTïŒ deprecation warning ããªããïŒðšÂ SHOULDïŒ rails app:update ã®å®è¡ïŒð¥Â MUSTïŒ Rails ã¢ããã°ã¬ãŒãã¬ã€ãã®ããŒãžã§ã³ã«å¯Ÿå¿ãã倿Žãèªãã§åé¡ãªãããšã確èªïŒð¥Â MUSTïŒ ãªãªãŒã¹åã®æåã§ã®åäœç¢ºèªïŒð¥Â MUSTïŒ ã¢ããã°ã¬ãŒãäœæ¥äžã«è¡ãããš ã¢ããã°ã¬ãŒãã®äºååšç¥ïŒð¥Â MUSTïŒ rollback çšã®ã³ãããããã·ã¥ãååŸããïŒð¥Â MUSTïŒ Revert PR ãäœæããïŒð©Â MAYïŒ åçš®ç£èŠãè¡ãïŒð¥Â MUSTïŒ ã¢ããã°ã¬ãŒãåŸã«ããããš new_framework_defaults_x_y.rbã®æå¹åïŒðšÂ SHOULDïŒ config.load_defaultsã®æŽæ°ïŒðšÂ SHOULDïŒ åè æ®æ®µããããš Rails Edge ã®ãã£ããã¢ããïŒð©Â MAYïŒ #guild_rails_edge ã«ã¯æ¯æ¥ rails / rails ã® main branch ã«ã©ããªå€æŽãããŒãžãããã®ããæµããŠããŸããããã§æ¬¡ã®ã¢ããããŒãã§ã©ããªå€æŽãå
¥ãã®ãããã§ãã¯ããŸããããæ¥é ãããã§ãã¯ããŠãããšã¢ããããŒãæã«æ
å ±ã®æ³¢ã«é£²ãŸãã«ãããªããŸãã ïŒèšäºçšè£è¶³ïŒããã§æµããŠããã®ã¯ y-yagi ããã®ããã°ã§ãïŒ y-yagi.hatenablog.com Rails Edge èµ·å ã§å€±æããŠãããã¹ãã®ä¿®æ£ïŒðšÂ SHOULDïŒ éåžžã® Rails ããŒãžã§ã³ã§ã¯åäœããã Rails Edge ã§åããªããã¹ã㯠pending: pending_if_rails_edge ãã€ã㊠pending ããŠãããŸãã grep ã㊠pending ããŠãããã¹ããèŠã€ããŠåé¡ãç¹å®ãä¿®æ£ããŸãããã ïŒèšäºçšè£è¶³ïŒã¿ã€ããŒã§ã¯ CI ã§ Rails Edge ã䜿ã£ããã¹ããå®è¡ããŠããŸãã詳ããã¯ä»¥äžïŒ tech.timee.co.jp Rails ãžã®ã³ã³ããªãã¥ãŒãïŒð©Â MAYïŒ ã Rails Edge èµ·å ã§å€±æããŠãããã¹ãã®ä¿®æ£ãã®å€§åã¯ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã«èµ·å ããåé¡ã§ããããšãå€ãã§ãããããŸã« Rails æ¬äœã®ãã°ã«ééããããšããããŸãããã®é㯠Rails ã«ãã°ã¬ããŒããä¿®æ£ PR ãéãããšãæšå¥šããŠããŸãã ãªãªãŒã¹æžã¿ã®ããŒãžã§ã³ã®ä»æ§ãå€ããã®ã¯é£ããã§ãããbetaãrcçã§ã¯issueãPRãéãããšã§ä»æ§ãå€ããããå¯èœæ§ããããŸããæå³ããªãç Žå£ç倿ŽãèŠãããå Žåã¯ç©æ¥µçã«ãããšãããŸãããã åè: Get started with OSS contributions - Speaker Deck ã¢ããã°ã¬ãŒãåã«ããããš ã¢ããã°ã¬ãŒãå
ã®CIãçšæããïŒðšÂ SHOULDïŒ ã¢ããã°ã¬ãŒããæ€èšããŠããé ã«ã¯æ¢ã«ã¢ããã°ã¬ãŒãå
ã®ããŒãžã§ã³ããªãªãŒã¹ãããŠããããã Rails Edge ã¯ãã®æ¬¡ã®ããŒãžã§ã³ã«ãªã£ãŠããããšãå€ãã§ãããã®ããã Rails Edge CI ã§ã¯ã¢ããã°ã¬ãŒãå
ã®ããŒãžã§ã³ã§ã®ãã¹ãã¯å®è¡ã§ããŸããã ã¢ããã°ã¬ãŒãå
ã® Rails ããŒãžã§ã³ã§ã® CI ãçšæããŸããããããããããšã§ãã¢ããã°ã¬ãŒãå
ããŒãžã§ã³ã§ã®ãã¹ããæ®æ®µããå®è¡ã§ããããã«ãªãã®ã§åé¡ãæ©æçºèŠã§ããŸãã åè ïŒããã« Rails 7.1 ã® CI ãçšæãã Pull Request URL ã貌ã£ãŠãããŸããïŒ Rails ããŒãžã§ã³èµ·å ã§ã¹ãããããŠãããã¹ãããªããïŒð¥Â MUSTïŒ Rails ããŒãžã§ã³èµ·å ã§ã¹ãããããŠãããã¹ãã¯ã¢ããã°ã¬ãŒãåŸã«åããªããªããã¹ãã§ãããã®ãã¹ããæŸçœ®ãããŸãŸã¢ããã°ã¬ãŒãã宿œãããšè©²åœæ©èœãåããªããªãã®ã§å¿
ãã¹ãããããŠãããã¹ãããªãããšã確èªããŸãããã ã Rails Edge èµ·å ã§å€±æããŠãããã¹ãã®ä¿®æ£ãã宿œããŠããã°ã¹ãããããŠãããã¹ãã¯ã»ãšãã©ãªããªã£ãŠããã¯ããªã®ã§ããã®ã¹ãããã®å¯Ÿå¿ã楜ã«ãªããŸãã åè ïŒããã« Rails ããŒãžã§ã³èµ·å ã§ã¹ãããããŠãããã¹ããä¿®æ£ããŠãã Pull Request URL ã貌ã£ãŠãããŸããïŒ deprecation warning ããªããïŒðšÂ SHOULDïŒ ã»ãšãã©ã®åé¡ã¯ã Rails ããŒãžã§ã³èµ·å ã§ã¹ãããããŠãããã¹ãããªãããã«ãã£ãŠè§£æ¶ãããŸããããã¹ãç°å¢ã§ã¯æããããªãåé¡ãååšããŸãããããã®åé¡ãæŽãåºãããã«ãã¿ã€ããŒã§ã¯æ¬çªç°å¢ã§çºçãã deprecation warning ããã°ãšããŠåºåããããã«ããŠããŸããåºåããããã°ã¯ Datadog Logs ã§ç¢ºèªã§ããŸãã ãŸãããã°ãåºåãããã㊠Datadog ã®ã³ã¹ããå§è¿«ããããšãé²ãããã«ãã°åºåã¯ç¢ºççãšããŠããŸããdeprecation warning ãæžã£ãŠãããåãããŠç¢ºçã100%ã«è¿ã¥ãæŒããªããã£ããã§ããããã«ããããšãæšå¥šããŸãã rails app:update ã®å®è¡ïŒð¥Â MUSTïŒ Rails ã§ã¯ app:update ãšããã³ãã³ããæäŸãããŠããŸãã Gemfile ã«èšèŒãããŠãã Rails ã®ããŒãžã§ã³ãæŽæ°åŸããã®ã³ãã³ããå®è¡ããããšã§ãæ°ããããŒãžã§ã³ã§ã®ãã¡ã€ã«äœæãæ¢åãã¡ã€ã«ã®å€æŽã察話圢åŒã§è¡ãããšãã§ããŸãã $ bin/rails app:update exist config conflict config/application.rb Overwrite /myapp/config/application.rb? (enter "h" for help) [Ynaqdh] force config/application.rb create config/initializers/new_framework_defaults_7_0.rb ... äºæããªãã£ã倿Žãçºçããå Žåã¯ãå¿
ãå·®åãååãã§ãã¯ããŠãã ããã https://railsguides.jp/upgrading_ruby_on_rails.html#ã¢ããããŒãã¿ã¹ã¯ ããã©ã«ãã«åãããŠããæ¹ãä»åŸã®ã¢ããã°ã¬ãŒããæ¥œã«ãªããããæ¢åã®æåããªãã¹ãå€åãããªãããã«æŽæ°åãåã蟌ã¿ãŸãããã 倿Žå·®åãç¥ãããå Žå㯠https://railsdiff.org/ ãã確èªã§ããŸãã Rails ã¢ããã°ã¬ãŒ ã㬠ã€ãã®ããŒãžã§ã³ã«å¯Ÿå¿ãã倿Žãèªãã§åé¡ãªãããšã確èªïŒð¥Â MUSTïŒ å
¬åŒã® Rails ã¢ããã°ã¬ãŒ ã㬠ã€ãã«ã¯ã¡ãžã£ãŒããŒãžã§ã³ã»ãã€ããŒããŒãžã§ã³ã®ã¢ããã°ã¬ãŒãã«å¯ŸããŠç Žå£ç倿Žãªã©äœããã®å¯Ÿå¿ãå¿
èŠãªå€æŽããŸãšãŸã£ãŠããŸãããããã確èªããŠåé¡ããªãããšã確èªããŠãã ãããæžå¿µãããå Žå㯠#prd_ch_ruby_on_rails ã§çžè«ãããªã©é©åãªå¯Ÿå¿ãè¡ãªã£ãŠãã ããã äŸïŒ7.0â7.1 Rails アップグレードガイド - Railsガイド åè ïŒããã«ç¢ºèªãããã°ããŸãšãã Notion ãªã³ã¯ããããŸããïŒ ãªãªãŒã¹åã®æåã§ã®åäœç¢ºèªïŒð¥Â MUSTïŒ ãªãªãŒã¹åã®æåã§ã®åäœç¢ºèªã¯å¿
é ã§ããã瀟å
åã管çç»é¢ã®æäœéã®çé確èªã®ã¿ã§åé¡ãããŸããã èæ¯: ïŒããã«æææ±ºå®ã®èšŒè·¡ãšã㊠MTG è°äºé²ãªã³ã¯ã貌ã£ãŠãããŸããïŒ ãŸãã瀟å
åã管çç»é¢ã«ãããŠãååãªãã¹ã ã«ãã¬ããž ãããã°åäœç¢ºèªãçç¥ããããšãã§ããŸãã瀟å
åã管çç»é¢ã®ãã¹ã ã«ãã¬ããž ãäžãããããžã§ã¯ãã«ã€ããŠã¯ïŒNotion URL ã貌ã£ãŠãããŸããïŒã確èªããŠãã ããã ïŒèšäºçšè£è¶³ïŒãããžã§ã¯ãã® Notion URL ãããTimee Advent Calendar 2023ã·ãªãŒãº1ã®5æ¥ç®èšäºã®æ¹ããã詳现ã«ãããžã§ã¯ãã®èª¬æãããŠããŸããèå³ãããã°ã芧ãã ãããïŒ tech.timee.co.jp ã¢ããã°ã¬ãŒãäœæ¥äžã«è¡ãããš ã¢ããã°ã¬ãŒãã®äºååšç¥ïŒð¥Â MUSTïŒ Rails ã¢ããã°ã¬ãŒãã®ãªãªãŒã¹çŽåŸã« rollback ãå°é£ãªå€æŽãè¡ããããš Rails ã¢ããã°ã¬ãŒãèµ·å ã§åé¡ãçºçããéã« rollback ãå°é£ã«ãªããåé¡ã®åŸ©æ§ãé
ããŸãããã®ãããã¢ããã°ã¬ãŒããäºåã«åšç¥ãã¢ããã°ã¬ãŒãåŸ30åéã¯ãããã€ïŒïŒããŒãžïŒãè¡ãªããªãããåŒã³ãããŠãã ããã rollback çšã®ã³ãããããã·ã¥ãååŸããïŒð¥Â MUSTïŒ åé¡ããã£ãéã®åŸ©æ§ãæ©ããããã« rollback ã§æ»ãå
ã®ã³ãããããã·ã¥ãçšæããŠãããŸãããã https://github.com/x/x/commits/master ãã確èªã§ããŸãã Revert PR ãäœæããïŒð©Â MAYïŒ åé¡ããã£ãéã®åŸ©æ§ãæ©ããããã« merge åŸããã« Revert PR ãäœæããŠããããšãæšå¥šããŸããå
ã« Revert PR ãäœã£ãŠããã° feature branch ã§ã® CI åŸ
ã¡ãã·ã§ãŒãã«ããããããšãã§ããŸãã åé¡ãçºçããã«ç¡äºãªãªãŒã¹ã§ããå Žåã¯ãã¡ããš PR ã close ããŠãããŸãããã åçš®ç£èŠãè¡ãïŒð¥Â MUSTïŒ ãªãªãŒã¹çŽåŸã¯åé¡ãæ©æçºèŠããããã«åçš®ã®ç£èŠãè¡ãªã£ãŠãã ããã15åæ§åãèŠãŠåé¡ãèŠã€ãããªããã°æ¥ãã§rollbackããå¿
èŠã¯ãããŸããã Sentry æ®æ®µèŠãããªããšã©ãŒãçºçããŠããªããã©ãã Datadog ããã·ã¥ ããŒã 倧ããªã¡ããªã¯ã¹ã®å€åããªããã©ãã APM ã¬ã€ãã³ã·ããšã©ãŒã¬ãŒãã«å€åããªãã ïŒèšäºçšè£è¶³ïŒSentry ã Datadog ãªã©åçš® URL ã貌ã£ãŠãããŸããããããã«åé€ãããŠããã ããŸããïŒ ã¢ããã°ã¬ãŒãåŸã«ããããš new_framework_defaults_x_y.rbã®æå¹åïŒðšÂ SHOULDïŒ Rails ãã¢ããã°ã¬ãŒãããã ãã§ã¯å€ãã®æ°ããæ©èœã¯æå¹åãããŠããŸããã rails app:update ã§äœæããã new_framework_defaults_x_x.rb ã® ã³ã¡ã³ãã¢ãŠã ã1ã€ãã€ç¢ºèªããŠããã©ã«ãã«åãããããããªãã®ã¯æå¹åãããã©ã«ãã«åãããæå³ãæã£ãŠããã©ã«ããšã¯ç°ãªãèšå®ãè¡ãå Žå㯠application.rb ã«èšå®ã远èšããŸãããã config.load_defaultsã®æŽæ°ïŒðšÂ SHOULDïŒ app:update ã¿ã¹ã¯ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ãæ°ããããã©ã«ãèšå®ã«1ã€ãã€ã¢ããã°ã¬ãŒãã§ããããã«ã config/initializers/new_framework_defaults_X.Y.rb ãã¡ã€ã«ãäœæãããŸãïŒãã¡ã€ã«åã«ã¯ Rails ã®ããŒãžã§ã³ãå«ãŸããŸãïŒããã®ãã¡ã€ã«å
ã®ã³ã¡ã³ããè§£é€ããŠãæ°ããããã©ã«ãèšå®ãæå¹ã«ããå¿
èŠããããŸãããã®äœæ¥ã¯ãæ°åã®ãããã€ã«åããŠæ®µéçã«å®è¡ã§ããŸããã¢ããªã±ãŒã·ã§ã³ãæ°ããããã©ã«ãèšå®ã§åãããæºåãæŽã£ããããã®ãã¡ã€ã«ãåé€ã㊠config.load_defaults ã®å€ãå転ã§ããŸãã https://railsguides.jp/upgrading_ruby_on_rails.html#ãã¬ãŒã ã¯ãŒã¯ã®ããã©ã«ããèšå®ãã åè railsguides.jp qiita.com ãããã§ãããïŒ ã¿ã€ããŒã¯äžèšã® Rails ã¢ããã°ã¬ãŒ ã㬠ã€ããçšã㊠Rails ã¢ããã°ã¬ãŒããè¡ãªã£ãŠããŸãããšã¯èšã£ããã®ã®ããã®ã¢ããã°ã¬ãŒ ã㬠ã€ã㯠Rails 7.1 ã¢ããã°ã¬ãŒãã§ãã£ãããšãäœç³»çã«ãŸãšãããã®ã§æ¬åœã«éçšããå§ããã®ã¯ Rails 7.2 ã¢ããã°ã¬ãŒãã®ã¿ã€ãã³ã°ã«ãªããŸãã Rails ã¢ããã°ã¬ãŒãã¯å±äººçãªã¿ã¹ã¯ã«ãªããã¡ã§ããç¹å®ã®äººç©ãã¢ããã°ã¬ãŒãã®çªäººã«ãªãã®ã§ã¯ãªãã誰ã§ãã¢ããã°ã¬ãŒãã«ãã£ã¬ã³ãžã§ããããã«ãããã£ãã®ãã¢ããã°ã¬ãŒ ã㬠ã€ããäœæããèæ¯ã«ãªããŸãã ãããã«ã¯è³ªã®é«ã Rails ã¢ããã°ã¬ãŒ ã㬠ã€ããããããååšããŸããã§ãããã©ã®ã¹ããããã©ããªæåŸ
å€ã§å®æœãããã»åäœç¢ºèªã¯ã©ããŸã§ãããã¯å瀟ã®ç¶æ³ã«äŸããšæããŸãã瀟å
ã®æé»å€ãæžããããã«ã瀟å
ç Rails ã¢ããã°ã¬ãŒ ã㬠ã€ããäœã£ãŠã¿ãŠã¯ãããã§ããããã
ããã«ã¡ã¯ïŒæ ªåŒäŒç€Ÿã¿ã€ããŒã§ãããã¯ããããŒãžã£ãŒãããŠããAndrewã§ãã ç§ã¯ãªãã·ã§ ã¢ã¡ã³ã㌠ãé¢äžããSquadã«æå±ããŠããŸãããã®Squadã¯ãšã³ãžãã¢çµç¹ã®äžã§ããŠããŒã¯ãªç°å¢ã§ãããããã§çŽé¢ããåé¡ãšãããä¹ãè¶ããããã®åãçµã¿ããã®èšäºã§ç޹ä»ããããšèããŠããŸãã ãªãã·ã§ ã¢ã¡ã³ã㌠ãšã®ã³ã©ãã¬ãŒã·ã§ã³ã®èª²é¡ çŽå幎åããªãã·ã§ ã¢ã¡ã³ã㌠ã®ããSquadãšé¢ããå§ãããã®Squadã®åã¡ã³ããŒãç¥ããã£ãããšãªããŸããã æåã¯ãæ¥æ¬ã¡ã³ããŒãšãªãã·ã§ ã¢ã¡ã³ã㌠ã®ã³ãã¥ãã±ãŒã·ã§ã³ãã¹ã ãŒãºã§ãªããšæããŸãããããŒãã£ã³ã°ã§ã¯éèš³æ
åœã®æ¹ä»¥å€ããªãã·ã§ ã¢ã¡ã³ã㌠å
šå¡ãã»ãšãã©çºèšããŸããã§ããã ãŸããããŒãã£ã³ã°ã§è©±ãããŠããå
容ã圌ããçè§£ã§ããèšèªã§èšé²ãããŠããªãã±ãŒã¹ãå€ããæ
å ±ã®éææ§ã«æ¬ ããŠããŸãããéçºããæ©èœã®ç®çãäœããçè§£ããªãå Žé¢ãèŠãããããšããããŸããã ããããããã¯åãªã課é¡ã§ã¯ãªããSquadå
šäœã®ããã³ã·ã£ã«ãåŒãåºãããã®ãã£ã³ã¹ã§ããããšèããŸããã ãšã³ãžãã¢ã¯æ©èœãäœãã ãã§ãªãããããã¯ãã«é¢å¿ãæã¡ã䟡å€ãå±ããããšã«æ³šåããã°ãããå€ãã®ã¢ã€ãã£ã¢ããœãªã¥ãŒã·ã§ã³ãçãŸããè¯ããããã¯ããäœããã®ã§ã¯ãªãããšããã®ããã«ã¯ããªãã·ã§ ã¢ã¡ã³ã㌠ãç©æ¥µçã«ãã£ã¹ã«ãã·ã§ã³ã«åå ã§ããããã«ããå¿
èŠããããŸããã æåã¯èšèªã®å£ããããšæãããããå¿é
ããããŸããããæ§ã
ãªæœçã詊ããŠã¿ãŸããããã®äžç°ãšããŠãããã¥ã¡ã³ãã®æŽçãšãªã³ã©ã€ã³èšèªäº€æµäŒã宿œããŠã¿ãŸããã æ
å ±éææ§ãåäžããããã®ããã¥ã¡ã³ã ãããã¥ã¡ã³ãã®ã¡ã³ããã³ã¹ãé¢åãããïŒãããã³ãŒããèªãæ¹ãæ©ãïŒããšæãæ¹ã¯å°ãªããªãã§ãããã ã³ãŒãã«ã³ã¡ã³ãããªããšããã®ã³ãŒããäœãããŠãããçè§£ããããšãé£ãããªããŸãããããšåæ§ã«ãããã¥ã¡ã³ãããªããšãã·ã¹ãã ãæ©èœã®å
šäœåãææ¡ããã®ã«æéãããããçæ³çãªç¶æ
ãšèšããŸããã ã³ãŒãã§èª¬æã§ããªãèæ¯ãèšèšã®æå³ãç¹å®ã®æ±ºå®ã®èåŸã«ããè«çãã³ã¡ã³ãã§èª¬æããããšã§ãã³ãŒããèªã人ãçè§£ãããããªããŸããããããã³ãŒãã®ã³ã¡ã³ãã§ãããããã説æã§ããå
容ã¯ããã¹ãããŒã¹ã®æ
å ±ã«éãããŠãããšããããšããããã³ãŒãã¯ç¹å®ã®ã¡ã³ããŒããã¢ã¯ã»ã¹ã§ããªããããããã§ããã¥ã¡ã³ãã匷åãªæ
å ±å
±æææ®µã«ãªããŸãã ããã¥ã¡ã³ãã«å¯Ÿãã工倫 ããã¥ã¡ã³ããæžããšãã«ããããããããããã«ããããªãã¯ããã¯ããããŸãã ããã¹ãã«è²ãã€ãããããã©ã³ããµã€ãºãå€ããããããŒãžã®äœçœã掻ããããšã§èŠèŠçãªã¡ãªããªãã€ããããšãéèŠã§ãã ããã«ãããè€éãªæ
å ±ãèªã¿ããããªããéèŠãªæ
å ±ã匷調ããããšãã§ããéã«åŒ·èª¿ããããªãæ
å ±ãç®ç«ããªãããããšãã§ããŸãããã¶ã€ã³ã奜ããªç§ã«ãšã£ãŠã¯ãããã¥ã¡ã³ãã¯è¯ããã¶ã€ã³ã衚çŸããããšã®ã§ããåªããããŒã«ã§ãã ããããããããã¥ã¡ã³ããæžãããšã¯ç°¡åã§ã¯ãããŸãããããããªããã¥ã¡ã³ãã®çš®é¡ã®äžã§ããšã³ãžãã¢åãã®ãã®ãããã°ã ã¹ããŒã¯ãã«ã㌠ïŒéãšã³ãžãã¢ïŒåãã®ãã®ãããã®ã§ãäŒããããã«èªã¿æã®ããã¯ã°ã©ãŠã³ããç¥èã«åãããŠæžãããšãå¿
èŠã§ãã é£ããåèªã§ã¯ãªãããããŠã·ã³ãã«ãªåèªãéžã³ãç©äºã説æããããšã§èšèªã®å£ããªãããã®ã§ãèªåã®èšèã®ç¥èãèŠãã³ãããå¿
èŠãªããŠãããŸããã ãã®ãããªæèããã£ãŠæžãã°ãããã¥ã¡ã³ããæžãããšã¯å調ãªäœæ¥ã§ã¯ãªããå®ã¯æ¥œããäœæ¥ãªãã§ãã ãã©ã³ã¹ããã¹ãŠ å£é ã§ã³ãã¥ãã±ãŒã·ã§ã³ãåãã¥ããç¶æ³ã§ã¯ãããã¥ã¡ã³ãã¯å°æŽéèŠã§ãã ããã¥ã¡ã³ããããããšã§ãã¡ã³ããŒã¯ãã€ã§ãæ
å ±ã«ã¢ã¯ã»ã¹ã§ãããã£ãŒãããã¯ãææ¡ããããããªããŸãããã ããããŸãã«ã詳现ãªå
容ãããšãã°ã³ãŒãå®è£
ã®ã¬ãã«ã®æ
å ±ãŸã§æžããŠããŸããšã现ããªã³ãŒãã®å€æŽãçãããã³ã«ããã¥ã¡ã³ããæŽæ°ããªããšãããªããªã£ãŠããŸããŸãã åæ§ã«ãããã¹ãã ãã®é·ãæç« ãæžããŠããŸããšãããã¥ã¡ã³ãã®æ©æµãåããããªããªãããããããããæãªãããéã«å¹æãèããŠããŸããŸããé©åºŠãªè©³çŽ°ãšæœè±¡åºŠã®ãã©ã³ã¹ãåãããšã倧åã§ãããããã¥ã¡ã³ãã管çã®æå©ããšãªãããå¿ãããå¿
èŠã§ãã æŽ»çšãããããã¥ã¡ã³ã å®éã«ãã®åãçµã¿ãå°å
¥ããŠãSquadã®æ¯ãè¿ãããŒãã£ã³ã°ã§ã ããã¥ã¡ã³ããŒã·ã§ã³ ãããåç
§ããããã«ãªã£ãŠãä»äºã«ãããŠåœ¹ç«ã£ãããããã¥ã¡ã³ããæŽçãããŠããŠããããããããšããã¡ã³ããŒããã®å£°ããããŸããã ä»åŸãããã¥ã¡ã³ããæžãã®ã¯ç§ã§ã¯ãªãããªãã·ã§ ã¢ã¡ã³ã㌠å
šå¡ãåããããªã±ã€ãããªãã£ãæããããã®ã§ã以äžã«æžãããã€ã³ãã圌ãã«æããŸããã ä»ã§ã¯ãªãã·ã§ ã¢ã¡ã³ã㌠å
šå¡ãããã¥ã¡ã³ããæžãããã«ãªãã ã¹ããŒã¯ãã«ã㌠ãã仿§ç¢ºèªã®åãåãããæ¥ãŠããããåçã§ããããã«ãªããŸãããããã«ããããããžã§ã¯ãå
šäœã®éææ§ãåäžããç¥èã®å
±æãã¹ã ãŒãºã«ãªããŸããã é·æçãªèŠç¹ã§èŠãã°ãããã¥ã¡ã³ãã¯Squadå
šäœã®ç¥èã®èç©ãšããŠæ©èœããã¡ã³ããŒãå¢ããŠãæ
å ±ã®å
±æã®è² æ
ã¯è»œæžãããŸãã ãªã³ã©ã€ã³èšèªäº€æµäŒ ããã¥ã¡ã³ãæŽçãé²ãäžãç§ãã¡ã¯Squadã¡ã³ããŒãããç©æ¥µçã«åå ããã¢ã€ãã£ã¢ãå
±æã§ããç°å¢ãæŽããããã«ããäžã€ã®åãçµã¿ãå§ããŸããããããããªã³ã©ã€ã³èšèªäº€æµäŒã§ãã ç¥ã£ãŠãã人ãšã³ãã¥ãã±ãŒã·ã§ã³ãåãããšã¯æ¥œã§ãããç¥ããªã人ãšãªããšçžæã®æå³ãã©ã®ãããªãã®ããããããªããããã¹ã³ãã¥ãã±ãŒã·ã§ã³ã®åå ã«ããªããŸããã§ããã ããªãã·ã§ ã¢ã¡ã³ã㌠ãšã®ã³ãã¥ãã±ãŒã·ã§ã³ãå¢ããããšã§ã圌ããããæ°è»œã«è©±ããããŠãããã ãããšæåŸ
ããŠããŸããããããæ¥æ¬èªãã§ãããè±èªã«ãèªä¿¡ããªãã¡ã³ããŒãšã©ã®ããã«ããã°äº€æµã§ããã®ãæ©ãã§ããŸãããããã§ããªã³ã©ã€ã³ã§èšèªäº€æµäŒã詊ããŠã¿ãŸããã ãªã³ã©ã€ã³ã§å®æœããããã¢ã€ã¹ãã¬ã€ã¯ ãããªãäœããè±èªã§è©±ããšèšãããŠãé£ããã§ãããã ããã§ã¢ã€ã¹ãã¬ã€ã¯ã²ãŒã ãå°å
¥ããããããèªåã§ãããã¯ãèããå¿
èŠããªããããã«ãžã¥ã¢ã«ã«è©±ããç°å¢ã«ããŸãããæåã¯ç°¡åãªãã®ããå§ããè±èªã§èªåã®ã«ãã³ã«å
¥ã£ãŠãããã®ã玹ä»ããããè¬è§£ãããããããŸããã ã«ãã³ã«å
¥ã£ãŠãããã®ã玹ä»ããäžã§ããåŒåœã®äžèº«ã ã£ãããæå€ãªãšã¢ã³ã³çšã®ãªã¢ã³ã³ã®è©±ãåºãŠããŠãäŒè©±ã匟ã¿ãŸãããè¬è§£ãããããšããããªãããŒãªè¬ãå€ããããã¡ã³ããŒãããããæ£è§£ãåçã§ããŠãä»ã®ã¡ã³ããŒãã ã«ã³ãã³ã° ããŠããã ãããšåè«ã§èšããããããŠããèŠãããããŸã ïŒç¬ïŒã ããã«ããããäºãã®è¶£å³ãèãæ¹ãç¥ãããšãã§ããã¡ã³ããŒå士ã®ã³ãã¥ãã±ãŒã·ã§ã³ãæ·±ãŸããŸããã äŒããããšã®åã³ ãªãã·ã§ ã¢ã¡ã³ã㌠ãšäŒè©±ãéããæåã¯è±èªã«å¯ŸããŠæ²èгçã§ãåãããšããªãã¡ã³ããŒãèªç¶ãšåãããã«ãªããŸããããã®èšäºãæžãéã«åœŒãã«ãã®çç±ãèããŠã¿ãŸããã ãè±èªã®çºé³ã¯äžæã§ãããçè§£ããŠããã人ãããã®ã§åæ°ãåºãããç§ã®è±èªã§åã£ãŠãç¬ãããŠããªãããAndrewããã®ä¿é²ã§äžæ©èžã¿åºãããšæãããã«ãªã£ãŠããã£ã¹ã«ãã·ã§ã³ã«é¢äžããéèŠæ§ãçè§£ã§ããããã«ãªã£ãããšããçŽ æµãªã³ã¡ã³ããããã ããŸããã ãããã®èšèãéããŠãååãåããªããæé·ããããã»ã¹ã«æè¬ããŠããŸãã ãã®ãªã³ã©ã€ã³èšèªäº€æµäŒã® ãã¡ã·ãªããŒã·ã§ã³ ã¯æåã¯ç§ãæ
åœããŠããŸããããçŸåšã¯ãªãã·ã§ ã¢ã¡ã³ã㌠ãç©æ¥µçã« ãã¡ã·ãªããŒã·ã§ã³ ããããšããããŸããä»ã§ã¯æ¯åã¢ã€ã¹ãã¬ã€ã¯ã²ãŒã ã ãã§ãªããåçŽã«è±èªã§éè«ããããšãã§ããç°å¢ã«ãªããŸããã ãŸãããã®äŒã®ååã®éããè±èªã«éãããæè¿ç§ã圌ãããèšèªãåŠã¶æ©äŒãåŸãŸããã Squadã®æé·ãšä»åŸ ãŸã å®ç§ãªç¶æ
ã«ã¯éããŠããŸããããSquadå
šäœãã©ãã©ãæé·ããŠãã宿ããããŸãããªãã·ã§ ã¢ã¡ã³ã㌠ãç©æ¥µçã«ã³ãã¥ãã±ãŒã·ã§ã³ã«åå ããèªãæèŠãèšãããã«ãªã£ãããšã¯ã倧ããªé²æ©ãšèšããŸãã ç°ãªãæåãããã¯ã°ã©ãŠã³ãã®äººãšä»äºããããšã¯ãããŒã ãçµæãããŸã§ã«ã¯æéãããããŸãããçµæãã§ããéã«ã¯ç°ãªãèŠç¹ããç©äºã倿ã§ããããã«ããã¡ãªããã倧ããã§ãã ç§ã®éå»ã®çµéšã§ã¯ãããŸããŸãªããã¯ã°ã©ãŠã³ããæã€äººã
ãéãŸãã°ãã¯ãªãšã€ãã£ããªã¢ã€ãã£ã¢ãçãŸãããããªããŸãããã®ããããã®ãããªå€æ§æ§ã倧åã«ããŠããããã§ãã æåŸã«ãä»åŸãSquadå
šäœã§ååããããè¯ããããã¯ããçã¿åºãããã«åªåããŠãããããšæããŸãã
ãã¡ã㯠Timee Advent Calendar 2023 ã·ãªãŒãº1ã®19æ¥ç®ã®èšäºã§ãã ã¯ããã« ããã«ã¡ã¯ãã¿ã€ããŒã§ Android ãšã³ãžãã¢ãããŠããsyam( @arus4869 )ã§ãã ãã®èšäºã§ã¯ãã¿ã€ããŒã§å®éã«å©çšããŠããBitriseãšFirebase App Distributionãçšãã Android ã¢ããªã®é
åžæ¹æ³ãå®äŸã亀ããªãã玹ä»ããŠããããšæããŸãã ãã®èšäºãéããŠãåããããªããŒã«ãå©çšããŠããä»ã®éçºè
ã®çããã«ãšã£ãŠãåèã«ãªãæ
å ±ãæäŸã§ããã°ãšæããŸãã BitriseãšFirebase App Distributionã«ã€ã㊠Bitriseã¯ãã¢ãã€ã«ã¢ããªã®CI/CDããã»ã¹ãèªååãããã©ãããã©ãŒã ã§ãããã«ããããããã€ãŸã§ãç°¡åã«ç®¡çã§ããéçºãµã€ã¯ã«ãå¹çåããŸãã Firebase App Distributionã¯ãã¢ããªã®ããŒã¿çããã¹ãçããã¹ã¿ãŒã«è¿
éã«é
åžããããã®ããŒã«ã§ããæ°ãããã«ãããã¹ã¿ãŒã«å±ãããã£ãŒãããã¯åéãå¯èœã§ãã ãããã®ããŒã«ãçµã¿åãããããšã§ã ã¢ããªéçº ã®æµããã¹ã ãŒãºã«ããŠãããŸãã äºåæºå BitriseãšFirebase App Distributionã䜿çšããåã«ãããã€ãã®äºåæºåãå¿
èŠã§ãã ãŸããBitriseãšFirebaseããã㊠Google Cloud PlatformïŒ GCP ïŒã®ã¢ã«ãŠã³ããæºåããŸãã ããããã®ããŒã«ãå©çšããã«ã¯é©åãªã¢ã¯ã»ã¹æš©ãšèšå®ãå¿
èŠã§ããäºåã«æºåããŸãããã 詳现ãªã¢ã«ãŠã³ãäœææ¹æ³ã«ã€ããŠã¯ãããããã®å
¬åŒãåç
§ããŠãã ããã åç
§URL Bitrise Firebase Google Cloud PlatformïŒGCPïŒ æ¬¡ã¯å
·äœçãªæé ãžé²ããŠãããŸãã æé 1: Firebase App Distributionã®ã°ã«ãŒããšãã¹ã¿ãŒã®èšå® Firebase App Distributionã䜿çšããŠã¢ããªãå¹ççã«é
åžããããã«ã¯ãé©åãªã°ã«ãŒããšãã¹ã¿ãŒã®èšå®ãå¿
èŠã§ãã 以äžã®ã¹ãããã«åŸã£ãŠèšå®ãè¡ããŸãããã Firebaseãããžã§ã¯ãã«ã¢ã¯ã»ã¹ Firebaseã³ã³ãœãŒã«ã«ãã°ã€ã³ãã察象ã®ãããžã§ã¯ããéžæããŸãã ãã¹ã¿ãŒã°ã«ãŒãã®äœæ ãApp Distributionãã»ã¯ã·ã§ã³ã«ç§»åããããã¹ã¿ãŒãšã°ã«ãŒããã¿ããéžæããŸãã ãæ°ããã°ã«ãŒããäœæããã¯ãªãã¯ããã°ã«ãŒãåïŒäŸïŒproduct_teamïŒãå
¥åããŸãã ãã¹ã¿ãŒã®è¿œå æ°ããã°ã«ãŒããéžæããããã¹ã¿ãŒã远å ããã¯ãªãã¯ããŸãã ãã¹ã¿ãŒã®ã¡ãŒã«ã¢ãã¬ã¹ãå
¥åããã°ã«ãŒãã«è¿œå ããŸãã ãã¹ã¿ãŒã¯éçºçšãšæ¬çªçšã®ã¢ããªã«åããŠã°ã«ãŒãåãããšç®¡çããããããªããŸãã ãã®æé ã«ãããç¹å®ã®ãã¹ã¿ãŒã°ã«ãŒãã«å¯ŸããŠãã¢ããªã®ãã¹ããã«ããç°¡åã«é
åžã§ããããã«ãªããŸãã ã°ã«ãŒããšãã¹ã¿ãŒã®èšå®ãå®äºããããæ¬¡ã«Firebaseã®èªèšŒçšãµãŒãã¹ã¢ã«ãŠã³ãã®äœæãããŠãããŸãã æé 2: Firebaseã®èªèšŒçšãµãŒãã¹ã¢ã«ãŠã³ãã®äœæ Firebase App Distributionã§ã¢ããªãé
åžããããã«ã¯ãFirebaseã®èªèšŒçšã®ãµãŒãã¹ã¢ã«ãŠã³ããèšå®ããå¿
èŠããããŸãããã®æé ã§ã¯ããã®èšå®æ¹æ³ã説æããŸãã Google Cloud PlatformïŒ GCP ïŒã§ãµãŒãã¹ã¢ã«ãŠã³ããäœæ GCP ã® ããã·ã¥ ããŒãã«ã¢ã¯ã»ã¹ããããµãŒãã¹ã¢ã«ãŠã³ããããŒãžãéããŸãã ããµãŒãã¹ã¢ã«ãŠã³ããäœæããéžæããã¢ã«ãŠã³ãã®è©³çްãå
¥åããŸãã å¿
èŠãªããŒã«ãå²ãåœãŠ ãµãŒãã¹ã¢ã«ãŠã³ãã«ä»¥äžã®ããŒã«ãå²ãåœãŠãŸãïŒ Firebase å質管çè
Firebase App Distribution Admin SDK ãµãŒãã¹ ãšãŒãžã§ã³ã ãããã®ããŒã«ã«ãããã¢ã«ãŠã³ãã¯Firebase App Distributionã§ã®ã¢ããªé
åžã«å¿
èŠãªæš©éãæã€ããšã«ãªããŸãã ç§å¯éµ ã®çæãšä¿å ãµãŒãã¹ã¢ã«ãŠã³ãã«å¯ŸããŠæ°ãã ç§å¯éµ ãçæããŸãã çæããã ç§å¯éµ ãå®å
šãªå Žæã«ä¿åããåŸã®Bitriseã®èšå®ã§äœ¿çšããŸãã æ¬¡ã¯ããã®ãµãŒãã¹ã¢ã«ãŠã³ãã䜿çšããŠãBitriseã§ã®ãããžã§ã¯ãèšå®ãè¡ããŸãã æé 3: Bitriseã®èšå® 次ã¯ãBitriseããFirebase App DistributionãéããŠã¢ããªãé
åžããããã«ã¯ãBitriseäžã§ã®é©åãªèšå®ãå¿
èŠã§ãã以äžã®ã¹ãããã«åŸã£ãŠãBitriseã§ã®èšå®ãè¡ããŸãããã Bitriseãããžã§ã¯ãã®ã»ããã¢ãã : Bitriseã«ãã°ã€ã³ããæ°ãããããžã§ã¯ããäœæãŸãã¯æ¢åã®ãããžã§ã¯ããéžæããŸãã ãããžã§ã¯ãã®ãã«ãèšå®ã確èªããå¿
èŠã«å¿ããŠèª¿æŽããŸãã Firebase App Distributionã¹ãããã®è¿œå : ãããžã§ã¯ãã®ã¯ãŒã¯ãããŒãç·šéããã[BETA] Firebase App Distributionãã¹ãããã远å ããŸãã ãã®ã¹ãããã«ããããã«ããæåãããšèªåçã«Firebase App DistributionãéããŠã¢ããªãé
åžãããŸãã èªèšŒæ
å ±ã®èšå® : GCP ã§çæãããµãŒãã¹ã¢ã«ãŠã³ãã® ç§å¯éµ ãBitriseã®ãCode Signing & Filesãã¿ãã«ãããGENERIC FILE STORAGE ã ã»ã¯ã·ã§ã³ã«ã¢ããããŒãããŸãã ã[BETA] Firebase App Distributionãã¹ãããã®èšå®ã§ãService Credentials Fileã®é
ç®ã«ãGENERIC FILE STORAGEãã»ã¯ã·ã§ã³ã«ã¢ããããŒããããµãŒãã¹ã¢ã«ãŠã³ãã® ç§å¯éµ ã®ãã¹ãèšå®ããŸãã ãããã®ã¹ãããã«ãããBitriseã¯Firebase App Distributionãšé£æºããã¢ããªã®ãã«ããšé
åžãèªååã§ããããã«ãªããŸããèšå®ãå®äºããã°ãBitriseããFirebase App DistributionãéããŠã¢ããªããã¹ã¿ãŒã«é
åžããæºåãæŽããŸãã åèçšåºŠã«ã[BETA] Firebase App Distributionãã«èšå®ããŠããé
ç®ãèšèŒããŸãã é
ç® èª¬æ äŸ Service Credentials File Bitriseã®ã¢ããããŒããã ç§å¯éµ ã®ãã¹ $BITRISEIO_development_service_account_key_URL App Path APKåã³AABãã¡ã€ã«ãæ ŒçŽãããŠãããã¹ $BITRISE_APK_PATH Firebase App ID Firebaseã³ã³ãœãŒã«ã®ãããžã§ã¯ãã®èšå®ããèŠããã¢ã㪠ID 1:1234567890: android :0a1b2c3d4e5f67890 Release Notes ãã¹ã¿ãŒãèŠããªãªãŒã¹ããŒã ã¡ã€ã³ãã©ã³ãã«ããŒãžããããã«ãã§ãã Test Groups æé 1ã§èšå®ãããã¹ã¿ãŒã°ã«ãŒã product_team ãŸãšã ãã®èšäºã§ã¯ãBitriseãšFirebase App DistributionãæŽ»çšã㊠Android ã¢ããªãé
åžããããã®æé ã玹ä»ããŸããã以äžã¯ããã€ã³ãã®ãŸãšãã§ãã äºåæºåãéµ ïŒBitriseãšFirebaseã GCP ã®ã¢ã«ãŠã³ãèšå®ããå§ããå¿
èŠãªããŒã«ãšæ
å ±ã確èªããããšãéèŠã§ãã Firebase App Distributionã®èšå® ïŒé©åãªãã¹ã¿ãŒã°ã«ãŒããšãã¹ã¿ãŒã®èšå®ãè¡ããã¢ããªã®ãã¹ãçãç°¡åã«é
åžã§ããç°å¢ãäœããŸãã Bitriseã®èªååèšå® ïŒãã«ãããã»ã¹ãBitriseã§èªååããFirebase App DistributionãéããŠã¢ããªãé
åžããèšå®ãè¡ããŸãã ãã®ããã»ã¹ãéããŠããã¹ãã¢ããªã®é
åžãå¯èœãšãªããŸããããšã¯ãã¹ãã¢ããªãã©ã®ããã«äœ¿ã£ãŠããããããéçºè
以å€ã®ã¡ã³ããŒã«ããã£ãŒãããã¯ãããããããã«ããã¥ã¡ã³ãåããããšããå§ãããŸããæ¬èšäºããã¿ãªããŸã®éçºã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
ããã«ã¡ã¯ãããŒã¿çµ±æ¬éšBIã°ã«ãŒãæå±ã®takahideã§ãã æ¬èšäºã§ã¯ãBIã°ã«ãŒãã§åãçµãã§ããå
šç€ŸçãªããŒã¿æŽ»çšã«é¢ããŠã玹ä»ããŸãã ãã®èšäºãéããŠãå°ãã§ãã瀟å
ã®ããŒã¿æŽ»çšãé²ãããããšæã£ãŠããæ¹ã®ã圹ã«ç«ãŠãã幞ãã§ãã â» Timee Advent Calendar2023 ã®12æ18æ¥åã®èšäºã§ãã èª²é¡æ ããŒã¿æŽ»çšã«åœ¹ç«ã€ã¹ãã« è¬ç¿äŒã®éå¬ å°äººæ°ã®çžè«äŒ ããŒã¿æŽ»çšã¹ãã«ã®ææšå ãããã« Weâre Hiring! èª²é¡æ ãŸãã¯ãããŒã¿æŽ»çšãé²ããã«è³ã£ãçµç·¯ãç°¡åã«èª¬æãããŠãã ããã ã¿ã€ããŒã¯ãããŒã¿ãçšããæææ±ºå®ã倧åã«ããŠããã®ã§ããã è¿å¹Žã®çµç¹æ¡å€§ã«ãšããªããããŒã¿æŽ»çšãå
šç€Ÿçã«æšé²ããããŒãºãé«ãŸã£ãŠããŸããã äžæ¹ã§ãããŒã¿ãå©çšããã¡ã³ããŒã®ã¹ãã«ãšããŒãºãšã®éã«ä¹é¢ãååšããŠããããšãåãã£ãŠããŸããã ããã§ãããŒã¿æŽ»çšãå
šç€Ÿçã«æšé²ããPJTããBIã°ã«ãŒãäžå¿ã«ç«ã¡äžããããšã«ãªããŸããã ããŒã¿æŽ»çšã«åœ¹ç«ã€ã¹ãã« ããŒã¿æŽ»çšãšãã£ãŠã人ã«ãã£ãŠè§£éãç°ãªãããã ããŒã¿ã¢ããªã¹ããæ¥ã
ã®æ¥åã§çšããŠããã¹ãã«ã®èšèªåããå§ããŸããã æ©æ¢°åŠç¿ãããã°ã©ãã³ã°ãšãã£ãäžéšã®è·çš®ã§äœ¿ãããã¹ãã«ã¯é€å€ããŠã ã©ã®è·çš®ã®æ¹ã§ã圹ã«ç«ã€æ±çšçãªã¹ãã«ãéžæããŠããŸãã ã課é¡ã®çºèŠâ課é¡ã®è§£å床ã®åäžâæ€èšŒã«å¿
èŠãªããŒã¿ã®è§£éâçµæã®ãŸãšãããšãã£ãæµããæèããŠããŸãã è¬ç¿äŒã®éå¬ ã¹ãã«ã®æŽçãã§ããã®ã§ã次ã«ã¹ãã«ã®æçŸ©ãäœ¿ãæ¹ãäŒããè¬ç¿äŒãè¡ãããšã«ããŸããã ããŒã¿ã®äŸ¡å€ã宿ããŠãããããšãåªå
ããŠãããŒã¿æœåºãã®è¬ç¿äŒã宿œããŠã 顧客ã®è¡åãæ°å€ã§èŠãäœéšãããŠããããŸããã å
·äœçã«ã¯ãç°¡æã«ããŒã¿ãæ±ããããŒã«ãšããŠLookerã®è¬ç¿äŒãéå¬ããŸããã è¬ç¿äŒãããã«ã±ã«Lookerã®å©çšè
ãå¢ããããŒã¿ãèŠãç¿æ
£ãäœããããšèããŠããŸãã æåã¯ã詊ãã§å§ããè¬ç¿äŒããçŸåšã¯æ¯æå®æœããŠããŠãæ°å
¥ç€Ÿå¡ã®æ¹ãããŒã¿ã«è§Šããæ©äŒãäœã£ãŠããŸãã (詳现㯠ãã¡ãã®ããã° ãã芧ãã ãã) 次ã«è¡ã£ãã®ããè«ççæèããããŒã¿æ§é ã®çè§£ããããŒã¿ã®è§£éãšå¯èŠåãã®è¬ç¿äŒã§ãã ãããã¯ããŒã¿æœåºã®ååŸã«çšããããšãå€ãããããŒã¿æœåºãã®åŸã«å®æœããããšã§çè§£ãæ·±ãŸããšèããŸããã äžèšã®ããã«ãFirst StepâSecond Stepãšæ®µéãèžãã§é²ããŠããŸããã å°äººæ°ã®çžè«äŒ ããã§ãè¬ç¿äŒãéããŠèŠããŠãã課é¡ãšãã®å¯Ÿå¿ããäŒãã§ããããšæããŸãã 課é¡ãšããŠåãã£ãããšã¯å€§ããäºã€ã§ã ãè¬ç¿äŒã®é£æåºŠããšã質çå¿çã®ãã¥ãããã«ãªããŸãã ãè¬ç¿äŒã®é£æåºŠãã§ããã è¬ç¿äŒã§ã¯å¿
èŠæäœéã®å
容ãã³ã³ãã³ãã«çã蟌ãã§ãããã®ã®ã åå è
ã®ç¿ç床ã®éããåžåããããŠããŸããã§ããã ãŸããã質çå¿çã®ãã¥ãããã§ããã è¬ç¿äŒã®åå 人æ°ã50~100人ã«ãªãããã質åãã¥ããé°å²æ°ããããŸããã ç¹ã«ãã©ã®ã¬ãã«ã®è³ªåãããŠè¯ãããåããã¥ãããšãã声ãæãããŸããã ããããèžãŸããŠãå°äººæ°ã®çžè«äŒãé²ããããšããŠããŸãã ããŒããçµã£ãæ°äººãåæ°äººã®äŒã«ããããšã§ã掻çºãªæèŠãåºãããšãæåŸ
ããŠããŸãã å
šç€Ÿåãã®è¬ç¿äŒã宿éå¬ãã€ã€ãè£å®çã«çžè«äŒã宿œããããšã§ã è¬ç¿äŒã®å
容ã®å
å®ã«ãç¹ãããšèããŠããŸãã ããŒã¿æŽ»çšã¹ãã«ã®ææšå æåŸã«ãããŒã¿æŽ»çšã®æž¬å®ã«é¢ããŠã話ãã§ããããšæããŸãã å
šç€Ÿã®ããŒã¿æŽ»çšãæšé²ããäžã§ãããŒã¿æŽ»çšã¹ãã«ã®ç¿çåºŠã®ææ¡ãéèŠã«ãªããŸãã ã¿ã€ããŒå
šäœã§ããŒã¿æŽ»çšãã©ã®çšåºŠé²ãã§ããããåããããšã§ã ããŒã¿æŽ»çšã®PDCAãåãããããªããã¹ãã«ç¿åŸã®ã¢ãããŒã·ã§ã³ã«ãç¹ãããšèããŸãã ãããã« ãã®èšäºã§ã¯ãBIã°ã«ãŒãã宿œããŠãããããŒã¿æŽ»çšã®åãçµã¿ã玹ä»ããŸããã æ¹ããŠã瀟å
ã®ããŒã¿æŽ»çšãé²ãããããšæã£ãŠããæ¹ã®ã圹ã«å°ãã§ãè²¢ç®ã§ããŠãããå¬ããã§ãã ä»åã¯å
šäœã®ç޹ä»ã§ãåå¥ã®è©³çްã¯ãäŒãã§ããŠããªãã£ãã®ã§ã ãã¡ããæ©äŒããããŸãããã話ãã§ããããšæããŸãã Weâre Hiring! ã¿ã€ããŒã®ããŒã¿çµ±æ¬éšã§ã¯ããšãã«åãã¡ã³ããŒãåéããŠããŸãïŒïŒ product-recruit.timee.co.jp