ããã«ã¡ã¯ïŒ LIFULLãšã³ãžãã¢ã®åæ°žã§ãã æ®æ®µã¯LIFULL HOME'Sã®toCåãã®CRMããŒã ã«ãŠãšã³ãžãã¢ãªã³ã°ãããŒãžã£ããã£ãŠããŸãã æ¬æ¥ã¯ã¯ãªãŒã³ã¢ãŒããã¯ãã£ã§æ§ç¯ãããããã¯ããåçãªãªãŒã¹ãã2幎çµéããçŸåšãã©ããªã£ãŠãããïŒã«ã€ããŠç޹ä»ããããšæããŸãã ããããæ°èŠãããã¯ãã«ã¯ãªãŒã³ã¢ãŒããã¯ãã£ãæ¡çšããããšããŠããæ¹ã
ã®åèã«ãªãã°å¹žãã§ãã ã¢ãžã§ã³ã ã¯ãªãŒã³ã¢ãŒããã¯ãã£ã§æ§ç¯ãããããã¯ãã®æŠèŠ ã¯ãªãŒã³ã¢ãŒããã¯ãã£ãæ¡çšããŠåŸãããã¡ãªããããã¡ãªããã«ã€ã㊠2幎çµéããŠã¿ãŠä»ã©ããªã®ïŒ ãŸãšã ã¯ãªãŒã³ã¢ãŒããã¯ãã£ã§æ§ç¯ãããããã¯ãã®æŠèŠ ä»åã®ããã°ã§ç޹ä»ããæã
ã®ãããã¯ãã§ããããªã ããã£ãã«æŠç¥ãæšé²ããçºã®åçš®æ©èœãæäŸããAPIãµãŒããŒãšãªããäžèšã®ãããªæ©èœãæã£ãŠããŸãã LINE/Mailã§ãã®æ¥ã®æ°çç©ä»¶æ
å ±ããŠãŒã¶ãŒãåžæããæ€çŽ¢æ¡ä»¶ã«å¿ããŠéç¥ããæ©èœ LINE/Mailã§ãŠãŒã¶ãŒãååããç©ä»¶ã«è¿ãæ¡ä»¶ã®ç©ä»¶ãã¬ã³ã¡ã³ãããæ©èœ LINEå
¬åŒã¢ã«ãŠã³ãã§ãŠãŒã¶ãŒãšããŒã¯ã«ãŒã ã§ã€ã³ã¿ã©ã¯ãã£ããªãããšããè¡ããã·ããªãªé
ä¿¡ãã¬ã³ã¡ã³ãç©ä»¶é
ä¿¡ãè¡ãæ©èœ åçš®ãµãŒãã¹ãšSalesforce瀟ã®Service CloudãMarketing Cloudãšã®APIéä¿¡ã仲ä»ããæ©èœ èšèªã¯Goãæ¡çš ãããã®æ©èœãæ§æããã«ãããã¯ãªãŒã³ã¢ãŒããã¯ãã£ãæ¡çšããŠãããæåãªäžèšã®å³ã«ãªãã£ã圢ã§åã¬ã€ã€ãŒãæ§æããŠããŸãã åºå
žïŒThe Clean Code Blog https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html ãªãããã®ãããã¯ãã«ã¯ãªãŒã³ã¢ãŒããã¯ãã£ãæ¡çšããåœæã¯ããŒã å
ã§ã¯ãªãŒã³ã¢ãŒããã¯ãã£åã³Goã®å®è£
ãçµéšããã¡ã³ããŒã¯ããããæžç±ãWebã瀟å
ã§å
è¡æ¡çšãããŠãããããã¯ãã®å®è£
ãåèã«èŠæ§èŠç䌌ã§å®è£
ããŸããã éçºåæã¯å®è£
ãã¬ãã¥ãŒããã£ããã¢ããã«æéãããã£ãŠãããæ°ããèšèªãæ°ããã¢ãŒããã¯ãã£ã«ããå®è£
ã§éåžžã«èŠåŽããããšãèŠããŠããŸãã ã¯ãªãŒã³ã¢ãŒããã¯ãã£ãæ¡çšããŠåŸãããã¡ãªããããã¡ãªããã«ã€ã㊠ã©ããªã¢ãŒããã¯ãã£ã«ãã¡ãªããã»ãã¡ãªããã¯ãããŸãããã¯ãªãŒã³ã¢ãŒããã¯ãã£ã«ãããŠãåæ§ã§ãå®éã«æ¡çšããŠã¿ãŠå人çã«æããããšã玹ä»ããŸãã ã¡ãªãã åã¬ã€ã€ãŒã®è²¬åãã¢ãŒããã¯ãã£ã§ç€ºããŠãããŠããã®ãšãåã¬ã€ã€ãŒã¯ã€ã³ã¿ãŒãã§ãŒã¹ã«äŸåããããã«èšèšããã®ã§èªããšåã¬ã€ã€ãŒãççµåã«ãªãããŠããããã¹ããè¡ããããã ãŠããããã¹ããè¡ããããã®ã§ããã¹ãã³ãŒããå®è£
ããã®ãããŸãé¢åã«ãªãããçµæçã«å€æŽã«å¯Ÿããåè³ªã®æ
ä¿ãããããçºãå®å¿ããŠå€æŽã§ããã ã¬ã€ã€ãŒéã®ç¬ç«æ§ãé«ãã®ã§ãã€ã³ã¿ãã§ãŒã¹ããèšèšããŠããŸãã°ãåã¬ã€ã€ãŒã®å®è£
ãå¥ã
ã®æ
åœã§äžŠè¡ã«äœæ¥ãé²ããããã ã¯ã©ã¹èšèšã«è¿·ã£ããšãã«ã¯ãªãŒã³ã¢ãŒããã¯ãã£ãšããæéãããã®ã§ãããŒã å
ã§ã®è°è«ãããŸãæ£ãã°ããåæããããã æéã¯ç€ºããŠãããŠããããããšèšã£ãŠã¬ãã¬ãã«åºãŸã£ãŠããã¢ãŒããã¯ãã£ã§ã¯ãªãã®ã§ãããçšåºŠã¯èªåãã¡ã®éçºã«ç¹åããŠãã圢ã«å®è£
ããŠããŸã£ãŠãã倧æ ã®ã¬ã€ã€ãŒæ§æãäŸåã«ãŒã«ããå®ããŠããã°æ¡åŒµæ§ãšä¿å®æ§ãé«ãä¿ã€ããšãã§ããã ã¬ã€ã€ãŒãççµåã«ãªãããšã§ãåã¬ã€ã€ãŒã®å®è£
ã®ã·ã³ãã«ããä¿ãããã®ã§ããœãŒã¹ã¬ãã¥ãŒããããã ãã¡ãªãã å°ããªæ©èœè¿œå ã§ãã¢ãŒããã¯ãã£å
ã®ç»å Žäººç©ãå€ãã®ã§ãã¯ã©ã¹æ°ãå¢ããç
©éã«ãªããããã åºæ¬çã«ã€ã³ã¿ãŒãã§ãŒã¹ã«äŸåããã®ã§ãIDEã§ã¡ãœããã®ãå®çŸ©ãžç§»åãããéã«ããããŠãã®IDEã§ã¯å®çŸ©ã ãšã€ã³ã¿ãã§ãŒã¹ã«é£ãã§ããŸããã¡ãœããã®å®æ
ãžé£ã¶ã«ã¯ãå®è£
ãžç§»åããããéžæããå¿
èŠãããã®ã§ãã³ãŒãå
ã®ç§»åã«å°ãã ãã¹ãã¬ã¹ãæããããšããããâ»ããã¯ããªãã®IDEç°å¢ã®åé¡ã§ããããšãããæèŠãããããã§ãã ãšã³ãã£ãã£ã¬ã€ã€ãŒã¯ãããžãã¹ã«ãŒã«ãã«ãã»ã«åããã¡ãœããã®ãããªããžã§ã¯ããããŒã¿æ§é ãšé¢æ°ã®éåããå®è£
ããã¬ã€ã€ãŒãªã®ã§ãDBã®1ã¬ã³ãŒãåã®ããŒã¿ããããã³ã°ããã ãã§ãã¢ã¯ã»ããµãŒä»¥å€ã®ã¡ãœãããæããªãåçŽãªãªããžã§ã¯ããšè€éãªããžãã¹ããžãã¯ãå®è£
ãããªããžã§ã¯ããæ··åšããããšããããé©åã«ããã±ãŒãžãªã©ã§åããªããšç
©éã«ãªããããã 2幎çµéããŠã¿ãŠä»ã©ããªã®ïŒ ã¹ãããæ° åçãªãªãŒã¹åŸãæ§ã
ãªæ©èœã远å ããŠãã£ãã®ã§ããªããžããªå
ã®ã¹ãããæ°ã¯2幎éã§çŽ3åã«ãªããŸããã ãã¹ãã«ãã¬ããž åçãªãªãŒã¹æã¯èªåãã¹ãã³ãŒãã®ã«ãã¬ããžã¯80%çšåºŠã§ããããåçãªãªãŒã¹åŸ3ã¶æã»ã©ãããŠ98%ãŸã§äžæããããã®åŸçŸåšã«è³ããŸã§ãã®æ°Žæºãç¶æããŠããŸãã ããã¯ãæ°èŠè¿œå ãã¡ã€ã«ã®ãã¹ãã³ãŒãããªãã¹ãã«ãã¬ããžã¯100%ãç®æãããšããæ¹éã§éçºãé²ããŠããã®ã§ãããŒã ã®çã§æèããŠåãçµãã§ããçµæãç¶æã§ããŠãããšæããŸãã ã¬ãã¥ãŒ æ°ãããšã³ããã€ã³ããå®è£
ããéã¯ãŸãã¯ã©ã¹å³ãã¯ãªãŒã³ã¢ãŒããã¯ãã£ã®åã¬ã€ã€ãŒå³ã«ããŠã¯ããŠäœæããåã¬ã€ã€ãŒéã®ã€ã³ã¿ãã§ãŒã¹ä»æ§ãšè¿œå ã»å€æŽããã¯ã©ã¹ãèšèšã¬ãã¥ãŒããŠããŸãã ãã®æç¹ã§å€§æ ã®èšèšãåºããŠããã以éã®å®è£
ãã§ãŒãºã§ã¯åºæ¬çã«ã©ã®ã¬ã€ã€ãŒããå®è£
ããŠãè¯ãããã«ãªã£ãŠããçºãå®è£
è
ãæãä»ããããåæããå®è£
ããããšãåºæ¥ãŠããŸãã ã¡ãªããã§ããããŸããããã¬ãã¥ã¢ãŒãããããšåã¬ã€ã€ãŒãççµåã§ã·ã³ãã«ã«å®è£
ãããŠããçºãã¬ãã¥ãŒã¯ãããããšæããŸãã ãŸã æ¬æ Œçã«ã¯éçšã§ããŠããªãã®ã§ãããçŽè¿ã§ã¯PRã®å€æŽè¡æ°ããªãã¹ãæããã¬ãã¥ãŒããããç²åºŠã«PRãåå²ããããšããåãçµã¿ãããã以åã ãšæ°èŠãšã³ããã€ã³ãå®è£
æã¯ã³ã³ãããŒã©ãŒå±€ãããã¡ã€ã³å±€ãŸã§äžæ°ã«å®è£
ããŠãããŸãšããŠã¬ãã¥ãŒäŸé ŒãããŠããŸããããä»åŸã¯ã³ã³ãããŒã©ãŒãšã³ã³ãããŒã©ãŒã®ãã¹ãã³ãŒãããã¹ãã³ãŒãå
ã§å©çšãããŠãŒã¹ã±ãŒã¹ã®ã¢ãã¯ã§1PRããããçµãã£ãããŠãŒã¹ã±ãŒã¹ãšãŠãŒã¹ã±ãŒã¹ã®ãã¹ãã³ãŒãããã¹ãã³ãŒãå
ã§å©çšãããªããžããªããã¡ã€ã³ã®ã¢ãã¯ã§1PRãšããããã«ããçšåºŠã¬ã€ã€ãŒã§åºåã£ãŠã®ã¬ãã¥ãŒã詊ããŠã¿ãŠãã¬ãã¥ãŒè² è·ã®è»œæžãã§ãããããæ€èšŒããŠããããšæã£ãŠããŸãã â»ããšããšã¯ãªãŒã³ã¢ãŒããã¯ãã£ã§å®è£
ããããœãŒã¹ã¯ã¬ãã¥ãŒãããããšæããŠããã®ã§ã1PRã§ç¢ºèªããå¯Ÿè±¡ãæžããšèŠéããæžãã察象ãžããéäžããŠã¬ãã¥ãŒã§ãããšæãã®ã§ãPRãµã€ãºã®åæžãæ€èšããŠããŸã æ¹ä¿®ã®ãããã æ¹ä¿®ã¯ããããã§ãã çç±ãšããŠã¯ã¡ãªããã§ãæãããåäœãã¹ããå®è£
ããããçºãæ¢åã®ã³ãŒã倿ŽãããŸãæããªããªã£ãŠããããšãšãåã¬ã€ã€ãŒãç¬ç«ããŠããçºãäŸãã°æ°èŠã§ãšã³ããã€ã³ãã远å ããéã«ããæ¢åã®ãªããžããªããŠãŒã¹ã±ãŒã¹ã®ã€ã³ã¿ã©ã¯ã¿ãŒãåå©çšãããããã³ã³ãããŒã©ãŒã ããæ°èŠã§äœæããã°è¯ããšãã£ãå Žé¢ãããïŒãã¡ãããã®éããããŸããïŒãã€ã³ã¿ãã§ãŒã¹ã«äŸåããããã«ããã°ã©ãã³ã°ããŠããããšã®ã¡ãªãããæå€§é享åã§ããŠãããšæã£ãŠããŸãã ãŸããèšèªãéçåä»ãã§ããGoãæ¡çšããŠããããšããããåã¬ã€ã€ãŒéã®ã€ã³ã¿ãã§ãŒã¹å€æŽãåãäžèŽããªããªã£ãŠã³ã³ãã€ã«ãšã©ãŒã«ãªã£ãŠãããã®ã§ãæ¹ä¿®æŒããçºçããªãããšã¯è¯ãããšã ãšæããŸãã çŽè¿ã ãšã忣ãã¬ãŒã·ã³ã°å¯Ÿå¿ãããçºã«ãã³ã³ãããŒã©ãŒãããšã¯ã¹ã¿ãŒãã«ãŸã§Contextãªããžã§ã¯ããäŒæ¬ãããçºã®ãªãã¡ã¯ã¿ãªã³ã°ãé²ããŠããã®ã§ãããã³ã³ãã€ã«ãšã©ãŒé€å»ãšåäœãã¹ãã®ä¿®æ£ãè¡ãã°å®å¿ããŠãªãªãŒã¹ã§ããç¶æ
ã§ããããšããéçºè
ãã¹ãã¬ã¹ãªãéçºã§ããŠããŠãéçºè
äœéšåäžã«ãäžåœ¹è²·ã£ãŠãããŠãããšå®æããŠããŸãã äœè«ã«ãªããŸãããLIFULLã§ã¯KEELãšãããã©ãããã©ãŒã ã§åæ£ãã¬ãŒã·ã³ã°ããçºã®åºç€ãæäŸããŠãããŠããŠãã¢ããªã±ãŒã·ã§ã³ã¬ã€ã€ãŒã§å°ãã ãã³ãŒãããããã ãç°¡åã«è€æ°ãµãŒãã¹ã®ãã°ãçµ±åããŠé²èЧã§ããããã«ãªã£ãŠããã®ã§ãäžèšã®èšäºãè¯ãã£ããèŠãŠãã ããã www.lifull.blog qiita.com ãŸãšã ã¯ãªãŒã³ã¢ãŒããã¯ãã£ãæ¡çšãããããã¯ãã2幎çµéããŠã¿ãŠä»ã©ããïŒã«ã€ããŠç޹ä»ããŸããã æ£çŽãã¬ãã£ããªææ³ã¯ããŸããªããä»åŸæ°å¹Žã«æž¡ã£ãŠæ¹ä¿®ãç¶ããŠãã£ãŠãããŸããããŸãã«æžãã®ã§ã¯ãªããïŒãšæã£ãŠããŸãã ãã¡ãããåææ§æ³æãšæ¯ã¹ããšãããã€ãããã±ãŒãžåããé©åãããªããããšã现ããåæã§ä¿®æ£ãããåæã¯ãããã®ã®ã倧æ ã§ã¿ãŠãããšã¯ãªãŒã³ã¢ãŒããã¯ãã£ã§å®è£
ããããããã«ãªã¹ã«ãªããã«ããçšåºŠç§©åºãä¿ãããŠãããšæããŸãã ãŸããã¯ãªãŒã³ã¢ãŒããã¯ãã£ã§å®è£
ããããšã§ã SOLIDåå ã«èªç¶ãšæºæ ããŠãããä»ãŸã§çè§£ããããµãã ã£ãSOLIDååãå°ãçè§£ãæ·±ãŸã£ããšæãã®ã§ããããã£ãé¢ã§ãäžåºŠè§ŠããŠã¿ãããšã¯è¯ããšæããŸãã ããããã¯ãªãŒã³ã¢ãŒããã¯ãã£ãæ¡çšããŠãããã¯ããéçºããããšããŠããæ¹ã
ãžå°ãã§ãåèã«ãªãã°å¹žãã§ãã æåŸã«ãLIFULLã§ã¯å
±ã«æé·ã§ãããããªä»²éãåã£ãŠããŸãã ãããããã°ãã¡ãã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co
LIFULLã§ããã³ããšã³ããšã³ãžãã¢ãããŠããéœè€ã§ãã 2008幎å
¥ç€Ÿãªã®ã§15幎ç®ãããã®å€æ ªã§ããä»ã¯ LIFULL HOME'S ã®è³è²žéšéã§ããã³ããšã³ãéçºãããŠããŸãã ãããªãã§ãããã¿ãªããã¯ã¢ã€ã³ã³ãã©ãå®è£
ããŠããŸããïŒ ã¢ã€ã³ã³ãã©ã³ããã¹ãã©ã€ããäžã€äžã€åãåºãããã©ãŒããããSVGãPNGãFontãªã©ãªã©ã å®è£
æ¹æ³ã¯ãããããããŸããããµã€ãèŠæš¡ãéçšäœå¶ãªã©ã§ã©ããæ±ãããããã¯å€ãã£ãŠããŸãããã ãããã¢ã€ã³ã³ãããã©ã¢ã€ã³ã³ã å©çšé »åºŠãé«ãã倧ãããè²ã埮åŠã«éã£ããããããšãå€ããŠãããŸã§ãããããšè©Šè¡é¯èª€ããŠããŸããã ããã§ä»åã¯LIFULL HOME'Sã§ã©ããªã¢ã€ã³ã³å®è£
ãè¡ãããŠããããæ¯ãè¿ã£ãŠã¿ãããšæããŸãã ãããŸã§ã®æ©ã¿ã éœåºŠäžã€äžã€åãåºããŠã®å¯Ÿå¿ ã¹ãã©ã€ãç»åã§ã®å¯Ÿå¿ SVG symbolãå©çšããå¯Ÿå¿ data-urlåããSVGãimgã¿ã°ã®srcã«åããå¯Ÿå¿ çªå€ç·šïŒSASSã§SVGãdata-urlåããŠbackground-imageã§èªã¿èŸŒã çµããã« ãããŸã§ã®æ©ã¿ã éœåºŠäžã€äžã€åãåºããŠã®å¯Ÿå¿ 15幎ãããåããã®ããã¯ãã¶ã€ã³ãäžãã£ãŠãããäžã€äžã€åãåºããŠå¯Ÿå¿ããŠããŸããã å
±éåã¯ããŠããŠãè²ãéãã倧ãããéããšãªãã°éœåºŠåãåºããŠäœæãå¿
èŠã§ããã ãã§ã«ãããã®å€§ãããããã¡ãªã®ãªããŠæããªããæžã
åãåºããŠå¯Ÿå¿ããŠãããã®ã§ããã ã¹ãã©ã€ãç»åã§ã®å¯Ÿå¿ 11幎ãããåããªãã¥ãŒã¢ã«ãæ©ã«æ°ãã«èšèšããŠããäžã§ã¢ã€ã³ã³ã¯ã¹ãã©ã€ãç»ååãéžæããŸããã ui-icon ãšããæ±çšclassãäœããã¢ã€ã³ã³ã®æå®ã«ã¯ããäžã€ ui-icon-hoge ã®ããã«äžæã®classãäœã£ãŠå¯Ÿå¿ããŸããã ãã§ã«äœãããç»åã§ããã° <span class="ui-icon ui-icon-hoge"/> ãšããæãã§HTMLãæžãã°è¯ãã£ãã®ã§æ Œæ®µã«æ¥œã«ãªããŸããã 倧ãããæåãµã€ãºé£åããããã«äœã£ãŠããã®ã§ãã©ã³ããšåãããã«æ±ããã®ãè¯ãã£ãç¹ã§ããã ãŸããç»å眮æã®ææ³ãå
¥ããŠããã®ã§ç©ºèŠçŽ ãšããŠã ãã§ãªãããã¹ããå«ããããšãã§ããã®ã§ãã¢ã¯ã»ã·ãã«ãªäœãã§ããããŸããã é£ç¹ã¯è²ãéãã¢ã€ã³ã³ã ãã¯ã¹ãã©ã€ãç»åãä¿®æ£ããŠè¿œå ããªããŠã¯ãããªãã£ãããšã§ããã // CSS .ui-icon { display : inline-block ; width : 1em ; height : 1em ; line-height : 1 ; background : url( 'sprite_icon.png' ) no-repeat 0 0 / 1em 54em ; text-indent : 1em ; overflow : hidden ; white-space : nowrap ; } .ui-icon-history { background-position : 0 0 } .ui-icon-favorite { background-position : 0 -1em } SVG symbolãå©çšããå¯Ÿå¿ 7幎ãããåããã®ããã«ãªããšãã©ãŠã¶ã®SVG察å¿ãå®å®ããŠããã®ã§SVGãæŽ»çšãå§ããŸããã å
·äœçã«ã¯ã <body> çŽäžã«å©çšããSVGã®symbolã眮ããå©çšããç®æã§SVG useããŠå©çšãããšãããã®ã§ããã SVGãªã®ã§å€§ããã ãã§ãªãè²ã«é¢ããŠãå¯å€æ§ããããããã§ã€ãã«è²ã»ãµã€ãºéãã®åäœæãšããåªçžããè§£ãæŸãããŸããã å©çšããå Žåã«ã¯Symbol IDãšè²ã倧ãããæå®ããã ãã®twig macroãæºåããã®ã§ãããå©çšããã ããšãæè»œã«ãªããŸããã inline SVGã ããããã§ããCSSããã®è²æå®ãéå®ããŸãããã ä»çŸåšããããçŸåœ¹ã§å©çšãããŠããŸãã // Twig å
ã§ã®å©ç𿹿³ {{ svg.use('history', '32', '#000', 'title') }} // Twig macro {% macro use(id, size, fill, title) %} {% if title %} {% set aria %}role="img"{% endset %} {% else %} {% set aria %}aria-hidden="true"{% endset %} {% endif %} <svg width="{{ size }}" height="{{ size }}" {{ aria }} focusable="false"> {% if title %} <title>{{ title }}</title> {% endif %} <use xlink:href="#{{ id }}" aria-hidden="true" {{- fill -}}></use> </svg> {% endmacro %} ãšã¯ãã課é¡ãåºãŠããŸããã éçšãšããŠã¯å¿
èŠãªsymbolã®ã¿ãå¿
èŠãªããŒãžã§åãããšããããšãããŠããŸããã ãšããããããŒãžãå¢ããé·å¹Žã®éçšã«ããè€éããå¢ããŠããäžã§ã©ãã®ããŒãžã«ã©ã®symbolãå¿
èŠãªã®ããææ¡ã§ããªããªã£ãŠããã®ã§ãã symbolã眮ãå Žæãšå©çšããå Žæã®è·é¢ãé¢ããŠããã®ãäžã€ã®åå ã§ããã å©çšããŠããã³ã³ããŒãã³ããèªã¿èŸŒãŸãããsymbolãåã蟌ãçãã§ãããè¯ãã£ãã®ã§ããããããããç°¡åã§ã¯ãªãã®ã§å¥ã®æ¹æ³ãæºåããããšã«ããŸããã data-urlåããSVGãimgã¿ã°ã®srcã«åããå¯Ÿå¿ ãããŠä»ãäžèšèª²é¡ã解決ãã€ã€ãäœãäžããè³ç£ïŒSVGïŒãæå¹æŽ»çšã§ããæ¹æ³ãšããŠãSVGãdata-urlã«å€æããŠimgã¿ã°ã®srcã«åããmacroãæ°ãã«äœããŸããã ããã«ããsymbolã®èªã¿èŸŒã¿ãäžèŠã«ãªããäžã§æãã課é¡è§£æ±ºãžã®äžå©ãšãªãçãã§ãã 課é¡è§£æ±ºãžã®äžå©ãšæžããã®ã¯ãæ¢åã®symbolå©çšããããããã§ã¯ãªã䜵çšããããã§ãã åœåã¯æ¢åmacroãæžãæããŠããŸãããšèããŠããã®ã§ãããsymbolå©çšã§æžããéãCSSããã®è²æå®ã¯éå®ããŠããã®ã§ããããªããããšã¯ããã䜵çšãšããéãåããŸããã // Twig macro {% macro img(id, size, color, alt) %} {% import _self as svg -%} {% set replaceMap = { '<': '%3C', '>': '%3E', '#': '%23', '{': '%7B', '}': '%7D', ' ': '%20', '"': "'", } -%} {% set src = 'data:image/svg+xml,' ~ svg.svg(id, size, color)|replace(replaceMap) %} <img src="{{ src }}" width="{{ size }}" height="{{ size }}" alt="{{ alt }}"> {% endmacro %} {% macro svg(id, size, fill) %} <svg xmlns="http://www.w3.org/2000/svg" width="{{ size }}" height="{{ size }}"> <def> {% include 'Bundle:Assets:svg/icon/_' ~ id ~ '.svg.twig' %}{# svg symbol file #} </def> <use href="#{{ id }}" {{- fill|raw -}}></use> </svg> {% endmacro %} çªå€ç·šïŒSASSã§SVGãdata-urlåããŠbackground-imageã§èªã¿èŸŒã å®ã¯ãã®data-urlåãšããææ³ã¯ä»¥åããSassã§å©çšããŠããŸããã Twigåæ§ã«SVGã³ãŒããæž¡ãããdata-urlã«å€æããŠè¿ã颿°ãäœã£ãŠå®çŸããŠããŸãã SVGã³ãŒããencodeã㊠data:image/svg+xml ã§è¿ãã Twigã§ãSassã§ããã£ãŠããããšã¯äžç·ã§ããã // Sass @function svgUrlEncode( $svg ) { $replaceMap : ( '<' : '%3C' , '>' : '%3E' , '#' : '%23' , '{' : '%7B' , '}' : '%7D' , ' ' : '%20' , "'" : '"' , ); @each $s , $r in $replaceMap { $encode : string.str-replace( $s , $r , $svg , true); } @return $encode ; } @function svgDataUri( $svg ) { $svg : svgUrlEncode( $svg ); @return url( 'data:image/svg+xml;charset=utf-8, #{ $svg } ' ); } çµããã« ãããã§ããã§ããããïŒ ããæ¹ã¯ã»ãã«ããããããããŸãããèšèªããã©ãŠã¶ã®å¯Ÿå¿ç¶æ³çã®ã¿ã€ãã³ã°ã䜿ããæéãšããã®ããã£ãŠãããã£ãå€é·ããã©ã£ãŠããŸããã æè¡ã®é²æ©ããã®æã®èª²é¡ã»ç¶æ³ã«åããæé©è§£ãæ¢ãã ä»åŸã課é¡è§£æ±ºãããªãããµã€ãæ©èœãéçºå¹çãªã©ã®æ¹åã«åãçµãã§ãããããšæããŸãã æåŸã«ãLIFULL ã§ã¯ãšãã«æé·ããŠããã仲éãåéããŠããŸãããããããã°ãã¡ãã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co
ãããã¯ããšã³ãžãã¢ãªã³ã°éšã®æµ·è柀ã§ãã æ®æ®µã¯ LIFULL HOME'S ã®è³è²žéšéã®ããã³ããšã³ãéçºãããŠããŸãã è¿å¹ŽãLIFULL ã®éçºéšéã§ã¯ãéçºçç£æ§ããšããèšèãåãæ²æ±°ãããããã«ãªããŸããã LIFULL HOME'Sã®äž»èŠãªããžããªã¯10幎以äžéçšããç¶ããä»ãå€ãã®éçºè
ã«ãã£ãŠæ¥ã
æ¹ä¿®ããç¶ããŠããŸãã é·ã幎æã®äžã§å°ããªèšèšãã¹ãç©ã¿éãªã£ãŠå€§ãããªããã¡ãã£ãšããå®è£
ã§ãå
¥å¿µãªèª¿æ»ãå¿
èŠãšãªãéçºçç£äœäžã®èŠå ãšãªã£ãŠããŸããã ãŸã10幎以äžåã«æ¡çšãããã¬ãŒã ã¯ãŒã¯ã§çšŒåããŠãããããä»ã§ã¯ããã¥ã¡ã³ããæ¢ãã®ãäžèŠåŽãšããå
·åã§ãã ããã§äž»èŠéçºéšéã§ã¯ãèªéšéã®æ©èœã¯ãã€ã¯ããµãŒãã¹ãžãšåãé¢ããåã
ã§é¢åãèŠãããšããæ¹éã«ãªããŸããã è³è²žéšéãåæ§ã«æ©èœã®åãé¢ããå§ããå
æ¥ãç©ä»¶è©³çްããŒãžãã®ãã€ã¯ããµãŒãã¹åãè¡ããŸããã ä»åã¯ãã€ã¯ããµãŒãã¹åã«ãããæ°åºç€ã®æè¡éžå®ãããã®ã§ãå®éè§Šã£ãŠã¿ãææ³ãªã©ã亀ããªãã玹ä»ããŠãããã°ãšæããŸãã ç»é¢ã®ããã©ãŒã¢ãã¿ãŒ ãã€ã¯ããµãŒãã¹åãšåæã«UIã®ãªãã¥ãŒã¢ã«ãæ€èšãéçºäžã§ãã æ§UI æ°UI â»ãã£ããã£ã¯éçºäžã®ç»é¢ã§ãã æ§åºç€ã§ã¯ãã€ãããã¯ãµãŒãã³ã°ã§PC/Tabçšã»SPçšã®ã¬ã€ã¢ãŠããåãæ¿ããŠããŸããããæ°åºç€ã§ã¯ã¬ã¹ãã³ã·ããã¶ã€ã³ãžãšå€æŽããŸããã ããã€ã¹éã®ãã¶ã€ã³ã«ãŒã«ã»ãã³ããã®å·®åããªããããšãéçºçç£æ§ãäžãæ¹åã¹ããŒããäžããã®ãçãã§ãã æ°åºç€ã®å
šäœæ§æ ä»å㯠Web ã¢ããªã±ãŒã·ã§ã³éšåã®ã¿å·æ°ãè¡ããŸãããAPI ã¯å
šç€Ÿã§äœ¿ã£ãŠããæ¢åã®ãã®ã䜿ã£ãŠããŸãã æ°åºç€ã®æ§æå³ ããããã¯æè¡éžå®ã«ã€ããŠã®è©³çŽ°ãæžããŠãããŸãã ããã¯ãšã³ã ããã¯ãšã³ã æè¡éžå®ã®ã¢ãããŒã·ã§ã³ 瀟å
ã§æšæºæ¡çšãããŠããèšèªã»æè¡ã§ããããš ããã¯çµç¹ã®èª²é¡ã§ãããã®ã§ãããLIFULL ã¯ãšã³ãžãã¢ã®éšçœ²ç°åããããããããŸãã 瀟å
ã§ã¯æè¡éçŽã®èгç¹ã§æšæºæè¡ãå®ããããŠãã®ã§ããã«åŸããŸããã æè¡éžå®ã§ãææŠãããªãããš LIFULL HOME'S ã®è³è²žéšé㯠LIFULL ã®äžã§ãäžæ žãæ
ãçµç¹ã§ãã»ãã®éçºããŒã ã«æ¯ã¹ãŠèŠæš¡ã倧ããã§ãã ããããã«äººå¡ã®å
¥ãæ¿ããé¡èã§ãããŸããŸãªæè¡ã¹ã¿ãã¯ãæã£ã人ãããŸãã ãããã£ãäžã§ç®æ°ãããã¬ãŒã ã¯ãŒã¯ãçšãããšããã¥ã¡ã³ããç¥èŠäžè¶³ã«æ©ãããšããããŸãã æèè
ãããŒã ã«å¿
ãããã®ã§ããã°è¯ãã®ã§ãããããŒã ç·šæã®éœåäžé£ããå ŽåããããŸãã ãããªã£ãŠããŸã£ãå Žåãéçºã¯ã€ãŸãããã¡ã«ãªããŸããã³ãŒãã®å質ãèœã¡ãããšãéå»ã®çµéšåãã容æã«æ³åã§ããŸããã ãã®ãããªäºæ
ãé¿ããããã«æã
ã¯æè¡éžå®ã§ãææŠãããã®ããããåŠç¿ã³ã¹ãã®äœããã¬ãŒã ã¯ãŒã¯ãæ¡çšããããšãéžã³ãŸããã æ¡çšæè¡ äžèšã®ã¢ãããŒã·ã§ã³ãèžãŸããããã¯ãšã³ãã¯ä»¥äžãæ¡çšããŠããŸãã ã¢ãŒããã¯ãã£: Clean Architecture ãã¬ãŒã ã¯ãŒã¯: Express x TypeScript ã¢ããªã±ãŒã·ã§ã³å®è¡åºç€: å
補ã©ã€ãã©ãªãKEELã ã¢ãŒããã¯ãã£: Clean Architecture LIFULL ã®ããã¯ãšã³ãå·æ°ãããžã§ã¯ãã§æ¡çšãããã¢ãŒããã¯ãã£ã§ãã ããã瀟å
ã«åºãŸã£ãŠããŠç¥èŠãæºãŸã£ãŠãããããä»å Clean Architecture ãæ¡çšããŸããã www.lifull.blog æ
å ±ã衚瀺ããã ãã® Web ã¢ããªã±ãŒã·ã§ã³ã§ Clean Architecture ã¯åé·ã§ã¯ãªãããšããæèŠããããŸããããã¬ã€ã€ããšã®è²¬åã»èŠçŽãã¯ã£ããããŠããå¶çŽãå³ããããšããéçºè
ã«ãããã¬ãå°ãªããªãããšãèŠèŸŒããŸãã å®éæ¥åã§è§Šã£ãŠã¿ããšãããã©ãã«äœãæžãã°ããã®ãããšããã®ãåããããããèšèšããããã®ã¯é
åã ãšæããŸãããïŒå®è£
ã®ã詳现ããæœè±¡åããŸããã®çè§£ã¯ã¡ãã£ãšå€§å€ã§ãããâŠâŠðïŒ ãã¬ãŒã ã¯ãŒã¯: Express x TypeScript èšãããšç¥ããããã¯ãšã³ããã¬ãŒã ã¯ãŒã¯ã§ãã æ¥æ¬èªããã¥ã¡ã³ããèšäºãã©ã€ãã©ãªãå
å®ããŠããããåŠç¿ã³ã¹ããäœãæããããšãã§ããŸãã åã®æ©æµã¯åãããã£ããã TypeScript ãå°å
¥ããŠããŸãã TypeScript ã¯ç€Ÿå
ã§ãå°å
¥äºäŸãå€ããããªã決ãŸããŸããã ä»ã®æã¯è€éãªåæšè«ã¯å¿
èŠãšããŠããããçŽ çŽã«ã³ãŒãã远ãã°åããããããå®å¿æããããŸãã ããã¯ãšã³ããšããã³ããšã³ãã§èšèªãå
±éã«ã§ããã®ãè¯ãç¹ã ãšæããŸããã ã¢ããªã±ãŒã·ã§ã³å®è¡åºç€: å
補ã©ã€ãã©ãªãKEELã å®è¡åºç€ã¯å
šç€Ÿã§å©çšããŠããå
補ã©ã€ãã©ãªãKEELããæŽ»çšããŠããŸãã ãããã€ããã°åãåºããªã©æ¥ã
ã®éçšã¿ã¹ã¯ãåžåããŠããããã°ãããåºç€ã§ã KEEL ã®ãããã§ã¢ããªã±ãŒã·ã§ã³éçºã«éäžã§ããŠããŸãã åœããã°ã§ãããèšäºãããã£ãŠããŸãã®ã§è©³çްã¯å²æããŸããããã²ã芧ãã ããã www.lifull.blog ããã³ããšã³ã ããã³ããšã³ã æè¡éžå®ã®ã¢ãããŒã·ã§ã³ ã¡ã³ããã³ã¹ã³ã¹ãã軜ãããš ãŸã第äžã«ãLIFULL HOME'S ã¯è€éãªæäœãã€ã³ã¿ã©ã¯ã·ã§ã³ãå¿
èŠãšããªãããŒã¿ã«ãµã€ãã§ãã ã¯ã©ã€ã¢ã³ããå
¥çš¿ããæ
å ±ã®è¡šç€ºãã¡ã€ã³ã§ããŠãŒã¶ãŒã®æäœã«ãã£ãŠç»é¢ã倧ããå€ãããšããããšãã»ãšãã©ãããŸããã ãããã£ããµã€ããéçºããŠããããã§ React ã Vue ãçšããã®ã¯åé·ã ãšèããŸããã å®éã¢ããããŒãã®é »åºŠãé«ãã¡ã³ããã³ã¹ã³ã¹ãã嵩ã¿ãŸããããã«ãããã»ã¹ãå¿
é ã§ãã ä»åŸããã«ã€ã±ãŠããããã³ããšã³ãæè¡ãåºãŠããéã«åŒãå¥ããã«ãããšããæ¬ ç¹ããããŸãã å身ã®ã¡ã€ã³ãªããžããªã¯10幎以äžçšŒåããŠããŸããã ãœãŒã¹ã³ãŒãã®èŠæš¡ãèšå€§ãããããšãäŸåé¢ä¿ã倧ããããšããã¢ããããŒããéåžžã«å°é£ã«ãªã£ãŠããŸãã ä»åã®æ°åºç€ã¯äœå¹ŽçšŒåãããåãããŸããããå°ãªããšã5幎以äžã¯éçºãããã§ãããã ãããªã£ãæã«ã¡ã³ããã³ã¹ã³ã¹ãã軜ããšããã®ã¯å€§ããªã¡ãªãããšãªããŸãã éçºè
ã®ã¹ãã«ã«å·Šå³ãããªãããš ããã¯ãšã³ãã®æè¡éžå®ã§ãè§ŠããŸããããè³è²žéçºéšéã¯èŠæš¡ã倧ãã人å¡ã®å
¥ãæ¿ããé¡èã§ãã åžžã«è€æ°ã®ããŒã ã皌åããŠãããåãããŒãžã䞊è¡éçºããŠããããšããããŸãã HTML/CSS/JavaScript ã«æãããªãã³ãŒããŒãããã¯ãšã³ããšã³ãžãã¢ãããã³ããè§Šãããšãå€ã
ãããŸãã ãããã£ãéã«åŠç¿ã³ã¹ãã®é«ã React ã Vue ã ãšéã«éçºã®é
ããæãããã¬ãã¥ãŒã³ã¹ããé«ãŸããšããæžå¿µããããŸããã ãã®ããããªãã¹ãå¹³æã§åŠç¿ã³ã¹ãã®äœãæè¡ãæ¡çšããŠããŸãã åŸè¿°ãã Tailwind CSS ã Stimulus ã¯æ¯èŒçæè¿ã®ãã¬ãŒã ã¯ãŒã¯ã§ãããããã¥ã¡ã³ããç°¡æœãã€ã§ããããšãéãããŠãããã1æ¥ããã°æã«éŠŽæãæè¡ã§ãã ããã³ããšã³ã æ¡çšæè¡ ãããã®ã¢ãããŒã·ã§ã³ãèžãŸããããã³ããšã³ãã¯ä»¥äžãæ¡çšããŸããã HTML: Preact x TypeScript ã§ HTML ãçæã Express ã§ãµãŒããµã€ãã¬ã³ããªã³ã° CSS: Tailwind CSS JavaScript: Stimulus HTML: Preact x TypeScript Preact x TypeScript ã§ Express ããçŽ ã® HTML ãè¿åŽããŠããŸãã Preact ã®éžå®çç±ãšããŠã¯è»œéã§ããããšãåã䜿ããããšã§ãã æã
㯠HTML ãã¬ã³ããªã³ã°ãããã ããªã®ã§ React ã®ãããªéãã©ã€ãã©ãªã¯åé·ã§ããã ãšã¯ããåæ
å ±ã¯ä»äžãããã£ãã®ã§ã tsx 圢åŒã䜿ãã Preact ãæ¡çšããŠããŸãã ã¯ã©ã€ã¢ã³ããµã€ãã®æ¯ãèãã¯åè¿°ã® Stimulus ãå©çšããã®ã§ Preact ã¯ãã³ãã¬ãŒããšã³ãžã³ãšããŠã®ã¿å©çšããŠããŸãã ããã¯å¥ã®ãã³ãã¬ãŒããšã³ãžã³ã«å·®ãæ¿ããããªã£ããšãã«èŒãæ¿ãã容æã«ããããã§ããããŸãã CSS: Tailwind CSS Tailwind CSS ã¯ãŠãŒãã£ãªãã£ãã¡ãŒã¹ã㪠CSS ãã¬ãŒã ã¯ãŒã¯ã§ãéåžžã«å°ããåäœã® CSS ã¯ã©ã¹ã HTML ã«çŽæ¥æžããŠçµã¿åãããããšã§ã¹ã¿ã€ãªã³ã°ãããŸãã åŸæ¥ã®èª²é¡ãšããŠãHTML ãš CSS ã®æŠå¿µçè·é¢ãé ããšããåé¡ããããŸããã æ®éã«ã³ãŒãã£ã³ã°ãè¡ãããšãããš HTML ã«é©åœãªã¯ã©ã¹åãæ¯ã£ãŠå¥é CSS ã§ãã®ã¯ã©ã¹ã«å¿ããã¹ã¿ã€ã«ãæžããHTML åŽã§ãã® CSS ãèªã¿èŸŒããšããæéãçºçããŸãã Sass ã®ç»å Žã§ CSS ãæžãã®ã¯ããããæ¥œã«ãªããŸããããæŠå¿µçè·é¢ã®å§çž®ãŸã§ã¯ãããŸããã§ããã Vue ã®ããã« SFC ã§ãããšããæããããŸãããããã§ãã¯ã©ã¹ã®åœåãšããäžçªé¢åã§éå±ãªäœæ¥ã¯æ®ã£ãŠããŸããŸãã Tailwind CSS ã¯ãã§ã«çšæãããŠããã¯ã©ã¹ãçµã¿åãããŠäœ¿ãã®ã§åœåãšããæŠå¿µããªãã HTML ã«ã¬ã³ã¬ã³æžããŠãããã®ã§æŠå¿µçè·é¢ããŒãã«ã§ããŸãã ãŸããã¯ã©ã¹ã®åäœãéåžžã«å°ããã®ã§ã«ã¹ã¿ãã€ãºæ§ãé«ãããã¶ã€ã³ã®åçŸã容æã§ãã HTML ãèŠãã ãã§ããçšåºŠèŠãç®ãæ³èµ·ã§ãããšããã®ãé
åçã§ããã é »åºã¹ã¿ã€ã«ïŒex: ãã¿ã³ãã¶ã€ã³ïŒã¯ @layer component ãžåãåºããŠäœ¿ã£ãŠããŸãããããå°æ°ã§ãã1ãã¡ã€ã«ã«ãŸãšããŠããã®ã§äœåã CSS ãã¡ã€ã«ãéãããšããããŸããã äœæã§ãã CSS ãæžããŠãããããããå以äžã®ã¹ããŒãã§ã³ãŒãã£ã³ã°ã§ããããã«ãªã£ããšæããŠããŸãã çŽ CSS/Sass ãæžããšãã¯å°ãæé¬±ã«ãªããŸãã JavaScript: Stimulus åè¿°ããããã«ãLIFULL HOME'S ã¯ç©ä»¶æ
å ±ãèŒããããŒã¿ã«ãµã€ãã§ãããŠãŒã¶ãŒã®è€éãªæäœãå¿
èŠãšããŸããã ãã®ãã js ã§äžããã¹ãæ¯ãèããå°ãªããåå©çšã§ããåãããšãŠãå€ãã§ãã ãããã£ãæ¯ãèããå
±éåããéãReact ã Vue ã§ã³ã³ããŒãã³ãåããŠåå©çšãããšããã®ãèããããŸãã ãããè¡šç€ºç®æã«ãã£ãŠå°ããã¶ã€ã³ãå€ããã ãã§ HTML ã CSS ã¯ã©ã¹ã®åå²ãçºçããŠã³ã³ããŒãã³ããè¥å€§åããŠãããšããåé¡ããããŸãã Slot ã Mixin ã䜿ãããªãã°ãããªããšã«ã¯ãªããªããããããŸããããå€§èŠæš¡ãªéçºçµç¹ã§ãããã®çµ±çããšã£ãŠããã®ã¯éåžžã«å°é£ã§ãã ããã§æã
㯠37signals 謹補㮠JavaScript ã©ã€ãã©ãª Stimulus ãæ¡çšããŸããã ããã¥ã¡ã³ã ã«ãããããã«ãStimulus ã¯ã¡ãã£ãšããæ¯ãèãã HTML ã«äžããã©ã€ãã©ãªã§ãã HTML ã« data-controller ãšããã«ä»éããããŒã¿ãã¢ã¯ã·ã§ã³ãæžãããšã§ã€ãã³ãã貌ãä»ããããšãã§ããŸãã Stimulus ã®æšå³ã¯ Controller ãè€æ°ã¢ã¿ããã§ããããšãDOM æ§é ã«çžãããªãããšãã€ãã³ãã¢ã¿ããã®åŠçãäžèŠãªããš ã§ãã åå©çšæ§ã®é«ãå°ã㪠Controller ãäœã£ãŠããã° HTML ãã©ããªæ§é ã»ãã¶ã€ã³ã§ããããšã¢ã¿ããããã°åããŸãããè€æ°çµã¿åããããšè€éãªåããäœããŸãã ãŸããHTML ãš js ã®çµåã§äžçªé¢åãªã®ã addEventListener ã®åŠçããšæããŸããã Stimulus 㯠MutationObserver ã§ DOM ãç£èŠããŠãã HTML ãç»é¢ã«åºçŸããã ãã§ èªåã§è©²åœã® Controller ã®ã€ãã³ããã¢ã¿ãããããŸãã ããã¯éåžžã«åŒ·åã§ããµãŒããµã€ããã Stimulus Controller ãèšå®ããã HTML ãè¿åŽããã° Ajax ã§ç»é¢ãäžéšæŽæ°ããããšåæã«ã€ãã³ããã¢ã¿ããããããã js ã®èªã¿èŸŒã¿å¿ãã§ç»é¢ãå£ããããšããå¿é
ããããŸããã åæ§ã« DOM ãæ¶ããã° removeEventListener ãããã®ãå®å¿ãã€ã³ãã§ãã ä»åã®æ°åºç€ã§ã¯ãªãŒãããŒããŒã®ä»çµã¿ãå°å
¥ããŠããããããŒãžããšã«èªã¿èŸŒã js ã bundle ããå¿
èŠããããŸããããããžãå¿«é©ã§ãã åŒç€Ÿãšã³ãžãã¢ã® Qiita èšäºã§ã玹ä»ããŠãããŸãã qiita.com åå©çšæ§ã®é«ã Stimulus Controller ãå
å®ããŠãããš HTML ã«æ¢å Controller ãæžããŠããã ãã§æ¯ãèãã®å®è£
ãçµäºãããããjs ãæžãããšãã»ãŒãªããªããŸãã å®éãæ°åºç€ã皌åããŠããæ°ãµææ©èœè¿œå ã»ç»é¢æ¹ä¿®ãããŠããŸããããã»ãšãã© js ã¯æžããŠããŸããã ã³ãŒãã¯æžãã»ã©è² åµã«ãªããšèšããŸããããã¡ããšèšèšããã°ããã»ã©è³ç£ã«ãªã£ãŠããã®ã Stimulus ã®é
åã ãšæããŸãã éå»ã®èšäºã§ã話é¡ã«ããŠããŸãã®ã§ããã²ãã¡ããã芧ãã ããã www.lifull.blog ãã¹ãã£ã³ã° ãã¹ãã£ã³ã° æè¡éžå®ã®ã¢ãããŒã·ã§ã³ ãã¹ãã£ã³ã°ã«é¢ããŠã¯ãããŸã§å€§ããèª²é¡æã¯ãªãã£ãã®ã§ããã UnitTest ãéãå®è¡ã§ããããšãE2E ãã¹ããæžããããããã®ã¯æèããŸããã ãã¹ãã£ã³ã° æ¡çšæè¡ UnitTest: Vitest E2E: Playwright UnitTest: Vitest Vitest 㯠Vite ã®èšå®ããã®ãŸãŸäœ¿ãããã¹ãã£ã³ã°ã©ã€ãã©ãªã§ãã ä»ãŸã§åŒç€Ÿã® TypeScript ç°å¢ã§ã¯ Jest ãæ¡çšããŠããŠæåã¯ããã«å£ã£ãŠããŸãããã éçºäžã« Vitest ãããããšãªãä¹ãæããããŸããã æžãå³ã¯ Jest ãšã»ãŒåæ§ã§ããå®è¡éåºŠãæ¡éãã§ãçéã§ UnitTest ãåããŸãããŸããconfig ãéåžžã«ã·ã³ãã«ã§èšå®ããšãŠã楜ã¡ãã§ãã Vite ã䜿ã£ãŠããããã§ã¯ãªãã®ã§å
𿩿µãæãã£ãŠããããã§ã¯ãªãã®ã§ãããå®è¡é床ãéããšããã ãã§çã¢ãã ãšæããŸãã ä¹ãæãèªäœããšãŠãç°¡åã«ã§ããã®ã§ãJest ã䜿ã£ãŠããæ¹ã¯ãã² Vitest ããæ€èšãã ããã E2E: Playwright Playwright 㯠Microsoft 謹補㮠E2E ã©ã€ãã©ãªã§ãã TypeScript ã«æšæºå¯Ÿå¿ããŠããã®ãé
åçã§ãé£ããã»ããã¢ããããããšãå°å
¥ãå¯èœã§ãã å
¬åŒããã¥ã¡ã³ã ãå
å®ããŠããããããããããšããããããªãããšããã®ã¯ãããŠã Guide ã«ããã£ãŠããã®ã§å®å¿æããããŸãã äž»ã«æ§åºç€ãšæ°åºç€ã®æ
å ±ã®è¡šç€ºå·®å確èªã package bump æã®ããžã¥ã¢ã«ãªã°ã¬ãã·ã§ã³ã§æŽ»çšããŠããŠããã¹ãå·¥æ°ã®åæžã«åœ¹ç«ã£ãŠããŸãã ãŸãšã ãŸã æ°åºç€ã皌åããŠæ°ãµæããçµã£ãŠãããŸããããæ§åºç€ãšæ¯ã¹ãŠå§åçã«éçºããããçç£æ§ãé«ãŸã£ãŠããã®ãæããŠããŸãã å®é皌åããäœåãæ°èŠã¡ã³ããŒãå
¥ããŸãããããããŸã§èŠåŽããéçºã§ããŠããããã§ãã LIFULL HOME'S ã¯ãŸã ãŸã æé·ããŠãããããã¯ãã§ãã ä»åã®åºç€å·æ°ããã£ããã«ããè¯ã䟡å€ããŠãŒã¶ãŒã«å±ããŠãŸãããŸãðª æåŸã«ãLIFULL ã§ã¯ãšãã«æé·ããŠããã仲éãåéããŠããŸãããããããã°ãã¡ãã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co
ãšã³ãžãã¢ã®å è€ã§ããLIFULL HOME'Sã®æ³šæäœå®
é åãæ¯ãããšã³ãžãã¢ããŒã ã®ãããžã¡ã³ããæ
åœããŠããŸãã LIFULLã§ã¯å®æçã« ãšã³ã²ãŒãžã¡ã³ããµãŒã〠ã宿œããçµç¹ã®ç¶æ³ææ¡ãè¡ã£ãŠããŸãã ãããããšã³ã²ãŒãžã¡ã³ããµãŒãã€ã¯å
šè·çš®å
±éã®ãã©ãŒããããšãªãããããéçºã®ããããããããããžã§ã¯ãé²è¡ããªã©ãšã³ãžãã¢ç¹æã®èª²é¡ãŸã§ã¯ç¹å®ãã¥ãããããã«æ·±æã£ãåæãéèŠã§ãã ãããããšã³ãžãã¢ç¹æã®èª²é¡çºèŠã課é¡ã®æ·±æããå¹ççã«è¡ããããããã¬ãã£ãããŒãã£ã³ã°ããäŒç»ã宿œããã®ã§ããã¡ãã玹ä»ããããšæããŸãã ãã¬ãã£ãããŒãã£ã³ã°ãšã¯ åŒç€Ÿã§ã¯èª²é¡ãåºãåã話ãåããããã¬ãã£ãããŒãã£ã³ã°ããšç§°ããŠå®æœããŠããŸãã ããã§ã¯è§£æ±ºçãªã©ã¯è°è«ãããã²ããããã³ããã«åããŠççŽãªèª²é¡ãæããããšã«éäžããŸãã ãŸãããã¬ãã£ãããŒãã£ã³ã°ã§åºã課é¡ã®æã¡æã¯å¥éãããžãã£ãããŒãã£ã³ã°ããšåŒã°ãã話ãåãã§è°è«ãã課é¡è§£æ±ºã®å®è¡ãŸã§èœãšã蟌ã¿ãŸãã æã
ã¯ããã2ã€ãçµã¿åãããŠããã¬ããžããŒãã£ã³ã°ããšç§°ããã»ããã§å®æœããŠããŸãã ãã¬ãã£ãããŒãã£ã³ã°ã®ç¹åŸŽ ãã¬ãã£ãããŒãã£ã³ã°ã¯ã課é¡ã ããæããããŒãã£ã³ã° 課é¡ãåºãããšã ãã«éäžãããããæ®æ®µã ãšèšãã¥ããå察æèŠãä»£æ¿æèŠãæãåã£ãŠäŒããããšãã§ãã ãã¬ãã£ããªå
容ã§ããæèŠãåºãããšã楜ãã ããžãã£ãããŒãã£ã³ã°ã®ç¹åŸŽ ãã¬ãã£ãããŒãã£ã³ã°ã§åºã課é¡ã®è§£æ±ºçãæ±ºããããŒãã£ã³ã° å®è¡ãã解決çãæ±ºãããã誰ããããªã«ããããã€ãŸã§ã«ããæ±ºãã ã¯ãŒã¯ã®æµã ä»åã®ã¯ãŒã¯ã§ã¯3, 4åãã€ã®ããŒã ã«åããã以äžã®æµãã«æ²¿ã£ãŠãã¬ãã£ãããŒãã£ã³ã°ã宿œããŸããã 誰ããããããã€ãããããããæ±ºããïŒäŸïŒãããã€ãããç®æšèšå®ïŒ ã¿ããªã§ããã®å¿ã¯ãããã²ãããåºãïŒäŸïŒãã®å¿ã¯ããšã³ãžãã¢ã®ææã®å®éåããããïŒ æèŠãåºãåã£ãã1ã«æ»ã ä»åã®ãããªã¯ãŒã¯ã§ã¯ããå€ãã®èгç¹ã§èª²é¡ãåºãåãããšãšãããŒã ã¡ã³ããŒå
šå¡ã話ãåãã«åå ããããšãéèŠã§ãã ãã®ããã1ã®ããŒãèšå®ã¯äžäººãã€æã¡åãã§è¡ããã工倫ããŸããã ãŸãããã¬ãã£ãããŒãã£ã³ã°ã§ã¯åºãŠãã課é¡ã«å¯Ÿãæ²èгçã«ãªãã®ã§ã¯ãªããããã課é¡ãæµ®ã圫ãã«ãªã£ãããšãååãã«ãšãããããšãéèŠã§ãã æåŸã¯ç¬é¡ã§çµããããããã¿ãšããŠãããŒã å
ã§æãå
±æããã課é¡ãå·æ³ïŒãŸãã¯çæïŒã«ãŸãšããå
šäœãžå
±æããŠãããããšãšããŸããã ãã£ãŠã¿ãçµæ ä»åã¯çŽ30åã®ã¯ãŒã¯ã«ãŠå®æœããŸãããã50ãè¶
ãã課é¡ãçºæ£ããããŒã ãããæ³å以äžã®çµæãåŸãããŸããã 倧ããåãããšãéçºããã»ã¹ããããããžã§ã¯ãé²è¡ãããæè¡çè² åµããããããã¯ããããç®æšã»è©äŸ¡ã»ãã£ãªã¢ãã¹ãã«ã€ããŠã®èª²é¡ãå€ãæãããçãã§ãã£ããšã³ãžãã¢ç¹æã®èª²é¡çºèŠãšæ·±æãã宿œã§ãããšæããŠããŸãã ãŸããã©ã®ããŒã ãæ¥œãã¿ãªãã課é¡ãåºãåããŠããããã«èŠåãããããã®åŸå®æœãã課é¡è§£æ±ºã«ãååãã«åãçµãã§ãããå°è±¡ãæ±ããŸããã çµç¹èª²é¡ã®ãããªãã¬ãã£ããªæèŠã¯å¿ççå®å
šæ§ãæ
ä¿ãããç°å¢ã§ãªããã°ãªããªãèšãã¥ãããã®ã§ãã ãã¬ãã£ãããŒãã£ã³ã°ã®ãã¬ãŒã ã§ã¯èª²é¡ãåºãåãããšã ãã«éäžããããšãåæãšãªãããããããã£ãç°å¢ã¥ããã«å¹æçã§ãããšæããŸãã ãŸãšã ä»åã¯ãã¬ãã£ãããŒãã£ã³ã°ãéããŠçµç¹èª²é¡ãçºæ£ããåãçµã¿ã«ã€ããŠã®ç޹ä»ã§ããã ä»åŸã¯ããžãã£ãããŒãã£ã³ã°ãéå¬ããä»ååºãŠãã課é¡ãžã®æã¡æãèãã解決ã«å°ãããã®åãçµã¿ãå®è¡ããŠããããšæããŸãã æåŸã«ãLIFULL ã§ã¯ãšãã«æé·ããŠããã仲éãåéããŠããŸãããããããã°ãã¡ãã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co
ããã«ã¡ã¯ïŒLIFULLã®ãšã³ãžãã¢ã§ãLtechéå¶ããŒã ã®æ²³è¥¿ã§ãïŒä»å㯠2023幎2æ21æ¥ïŒç«ïŒã«éå¬ãããLtech#23 LIFULLã«ãããSalesforce掻çšäºäŸã«ã€ããŠèªããŸããã«ã€ããŠã¬ããŒãããŸãã Ltechãšã¯ æ ªåŒäŒç€ŸLIFULLäž»å¬ã®ãæè¡ïŒãšã³ãžãã¢ãªã³ã°ã»ãã¯ãããžãŒïŒãããŒãã«ããã€ãã³ãã®ç·ç§°ã§ãã ç¹å®ã®æè¡ã«åãããæ§ã
ãªæè¡ãããã¯ã¢ããããŠãããŸãã Session1 Salesforceã®ã·ã¹ãã æ§æãšæè¿ã®éçºæœçã®å
±æ www.docswell.com ãã®ã»ãã·ã§ã³ã§ã¯ãLIFULLã«ãããSalesforceã®å©æŽ»çšã«ããç®æãäžçããã®ããã«çŽè¿ã§è¡ã£ãæœçã«ã€ããŠç޹ä»ããã ããŸããã æåã«ãSalesforceã®å©æŽ»çšã«ãã£ãŠå®çŸãããäžçãšããŠãããªã ããã£ãã«ã®å®çŸããæ²ã äžç®æã«ããŒã¿ãéããŠããªã ããã£ãã«ãå®çŸã LIFULLã®ãšã³ããŠãŒã¶æ§ãžæé«ã®ãŠãŒã¶äœéšããæäŸãããã ãã®ããã«ãLIFULL HOME'SçLIFULLã®åãµãŒãã¹ã瀟å
ã·ã¹ãã ãç¹ããCRM(Customer Relationship Management)ãå®çŸããããšããäžç芳ãèªã£ãŠããã ããŸããã ç¶ããŠãæ§ã
ãªå
·äœçãªåãçµã¿äºäŸãšã㊠PIS(Personal Information System)ãšãããåãåããæ
å ±ãäžå
管çããããã®APIãéçº ãã°ã€ã³ç»é¢ã§ãŠãŒã¶ç»é²ããããã°ã€ã³ãŠãŒã¶èªèšŒæ
å ±ãæ ŒçŽã»ç®¡çããããã®ä»çµã¿ãæ§ç¯ Salesforce Marketing Cloudãšé£æºãããšã³ããŠãŒã¶ã«å¯ŸããŠãç©ä»¶æ¡å
ã®ã¡ãŒã«ãé
ä¿¡ããä»çµã¿ äžåç£äŒç€Ÿæ§åãLIFULL HOME'S PROãµã€ãã§é²èЧã§ããã¬ããŒãæ©èœ åè«ã»æ³šææ
å ±ãªã©åçš®æ
å ±ã売äžéé¡ã確èªã§ãã瀟å
ã·ã¹ãã Pardotãå©çšããäžåç£äŒç€Ÿæ§åãããŒã«ã®å©çš ãªã©ãªã©ãæ§ã
ãªäºäŸãã玹ä»ããã ããŸããã ä»åã¯æéã®éœåäžãå
šãŠã现ãã玹ä»ã§ããŸããã§ãããããŸãããCRMãå®çŸããããã«ãæ§ã
ãªåãçµã¿ããããŠããå°è±¡ã§ããïŒ Session2 Salesforce Field Service Lightningã«ããäžåç£çžè«çªå£ãµã€ãã®éçºç«äžã www.docswell.com ãã®ã»ãã·ã§ã³ã§ã¯ãField Service Lightningãå©çšããŠãäžåç£çžè«çªå£ãµã€ãã®ç«ã¡äžããè¡ã£ã話ã«ã€ããŠç޹ä»ããã ããŸããã LIFULL HOME'SäœãŸãã®çªå£ã®çžè«äºçŽããŒãžã§ã¯ãé«ãNPSïŒNet Promoter ScoreïŒãå®çŸããããã«ãæåã«ãã管çãå€ãã®å·¥æ°ãå ããŠãããéçšè² è·ãé«ãç¶æ
ã§ããã ãã®ç¶æ³ãæéããããã«ãField Service LightningïŒä»¥äžFSLïŒã«çç®ãã ãã¯ãã«ã«ãã¬ããžã¯å
¬åŒã®ããããªãã®ã ã åœå
å°å
¥äºäŸãçç¡ã®æ°è£œåã§ã®ææŠ ãšããç¶æ³äžã®ãªããåŠäœã«ããŠæ¹åãè¡ã£ãã®ããã玹ä»ããã ããŸããã åœæ¥ã®çºè¡šãèãã«æ¥ãŠããã ããæ¹ããããFSLã«ã€ããŠã®QAãå€ãã ã»Field Service Lightning ã¯äœ¿ã£ãããšããªãã®ã§ãããå°å
¥ã«ããã£ãŠããã£ããã€ã³ããèŠåŽããç¹ã¯ãããŸããïŒ ã»Field Service Lightningãéžãã çç±ã¯ãªãã§ãã ã»Field Service Lightningã¯ãã£ããæ©èœçãã»ãã«ãããã€ãããããã§ããäºçŽåä»ä»¥å€ã§ã¯ã©ã®ãããªæ©èœãã€ãã£ãŠããŸããïŒ ãšãã£ãæ§ã«ãå®äŸãå°ãªãäžãå®éã«å°å
¥ã»éçšããããçµéšãèãã貎éãªã»ãã·ã§ã³ã§ããïŒ Session3 Salesforceã®ããŒã¿ãããšã«Tableauã§æããšã®å£²äžéé¡ã衚瀺 www.docswell.com ãã®ã»ãã·ã§ã³ã§ã¯ãæåã®ã»ãã·ã§ã³ã§ç޹ä»ãããŠãããåè«ã»æ³šææ
å ±ãªã©åçš®æ
å ±ã売äžéé¡ã確èªã§ãã瀟å
ã·ã¹ãã ãã«ã€ããŠã®å
·äœçãªã話ã«ã€ããŠç޹ä»ããã ããŸããã LIFULLã«ãããåè«ã®æµãã®äžã§ãããããååæ
å ±ã®æã¡æ¹ãç°ãªããããæããšã®å£²äžãããããªã®ãéèšãããããšãã£ã課é¡ããããŸããã ãã¡ãã®èª²é¡ã解決ããããã«ã Salesforceã®ApexããããApexããªã¬ã§å£²äžéé¡ãåå² BigQueryã«é£æº BigQueryã«é£æºããããŒã¿ãTableauã§å¯èŠå ãšãã£ãææ³ãçšããŠè§£æ±ºããäºäŸã玹ä»ããã ããŸããã QAã§ã¯ã以äžã®æ§ãªè³ªåãããŠããã ãã ã»Salesforceã®æšæºã¬ããŒããããã·ã¥ããŒãã®æ©èœãšTableau?ã®æ©èœã«å·®ã¯ãããŸããïŒ åçãšããŠããSalesforceã§è£ããªãéšåãä»ã®ãµãŒãã¹ãçµã¿åãããŠè§£æ±ºããŠããããšãã£ããå®åã§ãªããšèããªã貎éãªã話ãèãããšãã§ããŸããïŒ ãŸãšã ä»åã¯LIFULLã«ãããSalesforce掻çšäºäŸãšããŠSalesforceã«é¢ãã話ã3åã®ãšã³ãžãã¢ã«çºè¡šããã ããŸããããã®ä»ã«ãLIFULL HOME'Sã§ã¯ã¡ã³ããŒãéæ LIFULL Creators Blog ã«ãŠæ
å ±ãçºä¿¡ããŠããŸãã www.lifull.blog Ltechã§ã¯ãLIFULLã®ãšã³ãžãã¢ãäžå¿ã«ãªã£ãŠçæ§ã®æè¡æ¬²ãæºããããå®äŸã亀ããå匷äŒãéå¬ããŠããŸããä»åŸã Ltech ãç©æ¥µçã«éå¬ããŠãããŸãã®ã§ããã²æ°ã«ãªã£ãæ¹ã¯ãconnpass ã§ LIFULL ã®ã¡ã³ããŒç»é²ããããããé¡ãããŸãïŒ lifull.connpass.com ãŸããLIFULLã§ã¯ãæ°å€ãã®è·çš®ã®ä»²éãåéããŠããŸãã ãããããã°ãã¡ãã®ããŒãžãã芧ãã ããã 【エンジニア】募集求人一覧 | 株式会社LIFULL 【エンジニア】カジュアル面談 | 株式会社LIFULL
ãããã¯ããšã³ãžãã¢ãªã³ã°éšã®äºå®®ã§ãã æã
ã®ãããã¯ããšã³ãžãã¢ãªã³ã°éšã§ã¯ã匷ãåäººã»æé«ã®ããŒã ã«ãªãããšã§äŸ¡å€åµé ãå éããç¶ããããšããããžã§ã³ãæ²ããŠããŸãããããŠããã®ã匷ãå人ããç®æããŠãé±ã«æ°æéçšåºŠãæ®æ®µã§ããªããã£ã¬ã³ãžã³ã°ãªæè¡ã®æ¢çŽ¢ãªã©ãããçšåºŠèªç±ã«æéã䜿ãããšãæšå¥šãããŠããŸãã ãã®äžã€ã®ããæ¹ãšããŠãæè¿ã¯ç€Ÿå
ã§æè¡æžã®èŒªèªäŒãããããšãæµè¡ã£ãŠãŸãïŒä»¥åãLIFULLã¯ãªãšã€ã¿ãŒãºããã°ã«ãã "INSPIRED"ã®èŒªèªäŒãéããŠãµãããããããã¯ãéçº ããšããèšäºãå
±æãããŠããŸãïŒã ä»åã¯ã2ã€ã®ããŒã ååã§ã ã·ã¹ãã éçšã¢ã³ããã¿ãŒã³ ããèªã¿çµããããã®èŒªèªäŒããªããªã奜æè§Šã ã£ãã®ã§ç޹ä»ããŸããããçšåºŠããã©ã³ã®ãšã³ãžãã¢ãæã€ç¥èã身ã«ã€ãããšãšãã«ãæ¬ã®å
容ã«è§Šçºãããè°è«ãåæã«è¡ãããšæã£ãŠããŸãã 茪èªäŒãšã¯ ãŸãã茪èªäŒãšã¯ãªã«ãã«èª¬æããŸãã weblioèŸæž ããåŒçšããŸãã 人ã
ãéãŸã£ãŠãåãæç§æžãªã©ã®æ¬ãèªã¿ããã®å
容ã«ã€ããŠæèŠã亀ããããšãæå³ããèªã äºåã«æ±ºããããæ
åœè
ããæ¬ã®å
容ãèš³ããããŸãšãããããŠãããä»ã®åå è
ãçè§£ã§ããããã«çºè¡šãã圢åŒããšãããããšãå€ãã ã¡ãã£ãšè©±ãå
åããããšãå人ã§å匷ããããã質åãã§ãããããã®å Žã§èªåãã¡ã®æèã§ã®è°è«ãã§ããããªã©ã®ã¡ãªãããæããããŸããã 茪èªäŒã®å®æœæ¹æ³ 茪èªäŒã«ã¯æ§ã
ãªããæ¹ãããã®ã§ãããç§ãã¡ãå®éã«ã©ã®ããã«å®æœããã®ã玹ä»ããŸãããã以å€ã®æ¹æ³ãå¹
åºãç¥ãããæ¹ã¯ã 茪èªäŒã®ããããå
š8åã®éå¬ã§åŠãã 倱æãã¿ãŒã³ãšæåã®ã³ã ããªã©ã®èšäºãåèã«ãªããšæããŸãã åå è
æ
åœãããã¯ããå¥ã®2ã€ã®ããŒã ãååã§è¡ããŸããã人æ°ã¯6人ã§ãå
šå¡ããœãããŠã§ã¢éçºãã¡ã€ã³ã®ãšã³ãžãã¢ã§ãã æ¬ã®éžå® åè£ã«æãã£ãã®ã¯æ¬¡ã®3ã€ã®æ¬ã§ãã ã·ã¹ãã éçšã¢ã³ããã¿ãŒã³ Googleã®ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã° ä»äºã§ã¯ãããæ©æ¢°åŠç¿ ã䞻管ã·ã¹ãã ã«é¢ãããå
±éããŠããã·ã¹ãã éçšã®å®åã«é¢ããŠåŠã¹ãããªå
容ã§ãæ¯èŒççæéã§èªã¿çµããããããšããçç±ã§ãã·ã¹ãã éçšã¢ã³ããã¿ãŒã³ããéžã³ãŸããã éåãªæ¿èªããã»ã¹ãå¯èŠåãããŠããªãéçšãããã»ã¹ã®æåŸã§ã®ã¿è¡ããããœãããŠã§ã¢ãã¹ãããã€ãºã ããã®ã¢ã©ãŒããã€ã³ã·ãã³ãããåŠç¿ããªãç¿æ
£ãæéå€ã®ãããã€ãæ
å ±ã®ãã蟌ã¿ãªã©ãåãäžãããœãããŠã§ã¢ã·ã¹ãã ã®éçºéçšãæ»ãããŒã ãçµç¹ã«å
±éããŠã¿ãããé¥ããã¡ãªç¶æ³ãç¯ããã¡ãªééããã¢ã³ããã¿ãŒã³ãšããŠç޹ä»ããŸãããããŠç®¡çè·ããããŒãžã£ã§ãªãããšã³ãžãã¢ãå®è¡ããç¹°ãè¿ãããšã§æ¹åã§ããå
·äœçãªè¡åã解説ããŸãã æ¬ã®å
容ããã£ããé¢çœããåŸè¿°ãããéå»ã®å€±æè«ããã©ããã«å
±æã§ããããéçºæåã«ã€ããŠèããæ©äŒãšãªã£ããã¿ãããªæè§Šã¯ããã®æ¬ã®ããŒãã®ãããã倧ããã£ãããããªãããšæããŸãã 宿œæ¹æ³ ãåç« ã®æ
åœè
ãæ±ºããæ¯é±èŒªèªäŒã®æéãåãã1ç« ãã€æ
åœè
ãå
容ããŸãšããŠçºè¡šããããšãããªãŒãœããã¯ã¹ãªæ¹æ³ã§è¡ããŸããã茪èªäŒæ¬ç·šã¯ååã§çºè¡šãèããªãã質åãã³ã¡ã³ããè¡šã«æžããŠãããåŸåã§ãããå
ã«è©±ããã圢åŒã§ãã 第3ç« ã®ãç²ç®ç¶æ
ã§ã®éçšãã§äŒè©±ããè·¡ã®è¡š ãã®ããã«ãã瀟å
ã®æèã«çœ®ãæãããšã©ããªã®ãïŒããšããå®ã¯æ¬ã®å
容ãšè¿ã倱æãããŠåŸæããŠããã ããšã話ãåºãããŸããã 茪èªäŒããããªããã工倫ããŠå€ããç¹ã¯2ç¹ãããŸããèªåãã¡ã«ãšã£ãŠèŒªèªäŒã¯ã¯ãããŠã®çµéšã ã£ããããéäžã§äžåºŠæ¯ãè¿ãã®æéãçšæããŠããŸããã 茪èªäŒã®æéã15åã«èšå®ããŠãããããã¡ããã¡ãé§ãè¶³ã«ãªã£ãŠããŸã£ããã30åã«å»¶é·ãã ãŸãšãæ¹ã¯å®å
šã«èªç±ã ã£ããããã©ããŸã§ãŸãšããã°ããããåãããªããŠå€§å€ãããªãïŒããèªåã®çµéšã絡ãã話ããã£ãã»ããé¢çœããã ãã¿ãããªå£°ãäžãããç°¡åãªæšå¥šãã©ãŒããããçšæãã ãã©ãŒããããšãã£ãŠããèŠçŽãç« ã®ãã€ã³ããç®æ¡æžãããé¢é£ãããšããœãŒããèªåãªãã®è§£é ãã³ã¡ã³ããããšããç°¡åãªãã®ã§ãã 宿œãã宿 茪èªäŒã®åŸã«æ¯ãè¿ãã§ã¯ã次ã®ãããªã¡ãªãããæãããããšããæèŠãåºãŸããã æ¬ã®å
容ã«è§Šçºãããããã©ã³ã®éå»ã®çµéšãèãããšãã§ãããéå»ã®å€±æè«ããã©ããã«å
±æã§ãã ä»ã®äººã«èª¬æããå¿
èŠãããã®ã§ãæ
åœããç« ã®å
容ããåãã£ãã€ããã«ãªããã«çè§£ã§ãã 瀟å
ã®éçºæåã«ã€ããŠèªåã®ç«å Žããè²¢ç®ã§ããããšã¯ãªããèããæ©äŒãšãªã£ã å
±éèªèãã§ããŠããã®å Žã§çŸç¶æ¹åã®ã¢ã€ãã¢ã®è°è«ãã§ãã äŒè©±ã匟ãã ãåçŽã«æ¥œããã£ã ç¹ã«ãã®æ¬ã®å
容ã¯ãã¬ãã£ãããšããžãã£ããã®ãã©ã³ã¹ãçµ¶åŠã ã£ããšæããŸããäŸãã°ã 第10ç« ãã¬ã³ãã ããç¥ã£ãŠãã ãã«ã¯æ¬¡ã®ãããªè©±ããããŸããã æèããªããšããŒããŒãœã³ïŒã The Phoenix Project ãã®ç»å Žäººç©ã®ãã¬ã³ãïŒã«ç¥èãéãŸã æ
å ±ãç©æ¥µçã«å
±æããã°ããïŒâå
¬éããã ãã§ã¯èå³ãæãŠãããã§ã¯ãªã ã²ã©ããšèª°ãå
šäœãèŠãªããªã ç§èªèº«ãããã ã£ãããšãããããã«ãããã£ããæ
å ±å
±æã®ããã¥ã¡ã³ããæžããã®ã«ã¿ããªãèå³ãæã£ãŠãããªãããçµç¹æåãããã¥ã¡ã³ãã®éèŠåºŠãçè§£ããŠãªãããšãããèªåèªèº«ã®ã¢ãããŒã·ã§ã³ãäžããå·éãªè°è«ã劚ããŠããŸãåœ¢ã§æ©ãã§ããŸãããšãå€ããšæããŸãã ãã ããã®ãããªå€±æäŸãå
±æããã ãã§ãªãããå®ã¯ããã¥ã¡ã³ãã ãã§ãªãå¥ã®ã³ãã¥ãã±ãŒã·ã§ã³ã®æ¹æ³ããã£ãããããªããããšããæ
å ±å
±æãç¿æ
£ã¥ãããããã«ããããæ¹æ³ããã£ãããããªããããšãã玹ä»ããããããã§ããžãã£ãã§å»ºèšçãªè©±ã«èªç¶ã«ç¹ãã£ãããã«æããŸãã ããããDevOpsãã¢ãžã£ã€ã«ææ³ã®æ¬ã¯ãç¹ã«ãšã³ãžãã¢çµéšã®éãã«é¢ãããçºå±çãªè°è«ãã§ããåæ§ã®æè§ŠãåŸããããã®ãå€ãããããªãããšæã£ãŠãŸããç¹ã«ããã©ã³ããè¥æãžãšãæ°ã
ã®å€±æã§åŠãã æé»ç¥ãå
±æããã®ã«ã圹ç«ã€ãããããŸããã ãããŠæ¬¡ã®èŒªèªäŒãž ä»åã®èŒªèªäŒã§ã¯ããã¡ããšæ¬ãæåŸãŸã§èªã¿çµããã2ããŒã ååã®èŒªèªäŒã®åœ¢ã§ã¯è§£æ£ãšããããšã«ãªããŸããã æ¬¡ã«ãèªåãã¡ã®ããŒã ã§ã¯ã ä»äºã§ã¯ãããæ©æ¢°åŠç¿ ããèªã¿å§ããŠããŸããèªåãã¡ã¯BigQueryã«ããããŒã¿ãæ±ãããšãå€ããæ©æ¢°åŠç¿ã絡ããã·ã¹ãã ãäœããã°ãããæçšãªæ©èœãå®è£
ãããã£ã³ã¹ãåºãããããšèããŠããããã§ããä»åºŠã¯æ¬ã®å
容ã«åãããŠãå
šå¡ã軜ãäºåã«èªãã§ããŠããããããæ°ã¥ããç¹ã質åãããç¹ããŸãšããŠçºè¡šããããšããå¥ã®ããæ¹ã§å·¥å€«ããŠããŸãã ä»äºã§ã¯ãããæ©æ¢°åŠç¿ã®èŒªèªäŒã®æ§å ãã¡ããããŸãæ©äŒãããã°ããã°ã§å ±åããŸãã æåŸã« æåŸã«ãåéæ±äººãã«ãžã¥ã¢ã«é¢è«ã®ããŒãžã玹ä»ããŸããäžç·ã«æé·ããªãããååãã«ããŒã æåãäœã£ãŠãããæ¹ã«æ¥ãŠããã ãããšå¬ããã§ãðââïž hrmos.co hrmos.co
ããã«ã¡ã¯ïŒLIFULLãããã¯ããšã³ãžãã¢ãªã³ã°éšã® é åšæ·³ïŒãžã§ã³ã»ãžã§ã¹ã³ïŒ ã§ãã2022å¹Žã«æ°åã§å
¥ç€ŸããŠã䞻㫠äžåç£ã¢ãŒã«ã€ã ã äœãŸãã€ã³ããã¯ã¹ ã®éçºã»éçšãæ
åœããŠããŸãã ä»å¹Žãæ°å2幎ç®ã®ãšã³ãžãã¢ãšãªãããŸããŸãå¹
åºãåéã®æ¥åã«åãçµãã§ããŸãããããŠãèªåãæ
åœããã¿ã¹ã¯ãããå¹çè¯ãããªãããã«ã¯ã å人ã®ãæ
å ±åããæé·ãããããšãéåžžã«éèŠ ã ãšæããŠããŸãã ãæ
å ±åããšã¯ããšã³ãžãã¢ãææ°æè¡ãè¯ãã³ãŒãã®æžãæ¹ãã¢ãŒããã¯ãã£èšèšãªã©ã® æ
å ±ãç¿åŸïŒInputïŒ ãããããã®æ
å ±ã å®éã®æ¥åã§æŽ»çšïŒOutputïŒ ããäžé£ã®æµããšå®çŸ©ããŸããã€ãŸãããšã³ãžãã¢ãã¡ã®æ
å ±ãšã®åãåãæ¹ãæå³ããŸãã ãæ
å ±åããåäžãããããã«ã¯ãèªå·±åŠç¿ãªã©ãéããŠãšã³ãžãã¢èªèº«ãäžäººã§é 匵ãã°ãååæé·ã§ãããããããŸãããäžäººã§ã¯ãªãã å€ãã®äººãéãŸã£ãŠäžç·ã«ããã°ããã倧ããªäŸ¡å€ãåºãããš ãã§ããŸãã LIFULLã§ã¯ãšã³ãžãã¢ã®ãæ
å ±åãåäžã®ãããæ§ã
ãªåãçµã¿ãè¡ã£ãŠããã®ã§ãä»åã®èšäºã§ããã€ãã®æŽ»åã玹ä»ããŸãã ç®æ¬¡ ç®æ¬¡ LIFULLã®æŽ»åçŽ¹ä» Qiita Blog LIFULL Creators Blog LIFULL Developer Channel ãšã³ãžãã¢ãã€ã§ãçžè« ãšã³ãžãã¢åãã®ç€Ÿå€ã»ç€Ÿå
ã€ãã³ã ãŸãšã LIFULLã®æŽ»åçŽ¹ä» Qiita Blog äž»ã«LIFULLã®ãšã³ãžãã¢ãã¡ã Qiita organizations ã«ã¢ã«ãŠã³ããç»é²ã㊠誰ã§ãèªç±ã«äœæã§ããæè¡ããã° ã§ããæè¡çãªå
容以å€ã«ãããããžã§ã¯ãéçšã»å¹ççãªããŒã«ã®äœ¿ãæ¹ã»éçºç°æããªã©æ§ã
ãªã«ããŽãªãŒã®èšäºãæçš¿ããŠãããŸãã Qiita Advent Calendarã«åå ããLIFULLã¯å
šãŠã®ã«ããŽãªãŒã®äžã§7äœãšãªãã»ã©å€§çæ³ã§ããããã®äžã§ãã @pal4de ãæçš¿ãã2ä»¶ã®æ£èŠè¡šçŸåŒèšäºã¯ãåèšã§500ä»¶ãè¶
ããããããç²åŸããŸãããæ£èŠè¡šçŸã§ãå°ãã®æ¹ã¯æ¯éã芧ã«ãªã£ãŠãã ããã ãã£ãïŒæåã§ã³ãŒãæ€çŽ¢ã®ç²ŸåºŠããããããæ£èŠè¡šçŸ ã·ã³ãã«å³è§£: æ£èŠè¡šçŸã® (?= ) ãšã (?! ) ãšã (?<= ) ãšã (?<! ) ãšã LIFULL Creators Blog ãã®èšäºãæ²èŒãããŠããHatena blogã§ããLIFULLã®ããžã§ã³å®çŸã«ã€ãªããäŸ¡å€æäŸãžã®åãçµã¿ãçºä¿¡ããŠãããŸãã LIFULLã®ã³ãŒãã¬ãŒãã¡ãã»ãŒãž LIFULLã®ããžã§ã³ Qiitaãšã¯ç°ãªãããšã³ãžãã¢ã§ã¯ãªããLIFULLã®ãã®ã€ãããã«åãçµãã§ãã瀟å¡ãªããè·çš®ãšé¢ä¿ãªãèšäºãæçš¿ã§ããŸããäž»ã«LIFULLã®ãµãŒãã¹ãçºå±ããããããåãçµãã§ããå
容ãæçš¿ãããŠããŠå®éã®ãããã¯ããäºäŸãšããŠããã®ã§ã èšäºãéããŠLIFULLã®æåãé°å²æ°ãªã©ãç¥ãããš ãã§ããã®ãç¹åŸŽã§ãã äŸãã°ãLIFULLãžå
¥ç€ŸãèããŠããæ¹ãæ°ã«ãªãããªã¢ãŒãã¯ãŒã¯åã§ã®åãæ¹ãã³ãã¥ãã±ãŒã·ã§ã³ã®åãæ¹ãã ãªã¢ãŒãã¯ãŒã¯åã§ã倧åã«ãããªãã©ã€ã³ã³ãã¥ãã±ãŒã·ã§ã³ ãªã¢ãŒãã¯ãŒã¯æä»£ã«ããããµãŒã¯ã«æŽ»åã®åãçµã¿ ãLIFULLã®ãããã¯ãã©ã®ãããªã·ã¹ãã ã§éçšãããŠããã®ãïŒãçã®å
¥ç€Ÿåã«ç¥ãããšãã§ããªãæ
å ±ãèšäºãéããŠç¢ºèªããããšãã§ããŸãã LIFULLã®å
šç€Ÿã¢ããªã±ãŒã·ã§ã³å®è¡åºç€ KEEL ã«ã€ã㊠LIFULLã®ãããã¯ãã®å¯èŠ³æž¬æ§ã®åäžã«ã€ã㊠LIFULL Developer Channel èªåèªèº«ãéå¶ã¡ã³ããŒãšããŠåå ããŠãã YouTubeãã£ã³ãã« ã§ãã LIFULLã®ãšã³ãžãã¢ãã¡ãYouTubeãéããŠãQiitaãCreators Blog çã®ããã«ããã¹ãã«å ãåç»ãšãã£ã ãã倿§ãªåœ¢åŒã§ã®æ
å ±ã®çºä¿¡ãã§ããç°å¢ãåµã ããã«éå¶ã¡ã³ããŒãšããŠåå ããŠããŸãã æšå¹Ž9æé ã« ãæ
å ±ã»ãã¥ãªãã£å¯Ÿçãè¡ãæçŸ©ã ãšããæåã®æ åãæçš¿ãããŠããã ããŸããã3æäžæ¬é ã«2æ¬ç®ã®LIFULLãšã³ãžãã¢ã®ããŒããŒãã玹ä»ããåç»ãæçš¿ããããšãç®æããŠããŸãã LIFULLã®æåãé°å²æ°ããããªã¢ã«ã§äŒããŠãããããšæããŸãã®ã§ãããããé¡ãããŸãã ãšã³ãžãã¢ãã€ã§ãçžè« 1幎ã»ã©åã«ãšã³ãžãã¢ã®äºå®®ãæçš¿ããããã°ã§ã玹ä»ãããŠããã ãããGitHub Discussionsã䜿ã£ã瀟å
åãã®Q&Aãã©ãŒã©ã ã§ãããšã³ãžãã¢ã 誰ã§ãæ°è»œã«æè¡çžè«ããããã¯ã仿§ã«é¢ãã質åãªã©è¡ããããã«ããããš ãç®çãšããŠäœãããã®ãããšã³ãžãã¢ãã€ã§ãçžè«ãã§ãã GitHub Discussionsã§ç€Ÿå
ã®Q&Aãã©ãŒã©ã ãéèšãã äŸãã°ã誰ãããèšèšã®æ¹éãæ±ºå®ããããšã§ãããæ°ã«ãªããŸãããããå®è£
ã§ãããè¿·ã£ãŠããŸãããããããã«é¢ããŠç¥èŠãããæ¹ãããã£ããã£ãããæããŠããã ããŸããïŒãã®ãã㪠質åãæãããšãLIFULLãšã³ãžãã¢ã®çãåç ããŠãããŸãã ãã®ããã«çžè«ããããç°å¢ãã§ããŠããã®ã§ããã€ã§ãå¿ççå®å
šæ§ãä¿ã¡ãªããåãããšãã§ããŸããè€æ°ã®äººãDiscussionså
ã§è°è«ããŠè§£æ±ºçãæ¢ã£ãŠããæ§åãOSS掻åã«ã䌌ãŠãããšæããŠããã課é¡ã«å¯ŸããŠçãååããŠäžç·ã«è§£æ±ºãããšããéçºæåã瀟å
ã§äœãããŠããŸãã ãšã³ãžãã¢åãã®ç€Ÿå€ã»ç€Ÿå
ã€ãã³ã ãã«ã€ãŒã³ã»ãžã£ãŒããŒããšããæžç±ã§ã玹ä»ãããããšããããŸããã ããŒã ããäŒç€Ÿãžè¶å¢ããŠç€Ÿå
æ¹åã®å Žãäœã ã®ã¯ãšã³ãžãã¢ãªã³ã°ã§éåžžã«éèŠãªãšããã§ãããããå®çŸãããããLIFULLã§ã¯LtechãLIFULL Tech Hubããã³ã¬ãŒãã©ã€ããããªãŒããŒã¯å匷äŒçã®ãšã³ãžãã¢åãã®å€æ§ãªç€Ÿå€ã»ç€Ÿå
ã€ãã³ããéå¬ããŠããŸãã LIFULLäž»å¬ã®æè¡ååŒ·äŒ Ltech ã#21 LIFULL HOMEâSãæ¯ããæ€çŽ¢æè¡ãéå¬ã¬ããŒã ïŒç€Ÿå€åãïŒ ç€Ÿå
ããã¯ã«ã³ãã¡ã¬ã³ã¹LIFULL Tech Hubãéå¬ããŸãã ïŒç€Ÿå
åãïŒ æ¯æãæè¡çãªè©±ããããŒã ã®ãããžã§ã¯ãç®¡çæ¹æ³ãªã©æ§ã
ãªããŒãã§ã€ãã³ããéå¬ãããŠãããèªéšçœ²ã§æ
åœããŠããæ¥åç¯å²ä»¥å€ã®åéã®æè¡ã»ç¥èãåŸãããšãã§ããŸããçµæŽãæ
åœæ¥åã«éãããåžæããã°èª°ã§ãæãæããŠçºè¡šã§ããã®ã§ãå°ããªæ¹åã§ãå
šç€Ÿçã«æ¡å€§ããŠããããšãã§ããŸããç§ãå
¥ç€ŸããŠ2åçšåºŠèªåãæ¹åã®ããåãçµãã ããšãçºè¡šããããšããããŸãã ãŸãšã ä»å玹ä»ããæŽ»å以å€ã«ãLIFULLã§ã¯ ãšã³ãžãã¢ã®æ
å ±åãæé·ãããããšãã§ããæ§ã
ãªæŽ»å ãããŠããŸããããããæŽ»åãããšã³ãžãã¢ãšããŠã¿ããªã幞ãã«ãããããšããæ³ãã®å®çŸã«ã€ãªãããLIFULLã®ç€Ÿæ¯ã§ãããå©ä»äž»çŸ©ããšãç¹ãã£ãŠãããšæããŸãã LIFULLã®ãšã³ãžãã¢çµç¹ã¯ ãšã³ãžãã¢ãšããŠçµå¶ããªãŒããã ããšã§æŽ»èºãããšããã¹ããŒã¬ã³ãæ²ããŠããŸããçæçã«æè¡ã®å¹
ãåºããã ãã§ãªããæè¡ãææ®µãšããŠäžé·æçã«ç€ŸäŒèª²é¡è§£æ±ºã«è²¢ç®ããŠããããšãç®æããŠããŸãã LIFULLã§ã¯ã³ãŒãã¬ãŒãã¡ãã»ãŒãžã§ãããããããLIFEããFULLã«ããã®å®çŸãç®æããŠãåœç±ã幎霢ã«é¢ä¿ãªãå
±ã«åããŠããã ãã仲éãåéããŠããŸããèå³ãããæ¹ã¯ä»¥äžã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co
ãšã³ãžãã¢ã®æŸå°Ÿã§ããLIFULL HOME'S ã®å£²è²·é åãæ¯ãããšã³ãžãã¢ããŒã ã®ãããžã¡ã³ããæ
åœããŠããŸãã ç§ãæå±ããçµç¹ã§ã¯LIFULL HOME'Sããããè¯ã䟡å€ãæäŸããŠããããã«ããšã³ãžãã¢ã®ãæ¥åå¹çåããšãã³ãã¥ãã±ãŒã·ã§ã³æŽ»æ§åãã課é¡ãšãªã£ãŠããŸããä»åã¯ããããå¹çè¯ãé²ããããã«åãçµãã å
容ã玹ä»ããŸãã çµç¹ã®èª²é¡ æ¥åå¹çå ã³ãã¥ãã±ãŒã·ã§ã³æŽ»æ§å äž¡ç«ã®ããã®åãçµã¿ éå¬ã®æºå ã³ã³ãåœæ¥ã®æµã ãã®åŸã®åãçµã¿ ãŸãšã çµç¹ã®èª²é¡ æ¥åå¹çå ãããã¯ããšã³ãžãã¢ãªã³ã°éšã§ã¯ããŠãŒã¶ãŒãžã®äŸ¡å€ãããæ©ãããè¯ãæäŸããããã«ãåžžã«æ¥åããã»ã¹ã®å¹çåãæ€èšããŠããŸãã KPIãããžã¡ã³ã ãå
ã«ãã©ã®ãããªäœæ¥ãããã«ããã¯ã«ãªã£ãŠããããé©å®æŽãåºããªããçå®ã«é²ããŠãããŸãã ããã«ããã¯ã®åæãããããŒã¿ããŒã¹ããã®ããŒã¿ååŸæ¥åïŒSQLäœæïŒã«å²ããŠããæéãé·ããããšããçµæãèŠããŠãããåæžãæ€èšããŠããŸããã ã³ãã¥ãã±ãŒã·ã§ã³æŽ»æ§å LIFULLã§ã¯éšçœ²ãããŒã ã®çµæãé«ããããã«ãç·äŒããšãã圢ã§ã®å Žäœããè¡ã£ãŠããããããã¯ããšã³ãžãã¢ãªã³ã°éš2ãŠãããã§ãæã«äžåºŠã®ãŠãããç·äŒãéå¬ããŠããŸãã ãªã¢ãŒãã¯ãŒã¯äžå¿ã§ã®æ¥åã§ã¯çŽæ¥äŒè©±ããæ©äŒãå°ãªããªã£ãŠãããããã°ã«ãŒããè¶
ããã³ãã¥ãã±ãŒã·ã§ã³ã®æŽ»æ§åã¯çµç¹ã®èª²é¡ãšãªã£ãŠããŸãã äž¡ç«ã®ããã®åãçµã¿ ããã§ãïŒãæ¥åå¹çåãã«ã€ãªããïŒSQLãäœæããã³ã³ãããïŒãã³ãã¥ãã±ãŒã·ã§ã³æŽ»æ§åãã®ããã«ïŒãŠãããç·äŒã®å Žã§è¡ãããšã«ããŸããã ããŒã ã«åãããŠãå¶éæéå
ã«å®æããSQLã®æ°ã§ç«¶ã£ãŠãããããšã«ããŸãã éå¬ã®æºå éå»ã«ãã£ãããŒã¿æœåºã®äŸé Œãã»ãã®è·çš®ã®ã¡ã³ããŒãžã®ãã¢ãªã³ã°ãå
ã«ããããã°ä»åŸã®æ¥åãæ¥œã«ãªããããªSQLããã€ã¡ãŒãžããŠäœåããŸãããåé¡ãšããŠææç©ã«æåŸ
ãããæ¡ä»¶ãšãã«ã©ã åãäžããããã«ããŠããŸãã åé¡ã®ãµã³ãã« æçµçã«30åçšåºŠã®åé¡ãçšæããŸãããããã¹ãŠã®åçãçšæããã®ã¯é£ããïŒãããçšæãããšéå¬ã®æå³ããªããªãããïŒãæ£è§£ã¯ææç©ã®å
容ãã軜ããã§ãã¯ã§å€æããããšã«ããŸãããâ»ææç©ã®ã¬ãã¥ãŒã«ã€ããŠã¯åŸè¿°ããŸãã ã³ã³ãåœæ¥ã®æµã éå¬ã12æåŸåã ã£ãããšããããã°ã«ãŒããçŽ
çµãšçœçµã®2ããŒã ã«åããŠç«¶ã£ãŠããã圢åŒã§å®æœããŸããã åå è
ã¯äººæ°ãå€ãã£ããããããŒã å
ã§Meetã§ã®éšå±ã®åå²ãSlackã®ããã«ã掻çšããåæ
ãè¡ããªããé²ããŠãããŠããããã§ãã瀟æŽã§ãã©ã³ã¹ãåã£ãŠãã¢ã決ãããããæ°ç¯ãã³ã·ã§ã³é¢é£ã¯è©³ããã®ã§ä»»ããŠãã ããããšãããããªåŒ·ã¿ã§ããŒã ããªãŒãããããåããŒã ã§å¹çãèããªããåãçµããŠããŸããã éå¬ã®ææãšããŠå€ãã®SQLãã§ãããããé£ã®éšçœ²ã®ã¡ã³ããŒãšã®äŒè©±ã®æ©äŒãäœããããšã§ãåœåã®ç®çã¯éæã§ãããšæããŠããŸãã ãã®åŸã®åãçµã¿ ããŸããŸãªããŒã¿ãååŸã§ããããã«ã¯ãªããŸããããããªããã®ããŒãã«ããååŸããã®ããããªããã®æ¡ä»¶ãçµãã®ãããšããçåãè§£æ¶ããããŠããªãç®æããããŸãã ãã®ããé±ã«äžåºŠæå¿ã®ã¡ã³ããŒãéãŸãã宿ããSQLãäžã€ãã€çŽè§£ããªããLIFULL HOME'Sã®ç¥èãèç©ããŠããå匷äŒãè¡ã£ãŠããŸãããã®äŒã¯ã¬ãã¥ãŒãå
ŒããŠãããããã«ããæ£ç¢ºã«ããŒã¿ãæœåºã§ããããã¿ãæŽã£ãŠããŠããŸãã ãŸãšã SQLäœæã®ã³ã³ããéããŠããæ¥åå¹çåããšãã³ãã¥ãã±ãŒã·ã§ã³æŽ»æ§åãã®äž¡ç«ã«åãçµãã äºäŸã«ã€ããŠç޹ä»ããŸãããä»åŸãããè¯ããŠãŒã¶ãŒãžã®äŸ¡å€æäŸãè¡ã£ãŠããããã«ãç¡é§ãçãæ¬è³ªã«éäžã§ããããã¿ãäœã£ãŠãããããšæããŸãã æåŸã«ãLIFULL ã§ã¯ãšãã«æé·ããŠããã仲éãåéããŠããŸãããããããã°ãã¡ãã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co
ããã«ã¡ã¯ããšã³ãžãã¢ã®äžå³¶ã§ãã çŸåšã¯ã¢ã¯ã»ã·ããªãã£æšé²ã°ã«ãŒãïŒä»¥äžæšé²ã°ã«ãŒãïŒã«åšç±ããŠããŸãã 以ååçµç¹ã®ç޹ä»èšäºãããã€ããããŸãããããã®éãåŒç€Ÿã¯èªç€Ÿã®éå¶ãããµãŒãã¹ãã¢ã¯ã»ã·ãã«ã«ããããæ¥ã
奮éããŠããŸãã www.lifull.blog www.lifull.blog 以åã®èšäºã§ã¯ã©ããã£ããã€ã³ãã§åçµç¹ãã§ããããã©ã®ããã«æšé²ããŠãããã«ã€ããŠè©±ãŸããã ä»åã¯ããããã£ã掻åã®äžã§ããã€ãæè¡çãªå¯ç£ç©ãçãŸããã®ã§ãã®è©±ãããããšæããŸãã ããŒããŒãæäœç·š CSSã®æŠå¿µè·é¢ ãããã« ããŒããŒãæäœç·š ã¢ã¯ã»ã·ããªãã£å¯Ÿå¿ã«ããã£ãŠãåºæ¬çãªããããšã®äžã€ã«UIãããŒããŒãæäœå¯èœã«ãããšããäœæ¥ããããŸãã èªç€Ÿã®ãµãŒãã¹ã«ãããŒããŒãæäœäžèœãªããã€ãã®UIã®ååšãèªèããŠãããããããå®éã«çŽããŠãããšããããšãããŠããŸãã ä¿®æ£æãå Žåã«ãã£ãŠã¯JavaScriptãèšè¿°ããå¿
èŠãããã®ã§ãããããã«ããã£ãŠæã
ã®æ¡çšããŠããStimulusãšããã©ã€ãã©ãªã«è¥å¹²ã®äžæºããããŸããã(æŠãæ°ã«å
¥ã£ãŠããŸã) ããã¯HTMLåŽããã¿ãŠå®£èšçã«èšè¿°ããããšãè¯ããšããåã©ã€ãã©ãªã®æéã«å¯ŸããŠããŒããŒãã€ãã³ãã®ãã³ãã©ã宣èšçã«èšè¿°ããããšãé£ãããšãããšããã«ãããŸãã Stimulus3.1ãŸã§ã¯ããŒããŒãã€ãã³ãã«ããã¯ããŠäœããã®åŠçãèšè¿°ããå Žåã以äžã®ããã«æžããŸãã < button type = "button" role = "tab" data - action = "keydown->tab#moveLeft keydowon->tab#moveRight" > ã¿ã1 </ button > // tab_controller.js ... moveLeft(evt) { if (evt.key !== 'ArrowLeft' ) { return ; } // ã¿ããäžåå·Šã«åãæ¿ãã } moveRight(evt) { if (evt.key !== 'ArrowRight' ) { return ; } // ã¿ããäžåå³ã«åãæ¿ãã } keydownãçºçããæã«moveLeftãšmoveRightãåããšãããšãããŸã§ã¯HTMLåŽããçè§£ã§ããŸããããã®å®è£
ã§ã¯ã"ã©ã®ããŒ"ãæŒããæã«åäœãããµããŸããªã®ããŸã§èª¬æãããŠããããèªã¿æã®é¢å¿ã¯JavaScriptã®å®è£
ã«ãŸã§å°éããŠããŸããŸãã ããã«äžæºãæããŠããã®ã§Stimulusèªèº«ã«æ¬ä»¶ã®IssueãšPRããªããŠ3.2ã§åã蟌ãã§ãããã«è³ããŸããã github.com stimulus.hotwired.dev ããã«ããStimulusã§ãä»ãŸã§ãã宣èšçã«èšè¿°ã§ããããã«ãªããUIã®ãµããŸãã«å¯Ÿããé¢å¿ãHTMLã«å°ã蟌ããããšãã§ããããã«ãªããŸããã < button type = "button" role = "tab" data - action = "keydown.left->tab#moveLeft keydowon.right->tab#moveRight" > ã¿ã1 </ button > CSSã®æŠå¿µè·é¢ UIã®ä¿®æ£ã¯æã«ã¯HTML, JavaScriptã ãã§ã¯å®çµãããCSSã®ä¿®æ£ãå¿
èŠãªã±ãŒã¹ããããŸãã ãã ãé·å¹Žéçšããç¶ããŠãã巚倧ãªãµãŒãã¹ã«ãããŠã¯ãæããããã¬äŸåãšåãåããªããã°ãªããªãããšããããŸãã AãšããUIãçŽãããšãããããããBãšããCSSã«äŸåããŠããŠãããã«ãã®Bã¯Cãšããå¥ã®ããŒãžã®ãã䌌ãUIã«ãé©å¿ãããŠããŠ...ãšãã£ãåä»ãªäŸåã§ãã å°ãã®æ·±ãã®äŸåãªãææ¡ã§ããŠãããšãŠãæ·±ãäŸåã«ãªããšãªããªãäžççžã§ã¯ãããŸããã ããã¯HTMLãšCSSã®æŠå¿µè·é¢ãéããŠãããæ
ã«èµ·ããåé¡ã§ãã world.hey.com qiita.com äž¡è
ã®è·é¢ãéãããšã§çæ¹ããŸãå¥ã®äœããšã®äŸåãèµ·ããããããªã£ãŠããã®ã§ãã æ¥ããããªããããã€ãã®å®è£
ã«ããã£ãŠãã®äŸåèµ·å ã§è¡šç€ºåŽ©ããèµ·ãããŠããŸããç·æ¥å¯Ÿå¿ãè¡ããŸããã ããããããšãããŠãããã¡ã«ãç¶ç¶çã«çŽããŠããã«ã¯(ããã¯ã¢ã¯ã»ã·ããªãã£å¯Ÿå¿ã ãã«ãšã©ãŸãã)ãã®æŠå¿µè·é¢ããªãããŠãããªããšãããããµããããããªããªãšæããŸããã ããã§ãã®æŠå¿µè·é¢ããªãããŠHTMLãšCSSããŽã£ããäžå¯Ÿäžã§å¯Ÿå¿ããããã«Tailwind CSS(UtilityCSSã®ã©ã€ãã©ãª)ãå°å
¥ããŸããã tailwindcss.com ããŒã話ã®ããŒã話ã§ãããå°å
¥ã«ãããããµã€ãå
ã§ããŒã¹ãšãªãfont-sizeã100%ã ã£ãã62.5%ã ã£ãããšæºããŠããåé¡ãæµ®ã圫ãã«ãªããŸããã ãã®åé¡ã¯ãã³ãã¬ãŒããåèµ·çã«ããŒã¹ããŠ62.5%ã®é©çšããããã³ãã¬ãŒãã§åç
§ãããŠããCSSããããããªãCSSãåé¡ããCSSããŒãµã§transformããããŠåäœãåããããšãã£ãããšãããŠä¹ãè¶ããŸããã Tailwind CSSã¯ã¹ã¿ã³ãã¢ãã³ã§ãåäœããããã«ãªã£ãŠãããããããå©çšè
åŽãPostCSSãå°å
¥ããªããŠããå
å
ããŠããPostCSSãå©çšããŠåäœãããããšãã§ããŸãã ã¡ã³ããã³ã¹ã³ã¹ãã®é¢ããèããŠããªãã¹ãããŒãµç³»ã©ã€ãã©ãªãšã®äŸåãå°ããããããšèãããã®ã¹ã¿ã³ãã¢ãã³ãªæåã«ã®ã£ãããããšèããŸããã ãããããªãªãŒã¹ã«ããã£ãŠããã£ãã·ã¥ãã¹ãã£ã³ã°ã®æ©æ§ãåæã«å¿
èŠã ã£ãã®ã§ãTailwind CSSãå
å
ããŠããPostCSSã«ãã£ãã·ã¥ãã¹ãã£ã³ã°ã®æè£œãã©ã°ã€ã³ãé©å¿ããããšããããŸãåäœããªãããšãããããŸããã ãã£ãã·ã¥ãã¹ãã£ã³ã°ãšã¯ ãã©ãŠã¶ããã£ãã·ã¥ãããå€ããã¡ã€ã«ãåç
§ãç¶ããªãããã«ããããã®æ©æ§ (ãã¹ãã¯ãšãªã«ãã¡ã€ã«ã®ãã€ãžã§ã¹ãå€ãå
¥ãããããã±ãŒã¹ãå€ã) ãœãŒã¹ãèªãã§ã¿ããšãããã©ãããTailwind CSSã¯å
éšã§PostCSSãå©çšããŠãããã®ã®ãããã§æçµçã«çæããããã¡ã€ã«åæ
å ±ã«é¢ããŠã¯ç Žæ£ããŠåãããã«ãªã£ãŠããããã§ããã ããã§ãTailwind CSSã«å¯ŸããŠå
å
ããPostCSSã§çæããããã¡ã€ã«åæ
å ±ãå°éããå®è£
ãPRã§ææ¡ãããšãããæ°æ¥ã®ãã¡ã«åã蟌ãã§ããã ããŸããã github.com ãã¡ãã¯Tailwind CSS 3.2.5ã§æèŒãããäºå®ã«ãªã£ãŠããŸãã ãããã« äœãäœæ¥ããã«ããã£ãŠããã€ãã®å°é£ãšåãåãããã¡ãã«äœæ¥ãã¹ã©ã€ãããŠããyak shavingã¯ãšã³ãžãã¢ã®å®¿åœãªã®ãããããŸããã ããããªäœæ¥ãéããŠã¹ãã€ã©ã«çã«ããããæ¹åãè¡ãããšãããªãšæããŸãã æåŸãŸã§ãèªã¿ããã ãããããšãããããŸãããLIFULL ã§ã¯å
±ã«åã仲éãåéããŠããŸãïŒ hrmos.co hrmos.co
AIæŠç¥å®€ã®å¶æã§ããç§ã¯AIæŠç¥å®€ã®ãšã³ãžãã¢ãããŒãžã£ãæ
ã£ãŠãããŸããã ã€ãããŒã·ã§ã³ãããžã¡ã³ãå§å¡äŒïŒIMå§å¡äŒïŒ ãšããå§å¡äŒæŽ»åã«ãåå ããŠããŸããä»åã¯ãIMå§å¡äŒã§åãçµãã§ãããŸã æ°èŠæè¡ã®èç©ãä¿é²ããããã®æŽ»å ã«ã€ããŠãæçš¿ããããšæããŸãã åŒç€ŸLIFULLã¯ç€Ÿæ¯ã§ã å©ä»äž»çŸ© ããæ²ããŠãã 瀟äŒèª²é¡è§£æ±ºåäŒæ¥ ã§ãããã³ãŒãã¬ãŒãã¡ãã»ãŒãžã§è¡šæããŠããã ããããLIFEããFULLã«ã ãã®å®çŸãç®æããŠããŸãããã®å®çŸã«åããŠãã©ã®ãããªç€ŸäŒèª²é¡ã解決ããŠããã®ããåŒç€Ÿã®åãçµã¿ãã LIFULLã¢ãžã§ã³ã ããšããŠå
¬éããŠããŸããè€éãªç€ŸäŒèª²é¡ã解決ããŠããããã«ã¯ã瀟äŒèª²é¡ãçãŸããç€ŸäŒæ§é ãåå ãæ·±ãçè§£ããããšã¯ãã¡ããã®ããšã 解決ã«å¿
èŠãªæè¡ãé©çš ããŠããå¿
èŠããããšèããŠããŸããå¿
èŠãªæè¡ã¯äžæäžå€ã§ç²åŸã§ãããã®ã§ã¯ãªãããã ç¶ç¶çã«æ°ããªæè¡ãç²åŸã»èç© ããŠãããã€ãããŒã·ã§ã³åµåºã«ã€ãªããŠããå¿
èŠããããšèããŠããŸãã ã€ãããŒã·ã§ã³ãããžã¡ã³ãå§å¡äŒãæè¡èç©ããŒã ããšã¯ ã€ãããŒã·ã§ã³ãããžã¡ã³ãå§å¡äŒïŒIMå§å¡äŒïŒã¯ã ã€ãããŒã·ã§ã³åµåºãµã€ã¯ã«ãå éããããšã³ãžã³ ãã®åœ¹å²ãæ
ã£ãŠãããå°ããªæ¹åã®ã¿ãªãã éé£ç¶çãªå€§ããªé©æ°ã»é©é² ãããããã€ãããŒã·ã§ã³ãåµåºããæåã®éžæã«åãçµãã§ããŸãã ãã®IMå§å¡äŒã§ã¯å¹Ÿã€ãã®ããŒã ã飿ºãã㊠ã€ãããŒã·ã§ã³ãããžã¡ã³ãäœå¶ã®æ§ç¯ ãé²ããŠãããç§ã¯æ°èŠæè¡ã®èç©ãé²ããããã®ã æè¡èç©ããŒã ããæ
åœããŠãããŸãããã®ãæè¡èç©ããŒã ãã¯ã ã ã瀟äŒèª²é¡ãäºæ¥èª²é¡ã®è§£æ±ºã«ã€ãªããæ°èŠæè¡ãç²åŸã»èç©ã»å
±æããæåãéžæããã ããšãç®çãšããŠãæ°èŠæè¡ã®èç©ãä¿é²ããããã®æŽ»åã«åãçµãã§ããŸãã å€ãã®ç€Ÿå¡ãæ°èŠæè¡ãå®éã«è§Šã£ãŠã¿ãŠç²åŸãããããäºæ¥ã§äœ¿ãã圢ã§èç©ããä»ã®ç€Ÿå¡ããã®æè¡ãå©çšã§ããããã«å
±æããŠããããšããæµããäœã£ãŠããããã§ãã Social Innovation Forumã§æ³šç®ãããæè¡ åŒç€Ÿã§ã¯ã瀟å¡äžäººã²ãšãã瀟äŒèª²é¡ã«ã€ããŠåãåãã 課é¡è§£æ±ºã«åããã¢ã€ãã¢ãæè¡ãšæãåãããŠçºæ³ããããã®ç¥ç亀é
ã®å Ž ãšãªãã SOCIAL INNOVATION FORUM ãïŒ SIF ïŒãéå¬ããŠããŸãã æè¡èç©ããŒã ã¯ããã®SIFã®äžã§ç€Ÿå¡ã®ã¢ã€ãã£ãšãŒã·ã§ã³ãä¿é²ããããã«ã 瀟å
å€ã®æ°èŠæè¡ããŸãšããããã¯ã¿ã¹ã·ãŒãã ãšåŒã¶ã·ãŒããäœæããŠç€Ÿå
å
¬éããŸãããã©ã®ãããªæè¡ãªã®ãã ãã®æè¡ã§äœãã§ããã®ã ããå¹³æã«ãŸãšããŠãããéãšã³ãžãã¢ã§ãçè§£ã§ããããã«ä»äžããŸããã SIFã®ã¢ã€ãã£ãšãŒã·ã§ã³ã§ã瀟å¡ã課é¡è§£æ±ºããããã«æŽ»çšããæè¡ãéžã¶ã¯ãŒã¯ãããã®ã§ããããã®éã«éžã°ããæè¡ãã©ã®ãããªãã®ãç°¡åã«ã§ãã玹ä»ããŸãã åã
åã§ äž»ã«æ³šç®ãéãŸã£ãŠããæè¡ ã¯äžèšã®éãã§ãã AIæè¡ ã¬ã³ã¡ã³ãæè¡ ãããã®æè¡ã«æ³šç®ãéãŸãã®ã¯ AIæŠç¥å®€ã®äžå¡ãšããŠã¯å¬ããçµæ ã§ããã"AI"ã"ã¬ã³ã¡ã³ã"ãšããåºãèšèã« éåºŠãªæåŸ
ãéãŸã£ãŠãã衚ã ã§ããããäœã§ãã§ããéæ³ã®ããŒã«ãšããŠèããããŠããªãããšè€éãªå¿å¢ããããŸããã äžæ¹ã§ååã®SIFã§ã¯åã
åãšç°ãªãäžèšã® æ°ããªæè¡ã«æ³šç® ãéãŸããŸããã Web3æè¡ XRæè¡ ãã«ã¹ããã¯æè¡ Web3æè¡ ã XRæè¡ ã«ã€ããŠã¯ãã¡ã¿ããŒã¹ã»DAOïŒDecentralized Autonomous OrganizationïŒã»NFTïŒNon Fungible TokenïŒãšãã£ã æ°ããæŠå¿µãžã®æåŸ
ãé«ãŸã£ãŠãããšæããŸããä»®æ³çŸå®ãåœããåã®ããã«ãªããšãç©ççãªå¶çŽã«çžãããããšãªãã ãã€ã§ãã©ãã§ã誰ãšã§ãã€ãªããããšãã§ããäžã®äž ã«ãªããããããŸããã ãã«ã¹ããã¯æè¡ ã«ã€ããŠã¯ãç§èªèº«ãã³ããçŠã§åšå®
å€åãäžå¿ãšãªã£ãåŸãéåäžè¶³ã»äœåäžè¶³ã«é¥ãããã«ã¹ããã¯ãžã®èå³ã匷ããªããŸãããç§äºã§æçž®ã§ãããçŸåšã¯ãŠã§ã¢ã©ãã«ããã€ã¹ã身ã«çããŠéåéãèšæž¬ãã1æ¥ã®ç®æšæ¶è²»ã«ããªãŒã決ããŠããããè¶
ããããã«ãŠã©ãŒãã³ã°ãç¶ç¶ããŠããŸããå¥åº·ç¬¬äžãšããèšèãããããããå¥åº·ã¯éèŠãªããŒãã§ããããã å¥åº·ç¶æã¯å€§ããªç€ŸäŒèª²é¡ã®äžã€ ã ãšæããŠããŸãã IMæè¡èç©ã¬ããŒã ããäžã€ã®åãçµã¿ãšããŠã 瀟äŒèª²é¡ãäºæ¥èª²é¡ã«é¢é£ããæ°èŠæè¡ ã«ã€ããŠãIMæè¡èç©ããŒã ã é±1åã®é »åºŠã§ç€Ÿå
çºä¿¡ ããã IMæè¡èç©ã¬ããŒã ããå§ããŠããŸããäžã§è¿°ã¹ãSIFãšããã€ãã³ãã®æã®ã¿ãªãããæ®æ®µããæ°èŠæè¡ã«è§ŠããŠããã ããæè¡èç©ãä¿é²ãããããã§ãã ãªããããã§èšèŒããã æ°èŠæè¡ ããšã¯ã äžã®äžã§ãæ°ããã®å
é²çãªæè¡ äžã®äžã§ã¯æ¢ã«æŽ»çšãããŠããæè¡ã ãLIFULLãLIFULL HOME'Sã«ã¯ãŸã åãå
¥ããããŠããªãæè¡ ã®äž¡æ¹ãæããŠããŸãã é±1åã®é »åºŠã§æ°ããªæçš¿ãã¿ãæ¢ãã®ã¯å€§å€ã§ããããŸãããIMæè¡èç©ããŒã ã®ã¡ã³ãã亀代ã§ã 瀟äŒèª²é¡Ãæ°èŠæè¡ ã äºæ¥èª²é¡Ãæ°èŠæè¡ ã ä»ç€Ÿã®ææ°æè¡æ
å ± ãªã©ãªã©ããã©ãšãã£ã«å¯ãã çºä¿¡ãããŠããŸãããŸããç¶ç¶æ§ãéèŠããããã«æ¯åã®ã¬ããŒãã§ã¯çãã§ãçºä¿¡ããããšãåªå
ããŠããŸããã ç¶ç¶ã¯åãªã ããšãèšããŸãã®ã§ãçºä¿¡ãçµ¶ãããã«èå³ãæ¹ãã¬ããŒããå¢ãããŠãããããšæãã2022幎12æäžæ¬æç¹ã§ã¯ Vol.11ãŸã§çºè¡ ããŠããŸãã ãããŸã§ç§ã¯ãSIFã§æ³šç®ãéãŸã£ãæè¡ã®ç޹ä»ãã»ãæ°èŠæè¡ã«é¢ããæ
å ±æºã®ç޹ä»ãã»ããµãã«ãŒWæ¯ã®VARïŒVideo Assistant RefereeïŒãæ¯ããæè¡ã«é¢ããèå¯ããšããããŒãã§çºä¿¡ãããŠããŸãããç§ã¯ç€ŸäŒèª²é¡è§£æ±ºãžã®èå³ã匷ããããä»åŸã¯ç€ŸäŒèª²é¡ã«å¯ŸããŠã©ã®ãããªæè¡ã䜿ãããŠããã®ãæ°èŠæè¡æŽ»çšã®äºäŸãäžå¿ã«ç޹ä»ããŠããäºå®ã§ãã IMæè¡èç©ã¬ããŒã ãããã« ä»å㯠ã€ãããŒã·ã§ã³ãããžã¡ã³ãå§å¡äŒ ã® æè¡èç©ããŒã ã§ã®åãçµã¿ã玹ä»ããŸããã 瀟å¡ã®äžäººã²ãšããæ°èŠæè¡ã«ç®ãåããŠæè¡ãç²åŸã»èç©ã»å
±æãããã®æè¡ã瀟äŒèª²é¡ãäºæ¥èª²é¡ã«é©çšããããšã§èª²é¡è§£æ±ºãããããšãã ã€ãããŒã·ã§ã³åµåºã®ä»çµã¿å ã«åããŠé©é²ãç¶ããŠãããããšæããŸãã æåŸã«ãªããŸãããLIFULLã§ã¯å
±ã«æé·ã§ãããããªä»²éãåã£ãŠãããŸããAIæŠç¥å®€ã§ã¯ ããŒã¿ãµã€ãšã³ãã£ã¹ã ã MLOpsãšã³ãžã㢠ãåéäžã§ãã ã«ãžã¥ã¢ã«é¢è«ããããŸãã®ã§ãèå³ããæ¹ã¯æ¯éãå¿åãã ããïŒ hrmos.co hrmos.co
LIFULLæå¹éçºæ ç¹ã§åããšã³ãžãã¢ã®æç°ã§ãã æå¹ã§ã¯æ¬æ Œçã«éªãéãå§ããå¯ããéåžžã«å³ããææã«ãªã£ãŠããŸããã æ¬ãšã³ããªãŒã¯ã LIFULL Advent Calendar 2022 ã12æ22æ¥ã®èšäºã§ãããLIFULLã®ãããã¯ãã®å¯èŠ³æž¬æ§ãåäžããã話ããããŠããã ããŸãã èæ¯ LIFULLã§ã¯ãã€ã¯ããµãŒãã¹ãã©ãããã©ãŒã ãšããŠå
補ã®ãKEELããšããPaaSãçšæãããããå©çšããŠã¢ããªã±ãŒã·ã§ã³ãéçºããããšã§éçºè
ã®çç£æ§ã®åäžãå³ã£ãŠããŸããã KEELã«ã€ããŠã®è©³ãã話ã¯ä»¥äžãåèã«ããŠãã ããã www.lifull.blog ãã°åºç€ãKEELãæäŸããæ©èœã®äžã€ã§ãåœæã¯AWSã®ãã«ãããŒãžããµãŒãã¹ã§ããCloudWatch Logsãå©çšããŠããŸããã ç¹ã«CloudWatch Logs Insightã®äœéšãè¯ãããããå©çšããŠã¢ããªã±ãŒã·ã§ã³ã®ãã°ãæè»ã«æ€çŽ¢ããããšãã§ããŠããŸããã ããããåœæã®ãã°åºç€åšãã§ã¯ä»¥äžã®åé¡ç¹ããããŸããã ãã°ã¯CloudWatch Logsãã¡ããªã¯ã¹ã¯Grafanaã§é²èЧãšãããŒã«ã2ã€ã«åãããŠå©çšããŠããç¶æ³ã ã£ã ãã€ã¯ããµãŒãã¹æ¯ã®ãã°ã«å
±éIDãå²ãæ¯ãããŠããããç¹å®ã®ãªã¯ãšã¹ãã«é¢é£ãããã°ã®èª¿æ»ã³ã¹ããé«ãã£ã CloudWatch Logsã«ãããè²»çšãå¢å€§ãã€ã€ãã£ã ãããã®ç¶æ³ãéã¿ãŠãKEELããŒã ã¯Grafana Lokiãå©çšããããå©äŸ¿æ§ã®é«ããã°åºç€ãåæ§ç¯ããæ±ºæã«è³ããŸããã Grafana Lokiãšã¯Grafana LabãæäŸããã¹ã±ãŒã©ãã«ã§é«å¯çšæ§ãªãã°éçŽã·ã¹ãã ã§ãã éçŽããããã°ã¯LogQLãšåŒã°ããã¯ãšãªã§æè»ã«æ€çŽ¢ã»éèšããããšãå¯èœã§ãããã¹ãã¬ãŒãžã¯S3ãªã©ãå©çšããŠè²»çšé¢ã§ãå®ãæããããšãã§ããŸãã grafana.com CloudWatch Logsãšã®æ¯èŒæ€èšŒ ãããªãGrafana Lokiã«ç§»è¡ããŠããéçºè
äœéšã倱ãããŠããŸã£ãŠã¯æå³ããããŸããã KEELããŒã ã§ã¯ãGrafana Lokiã«ãããã°æ€çŽ¢äœéšãCloudWatch Logsãå©çšããŠããæãšå€ãããªããããã以äžã®ãã®ãæäŸã§ãããæ€èšŒããå¿
èŠããããŸããã ãŸãæåã®ã¹ããããšããŠãåŸæ¥ã®ãã°åºç€ã«å ããæ€èšŒå¯Ÿè±¡ã§ããGrafana Lokiã«ããã°ãæžã蟌ã¿ãKEELããŒã ã§ãã®äœéšãæ€èšŒããããšã«ããŸããã ããšãã°CloudWatch Logs Insightã®ä»¥äžã®ãããªã¯ãšãªã¯ fields @timestamp, @message, @logStream | filter structural_log.status >= 499 | sort @timestamp desc | limit 20 Grafana Lokiã§ã¯ãLogQLãçšããŠä»¥äžã®ããã«åæ§ã®è¡šçŸãããããšãã§ããŸãã {grouping="kubernetes.ns.svc"} | json | structural_log_status >= 499 CloudWatch Logs Insightã§ã§ãã以äžã®ãããªéèšã«ã€ããŠã¯ stats count(*) by @logStream | filter structural_log.status >= 499 æ€çŽ¢ãããã°ãããã¢ãããã¯ã¹ã¿ãã£ã¯ã¹ã¢ã€ã³ã³ãã¯ãªãã¯ããããšã§ç°¡åãªéèšçµæãåŸãããšãã§ããŸãã 以äžã®ãããªã¯ãšãªã§ä»£æ¿ããçµæãåŸãããšãã§ããŸãã sum( rate( {grouping="kubernetes.ns.svc"} | json | structural_log_status >= 499 [1m] ) ) by (metadata_pod_name) äžèšã®ããã«CloudWatch Logs Insightã«ãããã°æ€çŽ¢ã¯ãLogQLã§ã»ãŒä»£æ¿ããããšãã§ãããããã®äœéšã¯Grafana Lokiã§ãã»ãšãã©æãªãããããšã¯ãªããšå€æããŸããã Chrome Extentionã«ããGrafana Lokiã®äœéšåäž CloudWatch Logs Insightã§ã¯ãfieldã«@logStreamãæå®ããããšã§ã該åœãã°ä»è¿ã®ãã°ã衚瀺ãããªã³ã¯ãçæãããŸãã Grafana Logã«ã察象ãã°ã®ååŸã®ãã°ã衚瀺ããæ©èœã¯ãããŸãããå°ã
䜿ãåæãæªãå©çšãã¥ããç¶æ
ã§ããã ããã§KEELããŒã ã¯Chrome Extentionãç¬èªã«éçºããŠãGrafana Lokiã®HTMLãæžãæããåçã®ãªã³ã¯ãäœæããããšã«æåããŸããã å
·äœçã«ã¯ãGrafana Lokiã«è¡šç€ºããããã°ã®timestampãã¯ãªãã«ãã«ã«ããŠããã®ååŸã®æé垯ãã¯ãšãªã«å ãããã°ã®æ€çŽ¢çµæã«é·ç§»ã§ããããã«ããŸãããããããããšã§CloudWatch Logs Insightã®@logStreamãšåãäœéšãå®çŸããããšãã§ããŸããã ãã®Chrome Extentionã¯ããã ãã®å©çšã«ãšã©ãŸãããåŸè¿°ããTraceIDãå©çšãããã°æ€çŽ¢ãžã®å°ç·ãäœæãããããšã©ãŒãã°ã«æžãããã¹ã¿ãã¯ãã¬ãŒã¹ããGitHubäžã®è©²åœã³ãŒãã«é£ã¹ãããã«ãããªã©ãè²ã
å¿çšããããšãã§ããŸããã TraceIdã®åã蟌㿠ãããªãäœéšåäžãç®æããKEELããŒã ãæ¬¡ã«è¡ã£ãã®ã¯ãLIFULL HOME'Sãžã®ãªã¯ãšã¹ãã«å
±éã®ID(TraceId)ãå²ãæ¯ããåŸç¶ã®ãã€ã¯ããµãŒãã¹ã«ãããäŒæãããããšã§ããã LIFULL HOME'Sã¯è€æ°ã®ãã€ã¯ããµãŒãã¹ã§æ§ç¯ãããŠãããããããã®ãã€ã¯ããµãŒãã¹æ¯ã«ãã°ã°ã«ãŒããã§ããŠããããããã€ã¯ããµãŒãã¹ã暪æããé¢é£ãã°ã®æ€çŽ¢ãéåžžã«æéã®ãããäœæ¥ã§ããã ç¹å®ã®ãªã¯ãšã¹ãã«é¢é£ãããã°å
šãŠã«TraceIdãä»äžããããšã§ãè€æ°ã®ãµãŒãã¹ã«æ£ãã°ã£ããã°ã暪æã§çµã蟌ãããšãã§ããããã«ãªããŸãã KEELã§ã¯ã以åãããã°ã«å
±éIDãä»äžããéçšãéçºè
ã«æšå¥šããŠããŸããããLIFULLã®äž»èŠãµãŒãã¹å«ãããŸã培åºãããŠããŸããã§ãããçµæããã°ã®æ€çŽ¢ã«æéããããããšã«ç¹ãã£ãŠãããããã¯åŸæ¥ã®ãã°åºç€èªäœã®åé¡ãšããããã¯ããã°ã®éçšæ¹æ³ã®åé¡ãšãã£ãæ¹ãæ£ããã§ãã ä»åã®ãã°åºç€å·æ°ãæ©ã«ããã®èŸºãã®éçšããã£ãããšæŽåããããšã«ããŸããã OpenTelemetryãå°å
¥ããããšã§ãæ¯èŒç容æã«TraceIdã®äŒæãè¡ãããšãã§ããŸãã opentelemetry.io ã¢ã¯ã»ã¹ãã°ã ãã§ãªããšã©ãŒãã°ã«ãå¯èœãªéãTraceIdçãåã蟌ã¿ãç¹å®ã®ãªã¯ãšã¹ããšçŽä»ããããããã«ããŸããã 察象ãšãªããã€ã¯ããµãŒãã¹ã®æ°ã¯å°ãªãã¯ãªãã£ããã®ã®ãåéšçœ²ã®éçºè
ãšååãäœæ¥ãé²ããããšã§ãã»ãŒäž»èŠãªãµãŒãã¹ãžã®TraceIdã®å°å
¥ãçµãããIDã«ããé¢é£ãã°ãæšªææ€çŽ¢ããäœéšãæäŸã§ããããã«ãªããŸããã ããã§ãåè¿°ããChrome Extentionãå©çšãããã°ã«èšèŒãããŠããTraceIdãã¯ãªãã«ãã«ã«ããŠãTraceIdã®ãªã³ã¯ã蟿ãã ãã§å®¹æã«ãã°ã®çµã蟌ã¿ãè¡ããããã«ããŸããã ãªã¯ãšã¹ãã®ãã¬ãŒã·ã³ã° TraceIdãå°å
¥ããå¯ç£ç©ãšããŠããªã¯ãšã¹ãã®åæ£ãã¬ãŒã·ã³ã°ãå¯èœã«ãªããŸããã 以äžã¯ããšãããªã¯ãšã¹ãããã¬ãŒã¹ããçµæã«ãªããŸããããŒã«ã¯Grafana Tempoãå©çšããŠããŸãã ç¹å®ã®ãªã¯ãšã¹ãã«å¯ŸããŠãè£ã§ã¯ã©ã®ãµãŒãã¹ãäœååŒã³åºãããŠããããã©ã®çšåºŠæéãããã£ãŠããããèŠèŠçã«ãããããã«ãªããŸããã ãªã¯ãšã¹ãã®ãã¬ãŒã·ã³ã°ãã§ããããã«ãªã£ãããšã§ãããã«ããã¯ãšãªã£ãŠãããµãŒãã¹ãç¹å®ãããããªãããµã€ãã®ããã©ãŒãã³ã¹ãã¥ãŒãã³ã°ãæãããã«ãªããŸãã å®éããµã€ãã®é«éåãã¯ããPJã®ã¡ã³ããŒããã®æ©èœãå©çšããããšã§ããã©ãŒãã³ã¹æ¹åã«åœ¹ã«ç«ãŠãŠãããŠããŸããã ãã°åºç€ã®åãæ¿ãã®éå£ãäžããããã« ããçšåºŠãã°åºç€ã®äžŠè¡éçšæéãçµãŠæ€èšŒãéããååã«ä»£æ¿ã§ãããšå€æããã¿ã€ãã³ã°ã§ãCloudWatch Logsãžã®ãã°ã®è»¢éãã¹ããããããã°åºç€ãåãæ¿ããŸããã CloudWatch Logsããæ°ãããã°åºç€ã«åãæ¿ããããšã§å€å°ãªããšãéçºè
ã«åŠç¿ã®è² æ
ããããã®ã§ããã®ã³ã¹ããæå°éã«ããããã«KEELããŒã ã§ã¯ãã¥ãŒããªã¢ã«åç»ãçšæããŸãã 1-2åçšåºŠã®åç»ã®äžã§ããã°åºç€ã®æ€çŽ¢ã®ãã¥ãŒããªã¢ã«ãè¡ãããšã§ãããã«éçºè
ãGrafana Lokiã䜿ãããªããã€ã¡ãŒãžãããããã«ããã®ã§ãã ãã®å·¥å€«ããã£ãŠããç¹ã«å€§ããªæ··ä¹±ããªãéçºè
ã¯æ°ãããã°åºç€ãå©çšããŠããããããšãã§ããŠããŸãã å ããŠããã°åºç€ãåãæ¿ããããšã«ããåŸæ¥ã®ãã°åºç€ã«ããã£ãŠããè²»çšã®çŽ70%ãåæžããããšãã§ããŸããã CloudWatch Logsé¢é£è²»çšã®ãã¡ããã®å€§åãå ããã®ãPutLogEventsã§ãããä»åã®ãã°åºç€ã®ç§»è¡ã§ãã®ãããã®è²»çšããã¹ãŠã«ããã§ããã®ã倧ããªèŠå ã§ãã ããã¯å¹Žéã§æç®ãããšããªã倧ããªã³ã¹ãã«ããã«ãªããLIFULLã®ããžãã¹ã«ã倧ããªã€ã³ãã¯ããäžããããšã«ãªããŸããã ãŸãšã CloudWatch Logsã«ããåŸæ¥ã®ãã°åºç€ãGrafana Lokiã«ç§»è¡ãã話ã玹ä»ãããŠããã ããŸããã ç§»è¡åŸã¯ãObservabilityãæ§æããèŠçŽ ã§ãããã¡ããªã¯ã¹ããã°ããã¬ãŒã·ã³ã°ã®å
šãŠã®æ
å ±ãGrafanaã§åç
§ã§ããããã«ãªããŸããã ããã«Grafana LokiãšChrome Extentionãçµã¿åãããããšã§ãCloudWatch Logsãšåçããã以äžã®äœéšãéçºè
ã«æäŸã§ããããã«ãªããLIFULLã®ãããã¯ãã®å¯èŠ³æž¬æ§ãåäžããŸããã ãã«ãããŒãžããµãŒãã¹ã«æ¯ã¹ããšGrafana Lokiãèªåã§éçšããå¿
èŠãããããããã®åã®éçšã³ã¹ãã¯å¢å ãããã®ã®ãäžèšã®äœéšã«å ãéé¡é¢ã§ã®å€§ããªã³ã¹ãã«ããã¡ãªãããããããã°åºç€ã®ç§»è¡ã¯å€§ããªäŸ¡å€ããã£ããšæã£ãŠããŸãã ä»åã話ããããŠããã ãããã°åºç€ã ãã§ãªããKEELããŒã ã®æ§ã
ãªåãçµã¿ãå¥ãšã³ããªãŒã§ç޹ä»ãããŠããã ããŠããŸãã®ã§ããèå³ã®ããæ¹ã¯ä»¥äžã®ãšã³ããªãŒäžèЧãã芧ãã ããã www.lifull.blog æåŸã«åç¥ã§ããLIFULLã§ã¯ããããããLIFEããFULLã«ããã«å®çŸãç®æããŠå
±ã«åããŠããã ãã仲éãåéããŠããŸãã ã«ãžã¥ã¢ã«é¢è«ãšãã圢ã§ããŸãã¯æ°è»œã«æ
å ±äº€æããšããããšãå¯èœã§ãã®ã§ããèå³ãããæ¹ã¯ä»¥äžã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co
ããã³ããšã³ããšã³ãžãã¢ã®å¶ç°ã§ããã¢ã¯ã»ã·ããªãã£æšé²ã°ã«ãŒãã«æå±ãã瀟å
ã®ãããã¯ãã®ã¢ã¯ã»ã·ããªãã£ãé«ããããã«æ¥ã
奮éããŠããŸãã LIFULL HOME'S ã¯äžåç£ã»äœå®
æ
å ±ã®ç·åãµãŒãã¹ã§ããäœå®
ãäœã¿æ¿ãã«é¢ããå€ãã®æ
å ±ãåãæ±ã£ãŠããããµãŒãã¹å
šäœã®èŠæš¡ã¯ããªã倧ãããšãããŸãã ã¬ã¹ãã³ã·ããã¶ã€ã³ã«å¯Ÿå¿ãããããã»ããã¿ã®å¶äœã«ã€ããŠã¯ä»¥åã«å
¬éããèšäºã§åãäžããŸããã2022幎5æãã10æã«ãããŠè¡ãããä»åã®ãããžã§ã¯ãã¯ããã®ãããã»ããã¿ã LIFULL HOME'S ãµãŒãã¹å
šäœã«å±éããããšã§ã忣ããŠãããããã»ããã¿ãçµ±åã»å·æ°ãã ããšãç®çãšãããã®ã§ãã www.lifull.blog ãããã»ããã¿ã®çµ±åã»å·æ°ã«ããããµãŒãã¹å
šäœã®ã¢ã¯ã»ã·ããªãã£ãåäžããããŒããŒããã¹ã¯ãªãŒã³ãªãŒããŒã®ãŠãŒã¶ãŒã«ãšã£ãŠå©çšãããããªããŸãã ãæ¹åã®å
容ãããã€ãåãäžããŠè§£èª¬ããŸãããŸãã远ããããŠããã¢ã¯ã»ã·ããªãã£ã¹ã³ã¢ãåäžããã³ãŒãã¬ãã«ã®å
éšå質ãé«ãŸããŸããã ãããªã£ããšãã 1. ã¬ã¹ãã³ã·ããã¶ã€ã³ãžã®å¯Ÿå¿ 2. ããŒããŒãæäœã»ã¹ã¯ãªãŒã³ãªãŒããŒå¯Ÿå¿ 3. ã¹ããããªã³ã¯æ©èœã®æèŒ 4. ã©ã³ãããŒã¯ã«ãããžã£ã³ããå¯èœã« å¹ææž¬å® ãããžãã ã£ããšãã æ ¹æ°ã® A/B ãã¹ã SEO ãªã¹ã¯ãšã®éã èšå€§ãªäœæ¥é å·æ°ãçµã㊠ãããªã£ããšãã 1. ã¬ã¹ãã³ã·ããã¶ã€ã³ãžã®å¯Ÿå¿ æ§ãã¶ã€ã³ãšæ°ãã¶ã€ã³ã®æ¯èŒãæ§ãã¶ã€ã³ã¯æ§æãäœãã¿ãŒã³ãããããã¹ã¯ããããšã¢ãã€ã«ã§ã¯äœéšãç°ãªã£ãŠããã çŸæç¹ã§ã¯ãLIFULL HOME'S ã®å€ãã®ããŒãžã¯ãã¹ã¯ããããšã¢ãã€ã«åãã«å¥ã
ã® HTML ãåºåããŠããŸããããããšããã¿ãå¥ã
ã®ãã®ã䜿ãããŠãããããã²ãŒã·ã§ã³ã®é
ç®ã䜿ãåæã¯ããã€ã¹ããµãŒãã¹ããšã«ç°ãªã£ãŠããŸããã æ°ãããããã»ããã¿ã¯ã¬ã¹ãã³ã·ããã¶ã€ã³ãåæã«ãã¶ã€ã³ã»å®è£
ããããããäžè²«æ§ã®ãããŠãŒã¶ãŒäœéšãæäŸãããããã«ãªããŸããã 2. ããŒããŒãæäœã»ã¹ã¯ãªãŒã³ãªãŒããŒå¯Ÿå¿ ãããŸã§ã®ãããã»ããã¿ã¯äžéšã®æ©èœãããŒããŒããã¹ã¯ãªãŒã³ãªãŒããŒã ãã§ã¯å©çšã§ããªãããšããããŸããã æ§ãã¶ã€ã³ã®ããããããŒããŒãæäœããŠããæ§åãéããããŠããã¯ãã®ãã³ããŒã¬ãŒã¡ãã¥ãŒã®äžèº«ã«ãã©ãŒã«ã¹ããããããã©ãŒã«ã¹ãèŠããªããªã£ãŠããã é衚瀺ã®ã³ã³ãã³ãã«ãã©ãŒã«ã¹ãåœãã£ãŠããŸã ã¯ãªãã¯ã§ãããã¿ã³ã«ãã©ãŒã«ã¹ãåœãããªã ã¡ãã¥ãŒãéãããšãã«ãã©ãŒã«ã¹ãã©ãã«è¡ã£ããåãããªããªã ããŒãžäžéšã®ãããŒãžããããžæ»ãããã¿ã³ãéžæãããšãã«ãã©ãŒã«ã¹ãããŒãžäžéšã«æ®ãç¶ããŠããŸã ãããã®åé¡ã¯æ°ãããããã»ããã¿ã§è§£æ¶ãããããŒããŒããã¹ã¯ãªãŒã³ãªãŒããŒã§ãäžèªç±ãªãæäœã§ããããã«ãªããŸããã 3. ã¹ããããªã³ã¯æ©èœã®æèŒ ã¹ããããªã³ã¯æ©èœ æ°ãããããã«ã¹ããããªã³ã¯æ©èœãå®è£
ããŸãããã¹ããããªã³ã¯ã¯åæç¶æ
ã§ã¯é ãããŠããŠãããŒãžãéããããšããŒããŒãã® Tab ããŒãïŒåæŒããšè¡šç€ºãããŸããããŒããŒããã¹ã¯ãªãŒã³ãªãŒããŒã®å©çšè
ã¯ããŒãžãéããåŸãããã²ãŒã·ã§ã³ãé çªã«ãã©ã£ãŠã¡ã€ã³ã®é åã«ãã©ãçãå¿
èŠããããŸããã¹ããããªã³ã¯ãããããšã§ãã®æéã倧ããçç¥ã§ããå©çšãããããåäžããŸãã 4. ã©ã³ãããŒã¯ã«ãããžã£ã³ããå¯èœã« ã¹ã¯ãªãŒã³ãªãŒã㌠NVDA ã®ã©ã³ãããŒã¯ãäžèЧããæ©èœã®ã¹ã¯ãªãŒã³ã·ã§ããããããã»ã¡ã€ã³ã»ããã¿ã®é åãæ€åºãããŠããã ã©ã³ãããŒã¯ãšã¯ãããŒãžã®äž»èŠãªé åãç¹å®ã®åœ¹å²ãšããŠæç€ºãããã®ã§ããæ°ãããããã»ããã¿ã«ã©ã³ãããŒã¯ãä»äžãããŠããŸããããã«ãããã¹ã¯ãªãŒã³ãªãŒããŒã®ãžã£ã³ãæ©èœã䜿ããšãã©ã³ãããŒã¯ãšããŠç€ºãããé åãŸã§ã·ã§ãŒãã«ããããŠã¢ã¯ã»ã¹ã§ããããã«ãªããŸããã å¹ææž¬å® ç§ãæå±ããçµç¹ã¯ã¢ã¯ã»ã·ããªãã£æšé²ã°ã«ãŒããšãããLIFULL ã®ãããã¯ãã®ã¢ã¯ã»ã·ããªãã£ãé«ããããšãããã·ã§ã³ãšããŠããŸããåãçµã¿ã®å¹æã枬ããããéšçœ²ã§ç¬èªã«å®ããæ¡ç¹åºæºãçšããŠããããã¯ãã®ã¢ã¯ã»ã·ããªãã£ã¹ã³ã¢ã宿çã«èšæž¬ããŠããŸãã ã¹ã³ã¢ãªã³ã°ã¯ Lighthouse ã«ããèªåãã¹ãã«å ããèªååã§ããªãé
ç®ãæåã§æ€æ»ããçµæãçšããŠç®åºããŠããŸããã¹ã³ã¢ãªã³ã°ã®è©³çްã«ã€ããŠã¯äžå³¶ã«ããèšäºãåç
§ããŠãã ããã www.lifull.blog ãããã»ããã¿ãçµ±åã»å·æ°ããçµæããµãŒãã¹å
šäœã®ã¢ã¯ã»ã·ããªãã£ã¹ã³ã¢ãåºäžããããå¹³åã¹ã³ã¢ãåäžããŸããã ãµã€ã å°å
¥åã¹ã³ã¢ å°å
¥åŸã¹ã³ã¢ ã¹ã³ã¢å¢æž ã¢ãã€ã«ãµã€ã 68.3 81.4 +13.1 ãã¹ã¯ããããµã€ã 72.6 79.7 +7.1 ãããŸã§ã广ãå®éåããããã®ææšã§ãã®ã§ãã¹ã³ã¢åäžã®å²åã䜿ãåæã®åäžã®å²åãšã¯å¿
ãããäžèŽããªãç¹ã«ã¯æ³šæãå¿
èŠã§ãã ãããžãã ã£ããšãã æ ¹æ°ã® A/B ãã¹ã å
¥å±
åžæè
ããã®ååãæ°ã®äžäžã¯åŒç€Ÿã®ããžãã¹ã«ãããé倧ãªé¢å¿äºé
ã§ãããããã»ããã¿ã®æ¹ä¿®ã¯åœ±é¿ç¯å²ãéåžžã«å€§ãããããããååãæ°ãäžãã£ãå Žåã®å£²ãäžããžã®ã€ã³ãã¯ãããŸã倧ãããã®ã«ãªããŸãã ãªã¹ã¯ãé¿ãããããA/B ãã¹ããéããŠååãæ°ãžã®åœ±é¿ãæ
éã«å€æããããšã«ãªããŸãããA/B ãã¹ãã¯å¿
ç¶çã«ã³ãŒãäžã«æ¡ä»¶åå²ãå¢ãããã®ã§ããããã¹ãã®é
ç®æ°ãèšãäžãããããç¹ã«ä»åã®ãããªåœ±é¿ç¯å²ã®åºãæ¹ä¿®ã§ã¯æ¥µããŠæ ¹æ°ã®ããäœæ¥ã«ãªããŸããã«ãããããããæ
åœã ã£ãäžå³¶ã¯èŠãã¿ãªãããå®éããŠãããŸããã A/B ãã¹ãã®çµæã¯ãç¹ã«è¯ããæªãããªã£ãŠããªããã§ãããå¿ããã« A/B ãã¹ãã®åŸçä»ããããŠæ£åŒãªãªãŒã¹ã«ããã€ããŸããã SEO ãªã¹ã¯ãšã®éã ååãæ°ãšåããããéèŠèŠãããŠããã®ãæ€çŽ¢ãšã³ãžã³ã§ã®è¡šç€ºé äœã§ããLIFULL HOME'S ã«ã¯å€ãã®ãŠãŒã¶ãŒãæ€çŽ¢ãšã³ãžã³ãã蚪ãããããå¹³åã§ã²ãšã€è¡šç€ºé äœãäžããã ãã§ã蚪åè
æ°ã«ã¯å€å€§ãªåœ±é¿ãããã®ã§ãã ããŒãžå
šäœã®ææžæ§é ã«å€åããã£ããããä»åã®æ¹ä¿®ã«ã¯ãªã¹ã¯ããããšã¿ãªãããŠããŸããããããŸã§ã¯ååãšããŠãããŒãžãããã²ãšã€ã® h1 èŠçŽ ãæã£ãŠããŸãããæ°ãããããã§ã¯ããŽã h1 èŠçŽ ã§ããŒã¯ã¢ããããããããããŒãžããã 2 ã€ã® h1 èŠçŽ ãæã€ããšã«ãªããŸããh1 èŠçŽ ã¯æ€çŽ¢ããããã«ããããŒãžã®è©äŸ¡ã«åœ±é¿ãåãŒããšèããããŠããããããªã¹ã¯ã ãšèããããŸããã ãã³ããŒã¬ãŒã¡ãã¥ãŒã®äžèº«ãæ§é åãããŠããèŠåºãèŠçŽ ã䜿ãããã£ãããã«ãããŽã h1 ã«ããå¿
èŠããã£ãã®ã§ãããæœåšçãªåœ±é¿ã®å€§ãããèãããšæ
éã«ãªãå¿
èŠããããŸãããSEO ã®å°éç¥èã®ããæ¹ã«æèŠã䌺ããåé¡ãªãããã ãšããã墚ä»ããããã£ãããã§ããªãªãŒã¹åŸã¯ïŒãµæã»ã©æ€çŽ¢çµæãç£èŠãé äœã®å€§å¹
ãªå€åããªãããšã確èªããŸããã èšå€§ãªäœæ¥é ãããŸã§ã®ãããã¯é·å¹Žã®éçšã®çµæã衚瀺ãã¿ãŒã³ã墿®ãäžå
管çãšã¯çšé ãç¶æ
ã§ããã衚瀺ãã¿ãŒã³ãæŽãåºããæ°ããã©ã®ãã¿ãŒã³ã«åœãŠã¯ãããã倿ããå¿
èŠã«å¿ããŠè©²åœã®äºæ¥éšãšã®èª¿æŽãæ ¹æ°åŒ·ãç©ã¿éããå¿
èŠããããŸãããããã¯äŒç»ã®éŽæšãéäžå¿æãããã«ãªããªãããå®éããŠãã ãããŸãããæè¬ãããããŸããã ã³ãŒãäžã®å€æŽç®æããã³ãã ããéã«ã®ãŒããŸãããç¹ã«ãããã¿ã«äžŠã¶å€æ°ã®ãªã³ã¯ã¯äžéšããµãŒãã¹ã«ãã£ãŠã¯ãªã³ã¯é
ç®ãšãªã³ã¯å
ãå€åãããšããå°å³ã« HP ãåã£ãŠããèŠä»¶ããããŸãããç®èŠã«ããã¬ãã¥ãŒãæåã«ãããã¹ããããã€ããã«ã¯éçããã£ããããã¢ãããã¯ãªèªåãã¹ãã¹ã¯ãªãããæžãã倿ŽååŸã® HTML ãæ¯èŒããããšã§åãæããŸããã å·æ°ãçµã㊠ä»åå±éãããæ°ãããããã»ããã¿ã¯ããšããšãµãŒãã¹å
šäœã«å±éããäºå®ã¯ãããŸããã§ãããéšçœ²ãšããŠãããã¯ãã®ã¢ã¯ã»ã·ããªãã£ãåäžããŠããã¢ãããŒã·ã§ã³ããããã¿ã€ãã³ã°ãããµãŒãã¹ã®ãŠãŒã¶ãŒèªèšŒåºç€ãæ°ãããªã£ãããšã§æšé²åãåŸãŠããããã»ããã¿ãå±éããããšã«ãªããŸããã å
šäœã«æãå
¥ãããªãã°ä»ãããšãã€ãã§ã«ã»ãã®ã¢ã¯ã»ã·ããªãã£æ¹åãã³ãŒãäžã®è² åµãæ¹åã§ããŸãããçµæãšããŠãŠãŒã¶ãŒã®ã¿ãªããŸã«ã¯ããããŸã§ããã¢ã¯ã»ã·ãã«ã§äžè²«æ§ã®ãããŠãŒã¶ãŒäœéšãæäŸã§ããããã«ãªã£ããšèããŠããŸãã 眮ãæãäœæ¥ã¯äžççžã§ã¯ãããŸããã§ããã調æŽã³ã¹ãã»å®è£
ã³ã¹ãããããã èŠå ã®äžã€ã«ãé·å¹ŽåŒãç¶ãã§ãã SEO ç±æ¥ã®èŠä»¶ããè±åŽã§ããªãã£ãããšãæãããããã§ãããããŸã§ãµãŒãã¹ã«æå
¥ãããŠãã SEO æœç矀ã¯ãæ°å¹ŽçµãåŸã«ãã®å¹æãæ¯ãè¿ãããããšã¯ãªãããªã¹ã¯ãæããŠåãäžããããããšããããŸããã§ãããSEO èŠä»¶ã¯ãç©ã¿éãªã£ãŠã¢ã³ã¿ããã£ãã«åããŠããŸããªãããã«ãå°ããã€å¹æãåæ€èšŒããªããåºçãåŒãã¯ãããŠããå°éãªäœæ¥ãå¿
èŠãªã®ã ãšæããŸããã ä»åã®ãªãã¬ã€ã¹ã§ç§ïŒå¶ç°ïŒã¯ã³ãŒãã¬ãã¥ãŒãšããŠã®ã¿åå ãã調æŽãå®è£
ã®å€§åã¯äŒç»ã®éŽæšããšã³ãžãã¢ã®äžå³¶ã«ãã£ãŠè¡ãããŸãããðããããŠå®è£
ãããããã»ããã¿ããäŒç€Ÿã®ç®çãµãŒãã¹ã«å±éããŠãã ãã£ããäºäººã«ã¯æè¬ããŠãããããŸããã ãèªã¿ããã ãããããšãããããŸãããLIFULL ã§ã¯å
±ã«åã仲éãåéããŠããŸãïŒ hrmos.co hrmos.co
ã¯ããã« ããã«ã¡ã¯ã ä»å¹Žã®4æããLIFULLã§ãšã³ãžãã¢ãšããŠåããŠããäœè€ã§ãã ãé¡ã«ãããéããå㯠æç³»åºèº« ããã°ã©ãã³ã°ã¹ã¯ãŒã«åºèº« ã§ãããããŠããŸã ããã°ã©ãã³ã°ã«å¯ŸããŠèŠææèããããŸãã åæãšããŠã¹ã¯ãŒã«ã«éããŸã§ã¯ããã°ã©ãã³ã°ã¹ãã«ã®åå°ã¯ãŒãã§ãããã¹ã¯ãŒã«ã§ã¯å¹³æ¥10æéãå幎éå匷ããããããããã°ã©ãã³ã°ãåŠã³ãŸããããçè§£ãé
ãããã£ãšèŠææèããããŸããã ãããããã©ãããŠããã£ãŠã¿ããããšããæããšãå°æ¥ããããããšãå®çŸããããã«ã¯ããã°ã©ãã³ã°ã¹ãã«ãå¿
èŠã ãšæã£ãã®ã§ä»ãç¶ããŠããŸãã æè¡åãé«ãå
茩ã»åæã®äžã§ã€ããŠããããããã®äžã§å€§åãªãã©ã€ããŒãã®æéãåãããäžå®ãªãšããããããããããŸããã ãããªåããLIFULLã§6ã¶æéåããŠäœæããããšãæããéãã«æžããŠãããããšæããŸãã çµè«ããèšããšãLIFULLã¯ãšãŠãè¯ãäŒç€Ÿã§ããè¯ããšæã£ããã€ã³ãã玹ä»ããŠãããŸãã å®å¿ã§ããç°å¢ â å
¥ç€Ÿåã®å®æçãªéãŸã äŒç€ŸåŽã®äŒç»ãšããŠã人äºã®æ¹ïŒåæãšæ1ãããã§éãŸã£ãŠã¯ãŒã¯ã·ã§ãããæèŠªäŒããã£ãŠããŸããã äºãã®ããšãå
šãç¥ããªãç¶æ
ããã ã£ãã®ã§ãèªå·±ç޹ä»ã»ç®æããŠããããšãªã©å¹
åºãäºãã®äžèº«ãå
±æããŠããŸããã ã¯ãŒã¯ã·ã§ãããéããŠãåæããããã®ç¹æ§ããããããã«ãªããä¿¡é Œãšä»²ã®è¯ããå°ããã€å¢ããŠãã£ããšæããŸãã å
¥ç€Ÿä»¥éã¯ããããŸã§ã®ç掻ç°å¢ã»ãªãºã ãå€ãããã¹ãã¬ã¹ãæããããšã¯ééããªãäžã§ãåæãšã®é¢ä¿æ§ãå°ããã€ç¯ããŠããã®ã¯å®å¿ãåŸãäžã§ãšãŠã倧ããã£ãã§ãã â ç ä¿® åãã®æ°ã¶æã¯ç ä¿®ïŒäººäºç ä¿®ãšãšã³ãžãã¢ç ä¿®ïŒããããŸããã ãšã³ãžãã¢ç ä¿®ã§ã¯ãæ¯æ¥æäŒã§1人ãèªç±ãªããŒãã§çºè¡šããæéããããŸããã ããŒãã®äžã«ã¯ã奜ããªèªå·±åæã®ææ³ãèªå·±æµã®å¥åº·æ³ã麻éã®å§èªãªã©ã®çºè¡šããããŸãããç¬ã ãã®äººã®ä»äºä»¥å€ã®èå³é¢å¿ã»äººãšãªããçºè¡šãéããŠããæ·±ãç¥ãããšãã§ããŸããã æè¡çãªéšåã§ã¯ãåãäžçªçè§£ãé
ã質åãããããããŠããèªè² ããããŸãããç ä¿®æ
åœã®æ¹ãæ¬åœã«æããã®ãäžå¯§ã§ãããããªããšãããç¡ããªãããã«äžã€äžã€æããŠãã ãããŸããã é
å±åã«åæãšã®é¢ä¿æ§ãæ·±ãŸããæè¡é¢ã¯å°ãèªä¿¡ãã€ãããã«ãªããå®å¿ããŠã¹ã¿ãŒãã§ããæºåæéãéãããŠããŸããã â ã³ãã¥ãã±ãŒã·ã§ã³ã®æ©äŒïŒæ¥å以å€ã®ããšãè©±ãæ©äŒïŒ LIFULL ã¯ç€Ÿå¡å士ã§ã®ã³ãã¥ãã±ãŒã·ã§ã³ã®æ©äŒãéåžžã«å€ããšæããŸããæ¥åå
容ã«éããªãã³ãã¥ãã±ãŒã·ã§ã³ã®æ©äŒããããããããããé¢ä¿æ§ãç¯ãããããæ¥åã«ãããå¿ççå®å
šæ§ãé«ãŸããšæããŠããŸãã 以äžã¯ãå
·äœçãªäŸã§ãã â éãŸãã®åç§°(人æ°ã»äººãé »åºŠ) æäŒïŒ10人ãé±2ïŒ 1on1ïŒã¡ã³ã¿ãŒã®æ¹ãé±2~3ïŒ 1on1ïŒäžé·ã®æ¹ãé±1ïŒ æ°å STARTïŒèªéšçœ²ä»¥å€ã®å
茩ãšã³ãžãã¢2 人(ã飯)ãå
š3åïŒ ã³ãã¥ãã€ïŒã°ã«ãŒãã®çŽ6人ãé±1(ãªãã£ã¹ã§å¯Ÿé¢ã§ä»äº)ïŒ ã°ã«ãŒãã®å®äŸïŒã°ã«ãŒãã®çŽ6人ãé±1ïŒ ãŠãããã®å®äŸïŒãŠãããã®çŽ10人ãæ1ïŒ ããŒã ãã«ãã£ã³ã°ïŒãŠãããã®çŽ10人ãPJ ããšã§éå¬ã®æç¡æ±ºããïŒ â»ã°ã«ãŒãã¯æå°åäœã®çµç¹ã§ããŠãããããã®äžã®æ®µéã®çµç¹ã§ãã ã³ãã¥ãã±ãŒã·ã§ã³äºç®ãšããŠã©ã³ã代ãäŒç€Ÿè² æ
ããŠããããããšããããŸããäŒç€Ÿã®å¶åºŠãšããŠç€Ÿå¡å士ã®ã³ãã¥ãã±ãŒã·ã§ã³ãä¿é²ããŠãããŠããŸãã èªç±ãªå¶åºŠ â åãæé ã³ã¢ã¿ã€ã ã®11:00~16:00ã§åããŠããã°ã7:00~22:00ã®éã§èªç±ã«åºå€ã»éå€ ãã®æã® 1 æ¥å¹³åã8æéã«ãªãããã«ããã° OK å
·äœçã«èªåããã£ãŠããããšïŒäžéšïŒ 7:30ããå€åéå§ 16:00é瀟 LIFULL ã§ã¯ããã®å¶åºŠã䜿ã£ãŠå
茩ãèªç±ã«åºå€ã»éå€ããŠããã®ã§ãæ°å
Œããªã䜿ãããšãã§ããŸããã人ãšã®äºå®ãçµã¿ããããéåžžã«èéã®ããåãæ¹ãã§ããŸããã 16:00é瀟ã¯å°åŠçã®äžæ ¡ãšåããããã§ããç¬ â åãç°å¢ ãªã¢ãŒãã¯ãŒã¯é±4ïŒé±1åºç€Ÿ ãªã¢ãŒãã¯ãŒã¯ã¯ãèªå奜ã¿ã«ã§ããã®ã§è¯ãç°å¢ãäœããŸãã ãªã¢ãŒãã¯ãŒã¯ãå€ãã®ã§ãä»çã®å®å®¶ã§åãæ¥ãå€ããããŸãããå Žæã®å¶çŽããªãããšã¯ãšãŠããããããã§ãã人ã«ãã£ãŠã¯æ°æ¥ããšã«æ
è¡æ°åã§åãå Žæãå€ããŠåããŠããŸãããPC1å°ã§ã§ãããšã³ãžãã¢ã®æ©æµããªã¢ãŒãã¯ãŒã¯ãšçŽ æŽããããããããŠããŸãã 倿§ãªãªãã£ã¹ã®ä»äºç°å¢(äžéš)ã¯ä»¥äžã®éãã§ãã ããªãŒã¢ãã¬ã¹ïŒç€Ÿå
ã©ãã䜿ã£ãŠã OKïŒ é«çŽã§åº§ãããã¡ã®è¯ãã¯ãŒã¯ãã§ã¢ å座åžã«ã¢ãã¿ãŒãèšçœ® ã¹ã¿ã³ãã£ã³ã°ãã¹ã¯ èªç±ã«äœ¿ããäŒè°å®€ äžèšãªã³ã¯ãããªãã£ã¹ã®æ§åãèŠãããŸãã https://recruit.lifull.com/office/ ãªã¢ãŒãã¯ãŒã¯ããã®ãå¿äœç¡ããããã«ããªãã£ã¹ã®åãç°å¢ã¯æŽã£ãŠãããšæããŸãã é±1ã®åºç€Ÿãã¡ããã©è¯ããªãã¬ãã·ã¥ã«ãªããŸãã ã人ãè¯ãããšããåã¯æ¬åœã ã£ã å
¥ç€Ÿåã«ãLIFULL ã§åããŠè¯ããšæãããšã¯ãªãã§ããïŒããšè³ªåãããšãäœæ100%ã®çãããã人ãè¯ãããšèšã£ãŠããŸããã å®éã«åããŠã¿ãŠããæ¬åœã«äººãè¯ããã ãªãããšäœæããããã«ãªããŸããã å
·äœçã«ã©ã人ãè¯ãããšãããš ææ
çã«æã人ãããªã å
茩ã现ããå©ããŠãã ãã 質åãããã¬ãããªæéåºããŠãã ãã ççŽãªçºèšã®è£ã«ããã£ãšè¯ãããããã«ããšèšãæããæãã ãããŠããããã人ãã¡ãéãŸã£ãŠããã®ã¯äœæ
ããšèããæã«ããäžå±€éšã®äººãã¡ãæ¬æ°ã§çµå¶ç念ã瀟æ¯ãã¬ã€ãã©ã€ã³ã倧åã«ããŠããããã ããšæãããã«ãªããŸããã lifull.com äžé·ããäžå±€éšã®äººãã¡ãããçµå¶ç念ã»ç€Ÿæ¯ã»ã¬ã€ãã©ã€ã³ããæ¬åœã«å€§åã«ãããŠããããšãæ¥åã§ã®ã¢ããã€ã¹ã1on1ãç·äŒãªã©ãéããŠæããŸãã ã ãããããäŒç€Ÿå
šäœãšããŠãçµå¶ç念ã»ç€Ÿæ¯ã»ã¬ã€ãã©ã€ã³ãã倧åã«ããããã«ãªããæ¡çšããã人ïŒåšãã®LIFULL瀟å¡ïŒãããã«çžå¿ãã人ã«ãªãã®ã ãªãšçè§£ããããã«ãªããŸããã ãããã« ãŸã ãã£ãã®6ã¶æïŒLIFULLããç¥ããªãåŽé¢ã¯ãããŸããããšãŠãè¯ãç°å¢ã§åãããŠããã ããŠãããªãšæããŸããã¹ãã«ãæµ
ãåã§ãããªããšãã€ããŠè¡ãããŠããã£ãŠãŸãã ãçµå¶ç念ã»ç€Ÿæ¯ã»ã¬ã€ãã©ã€ã³ããæ¬æ°ã§å€§åã«ããŠããäŒæ¥ã ããããã瀟å¡ã倧åã«ããŠå¶åºŠãç°å¢ãæ¹åããŠããã®ã ãšæããŸããããæ ¹æ¬çã«äœã倧äºã«ããŠããããã«ãã£ãŠãéãŸã人ãã€ããããå¶åºŠãé°å²æ°ãå€ãã£ãŠããã®ã ãªãšæããŸãã LIFULLã®ã¬ã€ãã©ã€ã³ã«ã¯ã瀟äŒäººã ãã§ãªã人ãšããŠå€§åãªèŠçŽ ããã£ããè©°ãŸã£ãŠããŸãã1ã€åã奜ããªãã®ã玹ä»ãããŠããã ããŸãã ãççã远æ±ããã ãŒç§ãã¡ãèããççãšã¯ããããã人ãå¿ããè¯ããšå
±æã§ããããšã§ãããã®ççãåããèããè¡åãç¶ããŸãã㌠åã¯ãã®ã¬ã€ãã©ã€ã³ã®å®è·µãéããŠãã¹ãã«ã¯ãã¡ããã§ãããèª å®ãã»çå®ãã磚ã人éãšããŠã®æé·ã第äžã«ããŠããããã§ããå
·äœçã«ã¯ãç®ã®åã®ä»äºã«å¯ŸããŠãã€ããæ¬åœã«ãããæåãïŒããšåãç¶ããŠãèªåã®å¿ã«åãã€ãäºãªãåããŠããããã§ãããã®ããã«åããªãã°å¿
ç¶çã«å¿
èŠãªã¹ãã«ãã€ããŠãããšä¿¡ããŠããŸãã å°ãæé·ããé ã«ããŸãããã°ãæžããããšæããŸãã èªãã§ããã ãããããšãããããŸããïŒ äžç·ã«åããŸãããïŒ LIFULLã§ã¯å
±ã«æé·ã§ãããããªä»²éãåã£ãŠããŸãããããããã°ãã¡ãã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co
LIFULL ã§ å£²åŽæ»å®ãµã€ã ã®éçºãããŠããããžã§ã³ ãšã³ãœã¯ã§ãã ãã®èšäºã§ã¯ã15 幎é皌åããŠããã¡ãŒã«é
ä¿¡ãããããéåæã¡ãŒã«é
ä¿¡ã·ã¹ãã ãžã®ãªãã¬ã€ã¹ãã©ã®ããã«è¡ã£ããã«ã€ããŠã®å
±æãããŸãã ãŸãèšäºã®æåŸã§ã¯ããã®éçºã«æããšãã®èªåã®èãæ¹ãææ³ãªã©ãèšããŸããã ãªãã¬ã€ã¹èæ¯ äœ¿çšæè¡ Serverless Framework èšèšå³ åŠçã®æµã å¿åæ»å®å®äº â AWS SNS â AWS SQS â AWS Lambda(ã¡ãŒã«é
ä¿¡) åäžã¡ãŒã«ã®è€æ°åé
ä¿¡ã®é²æ¢ å¿åæ»å®å®äºããããAmazon SNS ãããã¯ã«ã¡ãã»ãŒãžãçºè¡ SNS çµç±ã§ SQS ã«ãã¥ãŒãæå
¥ SQS ãããªã¬ã§ Lambda ãå®è¡ SQS ã®ã¡ãã»ãŒãžã®æ
å ±ã§ã瀟å
API ãµãŒãããã¡ãŒã«æ¬æã«å¿
èŠãªæ
å ±ãæœåº ã¡ãŒã«éä¿¡ãµãŒãã¹ã Customers Mail CloudïŒCMCïŒ æ»å®å¯èœäŒç€Ÿããšã«ã¡ãŒã«ã®æ¬æãäœæãã ãã©ã¡ãŒã¿ to ã®äœ¿çšäŸ ã¡ãŒã«æé¢ã®äœ¿çšäŸ ã¡ãŒã«é信倱æ cmc ã«ãªã¯ãšã¹ããããšãã®ãã©ã¡ãŒã¿ãäžæ£ã®å Žå cmc åŽã§ã®é
信倱æ çµæ ææŠ éçºã«èšãæã®èãæ¹ãæèããããš ãŸãšã PR ãªãã¬ã€ã¹èæ¯ æ¢åã§ã¯äžåç£å¿åæ»å® *1 äŸé ŒããŠãŒã¶ãŒãããã£ãéããã®éç¥ãæ»å®äŸé Œåä»ããŠããåäžåç£äŒç€Ÿã«éç¥ããŠããä»çµã¿ãã1 æéã« 1 åèµ·åãããããã¢ããªã±ãŒã·ã§ã³ãšããŠçšŒåããŠããŸããã äžåç£å¿åæ»å®ã®éç¥ã¡ãŒã«é
ä¿¡ãããã¯ä»ãã 15 幎ã»ã©åã«äœããããã®ã§ãã ããããã»ãŒæãå
¥ããããã«éçšããŠããããã ã€ã³ãã©ã¡ã³ããã³ã¹ã®åºŠã«åå®è¡ãæåã§è¡ãå¿
èŠããããéçšè² è·ã®é«ããã®ãšãªã£ãŠããŸããã éçšã³ã¹ãåæžããäžåç£äŒç€ŸãäŸé ŒåŸå³é
ä¿¡ãšãªã察å¿ãããããªãã¡ãªãããèŠèŸŒãã§ã 1 æéã« 1 åéä¿¡ã ã£ããã®ãäŸé ŒåŸå³éä¿¡ããããã«ãªãã¬ã€ã¹ãããŸããã äœ¿çšæè¡ Email éä¿¡ãµãŒãã¹: Customers Mail Cloud èšèª: JavaScript AWS ã¢ãŒããã¯ãã£: SNS, SQS, Lambda, CloudWatch Deploy Tool: Serverless Framework Test: jest éçã³ãŒãåæ: ESLint ci/cd: GitHub actions Serverless Framework Serverless Framework ïŒä»¥äž slsïŒã¯ãNode.js ã䜿çšããŠèšè¿°ãããç¡æã®ãªãŒãã³ãœãŒã¹ Web ãã¬ãŒã ã¯ãŒã¯ã§ãã sls ã§ã³ãŒãåãããš AWS ã¢ãŒããã¯ãã£ã AWS 管çç»é¢ããèšå®ãããå¿
èŠãç¡ããªãã®ã§ããã¹ããšæ¬çªç°å¢ã§èšå®ãç°ãªãç¶æ
ã«ãªãã«ããã¡ãªããããããŸãã ã€ã³ãã©éçºãšéçšã³ã¹ãé¢ã§ãã¡ãªããããã£ãŠããã¹ãŠã® AWS ã¢ãŒããã¯ãã£ã¯ sls ã§éçºãè¡ããŸããã èšèšå³ èšèšå³ åŠçã®æµã å¿åæ»å®å®äº â AWS SNS â AWS SQS â AWS Lambda(ã¡ãŒã«é
ä¿¡) äžè¬ç㪠Amazon SNS ã·ããªãªã§å®è£
ããŸããã docs.aws.amazon.com å¿åæ»å®ãå®äºããå ŽåããŠãŒã¶ãŒã¯ã¡ãŒã«éä¿¡åŠçãåŸ
ããã«å®äºç»é¢ãžé·ç§»ãããŸãã è£åŽã§ã¯ãéåæçã«ã¡ãŒã«éä¿¡åŠçã lambda ã§è¡ãããä»çµã¿ã«ããŸããã åäžã¡ãŒã«ã®è€æ°åé
ä¿¡ã®é²æ¢ ä»åã¯ãè€æ°ååäžã®ã¡ãŒã«ãé
ä¿¡ãããªãããã«ããèŠä»¶ããããŸãããéè€äžå¯ã®å Žå㯠SQS ã®æšæºåœ¢åŒããã FIFO ã®æ¹ãé©åã§ããã SQS ã FIFO ã§äœ¿çšããå Žå㯠SNS ã FIFO ã§ããå¿
èŠããããããSNSãSQS äž¡æ¹ FIFO ã§äœæããŸããã ããŸãéè€é€å€ãè¡ãããããã«ã¯ããŠããŒã¯ãªå€ãéè€é€å€ ID ã«æå®ããå¿
èŠããããŸãã ä»åã¯æ»å®æ
å ±ã«ãããŠããŒã¯ãª ID ãéè€é€å€ ID ã«æå®ããŠãéè€éä¿¡ã鲿¢ã§ããããã«ããŸããã docs.aws.amazon.com å¿åæ»å®å®äºããããAmazon SNS ãããã¯ã«ã¡ãã»ãŒãžãçºè¡ ãŠãŒã¶ãŒã äžåç£å£²åŽå¿åæ»å®ãµã€ã ã§æ»å®äŸé Œãå®äºããæã® SNS ã«æž¡ãåã¡ãã»ãŒãžã¯ã æå€§ 256 KB ã®ããŒã¿ãå«ãã ããšãã§ããããã瀟å
API ãµãŒããžã®ãªã¯ãšã¹ãã«å¿
èŠãªæäœéã®æ
å ±ã®ã¿æž¡ãããã«ããŸããã SNS çµç±ã§ SQS ã«ãã¥ãŒãæå
¥ SNS çµç±ã§ SQS ã«ãã¥ãŒãæå
¥ããããã«ã¯ SNS ãããã¯ãžãµãã¹ã¯ã©ã€ããããå¿
èŠããããŸãã 以äžã®ããã« SQS ã® ARN ãèšå®ãããšããµãã¹ã¯ã©ã€ããèšå®ã§ããŸãã # SNS resources: Resources: Topic: Type: AWS::SNS::Topic Properties: FifoTopic: true Subscription: - Endpoint: ${ SQSã®ARN } Protocol: sqs TopicName: ${ TopicName } docs.aws.amazon.com SQS ãããªã¬ã§ Lambda ãå®è¡ Lambda 㯠SQS ãããªã¬ããããã«ããŸãã SQS ãããªã¬ã«ãããšã¡ãã»ãŒãžãå
¥ã次第ãLambda ãå®è¡ãããã¡ãŒã«ã§éç¥ãã§ããŸãã sls ã§ Lambda ã®ããªã¬ãèšå®ããå Žå㯠SQS ã® arn ãæå®ãã以å€ãè€æ°ã®æ¹æ³ããããŸãã®ã§ã詳现㯠docs ããåèãã ããã functions: sendAnonymousOrderMail: # SQSãããªã¬ã«ãã events: - sqs: arn:aws:sqs:region:XXXXXX:MyFirstQueue www.serverless.com SQS ã®ã¡ãã»ãŒãžã®æ
å ±ã§ã瀟å
API ãµãŒãããã¡ãŒã«æ¬æã«å¿
èŠãªæ
å ±ãæœåº ã¡ãŒã«éä¿¡ã«å¿
èŠãªæ
å ±ã SQS ããåŸãæ
å ±ãå©çšããŠã瀟å
API ãµãŒãããå¿
èŠãªæ
å ±ãæœåºããå¿
èŠããããŸããã 瀟å
ã® API ãµãŒããšçéãã§ããããã« VPCãsubnet ã®èšå®ãè¡ããŸããã 以äžã¯ sls äžã§ VPCãsubnet ã®èšå®äŸãç°¡åã«èšèŒããŸããã 詳现㯠docs ããåèãã ããã functions: sendAnonymousOrderMail: handler: functions/sendAnonymousOrderMail.handler vpc: subnetIds: [ subnetIdãArray圢åŒã§å
¥ãã ] securityGroupIds: [ securityGroupIdãArray圢åŒã§å
¥ãã ] events: ... www.serverless.com ã¡ãŒã«éä¿¡ãµãŒãã¹ã Customers Mail CloudïŒCMCïŒ å·®èŸŒã¿æå ã䜿çšããŠãå®å
ããšã«ããŒãœãã©ã€ãºãããã¡ãŒã«ãçæããäžæ¬éä¿¡ããããã¿ãæäŸãããEmails/bulk ã䜿çšããŸããã ãã©ã¡ãŒã¿ to ã«æå®ã§ããæå€§ã¡ãŒã«ã¢ãã¬ã¹æ°ã¯ 1000 ãšãªã£ãŠããã®ã§ãäžåã®ãªã¯ãšã¹ãã§ã¡ãŒã«ã 1000 ååéä¿¡ã§ããŸãã ãã®ãããemail æ°ã 1000 ãåºæºã§ loop ããããŠãªã¯ãšã¹ããããããã«å®è£
ããŸããã smtps.jp æ»å®å¯èœäŒç€Ÿããšã«ã¡ãŒã«ã®æ¬æãäœæãã åäžåç£ããšã«ããŒãœãã©ã€ãºãããã¡ãŒã«æé¢ãäœæããŠéä¿¡ããåŠç㯠CMC ã®å·®èŸŒã¿æåã䜿çšããŸããã CMC ã®å·®èŸŒã¿æå㯠Lambda å
ã§å®è£
ããããå·¥æ°ãæžããCMC åŽã§ããžãã¯ã®åŠçãããããªãœãŒã¹çã«ãã¡ãªããããããŸãã ãã©ã¡ãŒã¿ to ã®äœ¿çšäŸ [ { "name" : "ããäžåç£äŒç€Ÿ", "address" : "user1@example.com", "memberId" : "00000001" }, { "name" : "ãŸãäžåç£äŒç€Ÿ", "address" : "user2@example.com", "memberId" : "00000002" } ] ã¡ãŒã«æé¢ã®äœ¿çšäŸ ((#name#))æ§ïŒ ID ((#memberId#)) ïŒ ãã€ããå©çšããããšãããããŸãã ... ã¡ãŒã«é信倱æ èšèšå³ ã® 5~9 çªã®å
容ã§ãã SQS ãã¥ãŒã®ã¡ãã»ãŒãžã 3 åæ°æ£ããåŠçã§ããªãã£ãå Žåã以äžã®ããã«èšå®ãããŠãããã¬ã¿ãŒãã¥ãŒ(ä»¥äž DLQ)ãžç§»åãããããã«ããŸããã # SQS resources: Resources: SQSQueue: Type: AWS::SQS::Queue DependsOn: - DeadLetterQueue Properties: ... RedrivePolicy: deadLetterTargetArn: ${ DLQã®arn } maxReceiveCount: 3 DLQ ã«ã¡ãã»ãŒãžãå
¥ã£ãããšãéç¥çšã® SNS ãããã¯ã«ã¡ãã»ãŒãžãçºè¡ããããã ãããªãã¯ã¹çææã« ApproximateNumberOfMessagesVisible ãéžæããéŸå€ã¯ 1 ã«ããŸãã æå®ããéŸå€ãè¶
ãããš CloudWatch Alarm ã«ãŠ SNS ã« publish ãããŸãã éç¥çšã® SNS ãããªã¬ã§å®è¡ããã Lambda ã§ã¯ãDLQ ã®é害æ
å ±ã¡ãã»ãŒãžã slack ãžéç¥ããŸãã æ¬¡ã¯ãã©ããªå Žåã¡ãŒã«éä¿¡ã倱æãããã«ã€ããŠæŽãåºããŠã¿ãŸããã cmc ã«ãªã¯ãšã¹ããããšãã®ãã©ã¡ãŒã¿ãäžæ£ã®å Žå ã¡ãŒã«éä¿¡ã«å¿
èŠãªæ
å ±ãšããŠç©ºã®ãããªäžæ£ã®ãã©ã¡ãŒã¿ãæž¡ãã㊠Lambda ã®åŠçã倱æããå Žåã3 åãŸã§ Lambda ã¯åå®è¡ãããããã«ããŸããã3 åæ°åå®è¡ãããããæ£ããåŠçãã§ããªãã£ãå ŽåãSQS ã®ã¡ãã»ãŒãžã DLQ ã«å
¥ããŸãã ãã©ã¡ãŒã¿ãšã©ãŒ DLQ ã«å
¥ã£ãã¡ãã»ãŒãžã«å¯ŸããŠãã¡ãŒã«åéèªååŠçãå¿
èŠãªå Žå㯠DLQ ãããªã¬ã«ãã倱æã¡ãŒã«åéçšã® Lambda ãå®è£
ããããšãå¯èœã§ãããããã远å å®è£
ãããšãã倱ææã®åå®è¡æ°ãã¿ã€ã ã¢ãŠããé©å®ã«å€æŽããããšã§ãäžæçãªãšã©ãŒã¯é²ãããããšæããŸãã cmc åŽã§ã®é
信倱æ lambda ã§ã¯æ£åžžã«åŠçãå®äºããããšããŠããCMC åŽã§ SMTP éä¿¡ã«å€±æãå®å
ãµãŒãããäžæçãªãšã©ãŒã«ããéä¿¡ã§ããªãå ŽåããããŸãã åºæ¬çã« CMC ã§ã¯å€±ææã®åéæ©èœãæäŸããŠãããããäžæçãªãšã©ãŒãªã©ã¯ã¡ãããšåéãããããã§ãä»çŸåšã¯åé¡ãªãéä¿¡ãããŠããŸãã smtps.jp çµæ ã¡ãŒã«é
ä¿¡ã·ã¹ãã ã®ãªãã¬ã€ã¹ãããããšã§ã ã€ã³ãã©ã¡ã³ããã³ã¹ã®åºŠã«åå®è¡ãæåã§è¡ãå¿
èŠããªããªã£ãŠãéçšè² è·ã倧ããåæžãããŸããã ãŸããäžåç£äŒç€Ÿã®äœéšãšããŠãããããŸã§ã¯ 1 æéã«äžåºŠã®ã¡ãŒã«é
ä¿¡ã ã£ããã®ããäŸé ŒåŸå³é
ä¿¡ãšãªã察å¿ããããããªããŸããã ææŠ ä»ãŸã§ã¯ãªãŒããŒã®ãµããŒããåããŠä»æ§ã«åºã¥ããã³ãŒãã£ã³ã°æ¥åãã¡ã€ã³ã«ããŠããŸããã äžæ¹ãä»åã®éçºã«å¿
èŠãª aws ãš serverless framework ã®çµéšããããŸããã§ããããå
·äœçãªèšèšããçµéšãç¬åã§ãããžã§ã¯ããæšé²ããŠããçµéšããããŸããã§ããã ãŸãããããŸã§ãã£ãŠãããããžã§ã¯ã㯠1 ãµæä»¥å
ã§å®äºããå°ããªãã®ãã»ãšãã©ã§ããããä»åã®ãªãã¬ã€ã¹ã¯ 4 ãµæçšåºŠã®æ¯èŒç倧ããªãããžã§ã¯ãã§ããã ä»åã®æ¡ä»¶ã¯éçºçµéšãèŠæš¡çã«ç§ã«ãšã£ãŠæ°ããé åãžã®è¯ãææŠãšãªããŸããã éçºã«èšãæã®èãæ¹ãæèããããš éçºé£æåºŠããããŸã§ã«æ¯ã¹ãŠäžãã£ãã®ã§ãã¹ã ãŒãºã«é²ããããã«ãèšèšã«å¿
èŠãª AWS ã¢ãŒããã¯ãã£ã®ç¥èãåŸããã SAA 詊éšã®å匷ãããŸããã çµæã詊éšã«ã¯åæ Œããå®éã«ãããžã§ã¯ãéäžã§å€§ããèšèšãå€ããããšããªããé 調ã«éçºããå©ãã«ãªããŸããã ãŸããä»åã¯ã¢ãŒããã¯ãã£ã api ãéžå®ããŠæšé²ããå¿
èŠããã£ãã®ã§ãéæ©èœèŠä»¶ãšããŠæãæèããéšåã¯ãªãœãŒã¹çãªåŽé¢ã§ãã ããšãã°ãæ¢åã®åŠçã§ã¯ãããã¢ããªã±ãŒã·ã§ã³ã§ãªãœãŒã¹ã䜿çšããŠã¡ãŒã«æé¢æå眮æããžãã¯ãåŠçããŠããŸããã æ¢åã®åŠçããã®ãŸãŸåŸãã®ã§ã¯ãªããLambda ã®ãªãœãŒã¹ãæå°éã§äœ¿çšãããããCMC ã®ãªãœãŒã¹ã掻çšããæåçœ®ææ¹åŒã«å€ããŸããã ããã«ãæ¢åã®èŠä»¶ã©ãããªãã¡ãŒã«éä¿¡æã« cc ã®èšå®ãããå¿
èŠãããããããªã¯ãšã¹ã 1 åã« 1 åéä¿¡ãã api ã䜿çšããªããã°ãªããŸããã§ããã ä»åã®æ¡ä»¶ã¯å€§éã«ã¡ãŒã«ãéä¿¡ããã®ã§ããªã¯ãšã¹ãåæ°ãšæ¯äŸããŠãªãœãŒã¹æ¶è²»ãå¢ãããšèããŸããã åé¡ã®ãªãç¯å²ã§æ¢åã®ä»æ§ãäžéšå€æŽããããšã«ããã倧ééä¿¡ã«åããŠãã api ã«å€æŽã§ããŸããã ãŸãšã æ¬èšäºã§ã¯ 15 幎é皌åããŠããã¡ãŒã«é
ä¿¡ãããããéåæã¡ãŒã«é
ä¿¡ã·ã¹ãã ãžã®ãªãã¬ã€ã¹ããã©ã®ããã«å®è£
ããã®ãã«ã€ããŠå
±æããŸããã LIFULL ã§ã¯ããã£ãŠã¿ãããšèšãäººã®æ¯æŽãèäžãæŒããŠããã颚åããã£ãŠããã®ãããªã¢ããªã±ãŒã·ã§ã³æ§ç¯ã«ãããŠåºæ¬èšèšããæ
åœããæåŸãŸã§ãã¹ãŠã®æ¹ä¿®æ¡ä»¶ãç¬èªã«æšé²ããææŠãã§ããŸããã å ããŠãåšãã«ã¯ãããã§ãã·ã§ãã«ãªäººãå€ã倿¹é¢ã§æèŠãæ±ããããšãã§ããŠãã³ãã¥ãã±ãŒã·ã§ã³ãåããããç°å¢ã®ãããã§ããã ææŠã§çµããã®ã§ã¯ãªããã£ããææãåºããŠæé·ã«ã€ãªããçµéšãã§ããŸããã æåŸã«ãLIFULL ã§ã¯äžç·ã«åã仲éãåéããŠããŸãããã®èšäºãèªãã§ LIFULL ã«èå³ãã§ããæ¹ã¯æ±äººæ
å ±ã埡芧ãã ããã hrmos.co hrmos.co PR äžåç£å£²åŽã®æã LIFULL HOME'S ãžïŒ lifullhomes-satei.jp *1 : äžåç£å¿åæ»å®ïŒå人æ
å ±ãããã§å¿åã§äžåç£ã®æ»å®ãã§ãããµãŒãã¹
ã¯ããã« Android ã¢ããªãšã³ãžãã¢ã®ç³äºã»äžå°Ÿã§ãã ä»åã DroidKaig2022 ãšããã«ã³ãã¡ã¬ã³ã¹ã«åå ããŠããŸããã ãã®èšäºã§ã¯ 2 æ¥éã§è¡ãããã»ãã·ã§ã³ã®äžããç¹ã«å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ã«é¢ããŠã玹ä»ãããŠãã ããŸãã DroidKaigi 2022 ã«ã€ã㊠DroidKaigi ã¯ãšã³ãžãã¢ã䞻圹㮠Android ã«ã³ãã¡ã¬ã³ã¹ã§ãã Android æè¡æ
å ±ã®å
±æãšã³ãã¥ãã±ãŒã·ã§ã³ãç®çã«ã2022 幎 10 æ 5 æ¥(æ°Ž) ã 7 æ¥(é)ã® 3 æ¥ééå¬ããŸãã DroidKaigi2022 ã§ã¯ãªã³ã©ã€ã³ãšãªãã©ã€ã³äž¡æ¹ã§ã®åå ãå¯èœã«ãªã£ãŠããŸãããªãã©ã€ã³äŒå Žã§ã¯ã¹ãã³ãµãŒäŒæ¥ã®ããŒã¹ãªã©ããããã»ãã·ã§ã³ä»¥å€ã§ã楜ããããšãããçãã ããããšãªã£ãŠããŸãã LINEæ ªåŒäŒç€Ÿæ§ã®ããŒã¹ã®ã玹ä»ã§ãïŒ ããŒã¹ã§ã¯ããCode Review Challengeããè¡ã£ãŠããŸããïŒ ãã£ã¬ã³ãžãããšã°ãããè²°ããã¿ããã§ãðšïž 14æãããŸãæ°ããªåé¡ãåºé¡ããããããªã®ã§ãŸã ãã£ã¬ã³ãžããŠããªãæ¹ã¯ãã£ã¬ã³ãžããŠã¿ãŠã¯ãããã§ããããâš #DroidKaigi pic.twitter.com/4Ld4EYGm8y — DroidKaigi (@DroidKaigi) 2022幎10æ6æ¥ twitter.com æ ªåŒäŒç€Ÿã¡ã«ã«ãªæ§ã®ããŒã¹ã®ã玹ä»ã§ãïŒ ããŒã¹ã§è§£ãããšãã§ããã¯ã€ãºã¯é£ããããã§ãŸã å
šåæ£è§£è
ãããªãããã§ãð¯ æããã¯å
šåæ£è§£ããŠã¿ããïŒãšããæ¹ã¯æ¯éããŒã¹ã§ãã£ã¬ã³ãžããŠã¿ãŠäžããïŒ #DroidKaigi pic.twitter.com/Z17pY3IC7D — DroidKaigi (@DroidKaigi) 2022幎10æ6æ¥ twitter.com å°è±¡ã«æ®ã£ãã»ãã·ã§ã³ 挫ç»ã¢ããªã®ã¡ã¢ãªæ¹åãšã¡ã¢ãªè§£ææ¹æ³ speakerdeck.com OutOfMemoryException ãšããã®ã¯ç©ã¿éãªã£ãŠçºçãããããåå è§£æãéåžžã«é£ããã§ããLINE ãã³ã¬ã§ã¯ MemoryProfiler ã leakcanary ãªã©ã®ããŒã«ãå©çšããè§£æãç£èŠã MemoryUtils çã®ç¬èªã¯ã©ã¹ãäœæãå®è£
åŽããã®éœåºŠç£èŠããããšã§åå ã®è§£æãããŠãããŸããã ãŸã Android7 以äžã§ã¯ bitmap ã®ä¿æã« native heap ã§ã¯ãªã JVM heap ã䜿ãç¹æ§ãããããšããbitmap ãã¡ã¢ãªäžã§æã€å Žåã« ARGB_8888 æ¹åŒã§ããã° height x width x 4byte å¿
èŠã«ãªãããå§çž®ã¢ã«ãŽãªãºã ãé©çšãããŠãã jpg, png 圢åŒã®ãã¡ã€ã«ãµã€ãºããã®ãŸãŸã¡ã¢ãªäžã«ä¹ãããã§ã¯ãªããªã©ãã¡ã¢ãªåšãã§èªåã®ç¥ããªãããšãããå匷ã«ãªããŸããã (ç³äº) 瀟å
ã§ã®ã¢ãã€ã«ã¢ã¯ã»ã·ããªãã£æšé² speakerdeck.com ã¢ã¯ã»ã·ããªãã£ããªã倧åãªã®ããã©ã®ããã«éçºã«çµã¿èŸŒãã§ããããããšãã 2 ç¹ã«ãã©ãŒã«ã¹ããå
容ã§ããã ç¹ã«å°è±¡ã«æ®ã£ãŠããã®ããå¥åžžè
ã§ãã£ãŠãäžæçã«ã¢ã¯ã»ã·ããªãã£ãèŠããå Žåãããããšããç¹ã§ããäŸãã°ãæãæªæããå Žåã¯ãã¿ã³ãããŸãæŒããªãç¶æ³ã«ãªããŸãããã¢ã¯ã»ã·ããªãã£ãèæ
®ããèšèšãªãã°åé¡ã«ãªããŸããããŸããç®ãéããããªãç¶æ³äžã§ãé³å£°èªã¿äžãã®æ©èœãªã©ã¯ååã«æŽ»çšã§ããŸãã LIFULL ã§ã¯ãå©ä»äž»çŸ©ãã®èгç¹ããã¢ã¯ã»ã·ããªãã£ã床å€èŠãããããšã¯ãªããçå£ã«åãçµãã§ãããšæããŸãããã®ã»ãã·ã§ã³ãéããŠèªåã LIFULL ã®ãšã³ãžãã¢ãšããŠããã£ãšã¢ã¯ã»ã·ããªãã£ãæšé²ããŠè¡ãããšæããŸããã (ç³äº) Jetpack Compose ã§ Material Design 3 speakerdeck.com Material Design 3 ã®èª¬æãtonal palette, Design Token ãªã©ã®æ°ããç»å ŽããæŠå¿µã«ã€ããŠã®è§£èª¬ãMaterial Design 2 ããã®ç§»è¡æé ãšç§»è¡ããéã®èæ
®ç¹ããããããããŸãšãŸã£ãå
容ã§ãããç¹ã« tonal palette ã«é¢ããŠã¯ãã®è§£èª¬ã ãã§ãªã Material Theme Builder ãçšããŠå®è£
æã®è²ã決ããŠããæé ãŸã§è§£èª¬ãããŠããŸãããå®éã®ãããã¯ãã«å°å
¥ãããããšãããšãã«ã圹ç«ã€ãã®ã«ãªã£ãŠããŸããã ãŸããMaterial Design 3 ãžã®ç§»è¡ã«ã€ããŠãã¢ããªå
šãŠãäžåºŠã«ç§»è¡ããå¿
èŠã¯ãªããå€§èŠæš¡ãªã¢ããªã¯ã³ã³ããŒãã³ãããšã«åããŠç§»è¡ããŠããã®ãããããã ãšè¿°ã¹ãŠããŠããã®æé ããµã³ãã«ã³ãŒããããŒã¹ã«è§£èª¬ãããŠããã®ã§ãå®éã®ãããã¯ãã«å°å
¥ãããããšãããšãã«ã圹ç«ã€ãã®ã§ããã å
šäœãéã㊠Material Design 3 ã®å°å
¥ãæšé²ããããªããããªå
容ã«ãªã£ãŠããŸããã (äžå°Ÿ) Compose for Desktop ã§å§ãã Android éçºå¹çåããŒã«ã®äœæ speakerdeck.com Compose for Desktop ãšãã Jetpack Compose ã®èšè¿°æ¹æ³ãã®ãŸãŸã« Desktop ã¢ããªãäœãããšãã§ãã UI ãã¬ãŒã ã¯ãŒã¯ãçšããéçºå¹çåã®ç޹ä»ãšãã®å®è£
解説ã«ã€ããŠã®å
容ã§ãããéçºå¹çåã«ã€ããŠã¯ Compose for Desktop ãçšããŠã¢ããªãäœæããããã«ãã£ãŠ Android ãšã³ãžãã¢ãæ¥ã
ã®éçºã§æ±ããç¹°ãè¿ãäœæ¥ã®å¹çåã«ã€ããŠã§ãããCompose for Desktop ãéžæããçç±ã«ã€ããŠã¯ãJetpack Compose ãšã»ãŒåæ§ã®èšè¿°æ¹æ³ã§ Desktop ã¢ããªãéçºããããšãã§ãããããæè¡ã®åŠã³çŽãããªãå±äººåãé²ãããšãã§ããããã ãšè¿°ã¹ãŠããŸããã æ¥ã
ã®éçºã®äžã§å¹çåã®ããã«ç°¡åãªã³ãã³ãã©ã€ã³ããŒã«ãçšããããšã¯ãããŸããããUI ãŸã§äœã蟌ããããªéçºå¹çåããŒã«ãäœãããšãŸã§ã¯ããããšããããŸããã§ãããç»å£è
ã®æ¹ã Compose for Desktop ã¯ããã¥ã¡ã³ããå°ãªããåé¡ãçºçããŠã GitHub ã® Issue ãèŠãŠè§£æ±ºããããšãã»ãšãã©ã ãšè¿°ã¹ãŠããŸããããã»ãã·ã§ã³ã§å®éã®ãµã³ãã«ã³ãŒããçšããäžå¯§ãªå®è£
解説ããããŠããã®ã§ãä»åŸéçºå¹çåããŒã«ã®äœæã«ãã£ã¬ã³ãžããŠã¿ãããšæããŸããã (äžå°Ÿ) Anatomy of Dynamic Colors blog.smartbank.co.jp MaterialDesign3 ã®äžéšã§ãã Dynamic color é¢ããŠã®å
容ã§ãããã¢ã¯ã»ã·ããªãã£ã®èгç¹ãããã«ã©ãŒã¹ããŒã ã®çæã«ã¯èŒåºŠãéèŠã«ãªã£ãŠããŸããåŸæ¥ã®èŒåºŠã衚çŸããè²ç©ºéã§ã¯è²çžã®åœ±é¿ã§ã人éãæããèŒåºŠã¯å€ãã£ãŠããŸãåé¡ããããŸããããã§ Google ã¯æ°ãããè²çžã圩床ãããŒã³ãã§æ§æããã HCT è²ç©ºéãéçºããDynamic color ã¯ããã«åºã¥ããŠçæãããŸãã Dynamic color ãã¢ããªã«é©çšããããšã§ãŠãŒã¶ãŒã«æé©ãªè²ãåçã«æäŸã§ããŸãããåçã«å€æŽããŠæ¬²ãããªãè²ããããšæããŸãããããã®æå³ããè²(Semantic color)㯠Dynamic color ãšçµã¿åããããšæµ®ããè²ã«ãªã£ãŠããŸããŸããããã§è²çžã Dynamic color ã«å°ãå¯ããŠèª¿æŽãã Custom color ãå©çšããããšã§ãã©ã³ã¹ã®è¯ããã¶ã€ã³ãå¯èœã«ããŠããŸãã LIFULL ã§ã¯ãã©ã³ãã«ã©ãŒãšããŠãªã¬ã³ãžã䜿ãããŠãããããå®éã« Dynamic color ãå°å
¥ããŠããããšãèãããšãã«å匷ã«ãªãå
容ã§ããã (ç³äº) Deep dive into Jetpack Compose Text AppCompatTextView ã MaterialTextView ãªã©ã®å Žå TextView ã«äŸåããŠããŸãã察ã㊠JetpackCompose ã®å Žå TextView ã«äŸåããŠããŸããã ãã®ãã TextView ã§å®è£
ãããŠããŠã textIsSelectable ã textAllCaps ãªã©ã®äžéš API ããªããªã£ãŠãããã includeFontPadding ãªã©ã®åäœãäžå®å®ãªãã®ããªããªã£ãŠããŸãããã®ãã JetpackCompose ã§ããããå®çŸããå Žåã«ã©ã®ãããªå®è£
ã«ãªãã®ãããšãããšããã軞㫠TextView , JetpackCompose Text , Layout API ã§ããããå®çŸãããããšã«å¯ŸããŠã®å®è£
æ¯èŒããã©ã®ããã«å®è£
ããããããæ·±ãŒã£ãŠèããå
容ã§ããã ãã¡ãã®ã»ãã·ã§ã³ã¯ Youtube ã« LIVE é
ä¿¡ãããŠããŠãã¢ãŒã«ã€ããæ®ã£ãŠããããèå³ããæ¹ã¯æ¯éèŠãŠã¿ãŠãã ããã (ç³äº) www.youtube.com Optimize your app for large screens droidkaigi.jp æšä» Google ãæšé²ããŠãã Tablet, Foldable çã®å€§ç»é¢ããã€ã¹ããµããŒãããäžã§èæ
®ããªããã°ãªããªãããšããµããŒãããããã®æè¡çãªéžæè¢ã«ã€ããŠã®å
容ã§ããã倧ç»é¢ããã€ã¹å¯Ÿå¿ãããã«ã¯ Phone ã¢ããªã®äœéšã®ä»®å®ïŒæäœã¯ã¿ããã®ã¿ãã¢ããªã 1 ç»é¢ãå
šãŠå æã§ããçïŒãèãçŽãå¿
èŠããããããUI ãç»é¢ãµã€ãºã«åãããŠæé©ãªãã®ãé
眮ããããšãæ±ããããŠãããšã®ããšã§ããããã®ããã®æ®µéçãªå¯Ÿå¿ã®åºæºã«ã€ããŠã WindowSizeClasses ã§ååŸã§ããç»é¢ãµã€ãºã®ç¶æ
ãå
ã«ãã UI ã®å€æŽæ¹æ³ãªã©ãå®è£
ã®æé ãŸã§è©³ããè¿°ã¹ãããŠããŸããã LIFULL HOME'S App ã«é¢ããŠã¯ Tablet ã«å¯Ÿå¿ã¯ããŠããŸããããŸã ãŸã ç»é¢ãµã€ãºããšã« UI ãå€ãããããŠãŒã¶ã®äœéšãã®ãã®ãå€ãããããªæé©åãŸã§ã¯é²ããããŠããªããããä»åŸã®å€§ç»é¢ããã€ã¹ã§ã®äœ¿çšæåäžãç®æãäžã§éåžžã«åèã«ãªãå
容ã§ããã å®äŸããåŠã¶ Jetpack Compose ã®ããã©ãŒãã³ã¹æ¹å speakerdeck.com Jetpack Compose ãå°å
¥ããéã«çºçããããã©ãŒãã³ã¹ã®äœäžã«å¯Ÿããèª¿æ»æ¹æ³ãšãã®å¯Ÿçæ¹æ³ã«ã€ããŠè§£èª¬ããå
容ã§ãããããã©ãŒãã³ã¹äœäžã«ã¯äžèŠãª RecomposeïŒCompose ã®åæç»ïŒãåå ãšãªã£ãŠããããšãå€ããããã解決ããããã®å¯Ÿçãšã㊠derivedStateOf ãCompose ã® skippable åãState ã®ç£èŠå Žæã®å€æŽã® 3 ã€ãæãããšå
±ã«ãããããã®é©åãªäœ¿çšã¿ã€ãã³ã°ã«ã€ããŠãè¿°ã¹ãããŠããŸããã Recompoes ã®çºèŠãšåå ã®å¯Ÿçã«ã€ããŠãµã³ãã«ã³ãŒããçšããªãããããã«ãŸãšããããŠããã®ã§ãå®éã« Jetpack Compose ãå°å
¥ããéã«ãéåžžã«åœ¹ç«ã€å
容ã«ãªã£ãŠããŸãããä»åŸ Jetpack Compose ã®ããã©ãŒãã³ã¹äœäžã®è§£æ¶ã§ããã£ãæã«ã¯èŠçŽãããã§ãã (äžå°Ÿ) ãŸãšã åã®çŸå°ã§ã®åå ã§ãããã»ãã·ã§ã³ã»ã¹ãã³ãµãŒããŒã¹ãéããŠææ°æè¡ããã¬ã³ãæè¡ã«è§Šããããšãã§ããããåºæ¿ãåããããšãã§ããŸããã Jetpack Compose 㯠LiveEdit ããã«ããã¬ãã¥ãŒãªã©éçºå¹çãããåäžããæ©èœããããŸããããããããããã£ãæ©èœã¯ã©ãã©ãåºãŠãããšæããŸããMaterial Design 3, 倧ç»é¢ããã€ã¹å¯Ÿå¿ã§ã¯ãããå€ãã®äººãž UI/UX åäžãšãã䟡å€ãæäŸããŠãããŸãã ãããã® Jetpack Compose, Material Design 3, 倧ç»é¢ããã€ã¹å¯Ÿå¿ã¯ã以åããæ
å ±ã®ããã¯ã¢ããã¯ããŒã ã§ã§ããŠãããã®ã®ããŸã åãçµããŠããªãçŸç¶ã§ããä»åã® DroidKaigi ã§ã¯å€§ç»é¢ããã€ã¹å¯Ÿå¿ã®ã¢ããªãè§Šãæ©äŒããã£ãããã»ãã·ã§ã³ããã¢ãéã㊠Jetpack Compose ãšå¯æ¥ã«è§Šãåãäžã§ãããäžå±€å°å
¥ãæšé²ããŠãããããªãšæããŸããã æåŸã«ãªããŸãããLIFULL ã§ã¯äžç·ã«åããŠããã ãã仲éãåéããŠããŸããä»ååžæããŠã€ãã³ãåå ãããããã«ããšã³ãžãã¢ãæé·ã§ããæ©äŒãçãã ãããã®è·å Žã§ããã«ãžã¥ã¢ã«é¢è«ããã£ãŠããŸãã®ã§ããããããã°ãã¡ããã芧ãã ããã hrmos.co hrmos.co
ãšã³ãžãã¢ã®å
è€ã§ããLIFULL HOME'Sã®å£²è²·é åãæ¯ãããšã³ãžãã¢ããŒã ã®ãããžã¡ã³ããæ
åœããŠããŸãã ç§ã®æå±ããŠããéšçœ²ã¯è·èœå¥çµç¹ãšãªã£ãŠ3幎çšçµã¡ãŸãã å°éæ§ãé«ãéçºåãåäžãããããšã§ãäŸ¡å€æäŸãæå€§åãããåå°ããã£ããäœãããšãç®çãšããŠããŸãã æ°ããæè¡ãåãå
¥ãããããªã£ãããPull RequestãããŒãžãããŸã§ã®æéãKPIãšããŠèšæž¬ã»æ¹åããããšçµç¹ãšããŠéçºååäžã®åãããããããã¿ã¹ã¯ã®çç£æ§ã®åäžã«äžå®ã®å¹æãåºãŠããŸãã äžæ¹ãè·ç𮿷·åã§åããŠãããšãããäŒç»è·ããã¶ã€ããŒè·ãªã©ä»ã®è·çš®ãšã®æ¥ç¹ãå°ãªããªã£ãã®ãäºå®ã§ãã ãŸãããã®æéã«æ°åå
¥ç€Ÿãã瀟å¡ã¯ã³ããçŠãéãªããä»è·çš®ã®æ¥åãã©ããã£ããã®ãªã®ãå®éã«ç®ã§èŠãæ©äŒããªã人ãããŸãã è·èœå¥çµç¹ã§ãã£ãŠãåè·çš®éã§é£æºããŠæœçãé²ããŠããŸãã åçš®æœçã®è³ªãã¹ããŒããé«ããããã«ã¯ã仲éã®æ¥åã«ã€ããŠç¥ã£ãŠããããšãéèŠã ãšèããŸããã ããã§ããã°ã«ãŒããè¶
ããã³ãã¥ãã±ãŒã·ã§ã³ãã»ãè¶å¢å ïœ è¶å¢ããŠäŒç»ãç¥ã£ãŠã¿ãã ïœããšããããŒããæ²ããäŒç»ç«æ¡ãäœéšããã¯ãŒã¯ã宿œããŠä»è·çš®ã®æ¥åãç¥ãããšè©Šã¿ãŸããã éå¬ã®å·¥å€« æéãããããšæ³å®ãããŸããããå¶éæéå
ã§ã§ãããšãããŸã§ãã ãšæ¥åã®äžéšãŸã§ããç¥ããªãæžå¿µãããæåŸãŸã§éããŠäœéšã§ãããã工倫ããŸããã ééããããŠ3åã«åããŠå®æœ ååã®ãŽãŒã«ãå®ãããŽãŒã«ãŸã§é²ããªãã£ãå Žåã¯æ¬¡åãŸã§ã®å®¿é¡ãšããïŒãã®çºã®æéãèšããïŒ ã°ã«ãŒãã¯ãŒã¯ã§å®æœ 3人å¯ãã°ææ®ã®ç¥æµã§ã¯ãªãã§ãããæ®æ®µäžç·ã«åããŠãããŒã ã®ã¡ã³ããŒãšçžè«ããªããé²ããã°æ¡ãåºãããã調æ»ãªã©ãåæ
ã§ãã 解決ããã課é¡ã¯äºãå²ãåœãŠãŠãããæ®æ®µäŒç»è·ã䜿ã£ãŠããäŒç»æžã®çްããéšåãçç¥ããç°¡æçã®ãã³ãã¬ãŒããçšæãã 課é¡çºèŠã«ã€ããŠã¯å¯Ÿè±¡å€ãšããäž»èŠãªé
ç®ã®ç«æ¡ã察象ãšããïŒäŒç»ã®äž»ãšãªãæ¥åãäœæããããšã«ãã©ãŒã«ã¹ïŒ äŒç»è·ã«ããšã³ãžãã¢ããã®ã¯ãŒã¯ã宿œããŠããããšãå
±æãã質åã«åçããŠããããªã©ååãä»°ã 宿é¡ãåæ»ã«é²ãããããããªãã©ããŒäœå¶ãçšæ 1åç®ã¯ãã¬ã¹ãçã«ã¢ã€ãã¢ãåºããŠãã®äžãã广ãé«ããã«æãããããã€ãã«çµã蟌ãããšããŽãŒã«ã«1æéçšã§éå¬ããŸããã 2åç®ã¯1æ¥ãããŠäŒç»ã®è£ä»ãããŒã¿ã®ç¢ºèªããã©ãã·ã¥ã¢ãããææèŠèŸŒã¿ã®ç®åºãè¡ããŸããã 3åç®ã§äœã£ãäŒç»å
容ã®çºè¡šäŒãè¡ãªããŸããã ã¿ã€ã ããŒãã«ã®äŸ 宿œããŠã¿ãŠ æ¥é ãããã¯ãã«ã«ã¹ãã«ã掻çšããŠèª²é¡è§£æ±ºã䟡å€ãçã¿åºãããšãæèããŠéçºããŠããã¡ã³ããŒãå€ããçµæãšããŠçå£ã«äŒç»ç«æ¡ã«åãçµãã§ããããŸããã ãã¯ããããæ
£ããŠããªãæ¥åã ãããªã®ãããšã³ãžãã¢ãããããžã«ã«ãªé¢ã«æã£ãŠããŸãã®ããæéå
ã«ãŽãŒã«ãŸã§éããã°ã«ãŒãã¯å°ãªãã£ãã§ãã ããããååã®åéã«ã¯GAãamplitudeãªã©ã®è§£æããŒã«ãGoogle Search Consoleãå®
åžå Žåå調æ»å ±åæžã®ããŒã¿ãªã©è€æ°ã®æ
å ±ã»ããŒã«ãçšããå€è§çã«è§£æã»æ€èšŒãããªã©æ¬¡åã®ã¯ãŒã¯ã®æºåã¯ãã£ããæŽããŠãããŸããã 3åç®ã®çºè¡šäŒã§ã¯åã°ã«ãŒããšãäŒç»è·ã®äœéšã¯ãŒã¯ãšããŠå®æœããäŒç»æ¡ãšã¯æããªãã»ã©è£ä»ãã«åºã¥ããäŒç»ãçºè¡šãããŸããã 質åã«å¯ŸããŠããããã¯ããããããŒã¿ãæ ¹æ ã«ãã£ãŠãããã颚ã«ããŠããŸãããªã©ã现éšãŸã§äœã蟌ãŸããŠããŠé©ããŸããã åå è
ã®éäžã®ä»æ¹ãçºè¡šå
容ãèŠãŠãããŒãã«æ²ãããè¶å¢åãã®ããŒã¹ãšãªãåã¯æã£ãŠãããªãšæããŸããã äŒç»æžã®äŸ ãŸããã¯ãŒã¯ã®æ¯ãè¿ããšããŠæ°ä»ããããšã®å
±æãªã©ãè¡ãªããŸããã ãã®äžã§ã¯äžèšã®ãããªæèŠãåºãŸããã ã¡ãããšä»®èª¬ç«ãŠãŠãã¡ã¯ããéããŠæ¹åãå®ããŠãã倧åã æ°ããæœçãæ©èœã«ã€ããŠã¯ãããŒã¿ããªãããšãå€ãããæ ¹æ ã瀺ãããšãé£ãã ãã®é¡ã®æœçã«é¢ããŠã¯ããçšåºŠã®è£ä»ããåãããæéã§ãªãªãŒã¹ããŠåå¿ãèŠãæ¹ãå¹çãè¯ã æ°åã®æ ¹æ åºãã®ãå€§å€ äŒç»æžã«ã€ããŠãç®çã«ããããŠæç¢ºãªæ°å€ç®æšãèšå®ããã®ãé£ããã£ã å·¥æ°ãšã€ã³ãã¯ãã®å
Œãåããã©ãã€ããããé£ãã ãã®æ€èšã«ã¯ããšã³ãžãã¢ãšè©±ããšè¯ããã äŒç»ã«ãšã³ãžãã¢ããåãããããããšãèŠããŠãã äŒç»ã®æ¥åã®äœã倧å€ãªã®ããã©ããéèŠãªã®ããªã©ããçšåºŠææ¡ã§ããŠã¯ãŒã¯ã®ç®çã¯éæã§ãããšæããŸãã æ¯ãè¿ãã®äŸ ãŸãšã äŒç»ã®æ¥åãç¥ããšããç®çãéæã§ããã ãã§ãªããã©ã®ã¿ã€ãã³ã°ã§äŒç»ã«åããããã°ããåæ»ã«é£æºã§ãããã«ãç®ãåãããã人ããããªã©ãç®ç以äžã®ææã®ãã£ãã¯ãŒã¯ã ãšæããŠããŸãã æ¬¡ã®ã¹ãããã¯ãããã§ç¥ã£ãããšã»æ°ä»ããããšãå¿ããã«æ¥åã«æŽ»ãããŠåçš®æœçã®è³ªãã¹ããŒãã®åäžã«ã€ãªããããšã§ãã ãŸã ãŸã ããã¹ãããšã¯ãããŸããããã®çµéšã掻ãããŠLIFULLã®ãµãŒãã¹ã®æ¹åé床ãå éããŠãããããšæããŸãã æåŸã«ãLIFULLã§ã¯ãšãã«æé·ããŠããã仲éãåéããŠããŸãã詳现ã¯åéæ±äººãã«ãžã¥ã¢ã«é¢è«ã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co
ãã¯ãããžãŒæ¬éšã® yoshikawa ã§ããæ®æ®µã®æ¥åã§ã¯ LIFULLã®ããŒã¿ã«é¢ãããšã³ãžãã¢ãªã³ã°ãè¡ã£ãŠããŸãã ä»åã® LIFULL Creators Blog ã§ã¯ããŒã¿ãªããŒãžã(ã¡ã¿)ããŒã¿ã«ã¿ãã°ã®æŽåãªã©ãããŒã¿ã®æŽ»çšãä¿é²ãããããªåãçµã¿ã«ã€ããŠç޹ä»ããŸãã ããæ°å¹Žã§ãLIFULL ãä¿æããããŒã¿ã®æŽ»çšã«é¢ããåé¡ç¹ãé¡èã«ãªãããã®è§£æ±ºã«åããŠä»å玹ä»ããåãçµã¿ã宿œããŸããã 瀟å
ããŒã¿æŽ»çšã«å¯Ÿãã課é¡ãšèŠæ 解決çãšããŠã®ããŒã¿ãªããŒãžãšããŒã¿ã«ã¿ãã° ããŒã¿ãªããŒãžã®æŽå BigQuery ã® INFORMATION_SCHEMA ããæ
å ±åé Streamlit ãš pyvis ã«ããå¯èŠå å°æ¥çã«ã¯ SQL ãéçŽããŠãªããŒãžçæã ããŒã¿ã«ã¿ãã°ã®æŽå ã¿ã°ãã³ãã¬ãŒãã®äœæãšã¿ã°ä»ã ããŒã¿å©çšç¶æ³ã®å¯èŠå SSOT ãšããŠã®æ©èœã«æåŸ
æ°ãããå®è¡åºç€ã®æ§ç¯ãšæ€èšŒ ãŸãšã 瀟å
ããŒã¿æŽ»çšã«å¯Ÿãã課é¡ãšèŠæ åé¡ãæããã«ããããã瀟å
ã®ããŒã¿ã¢ããªã¹ãã«ãã¢ãªã³ã°ãããšããäžèšã®ãããªèª²é¡ãšèŠæããããšå€æããŸããã æ©å¯æ
å ±ãããããŒãã«ç±æ¥ã®ããŒã¿ãåé€ãããå Žåãªã©ãæ©å¯æ
å ±ãªã©ç¹å®ã®æ
å ±ãããããŒãã«ãšãã®æŽŸçããŒãã«ãäžçºã§èŠãã ããŒã¿ã®ä»æ§æžããªãããšãããããã®ãšãã¯çããŒã¿ãèŠãããããŒã¿ãç¥ãæ¹æ³ããªãã®ã§ãããŒã¿ã®å質ã調ã¹ããæ¢çŽ¢çãªèª¿æ»ã宿œããå·¥æ°ã倧ãã ã¢ãããã¯åæãªã©ã§ã¯ãå©çšé »åºŠã®é«ãããŒãã«ã§ããã°å©çšããŠãåé¡ãªããšå€æããŠäœ¿ãããšãå€ãã®ã§ãå©çšé »åºŠã®é«ãããŒãã«ãç°¡åã«ç¥ããã ç·ããŠãããŒã¿éã®é¢ä¿æ§ã掟çå
ãäžæçã§ããããšã«ããåé¡ãšãããŒã¿ã®å©ç𿹿³ãå©çšç¶æ³ãäžæçã§ããããšã«åé¡ããããšå€æããŸããã 解決çãšããŠã®ããŒã¿ãªããŒãžãšããŒã¿ã«ã¿ã㰠課é¡ãšèŠæã®è§£æ±ºãå®çŸããããã«ä»¥äžãæºãããã©ãããã©ãŒã æ§ç¯ãè¡ããšæ±ºå®ããŸããã ããŒã¿ã®é¢é£æ§ãæããã«ããããŒã¿ãªããŒãžã«ãããããŒã¿éã®é¢ä¿æ§ã掟çå
ãæç¢ºã«ãã SSOT(Single Source of Truth)ãšããŠããŒã¿ã«ã¿ãã°ã®æ§ç¯ã«ãããããŒã¿ã®å©ç𿹿³ãå©çšç¶æ³ãæç¢ºã«ãã 以äžã§ã¯ããããã«ã€ããŠãå®çŸã«è³ããŸã§ã®æ¹æ³ãšä»åŸã®å±æã亀ããŠç޹ä»ããŠãããŸãã ããŒã¿ãªããŒãžã®æŽå ããŒã¿ã®æ¢çŽ¢ã³ã¹ãç·©åã®ããã®è§£æ±ºçãšããŠããŒã¿ãªããŒãžã®æŽåãè¡ããŸãã ãŸãèããã®ã¯å®çŸææ®µ(ããŒã«)ã«ã€ããŠã§ãããOSS ã§ãã OpenLineage ã dbt ã® docs æ©èœãªã©ã® OSS ãåè£ãšããŠæãããŸããã ä»ã«ã¯ Google Cloud ã®äžèšãœãªã¥ãŒã·ã§ã³ã«å£ã£ãŠ Data Catalog(Google Cloud)ã®ã¿ã°ãšããŠè¡šçŸããããšãæ€èšããŸããããããã¹ãã®ã¿ã§è¡šçŸãããšå
šäœåãææ¡ãã¥ãããšãããã¡ãªããããããŸãã cloud.google.com ä»å㯠LIFULL ã®ããŒã¿åºç€ãšããŠå©çšããŠãã BigQuery ã®ã¡ã¿ããŒã¿(INFORMATION_SCHEMA)ãããšã«ããŠå
補ããŒã¿ãªããŒãžå¯èŠå Web ã¢ããªã±ãŒã·ã§ã³ãäœæããããšã§ããŒã¿ãªããŒãžãå®çŸããŸããã BigQuery ã® INFORMATION_SCHEMA ããæ
å ±åé ããŒã¿ãªããŒãžã®å
ãšãªãæ
å ±ã¯ BigQuery ã® INFORMATION_SCHEMA ããåéããŠããŸãã cloud.google.com å
·äœçãªåéæ¹æ³ã¯åçŽãªãã®ã§ãINFORMATION_SCHEMA.JOBS_BY_PROJECT ãã referenced_tables ãš destination_table ã SELECT ããjob ãå®è¡ããŠãã service account ã§çµã蟌ããšããã®ã倧æ ã§ãã INFORMATION_SCHEMA ã¯éå» 180 æ¥éã®ãžã§ãã®å±¥æŽãä¿æããŠããããããã®éã«åç
§ãšæŽæ°ã©ã¡ããè¡ãããªãã£ãããŒãã«ã¯ãªããŒãžæ
å ±ãšããŠååŸãããŸããã ãããããã®ãããªããŒãã«ã¯åŸè¿°ã®ããŒã¿å©çšç¶æ³ãšçªåããããšã§ãã¯ãå©çšãããŠããªãéã¢ã¯ãã£ããªããŒãã«ã§ãããšå€æã§ããŸãã ããŒã¿ãªããŒãžæ
å ±åéã®å¯ç£ç©ãšããŠãäžèŠãªããŒãã«ãçºèŠãã³ã¹ãã«ããã«ãå¯äžã§ããã®ã¯å¬ããç¹ã®äžã€ã§ãã Streamlit ãš pyvis ã«ããå¯èŠå ãã®ããã«ããŠå
¥æããããŒã¿ãªããŒãžã®å
æ
å ±ã¯ãæåã°ã©ããšããŠå¯èŠåãã€ã³ã¿ã©ã¯ãã£ãã«ãªããŒãžæ
å ±ãé²èЧã§ãã Web ã¢ããªã±ãŒã·ã§ã³ãšããŠæäŸããŠããŸãã ããŒã¿ãªããŒãžå¯èŠåWebã¢ããªã±ãŒã·ã§ã³ æåã°ã©ãã®äœæã«ã¯ pyvis ãå©çšããWeb ã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ãšããŠæè»œã«ããŒã¿å¯èŠåãè¡ãã Streamlit ãå©çšããŠããŸãã pyvis.readthedocs.io streamlit.io Web ã¢ããªã±ãŒã·ã§ã³ãšããŠå·¥å€«ããç¹ã«ã¯ã ãšããž(蟺)ã®æ°ã¯ 1000 ä»¶è¿ããããããUI äžã§ã®å
¥åã GET ãªã¯ãšã¹ãæã«çµã蟌ããããã«ãã æ³šç®ãããããŒããéžæããããšã§äžäœã»äžäœã®éå±€(å
ç¥ãåå«ããŒã)ãäžèЧã§ããããã«ãã ãªã©ããããŸãã ãŸã å°å
¥ããŠéããªãã§ããããã®ããŒã¿ãªããŒãž Web ã¢ããªã±ãŒã·ã§ã³ã¯ããŸããŸãªæ©æµãããããããšãæåŸ
ã§ããŸãã ããšãã°ãããŒã¿ã¢ããªã¹ããªã©ããŒã¿å©çšè
ã¯ãåå©çšãã¹ãäžæ¬¡æ
å ±ã¯äœããšãã£ã倿ãããŒã¿ã®ä»æ§æžããããŒã¿ã®é¢ä¿æ§ã調æ»ãããæèè
ãžã®ãã¢ãªã³ã°ããããšã倿ã§ããããã«ãªããŸãã ãŸãããšã³ãžãã¢ãªã©ããŒã¿éçšè
ã¯ãéäŸåé¢ä¿ãå€ã倿Žã«ãã圱é¿ã®å€§ããããŒãã«ã»ãã¥ãŒãäžç®çç¶ãšãªã調æ»ã®å·¥æ°ãæžããšããã¡ãªããããããŸãã å°æ¥çã«ã¯ SQL ãéçŽããŠãªããŒãžçæã BigQuery ã® INFORMATION_SCHEMA ãããžã§ãå®è¡å±¥æŽãåéã»å å·¥ãå¯èŠåãããšããã¢ãããŒãã§ããŒã¿ãªããŒãžã®å¯èŠåãå®çŸã§ããŸããã ãããããã®ã¢ãããŒãã¯å€ãã®ãžã§ãå®è¡å±¥æŽã®äžãããªããŒãžæ
å ±ã®ã¿ãæœåºããããé åããªãã®ã§ãããããã¡ã³ããã³ã¹æ§ãè²»çšå¯Ÿå¹æãšããé¢ã§æ¹åã®äœå°ããããŸãã ä»ã®æåãªã¢ãããŒããšããŠã¯ãBigQuery ã®ãžã§ããšããŠå®è¡ãããåã® SQL ãäžãµæã«éçŽãããŒã¹ããããšã§ããŒãã«ã»ãã¥ãŒã»ããŒã¿ã»ããéã®ãªããŒãžãçæãããšãããã®ããããŸãã ãã®æãããã®ãšããŠæ³šç®ããŠããã®ã dbt(data build tool)ã«ãã dbt docs æ©èœã§ãã docs.getdbt.com dbt models(ããŒãã«ã»ãã¥ãŒ)ã©ããã®é¢ä¿æ§ãå¯èŠåããããšãªããŒãžæ
å ±ãçæå¯èœãªããšã«å ããããŒã¿ã«é¢ããããã¥ã¡ã³ããŒã·ã§ã³æ©èœãšããåŽé¢ãããããã ã«ã¿ãã°æ©èœãåãã Data Discovery Platform ãšããŠæ©èœããããšãæåŸ
ã§ããŸãã ãã㪠dbt ã§ãã瀟å
ã§ã®å©çšã«éããŠã¯ã瀟å
ã® SQL ããã㯠SQL å®è¡ã®åºç€ã dbt ã«éçŽããããšãå¿
èŠã«ãªããšèããŠããŸãã 瀟å
ã§ã® dbt å©çšã¯çè
ãå±ãããããžã§ã¯ããªã©äžéšã®æ¥åã«ãããŠã®ã¿å©çšãããŠããã®ãçŸç¶ã§ããã ãããŸã§ã®éçºã«ãããŠãã®æçšæ§ã¯å®æã§ããŠãããããããŒã¿ãªããŒãžæ©èœãå«ãæŽãªãããŒã¿æŽ»çšã®ä¿é²ãå®çŸããããã«ãæšé²ããŠãããããšããã§ãã ããŒã¿ã«ã¿ãã°ã®æŽå 以åãããŒã¿å©çšã®çŸå Žããã©ã®ãããªèª²é¡æèããã調æ»ããDatahub ãšããããŒã¿ã«ã¿ãã°(ããŒã¿ãã£ã¹ã«ããªãŒ)OSS ã«ãã解決çã® PoC ãè¡ããŸããã www.lifull.blog PoC ãæåãããã Datahub ãæ¬æ Œéçšããããšãæ€èšããŸããã ããããä»åã®èŠä»¶ã§ã¯åæçšããŒã¿ããŒã¹(BigQuery)ã®ã¿ã察象ãšããã«ã¿ãã°äœæãè¡ããããGoogle Cloud(GCP) ã§å®çµã§ããããã«ãData Catalog ãå©çšããããšã«æ±ºå®ããŸããã cloud.google.com (ä»å¹Žã®å€ã« Data Catalog 㯠Dataplex ã«çµ±åãããŠããŸã) ã¿ã°ãã³ãã¬ãŒãã®äœæãšã¿ã°ä»ã Data Catalog ã§ã¯ããšã³ãã£ãã£(BigQuery ããŒã¿ã»ãããããŒãã«ããã¥ãŒãªã©)ã«å¯ŸããŠã¿ã°ä»ããè¡ãããšã§ããŒã¿ã«ã¡ã¿æ
å ±ãä»äžã GitHub issues ã® Label ã®ããã«ä»»æã®æååãä»äžããããšã§ã¿ã°ä»ããããšããã¢ãããŒããšã¯ããç°ãªãã Data Catalog ã§ã¯ãæåååãæ°å€åãªã©ã®åã®ããè€æ°ã®ãã£ãŒã«ããæã£ãã¿ã°ã®å®çŸ©(ã¿ã°ãã³ãã¬ãŒã)ããããããäœæãã ãã£ãŒã«ãã«å€ãå
¥ããããšã§ã¿ã°ã®ã€ã³ã¹ã¿ã³ã¹ãçæããããšããã¢ãããŒãã§ã¿ã°ä»ããè¡ããŸãã ãã®ç¹æ§äžãã¿ã°ãã³ãã¬ãŒãã®å®çŸ©ã¯ããªãèªç±åºŠãé«ã GitHub issues ã»ã©ãã¹ããã©ã¯ãã£ã¹ãå®ãŸã£ãŠããŸãããã ä»åã¯æ±çšçãªãã£ãŒã«ããæã¡ããžãã¹ã¡ã¿ããŒã¿ã衚çŸããããŒã¿ãã£ã¹ã«ããªãŒçšã¿ã°ãšãaudit logs ããååŸããã¯ãšãªã®å®è¡å±¥æŽãå å·¥ãããŒã¿ã®å©çšç¶æ³ã®çµ±èšå€ããŸãšããã¿ã°ãä»äžããŠããŸãã åè
ã«ã€ããŠã¯éçšéå§åŸã«å©çšè
ã®ããŒãºãåºãåãå
¥ããããããã«æ¥µåæ±çšçãªã¿ã°ãšããŠèšèšããåŸè
ã®ã¿ã°ã¯ããŒã¿ã¢ããªã¹ããžã®ãã¢ãªã³ã°çµæãåºã«å©çšç¶æ³ããŒã¿ãã¿ã°ãšããŠä»äžãããšæ±ºå®ããŸããã äœæããã¿ã°ã®äŸïŒæ±çšçãªããžãã¹ã¡ã¿ããŒã¿ã¿ã°ãšå©çšç¶æ³ã®çµ±èšå€ã®ã¿ã° ããŒã¿å©çšç¶æ³ã®å¯èŠå åè¿°ã®å©çšç¶æ³ã®çµ±èšå€ã¯äžå®æéå
ã®æ
å ±ãæç²ããæ
å ±ãã¿ã°ãšããŠä»äžããŠããŸãããå
šæéã®ããŒã¿ã®æšç§»ã¯ Data Studio(Data Portal)äžã§å¯èŠåããŠããŸãã ããŒã¿å©çšç¶æ³ã®çµ±èšå€ã®æšç§» SSOT ãšããŠã®æ©èœã«æåŸ
ã¿ã°ã®æŽåã宿œããã Data Catalog ã§ãããéçšãã¡ã¿ããŒã¿ã®éçŽãšããç¹ã§ã¯çºå±éäžãªéšåããããŸãã ä»åŸã¯ç€Ÿå
ã®ããŒã¿ä»æ§æžã Data Catalog ã«éçŽããŠããŒã¿ã«é¢ããæ
å ±æºã Data Catalog ã«éçŽãããšããæ§æ³ãç«ãŠãŠããŸãã ãã®ææ®µãšã㊠GitHub äžã§ããŒã¿ã®ä»æ§æžã®ããŒãžã§ã³ç®¡çãè¡ã Data Catalog ã« Push ãé²èЧã§ããããã«ããã®ãçæ³çã ãšèããããŸãã ãããããã®ããã«ã¯ä»çµã¿ã®æŽåãä»è·çš®ã®å·»ã蟌ã¿ãªã©ã®å€æ§ãªåãçµã¿ãå¿
èŠãšããããããå€ãã®ã¹ããŒã¯ãã«ããŒãšååãé·æçã«å®æœããããšã«ãªããå®çŸãŸã§ã¯é·ãéã®ããšãªãããã§ãã æ°ãããå®è¡åºç€ã®æ§ç¯ãšæ€èšŒ æ¢ã«ç€Ÿå
ã«ã¯ Luigi ããŒã¹ã®æ¢åã®ãããå®è¡åºç€ãååšããŠããŸãã ããããä»åæ§ç¯ããããŒã¿ãªããŒãž Web ã¢ããªã±ãŒã·ã§ã³ãš Data Catalogãããã³ããŒã¿å©çšç¶æ³ã®åºãšãªãããŒã¿çæã®ãžã§ãã¯ãæ°ãã«ãããå®è¡åºç€ãéããŠå®è¡ããŠããŸãã æ±ããããèŠä»¶ã ããèæ
®ããå Žåãæ¢åã®ãããå®è¡åºç€ãå©çšãããã Cloud Data Fusion ãå©çšããŠæ¥µåã³ãŒããæžããã«ç°¡æã«äœæããããšãæå¹ãªéžæè¢ã§ããã ããããªãããä»åŸã®æ¡åŒµæ§ãèæ
®ãããŒã¿åºç€ãžã®æè³çãªæå³ã蟌ã㊠Argo Workflows ã§ dbt ãæŽæ°çšã¹ã¯ãªããã workflow ãšããŠå®è¡ã§ããããã« GKE Autopilot ãã«ãã kubernetes cluster ã®æ§ç¯ãè¡ããŸããã argoproj.github.io cloud.google.com ãŸã æ°ã¶æã»ã©éçšããææã§ãããArgo Wokrflows ã«ã€ããŠã¯å°çš manifest ã®ç¥èã¯å¿
èŠã«ãªããã®ã®ããå€ãã®çšéã§ã®éçšã§ãèãåŸããšæããŠããŸãã æ¢åãããåºç€ã®ãªãã¬ã€ã¹ãªã©ãèŠéã«å
¥ãã€ã€ä»åŸãéçšããŠãããããšèããŠããŸãã ãŸããçŸç¶ã§ã¯ toCãµãŒãã¹ã«ãããããªæ¥å³»ãªè² è·ã®å¢å ã«å¯Ÿå¿ããå¿
èŠæ§ã¯ç¡ããããGKE Autopilotã«ãããããŒãžããªããŒã管çã§éã«åã£ãŠãããkubernetes cluster ã®éçšå¹çåãšããæ©æµãåããããšãã§ããŠããŸãã ãŸãšã ããŒã¿æŽ»çšãä¿é²ããããã®ããŒã¿ãã©ãããã©ãŒã éçºãšé¡ããŠãGoogle Cloud(GCP)ã OSS ãªã©å¹
åºãæè¡ãçšããéçºã«ã€ããŠç޹ä»ããããŸããã ããŒã¿æŽ»çšã®ããã«ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ã掻ãããäœå°ã¯ãŸã ãŸã ãããšèããŠãããä»åŸãåŒãç¶ãéçºãæ¹åã宿œããŠãããŸãã æåŸã«ãLIFULL ã§ã¯ãšã³ãžãã¢è·ãªã©ã®åéããŠããŸãã åéäžã®æ±äººãã«ãžã¥ã¢ã«é¢è«ã®ãå¿åãªã©ã«ã€ããŠã¯ããã¡ãã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co
ããã«ã¡ã¯ããšã³ãžãã¢ã®äžå³¶ã§ãã 2022幎 4æããã¢ã¯ã»ã·ããªãã£æšé²ã°ã«ãŒãïŒä»¥äžæšé²ã°ã«ãŒãïŒã«åšç±ããŠããŸãã ãã®çµç¹ã¯æ°èšãããã°ããã§ããŸã åºæ¥ãŠå幎ã®çµç¹ã«ãªããŸãã ãã®ãããéšçœ²ã®ç®æãã¹ããŽãŒã«ã€ã¡ãŒãžãããããå³ãããã®ææšãšãã£ããã®ãäœããšããããå§ããããšã«ãªããŸããã æ¬èšäºã¯ãããã£ããšããã«ã€ããŠå
±æãããŠããã ãããšæããŸãã ç«ã¡äžãã«ããã£ãŠã®è©±ã«ã€ããŠã¯ä»¥ååã°ã«ãŒãã®å¶ç°ãæçš¿ããèšäºãããã®ã§ãã¡ãããåç
§ãã ããã www.lifull.blog éšçœ²ã®ç®æãã¹ããŽãŒã«ã€ã¡ãŒãžãšè¡å軞 ãããã¯ãã«å¯ŸããçŽæ¥çãªå質æ¹åæŽ»å æ°ããè² åµã®çºçãäœæžãããããã®æåéžæ ææšå ãããã¯ãã«å¯ŸããçŽæ¥çãªå質æ¹å掻åã®ææšå ããã¥ã¢ã«ãã¹ã ã¹ã³ã¢ãªã³ã° å ããããã¥ã¢ã«ãã¹ãé
ç®ãšãã®éã¿ Lighthouseã®æšå¥šããããã¥ã¢ã«ãã¹ã æšé²ã°ã«ãŒãã§è¿œå ããããã¥ã¢ã«ãã¹ã æ°ããè² åµã®çºçãäœæžãããããã®æåéžæã®ææšå éçšããŠã©ãã æåŸã« éšçœ²ã®ç®æãã¹ããŽãŒã«ã€ã¡ãŒãžãšè¡å軞 æšé²ã°ã«ãŒãå
ã§è©±ãåã£ãçµæãã¢ã¯ã»ã·ããªãã£ã®æšé²æŽ»åã®å
ã®ãŽãŒã«ã€ã¡ãŒãžã¯ãLIFULLã®ãã¹ãŠã®ãããã¯ããã¢ã¯ã»ã·ãã«ã«ãªã£ãŠããç¶æ
ããšããŸããã ãããŠãããå®çŸããããã«ãããããã¯ãã«å¯ŸããçŽæ¥çãªå質æ¹å掻åããšãæ°ããè² åµã®çºçãäœæžãããããã®æåéžæãã®äºæ¬è»žã§æŽ»åããŠããããšã«æ±ºããŸããã ãããã¯ãã«å¯ŸããçŽæ¥çãªå質æ¹å掻å çŽæ¥çãªå質æ¹å掻åã¯åçŽæå¿«ã§ãµã€ããã¢ã¯ã»ã·ããªãã£ã¬ãã¥ãŒããæ€åºãããåé¡ãèªåãã¡ã§çŽæ¥ä¿®æ£ããŠãããã¯ãåè³ªãæ¹åããŠããäœæ¥ã§ãã æšé²ã°ã«ãŒãã¯éçºçµéšã®è±å¯ãªãšã³ãžãã¢äºå(ãã¡äžäººã¯å€ç¶å¹Žæ°ãé·ã)ã§æ§æãããŠãããããçŽæ¥çãªä¿®æ£ãèªéšçœ²å
ã®ãªãœãŒã¹ã§è¡ããããã«ãªã£ãŠããŸãã æ°ããè² åµã®çºçãäœæžãããããã®æåéžæ æåéžæã¯ã¢ã¯ã»ã·ããªãã£ã®å匷äŒãã¬ã€ãã©ã€ã³çå®ããããžã§ã¯ãã®åå¥ãã©ããŒãªã©ã«ãã£ãŠç€Ÿå
ã®éçºè
ã®ã¢ã¯ã»ã·ããªãã£ã«å¯Ÿããçè§£ãä¿ãåãçµã¿ã«ãªããŸãã ãã¡ãã¯ãã¥ãŒãã³ãªãœãŒã¹ã®å°ãªãæšé²ã°ã«ãŒãã ãã§ã¯å³ãããã®ãããã®ã§ãæå¿ã§æ§æãããã¢ã¯ã»ã·ããªãã£ãæšé²ããã¯ãŒãã³ã°ã°ã«ãŒããšé£æºãåããªããé²ãããšãã£ãããšã§è¶³ããªããªãœãŒã¹ãè£ããªããé²ããŠããŸãã ææšå æ¥å掻åã®è»žã決ãŸããæ¬¡ã«ãã®æŽ»åã®ææãæž¬ãææšã«ã€ããŠæ±ºããããšã«ããŸããã ãããã¯ãã«å¯ŸããçŽæ¥çãªå質æ¹å掻åã®ææšå ãããã¯ãèªäœã«ã¢ã¯ã»ã·ããªãã£ã¬ãã¥ãŒãè¡ããã¹ã³ã¢åãããã®ã¹ã³ã¢ã®æšç§»ãèŠãããšã§ã¢ã¯ã»ã·ããªãã£ã®åè³ªã®æ¹å床åããå³ãããšã«ããŸããã ã¹ã³ã¢åãšãããšLighthouseãçã£å
ã«æãæµ®ãã¶ããã§ãããLighthouseã®ã¢ã¯ã»ã·ããªãã£ã¹ã³ã¢ã«ã¯ããã¥ã¢ã«ãã¹ãã远å ã§è¡ãããšãæ±ããããŠããããšããåç¥ã§ããããïŒ developer.chrome.com ããã¥ã¢ã«ãã¹ã Lighthouseã§æ€åºå¯èœãªã¢ã¯ã»ã·ããªãã£ã®ææç¹ã¯ã«ã©ãŒã³ã³ãã©ã¹ããé©åãªããŒã«ãã¹ããŒããæå®ãããŠããããšãã£ãæãã§ãèªã¿èŸŒã¿æã®HTMLãCSSããèšç®å¯èœãªéšåã«éãããŸãã ããã ãã§ãååãããããã®ã§ãããäŸãã°ãã€ã¢ãã°ãéããæã®ãã©ãŒã«ã¹äœçœ®ãããŒãžã®èªã¿èŸŒã¿ãšåæã«åçãããåç»ã³ã³ãã³ããªã©ãåãã䌎ãåé¡ç¹ãæ€åºããããšã¯çŸæç¹ã§ã¯ã§ããŸããã ãŸããã¿ã³ããã©ãŒã«ã¹å¯èœãª <button> ã§å®è£
ãããŠãããã©ããã«ã€ããŠãããããããããã¿ã³ãªã®ãã©ããLighthouseãçè§£ããããšãã§ããªãããæ€åºã§ããŸããã ãããããµã€ãã«ã¯ããããã®ãã¿ã³ãåãã䌎ãUIãå€ãååšããŠãããLighthouseã§é«åŸç¹ãåŸãŠãããšããŠããããã£ãéšåã§èŽåœçãªåé¡ããããšãå®è³ªçã«ã¯"æäœäžèœ"ã§ãããšãã£ãããšããã°ãã°ããããããã§ãã ãããã£ããã®ããã©ããŒããããã«Lighthouseã¯è¿œå ã§ããã¥ã¢ã«(æå)ãã¹ããæšå¥šããŠããŸãã èšç®ãèªåã§åºæ¥ãããã¥ãŒãã³ãªãœãŒã¹ãå²ãå¿
èŠããããšããããšã¯ã¡ã³ããŒäºäººã®æšé²ã°ã«ãŒãã§ã¯ããªãèŠãããšããã§ã¯ãããŸãããã¯ã©ãŒã¿ã«äžåºŠãšããééã空ããŠã§ãããã¯æ€åºããå¿
èŠããããšèããLighthouseã«ããèªåãã¹ãã«å ããããã¥ã¢ã«ãã¹ããå ããŠã¹ã³ã¢ãªã³ã°ããããšã«ããŸããã ã¹ã³ã¢ãªã³ã° ãšããã§ããããLighthouseã®ã¢ã¯ã»ã·ããªãã£ã®ã¹ã³ã¢ãªã³ã°ã¯ã©ã®ããã«ç®åºããããããåç¥ã§ããããã Lighthouseã¯ã¢ã¯ã»ã·ããªãã£ã®å芳ç¹ããŸãšããããã®éèŠåºŠã«å¿ããŠéã¿ãèšå®ããŠããŸãã developer.chrome.com ãã®å®çŸ©ãããšã«ãåé
ç®ãæ€æ»ããŠåé¡ãæ€åºãããªãã£ãå Žå(Passããå Žå)ããã®éã¿ãè¶³ãäžããŠãããŸãã ãã®æã®å€ããã¹ãŠã®éã¿ã®åã§å²ã£ãŠãããæ°åã«100ãããããš0~100ç¹ãŸã§ã®ã¹ã³ã¢ãç®åºã§ãããšããããã«ãªã£ãŠããŸãã ã€ãŸããããã¥ã¢ã«ãã¹ãã«ãéã¿ãèšå®ãããã®èšç®ã«å ããŠãããããšã§èªåãã¹ããšããã¥ã¢ã«ãã¹ãããã¹ãŠéããã¹ã³ã¢ãç®åºã§ããããã§ãã æã
ã¯ãããã¹ã³ã¢ãªã³ã°ã®æ¹æ³ãšããŠæ¡çšãèšæž¬ããããšã«ããŸããã å ããããã¥ã¢ã«ãã¹ãé
ç®ãšãã®éã¿ ã¹ã³ã¢ãªã³ã°ã®æ¹æ³ã決ãŸã£ããšããã§ãããã¥ã¢ã«ãã¹ãã«å«ããé
ç®ãã©ããããããŸã話ãåããŸããã ãã®çµæãLighthouseã§æšå¥šãããŠããããã¥ã¢ã«ãã¹ãã«å ãããªãªãžãã«ã®ããã¥ã¢ã«ãã¹ããå«ãã以äžã®ãã¹ãã§éçšããããšã«æ±ºããŸããã Lighthouseã®æšå¥šããããã¥ã¢ã«ãã¹ã é
ç® éã¿ é
ç®èª¬æ logical-tab-order 3 ããŒãžå
ã®ã¿ãé åºãè«ççã«æ£ããé ã«ãªã£ãŠããããš focusable-controls 10 ãã¹ãŠã®ã«ã¹ã¿ã ã³ã³ãããŒã«ãããŒããŒããã©ãŒã«ã¹å¯èœã§ããã©ãŒã«ã¹ã€ã³ãžã±ãŒã¿ã衚瀺ãããŠããããšãæåã§ç¢ºèªããŸãã ãã©ãŒã«ã¹ãåœããé çªã¯ãDOMã®é çªã«åŸãããã«ããå¿
èŠããããŸãã interactive-element-affordance 10 ãªã³ã¯ããã¿ã³ãªã©ã®ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ã¯ããã®ç¶æ
ã瀺ããéã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ãšåºå¥ã§ããããã«ããå¿
èŠããããŸãã ã€ã³ã¿ã©ã¯ãã£ããªèŠçŽ ããã®ç®çãšç¶æ
ã瀺ããŠãããã©ããã確èªããããã«ãèŠèŠãã¹ããšã¹ã¯ãªãŒã³ãªãŒããŒã«ãããã¹ãã®äž¡æ¹ã䜿çšããŸãã managed-focus 10 æ°ããã³ã³ãã³ããããŒãžã«è¿œå ããããã³ã«ããŠãŒã¶ãŒã®ãã©ãŒã«ã¹ããã®ã³ã³ãã³ãã«åããããã¢ã¯ã·ã§ã³ãèµ·ããããšãã§ããããã«ããŸãã focus-traps 10 ããŒããŒãã®ãã©ãŒã«ã¹ãç¹å®ã®ããŒãžèŠçŽ ã«åºå®ãããããåŒã£ããã£ããããªãããã«ããããšã ãŠãŒã¶ãŒã¯ãããŒããŒãã®ã¿ã䜿çšããŠãã¹ãŠã®ããŒãžèŠçŽ ã«ç§»åã§ããããã«ããå¿
èŠããããŸãã custom-control-roles 10 ãã¹ãŠã®ã«ã¹ã¿ã ã³ã³ãããŒã«ãé©åãªRoleãæã¡ããã®ããããã£ãšç¶æ
ãäžããå¿
èŠãªARIA屿§ãããããšã確èªããŸãã äŸãã°ãã«ã¹ã¿ã ã®ãã§ãã¯ããã¯ã¹ã¯ããã®ç¶æ
ãé©åã«äŒããããã« role="checkbox" ãš aria-checked="true|false" ãå¿
èŠã§ãã visual-order-follows-dom 3 ã¹ã¯ãªãŒã³ãªãŒããŒããã®ä»ã®æ¯æŽæè¡ã¯ãDOMé ã§ããŒãžãããã²ãŒãããŸããæ
å ±ã®æµãã¯çã«ããªã£ãŠããªããã°ãªããŸããã offscreen-content-hidden 3 ã¹ã¯ãªãŒã³ãªãŒããŒããã®ä»ã®æ¯æŽæè¡ã«ã¯ãããŒãžã®é¢é£ããéšåã®ã¿ã衚瀺ãããããã«ããããšã ããšãã°ãç»é¢å€ã«ããã³ã³ãã³ããåãªã衚瀺äžã®ã³ã³ãã³ãã¯ãæ¯æŽæè¡ããèŠããªãããã«ããå¿
èŠããããŸãã (âé衚瀺ã³ã³ãã³ããvisibility:hidden;/display:none;ã§é©åã«é ãããŠããããš) use-landmarks 3 HTML5ã®mainãnavãasideãªã©ã®èŠçŽ ã¯ãã¹ã¯ãªãŒã³ãªãŒããŒããã®ä»ã®æ¯æŽæè¡ããžã£ã³ãã§ããã©ã³ãããŒã¯ãã€ãŸãããŒãžäžã®ç¹å¥ãªé åãšããŠæ©èœããŸãã ã©ã³ãããŒã¯èŠçŽ ã䜿çšããããšã«ãããæ¯æŽæè¡ã®å©çšè
ã®ãµã€ãã§ã®ããã²ãŒã·ã§ã³äœéšãåçã«åäžãããããšãã§ããŸãã æšé²ã°ã«ãŒãã§è¿œå ããããã¥ã¢ã«ãã¹ã é
ç® éã¿ é
ç®èª¬æ original 10 ãããŒã§è¡šç€ºãããã³ã³ãã³ããã¿ããã§ã䜿ããããš ãŸããããŒããŒãã¢ã¯ã»ã¹ãå¯èœã§ããããš(ãã©ãŒã«ã¹ã§ããïŒãã©ãŒã«ã¹ãèŠããïŒEnterãã¹ããŒã¹ã«åå¿ãã) 察象ãšãªããããŒã³ã³ãã³ãããªãå Žåã¯éã¿ã0ãšãã original 10 åç»ãã£ãã·ã§ã³ãèšå®ãããŠããããš videoèŠçŽ ã®kind=captionsã§æ€åºã§ããªãã±ãŒã¹(Youtubeãªã©) 察象ãšãªãåç»ããªãå Žåã¯éã¿ã0ãšãã original 10 ç¹æ»
ãã¹ã¯ããŒã«ã䌎ãã³ã³ãã³ãããªã original 10 èªåæŽæ°ãããã³ã³ãã³ãããªã original 10 ãã©ãŒã«ã¹ããã©ãŒã ã®å€å€æŽã§ããŒãžå
å®¹ã®æžãæããããŒãžé·ç§»ããããã¢ããã®è¡šç€ºããããŠããªã original 10 ãã©ãŒã ããªããŒã·ã§ã³çã®ãšã©ãŒã®ãã£ãŒãããã¯ãé©åã«è¡ã 察象ãšãªããã©ãŒã çããªãå Žåã¯éã¿ã0ãšãã æ°ããè² åµã®çºçãäœæžãããããã®æåéžæã®ææšå æ¬¡ã«æåéžæã®åºŠåãã®ææšåã§ãã ãã¡ãã¯åçŽã«å®æ§èª¿æ»ããšãããšã«ããŸããã åçµç¹ã®çµç¹é·ã«ãããã«ããã³ãé åã«æºãã£ãéçºè
ãæœåºããŠãããããã®æ¹ã
ã«ãªãã¹ãåçè² è·ãå°ãªããªãããã«äœã£ãç°¡åãªã¢ã³ã±ãŒãã«ã¯ã©ãŒã¿ã«äžåºŠåçããŠãããã¹ã³ã¢åããŠããŸãã 以äžã¯å®éã«ãªããŠãã¢ã³ã±ãŒãã®é
ç®ã§ã 質åå
容 åçé
ç® éã¿ è£è¶³ ãããã¯ãéçºã«ãããŠããã³ããšã³ãé¢é£æ¥åãè¡ããŸãããïŒãæèšä¿®æ£ããªã³ã¯å
ä¿®æ£ã¬ãã«ã®ã¿ã§ããã°ãããããã§ãåçãã ããã ã¯ããããã 0 誀æœåºãããéçºè
ã®é€å€ äŒç»ããã¶ã€ã³ã«å¯ŸããŠã¢ã¯ã»ã·ããªãã£èгç¹ã§ãã§ãã¯ããã£ãŒãããã¯ãè¡ã£ãã 1. ãŸã£ãããããªãã£ã ... 5. ãšãŠããããã£ã 25 - ããã³ããšã³ãé¢é£æ¥åãéããŠã¢ã¯ã»ã·ããªãã£ãèæ
®ããå®è£
ãããã 1.ãŸã£ãããããªãã£ã ... 5.ãšãŠããããã£ã 25 - ããã³ããšã³ãé¢é£æ¥åãéããŠéçºã¡ã³ããŒãžã®ã¬ãã¥ãŒãè²æçã§ã¢ã¯ã»ã·ããªãã£èгç¹ã§é©åãªæå°ãããã 1.ãŸã£ãããããªãã£ã ... 5.ãšãŠããããã£ã 25 - ã¢ã¯ã»ã·ããªãã£æšé²G(ãããã¯æšé²WG)ãšã®é£æºã§ã¢ã¯ã»ã·ããªãã£èšèšãžã®ç¥èŠã¯æ·±ãŸããŸããã 1.ãŸã£ããæ·±ãŸããªãã£ã ... 5.ãšãŠãããæ·±ãŸã£ã 25 - 察象è·çš®ã¯ããã³ããšã³ããšã³ãžãã¢ãšããŠããŸãã ã¢ã¯ã»ã·ããªãã£ã¯äŒç»ã»ãã¶ã€ããŒã»ãšã³ãžãã¢ãäžäœãšãªã£ãŠèãããã®ã§ããããšã¯éã
æ¿ç¥ããäžã§ããã©ããŒã¢ããããã¹ã³ãŒãããªãœãŒã¹çã«çããå¿
èŠããã£ããããäžè·çš®ãžã®åèµ·ãããã³ããšã³ããšã³ãžãã¢ã®è²¬åãšå®çŸ©ããŠããã§ã¯åçè·çš®ãçµãããšã«ããŸããã (ããã«é¢ããŠã¯éçšçµéãèŠãŠæ¹éãå€ãããããããŸãã) éçšããŠã©ãã éšçœ²ç«ã¡äžãããå幎è²ã
ãšè©Šè¡é¯èª€ããŠãããŸã§ããŸããããä»ã®ãšããæŽ»åã®ææã¯ç®ã«èŠãããã®ãšããŠçŸããŠããå®éã»å®æ§äž¡æ¹ã®ã¹ã³ã¢ã«ããããã®æ¹åãèŠãããŠããŸãã ããã¥ã¢ã«ãã¹ãã¯ãã¥ãŒãã³ãªãœãŒã¹ã®éãããæšé²ã°ã«ãŒããšããŠã¯éçšç Žç¶»ãããã©ããæ°ã«ããŠãããšããã§ã¯ãããŸãããã ããã1ãµã€ãããã¹ããããã®ã«1.5~2人æ¥çšåºŠã§ãããçŸå®çãªã©ã€ã³ã§ããããšãããã£ãŠããŠå®å¿ããŠãããšããã§ã (å·¥æ°çãªèгç¹ã§ãµã€ããšããŒãžãçµã£ãŠéçšããŠããŸã) 宿§èª¿æ»ã®çµæã¯ãã ã®å®ç¹èŠ³æž¬ãšããŠã ãã§ãªããããã®åçå
容ãã¿ãŠåçããŠãããéçºè
ãšçŽæ¥é£æºããšããã£ãããšããŠãããŸãã¯ãŒã¯ããŠããŸãã éçºè
å
šå¡ãšé£æºããšãã®ã¯ã²ã©ãé£ããããã«æããŸãããåŒç€ŸçšåºŠã®èŠæš¡ã§ããã°ããã³ããšã³ããšã³ãžãã¢ãæ°å人çšåºŠãªã®ã§éåãªãã«ããã³ãã¯ãŒã§é£æºããšãããšãå¯èœã§ããã äžåºŠé£æºããšã£ãŠç¥èãã€ããéçºè
ãéçºãªãŒããŒãšããŠçŸå Žã®ã¡ã³ããŒã«ã¬ãã¥ãŒãããããŠãããããšãå®éæ£èŠãããã®ã§åæã³ã¹ãããããŸãæè³ããããšãžã®ã¢ãããŒã·ã§ã³ã«ã€ãªãã£ãŠããŸãã æåŸã« ããããã®ã¹ã³ã¢ãæ¹åããŠããã®æ¹åçµæãå®éçãªäœ¿ããããã«ã€ãªãã£ãŠããããæ€èšŒããä»çµã¿ãã€ããããšãæ¬¡ã®æã
ã®èª²é¡ã§ãã ãããããLIFULLãããã¯ãã®ã¢ã¯ã»ã·ããªãã£åäžã®ããã«å°œåããŠããããšæããŸãã LIFULLã§ã¯å
±ã«æé·ã§ãããããªä»²éãåã£ãŠããŸãã ãããããã°ãã¡ãã®ããŒãžãã芧ãã ããã hrmos.co hrmos.co
ããã«ã¡ã¯ïŒLIFULLã®ãšã³ãžãã¢ã§ãLtechéå¶ããŒã ã®ïŒäºº サム (@samukaak) / Twitter ã§ãïŒä»å㯠2020幎9æ15æ¥ïŒæšïŒã«éå¬ãããLtech#21 LIFULL HOMEâSãæ¯ããæ€çŽ¢æè¡ãã«ã€ããŠã¬ããŒãããŸãã Ltechãšã¯ æ ªåŒäŒç€ŸLIFULLäž»å¬ã®ãæè¡ïŒãšã³ãžãã¢ãªã³ã°ã»ãã¯ãããžãŒïŒãããŒãã«ããã€ãã³ãã®ç·ç§°ã§ãã ç¹å®ã®æè¡ã«åãããæ§ã
ãªæè¡ãããã¯ã¢ããããŠãããŸãã Session1 LIFULL HOME'Sã®AIæœçã«ãããSolræŽ»çš www.docswell.com ãã®ã»ãã·ã§ã³ã§ã¯ãSolrãã€ãã£ãAIæœçã®äºäŸãšãã®éã«åºã課é¡ãšè§£æ±ºæ¹æ³ã玹ä»ãããŸãããããã§ç޹ä»ãããAIæœçãšã¯ã AIããŒã ãºããᎮᎱáµáެ ããšãããµãŒãã¹ã§ãäœãŸãæ¢ãããããŠãŒã¶ãŒãšã®å¯Ÿè©±ãéããŠåŠç¿ããŽã£ããã®ç©ä»¶ãææ¡ããŠããããã®ã§ãã SolrãšAIããŒã ã¯å¥ã§ãäžç·ã«é²ããã«ãããAIããŒã ãããªã¯ãšã¹ã ããã¥ã¡ã³ãããšã«ãã¯ãã«ããŒã¿ãæ ŒçŽãã¯ãšãªã§ãã¯ãã«ãæå®ããŠã¯ãšãªæ¯ã«ç°ãªãã¹ã³ã¢ãèšç®ãäžŠã³æ¿ããè¡ããã ããã«å¯ŸããŠåºããæ¡ããSolr9ããã¯ããKnnã®æ©èœã䜿ãã°å®çŸã§ãããïŒããããé²ããã«ããã課é¡ãèŠã€ããã 課é¡â Solr9ããã¯ããKnnãšã¯éããæ€çŽ¢ã§ã¯ãªãäžŠã³æ¿ãã«äœ¿ããã äžŠã³æ¿ãã«å©çšãããããå
šãŠã察象ã«ããŠããŸããšèšç®éãå€ããªã£ãŠããŸãããReRankã§äžäœã®ã¿ãã¯ãã«èšç®ããŠäžŠã³æ¿ããããšã§è§£æ±ºããã 課é¡â¡ ããããSolr8ã ã£ã ãã¯ãã«ã®ãã©ã°ã€ã³ïŒ https://github.com/DmitryKey/solr-vector-scoring ïŒã䜿ãããšã§è§£æ±ºããã 課é¡â¢ ãã¯ãã«ããŒã¿ãããã¥ã¡ã³ãã«å«ãŸãªãå Žåãã䞊ã³é ãã³ã³ãããŒã«ããã ãã¯ãã«ããŒã¿ã®çæã¯AIããŒã ã®æ
åœã ããAPIçµç±ã§ãªã¯ãšã¹ãããããé«ã¹ã«ãŒãããã«ãªã£ãŠããŸãã¹ã±ãŒã«ã¢ãŠããéã«åãããªã¯ãšã¹ãã倱æããããšããã£ãããªã¯ãšã¹ãã«å€±æãããšãã¯ãã«ããŒã¿ãSolrã«æ ŒçŽã§ããªãããã®ããããªã¯ãšã¹ãã«æåããããã¯ãã«ããŒã¿ãç¡ããã®ããªã¯ãšã¹ãã«å€±æããéã«äžé§ãå±¥ãããããšã§ãèšç®çµæããã©ã¹ã«ãªãããã«èª¿æŽããŠè§£æ±ºããã 課é¡â£ Solrãžã®è² è·ãã©ããªããäºæ³ã§ããªã æ¬çªç°å¢ã®Solrãžã®ã¯ãšãªãããã°ãæœåºããæ€èšŒçšã«ã¯ãšãªã倿ãSolrãžãªã¯ãšã¹ãããããªãåæãéããããšã§è² è·ãžã®å¯Ÿçãèããããšã§è§£æ±ºããã ä»åŸãšããŠã¯ããã¯ãã«ããŒã¿ãå§çž®ã§ããªããïŒããSolr9ã®Knnã®æ©èœã䜿ã£ãŠå®çŸã§ããªããïŒãã«ã€ããŠæš¡çŽ¢ããŠããŸãã Session2 ã³ããŒ&ã«ã¹ã¿ãã€ãºã§ããSolrç°å¢æ§ç¯ã®ããã«EC2 Image builderãæŽ»çšãã話 www.docswell.com ãã®ã»ãã·ã§ã³ã§ã¯ãéçºè
ã容æã«æ€èšŒçããããªããããã«åå¥ã®éçºç°å¢ãçšæãããããããçŸè¡ã®ãããã€ãããŒã ãšç®¡ççã«åé¡ãåºãŠããããã®åé¡ã解決ããããã«EC2 Image builderãæŽ»çšãã話ã§ããã å°å
¥ã«åœããæ¬¡ã®ïŒç¹ã«ã€ããŠèŠåŽãããŠãããŸããã ããŒãžã§ã³ç®¡ç ãã¹ã schemaãã¯ã©ã¹ã¿ããšã«ç°ãªãèšå® å®éã«å°å
¥ããŠã¿ããšãçŸè¡ã®SolrãšåãAMIãå©çšããŠãããã€ããã ãã§å®¹æã«ç°å¢ãæ§ç¯ã§ããããã«ãªã£ãããSolrã®ã«ã¹ã¿ãã€ãºã容æã«ãªã£ããããŸããã Session3 äžåç£åºåãšåå¯ã www.docswell.com ãã®ã»ãã·ã§ã³ã§ã¯ãLIFULL HOME'Sã«ãããåå¯ãã®è©±ã§ããã ããããåå¯ããšã¯ãè€æ°ã®ç©ä»¶ããŒã¿ãããã€ãã®å±æ§ãèŠãŠåäžç©ä»¶ãšããŠæ±ãããšãã§ãLIFULL HOME'Sã§ããåãã¢ããŒãããã³ã·ã§ã³ããåãéšå±ããïŒã€ã®ç©ä»¶ãšããŠãŸãšããŠãããŸãã äžåç£å±ã¯ã³ã³ããã®æ°ããå€ããšèšãããŠããããã®äžåç£ïŒç®¡çïŒä»²ä»ïŒäŒç€Ÿãæ±ãç©ä»¶æ°ãèãããšèšå€§ãªæ°ã«ãªããŸããåå¯ã以åã¯åäžç©ä»¶ã§ããã®ãŸãŸè¡šç€ºãããŠãããããæ¡ä»¶ã«ãã£ãŠã¯åãç©ä»¶ãæ°ä»¶äžŠã¶ããšããããŸããã LIFULL HOME'Sã§ã¯ããããŸã§ããã€ãã®ãã§ãŒãºã§åå¯ãããããªã£ãŠããŸããã ãŸããã§ãŒãºïŒãã¢ããªã±ãŒã·ã§ã³ã«ããåå¯ããã§ã¯ãå
±é屿§ã«ããããã·ã¥åããããªãããšã§åå¯ããå®çŸããŸããããããæ§èœãä»¶æ°ã®å·®ç°ã«ããåé¡ãçºçããŸããã ããã§ãåå¯ããäºåã«ãããªã£ãäžã§æ€çŽ¢ãšã³ãžã³ã«ç»é²ãããæ¹æ³ãèæ¡ããŸããããæ§ã
ãªçç±ããLIFULL HOME'Sã§ã¯äºååå¯ãã®æ¹æ³ã¯æ¡çšãããŸããã§ããã ãããLIFULL HOME'Sã§ã¯ãµã€ãåŽã®ãªãã¥ãŒã¢ã«ã®ã¿ã€ãã³ã°ã§å
šææ€çŽ¢ãšã³ãžã³ããSolrã«ç§»è¡ãResultGroupingã«ããåå¯ãããããªãããšã§äœæžåäœã ãã§ã¯ãªãæ£åäœã«ããåå¯ããå®çŸããŸããã Solrãå°å
¥ããããšã§æ€çŽ¢ãšã³ãžã³ã§åå¯ããã§ããããã«ãªãããã®æ¬¡ã«åå¯ãã®ç²ŸåºŠåäžãé«éåãªã©ã«ãåãçµãã§ããŸãã ãŸãšã ä»åã¯LIFULL HOMEâSãæ¯ããæ€çŽ¢æè¡ãšããŠSolrã«é¢ãã話ã3åã®ãšã³ãžãã¢ã«çºè¡šããã ããŸããããã®ä»ã«ãLIFULL HOME'Sã§ã¯ã¡ã³ããŒãéæ LIFULL Creators Blog ã«ãŠæ
å ±ãçºä¿¡ããŠããŸããèå³ãæã£ãŠããã ããæ¹ã«ã¯ãã²1床ã芧ããã ãããèšäºã°ããã«ãªã£ãŠããŸãïŒ www.lifull.blog Ltechã§ã¯ãLIFULLã®ãšã³ãžãã¢ãäžå¿ã«ãªã£ãŠçæ§ã®æè¡æ¬²ãæºããããå®äŸã亀ããå匷äŒãéå¬ããŠããŸããä»åŸã Ltech ãç©æ¥µçã«éå¬ããŠãããŸãã®ã§ããã²æ°ã«ãªã£ãæ¹ã¯ãconnpass ã§ LIFULL ã®ã¡ã³ããŒç»é²ããããããé¡ãããŸãïŒ lifull.connpass.com ãŸããLIFULLã§ã¯ä»å玹ä»ããæ€çŽ¢åºç€ã«é¢ãããã®ãå«ããæ°å€ãã®è·çš®ã®ä»²éãåéããŠããŸãã ãããããã°ãã¡ãã®ããŒãžãã芧ãã ããã 【エンジニア】募集求人一覧 | 株式会社LIFULL 【エンジニア】カジュアル面談 | 株式会社LIFULL
ã¯ããã« ã¿ãªããããã«ã¡ã¯ã LIFULL HOME'Säºæ¥æ¬éšãããã¯ããšã³ãžãã¢ãªã³ã°éšãããã¯ããšã³ãžãã¢ãªã³ã°3ãŠãããã®å次ã§ãã æ°åã³ãããŠã£ã«ã¹ææçãçºçããããšã«ãããåŸæ¥ã®å€åå Žæããé¢ããŠèªå®
ãªã©ã§ä»äºãè¡ããªã¢ãŒãã¯ãŒã¯ãå
šåœçã«å¢ããŠããŸããã ç§ãã¡LIFULLã§ãåãããã«ããªã¢ãŒãã¯ãŒã¯ãã¡ã€ã³ãšãªããŸããã ãªã¢ãŒãã¯ãŒã¯ã¯é倿éã®åæžã«ããé倿ã®ã¹ãã¬ã¹è»œæžã空ãããªãœãŒã¹ãå®¶æãèªåã®ããã«äœ¿çšã§ããããã«ãªããªã©ã¡ãªããã¯å€§ããã®ã§ãããå€åºãæžã£ãŠéåäžè¶³ã«ãªã£ãããã©ã€ããŒããšä»äºã®åãæ¿ããé£ãããªã£ããä»äºäžã§ãåäŸããããã®äžè©±ãããªããã°ãªããªããªãéäžããæéãåããªããªã£ããªã©ãã¡ãªãããå°ãªããããŸããã ãŸããªã¢ãŒãã¯ãŒã¯ãšãªãããšã«ããçŽæ¥ååãšäŒãããšãæžããã³ãã¥ãã±ãŒã·ã§ã³ã®çµ¶å¯Ÿéãæžã£ãŠããŸãããç§ãã¡ã®éšçœ²ã§ã¯ã³ãã¥ãã±ãŒã·ã§ã³ã®æžå°ãé·æçã«ã¯å€§ããªåé¡ãšãªã£ãŠããããšãæžå¿µããŠããŸãã ãã®åé¡ã解決ããã¹ãç§ãã¡LIFULLã§ã¯ã³ãã¥ãã±ãŒã·ã§ã³ãã€ãéç§°ãã³ãã¥ãã€ããšããå¶åºŠãå°å
¥ããŠããã®ã§ç޹ä»ããŸãã ã³ãã¥ãã€ã®èª¬æ ç§ãã¡LIFULLã§ã¯ååé±1æ¥ãªãã£ã¹å€åãšãªã£ãŠãããŸãã â» æ°åã³ãããŠã£ã«ã¹ã®ææç¶æ³ã«ãã£ãŠã¯ãå€åå Žæä»»æïŒé±5æ¥ãªã¢ãŒãã¯ãŒã¯ãå¯èœïŒãšãªãå ŽåããããŸãã ã³ãã¥ãã€ãšã¯é±1åã¯ã°ã«ãŒãçéšéã¡ã³ããŒã®åºç€Ÿæ¥ãæã察é¢ã§ä»äºãé²ããŠé¢ä¿ã®åŒ·åãå³ãããšã§ãã å
·äœçã«ã©ã®ãããªããšãã³ãã¥ãã€ã§å®æœããã®ã玹ä»ããŸãã ã³ãã¥ãã€å®äŸçŽ¹ä» LIFULL Tableã«ãŠã«ãžã¥ã¢ã«ã«ã³ãã¥ãã±ãŒã·ã§ã³ããšããªããå€å LIFULLã«ã¯LIFULL Table( https://table.lifull.com/ )ãšããåèµéæ¬ç€Ÿ1Fã«äœµèšããããã®ã£ã©ãªãŒ&ãªãŒãã³ã¹ããŒã¹ããããŸãã table.lifull.com ããã§ã¯æ®åœ±ãå±ç€ºäŒããã¬ã¹çºè¡šäŒãã¯ãŒã¯ã·ã§ããçã®æ§ã
ãªçšéã§ã®äœ¿çšãå¯èœã§ã瀟å¡éæŸãããŠããéã«ã¯èª°ã§ãèªç±ã«äœ¿çšããããšãã§ããŸãã â» æ°åã³ãããŠã£ã«ã¹ã®ææç¶æ³ã«ãã£ãŠã¯äœ¿çšäžå¯ããŸãã¯äœ¿çšäººæ°ã®å¶éãªã©ãå
¥ãã±ãŒã¹ããããŸãã ç§ãã¡ã®ã°ã«ãŒãã®ã³ãã¥ãã€ã§ã¯ãLIFULL Tableãèªç±ã«äœ¿çšã§ããéã«ã°ã«ãŒãã®ã¡ã³ããŒã§éãŸã£ãŠæã¡å¯ã£ããèåãã³ãŒããŒãªã©ãåã¿ãªããä»äºãè¡ããŸããã ãªã¢ãŒãã¯ãŒã¯åã§ã¯å
¥ç€Ÿããã°ããã®äººããPJã«ã¢ãµã€ã³ããã°ããã®äººãšã«ãžã¥ã¢ã«ã«ã³ãã¥ãã±ãŒã·ã§ã³ããšãéãå§åçã«äœããçµæãããŒã ãšããŠã®å¿ççå®å
šæ§ãäžãããäžå®ã«æããŠããŸã人ãå€ãã§ãã LIFULL Tableã§ãèåãã³ãŒããŒãåã¿ã軜ãéè«ããªããä»äºããããšã§ã¡ã³ããŒå士ã®å¿ççãªããŒãã«ãäžãããå¿ççå®å
šæ§ãé«ããããšãã§ããŸããã ãã¬ã¹ãã«ãŒã ã§èšèšã¬ãã¥ãŒ LIFULLã®å·å宀ã«ã¯ãã¬ã¹ãã«ãŒã ãšèšã£ãŠå£å
šäœããã¯ã€ãããŒãã«ãªã£ãŠããäŒè°å®€ããããŸãã ããã§ã°ã«ãŒãã®ã¡ã³ããŒã§èšèšã¬ãã¥ãŒãè¡ããŸããã ã¯ãªãŒã³ã¢ãŒããã¯ãã£ãçšãããã©ãããæºãããªããã°ãªããªãæ©èœèŠä»¶ãšéæ©èœèŠä»¶ãããŸããŸãã£ãããªã©é£ããèšèšã ã£ãã®ã§è°è«ãçœç±ããŸããã ã¢ããã°ã®ãã¯ã€ãããŒãã¯æ°è»œã«æžããŠã¯æ¶ããã§ããã®ã§ãæç« ã§ã¯è¡šçŸãé£ããæŠå¿µãæ°è»œã«å³ç€ºããŠå
±æã§ãããšããå©ç¹ããããŸãã å³ãæžããŠè©±ãåãããšã§ã¬ãã¥ãŒãããåŽãèªåã®èãããŸãšããããšãã§ããã¬ãã¥ãŒããããåŽãæ¯èŒççæéã§ã¬ãã¥ã¢ãŒã®æå³ãæ±²ãããšãã§ããã®ã§ã ãªã³ã©ã€ã³ã«æ¯ã¹ãŠèšèšãæŽç·ŽãããŠããæéãççž®ã§ããŸããã ãŸãšã ãªã¢ãŒãã¯ãŒã¯ã®æ©äŒãå¢ããããšã§çŽæ¥çãªã³ãã¥ãã±ãŒã·ã§ã³ã®çµ¶å¯Ÿéãæžã£ãŠããŸããããç§ãã¡ã¯ã³ãã¥ãã€ãéããŠã°ã«ãŒãã®ã³ãã¥ãã±ãŒã·ã§ã³éãé«ããããšãã§ããŸããã ãŸããæ°è»œã«ã³ãã¥ãã±ãŒã·ã§ã³ãåããæ©äŒãå¢ããããšã§ãå¿ççå®å
šæ§ãçç£æ§ãåäžããŸããã ããŒã ãã«ãã£ã³ã°ãã¬ããã¹ãã¯ãã£ãçã®ã¹ã¯ã©ã ã®ã€ãã³ããªã©ãä»ã®ã°ã«ãŒãè¡äºã§ããèåãé£ã¹ãªããã«ãžã¥ã¢ã«ãªç©ºæ°ã§å®æœããŠããã®ããããããããŸããã æåŸã«ãLIFULLã§ã¯äžç·ã«åã仲éãåéããŠãããŸããèå³ãæã£ãŠããã ããæ¹ã¯ãåéæ±äººãã«ãžã¥ã¢ã«é¢è«ã®ããŒãžãã芧ãã ããã https://hrmos.co/pages/lifull/jobs/010 https://hrmos.co/pages/lifull/jobs/010-9998