ã¯ããã« ããã«ã¡ã¯ã3幎ç®ã® id:FM_Harmony ã§ãã ä»åã¯ã Cache Busting ãšåŒã°ãããã©ãŠã¶ã®ãã£ãã·ã¥ãå¶åŸ¡ããæ¹æ³ã«ã€ããŠèª¿ã¹ãæ©äŒããã£ãã®ã§ãããã°èšäºã«ãŸãšããŠã¿ãŸããã éçãã¡ã€ã«ã®URLã«äžèŠæå³ã®ãªãã¯ãšãªãã©ã¡ãŒã¿ãã€ããŠããããšããããŸãããã¡ãããšæå³ããã£ãã®ã ãšåãã£ãã®ã§ãåããããªçåãæ±ããŠããæ¹ã®å©ãã«ãªãã°å¹žãã§ãã ã¯ãã㫠調ã¹ããã£ãã éçãã¡ã€ã«ã®ãã£ãã·ã¥ Cache Busting ãããã« åè 調ã¹ããã£ãã ãšããåæã® JavaScript ã³ãŒããæ¹ä¿®ãããšãã®ããšãç¥èŠã®å°ãªãåæã ã£ãã®ã§çŽè¿ã®æ¹ä¿®ãããšã«å¿
èŠãªäœæ¥ãæŽçããŠããæã§ããã ãã®åæã§ã¯HTMLã§ JavaScript ãèªã¿èŸŒãéã以äžã®ããã«srcèŠçŽ ã«åæã®ããŒãžã§ã³ãšåãæååãã¯ãšãªãã©ã¡ãŒã¿ã§æå®ãããŠãããããŒãžã§ã³ã¢ããã®åºŠã«æååãæŽæ°ããŠããŸããã // ãããªæã <script type="text/javascript" src="xxxxx.js?ver=1.2.0.0"></script> ãããã ã¹ã¯ãªãã äžã§ã¯æž¡ããŠãããã©ã¡ãŒã¿ãå©çšããŠããŸããã§ããã ããã§ãä»åã®æ¹ä¿®ã§ãå¿
èŠãªäœæ¥ãªã®ããå
茩ã«çžè«ãããšãã... ç§ã JavaScript ã®URLã«åæã®ããŒãžã§ã³ãã€ããŠããã®ã§ãããä»åã®æ¹ä¿®ã§URLã«ã€ããŠããããŒãžã§ã³ãæŽæ°ããæ¹ãããã§ãããããã å
茩ããã£ãã·ã¥å¯Ÿçã§ããã°ãæŽæ°ããã»ããããã§ãããããã ç§ããã£ãã·ã¥ã£ãŠããã©ãŠã¶ã®ãã£ãã·ã¥ã§ããïŒã å
茩ãããã§ããåãããªããã°ãäžåºŠãã£ãã·ã¥ã«ã€ããŠå匷ããªãããŠã¿ãŠãã ãããã ãšããããšã§èª¿ã¹ãŠã¿ãŸããã éçãã¡ã€ã«ã®ãã£ãã·ã¥ åæãšããŠã JavaScript ã CSS ãã¡ã€ã«ãªã©ã® éçãã¡ã€ã« ã¯ãèªã¿èŸŒãã éã«ãã©ãŠã¶ããã£ãã·ã¥ããŸãã ãã®ããããã¡ã€ã«ãæŽæ°ããåŸã«å€æŽç®æããã©ãŠã¶äžã§ç¢ºèªããŠãããã©ãŠã¶ããµãŒãåŽã®ãã¡ã€ã«ãèªã¿èŸŒãŸãã«ãã£ãã·ã¥ãèªã¿èŸŒãã§ããŸãããšããããŸãã ãã©ãŠã¶åŽã§åŒ·å¶ãªããŒããããŠæŽæ°ãåæ ãããããã«ãã§ããŸããããããªããšããããšãæŽæ°åŸã®éçãã¡ã€ã«ããã©ãŠã¶ã«èªã¿èŸŒãŸããæ¹æ³ããããŸãã ãããã Cache Busting ãšåŒã°ããæ¹æ³ã§ãã Cache Busting éçãã¡ã€ã«ã®URLããã£ãã·ã¥ããŠãããã®ãšç°ãªãå Žåããã©ãŠã¶ã¯ãã£ãã·ã¥ãå©çšãããµãŒããããã¡ã€ã«ãååŸããŸãã ããã§ããã¡ã€ã«æŽæ°ã«åãããŠã¯ãšãªãã©ã¡ãŒã¿ãæŽæ°ããããšã§ããã©ãŠã¶ããã£ãã·ã¥ãèªã¿èŸŒãããšãé²ããŸãã ãã®æ¹æ³ã Cache Busting ãšåŒã³ãŸãã ããŠããããŸã§èª¿ã¹ãŠåã³å
茩ã«çžè«ãããšãã... ç§ã JavaScript ã®URLã«ã€ããŠããã¯ãšãªãã©ã¡ãŒã¿ã§ããããã©ãŠã¶ããã£ãã·ã¥ãèªã¿èŸŒãŸãªãããæŽæ°ããã»ããè¯ããšæããŸããã å
茩ãåãããŸãããä»åã¯æŽæ°ããŸããããã ãšããããšã§ãç¡äºæ¹éãå®ãŸãæ¹ä¿®äœæ¥ãå§ããããšãã§ããã®ã§ããã ãããã« ä»ã«ã Cache-Control ããããå©çšããŠãã£ãã·ã¥ã®å©çšãå¶åŸ¡ã§ããŸãããCache Bustingã¯ã¯ãšãªãã©ã¡ãŒã¿ã ãã§ãã£ãã·ã¥ã®å©çšãå¶åŸ¡ã§ããã®ã§ãæ¯èŒçæè»œã«ã§ããæ¹æ³ã ãšæããŸãã ãã£ãã·ã¥ã®å¶åŸ¡ãè¡ããããæ¹ã¯ãäžã€ã®æ¡ãšããŠæ€èšãããŠã¯ãããã§ããããã åè CSSãã¡ã€ã«ãJavaScriptãã¡ã€ã«ãèªã¿èŸŒããšãã®æ«å°Ÿã«ããã¯ãšãªãŒæååã¯äœã®ããã«ããã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã rakus.hubspotpagebuilder.com ã©ã¯ ã¹Developersç»é²ãã©ãŒã https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ âTECH PLAY techplay.jp âconnpass rakus.connpass.com
ã¯ããã« 8æ6æ¥ã«è¡ããããã¢ããã·ã¥ã®ã玹ä»ãããŸãã ä»åã¯ããŒãçžããªãã§æãæãã®ãæè¡ãã¿ããçºè¡šããŠããã ããŸããã ã¯ããã« çºè¡šäžèЧ å人çã«æ°ã«ãªã£ãçºè¡š inotifyã®ã¯ãªã å
šæ©èœãã¹ãã®èªåå LT:Firebase Hack!! ãããã« çºè¡šäžèЧ 以äžã®ãªã¹ããä»åã®çºè¡šã®äžèЧã§ãã å€ãã®æ¹ã«çºè¡šããã ããŸããïŒ èªç±æ ïŒè³ªåã»åçå«ããŠ13åïŒ æè²æ
åœãããŠæé·ã§ããããš inotifyã®ã¯ãªã åŒå¿åãšããèãâœ
The World of PHP (2019 Summer) - Speaker Deck å
šæ©èœãã¹ãã®èªåå Windows ã®ã¿ãŒããã«ç°å¢ãæŽãã LTæ ïŒ5åå³å®ïŒ GitLab CIã䜿ã£ã宿å®è¡ LT:Firebase Hack!! å
šãŠã®çºè¡šã«ã€ããŠè§ŠããŠãããããšããã§ãããããã§ã¯é·ããªã£ãŠããŸãã®ã§ãå人çã«æ°ã«ãªã£ãçºè¡šã«çµã£ãŠæ¬¡é
ã§ã¯ã玹ä»ããŸãã å人çã«æ°ã«ãªã£ãçºè¡š inotifyã®ã¯ãªã linux ã® API ã®1ã€ã ãã¡ã€ã«ã·ã¹ãã ã€ãã³ããç£èŠãã inotify ã«ã€ããŠã®çºè¡šã§ããã Ruby ã®ã¢ãžã¥ãŒã«ãçšãããµã³ãã«ã亀ããŠç޹ä»ããŠããã ããŸããã é¢çœãã㪠API ã ã£ãã®ã§å人çã«èª¿ã¹ãŠèŠãŸããããçšéã§ããã°ãåã«ãã°ãã¡ã€ã«ãç£èŠãããããã¡ã€ã«æ¹ãããæ€ç¥ããããšããããã«çšããããããšãå€ãããã§ããç¹ã«ã¢ããªã±ãŒã·ã§ã³ã®éçšé¢ã§ã¯å€§ãã«æŽ»çšã§ãããã ãšæããŸãããéçšé¢ä»¥å€ã§ã掻èºã§ãããé°å²æ°ã¯ããã®ã§ãããã€ãã€ãæãã€ããããããå°ãé 匵ã£ãŠèããŠã¿ãŸãã API ã®è©³çŽ°ã¯ Man page ãã確èªãã ããã å
šæ©èœãã¹ãã®èªåå çºè¡šè
ã®æ¹ãæå±ããéçºããŒã ã§ãªãªãŒã¹ããšã«å®æœããŠããå
šæ©èœãã¹ããèªååãããšãã®å
容ãçºè¡šããŠããã ããŸãããçºè¡šè
ã®æ¹ã¯ãã¹ãã§äœ¿çšããŠãã puppeteer ã«æ
£ããŠããªããããã詊è¡é¯èª€ã®ç¹°ãè¿ãã§ããªãèŠåŽãããããã§ãã ãšã¯ããããã®èªåååŸã¯æåã®æã«æ¯ã¹ãŠååã®æéã§ãã¹ãã宿œã§ããããã«ãªã£ãããã§ãããã¹ããèªååãããå®è¡ã®æéãããããªãç¶æ
ãšããã®ã¯éåžžã«æ¥œã ãšæããŸãïŒ ããããã¯ã¡ã³ããã³ã¹ãšã®æŠãã«ãªããšæããŸãããç¶ç·šã®çºè¡šãšããŠããã®ã¡ã³ããã³ã¹ã«ãããèŠåŽè©±ãªã©ãå
±æããã ãããã°å¬ããã§ããã LT:Firebase Hack!! 5æã®ãã¢ããã·ã¥ããβçã®éçšãå§ãŸã£ãŠãã ãã¢ããã·ã¥å°çšã¹ããã¢ã㪠ã®éçºè
ã®æ¹ãããããã¯ãšã³ãã§äœ¿çšããŠãã firebase ã«ã€ããŠã®çºè¡šã§ããã firebaseã¯æ©èœãéåžžã«å€ããããã¹ãŠã®æ©èœã䜿ã£ãŠããããã§ã¯ãªãããã§ãããããããã®æŠèŠã«ã€ããŠã玹ä»ããã ããŸããã äžã§ãå人çã«æ°ã«ãªã£ãã®ã¯ Test Lab ã§ããLTæ ãšããããšãããçºè¡šã§ã¯ããã£ãšããè§ŠããããŠããªãã£ãã®ã§å人çã«èª¿æ»ããŠã¿ãŸããã Test Labã®ç޹ä»ã¹ã©ã€ã ãã㯠Android ã iOS ã® ãã€ãã£ãã¢ã㪠ã Google ããŒã¿ã»ã³ã¿ãŒã«ãã宿©ã§ãã¹ãã§ãããšãããã®ã ããã§ããWebã¢ããªã«å¯Ÿãããã¹ããã§ããã°å人çã«ã¯ãããé¢çœããªãšæã£ãŠããã®ã§ã¡ãã£ãšæ®å¿µã§ã¯ãããŸãããã ãšã¯ããã Android ã®å Žå㯠Robo ãã¹ã ãšãããèªåã§UIãè§£æããŠãã¹ãããŠãããæ©èœããããããªã®ã§ããã€ãã£ãã¢ããªãéçºããŠããå Žåã¯åŒ·åãªå¹æããããããŠããããã§ãã ãããã« ä»åã¯æ¥åå€ã§åŠç¿ããå
容ã ãã§ãªããæ¥åã§ãããã£ãããšãç©æ¥µçã«å
±æããã ããŸããïŒéçºããŒã éã§ã®æ
å ±ã®å
±æã¯å¥éè¡ãããŠããŸããããããã£ãå Žã§ã®æ
å ±å
±æã¯åœäºè
ã®æ°æã¡ã衚ããããã®ã§èããŠããŠé¢çœãã§ãã ãŸããæè¿ã¯ãèªåãã¹ãããå人çã«æ°ã«ãªãã¯ãŒãã§ãã®ã§ããã®ãããã®çºè¡šããã£ãä»åã®ãã¢ããã·ã¥ã¯ãã€ã以äžã«è峿·±ããã®ãšãªããŸããã ä»åŸããã¢ããã·ã¥ã®å
容ã¯ããã°ã«æ²èŒããŠããã®ã§ãã©ãããæ¥œãã¿ã«ïŒïŒ
ã¯ããã« ããã«ã¡ã¯ãstrongWhiteã§ããä»åã¯å€§éªãªãã£ã¹ã§éå¬ããã7æãã¢ããã·ã¥ãã玹ä»ããããŸãã ååã®èšäºã¯ãã¡ãâ tech-blog.rakus.co.jp ã¯ããã« ããŒãçºè¡š ãæ²Œãžã®ãæåŸ
ã ãHealthy Engineer Lifeã ãæ°åã¯ååœã LTçºè¡š ããã¹ãã«ãã¬ããžãããã話ã ãBeautiful Engineer Life ãPythonã®å匷ãã ãAnsibleã䜿ã£ãŠã¿ãã ãããã« åè ããŒãçºè¡š ä»åã®ããŒã㯠Beautiful Engineer Life ã§ãã åŒç€Ÿãšã³ãžãã¢ãèªèº«ã®ãšã³ãžãã¢ç掻ãããè¯ãããããã«å¿ãããŠããããšã«ã€ããŠçºè¡šããŠããã ããŸããã ãµã ãã®ãã¢ããã·ã¥ã¯æè¡çãªã³ã³ãã³ããçºè¡šãåãå Žã§ãããä»åã¯è¶£å³ã®è©±ãªã©ãçºè¡šã§ããåãšãªããŸããã ããã§ã¯å
容ããã€ãžã§ã¹ãã§ãéãããããŸãã ãæ²Œãžã®ãæåŸ
ã ãã©ã€ããŒãã§ããã£ã 沌 ã®ã話ã çºè¡šè
㯠èªè»¢è» ã®åéã«ããã£ãŠãããè¡ä¹ãçšãããŒãªã³ã°çšãªã©ã®çšéå¥ã«åéããŠãããã¡ã«ããã£ãŠãã£ãããã§ãã æ°ããæ²Œã«ãããã¡ ã«ã ãºã 㯠å°ããªæåäœéšã®ç©ã¿éã ã§ãããä»åã®äŸã§ããšãè¯ãèªè»¢è»ãæã«å
¥ãããšãã æåäœéš ãæ²Œã®å
¥ãå£ãšãªããæ°ä»ãã°ã©ãã©ãããã£ãŠãã£ãããã§ãã 誰ããã©ããªäºçްãªããšã§ãã®ãã蟌ããšæ²Œã«ããã£ãŠãã£ãŠããŸããŸããïŒç¬ïŒ ãHealthy Engineer Lifeã å¥åº·çãªç掻ãéãããã®äœèª¿ç®¡çæ³ã®ã話ã ãšã³ãžãã¢ã¯ä»äºäžãã©ãããŠãæ€
åã«åº§ãã£ã±ãªãã«ãªã£ãããããœã³ã³ã®ç»é¢ãèŠç¶ãã£ã±ãªãã«ãªãããšãå€ãã®ã§ãå
šäœç㪠ç²åŽ æã ãã§ãªãé çãçŒã®ç²ããè©ãããè
°çãªã©ã«æ©ãŸãããã¡ã§ãã ãããã«é¢ããŠçºè¡šè
ã¯ãŸãé£çæŽ»ã«æ°ãé
ããæ é€çŽ ã«çç®ããŠç²ãã«å¹ããã¿ãã³çŸ€ãé©åºŠã«æåããããã«å¿ãããŠããããããã§ããæ°ãã ã»ãããè ã¯æåŒ·ãããã§ãïŒç¬ïŒ ä»ã«ã¯è³ªã®é«ãç¡ç ãåãããã«å¯ãåã« ã¹ãã ç»é¢ãªã©ã® ãã«ãŒã©ã€ã ãæµŽã³ãªããã«ãã§ã€ã³ãã¢ã«ã³ãŒã«ãæåããªããæ±ºãŸã£ãæéã«å¯ãããšã§èº«äœãå¯ãæºåãæŽããããããã«ãããŠããããã§ãã ãããã¯åºæ¬çãªããšã§ã¯ãããŸããããªããªãæ¯æ¥ç¶ç¶ããŠã§ããããšã§ã¯ãªãã§ãããå°ãªããšãçè
ã¯ãã€ãæ«æãããã§ããã ãæ°åã¯ååœã é倿éã«èªãã æè¡ããã°ã®ãšããèšäºã®ã話ã çºè¡šè
ã¯é倿éäžã® æ¥èª² ãšããŠãæè¡çãªã³ã³ãã³ããã¡ãŒã«ã Twitter ãQiitaãªã©ããåéãããŠããã®ã§ããããã®äžã«é¢çœãã¿ã€ãã«ã®èšäºããã£ãã®ã§èªãã§åŸãç¥èãå
±æããŠããã ããŸããã å®éã®èšäºã¯ãã¡ãâ åçèšç»æ³ãå®çŸãã代æ°ããããã«ã«æŒç®ã§ã°ã©ãã®æççµè·¯ãèšç®ããã ãããã«ã«åç° ãšåŒã°ããä»£æ°æ§é äžã®ãããã«ã«è¡åãå©çšãããšã°ã©ãã®æççµè·¯ã®è·é¢ãèšç®ãããšããåé¡ãåçŽãªè¡åç©ã§è§£ããŠããŸã...ãšããè¶£æšã®ã話ãªã®ã§ãããçè
ã¯æ°åŠãèŠæãªã®ã§ããŸãçè§£ã§ããŠããªãã§ãïŒæ³£ïŒ ãã®èšäºã®ã話ãåèã«ããããã«ã«åç°ãæ¥ã
ã®ãä»äºã«æŽ»ãããæ¥ããããšè¯ãã§ãããã LTçºè¡š ãµã ãã¯ããŒãæ ãèªç±æ ãLTæ ã確ä¿ããŠããŸããä»åã¯èªç±æ ãæããLTæ ã®ã¿ãšããŸããã ç°¡åã«çºè¡šå
容ãå
±æããŠãããŸãã ããã¹ã ã«ãã¬ããž ããããè©±ã æ
åœåæã® PHP ã®ããŒãžã§ã³ã¢ããã«äŒŽããå質æ
ä¿ã®ãããã¹ããæžãããã«ããã話ã§ãã çŸç¶ããã¹ãã¯ãããå
šç¶²çŸ
ãã§ããŠããªãããéèŠæ©èœã«çç®ããŠãã¹ã ã«ãã¬ããž ãåäžãããåãçµã¿ãè¡ãããŸããã ãBeautiful Engineer Life ã Python ã®å匷ãã LTæ ã䜿ã£ãBeautiful Engineer Lifeã§ãã7æã®3é£äŒã§ Python ãå匷ãããã話ã§ãã æè¡çãªå匷ã¯ãããã§æ€çŽ¢ããã°å
¬åŒãªãã¡ã¬ã³ã¹ãæå¿ã®ããã°ãªã©ããããããŸãããå
šãã®ã€ãããå匷ããããšãã¯ãããã®ã³ã³ãã³ãã¯ããçšåºŠåæç¥èããªããšçè§£ãã¥ãããããã¡ãããšå匷ããã«ã¯æ¬ã§å匷ããã®ãäžçªãšã®ããšã§ãã ãAnsibleã䜿ã£ãŠã¿ãã æ
åœåæã®éçºæ©ãåèµ·åãããšãäžéšãµãŒãã¹ãæåã§ç«ã¡äžããªããšãããªããšããåé¡ããã£ãã®ã§ãAnsibleã§å®è¡ããããã«ããã話ã§ãã Ansibleãç°¡åã«è§£èª¬ãããšã RedHat 瀟ãéçºãã ãªãŒãã³ãœãŒã¹ ã®æ§æç®¡çããŒã«ã§ã æ¥ç¶å
ãã¡ã€ã« ãšã å®è¡ãã¹ãã¿ã¹ã¯ã®ãªã¹ã ãããã°ãšãŒãžã§ã³ãã¬ã¹ã«å¯Ÿè±¡ã®ãµãŒããŒã«å¯ŸããŠã¿ã¹ã¯ãå®è¡ããŠãããŸãïŒâ»Ansibleã¯åªçæ§ãæ
ä¿ããããã«äœãããŠããã®ã§ãå³å¯ã«ã¯ äœãå®è¡ããã®ã ã§ã¯ãªãã ã©ã®ãããªç¶æ
ãããã¹ãå§¿ãªã®ã ããã¡ã€ã«ã«ãŸãšããŠãããŸãïŒã ãããã« ãšã³ãžãã¢ã®çããã® Beautiful Engineer Life ã«ã€ããŠã®çºè¡šã§ããã ãšã³ãžãã¢ç掻ãããè¯ãããããã«ã¯å匷ã ãã§ãªããè¶£å³ã®æéã倧äºã«ããããçæŽ»ç¿æ
£ãæ¹åããæ¥åžžçæŽ»ã«æ¯éãèµ·ããªãããã«ããªããšãããªãã§ãããäœäºãäœãè³æ¬ãªã®ã§å¥åº·çãã€è¡ççãäžçªã§ãã çè
ããè
¹ãŸããã®ãèãæ°ã«ãªãã®ã§é 匵ã£ãŠç©ããªããšãããªãã§ã ããã§ã¯ã次åã®ãã¢ããã·ã¥ã¬ããŒãããæåŸ
ãã ããïŒ åè åçèšç»æ³ãå®çŸãã代æ°ããããã«ã«æŒç®ã§ã°ã©ãã®æççµè·¯ãèšç®ããã Ansibleãã¯ããã人ã«ã Ansibleãšã¯äœããæ§æç®¡çããŒã«ã®ç®çãAnsibleå°å
¥ãŸã§æéã§çè§£ãã
â»å
¬éæããäžéšèšæ£ããŠããŸãâ» æäžã§å人èå¥ç¬Šå·ã®äŸãšããŠã¯ã¬ãžããã«ãŒãçªå·ããããŠããŸãããã å人æ
å ±ä¿è·å§å¡äŒ ããçºè¡ãããŠããã ãå人æ
å ±ã®ä¿è·ã«é¢ããæ³åŸã«ã€ããŠã®ã¬ã€ãã©ã€ã³ãåã³ãå人ããŒã¿ã®æŒããçã®äºæ¡ãçºçããå Žåçã®å¯Ÿå¿ã«ã€ããŠãã«é¢ããQ&A ãïŒPDFãžã®çŽæ¥ãªã³ã¯ã¯ ãã¡ã ïŒã®Q1-22ã«ãŠã¯ã¬ãžããã«ãŒãçªå· åäœã§ã¯ å人èå¥ç¬Šå·ãšããŠè©²åœããªãæšãèšèŒãããŠããŸããã®ã§ä¿®æ£ããŠããŸãã ããã«ã¡ã¯ãæ ªåŒäŒç€Ÿ ã©ã¯ ã¹ã§æšªæçã«ITãšã³ãžãã¢ã®è²æããæè¡æšé²ãæ¡çšä¿é²ãªã©ãè¡ã£ãŠããéçºç®¡çèª²ã«æå±ããŠããéŽæš( @moomooya )ã§ãã ä»åã¯ç€Ÿå
éžæã¡ã³ããŒã§è¡ã£ãŠãã ã é ïŒ ã ïŒ çºã® æª ïŒ ã¿ ïŒ æ¥ã« å
ïŒ ãã ïŒ æããã€ãããžã§ã¯ãïŒéç§°ïŒãã¿ãããããžã§ã¯ãïŒã ã§ã仿åãæ±ã£ãŠãããããŒã¿å¿ååïŒå人æ
å ±ã®å¿ååïŒãã«ã€ããŠã話ãããããšæããŸããå
š6åã§å·çããŠããŸãã®ã§ãä»ãåãããã ããã°ãšæããŸãã ãªãããã¿ãããããžã§ã¯ãã«ã€ããŠã¯ãã¡ãã®èšäºã§ç޹ä»ããŠããŸãã®ã§ãæ°ã«ãªãæ¹ã¯ãã¡ãã䜵ããŠããããã ããã tech-blog.rakus.co.jp é£èŒç®æ¬¡ ãå
šææ€çŽ¢ ã ElasticsearchãšããŒã¿å¿ååææ³ã ãå
šææ€çŽ¢ã®æ¢æ± Elasticsearch(1) ã: ãããžã§ã¯ãæ¹éããã³ElasticsearchæŠèР倧éããŒã¿ãæ€çŽ¢ãããµãŒãã¹ã§Elasticsearchã¯RDBã®ä»£æ¿åè£ã«ãªããããïŒ(Elasticsearch vs pg_bigm)ã ããŒã¿å¿åå 第1åïŒå¿ååãããå人æ
å ±ãšã¯äœãªã®ã âä»èªãã§ããèšäº ããŒã¿å¿åå 第2åïŒå人æ
å ±ã¯å¿ååããŠãæå³ããªãã®ã§ã¯ãªããïŒ ããŒã¿å¿åå 第3åïŒå人æ
å ±ãå¿ååããããã»ã¹ ããŒã¿å¿åå 第4åïŒå¿ååã®ããã«è¡ãããŒã¿é
ç®ã®äžè¬åãšã¯ ããŒã¿å¿åå 第5åïŒããŒã¿å¿ååã®ææš ããŒã¿å¿åå 第6åïŒå®éã®å¿åå å人æ
å ±ã®å¿åå 2015幎㫠å人æ
å ±ä¿è·æ³ ãæ¹æ£ãããäžéçã«ãå人æ
å ±ã®æ±ãã«ä»ãŸã§ä»¥äžã«æ°ãäœ¿ãæ©äŒãå¢ããŠããŸããããšã³ãžãã¢ã®ç®ç·ã ãš2014幎ããããæµè¡ãå§ãã ããã°ããŒã¿ ã®å
¥åãšãªã倧éã®ããŒã¿ã®ååŠçãšããŠæ³šç®ãããããã«ãªã£ããšæããŸãã2014幎ã«ã¯O'reillyããå°éæžã®éŠèš³çãåºçãããŸãã *1 ã ããŒã¿å¿ååææ³ âãã«ã¹ããŒã¿äºäŸã«åŠã¶å人æ
å ±ä¿è· äœè
: Khaled El Emam , Luk Arbuckle ãªã©ã€ãªãŒãžã£ãã³ Amazon ããããå人æ
å ±ã®æ±ãã«ã€ããŠã¯æ³åŸã«å®ããããŠãããšããããšããããå
·äœçã«ã©ã®ããã«æ±ãã°ããã®ããããã«ããéšåããããšæããŠããŸããããã«ã€ããŠå人æ
å ±ã®æ±ãã«ã€ããŠæäœéã©ãããã°ããã®ããããããã®èšèãäœãæããŠããã®ã *2 ãITãšã³ãžãã¢ç®ç·ã§ã話ãããŠãããã°ãšæããŸãããªããçŽæã§ãããç§ã¯æ³åŸã®å°éå®¶ã§ã¯ãªãã®ã§èšèŒã®å
容ãèªç€ŸãµãŒãã¹ã«é©çšããå Žåãªã©ã¯å°éå®¶ã«çžè«ããããã§ãé¡ãããŸãã ããããå人æ
å ±ãšã¯ å人æ
å ±ä¿è·æ³ ã§å®ããããŠããããšãèšèŒã å人æ
å ±ã«ã€ããŠã®åãæ±ãã¯äžè¬è«ãªã©ã§å®ããããŠããããã§ã¯ãªããå¹³æ29幎5æ30æ¥ã«æœè¡ããã å人æ
å ±ã®ä¿è·ã«é¢ããæ³åŸ ïŒç¥ç§°ãæ° å人æ
å ±ä¿è·æ³ ïŒã«ãã£ãŠå®ããããŠããŸãã æ³çãªè§£é å人æ
å ± ã¯æ° å人æ
å ±ä¿è·æ³ 第äžç« ç·åã®äžã§ä»¥äžã®ããã«å®çŸ©ãããŠããŸãã ç¬¬äºæ¡ããã®æ³åŸã«ãããŠãå人æ
å ±ããšã¯ãçåããå人ã«é¢ããæ
å ±ã§ãã£ãŠã次ã®åå·ã®ããããã«è©²åœãããã®ãããã äžãåœè©²æ
å ±ã«å«ãŸããæ°åãçå¹Žææ¥ãã®ä»ã®èšè¿°çïŒææžãå³ç»è¥ããã¯é»ç£çèšé²ïŒé»ç£çæ¹åŒïŒé»åçæ¹åŒãç£æ°çæ¹åŒãã®ä»äººã®ç¥èŠã«ãã£ãŠã¯èªèããããšãã§ããªãæ¹åŒããããæ¬¡é
第äºå·ã«ãããŠåããïŒã§äœãããèšé²ãããã第åå
«æ¡ç¬¬äºé
ã«ãããŠåããïŒã«èšèŒãããè¥ããã¯èšé²ãããåã¯é³å£°ãåäœãã®ä»ã®æ¹æ³ãçšããŠè¡šãããäžåã®äºé
ïŒå人èå¥ç¬Šå·ãé€ããïŒãããã以äžåããïŒã«ããç¹å®ã®å人ãèå¥ããããšãã§ãããã®ïŒä»ã®æ
å ±ãšå®¹æã«ç
§åããããšãã§ããããã«ããç¹å®ã®å人ãèå¥ããããšãã§ããããšãšãªããã®ãå«ããïŒ äºãå人èå¥ç¬Šå·ãå«ãŸãããã® ãå人æ
å ±ã®ä¿è·ã«é¢ããæ³åŸãããåŒçš ãã®ãŸãŸã ãšãããã«ããã®ã§åè§£ããŠã¿ãŸãã åœè©²æ
å ±ã«å«ãŸããæ°åãçå¹Žææ¥ãã®ä»ã®èšè¿°çã«ããç¹å®ã®å人ãèå¥ããããšãã§ãããã® ãã®ä»ã®èšè¿°ç ãšããããã«ç¯å²ãç¹å®ããããã§ãããæ¯èŒçãããããããšæããŸãã ä»ã®æ
å ±ãšå®¹æã«ç
§åããããšãã§ããããã«ããç¹å®ã®å人ãèå¥ããããšãã§ããããšãšãªããã®ãå«ã æ°åãªã©åäœã§ç¹å®ã§ãããã®ã«éãããçµã¿åããã«ãã£ãŠç¹å®ã§ããæ
å ±ãå«ãŸãããšããããšã§ããäŸãã°ããã亀çªã®é£ã«äœãã§ãããããããããããšããçµã¿åããã¯ããã亀çªã®åšå²ã®äœå±
ïŒäœæã®ç¯å²ïŒãã ããããããããïŒæ§å¥ãšå¹Žéœ¢ã®ç¯å²ïŒãã ãã§ã¯å人ãç¹å®ã§ããªããŠã2ã€ã®æ
å ±ãçµã¿åããã£ããšãã«ç¹å®ã§ããå Žåã¯ãããå人æ
å ±ãšããŠæ±ãããããšã«ãªããŸãïŒåäœã§å人ãèå¥ã§ãã èå¥å ã«å¯Ÿã㊠æºèå¥å ãšåŒã°ããïŒã ææžãå³ç»è¥ããã¯é»ç£çèšé²ã«èšèŒãããè¥ããã¯èšé²ãããåã¯é³å£°ãåäœãã®ä»ã®æ¹æ³ãçšããŠè¡šãããäžåã®äºé
ïŒå人èå¥ç¬Šå·ãé€ããïŒããã ããã¯èšé²ã®æ¹æ³ãã¢ããã°ãããžã¿ã«ã®åºå¥ããªããæåã峿¡ïŒå³ã衚ãåçãªã©ïŒã ãã§ã¯ãªãé³å£°ãåäœãªã©ãåºå¥ããªã該åœãããšããããšã«ãªããŸãã å人èå¥ç¬Šå·ãå«ãŸãããã® ãå人èå¥ç¬Šå·ããšããã®ã¯èããªããªãã§ããã以äžã®ããã«å®ããããŠããŸãã ïŒããã®æ³åŸã«ãããŠãå人èå¥ç¬Šå·ããšã¯ã次ã®åå·ã®ããããã«è©²åœããæåãçªå·ãèšå·ãã®ä»ã®ç¬Šå·ã®ãã¡ã æ¿ä»€ ã§å®ãããã®ãããã äžãç¹å®ã®å人ã®èº«äœã®äžéšã®ç¹åŸŽãé»åèšç®æ©ã®çšã«äŸããããã«å€æããæåãçªå·ãèšå·ãã®ä»ã®ç¬Šå·ã§ãã£ãŠãåœè©²ç¹å®ã®å人ãèå¥ããããšãã§ãããã® äºãåäººã«æäŸããã圹åã®å©çšè¥ããã¯å人ã«è²©å£²ãããååã®è³Œå
¥ã«é¢ãå²ãåœãŠãããåã¯å人ã«çºè¡ãããã«ãŒããã®ä»ã®æžé¡ã«èšèŒãããè¥ããã¯é»ç£çæ¹åŒã«ããèšé²ãããæåãçªå·ãèšå·ãã®ä»ã®ç¬Šå·ã§ãã£ãŠããã®å©çšè
è¥ããã¯è³Œå
¥è
åã¯çºè¡ãåããè
ããšã«ç°ãªããã®ãšãªãããã«å²ãåœãŠãããåã¯èšèŒãããè¥ããã¯èšé²ãããããšã«ãããç¹å®ã®å©çšè
è¥ããã¯è³Œå
¥è
åã¯çºè¡ãåããè
ãèå¥ããããšãã§ãããã® ãå人æ
å ±ã®ä¿è·ã«é¢ããæ³åŸãããåŒçš äœãæããŠããã®ãå°ããããã«ããã§ããããã¡ã㯠å人æ
å ±ä¿è·å¡äŒ ãå
¬éããŠãã å人æ
å ±ä¿è·ã®åºæ¬ ãšããè³æã®9ããŒãžç®ãããããããã§ãã ãå人èå¥ç¬Šå·ãã¯ä»¥äžâ â¡ã®ããããã«è©²åœãããã®ã§ããã æ¿ä»€ ã»èŠåã§åå¥ã«æå® ãããã â 身äœã®äžéšã®ç¹åŸŽãé»åèšç®æ©ã®ããã«å€æããç¬Šå· âãé¡ã è¹åœ© ã声çŽãæ©è¡ã®æ
æ§ãææã®éèãæçŽã»æçŽ â¡ ãµãŒãã¹å©çšãæžé¡ã«ãããŠå¯Ÿè±¡è
ããšã«å²ãæ¯ãããç¬Šå· âå
¬çãªçªå· æ
åžçªå·ã åºç€å¹Žéçªå· ãå
蚱蚌çªå·ãäœæ°ç¥šã³ãŒãã ãã€ãã³ ããŒãåçš®ä¿éºèšŒç ãå人æ
å ±ä¿è·ã®åºæ¬ãããåŒçš (PDF) å¿ååãšã¯ ãããã®å人æ
å ±ãå«ãæ
å ±ãåå©çšå¯èœãªåœ¢ã«ããããšãäžè¬ã«å¿ååãåå©çšå¯èœãªããŒã¿ãå¿ååããŒã¿ãªã©ãšåŒã³ãŸããããããåããæ° å人æ
å ±ä¿è·æ³ ã«ãŠå®çŸ©ãããŠããŸãã æ³çãªè§£é æ³åŸäžã¯å¿ååããŒã¿ã®ããšã¯ãå¿åå å·¥æ
å ±ããšè¡šçŸãããå人æ
å ±ãšåããæ° å人æ
å ±ä¿è·æ³ 第äžç« ç·åã®äžã§ä»¥äžã®ããã«å®çŸ©ãããŠããŸãã ïŒããã®æ³åŸã«ãããŠãå¿åå å·¥æ
å ±ããšã¯ã次ã®åå·ã«æ²ããå人æ
å ±ã®åºåã«å¿ããŠåœè©²åå·ã«å®ããæªçœ®ãè¬ããŠç¹å®ã®å人ãèå¥ããããšãã§ããªãããã«å人æ
å ±ãå å·¥ããŠåŸãããå人ã«é¢ããæ
å ±ã§ãã£ãŠãåœè©²å人æ
å ±ã埩å
ããããšãã§ããªãããã«ãããã®ãããã äžã第äžé
第äžå·ã«è©²åœããå人æ
å ±ãåœè©²å人æ
å ±ã«å«ãŸããèšè¿°çã®äžéšãåé€ããããšïŒåœè©²äžéšã®èšè¿°çã埩å
ããããšã®ã§ããèŠåæ§ãæããªãæ¹æ³ã«ããä»ã®èšè¿°çã«çœ®ãæããããšãå«ããïŒã äºã第äžé
第äºå·ã«è©²åœããå人æ
å ±ãåœè©²å人æ
å ±ã«å«ãŸããå人èå¥ç¬Šå·ã®å
šéšãåé€ããããšïŒåœè©²å人èå¥ç¬Šå·ã埩å
ããããšã®ã§ããèŠåæ§ãæããªãæ¹æ³ã«ããä»ã®èšè¿°çã«çœ®ãæããããšãå«ããïŒã ãå人æ
å ±ã®ä¿è·ã«é¢ããæ³åŸãããåŒçš ãã¡ããäžã€ãã€èŠãŠãããããšæããŸãã 第äžé
第äžå·ã«è©²åœããå人æ
å ± ãã¡ãã¯å
è¿°ãã åœè©²æ
å ±ã«å«ãŸããæ°åãçå¹Žææ¥ãã®ä»ã®èšè¿°çã«ããç¹å®ã®å人ãèå¥ããããšãã§ãããã® ãšããå人èå¥ç¬Šå·ä»¥å€ã®éšåã«è©²åœããæ
å ±ã§ãã åœè©²å人æ
å ±ã«å«ãŸããèšè¿°çã®äžéšãåé€ããããšã ãèšè¿°çã®äžéšãåé€ãã¯æåéãã®ãªã®ã§ããããããã§ããäŸãã°äœæã§ããã°ãæ±äº¬éœæžè°·åº åé§ã¶è°· 5-27-11ã *3 ã®åŸåãåé€ããŠãæ±äº¬éœæžè°·åºãã«ããã°ããããã§ãã åœè©²äžéšã®èšè¿°çã埩å
ããããšã®ã§ããèŠåæ§ãæããªãæ¹æ³ã«ããä»ã®èšè¿°çã«çœ®ãæããããšãå«ãã éå¯éãªæ
å ±ã§çœ®ãæããããšã§ããåé€ããšããŠæ±ãããããã§ãããã ãæ³šæããªããã°ãªããªãã®ã¯çœ®ãæããåŸã®æ
å ±ã ä»ã®æ
å ±ãšå®¹æã«ç
§åããããšãã§ããããã«ããç¹å®ã®å人ãèå¥ããããšãã§ããããšãšãªããã® ã«ãªã£ãŠããŠã¯ãããªãã®ã§ã眮ãæããåŸãå人æ
å ±ã«è©²åœããªãã確èªããå¿
èŠãããã§ãããã 第äžé
第äºå·ã«è©²åœããå人æ
å ± ãã¡ãã¯ãå人èå¥ç¬Šå·ãã«è©²åœããæ
å ±ã«ã€ããŠã§ãã åœè©²å人æ
å ±ã«å«ãŸããå人èå¥ç¬Šå·ã®å
šéšãåé€ããããš ãã¡ãã¯å
ã»ã©ãšç°ãªãã®ã¯ãå人èå¥ç¬Šå·ã®å
šéšãåé€ããšãªã£ãŠããéšåã§ããäŸãã° ã¯ã¬ãžããã«ãŒãçªå· ãã¹ããŒãçªå· *4 ã§ããã°ãäžæ°æ¡ã眮ãæããããšãã£ãæ¹æ³ã§ã¯ãªãããã¹ãŠã®æ¡ãååšããªãçªå·ã«çœ®ãæããããšãã£ã察å¿ãå¿
èŠãªããã§ãã åœè©²å人èå¥ç¬Šå·ã埩å
ããããšã®ã§ããèŠåæ§ãæããªãæ¹æ³ã«ããä»ã®èšè¿°çã«çœ®ãæããããšãå«ã å人èå¥ç¬Šå·ã«ã€ããŠãéå¯éãªæ
å ±ã§çœ®ãæããããšã§ããåé€ããšããŠæ±ãããããã§ãããã¡ããåæ§ã«çœ®ãæãåŸã®æ
å ±ãå人æ
å ±ãšãªã£ãŠããªãããšã¯ç¢ºèªããå¿
èŠããããŸãã ãŸãšã ãããŸã§æ³åŸäžã®ãå人æ
å ±ããå¿åå å·¥æ
å ±ãã®å®çŸ©ããã¿ç ããªããèªã¿è§£ããŠããŸããã ãããå®éã®ãå¿åå å·¥æ
å ±ãã«å å·¥ããã«ããã£ãŠã¯å 工察象ãšãªãããŒã¿ã«å¿ããŠã±ãŒã¹ãã€ã±ãŒã¹ã®å¯Ÿå¿ãè¡ã£ãŠããå¿
èŠããããŸãããã®é£èŒã§ã¯å®éã®ããŒã¿ã®å å·¥ãã©ã®ããã«é²ããŠããã®ããé ã远ã£ãŠç޹ä»ããŠã¿ãããšæããŸãã ãã ãããããŸã§è§ŠããŠãããšããå人æ
å ±ã®å¿ååã«ã¯æ³çè§£éãããã®ã§ã宿¥åã«é©çšããå Žåãªã©ã¯å°éå®¶ã«åãåãããŠç¢ºèªããŠããåãæ±ã£ãŠããã ããã°ãšæããŸãã ãã®é£èŒã§ã¯æäœéãããªããšãããªãã ããããšããåçšèªãã©ããããã®ãæããŠããã®ãããšã³ãžãã¢èŠç¹ã§è§£èª¬ããŠãããããšæããŸãã æ¬¡åã¯å¿ååããå人æ
å ±ãæ¬åœã«å人ãç¹å®ã§ããªãã®ããå人ãç¹å®ã§ããªããšã¯ã©ãããããšãªã®ããã話ãããããšæããŸãã é£èŒç®æ¬¡ ãå
šææ€çŽ¢ ã ElasticsearchãšããŒã¿å¿ååææ³ã ãå
šææ€çŽ¢ã®æ¢æ± Elasticsearch(1) ã: ãããžã§ã¯ãæ¹éããã³ElasticsearchæŠèР倧éããŒã¿ãæ€çŽ¢ãããµãŒãã¹ã§Elasticsearchã¯RDBã®ä»£æ¿åè£ã«ãªããããïŒ(Elasticsearch vs pg_bigm)ã ããŒã¿å¿åå 第1åïŒå¿ååãããå人æ
å ±ãšã¯äœãªã®ã âä»èªãã§ããèšäº ããŒã¿å¿åå 第2åïŒå人æ
å ±ã¯å¿ååããŠãæå³ããªãã®ã§ã¯ãªããïŒ ããŒã¿å¿åå 第3åïŒå人æ
å ±ãå¿ååããããã»ã¹ ããŒã¿å¿åå 第4åïŒå¿ååã®ããã«è¡ãããŒã¿é
ç®ã®äžè¬åãšã¯ ããŒã¿å¿åå 第5åïŒããŒã¿å¿ååã®ææš ããŒã¿å¿åå 第6åïŒå®éã®å¿åå *1 : ã¡ãªã¿ã«ãã¡ãã®ãããŒã¿å¿ååææ³ãã¯åºç€ãå¿ååææ³äžè¬ã®è©±é¡ã§ãäžç€ä»¥éãå»çç³»ããŒã¿ã§ã®äºäŸãããšã«è§£èª¬ãããŠããŸãããåºç€ã®ç¹ã«2ç« ã¯äœåºŠãç¹°ãè¿ãèªã¿èŸŒãã ã»ã©ãããŸãšãŸã£ãŠããã®ã§ãªã¹ã¹ã¡ã§ãã *2 : æå€ãšåé¢ããã®æ³åã§ã¯æ£ããçè§£ã§ããªãçšèªãã¡ãã»ããããŸãã *3 : åŒç€Ÿã®äœæã§ãã *4 : ããã¹ããŒãçªå·ãã®ä»ã«ã¯ã åœæ°å¹Žé æ³ã«ããã åºç€å¹Žéçªå· ãã éè·¯äº€éæ³ ã«ãããå
蚱蚌ã®çªå·ãã äœæ°åºæ¬å°åž³ æ³ã«ãããäœæ°ç¥šã³ãŒããã被ä¿éºè
蚌ã®çªå·ããªã©ã æ¿ä»€ ã å人æ
å ±ã®ä¿è·ã«é¢ããæ³åŸæœè¡ä»€ïŒå¹³æ15幎æ¿ä»€ç¬¬507å·ïŒ ãã«ãã㊠å人èå¥ç¬Šå· ãšããŠå®çŸ©ãããŠããŸããä»ã«ããDNAã® å¡©åºé
å ãããæçŽããæçŽããšãã£ããã®ãå®çŸ©ãããŠããŸãã
ããã«ã¡ã¯ãMasaKuã§ãã ä»å¹Žã ãªãŒãã³ãœãŒã¹ã«ã³ãã¡ã¬ã³ã¹ ãéå¬ãããŸããã®ã§ãæ¯å¹Žã®æäŸè¡äºãšããŠåå ããŠããŸããïŒ www.ospn.jp 以ååå ããéã«ãè峿·±ãã£ãçºè¡šã® èšäº ãæžãããŠããã ããããåŒç€Ÿã§è¡ã£ãŠãããã¢ããã·ã¥ã§çºè¡šããŸããã tech-blog.rakus.co.jp ããããããããã ãªãŒãã³ãœãŒã¹ã«ã³ãã¡ã¬ã³ã¹ ã£ãŠã©ããªãšããïŒãšæãããæ¹ãå€ãã®ã§ã¯ãªãã§ããããã ä»åã¯ã ãªãŒãã³ãœãŒã¹ã«ã³ãã¡ã¬ã³ã¹ ãªãã§ã¯ã®æ¥œããããäŒããã åå ããŠã¿ããïŒ ããšæã£ãŠé ãããããªèšäºãæžããã°ãšæããŸãã ãªãŒãã³ãœãŒã¹ã«ã³ãã¡ã¬ã³ã¹ 2019 Kyoto 楜ãããã€ã³ãïŒïŒè±å¯ãªçºè¡šå
容 楜ãããã€ã³ãïŒïŒå±ç€ºããŒã¹ 楜ãããã€ã³ãïŒïŒLTå€§äŒ æåŸã« ããŸã åèãµã€ã 楜ãããã€ã³ãïŒïŒè±å¯ãªçºè¡šå
容 ã ãªãŒãã³ãœãŒã¹ ã®æåç¥ããšãããµãã¿ã€ãã«ã®éãã ãªãŒãã³ãœãŒã¹ ã«é¢é£ããæ§ã
ãªããŒããéãŸããããçºè¡šå
å®¹ã¯æ¬åœã«å€çš®å€æ§ã§ãã ãªãŒãã³ãœãŒã¹ ã®MWã«é¢ããææ°æ
å ±ã®çºè¡šã§ãã£ããã ãªãŒãã³ãœãŒã¹ ã®ããŒã«ãå©çšããæ¥åæ¹åã®çºè¡šã§ãã£ããã ãªãŒãã³ãœãŒã¹ ã®æŽå²ã«ã€ããŠã®çºè¡šã§ãã£ãããetc... ãšæ¬åœã«æ§ã
ãªçºè¡šãèãããšãã§ããŸãã ä»åç§ã¯äºæ¥ç®ã«åå ããã®ã§ããããã®éã«èŽè¬ãããŠããã ããçºè¡šã¯ä»¥äžã®éãã§ãã ã¢ãžã£ã€ã«ã»å€èšèªéçºæä»£ã®JetBrainséçºç°å¢ Raspberry Piææ°æ
å ±ã¢ããããŒã LiskïœJavaScriptã§ç°¡åã«ç¬èªãããã¯ãã§ãŒã³ãæ§ç¯ïœ Powershellã§åãéãExcelã®æŽã«æ°ããäœ¿ãæ¹ å¹³æçãŸãã®ããã®UNIX&ITæŽå²è¬åº§ ïœ2000幎代ååç·šïœ ã©ã€ããã³ã°ããŒã¯ïŒéäŒåŒ ç§ãèŽè¬ãããã®ã§ããæ¬åœã«æ§ã
ãªããŒãããããšæãããã®ã§ã¯ãªãã§ããããã ãã®ã»ãã®çºè¡šã«ã€ããŠã¯ ã³ãã© ããã確èªããã ãããšå¹žãã§ãã æ¥œãããã€ã³ãïŒïŒå±ç€ºããŒã¹ ãªãŒãã³ãœãŒã¹ã«ã³ãã¡ã¬ã³ã¹ ã§æãæ°ã«å
¥ã£ãŠããã®ããå±ç€ºããŒã¹ãã§ãã å±ç€ºããŒã¹ ã¬ããPCã§ Mastodon ãèµ·å å±ç€ºããŒã¹ ãšã¯ãäŒå Žã®äžéšã®ã¹ããŒã¹ãå©çšããŠãäœåã®å±ç€ºã ãªãŒãã³ãœãŒã¹ ã®å®£äŒæŽ»åãªã©ãè¡ãã€ãã³ãã§ãã å±ç€ºããŒã¹ã®é¢çœããã€ã³ãã¯ãå±ç€ºãããŠããæ¹ãšãã£ãããšè©±ãããããšãã§ããç¹ã§ãã äœãšãªãèããããšãããªãšããã¬ãã«ã®ç¥èã§ããããŒã¹ã«è¿ã¥ããŠãããšåºå±ãããŠããæ¹ã話ããããŠãã ãããŸãã è²ã
ãšæããŠãã ããåªããæ¹ã°ãããªã®ã§ãæ¬åœã«æããã€ãã³ãã ãšæ¯åæããããŸãã ããŒã¹ã«åºåºãããæ¹ãåžžé£ã®æ¹ãå€ããããããªããšãªãåçªäŒã®ãããªé°å²æ°ãããã®ãå人çã«ã¯ããã奜ããªãã€ã³ãã§ãã ã話ãèããã ãã§ãææçŸ©ã ãšæããŸãããã¹ããã«ãŒãã玹ä»ãããŠãã ãªãŒãã³ãœãŒã¹ ã®å°å
¥è³æãªã©ã®ãåç£ãããããããŒã¹ãååšããŸãã æ ªåŒäŒç€Ÿãµã ã©ã€ãºã æ§ããé ããPhpStormã®ã¹ããã«ãŒ 楜ãããã€ã³ãïŒïŒLTå€§äŒ ãªãŒãã³ãœãŒã¹ã«ã³ãã¡ã¬ã³ã¹ ã§ã¯ãéäŒåŒã®åã®ã»ãã·ã§ã³ã§LT倧äŒãéå¬ãããŸãã ä»åã¯11åã®æ¹ãçºè¡šãããŠããŸããããçºè¡šå
容ã幎代ããã©ãã©ã§æ¬åœã«èŠãããã®ããçºè¡šã°ããã§ããã æ§ã
ãªå¹Žä»£ã®æ¹ãçºè¡šããããããå€çš®å€æ§ãªã¿ã€ãã®çºè¡šãèŠãããšãã§ããçºè¡šã®ä»æ¹ã®å匷ã«ããªããŸããã ä»åã®LT倧äŒãèŽè¬ããŠãçºè¡šã®ä»æ¹ãšããé¢ã§å匷ã«ãªã£ãã®ã¯ä»¥äžã®éãã§ãã å€ãã®äººã«åœãŠã¯ãŸããããããããªéšåãå
·äœçãªäŸãæç€ºããªããå
±æãèªããã¯ãã㯠ããããªããšæ®éã¯ããªãã§ãããïœããšèšãã€ã€ããèªåã¯ãããŸããïŒããšããæè¡šãã€ãå±é ãã¬ãŒã³ããŒã·ã§ã³ã§èŽè¡ãåŒã蟌ããã¯ããã¯ãšããŠã¯å®çªãªãã®ããç¥ããŸããããããŸãããç¥ããªãããŒãã«é¢ããçºè¡šã§ãã°ããšåŒã蟌ãŸããã»ã©åŒ·åãªãã¯ããã¯ã ãšã¯æã£ãŠããªãã£ãã®ã§ãæ¯é身ã«çããããã¯ããã¯ã ãšæããŸããã æåŸã« ãããã§ããã§ãããããæ¥œããããªé°å²æ°ãäŒãã£ãŠãå°ãã§ãèå³ããã£ãŠããã ããã幞ãã§ãã ç§ãå匷äŒãã«ã³ãã¡ã¬ã³ã¹ã¯åå ããéã¯ãäºåã«é°å²æ°ãçºè¡šå
容ããªãµãŒãããŠããåå ããããæ±ºããããšããããŸãã ãããã ãªãŒãã³ãœãŒã¹ã«ã³ãã¡ã¬ã³ã¹ ã«é¢ããŠã¯ãè¡ãã°äœã楜ããããšãèŠã€ããããïŒããšããæåŸ
æãæ¯åæãŠãŸãã ä»åãããããã®æ¥œãããèŠã€ããããšãã§ããŸããã®ã§ã次åãæ¯éåå ããããšæã£ãŠããŸãã ã¡ãªã¿ã«ã次å㯠9/14 - 9/15 ã«åºå³¶ã§éå¬äºå®ã§ãã www.ospn.jp ããŸã åå è
ã¢ã³ã±ãŒããžã®åçåŸã«ããåŒãããããŠããããã®ã§ãããèŠäºTã·ã£ããåœãããŸããïŒ FOSS4G 2017 ã®Tã·ã£ã åä»ã®æ¹ãããã¯ãªãããŠããŠããã«ã鳎ããããã®ã§çµæ§ãªç¢ºçã ã£ãã®ã§ã¯ãªãã§ããããã â»OSCãªã®ã«FOSS4Gã®Tã·ã£ãïŒãšãªããŸãããã2017幎ã¯ç§ã®å
¥ç€Ÿå¹ŽåºŠã§ããããŸãã®ã§äœãã®çžã ãšæã倧åã«ããŸã åèãµã€ã オープンソースカンファレンス2019 Kyoto - オープンソースの文化祭!
ã¯ããã« favicon ã衚瀺ããããããšããã£ãã®ã§ããããã©ãŠã¶ããšã®æåã®éãã«ãã£ãŠä»¥å€ãšèŠãããããŸããããã®èšäºã§ã¯ã¿ã€ãã«ã®éãã favicon ã衚瀺ãããªãæã«ç¢ºèªããããšãèšèŒããŸãã ã¯ããã« faviconã£ãŠäœïŒ 確èªãããã©ãŠã¶ãšãã®ããŒãžã§ã³ faviconã®è¡šç€ºæ¹æ³ 確èª1ïŒèªã¿èŸŒãç»åãã¡ã€ã«ãçã åé¡ã®åãåã 確èª2ïŒãã£ãã·ã¥ãåé€ããŠã¿ã 確èª3ïŒçµ¶å¯Ÿãã¹ã§èšè¿°ããïŒIE,EdgeïŒ ç¢ºèª4ïŒèšŒææžãŸãããçãïŒIE,EdgeïŒ è£è¶³ïŒIEãšEdgeã ãã§ããããfaviconã衚瀺ãããæ ç¢ºèª5ïŒfaviconã«é¢ãããã¡ã€ã«ãåé€ããŠã¿ã è£è¶³ïŒäœã«äœ¿ããããã¡ã€ã«ãªã®ïŒ ãããã« favicon ã£ãŠäœïŒ favicon ãšã¯webãµã€ãã®ã¢ãã¬ã¹ããŒãã¿ãéšåã«è¡šç€ºãããã¢ã€ã³ã³ã®ããšã§ããä»ããŠããããšã§è€æ°ã¿ããéããéãããã¯ããŒã¯ããéã«æ¢ãããããªããŸãã favicon _ãã©ãŠã¶ã®ã¿ã favicon _ãæ°ã«å
¥ãã㌠確èªãããã©ãŠã¶ãšãã®ããŒãžã§ã³ Google Chrome 75.0.37 Firefox 67.0.4 Internet Explore 11.88 Edge 42.17 favicon ã®è¡šç€ºæ¹æ³ åºæ¬çã« favicon çšã®ç»åãçšæããäžèšã®ããã«æžããŠããããš favicon ã¯è¡šç€ºãããŸãã typeïŒç¡ããŠã favicon ã¯è¡šç€ºãããããã§ãã ico 以å€ã«ãjpgã png ã®æå®ãã§ããŸã hrefïŒ çµ¶å¯Ÿãã¹ ã çžå¯Ÿãã¹ ã§æå®ã§ããŸã < link rel = "shortcut icon" type = "image/x-icon" href = "/img/favicon.ico" /> åèïŒ qiita.com 確èª1ïŒèªã¿èŸŒãç»åãã¡ã€ã«ãçã ç»åãã¡ã€ã«ãæªãå Žåã衚瀺ãããªãããšãããããã§ãããŸãã調ã¹ããšããã favicon ã«ã¯ png ãjpgãªã©ã䜿ããããã§ããã ico ãã¡ã€ã«ãäžè¬çãªããã§ãã åé¡ã®åãåã ç»åãæªãã®ããã以å€ã®åå ããåãåããã«ã¯ã以äžã®æé ãæã£åãæ©ããšæããŸãã favicon ã衚瀺ããä»»æã®ãµã€ããžã¢ã¯ã»ã¹ éçºè
ããŒã«ãã favicon ãªã©ã§æ€çŽ¢ favicon ã®ç»åãã¡ã€ã«ãããŠã³ããŒããèªåã®ãµã€ãã§ã衚瀺ãããã詊ã â 衚瀺ããããªããèªåã®ãµã€ãã®ç»åãåé¡ã§ããããšãåãã 確èª2ïŒãã£ãã·ã¥ãåé€ããŠã¿ã favicon ã®ç»åãå€ããã®ã«å€æŽãåæ ãããªãå Žåã¯ãŸãçããšè¯ããšæããŸãããŸããèŠèœãšããšäžã
æ°ã¥ããªãã®ããã®ãã¿ãŒã³ã§ãã 確èª3ïŒ çµ¶å¯Ÿãã¹ ã§èšè¿°ããïŒ IE ,EdgeïŒ IE ãEdgeã§ã¯ 絶察ãã¹ ã§ãªããš favicon ã衚瀺ãããªãããã§ããä»ã®ãã©ãŠã¶ã§è¡šç€ºãããã«ãé¢ãããã IE ãEdgeã§è¡šç€ºãããªããšãã¯ãã¹ã確èª4ã®èšŒææžãŸãããçããšè¯ããšæããŸãã åèïŒ http://www.seotemplate.biz/free-seo/2195/ www.seotemplate.biz 確èª4ïŒèšŒææžãŸãããçãïŒ IE ,EdgeïŒ https éä¿¡ãããŠãããµã€ãã§ã¯ 絶察ãã¹ ã https://... ãšæžããŠãèšŒææžã®åé¡ã§è¡šç€ºãããªãããšããããŸãã ãªã¬ãªã¬èšŒææž ãå©çšããŠãããšè¡šç€ºãããªããããªã®ã§æ³šæãå¿
èŠã§ãã è£è¶³ïŒ IE ãšEdgeã ãã§ãããã favicon ã衚瀺ãããæ äžå¿ã IE ãEdgeã®ã¿ã«è¡šç€ºããããå Žåã¯ãç»åã®ãã¹ã®ã¿http://ãš SSL éä¿¡ã§ãªãããŠãããã°è¡šç€ºãããããšã¯ã§ããŸããããã ãããã®æžãæ¹ïŒ https ã®ãµã€ãã§ç»åã®ãã¹ã®ã¿httpã«ããïŒãããå Žå Chrome ã§ã¯ favicon ã衚瀺ãããªããªããŸããã 確èª5ïŒ favicon ã«é¢ãããã¡ã€ã«ãåé€ããŠã¿ã ãã©ãŠã¶ããšã«æ ŒçŽããŠãã favicon ã«é¢ãããã¡ã€ã«ãã¯ãªã¢ããŠã¿ãæ¹æ³ã§ãïŒç§ã詊ãããšãã«ã¯ãããåå ã«ãªãããšã¯ãªãã£ããããæèŠãšããŠã¯ããŸãé »çºããªããã¿ãŒã³ã ãšæããŸãïŒã è£è¶³ïŒäœã«äœ¿ããããã¡ã€ã«ãªã®ïŒ ãã©ãŠã¶ããšã«æ ŒçŽãããŠãã favicon ãã¡ã€ã«ã¯ããæ°ã«å
¥ããªã©ã衚瀺ããéã«å©çšããããã®ã§ãããã®ããããã©ãŠã¶ãããã£ãã·ã¥ãæ¶ããŠããã®ãã¡ã€ã«ã¯æ¶ããŸããã äžèšã« Google Chrome ã§ã®æ ŒçŽå ŽæãäŸãšããŠæããŠãããŸãã Windows ïŒ Local Settings/Application Data/Google/Chrome/User Data/Default Mac ïŒ Machintosh HD/ãŠãŒã¶/ïŒãŠãŒã¶åïŒ/ã©ã€ãã©ãª/Application Support/Google/Chrome/Default åèïŒ www.japan-secure.com ãããã« ä»å㯠favicon ã衚瀺ãããªãæã«ç¢ºèªããããšã玹ä»ããŸãããç»åãçšæããŠãHTMLã1è¡æžãã ãâŠãšæã£ãŠããŸããã ããããã å¥¥ãæ·±ããªãšæããŸããããã©ãŠã¶ããã®ããŒãžã§ã³ã«ãã£ãŠèŠããããããšããããšã¯ãããããšæãã®ã§ favicon ã§å°ã£ãŠããæ¹ã®äžå©ã«ãªã£ãŠããã°å¹žãã§ãã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã rakus.hubspotpagebuilder.com ã©ã¯ ã¹Developersç»é²ãã©ãŒã https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ âTECH PLAY techplay.jp âconnpass rakus.connpass.com
https://www.agilejapan.org/ www.agilejapan.org ã¯ãã㫠楜楜æçްã®ãšã³ãžãã¢ãããŠãã id:eichisanden ã§ãã 7/18ã«è¡ããã Agile Japan 2019ã®ã ãŒããŒã¹ãã³ãµãŒãåŒç€Ÿã®æ¹ã§åããããŠé ããŸããã ã¢ãžã£ã€ã« ãžã£ãã³2019ã«ã ãŒããŒã¹ãã³ãµãŒãšããŠåå ãããŠé ããŠãããŸãã #agilejapan pic.twitter.com/7JmNmuHtZL — æ ªåŒäŒç€Ÿ ã©ã¯ ã¹ éçºéš (@DevRakus) 2019幎7æ18æ¥ ã ãŒããŒã¹ãã³ãµãŒã«ãªããšãæåŸ
ãã±ãããé¢ä¿è
ãã±ããã1æãã€è²°ããã®ã§ãšãŠããåŸã ãšæããŸãïŒ æè¿ããŒã ã§ ã¹ã¯ã©ã ãåããããšãããåããŠåå ãããŠããããŸããã ïŒãšããã ã¢ãžã£ã€ã« ã®ã€ãã³ãèªäœãååå ã§ããïŒïŒ ã»ãã·ã§ã³ã®åéãªã©ã« ã€ã³ã㯠ãã®ããæ¥œæ¥œç²Ÿç®ã®ã ãŒããŒãæµãããŠããŸããã瀟åã ãã§ãèŠããŠããããããªã ã ãŒããŒã¹ãã³ãµãŒã¯åœæ¥ããããšãªãã®ã§ïŒç¬ïŒïŒåå è
ãšããŠæ¥œããŸããŠããããŸããã ã©ã®ã»ãã·ã§ã³ãè峿·±ãã£ãã§ãããäžç·ã«åå ãã id:radiocat ãšã»ãã·ã§ã³ã2ã€ãã€ç޹ä»ããŸãã ãããŒãžã£ãŒäžåšã®æŽçªåçµç¹ report by radiocat AIæèŒã®å®¶åºçšããããã® ã©ããã ã§å®è·µãããŠãã ã¹ã¯ã©ã éçºã®è©±ã§ããã ã€ãããŒã·ã§ã³ ã«ãããŠå€§åãªèœåã¯æ©ã詊ããŠãæ©ãåŠã¶ããšã§ãããããããLearning agilityããšèª¬æãããŠããŸãããå·šé¡ã®æè³ãåããŠãæå
ç«¯ã®æè¡ãè©°ã蟌ãã 補åãçæéã§äœããªããã°ãªããªãããããéçºã®äžçãªã®ã§ã ã¢ãžã£ã€ã« åãé²ãITæ¥çã®äžã§ãæå€§éã« ã¢ãžã£ã€ã« ãæ±ããããäžçã§ãããšæ³åã§ããŸãã LOVOTéçºïŒçåœã®é²åããã»ã¹ã4幎ã®éçºæéã§åçŸ - æ©ã詊ããŠãæ©ãåŠã¶ - ã¹ã³ãŒããããå€ãã #agilejapan — radiocat (@radiocatz) 2019幎7æ18æ¥ ç¹ã«å€§åãªã®ããæªç¥ã®é åã§äžå®ãè§£æ¶ã§ãããå¯èŠåããšã¹ã³ãŒãããã³ãã³å€åããäžã§ãç²åŒããè·å Žã®æŽ»æ°ãçã¿åºãããèªç«æ§ãã§ãããšèª¬æãããŠããã®ãå
±æã§ããŸããã ã¢ãžã£ã€ã« ã«å¿
èŠãªèœåâèŠéãã®æªããšããã§éé£ããªãèœå #agilejapan — radiocat (@radiocatz) 2019幎7æ18æ¥ ãŸãããã¬ã¯ãŒã¯ã¯å°å
¥ããŠãããããªãã¹ãäžç®æã«éãŸã£ãŠé¡ãåãããªããä»äºãããŠããããšãã説æãã ã¢ãžã£ã€ã« ã«åãåã£ãçµéšããå°ãåºãããåŠã³ã®1ã€ã§ãããšæ³åã§ããŸããã Fun! Done! Learn! ã ããŒã ã®æ¥œãããšåŠã³ãææã«çµã³ã€ãæ°ããæ¯ãè¿ããäœéšããŸãããïŒ report by radiocat ãµããããã®ææ³ã®ã²ãšã€ã§ãããFun,Done,Learnããäœéšããã»ãã·ã§ã³ã§ãããåå ãã人10人ãããã§ã°ã«ãŒããäœã£ãŠ ã¢ãžã£ã€ã« ãžã£ãã³ã®ãµãããããFun,Done,Learnã§è¡ããŸããããŸãã¯3ã€ã®èŠçŽ ã«ãšãããããã£ãããšãæ°ã¥ããä»ç®ã«æžãããã®å
容ãã°ã«ãŒãå
ã§å
±æããŠãããã¯Funã ããããšããLearnã§ãããããããšã話ãåããªãã3ã€ã®èŠçŽ ã®ãã³å³ã«ä»ç®ã貌ã£ãŠãããŸããã ãã®æãã®å Žã«éãŸã£ãç¥ããªã人å士ã§ããããä»ç®ãã©ãã«è²Œããè°è«ãããããŠããããšã§æã£ã以äžã«æ·±ãå
çã«ç¹ãããããšæããŸããã ãªãå§ãŸããªãïŒ ã¢ãžã£ã€ã« éçº ã¢ãžã£ã€ã« ã³ãŒããšèããçµç¹æ¹é© report by eichisanden ä»å1çªåå ãããã£ãã»ãã·ã§ã³ã§ãã ãã¡ã®ããŒã ã§ã¯ ã¢ãžã£ã€ã« ã³ãŒããå
¥ããã«ç¬åŠã§ ã¹ã¯ã©ã ããã£ãŠããŸãããã³ãŒãã«å
¥ã£ãŠããã£ãå Žåã©ãå€ããã®ãèå³ããããŸããã ã»ãã·ã§ã³ã¯ã ã¢ãžã£ã€ã« ã³ãŒããšã³ãŒããåããæ¹ãããã«ãã£ã¹ã«ãã·ã§ã³ãã圢åŒã§ããã æåã«éžæãããããŒãã¯çããæ°ã«ãªãããã§ïŒç§ãæ°ã«ãªããŸããïŒã倿®µã§ããïŒç¬ïŒã ããããã¯ããã«ã¯æžããŸãããïŒç¬ïŒçãããªã¢ã«ãªæ°åãæŽé²ããŠããŠåèã«ãªããŸããã ã©ã®æ¹ãå£ãæããŠèšã£ãŠããŸãããééã空ããšã³ãŒããç¶æ³ææ¡ã§ããªãã®ã§ãé±ã«1ãïŒåã¯å
¥ã£ãŠããã£ãæ¹ãè¯ããšã®ããšã§ããã ãŸã ã¢ãžã£ã€ã« ãåããã°ããã®ããŒã å
ã®æž©åºŠå·®ã¯ ã¢ãžã£ã€ã« ã³ãŒãçã«ã¯åé¡ãªããŠããããäžæãããå§ããŠããã®æž©åºŠå·®ã®æ¹ãåä»ãšã®ããšã ãã®å Žåãåã«æã蟌ã¿ã ã£ããããå Žåãå€ãã®ã§è©±ãèããŠã¿ãããšãéèŠã ãŸãè¿ãã®åžã®æ¹ãšãæèŠäº€æããã®ãææçŸ©ã§ããã ã¢ãžã£ã€ã« ã³ãŒããåŒã¶ããšã§æéãè²·ãããšãã§ããã æèŠããŸãšãŸããªããšãã«å€éšã®äººã®æèŠã¯è²ŽéïŒå€éšã®ã墚ä»ãïŒ ä»åã»ãšãã©ã®ã»ãã·ã§ã³ã§åæé²è¡ã§ã°ã©ã¬ã³ãæžãããŠããã®ãå°è±¡çã§ãããåŸã§å
容ãèŠè¿ããããšãŠãè¯ãã§ããã SIåºèº«ãšã³ãžãã¢ãèªå·±çµç¹åãããžã¡ã³ãã«å¥èµ°ãã話 report by eichisanden ç§èªèº«ãSIåºèº«ã§ãã£ãªã¢ãçµéšãéãªãéšåãå€ãè峿·±ã話ãèŽãããŠããããŸããã ãªãŒããŒãžã®äŸåããªãŒããŒã® ããã«ãã㯠åã管çåãªãŒããŒã®éçãæãããšããã¯æ£ã«èªåãçµéšããããšã§ããã 管çåã®éçãåããã¿æ·±ã #agilejapan — A1 (@EichiSanden) 2019幎7æ18æ¥ æç€ºã§ã¯ãªããããŒã ãHOWãèãã WBS ã«ãã管çã§ã¯ãªããããŒã ãèªåãã¡ã®çç£æ§ã管çãã ãªãŒããŒã«ããã¬ãã¥ãŒã§ã¯ãªããããŒã ãå質ãé«ããã ã¹ã¯ã©ã ãå°å
¥ããããšã§ãããŒã ã§èšç»ããããŒã ã§æ¯ãè¿ããããŒã ã§ææãåºããç¶æ
ã«ãªã£ãããã¡ã®ããŒã 㯠ã¹ã¯ã©ã ãå§ããã°ããã§ããããããç§ãæããŠãã ã¹ã¯ã©ã ã®ïŒçªã®ã¡ãªããã§ããã ã¹ã¯ã©ã ãå°å
¥ããŠè¯ãã£ãããšèªåã®æèŠãåãããããªãŒããŒã ãã§èšç»ããã®ã§ã¯ãªããçããªã§èšç»ããŠçããªã§æ¯ãè¿ãæ¹åããŠããã®ãè¯ãã #agilejapan — A1 (@EichiSanden) 2019幎7æ18æ¥ å±ç€ºäŒå Ž ã»ãã·ã§ã³ã®åéã¯å±ç€ºäŒå Žã§ãæ
ãã ã¢ãžã£ã€ã« æ¬æ£ãããã©ãã©èªãã§ãŸãããä»ã«ãäŒæ¥ã®ããŒã¹ã«ããæ¹ãšã話ã§ããŸããå±ç€ºäŒå Žãå ªèœããã®ãéã®éããæ¹ãªã®ãããããŸããïŒç¬ïŒ ãããã« æã£ãããããšã³ã¿ãã©ã€ãºãªäŒæ¥ã®æ¹ãå€ããŠãé
ããŠãããšèšãããŠããŸããæ¥æ¬ã§ã ã¢ãžã£ã€ã« éçºã確å®ã«æ®åããŠããŠãããªãšæããŸããã ã¢ãžã£ã€ã« ãžã®ããæ°ãæ³šå
¥ããŠããã£ãè¯ãäžæ¥ã§ããã
ããã«ã¡ã¯ãã·ã«ã¿( id:d_shr )ã§ãã å
æã®ããšã§ãããåŒç€Ÿã§éå¬ãã RAKUS Meetup Osaka #3 ã§çºè¡šããŸããã ä»åã¯çºè¡šå
容ã«ã€ããŠæžããããšæããŸãã çºè¡šè³æ çºè¡šã¬ããŒã æ©èœéçºãæ
åœããŠãããMail Dealerãã§Node.jsã®EOLãšæ Œéãã2幎éã«ã€ã㊠以äžã®ãããªã話ãããŸããã Node.jsã®ããŒãžã§ã³ã¢ãããã§ããªããªã£ãããš è¿«ãããEOLãåé¡ãšã©ã®ããã«åãåãã»è§£æ±ºããããšããã Node.jsã®ããŒãžã§ã³ã¢ããã宿œããããš ããã«ãŠã§ã¢ ã®åå 远åãæ£æ»æ³ã§ãããã¢ããªã±ãŒã·ã§ã³ã®æ¹ä¿®ã«ãã解決ããããšãã話ãããŸããã åæ§ã®åé¡ã«åãåãããæ¹ãžåèã«ãªãã°å¹žãã§ãã ãŸã ãŸã 課é¡ã¯æ®ã£ãŠããçŸåšèª¿æ»äžã§ãããæ ¹æ¬çãªè§£æ±ºã«åããŠåŒãç¶ããã£ã¬ã³ãžããŠãããã°ãšæã£ãŠããŸãã ãããã«ãå人çãªè©±ã§ãã åŒç€Ÿäž»å¬ã§ã¯ãããŸããããã®ãããªæè¡ã€ãã³ãã§ã®çºè¡šã¯åããŠã®çµéšã§ããã ä»åãã£ã¬ã³ãžããŠã¿ãŠèªåã®ããã«ãªãããšããšãŠãå€ãã£ãã§ãã ä»åŸã¯å€éšã®ã€ãã³ããžããã£ã¬ã³ãžããŠã¿ãããšæããŸããã
ã¿ãªããããã«ã¡ã¯ãããžãµã¯ã§ããä»åã¯ã ååã®èšäº ã§ã玹ä»ããããŸãããã é ïŒ ã ïŒ çºã® æª ïŒ ã¿ ïŒ æ¥ã« å
ïŒ ãã ïŒ æããã€ãããžã§ã¯ãïŒéç§°ïŒãã¿ãããããžã§ã¯ãïŒãã«ã€ããŠã®éäžçµéãã¬ããŒããããŠããã ããŸãã ä»å¹ŽåºŠã®ãã¿ãããããžã§ã¯ãã§ã¯ã倧ãã以äžã®ïŒã€ã®ããŒã Elasticsearch ããŒã¿å¿ååææ³ ã«ã€ããŠæ€èšŒãé²ããŠãããæ¬èšäºã§ã¯Elasticsearchã®æ€èšŒã«ã€ããŠèšèŒããããŸãã é£èŒç®æ¬¡ ãå
šææ€çŽ¢ ã ElasticsearchãšããŒã¿å¿ååææ³ã ãå
šææ€çŽ¢ã®æ¢æ± Elasticsearch(1) ã: ãããžã§ã¯ãæ¹éããã³ElasticsearchæŠèŠ âä»èªãã§ããèšäº 倧éããŒã¿ãæ€çŽ¢ãããµãŒãã¹ã§Elasticsearchã¯RDBã®ä»£æ¿åè£ã«ãªããããïŒ(Elasticsearch vs pg_bigm)ã ããŒã¿å¿åå 第1åïŒå¿ååãããå人æ
å ±ãšã¯äœãªã®ã ããŒã¿å¿åå 第2åïŒå人æ
å ±ã¯å¿ååããŠãæå³ããªãã®ã§ã¯ãªããïŒ ããŒã¿å¿åå 第3åïŒå人æ
å ±ãå¿ååããããã»ã¹ ããŒã¿å¿åå 第4åïŒå¿ååã®ããã«è¡ãããŒã¿é
ç®ã®äžè¬åãšã¯ ããŒã¿å¿åå 第5åïŒããŒã¿å¿ååã®ææš ããŒã¿å¿åå 第6åïŒå®éã®å¿åå SQL ãã¥ãŒãã³ã°ä»¥å€ã®ææ®µã åŒç€Ÿãéå¶ããŠãããµãŒãã¹ã®éçºã§ã¯ãæ€çŽ¢åŠçã®ããã©ãŒãã³ã¹èª²é¡ã«åãçµãããšããã°ãã°ãããæ€çŽ¢èŠä»¶ãžã®å¯Ÿå¿ç¯å²ãåºããããšèããŠããŸãã è€æ°ã®åçã«ã©ã ã®ããŒã¿ã暪æçã«æ€çŽ¢ããã ã¡ãŒã«ãªã©ã®å€§éã®æç« ããŒã¿ãæ€çŽ¢ããã ãªã©ã SQL ãã¥ãŒãã³ã°ã§ã¯äžççžã§ã¯ãããªããããªã·ãŒã³ã«ãããŠããã®ä»ã®æè¡çå¯Ÿå¿ææ®µãšããŠã®åœ¹å²ããElasticsearchã«æåŸ
ããŠããŸãã â»Elasticsearchãæ€èšŒå¯Ÿè±¡ãšãã詳现ãªçµç·¯ã«ã€ããŠã¯ã ååã®èšäº ãã芧ãã ããã å
šææ€çŽ¢ ã䜿ããæªæ¥ãæã«å
¥ãã Elasticsearchã®æ€èšŒãé²ããã«ãããã ããã¯ãã° ã®æŽãåºããè¡ããŸããã ããŒã å
šå¡ãElasticearchã«é¢ããç¥èŠããªãç¶æ
ããã®ã¹ã¿ãŒãã ã£ãããããŸãã¯ä»¥äžã®æžç±ãåèªèªã¿ãElasticsearchã®æŠèŠãçè§£ãããšããããå§ããŸããã Elasticsearchå®è·µã¬ã€ã Elasticsearchå®è·µã¬ã€ã (impress top gear) äœè
: æ£é å²ä¹ ã€ã³ãã¬ã¹ Amazon Elasticsearchã«ã€ããŠè©³ããç¥ãããã®èª¿æ»ãéå§ Elasticsearchã«é¢ããåºç€çãªæ
å ±ããå®éã«åäœãããŠã¿ãçµæãªã©ã Wiki ã«ãŸãšããŠãã¬ããžã®èç©ãè¡ããŸããã PHP ã§åäœãããµã³ãã«ããã°ã©ã ãäœæããã¢ããªã±ãŒã·ã§ã³ããã®Elasticsearchã®å©ç𿹿³ã®æ€èšŒãªã©ãè¡ãªã£ãŠããŸãã åäœç¢ºèªã¯ãåè¿°ã®æžç±ã®ä»ã«ã以äžã®ãããªæ
å ±ãåèã«ããŠè¡ããŸããã Elasticsearc å
¬åŒãªãã¡ã¬ã³ã¹ åºæ¬ç㪠API ã®äœ¿ãæ¹ãªã©ã¯ãå
¬åŒãªãã¡ã¬ã³ã¹ããªãã£ãŠåäœç¢ºèªããŸããã åœç«æ
å ±åŠç ç©¶æäœæã®Githubãªããžã㪠Elasticsearchã«é¢ããŠãäžéãåçž®ããŠãŸãšããããŠããŸãã REST API ã§ã®æ€çŽ¢ã€ã¡ãŒãž ããã§ã¯ã調æ»çµæã®äžéšãæç²ããŠã玹ä»ããããŸãã Elasticsearchã®æŠèŠ ãªãŒãã³ãœãŒã¹ ã®åæ£ å
šææ€çŽ¢ãšã³ãžã³ èªç¶èšèª ã§èšè¿°ããã倧éã®ææžããŒã¿ã®æ€çŽ¢ãé«éã«å®è¡å¯èœ ææžããŒã¿ãåå¥è§£æããåèªãªã©ã«åå²ããŠã€ã³ããã¯ã¹åããããšã§å®çŸããŠãã æ¥æ¬èªã®åå¥è§£æã«å¯Ÿå¿ãã ãã©ã°ã€ã³ ïŒKuromoji Analysis PluginïŒããã Elastic瀟 ãäžå¿ã«ãªã£ãŠéçºãé²ããããŠãã æ€çŽ¢ãšã³ãžã³ ã®ã³ã¢éšå㯠Java è£œã®æ€çŽ¢ã©ã€ãã©ãª Apache Lucene ã䜿çšãããŠãã ããã¥ã¡ã³ãåããŒã¿ããŒã¹ã§æè»ãªããŒã¿æ§é ã§ããŒã¿ãä¿åã§ãã ããã¥ã¡ã³ãåãªã®ã§ã鿣èŠåããç¶æ
ã§ããŒã¿ãæã€å¿
èŠããã ã¹ã±ãŒã©ãã«ãªæ§æã«ãªã£ãŠãããäºåã«æå€§ããŒã¿éã®æ€èšãã§ããŠããã°ã容æã«ã¹ã±ãŒã«ã¢ãŠãããããšãå¯èœ ããŒã¿ã®åå²åäœã§ããã·ã£ãŒãæ°ãäºåã«å®çŸ© ããŒããå¢ãããšãæ°ããå¢ããããŒãã«ã·ã£ãŒããåé
ããã¹ã±ãŒã«ã¢ãŠãã§ãã ãã ããã·ã£ãŒãæ°ã¯åŸãã倿Žã§ããªããããäºåã«æå€§ããŒã¿éãæ³å®ããèšç»ãå¿
èŠã«ãªã ãã©ã³ã¶ã¯ã·ã§ã³ ãæããªãïŒæ€çŽ¢ã»åç
§ã«ç¹åïŒ æ€çŽ¢ãããŒã¿ã®ç»é²ã ãã§ãªãã ã¯ã©ã¹ã¿ ã®ç®¡çãã¡ã³ããã³ã¹çã®ãã»ãŒå
šãŠã®æäœãã REST API ãçšããŠå®è¡ã§ãã æ€çŽ¢ã ãã§ãªããæ€çŽ¢çµæã®åé¡ãéèšãªã©ãé«éã«å®è¡ã§ãããKibanaãšã®çµã¿åããã«ãããããŒã¿ã®åŸåããã¿ãŒã³åæãªã©ã®çšéã§ãçšãããã Linux , Windows , Mac çã®åOSã«å¯Ÿå¿ããŠãããå
¬åŒã®Dockerã€ã¡ãŒãžãªã©ãå
¬éãããŠãã åºæ¬åäœã®ç¢ºèªã¯Dockerã³ã³ããäžã§å®æœ Elasticsearchã®æŽ»çšäºäŸ Elascticsearchã®æŽ»çšäºäŸã¯ãElastic瀟㮠å
¬åŒããŒãž ã«å€æ°æ²èŒãããŠããŸãã ããã§ã¯ãããã€ãç¹åŸŽçãªçšéã§äœ¿çšããŠããäºäŸãæç²ããããŸãã GitHub ãªããžã㪠ããŠãŒã¶ãŒãIssueãPRã ãœãŒã¹ã³ãŒã ãªã©ã®å€§éã®æ
å ±ãé«éã«æ€çŽ¢ã§ãã æ¥æ¬çµæžæ°è瀟 æ¥çµé»åçã®èšäºæ€çŽ¢æ©èœã§æŽ»çš LINE 倧éã®ãã°ããŒã¿ã®äžå
管çãšKibana飿ºã«ããå¯èŠå ãã¿ããElasticsearchæ€èšŒããŒã ã®æ§å éçºã®æªæ¥ã«å
æãæã€ããã®è°è«ãž Elasticsearchã®æŠèŠãæ©èœã®çè§£ãçµãåŸãä»åŸã©ã®ãããªæ€èšŒãè¡ãã¹ããããããŒã å
ã§è°è«ããŸããã ãã®éãããŒãšãªã£ãã®ã¯ã以äžã®ãã€ã³ãã ãElasticsearchã調æ»ã»æ€èšŒããããšã§åŸãããMinimum Value ãšã¯ãªã«ãïŒã ãããŠãç§ãã¡ãåŸãçµè«ã¯ã ãæ€çŽ¢æ©èœãæããæ°èŠãµãŒãã¹ã® ã¢ãŒããã¯ã㣠æ€è𿮵éã§ã RDB ã ãã§ãªãElasticseachãæ¯èŒæ€èšææãšããŠæããç¶æ
ãäœãã ãšãªããŸããã ãæ¯èŒæ€èšææãšããŠæããç¶æ
ãäœããããã«ãElasticsearchã®åŸæåéã§ããã èªç¶èšèª ã§èšè¿°ãããæååããŒã¿ãæã€ã倧éããŒã¿ã察象ã«ããæ€çŽ¢ããã©ãŒãã³ã¹ãæ€èšŒãè¡ãã RDB ãšã®æ¯èŒãè¡ãããšã«ããŸããã Minimum Value ã®æ€èšé¢šæ¯ â»ãã®ç»åã¯è°è«ã®éäžçµéã®ãã®ã§ãæçµçã«è³ã£ãçµè«ã§ã¯ãããŸãã SQL ãã¥ãŒãã³ã°ã§ã¯è§£æ±ºã§ããªãæ€çŽ¢èŠä»¶ãçãŸããæªæ¥ã«å
æãæã€ããã®èª¿æ»ãšæ€èšŒã«çæ çŸåšãMinumum Value ãã¢ãŠãããããã¹ããElasticsearchã®ããã©ãŒãã³ã¹æ€èšŒãè¡ã£ãŠããŸãã æ€èšŒå¯Ÿè±¡ã®ããŒã¿ã«ã¯ã Wikipediaã®æ¥æ¬èªçå
šããŒã¿ ãæ¡çšã æ€èšŒéå§æç¹ã®ã§ããã¥ã¡ã³ãæ°ïŒ2,339,123 ä»¶ äžèšã®ç°å¢ã«ã¹ãã¢ããŠæ€èšŒã宿œäž ElasticsearchïŒ Amazon Elasticsearch Service RDB ïŒ Amazon RDS for PostgreSQL ãµãŒããŒã®ã¹ããã¯ïŒã¡ã¢ãªãããŒãæ°ãªã©ïŒã«ããå€åãæ€çŽ¢ã¯ãšãªã®åœãŠæ¹ãªã©ãã©ã®ãããªèгç¹ã§æ€èšŒãè¡ãã¹ããã«ã€ããŠãè°è«ãããªããé²ããŠããŸãã æ¬¡åã¯ãæ€èšŒçµæã«ã€ããŠã¬ããŒããããŠé ãäºå®ã§ãã é£èŒç®æ¬¡ ãå
šææ€çŽ¢ ã ElasticsearchãšããŒã¿å¿ååææ³ã ãå
šææ€çŽ¢ã®æ¢æ± Elasticsearch(1) ã: ãããžã§ã¯ãæ¹éããã³ElasticsearchæŠèŠ âä»èªãã§ããèšäº 倧éããŒã¿ãæ€çŽ¢ãããµãŒãã¹ã§Elasticsearchã¯RDBã®ä»£æ¿åè£ã«ãªããããïŒ(Elasticsearch vs pg_bigm)ã ããŒã¿å¿åå 第1åïŒå¿ååãããå人æ
å ±ãšã¯äœãªã®ã ããŒã¿å¿åå 第2åïŒå人æ
å ±ã¯å¿ååããŠãæå³ããªãã®ã§ã¯ãªããïŒ ããŒã¿å¿åå 第3åïŒå人æ
å ±ãå¿ååããããã»ã¹ ããŒã¿å¿åå 第4åïŒå¿ååã®ããã«è¡ãããŒã¿é
ç®ã®äžè¬åãšã¯ ããŒã¿å¿åå 第5åïŒããŒã¿å¿ååã®ææš ããŒã¿å¿åå 第6åïŒå®éã®å¿åå
åããŸããŠãMasaKuã§ãã ã¯ãããéä¿¡ 第ïŒåãæ
åœãããŠããã ããŸãã ã¯ãããéä¿¡ã¯ããããå
šïŒåã«ããã£ãŠèšäºãæçš¿ããŠãããŸãã®ã§ã楜ãã¿ã«ïŒ tech-blog.rakus.co.jp 第ïŒåã§ã¯ãå
æ¥ãåŒç€Ÿã§éå¬ãã RAKUS Meetup Osaka ã®çºè¡šå
容ãããå°ãæãäžããèšäºãæžããããšæããŸãã rakus.connpass.com çºè¡šè³æã¯ ã³ãã© https://speakerdeck.com/masaku_2019/merumagapei-xin-sabisufalseyue-jing-puroziekuto-merudao-da-lu-xiang-shang-hefalsetiao-zhan speakerdeck.com ã¯ããã«ïŒãã¡ãŒã«ãå±ããªããã«ã¯ããããªçç±ã ãã¡ãŒã«ãå±ããªããã®ãã¿ãŒã³ ã¬ã€ãã©ã€ã³ãæŽçããŠã客æ§ã«ãææ¡ãã ã³ã³ãã³ããã§ãã¯ãããŠã客æ§ã«ä¿®æ£ããææ¡ãã IPã¬ãã¥ããŒã·ã§ã³ãè¯ãã¹ã³ã¢ã«ç¶æãã ãŸãšã åèãµã€ã ã¯ããã«ïŒãã¡ãŒã«ãå±ããªããã«ã¯ããããªçç±ã æ®æ®µãªã«ããªãå©çšããã¡ãŒã«ã§ãããã¡ãŒã«ã¯éä¿¡ããã°å¿
ãå±ããšã¯éããæ§ã
ãªçç±ã§çžæå
ã«å±ããªãããšããããŸãã ãã®ãããã¡ã«ãã¬é
ä¿¡ãµãŒãã¹ã«ãšã£ãŠãã©ãã ãã¡ãŒã«ãå±ãããããïŒã¡ãŒã«å°éçïŒã¯éèŠãªèŠçŽ ã®ïŒã€ã§ãã ããããã¡ã«ãã¬é
ä¿¡ãµãŒãã¹ã¯ã¡ãŒã«ãå±ããããšã ãã課é¡ã§ã¯ãããŸããã é
ä¿¡ããã¡ãŒã«ãè¿·æã¡ãŒã«ãšããŠåŠçãããã«ã¡ã«ãã¬èªè
ã«èªãŸããããšãéèŠãªèŠçŽ ã®ïŒã€ ã§ãã çãããã以äžã®ãããªçµéšãããã®ã§ã¯ãªãã§ããããïŒ ããã£ãŠæ®éã®å
容ã®ã¡ãŒã«ãè¿·æã¡ãŒã«ãšããŠåŠçããã ä»ãŸã§æ®éã«ããåãããŠããæ¹ã®ã¡ãŒã«ããçªç¶è¿·æã¡ãŒã«ãšããŠåŠçããã æéããããŠäœæããã¡ã«ãã¬ãè¿·æã¡ãŒã«ã«ãªã£ãŠããŸã£ãŠã¯æ¬æ«è»¢åã§ãã ã客æ§ãæããã¡ãŒã«ãå±ãããšã¯ ãã®èª²é¡ã¯ã¡ã«ãã¬é
ä¿¡ãµãŒãã¹ã«ãšã£ãŠéèŠãªèª²é¡ã§ãããå®ã¯é
ä¿¡ã®ä»çµã¿ãã¢ããªã±ãŒã·ã§ã³åŽã®åŠçã ãã§è§£æ±ºããããšãé£ãã課é¡ãªã®ã§ãã ãã¡ãŒã«ãå±ããªããã®ãã¿ãŒã³ ã¡ãŒã«ãå±ããªããšããããšã§ãæ©ã¿ã®ã客æ§ã«ã¯ä»¥äžã®ãããªãã¿ãŒã³ããããŸãã è¿·æã¡ãŒã«ãšå€å®ãããã¡ãŒã«ã«ãªã£ãŠãã è¿·æã¡ãŒã«ãšå€å®ãããªãããã«çæããŠããããç¡æèã®ãã¡ã«ã¡ãŒã«å
å®¹ãæªããªã£ãŠãã ã¡ãŒã«ã®å
å®¹ãæªããªããããªããè¿·æã¡ãŒã«ã«ãªã£ãŠããŸã è¿·æã¡ãŒã«ãšãããšã å
¬åºè¯ä¿ ã«åãããããªå
容ã®ã¡ãŒã«ïŒãããã ã¹ãã ã¡ãŒã« ïŒãæ³åãããšæããŸãããå®ã¯ãã以å€ã®çç±ã§è¿·æã¡ãŒã«ãšå€å®ãããå ŽåããããŸãã é
é
ã¡ãŒã«ã§ã¯ãããã£ã課é¡ãã¯ãªã¢ããããã«ãããã€ãã®æœçãè¡ã£ãŠããŸãã®ã§ãæ¬æ¥ã¯ãã¡ãã«ã€ããŠã話ããããšæããŸãã ã¬ã€ãã©ã€ã³ ãæŽçããŠã客æ§ã«ãææ¡ãã ã¹ãã ã¡ãŒã« ãªã©ã®ã³ã³ãã³ããäžæ£ãªã¡ãŒã«ã¯è¿·æã¡ãŒã«ãšããŠåŠçãããããšã¯ãåãããšæããŸãã ããããã©ã®ãããªã¡ãŒã«ãè¿·æã¡ãŒã«ã«ãªããã¯ãåä¿¡ãµãŒãããšã«èšãããããã£ã«ã¿ã«äŸåããããå®ç§ãªå¯Ÿçããšãããšãé£ããã§ãã ããã§ãé
é
ã¡ãŒã«ã§ã¯å°ãã§ãå€ãã®ã¡ãŒã«ãã¡ã«ãã¬èªè
ã«å±ããããã® ã¡ãŒã«ãäœæããããã® ã¬ã€ãã©ã€ã³ ãã客æ§åãã«å±éããŠããŸãã ã¡ãŒã«å°éçåäž ã¬ã€ãã©ã€ã³ äŸãã°ãåä¿¡ãµãŒãåŽã§ãããã¯ãããããããŒã¯ãŒãã¯é¿ããŠã¡ãŒã«ãäœæããŠããã ãããšããé
ä¿¡ããã¡ãŒã«ã®ä¿¡é Œæ§ãé«ããããã« SPF ã DKIM ã®èšå®æé ãæ¡å
ãã ã¬ã€ãã©ã€ã³ ããæäŸããŠããŸãã ãã® ã¬ã€ãã©ã€ã³ ã¯é
é
ã¡ãŒã«ã®é¡§å®¢ãµããŒãéšçœ²ãäœæããŠãããŸãã ã³ã³ãã³ããã§ãã¯ãããŠã客æ§ã«ä¿®æ£ããææ¡ãã ã¡ãŒã«æ¬æå
ã®ã³ã³ãã³ããæªããšè¿·æã¡ãŒã«ãšããŠåŠçãããããšãç¥ã£ãŠãããšããŠããæå³ãã ã¬ã€ãã©ã€ã³ ã«éåããã¡ãŒã«ãäœæããŠããŸãå ŽåããããŸãã é
é
ã¡ãŒã«ã§ã¯ãã¡ãŒã«æ¬æå
ã®æ
å ±ãè§£æãããè¿·æã¡ãŒã«ãæ±ãã«ãªãå¯èœæ§ã®ããã°ã¬ãŒãªå
å®¹ãæ€ç¥ããä»çµã¿ãå°å
¥ããŠããŸãã äŸãã°ãã¡ãŒã«æ¬æã«ãçŸéããšã皌ããšããããŒã¯ãŒããå«ãŸããã¡ãŒã«ãé
ä¿¡ããããšãã·ã¹ãã åŽã§è¿·æã¡ãŒã«ã®çããããšå€æãæ¬åœã« ã¹ãã ã¡ãŒã« ããçŽæ¥ãã§ãã¯ããŠããŸãã ã³ã³ãã³ããã§ãã¯ã®ãã㌠迷æã¡ãŒã«ã«ãªãåºæºã¯åä¿¡ãµãŒãåŽã®åºæºã«ããããã ã·ã¹ãã ãæ€ç¥ãããããšãã£ãŠãçŽã¡ã« ã¹ãã ã¡ãŒã« ãšå€æããã«ã顧客ãµããŒãããŒã ãçŽæ¥ã客æ§ãžãé£çµ¡ããã¡ãŒã«å
容ã®ä¿®æ£ã®çžè«ãããŠããŸãã å°éãªäœæ¥ã§ã¯ãããŸãããéèŠãªèª²é¡ãšèªèããŠã課é¡è§£æ±ºã«åãçµãã§ããŸãã IPã¬ãã¥ããŒã·ã§ã³ãè¯ãã¹ã³ã¢ã«ç¶æãã æåŸã«ããããŸã§ã説æããããšããã¹ãŠå®ãããŠããã®ã«è¿·æã¡ãŒã«ãšããŠåŠçãããŠããŸãããšã®å¯Ÿçã§ãã ãããã IPã¢ãã¬ã¹ ã®ä¿¡é Œæ§ïŒã¬ãã¥ããŒã·ã§ã³ïŒãšãã仿§ã§ãã äŸãã°ã ã¹ãã ã¡ãŒã« ãé »ç¹ã«é
ä¿¡ããŠãããµãŒãã¯åä¿¡ãµãŒãåŽããè¿·æã¡ãŒã«é
ä¿¡ãè¡ããµãŒããšã㊠ãã©ãã¯ãªã¹ã ã«ç»é²ãããŠããŸããŸãã ãã®çµæããã®ãµãŒãããé
ä¿¡ãããã¡ãŒã«ããããã¯ãããŠããŸããæ®éã®ã¡ãŒã«ããå±ããªãã¡ãŒã«ãµãŒãã«ãªã£ãŠããŸããŸãã è¿·æã¡ãŒã«é
ä¿¡ãæŸçœ®ããŠã¯ãããªãçç± é
é
ã¡ãŒã«ã§ã¯ãè¿·æã¡ãŒã«ãšãªãã¡ãŒã«ãé
ä¿¡ãç¶ããŠããã客æ§ã«ã¯ãèŠåã®ãé£çµ¡ãããåŸãããã§ãæ¹åãèŠãããªãå Žåã¯å¥ã®ãµãŒãã«ç§»åããŠããã ãããšããæœçããããªã£ãŠããŸãã ã³ã³ãã³ãéå顧客ã®éé¢ ãã®æœçã«ãããã³ã³ãã³ããæ£åžžãªã¡ãŒã«ãé
ä¿¡ãããã客æ§ã®ã¡ãŒã«ãå©çšãããã¡ãŒã«é
ä¿¡ãµãŒãã® IPã¢ãã¬ã¹ ã®ä¿¡é Œæ§ã¯é«ãç¶æ
ã§ç¶æããããšãã§ããŸãã ãŸãšã ãããã§ããã§ããããïŒ ã¡ãŒã«é
ä¿¡ãµãŒãã¹ã«ãããã ã¡ãŒã«ãå±ãã ããšã¯ãåçŽã«ã¡ãŒã«ãå±ããã ãã§ãªããã¡ã«ãã¬èªè
ã«ã èªãŸãã ãããšãéèŠã§ãã ãã®ããã«ã¯ãè¿·æã¡ãŒã«ãšããŠåŠçãããªãããã«æ§ã
ãªå·¥å€«ãå¿
èŠã§ããããšããçè§£ããã ããã幞ãã§ãã ã¯ãããéä¿¡ã§ã¯ããããããã¡ã«ãã¬é
ä¿¡ã«ã€ããŠã®èšäºãæ²èŒããŠãããŸãïŒ æ¬¡åãã©ãããæ¥œãã¿ã«ïŒ åèãµã€ã メルマガ配信・一斉メール配信サービス「配配メール」 https://speakerdeck.com/masaku_2019/merumagapei-xin-sabisufalseyue-jing-puroziekuto-merudao-da-lu-xiang-shang-hefalsetiao-zhan
ã¯ããã« ããã«ã¡ã¯ãæ°å2幎ç®ã®mrym_618ã§ãã æè¿ã jQuery ã§ã¹ã¯ããŒã«äœçœ®ã®ååŸããæ¹æ³ãå®è£
ããŸãããããªããªãããŸããããŸããã§ããã®ã§ããã®ãšãã®ããšãæžããŠãããããšæããŸãã ã¯ããã« jQueryã§ã¹ã¯ããŒã«äœçœ®ãååŸããæ¹æ³ ããŸããããªãã£ãããš ãããã« jQuery ã§ã¹ã¯ããŒã«äœçœ®ãååŸããæ¹æ³ jQuery ã§ã¹ã¯ããŒã«äœçœ®ãååŸããã«ã¯ããscrollTop()ãã¡ãœããã䜿çšããŸãã ãscrollTop()ãã¡ãœããã®èšè¿°æ¹æ³ã¯ä»¥äžã®éãã§ãã 察象èŠçŽ .scrollTop(); ãã©ãŠã¶å
šäœã®ã¹ã¯ããŒã«äœçœ®ãååŸããã«ã¯å¯Ÿè±¡èŠçŽ ã« window ãæå®ããŸãã $(window).scrollTop(); ããŸããããªãã£ãããš ä»åã¯ã察象èŠçŽ ã« body ãæå®ããŠå®è£
ããŠããŸããã ãããšãEdgeãš Safari ã§ã¯ãæ£ããå€ãååŸã§ããŠããŸãããã Chrome ãš IE ãš Firefox ã§ã¯ãåžžã«0ãååŸããŠããŸããã åå ã¯ã以äžã®ãµã€ãã®éããã©ãŠã¶ã«ãã£ãŠãscrollTop()ãã¡ãœãããå¹ãã¿ã°ãéãããšã§ããã chaika.hatenablog.com ããã§ããã®ãµã€ããåèã«ãã©ãŠã¶ããšã«å¯Ÿè±¡èŠçŽ ãå€å®ããããã«å®è£
ããŸããã var ua = navigator.userAgent; var scrollTag; // Edge, Safariã®å Žå if(ua.indexOf('Edge') !== -1 || (!window.chrome && 'WebkitAppearance' in document.documentElement.style)) { scrollTag = 'body'; // Chrome, IE, Firefoxã®å Žå } else { scrollTag = 'html'; } ãããã« ä»åã¯ã jQuery ã§ã¹ã¯ããŒã«äœçœ®ãååŸãããšãã«å°ã£ã話ã«ã€ããŠæžããŸããããããåããããªããšã§å°ã£ãŠããã°ããã®èšäºãåèã«ãªãã°å¹žãã§ãã ãŸãã jQuery ã«ã¯ãscrollTop()ãã¡ãœãã以å€ã«ããã©ãŠã¶ã«ãã£ãŠæåãç°ãªãã¡ãœããã¯ãããšæãã®ã§ã jQuery ã§å®è£
ãããšãã¯ãã£ãããã«ããã©ãŠã¶ã§ãã¹ãããããšãå¿ãããŠãããããšæããŸãã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã forms.gle ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ rakus.connpass.com
ããã«ã¡ã¯ãæ°å2幎ç®ã®badaikiã§ããæ©ããã®ã§åŸèŒ©ãé
å±ããã瀟å
ã®é°å²æ°ãããæãããããæŽ»çºã«ãªã£ãŠããããã«æããŸãã ç®æ¬¡ ç®æ¬¡ ã¯ããã« ãã·ãžã§ã³ããŒãã«ãšã¯ ãã·ãžã§ã³ããŒãã«ã®æ§æ ã¡ãªããããã¡ãªãã æåŸã« åèã«ãããµã€ã ã¯ããã« ä»åã¯ãã¹ãææ³ã® ãã·ãžã§ã³ããŒãã« ã«ã€ããŠæžããŠãããŸãã æè¿ã¯èŠæš¡ã®å€§ããªéçºãè€éãªä»æ§ã®éçºãä»»ããŠããã ãæ©äŒãå¢ããŠããŸããããã®ãšãã«ãè€æ°ã®æ¡ä»¶ãè€éã«çµ¡ã¿åãããšã«ãã£ãŠãã¹ãã±ãŒã¹äœææã«ãå
šãã¿ãŒã³ãç¶²çŸ
ã§ããŠããã®ãããäžå®ã«ãªãå Žé¢ããããŸããããã¡ãã100%ãšããã®ã¯é£ããã§ãããæŒããèµ·ãã«ãããã¹ãã±ãŒã¹ãèªåãçŽåŸã®ãããã¹ãã±ãŒã¹ãæžãããã«ã¯ã©ãããã°ããã®ããèããŸããã ãŸãåãã«äžèšã®äžå®ã®åå ãçŸç¶ææ¡ãå
ŒããŠåæããŸããã åå€åå²ãå¢çå€åæã¯çè§£ããŠãã ã€ãã (åäžã®æ¡ä»¶ãªã倧äžå€«) 宿ãããã¹ãã±ãŒã¹ãèŠãŠç¶²çŸ
ã§ããŠããã®ããèªã¿åãã«ãã çç¥ãããã¹ãã±ãŒã¹ãæ¬åœã«çç¥ããŠããã£ãã®ãäžå®ã«ãªã(å¿
èŠãªãã®ã誀ã£ãŠçç¥ããŠããªãããªâŠ) äžèšã®ãããªäžå®ã®åå ã«ãªã£ãŠãããã®ã«å¯ŸããŠãäœãäžè¶³ããŠãã芳ç¹ããªãããæžãæ¹ã工倫ããããšã§è£ããªãããšèã調ã¹ãããšã«ããŸãããããã§çç®ããã®ã ãã·ãžã§ã³ããŒãã« ã§ããã ãã·ãžã§ã³ããŒãã« ãšã¯ ãã·ãžã§ã³ããŒãã« ãšã¯ã決å®è¡š(JIS X 0125) 1 ãšããŠèŠæ Œãå®çŸ©ãããŠããŸããè«çé¢ä¿ã衚圢åŒã§æŽçããããã®ããŒã«ã§ãè¡æ¹åã«æ¡ä»¶ãšåäœãåæ¹åã«ã«ãŒã«ãçµåããŸããããã°ã©ã ã®åŠçæ¡ä»¶ãããªã·ãŒãªã©ããããããã衚çŸããããã«å©çšãããããœãããŠã§ã¢ã®ãã¹ãæ¡ä»¶ãæŽçããããã«ãå©çšãããŸãã 以äžã仿§ãšãããšãã® ãã·ãžã§ã³ããŒãã« ãäŸã«ããŠèããŠã¿ãŸãã ãžã ã®å©çšæéã®ä»æ§ ã» ã¯ãŒãã³æåã®å Žåã¯10%OFF ã» å¹³æ¥ãªã30%OFF â» è€æ°ã®å²åŒã¯äœµçšã§ããããããåŸãªãã®ãåªå
ããã ãžã å©çšæéã® ãã·ãžã§ã³ããŒãã« ãã·ãžã§ã³ããŒãã« ã®æ§æ ãã·ãžã§ã³ããŒãã« ã¯ä»¥äžã®ãããªèŠçŽ ã§æ§æãããŠããŸãã æ¡ä»¶èšè¿°éšïŒcondition stubïŒ æ¡ä»¶èšè¿°éš èæ
®ãã¹ãæ¡ä»¶ã»åå ãåæããéšåã§ãã åäœèšè¿°éšïŒaction stubïŒ åäœèšè¿°éš èæ
®ãã¹ãåäœã»çµæãåæããéšåã§ãã æ¡ä»¶æå®éšïŒcondition entryïŒ æ¡ä»¶æå®éš ããããã®æ¡ä»¶ã»åå ãç¹å®ã®å€ã»æå³ã§æå®ããã²ãšã€ã®ã«ãŒã«ãšããŠé¢é£ä»ããããŸããæ¡ä»¶æå®éšã«ã¯ä»¥äžã®ãããªæžãæ¹ãããŸãã è¡šèš ã«ãŒã«ã§é¢é£ä»ããæå³ YïŒYesïŒ ãã®è¡ã«å¯Ÿå¿ããæ¡ä»¶ã»åå ãçã§ããããšãæå³ãã NïŒNoïŒ ãã®è¡ã«å¯Ÿå¿ããæ¡ä»¶ã»åå ãåœã§ããããšãæå³ãã å€ãèªå¥ãªã© ãã®è¡ã«å¯Ÿå¿ããæ¡ä»¶ã»åå ãèšè¿°ãããå€ã§ãã£ãããèªå¥ãæºããããšãæå³ãã - ãã®è¡ã«å¯Ÿå¿ããæ¡ä»¶ã»åå ãç¡é¢ä¿ã§ããããšãæå³ãã åäœæå®éšïŒaction entryïŒ åäœæå®éš ããããã®åäœã»çµæãç¹å®ã®å€ã»æå³ã§æå®ããã²ãšã€ã®ã«ãŒã«ãšé¢é£ä»ããããŸããæ¡ä»¶æå®éšã«ã¯ä»¥äžã®ãããªæžãæ¹ãããŸãã è¡šèš ã«ãŒã«ã§é¢é£ä»ããæå³ XïŒeXecuteïŒ ãã®åã«æå®ãããæ¡ä»¶ã»åå ã®çåœå€ã«ãã¹ãŠé©åããå Žåããã®è¡ã«å¯Ÿå¿ããåäœã»çµæãçããããšãæå³ãã - ãã®åã«æå®ãããæ¡ä»¶ã»åå ã®çåœå€ã«ãã¹ãŠé©åããå Žåããã®è¡ã«å¯Ÿå¿ããåäœã»çµæãçããªãããšãæå³ãã å€ãèªå¥ãªã© ãã®åã«æå®ãããæ¡ä»¶ã»åå ã®çåœå€ã«ãã¹ãŠé©åããå Žåããã®è¡ã«å¯Ÿå¿ããåäœã»çµæãèšè¿°ãããå€ã§ãã£ãããèªå¥ãæºããããšãæå³ãã èŠå èŠå æ¡ä»¶ã»åå ã®çµã¿åãããšãããã«å¯Ÿããåäœçµæãçµã¿åããããã®ã§ãã1ã€1ã€ããã¹ãã±ãŒã¹ã«ãªããŸãã ã¡ãªããããã¡ãªãã ã¡ãªãã è€æ°ã®æ¡ä»¶ã絡ã¿ãã£ãçµã¿åãããæç¢ºã«ããããšãã§ãã ç¶²çŸ
çãç®åºã§ããïŒ = 宿œããèŠåæ° / å
šèŠåæ°ïŒ ãã¡ãªãã é åºãèæ
®ã§ããªã èŠåïŒãã¹ãã±ãŒã¹ïŒæ°ãççºçã«å¢å ãã äŸãã°ä»æ§ã«ãæææ¥ãªã女æ§ã¯50%OFFïŒç¥æ¥ã¯é€ãïŒããšãã仿§ã远å ããŸãã ãžã ã®å©çšæéã®ä»æ§ ã» ã¯ãŒãã³æåã®å Žåã¯10%OFF ã» å¹³æ¥ãªã30%OFF ã» æææ¥ãªã女æ§ã¯50%OFFïŒç¥æ¥ã¯é€ãïŒ â» è€æ°ã®å²åŒã¯äœµçšã§ããããããåŸãªãã®ãåªå
ããã ãžã å©çšæéã® ãã·ãžã§ã³ããŒãã« ïŒä»æ§è¿œå ïŒ ãããšãé端ã«ã±ãŒã¹æ°ãå¢ããããšãããããŸããã§ãããææ¥ãšæ§å¥ã絡ãã§ããæ¡ä»¶ã远å ããã«ãé¢ãããæ¡ä»¶èšè¿°éšã¯æ¯èŒçã·ã³ãã«ãªãŸãŸç¶æããããšãã§ããããã«ããŒãã«ã«ãªã£ãŠãããã空ã§ãã¹ãã±ãŒã¹ã䞊ã¹ããããç¶²çŸ
æ§ã®ç¢ºèªãææ¡ãããããšæããŸããã æåŸã« ä»å㯠ãã·ãžã§ã³ããŒãã« ã«ã€ããŠãŸãšããŸããã è€æ°ã®æ¡ä»¶ã絡ããã¹ãã±ãŒã¹ã§ã¯èгç¹ãããã€ãååšããããç¶²çŸ
ã§ããŠããã®ããäžå®ã«ãªããŸãã ãã·ãžã§ã³ããŒãã« ãå©çšããããšã§1ã€1ã€ã®æ¡ä»¶ã«åè§£ãæ¡ä»¶èšè¿°éšãæžãããšãã§ããç¶²çŸ
æ§ã確èªãããããªãããæçšã§ã¯ãªãããšæããŸããããã ãããã¹ãã±ãŒã¹ãèšå€§ã«ãªã£ãŠããŸããšäœæ¥ã³ã¹ããããã£ãŠããŸãããã1ã€ã®ç»é¢ã®äžéšã«çšãããªã©å·¥å€«ãå¿
èŠã ãšæããŸããã ãã¹ãã®ç²ŸåºŠãé«ããããã«ãä»åŸãããŒã«ãæ¹æ³ãåŠç¿ããå®è·µãåªããŠãããŸãã åèã«ãããµã€ã softest.jp www.techscore.com ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã rakus.hubspotpagebuilder.com ã©ã¯ ã¹Developersç»é²ãã©ãŒã https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ âTECH PLAY techplay.jp âconnpass rakus.connpass.com 規格検索結果 | 日本規格協会 JSA Group Webdesk ↩
ã¯ããã« ããã«ã¡ã¯ïŒä»åã¯6æ25æ¥ã«è¡ããããã¢ããã·ã¥ã®ã玹ä»ãããŸãã ä»åã®ãã¢ããã·ã¥ã¯ç¿æ¥ã«è¡ãããMeetupã®ãªããŒãµã«ãšLTã®2éšæ§æã§ããã Meetupã«ã€ããŠã¯ compass ã®ããŒãžãã芧ãã ããã rakus.connpass.com 察象ã®Meetupã¯çµäºããŠããŸããŸãããã宿çã«ã€ãã³ããå
¬éããŠãããŸãã®ã§ãã²ãåå ãã ãããã ã§ã¯ã§ã¯ãLTã®ã玹ä»ãããŠãããŸãã ã¯ããã« ãã¯ãã¡ãœããisäœ ã¢ãããªçŽæïŒPromiseïŒ ãã¶ã€ã³ãã¿ãŒã³ååŒ·äŒ PHP7.4 Updates ã¢ãŠããããé§åèªæžè¡å®è·µå
¥é æ¹åæ¥åãå
šæ©èœãã¹ãã®èªååã ããã ãã¯ãã¡ãœããisäœ Scala 奜ããšã³ãžãã¢ãåããããã¯ãã¡ãœããããã¯ãã¡ãœãããšã¯ãªãããïŒ ãšãã£ãçåã«ã€ã㊠Scala ã®èšæ³ã®ç¹åŸŽãšãšãã«è§£èª¬ããŠãã ãããŸããã Scala ã¯çç¥èšæ³ãå€ããç§ã®ããã«æ
£ããªã人ããèŠããšãããã«ããéšåããããŸããããã®ããã«ç€Ÿå
ã§å
±æããŠãã ããã®ã§å匷ãæããŸãã ã¢ãã ãªçŽæïŒPromiseïŒ ã¢ãã ãéããŠã JavaScript ã®Promiseã®äœ¿ãæ¹ãå©çšç®çããããããã解説ããŠãã ãããŸããã JavaScript ã§éåæåŠçãèšè¿°ããéã«ãPromiseãã¿ãŒã³ã¯å¿
ãç®ã«ãããšã¯æããŸãããåããŠã®ãã¡ã¯ãªããªããšã£ã€ãã«ããéšåããããšæããŸããïŒå°ãªããšãçè
ã¯ããã§ãïŒ å¥ã®ãã®ïŒä»å㯠ã¢ãã ïŒã«çœ®ãæããŠçè§£ã®å©ããšããããšãããã²èªåã®å匷ã®éã«ã掻ãããããã®ã§ãã ãã¶ã€ã³ãã¿ãŒã³ ååŒ·äŒ çŸåšå€§éªã§å®æçã«è¡ãããŠãã瀟å
å匷äŒã ãã¶ã€ã³ãã¿ãŒã³ å匷äŒã«åå ããè¥æãšã³ãžãã¢ããæè¿åŠãã Simple Factoryãã¿ãŒã³ã«ã€ããŠçºè¡šããŠãããŸããã ããã©ã³ PHP ãšã³ãžãã¢ã®ã¿ãªããã«ãã£ãŠãè¥æã®ç¥èã®å¹
ãã©ãã©ãåºãã£ãŠããŠãããŸãã PHP7.4 Updates PHP ãããã ãå
ããããææ°ã®PHP7.4ã®æ©èœã«ã€ããŠç޹ä»ããŠãã ãããŸããã å人çã«ã¯Typed Properties ã®ããããã£åæå®ã«èå³ãæ¹ãããŠããŸããŸãã ã©ã¯ ã¹ã®åæã¯ PHP ã§äœãããŠãããã®ãå€ãã®ã§èŠãã§ãã¯ã§ããã ã¢ãŠããããé§åèªæžè¡å®è·µå
¥é èªæžå
容ã«ã€ããŠèªå·±åŠç¿çãªå®è·µãè¡ã£ãŠå
çãããã®çµæãã¢ãŠããããããããšã§ã³ã³ãã¯ãã«çµéšåŠç¿ãè¡ãã ã¢ãŠããããé§åã§èªæžããããšã¯ãéã¢ãŠããããé§åãªèªæžãåšåé
ãã«ããã»ã©ã®èªå·±æé·ãé«ãã广ãããïŒãããããªãïŒ ç¥èã ä»å
¥ ããŠã§ããæ°ã«ãªã£ãã¯ãããã®ã®ãããä»äºã«æŽ»ãããŠã¿ããšäžæããããªãã£ãŠããšãå€ã
ãããŸãã å
¬éãããŠããã¹ã©ã€ãã§çºè¡šè
ãåèã«ããæ
å ±ãæžç±ãèšèŒãããŠããã®ã§ãæ°ã«ãªãæ¹ã¯ã©ããã speakerdeck.com æ¹åæ¥åãå
šæ©èœãã¹ãã®èªååã è¥æãšã³ãžãã¢ããå
šæ©èœãã¹ãã®èªååãpuppeteerãçšããŠé 匵ã£ãŠãã話ãããŠãããŸããã ãªãªãŒã¹ãµã€ã¯ã«ãæ©ããããããã¹ãæéãççž®ããããã«èªååã«åãçµãã éã®ææ³ãé£ããã«ã€ããŠèµ€è£žã
ã«èªã£ãŠãããŸããã ããã æè¿ã§ã¯ãã¢ããã·ã¥ã®çºè¡šè
ãå¢å åŸåã«ãããå
容ãå€å²ã«æž¡ãéåžžã«èŽããããããããã®ãšãªã£ãŠããŸãïŒïŒ ä»åŸããã¢ããã·ã¥ã®å
容ã¯ããã°ã«æ²èŒããŠããã®ã§ãã©ãããæ¥œãã¿ã«ïŒïŒ
ã¯ããã« ããã«ã¡ã¯ã2幎ç®ã«ãªã£ãyk_itgã§ãã ä»å㯠postgreSQL ã§indexãå©çšããæãã©ãã ãæ€çŽ¢é床ãäžããã®ã調ã¹ãŠã¿ããâŠãšããã®ã§ãããããŸãindexã䜿ã£ãŠããããŸããã§ãããä»åã¯ãã®æã®ããšãèšäºã«ããããšæããŸãã ãªãããã®èšäºã§ã¯ postgreSQL ã§indexãäœæããæã®ããã©ã«ãã§ããB-tree indexã䜿çšããŠããããšãåæãšããŠããŸãã ã¯ããã« æ€èšŒããŒãžã§ã³ ãã£ããindexãäœã£ãŠã¿ã ããå®è¡ 䜿ãããªãçç± äžã€ç®ã®çç± äºã€ç®ã®çç± ææ³ åè æ€èšŒããŒãžã§ã³ postgreSQL 11.4 ãã£ããindexãäœã£ãŠã¿ã ãšãããããindexã貌ãããŒãã«ãå¿
èŠã§ãã 倧éããŒã¿ããªããšå¹æãããããªããšæã£ãã®ã§ããã¡ãã®èšäºãåèã«100äžä»¶ã®ã¬ã³ãŒããæã€ããŒãã«ãäœã£ãŠã¿ãŸããã tech-blog.rakus.co.jp CREATE TABLE indexTest ( id integer PRIMARY KEY, name text ) INSERT INTO indexTest (id,name) SELECT i, format('text%s', i) FROM generate_series(1,10000000) as i ; ãã®ããŒãã«ã«CREATE INDEXããŠindexãäœã£ãŠã¿ãŸãã CREATE INDEX ON indexTest (id); CREATE INDEX ON indexTest (name); explain_test=# \di List of relations Schema | Name | Type | Owner | Table --------+--------------------+-------+----------+----------- test1 | indextest_id_idx | index | postgres | indextest test1 | indextest_name_idx | index | postgres | indextest (2 rows) ããå®è¡ ã§ã¯å®éã«indexã貌ã£ãããŒãã«ã«å¯ŸããŠæ€çŽ¢ããããŠã¿ãŸãã ãã ãæ€çŽ¢ãéããªããšãã£ãŠãç®èŠã§ã¯ãã£ã±ãéããããããªãã®ã§EXPLAINã䜿ããŸãã EXPLAINã䜿ããšã³ã¹ããšã©ããªæ¹æ³ã䜿ã£ãŠæ€çŽ¢ããããšããŠããã®ã調ã¹ãããšãã§ããŸãã Indexãå©çšãããŠããå Žåã«ã¯ãIndex ScanãIndex Only Scanãªã©ã®indexã䜿ã£ãŠããããšã瀺ãEXPLAIN æŒç®å ãå®è¡èšç»ã«è¡šç€ºãããã¯ãã§ãã æ©éå
ã»ã©indexã匵ã£ãnameã®ã«ã©ã ãæ€çŽ¢æ¡ä»¶ã«å
¥ããŠæ€çŽ¢ããŠã¿ãŸãã explain_test=# EXPLAIN SELECT COUNT(name) FROM indexTest WHERE name LIKE '%text10001%'; QUERY PLAN -------------------------------------------------------------------------------------------- Finalize Aggregate (cost=107139.59..107139.60 rows=1 width=8) -> Gather (cost=107139.38..107139.59 rows=2 width=8) Workers Planned: 2 -> Partial Aggregate (cost=106139.38..106139.39 rows=1 width=8) -> Parallel Seq Scan on indextest (cost=0.00..106138.33 rows=417 width=11) Filter: (name ~~ '%text10001%'::text) (6 rows) ããïŒindexã䜿ãããŠããªãããã§ããã Index Scanã§ã¯ãªããããŒãã«ãé çªã«èŠãŠããSeq Scanã衚瀺ãããŠããŸãã 詊ãã«æ€çŽ¢æ¡ä»¶ãidã«å€æŽããŠã¿ãŸãã explain_test=# EXPLAIN SELECT COUNT(*) FROM indexTest WHERE id <= 5000000; QUERY PLAN ----------------------------------------------------------------------------------------------- Finalize Aggregate (cost=112375.23..112375.24 rows=1 width=8) -> Gather (cost=112375.01..112375.22 rows=2 width=8) Workers Planned: 2 -> Partial Aggregate (cost=111375.01..111375.02 rows=1 width=8) -> Parallel Seq Scan on indextest (cost=0.00..106138.33 rows=2094672 width=0) Filter: (id <= 5000000) (6 rows) ãããã¯ãindexã¯äœ¿ãããªãããã§ãã 䜿ãããªãçç± äžã€ç®ã®çç± äžã€ç®ã®çç±ã¯åæ¹äžèŽä»¥å€ã®LIKEã䜿ã£ãŠæ€çŽ¢ããŠããããã§ãã B-treeã®indexã䜿çšããå Žåã¯ãæååã®ååã«ã€ããŠããæ€çŽ¢ãè¡ããŸããã ãªã®ã§ãååãæ€çŽ¢æ¡ä»¶ã§ããåæ¹äžèŽã®æ€çŽ¢ã§ã¯indexã䜿çšããŠãããŸãã explain_test=# EXPLAIN SELECT COUNT(name) FROM indexTest WHERE name LIKE 'text10001%'; QUERY PLAN --------------------------------------------------------------------------------------------------- Aggregate (cost=12.27..12.28 rows=1 width=8) -> Index Only Scan using indextest_name_idx on indextest (cost=0.43..9.77 rows=1000 width=11) Index Cond: ((name >= 'text10001'::text) AND (name < 'text10002'::text)) Filter: (name ~~ 'text10001%'::text) (4 rows) å®è¡èšç»ãèŠãŠããã£ãã Index Only Scanã衚瀺ãããŠããŸãã äºã€ç®ã®çç± äºã€ç®ã®çç±ã¯æ€çŽ¢æ¡ä»¶ã«åœãŠã¯ãŸãè¡æ°ãå€ãããããã§ãã åœãŠã¯ãŸãè¡æ°ãå€ãããå Žåã«ã¯ãindexã䜿ã£ãŠæ€çŽ¢ãããããããŒãã«ãé çªã«ã¿ãŠããã»ããéããªããŸãã explain_test=# EXPLAIN SELECT COUNT(*) FROM indexTest WHERE id <= 3700000; QUERY PLAN --------------------------------------------------------------------------------------------------------------------------- Finalize Aggregate (cost=110081.60..110081.61 rows=1 width=8) -> Gather (cost=110081.38..110081.59 rows=2 width=8) Workers Planned: 2 -> Partial Aggregate (cost=109081.38..109081.39 rows=1 width=8) -> Parallel Index Only Scan using indextest_pkey on indextest (cost=0.43..105174.50 rows=1562752 width=0) Index Cond: (id <= 3700000) (6 rows) ãã®ããã«æ€çŽ¢æ¡ä»¶ã«å¿ããŠé©åãªãã©ã³ãããŒã¿ããŒã¹ã¯çµã蟌ãã§ãããŸãã ææ³ indexã䜿ãã°ã©ããããéããªãã®ãã¯æ€èšŒããããšãã§ããŸããã§ããããindexã®ä»çµã¿ãå®è¡èšç»ã«ã€ããŠè§Šããããšãåºæ¥ãŸããã ã©ãã©ãè§Šããæ©äŒãå¢ããŠãããšæãã®ã§ãä»åŸãããŒã¿ããŒã¹ã®ä»çµã¿ãåŠãã§ãããããšæããŸãã åè [MySQL]WHERE句でLIKEを使っている場合のINDEX | DayByDay PostgreSQLクエリ実行の基礎知識 ~Explainを読み解こう~ 【SQL】インデックスの基本知識まとめ - Qiita B木 - Wikipedia ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã rakus.hubspotpagebuilder.com ã©ã¯ ã¹Developersç»é²ãã©ãŒã https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/ ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ âTECH PLAY techplay.jp âconnpass rakus.connpass.com
id:radiocat ã§ãã é
é
ã¡ãŒã« ïŒ ã¯ã«ã¡ã« ã®éçºããŒã ã§ã¯ãæã
ã®åãçµã¿ãå€ãã®æ¹ã
ã«ç¥ã£ãŠãããããã ããã°é£ èŒãããžã§ã¯ããçºè¶³ãããŸãããåçã¯ããã¯ãªãã®æ§åã§ãããŸãã¯ã¡ã³ããŒåå£«ã§æåŸ
å€ãããåãããããã« ãã©ãã«ãŒ 颚ãšã¯ãµãµã€ãºãªã©ãè¡ãããã®åŸã¿ããªã§æçš¿ããŒãã®ã¢ ã€ã㢠ãåºããŸããã ããã¯ãªãã®æ§å ã¡ãŒã«é
ä¿¡ãæ¯ããæè¡ãšããŠããŠãã¢ãŠããããããã ã¡ãŒã«é
ä¿¡ãåãå·»ã ITæè¡ ãã客æ§ã®ããžãã¹ã¯ããŸã ã«æ¥ã
é²åãç¶ããŠããŸãã è¿·æã¡ãŒã«ãªã©ã§ãã¬ãã£ããªã€ã¡ãŒãžãããå©çšã«æ¶æ¥µçãªå£°ãèãããã¡ãŒã«é
ä¿¡ã§ãããçŸåšã§ãå€ãã®äººãã¡ãŒã«ãèŠãŠã·ã§ããã³ã°ãããªã©ã®åœ¢ã§çæŽ»ãžæŽ»çšããŠãããããžãã¹ã«ãå©çšãããŠããŸãããŸããã¡ãŒã«é
ä¿¡ã®ä»çµã¿ã¯è€æ°ã®éä¿¡ãã£ãªã¢ããã©ãããã©ãŒã ãè·šãè€éãªã·ã¹ãã åºç€äžã«æ§ç¯ãããŠãããæ§ã
ãªã¡ãŒã«ã®çš®é¡ãšé
ä¿¡æ¹æ³ã§æãç«ã£ãŠããŸãã ãããªäžã§ãç§ãã¡ã¯ã客æ§ã®ããžãã¹ãæåãžå°ãããã«ã1éã§ãå€ãã®ã¡ãŒã«ããå±ãã§ããããæ¥ã
åªåãç¶ããŠããŸãã瀟å
ã§ãæ®æ®µã¯ããŸãèªãããããšã®ãªãã¡ãŒã«é
ä¿¡ã®è£åŽã€ããŠé
é
ã¡ãŒã«ïŒã¯ã«ã¡ã«ã®éçºãæ
åœããŠãããšã³ãžãã¢ãçŸå Žããçºä¿¡ããããšã§ãã¡ãŒã«é
ä¿¡ã«èå³ã®ããäººãæ®æ®µãã®ããã°ãã芧é ããŠãããšã³ãžãã¢ã®ã¿ãªããã«å°ãã§ãèå³ããã£ãŠé ããã°ãšæãããããžã§ã¯ããçºè¶³ãããŸããã ãŸãã¯ç¬¬äžåŒŸãšããŠã4人ã®ã¡ã³ããŒã以äžã®ããŒãã1ã€ãã€æ
åœããæçš¿èšäºãæ€èšäžã§ãã ã¡ãŒã«ãå°éããã ã«ã€ãŒã³ æ¥åã®åãçµã¿ 6/26ã®ãRAKUS Meetup Osaka ã«ã€ãŒã³ Nightãã«ç»å£ãããŠããã ããä¹
å±±ã§ãã ã¡ã«ãã¬é
ä¿¡ãµãŒãã¹ã«ãããŠãã¡ãŒã«ãé
ä¿¡ã§ãããã©ããã¯éåžžã«éèŠã§ãããã®ãããé
é
ã¡ãŒã«ã«ãããŠãã¡ãŒã«å°éçãåäžãããããã«ãããã€ãã®æœçãè¡ã£ãŠããŸããããããéçºè
ãæ³å®ããŠããã¡ãŒã«å°éçã¯ãã客æ§ãæåŸ
ããŠããå°éçãšã®ã£ãããããããšã«æ°ã¥ããŸããã ç§ãæ
åœããèšäºã§ã¯ãå
æ¥çºè¡šãããRAKUS Meetup Osaka ã«ã€ãŒã³ Nightãã®è³æãããŒã¹ã«ã ã·ã¹ãã éçº è
ã®ç«å Žã§ã¯æ°ã¥ãã«ããå°éçã®æ¬è³ªçãªåŽé¢ã«ã€ããŠã話ã§ããã°ãšæããŸãã å€çš®å€æ§ãªãã©ãããã©ãŒã ã«å¯Ÿå¿ããããã®ã¡ãŒã«ã®çš®é¡ äžéã§ããç§ããå±ãããããŒãã¯ãã¡ãŒã«ã®çš®é¡ã«ã€ããŠãã§ãã ã¡ãŒã«é
ä¿¡ã«ã¯ãHTMLã¡ãŒã«ãããã¹ãã¡ãŒã«ãå€èšèªã¡ãŒã«ãªã©ã®ãæ§ã
ãªçš®é¡ã®ã¡ãŒã«ããããŸãããµã ãçããŸã®ãæå
ã«å±ããŠããã¡ãŒã«ã®çš®é¡ãšãã®ã¡ãŒã«ãéãããŠããä»çµã¿ãç¥ã£ãŠé ããããã«ããããããããŠã©ã€ããªèšäºãå·çããŠãããŸãã çããŸã«ãšã£ãŠæçãªæ
å ±ããå±ãã§ããããããã°ããŸãã®ã§ããæåŸ
ãã ããïŒ ã¡ãŒã« ããŒã±ãã£ã³ã° ãæ¯ããé
ä¿¡æ¹æ³ ãã£ã³ã§ãã2014幎㫠ã©ã¯ ã¹ ãããã ãžå
¥ç€ŸããŸããã å»å¹Žã®8æã«æ¥æ¬ã«æ¥ãŠé
é
ã¡ãŒã«ã®ã¡ã³ããŒãšäžç·ã«ä»äºãããŠããŸãã ã客æ§ã«ãšã£ãŠã ããŒã±ãã£ã³ã° ã®æ¹æ³ããããããã£ãŠãããã«åãããé
ä¿¡æ¹æ³ãéžã³ãŸããç§ã®æçš¿ã§ã¯ãé
é
ã¡ãŒã«ã§ã客æ§ãéžã¹ã ããŒã±ãã£ã³ã° ã®æ¹æ³ãšã¡ãŒã«ã®é
ä¿¡æ¹æ³ãã玹ä»ããŸããã©ããæ¥œãã¿ã«ãåŸ
ã¡ãã ããã ãã£ãªã¢ã¡ãŒã«ã®ä»ãŸã§ãšä»åŸ å°æã§ãããã£ãºããŒãšãã¥ã®ã¢ããããªãæããã¢ã©ãã£ãç®åã®éçºãªãŒããŒã§ããæšä»ãæºåž¯é»è©±ã¯ãã¥ãŒãã£ãŒãã©ã³ãã ã¹ããŒããã©ã³ ã«å€åãããã£ãªã¢ã¡ãŒã«ã«ã€ããŠãå€åããŠããŸããã ãã³ã¡ãŒã« ã» ã¹ããŒããã©ã³ ã®HTMLã¡ãŒã«ãªã©ãä»åŸã¡ãŒã«ã®ä»æ§ãã©ãå€ãã£ãŠããã®ããæžããããšèããŠããŸãã è¿æ¥äžã«é 次æçš¿äºå® ã¡ãŒã«é
ä¿¡ã«é¢ãã人ããããã§ãªã人ããæ¥œããã§é ãããšå¹žãã§ãã第1åã®èšäºãŸã§ããããã°ãããåŸ
ã¡ãã ããã
ã¯ããã« ããã«ã¡ã¯ãæ°å2幎ç®ã®y_kwmtã§ãã æè¿WebStorageã«è§Šããæ©äŒããã£ãã®ã§ã JavaScript ã§WebStorageã®ããŒã¿ãä¿åãäžæžããåé€ããæ¹æ³ã«ã€ããŠèª¬æããŸãã ã¯ããã« WebStorageãšã¯ SessionStorageãšã¯ LocalStorageãšã¯ ããŒã«ã«ç°å¢ã§å®è£
æåŸã« åèã«ãããµã€ã WebStorageãšã¯ WebStorageãšã¯ããŠãŒã¶ã®ããŒã«ã«ãã©ãŠã¶ã«ããŒã¿ãä¿åããä»çµã¿ã®ããšãèšããŸãã WebStorageã¯SessionStorageãšLocalStorageã®2çš®é¡ã«åãããŸãã SessionStorageãšã¯ SessionStorageãžæã£ãŠããå€ã¯ãŠã£ã³ããŠãéãããŸã§æå¹ãšãªããŸãã å¥ã¿ããå¥ãŠã£ã³ããŠãžã®å
±æã¯ã§ããŸããã LocalStorageãšã¯ LocalStorageãžæã£ãŠããå€ã¯ãŠã£ã³ããŠãéããããšã§ãæå¹ãšãªã£ãŠããŸãã å¥ã¿ããå¥ãŠã£ã³ããŠãžã®å
±æãã§ããŸãã ããŒã«ã«ç°å¢ã§å®è£
ä»åã¯SessionStorageãçšããŠãã¿ã³ãæŒããåæ°ãä¿åãåé€ããŸãã ãã«ãŠã³ãããã¿ã³ãæŒããŠã«ãŠã³ããå¢ããããã¯ãªã¢ããã¿ã³ãæŒããŠãã«ãŠã³ããã¯ãªã¢ããŸãã <!DOCTYPE html> < html > < head > < meta charset = "utf-8" > </ head > < body > < button id = "count" > ã«ãŠã³ã </ button > < button id = "clear" > ã¯ãªã¢ </ button > < script > document .getElementById ( "count" ) .onclick = function () { sessionStorage.setItem ( 'count' , eval ( Number ( sessionStorage.getItem ( 'count' )) + 1)) ; } ; document .getElementById ( "clear" ) .onclick = function () { sessionStorage.removeItem ( 'count' ) ; } ; </ script > </ body > </ html > sessionStorage(localStorage).getItemã§ããŒã¿ã®ååŸãè¡ããŸãã ãsessionStorage.getItem('count')ãã§ãcountããšããkeyãæã€sessionStorageã® value ãååŸããããšãã§ããŸãã sessionStorage(localStorage).setItemã§ããŒã¿ã®è¿œå ãäžæžããè¡ããŸãã ãsessionStorage.setItem('count', eval(Number(sessionStorage.getItem('count')) + 1));ãã§ããcountããšããkeyãæã€sessionStorageã® value ã1ãã€å¢ãããå€ãäžæžãããŠããŸãã sessionStorage(localStorage).removeItemã§ããŒã¿ã®åé€ãè¡ããŸãã ãsessionStorage.removeItem('count');ãã§ããcountããšããkeyãæã€sessionStorageã®ããŒã¿ãåé€ããŸãã ãã©ãŠã¶ã§ã®å®è¡ã®æ§åããã¡ãã§ãã æåŸã« ä»å㯠JavaScript ãçšããŠWebStorageã®ç®¡çãè¡ããŸããã ç°¡æçãªå®è£
ããã§ããŸããã§ããããæ¬¡ã¯æéãããã JavaScript ã®å®è£
ãè¡ãã JavaScript ã®çè§£ãæ·±ããããšæããŸãã åèã«ãããµã€ã
ã¯ããã« ããã«ã¡ã¯ãæ°åïŒå¹Žç®ã®aa_cryingã§ãã æè¿è峿¬äœã§Vue.jsã«ã€ããŠåŠç¿ãå§ããŸããã®ã§ãä»åã¯Vue.jsã®åºç€çãªéšåã«ã€ããŠç޹ä»ããããšæããŸãã ã¯ããã« Vue.jsãšã¯ ããã°ã¬ãã·ããã¬ãŒã ã¯ãŒã¯ãšã¯ Vue.jsã®ä»£è¡šçãªæ©èœ ãªã¢ã¯ãã£ããªããŒã¿ãã€ã³ãã£ã³ã° ã³ã³ããŒãã³ã é«éãªã¬ã³ããªã³ã° ãããã« åèã«ããèšäº Vue.jsãšã¯ Vue.jsãšã¯ã ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ (UI)ãæ§ç¯ããããã® JavaScript ã® ããã°ã¬ ãã·ã ãã¬ãŒã ã¯ãŒã¯ ã§ãã ããã§ããŸã㯠ããã°ã¬ ãã·ã ãã¬ãŒã ã¯ãŒã¯ ãšã¯äœãã«ã€ããŠèª¬æããããšæããŸãã ããã°ã¬ ãã·ã ãã¬ãŒã ã¯ãŒã¯ ãšã¯ ããã°ã¬ ãã·ã ãã¬ãŒã ã¯ãŒã¯ ( Progressive Framework ) ãšã¯ãVue.jsäœè
ã®Evan Youæ°ãæå±ããæŠå¿µã§ãã JavaScript ã«ã¯Vue.jsã®ä»ã« jQuery ãReact.jsãAngular.jsãªã©æ§ã
㪠ãã¬ãŒã ã¯ãŒã¯ ãååšããŸãã å®éã®ãããžã§ã¯ãã§ã¯ã¹ã¿ãŒãæã«ãããã®äžãã ãã¬ãŒã ã¯ãŒã¯ ãéžæããéçºãé²ããããšã«ãªããŸãã ããããã¢ããªã±ãŒã·ã§ã³ã®éçºãé²ããŠãããšãæ§ã
ãªèŠä»¶ã«å¯Ÿå¿ããããã«ã¢ããªã±ãŒã·ã§ã³ã®èŠæš¡ã倧ãããªã£ãŠãããŸãã ãããããšãæåã«å°å
¥ãã ãã¬ãŒã ã¯ãŒã¯ ãåããªããªããä¹ãæããããã«æ°ãã ãã¬ãŒã ã¯ãŒã¯ ãæš¡çŽ¢ããªããã°ãªããŸããã ãšãããVue.jsã¯ããµããŒãããããŒã«ãã©ã€ãã©ãªãšãã£ããšã³ã·ã¹ãã ã®ååšã«ãã£ãŠãã¢ããªã±ãŒã·ã§ã³ã®èŠæ±ã«æè»ã«å¯Ÿå¿ããããšãã§ããŸãã ãã®ããã«ã ã©ã®ãããªèŠæš¡ã段éã®ã¢ããªã±ãŒã·ã§ã³ã«ã察å¿ã§ãã ãšããã®ã ããã°ã¬ ãã·ã ãã¬ãŒã ã¯ãŒã¯ ã®æŠå¿µã«ãªããŸãã Vue.jsã®ä»£è¡šçãªæ©èœ ããã§ã¯Vue.jsã®ä»£è¡šçãªæ©èœã§ãã以äž3ã€ã®æ©èœã«ã€ããŠèª¬æããŠãããŸãã ãªã¢ã¯ãã£ããªããŒã¿ ãã€ã³ãã£ã³ã° ã³ã³ããŒãã³ã å é«é㪠ã¬ã³ããªã³ã° ãŸãã¯ç°¡åãªã³ãŒãã®äŸãèŠãŠããã ããã°ãšæããŸãã <!DOCTYPE html> <!DOCTYPE html> <html> <head> <meta charset= "utf-8" > </head> <body> <div id= "binding" ></div> <div id= "components-button" > <p><count-button></count-button></p> <p><count-button></count-button></p> <p><count-button></count-button></p> </div> <script src= "https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js" ></script> <script> //ããŒã¿ãã€ã³ãã£ã³ã°ã®äŸ new Vue( { el: '#binding' , template: ` <div> <p><input v-model= "message" ></p> <p> {{ message }} </p> </div> `, data: { message: 'Hello World!' } } ) //componentã®äŸ Vue.component( 'count-button' , { template: '<button v-on:click="increase">{{ count }} åæŒããŸãã</button>' , data: function () { return { count: 0 } } , methods: { increase: function () { this .count++; } } } ) new Vue( { el: '#components-button' } ) </script> </body> </html> ãã©ãŠã¶ã§è¡šç€ºãããšä»¥äžã®ããã«ãªããŸãã ãã©ãŠã¶ã§ã®å®è¡ Vue.jsãç°¡åã«å°å
¥ããã«ã¯ cdn.jsdelivr.net ãããœãŒã¹ãåç
§ããæ¹æ³ããããŸãã ãã®éã¯ä»¥äžã®ããã«èšè¿°ããŸãã < script src = "https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js" ></ script > vue@2.6.10 ãšèšèŒãããšããŒãžã§ã³ãæå®ããŠäœ¿çšããããšãåºæ¥ãŸãã ãŸããVue.jsã§ã¯ã以äžã®ããã«èšè¿°ããããšã§ãVue ã€ã³ã¹ã¿ã³ã¹ ãšHTMLèŠçŽ ãšã®çŽã¥ããå¯èœã§ãã new Vue( { //<div id="binding"></div>ãšçŽã¥ã el: '#binding' , // ...ç¥... } ) ãªã¢ã¯ãã£ããªããŒã¿ ãã€ã³ãã£ã³ã° el: '#binding' ã®éšåã§ã¯ããŒã¿ã®æŽæ°ãšDOMã®æŽæ°ãåæçã«è¡ã£ãŠããŸãã inputèŠçŽ ã« v-model ãšãããã£ã¬ã¯ãã£ãã䜿çšããŠããŸãããããã«ãããªã¢ã¯ãã£ããªå
¥åããŒã¿ã®åæãå¯èœã«ããŠããŸãã v-model ã¯ãå
éšçã«ã¯ input èŠçŽ ã«å¿ããŠç°ãªãããããã£ã䜿çšããç°ãªãã€ãã³ããéãåºããšããåããããŠããŸãã ãã®ãããv-modelã§ã¯formèŠçŽ ã«ãã value çã®åæå€ãç¡èŠããŠããŸãã®ã§ã JavaScript åŽã® data ãªãã·ã§ã³ã®äžã§åæå€ãæå®ããå¿
èŠããããŸãã data: { message: 'Hello World!' } ä»å㯠Hello World! ãåæå€ãšããŠãããããåæè¡šç€ºã§ã¯ãã®ããã«åºåãããŠããŸãã ã³ã³ããŒãã³ã Vue.componentã®éšåã§ã¯ã<count-button>ãšãã ã³ã³ããŒãã³ã ãå®çŸ©ããŠããŸãã ã³ã³ããŒãã³ã ãšã¯ãååä»ãã®åå©çšå¯èœãªVue ã€ã³ã¹ã¿ã³ã¹ ã«ãªããŸãã new Vue ã§äœæãããã«ãŒãVue ã€ã³ã¹ã¿ã³ã¹ å
(ä»åã¯component-button) ã§ã«ã¹ã¿ã èŠçŽ ãšããŠäœ¿çšã§ããŸãã ãã®ããã«åå©çšã§ããã®ã¯ãšãŠã䟿å©ã§ãã count-buttonã®äžã§ã v-on:click ãšããèšè¿°ããããšæããŸãã <button v-on:click= "increase" > {{ count }} åæŒããŸãã</button> ãã¡ãã¯Vue.jsç¹æã® v-on ãšãããã£ã¬ã¯ãã£ãã§ãDOMã€ãã³ãçºç«æã® JavaScript ã®å®è¡ãå¯èœã«ãªããŸãã ä»åã®å Žåã¯ããã¿ã³ãclickããããšã§ increase ãšãã颿°ãåŒãã§ããŸãã increase ãšãã颿°ã¯countãã€ã³ã¯ãªã¡ã³ããããšããå
容ã«ãªã£ãŠããã ã¯ãªãã¯ãããš âåæŒããŸãã ã®æ°åãã€ã³ã¯ãªã¡ã³ããããŠãããŸãã ãŸããVue.jsã§ã¯ã€ãã³ã修食åãšãããã®ãæäŸããŠããããããçšããŠã€ãã³ããå¶éããããšãã§ããŸãã äŸãã°ã以äžã®ããã«èšèŒãããšãã¿ã³ã1åããæŒããªããªããŸãã <button v-on:click.once= "increase" > {{ count }} åæŒããŸãã</button> .onceãä»ããçµæ ä»ã«ãæ§ã
ãªã€ãã³ã修食åããããŸãã®ã§ã詳现ã¯äžèšãªã³ã¯ãåç
§ããŠãã ããã Vue.jså
¬åŒ - ã€ãã³ããã³ããªã³ã° é«é㪠ã¬ã³ããªã³ã° Vue.jsã§ã¯ Virtual DOM ãæ¡çšããŠãããããé«é㪠ã¬ã³ããªã³ã° (衚瀺åŠç) ãå¯èœãšããŠããŸãã Virtual DOMãšã¯ããã®åã®éãä»®æ³ã®DOMã«ãªããŸãã å®éã®DOMãšåãæ§é ã®ä»®æ³DOMãçšæããä»®æ³DOMã«å¯ŸããŠåŠçãè¡ããŸãããããŠããã®çµæçãŸããå·®åã ããå®éã®DOMã«åæ ããŸãã ãã®ä»çµã¿ãçšããããšã§ãé«é㪠ã¬ã³ããªã³ã° ãå¯èœã«ããŠããŸãã ãããã« ä»åã¯Vue.jsã®åºç€çãªéšåã«ã€ããŠç޹ä»ãããŠããã ããŸããã Vue.jsã«ã¯ä»å玹ä»ã§ããªãã£ã䟿å©ãªæ©èœã沢山ãããŸãã®ã§ã 次åã¯ãã£ãšæãäžããŠç޹ä»ããŠãããã°ãšæããŸãã åèã«ããèšäº Vue.jså
¬åŒã¬ã€ã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã forms.gle ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ rakus.connpass.com
ã¯ããã« ããã«ã¡ã¯ãæ°åïŒå¹Žç®ã®taku_76ã§ãã ä»å㯠Ajax ã«ã€ããŠãã£ããããããšããåãã£ãŠããªãã£ãã®ã§å°ãæéã確ä¿ããŠã³ãŒãããåŠç¿ããããšã«ããŸããã ã¯ããã« Ajaxãšã¯ ããŒã«ã«ç°å¢ã§å®è£
ããŠã¿ã Ajaxã§å€éšAPIãžéä¿¡ãã ãããã« åèã«ããèšäº Ajax ãšã¯ 以äžã¯ Wikipedia ã®åŒçšã§ãã Ajax ïŒãšã€ãžã£ãã¯ã¹[1][2]ã ã¢ãžã£ãã¯ã¹ [3]ïŒã¯ããŠã§ããã©ãŠã¶å
ã§éåæéä¿¡ãè¡ããªãã ã€ã³ã¿ãŒãã§ã€ã¹ ã®æ§ç¯ãè¡ãããã°ã©ãã³ã°ææ³ã§ãã[4]ã XMLHttpRequest ïŒHTTPéä¿¡ãè¡ãããã® JavaScript çµã¿èŸŒã¿ã¯ã©ã¹ïŒã«ããéåæéä¿¡ãå©çšããéä¿¡çµæã«å¿ããŠãã€ãããã¯HTML (DHTML) ã§åçã«ããŒãžã®äžéšãæžãæãããšããã¢ãããŒããåã[5]ã Ajax ã¯Asynchronous JavaScript + XML ã®ç¥ã§ã2005幎2æ18æ¥ã«ç±³åœã®ã€ã³ãã©ã¡ãŒã·ã§ã³ã¢ãŒããã¯ãã§ããJesse James Garrettã«ããåä»ãããã[5][6][7]ã ä»ã®ãµã€ããèŠãŠã¿ãŸããããç°¡åã«è¡šããš JavaScript ãçšããŠãµãŒããšéåæéä¿¡ãè¡ãææ³ã§ã Ajax ãçšããããšã§WebããŒãžã®å
容ããªããŒããªãã§å€æŽããããšãã§ããŸãã ããŒã«ã«ç°å¢ã§å®è£
ããŠã¿ã ãŸãã¯ãããžãã¯çè§£ã®ããã«éä¿¡å
ãããŒã«ã«ãã¡ã€ã«ã«ããŠå®è£
ããŠã¿ãŸãã index3.html <!doctype html> <head> <meta charset="utf-8"> <title>Ajaxãå©çšããŠããŒã«ã«ã®å€éšãã¡ã€ã«ãèªã¿èŸŒã</title> <link href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js" type="text/javascript" ></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js" type="text/javascript"></script> <script type="text/javascript"> $( function() { $( '#ajax-button' ) .click( function() { $.ajax( { //URLæå® url: 'sample.json', //ããŒã¿åœ¢åŒæå® dataType : 'json', //éä¿¡ã«æåããå Žåã®åŠç success: function( data ) { var message = jsonParser(data); $( '#sample-text' ).html( message ); $( '#sample-text' ).html( obj.code ); $( '#sample-result' ).html( '<hr/><font color="blue">èªã¿èŸŒã¿æå</font><hr/>' ); }, //éä¿¡ã«å€±æããå Žåã®åŠç error: function( data ) { $( '#sample-result' ).html( '<font color="red">èªã¿èŸŒã¿NG</font>' ); } } ); } ); $('#clear').click(function(){ $( '#sample-text' ).html(''); $( '#sample-result' ).html(''); }); } ); function jsonParser(data) { var message = data.code; message = message + '<br/>'; message = message + data.message; return message; } </script> </head> <body> <h3>Ajaxãå©çšããŠjson圢åŒã®ãã¡ã€ã«ãèªã¿èŸŒã¿ããŒã¹ãã</h3> <p> <input type="button" id="ajax-button" value="èªã¿èŸŒã"/> <input type="button" id="clear" value="clear" onclick="OnButtonClick"/> <br/> </p> <div id="sample-result"></div> <div id="sample-text"></div> </body> </html> 以äžãä»åèªã¿èŸŒã sample.json ã§ãã { "code" : "100", "message" : "ã¡ãã»ãŒãž" } Webãã©ãŠã¶ ã§è¡šç€ºããã®ã¡ã èªã¿èŸŒã ãã¿ã³ãæŒãããšã«ãã£ãŠ json ãã¡ã€ã«ã®äžèº«ã衚瀺ãããŸããã index3.html Ajax ã§å€éš API ãžéä¿¡ãã 以äžã®ã³ãŒãã§å€éšã® API ãžã¢ã¯ã»ã¹ããããšãã§ããŸãã ä»å䜿çšããŠãã API ã¯ãå°åæ¯ã®å€©æ°äºå ±ã Json 圢åŒã§è¿ã API ã§ãã ç¡æã§äŒå¡ç»é²ç¡ãã§äœ¿ãããšãã§ããŸãã $( function() { $( '#ajax-button' ) .click( function() { $.ajax( { //倩æ°äºå ±ãJson圢åŒã§è¿ãAPI url: 'http://weather.livedoor.com/forecast/webservice/json/v1?city=400040', ããããã //éä¿¡æ¹æ³ type:'GET', ãããããã//ããŒã¿åœ¢åŒãæå® dataType : 'json', //éä¿¡ã«æåããå Žåã®åŠç }).done(function(data){ alert("æå!"); $( '#sample-text' ).html( data.link ); //éä¿¡ãšã©ãŒã«ãªã£ãå Žåã®åŠç }).fail(function(data){ alert("倱æ!"); }); }); }); idã sample-text ã« Json ãã¡ã€ã«ã® link ã衚瀺ããŠããŸãã ãããã« ä»å㯠Ajax ã«ã€ããŠåºç€çãªåŠç¿ãè¡ããŸããã å®è·µã§äœ¿ãããšã«ãã£ãŠããçè§£ãæ·±ãŸããŸãã®ã§ãä»åã¯æéãçãããã«äŒå¡ç»é²ã®å¿
èŠã®ãªã倩æ°äºå ±ã® API ãå©çšããŸãããã æ¬¡ã¯äœ¿ã£ãŠã¿ããå€éšã® API ãæ¢ãäœãäœã£ãŠã¿ãããšæããŸãã åèã«ããèšäº http://javatechnology.net/ajax/biginer-start-up/ javatechnology.net ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã forms.gle ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ rakus.connpass.com
ã¯ããã« ããã«ã¡ã¯ïŒä»åã¯å€§éªãªãã£ã¹ã§éå¬ããã5æãã¢ããã·ã¥ã®ã玹ä»ã§ãã 什åäžçºç®ã®ãã¢ããã·ã¥ã¯ãããŒããªããã«ããŠãåã
ãèªç±ã«çºè¡šã§ãã圢åŒã«ããŸããã ããã§ã¯çºè¡šå
容ã®äžéšããã€ãžã§ã¹ãã§ãéãããããŸãã ã¯ããã« ãã¢ããã·ã¥å°çšã¹ããã¢ã㪠ITãšã³ãžãã¢ã¯åŠç¿ããªããšæ»ãã§ããŸãçãç© PHPerKaigi2019äžæ äŒæ¯ãè¿ã å°ããããšããå§ããæ¹å ãããã« ãã¢ããã·ã¥å°çš ã¹ãã ã¢ã㪠倧éªã§ã¯ãã¢ããã·ã¥ã®ãã³ããªåã«ãããåå è
ãçºè¡šè
ãåºå®åãããªã©ã®èª²é¡ãæ±ããŠããŸãã ãã¢ããã·ã¥ããã£ãšæ¥œããããã®æœçãšããŠããªã¢ã«ã¿ã€ã ã«çºè¡šã«ãã£ãŒãããã¯ã§ããã¢ããªãç»å ŽããŸããïŒ ã¢ããªã«ãçºè¡šå
容ããç»é²ããŠãããšãåå è
ã¯ã¢ããªãéããŠçºè¡šå
容ã«ã³ã¡ã³ããã¹ã¿ã³ããéä¿¡ã§ããŸãã ãã®ã¢ããªãéããŠãããã©ã³ãšã³ãžãã¢ã ãã§ãªãæ°äººãããæ°è»œã«ãã¢ããã·ã¥ã«åå ã§ããããã«ãªãã°ããã§ããïœ ITãšã³ãžãã¢ã¯åŠç¿ããªããšæ»ãã§ããŸãçãç© åŒç€Ÿãšã³ãžãã¢ã®"æè¡ååäž"æœçã®ã話ã§ãã æã
ã®æ¥çã§ã¯ãšã³ãžãã¢ã¯åžžã«æè¡åã磚ããªããã°ãããŸããããšã¯èšãããã¯ãã¢ãããŒã·ã§ã³ç¶æã倧å€ã§ããã ãããªäžã ã©ã¯ ã¹ã§ã¯ãåŠã³ãã¢ãŠããããããå Žã®æäŸãã«åãå
¥ããŠããŸãïŒ ç¹ã«æè¿ã§ã¯ã瀟å€åãã«èªç€Ÿã§ Meetup ãéå¬ãããå€éšã€ãã³ããž åå ïŒç»å£ ãããªã©ã®æŽ»åã粟åçã«è¡ã£ãŠããŸãã ãšã³ãžãã¢ãããæé·ããããã«ããä»åŸãæ§ã
ãªæœçã宿œããŠããããã§ããïœ PHPerKaigi2019äžæ äŒæ¯ãè¿ã PHPerã®æ¹ã«ã¯ã銎æã¿ãPHPerKaigiãã®äžæ äŒã宿œããã話ã§ãã æ¬å®¶PHPerKaigiã®æ§å㯠fortee ã«åç»ã³ã³ãã³ãããŸãšãŸã£ãŠããã®ã§äžæ ããããã§ããïœã äžæ äŒåŸã«çºè¡šå
容ã«ã€ããŠã¿ããªã§è°è«ããããšã§æ°ããªçè§£ãé¢é£ç¥èãåŸãããšãã§ããŸãã "è¯ã"æè¡ã€ãã³ãã¯ã¿ããªã§ã·ã§ã¢ã§ãããšããã§ããã å°ããããšããå§ããæ¹å åŒç€Ÿãšã³ãžãã¢ã«ãã"æ¹åã®ããã"ã®ã話ã§ãã åŒç€Ÿã«éãããã©ã®æ¥çã§ããæ¹åãã¯å€§äºã§ããäžèšã«ãæ¹åããšèšã£ãŠãæ¥åãããŒã®èŠçŽããç¹å®äœæ¥ã®èªååãªã©ãæããã°ããããããããã§ãã ãããããŸãã¯ãèšé²ãããããšãæ¹åã®ç¬¬1æ©ãèšé²ããããšã§çŸç¶ãææ¡ããããŒã ã§çžè«ãåããªããããè¯ãããæ¹æ³ãæ¢ãããšãã§ããŸãã ä»ãŸã§è¡ã£ãŠããã¿ã¹ã¯ãèšé²ãã ECRSã®æ³å ã䜿ã£ãŠäžèŠãªã¿ã¹ã¯ã®æé€ãé¡äŒŒã¿ã¹ã¯ã¯çµåããŠãããšãããªãããšã«é ã䜿ããªããŠãããªããŸãb çè
㯠ECRSã®æ³å ã¯ç¥ããªãã£ãã®ã§ãããæ©ã«å匷ããŠã¿ããã§ã"Ï(ïŸâ¡ïŸ (ïŸâ¡ïŸ )Ï" ïŸïŸïŸïŸ ãããã« ãã¢ããã·ã¥ãæ¯åããããªçºè¡šãèããŠæ¥œããã§ãã åå ããŠã¿ãŠããªãã»ã©ããšæãããšãå€ãã®ã§ãå人çãªå匷ãã¿ãå¢ããŠãããŸãïŒãã ããæ¶åããã®ã倧å€ã§ãããïŒ ãã²æ¥æãæåŸ
ããŠåå ããŸãïœ
id:radiocat ã§ããæ¯æã楜ãã¿ã®ãšã³ãžãã¢ããããå匷äŒã®ãç¥ããã§ããä»åã¯6/13ïŒæšïŒã«éå¬äºå®ã§ãã rakus.connpass.com 5æã®ã¬ããŒã ååãæ§ã
ãªæè¡åéã«åãçµãã§ããæ¹ã
ãåå ãããŸããã PHP ã Python ãDockerãVue.jsãšãã£ãããŒã¯ãŒããè€æ°ç»å ŽããŠããŸãã ããã°ãæžããŠãã人ãå€ããåå ãããçããã®æŽ»åã®äžç«¯ãç¥ãããšãã§ããŠãšã³ãžãã¢ãšããŠåèã«ãªããŸãããŸããããã°ã©ãã³ã°ãªã©ã®äœæ¥ã®åãã§æè¡æžç±ãèªãã§åèã«ããŠãã人ãå€ãããã£ããããŸããã瀟å
ã§å®æè³ŒèªããŠããæè¡éèªãããã€ãããã®ã§ã次åã¯äŒå Žå
ã«çœ®ããŠãèªã¿é ããããã«ããããšèããŠããŸããå¿
èŠã«å¿ããŠåŠç¿ã®åèã«ããŠé ããã°ãšæããŸãã äŒå Žã®çãäžã«çœ®ããŠãããèåã奜è©ãªã®ã§åŒãç¶ããæäŸããŠããŸããåž°å®
åã«è»œããèåãã€ãŸã¿ãªãããããããããŠé ããã°ãšæããŸãã 仿ãçæ§ã®ãåå ããåŸ
ã¡ããŠãããŸãã 6/26ïŒæ°ŽïŒã«ã¯Meetupãéå¬äºå®ã§ãã rakus.connpass.com ãã¡ãã¯åå ã ãã§ãªãLTãåéããŠããŸããæ®ã1æ ãšãªã£ãŠããŸãã®ã§çºè¡šããŠã¿ãããšããæ¹ã¯ãæ¥ããã ãããäžè¬åå æ ãåééå§2æ¥ç®ã§50%ãè¶
ããŠããç¶æ³ã§ãããèå³ã®ããæ¹ã¯ãæ©ãã«ãç»é²ãã ãããããããå匷äŒãšåãããŠãšã³ãžãã¢ã®çæ§ã®ãåå ããåŸ
ã¡ããŠãããŸãã