ã¯ããã« PHP8ã§å°å
¥ãããmatchåŒãå°å
¥ãããŸãã ããã°ã©ã ãšããŠã¯ã©ããã£ãå Žé¢ã§äœ¿ããããã®ãããã°ãå
¥ããããã¯ã©ããªã®ããšãã£ãç¹ãæ°ã«ãªãã®ã§ã¯ãªãããšæããŸãã ãã®èšäºã§ã¯ãmatchåŒã«ã€ããŠswitchæãšã®éããè¿°ã¹ãªãããæ§æã®æ§è³ªããã©ããã£ãå Žé¢ã§åœ¹ç«ã¡ããããç§ãªãã«èããŸãšããŸããã ã¯ããã« matchåŒãšã¯ matchã¯åŒãå€ã代å
¥ããå Žé¢ã§ç䟡ãçºæ®ãã æãšã¯ åŒãšã¯ breakãäžèŠããã°ãå
¥ãã«ããã·ã³ãã«ãªèšè¿°ãã§ãã switch match æ¡ä»¶ã®èšå
¥å¿ãã«ãšã©ãŒã§æ°ä»ãã switch match å³å¯ãªæ¯èŒ switch match ããŸã ãããã« matchåŒãšã¯ matchåŒã®åºæ¬çãªæ§æãšãswitchãšã®çžéç¹ã倧ãŸãã«èšèŒããŸãã ç°¡åã«èšã£ãŠããŸããšswitchã®ãããªåå²ã®æ§æã§ãã $param = 1; $result = match($param) { 1 = > "1ã®çµæ", 2 = > "2ã®çµæ", } // äžããããåŒæ°ïŒ$paramïŒã«å¯ŸããŠäžèŽããã±ãŒã¹ïŒ1ãŸãã¯2ïŒã®çµæïŒ= > ã®å³åŽïŒãè¿ã // çµæïŒ$result = "1ã®çµæ" äžèšã«switchæãšã®å€§ãŸããªéããèšèŒããŸãã switch match è¿ãå€ ãªã ãã breakã®èšè¿° å¿
èŠ äžèР忡件ã®åŠç ãããã¯ã§èšè¿°å¯èœ 1è¡ã§ããæžããªã æ¯èŒ ç·©ããïŒ==ïŒ å³å¯ïŒ===ïŒ ã©ã®æ¡ä»¶ã«ãåœãŠã¯ãŸããªãå Žå ãã®ãŸãŸå®è¡ããã ãšã©ãŒã«ãªã 次ã®ç« 以éã§ã¯ãPHP8ã§å°å
¥ãããmatchåŒãã©ã®ãããªå Žé¢ã§çããŠããããã玹ä»ããŸãã matchåŒã®è©³ãã仿§ã¯äžèšããåç
§ããŠé ããšããåãããããããšæããŸãã åèïŒ wiki.php.net qiita.com matchã¯åŒãå€ã代å
¥ããå Žé¢ã§ç䟡ãçºæ®ãã æ¯èŒè¡šã§è¿ãå€ããmatchã¯ãããããswitchã¯ããªãããšèšèŒããŸããã ããã¯ãmatchã åŒ ã§ãããifãswitchã æ ã§ããããã§ãã ãã®ç« ã§ã¯ãåŒãšæã®éããèŠãäžã§ãmatch åŒ ã圹ç«ã¡ãããªå Žé¢ã玹ä»ããŸãã æãšã¯ ãã£ãã説æãããšãè¿ãå€ãè¿ãããå³èŸºã«é
眮ã§ããªããã®ã§ãã äŸïŒifãswitchãããã«ããããŸããå³èŸºã«é
眮ã§ããªãããçŽæ¥å€ã®ä»£å
¥ã¯ã§ããŸããã // äžèšã®ãããªçŽæ¥å€ã代å
¥ãããããªæžãæ¹ã¯ãæãã§ã¯ã§ããªã $result = if($param == 1){⊠$result = switch($param){⊠ãã®ããã忡件ã§ã®ä»£å
¥ãå¿
èŠã§ããã代å
¥å¿ãã®æãããããŸãã // ifãswitchæã§ã¯åæ¡ä»¶ã§ä»£å
¥ãå¿
èŠãã±ãŒã¹ãå¢ãããšä»£å
¥å¿ããæã /** if **/ if($param == 1){ $result= "1ã®çµæ"; } elseif($param == 2){ $result = "2ã®çµæ"; } /** switch **/ switch ($param) { case 1: $result = "1ã®çµæ"; break; default: $result = "defaultã®çµæ"; } åŒãšã¯ ãã£ãã説æãããšãè¿ãå€ãæã¡ã=ãã®å³èŸºã«é
眮ã§ãããã®ããŸãæãšããŠã䜿ããŸã äŸïŒmatchãããã«ããããŸããçŽæ¥å€ã®ä»£å
¥ãå¯èœãªã®ã§ã代å
¥ã忡件ã«èšè¿°ããæéããªãã代å
¥å¿ãããªããªããŸãã $result = match($param) { 1 = > "1ã®çµæ", 2 = > "2ã®çµæ", }; ãã¡ããäžèŠã§ããã°ä»£å
¥ããªãæžãæ¹ãã§ããŸãã match($param) { // $result = ã®éšåã¯åãå€ãå¯èœ 1 = > func_hoge(), 2 = > func_huga(), }; åèïŒ jsprimer.net breakãäžèŠããã°ãå
¥ãã«ããã·ã³ãã«ãªèšè¿°ãã§ãã switchã§ã¯æç€ºçã«breakã®èšè¿°ãå¿
èŠã§ããbreakãæ¯åæžãå¿
èŠãããæžãå¿ãã®ãã§ãã¯ãå¿
èŠãªã®ã§ãåŽåãããããŸãããã ãããã®ãŸãŸæ¬¡ã®æ¡ä»¶ã®åŠçãå®è¡ïŒãã©ãŒã«ã¹ã«ãŒïŒããèšè¿°ã¯ç°¡åã«æžããŸãã switch breakã¯æç€ºçã«èšè¿°ãå¿
èŠããã©ãŒã«ã¹ã«ãŒãããã©ã«ãã§ããããã©ãŒã«ã¹ã«ãŒãæ³å®ããèšè¿°ã¯ç°¡åã«ã§ããŸããããã®ä»£ããã«breakå¿ãã«ãããã°ãå
¥ããããæ§é ã«ãªã£ãŠããŸãã switch ($param) { case1: func_hoge();// breakå¿ã case2: func_fuga();// case 1ã§ãããããŠãåŠçfugaãå®è¡ããã } ãã ããcase1ã®å Žåã¯case1,2ããcase2ã®ãšãã¯case2ã®ã¿ãå®è¡ãããå Žåã¯äžèšã®ã³ãŒãã§ãã£ãŠããŸãã breakãæžããªãããšã«ãããã©ãŒã«ã¹ã«ãŒãç°¡åã«å®çŸã§ããŸããããã®åãbreakå¿ãããšãããã°ãå
¥ã蟌ãå¯äœçšãæã£ãŠããŸã match ãã©ãŒã«ã¹ã«ãŒã§ããªãããã®ä»£ããbreakãæç€ºçã«èšèŒããå¿
èŠããªããbreakå¿ããæ°ã«ããªããŠããã§ãã match ($param) { 1 = > func_hoge(), 2 = > func_fuga(), }; ãã©ãŒã«ã¹ã«ãŒïŒcase1ã®å Žåã¯case1,2ããcase2ã®ãšãã¯case2ã®ã¿ãå®è¡ïŒãããå Žåã¯matchã«ã¯åããŸããã ãšããã®ããåºæ¬çã«ãã©ãŒã«ã¹ã«ãŒããªãä»çµã¿ã§ããããšã«å ããmatchã¯æ¡ä»¶ã®å³èŸºã«1è¡ããèšèŒãã§ããªãããã§ãã ãã®ãããäžèšã®switchãšåãããšãããããšãããšäžèšã®ããã«ãªããŸãã match ($param) { 1 = > func_hogefuga(), // ããã«2è¡ä»¥äžã®èšè¿°ã¯ã§ããªã 2 = > func_fuga(), }; function func_hogefuga() {// 颿°åãåºããå¿
èŠã«ãªã func_hoge(); func_fuga(); } æ¡ä»¶ã®èšå
¥å¿ãã«ãšã©ãŒã§æ°ä»ãã åå²ã«éãããäºæãã¬å€ã代å
¥ãããå Žå ã æå³ããäœã代å
¥ãããªãã£ãå Žåã¯ããšã©ãŒããã°ã§æ°ä»ããæ¹ãããã§ãã matchåŒã§ã¯ã©ã®æ¡ä»¶ã«ãããŠã¯ãŸããªãå Žåãšã©ãŒã«ãªãããã誀ãã«æ°ã¥ããããã§ãã switch æ¡ä»¶ãæããŠããŠããã®ãŸãŸå®è¡ãããŸãã switchã®ãããªãšã©ãŒãã§ãªãä»çµã¿ã®å Žåããã°ãçºçããæã«ã±ãŒã¹å¿ãã®å¯èœæ§ãèããããšãå¿
èŠãšãªããŸããæ°è¡ãªãããã§ãããã±ãŒã¹ãåŠçãå€ãæã¯ç¢ºèªã倧å€ã§ãã foreach ($users as $user) { switch ($user- > score) { case "good": $command = "upgrade"; break; case "bad": $command = "BAN"; break; // $user- > scoreãnormalã®å Žåãã©ã®ã±ãŒã¹ãéããå€ã®ä»£å
¥ãè¡ãããªãã // ãã®ãããæ¬¡ã®ã«ãŒãåŠçã«ãã®ãŸãŸ$commandã®å€ãåŒãç¶ããã } $commandQue[$user- > id] = $command; } // batchãã¥ãŒã«å
¥ãã // æ¥æã§å®è¡ããããããã§æ®éã®ãŠãŒã¶ãBANãããŠããŸã match æ¡ä»¶ãæããŠãããšãšã©ãŒã«ãªããŸãã matchã®ããã«ãšã©ãŒãšãªãä»çµã¿ã®å Žåãã±ãŒã¹ã®èšè¿°å¿ããæ°ã«ããå¿
èŠãããŸããã foreach ($users as $user) { $command = match ($user- > score) { "good" = > "upgrade", "bad" = > "BAN", // normalã®å Žåã¯ã±ãŒã¹ãç¡ãã®ã§ããšã©ãŒãšãªããåŠçãäžæããã } $commandQue[$user- > id] = $command; } å³å¯ãªæ¯èŒ matchã¯å³å¯ãªæ¯èŒã®ãããæ°å€ã ãšæã£ãŠãããæååã§ããæãã¬åå²ã«å
¥ã£ãããšãã£ãããšãããªããªããŸãã ãã ãã PHP ã¯ããããå³å¯ãªæ¯èŒãåæãšããŠäœãããŠãããšã¯èšããªãã®ã§ãå³å¯ãªæ¯èŒã«ããããšã§ãšã©ãŒã«ãªãããšãããã®ã§æ³šæãå¿
èŠã§ããïŒããŸãã§èšèŒããŸãïŒ switch $hoge = "hoge"; switch ($hoge) { case 1: echo "1ã®çµæ"; break; case "hoge": echo "hogeã®çµæ"; break; } // "1ã®çµæ" match $hoge = "hoge"; match ($hoge) { 1 => "1ã®çµæ", "hoge" => "hogeã®çµæ", } // "hogeã®çµæ" äžèŠãããšå³å¯ãªæ¯èŒã®æ¹ãè¯ãããã§ãããã ããå
ã
åãæ°ã«ããæ°è»œã«æžããããšãç¹åŸŽã§ããã£ã PHP ã å€ãã³ãŒãã§matchãå°å
¥ããéã«ã¯ãŸãã¯ãåããã£ããæŽåãããªã©å¯Ÿçãå¿
èŠããã§ãã ããŸã PHP ã®é¢æ°ãå³å¯ãªåãæèããäœãã§ãªããããæãã¬ãšã©ãŒãçºçããäŸã玹ä»ããŸãã äŸïŒæ¡åŒµåã§ã±ãŒã¹ãåãããå Žå äžèšã®äŸã§ã¯ç»åãã¡ã€ã«åã®æ¡åŒµåããåŠçãåå²ãããã³ãŒãã§ãã $img_name = "img.jpg"; /** switch_æ£èŠè¡šçŸ **/ switch (true) { case preg_match('/(\.jpg)$/', $img_name): echo "jpgã ã"; break; case preg_match('/(\.png)$/', $img_name): echo "pngã ã"; break; // gifçãã®ä»ã®åå²ãç¶ã default: echo "defaultã ã"; } // = > "jpgã ã" /** match_æ£èŠè¡šçŸ **/ echo match (true) { preg_match('/(\.jpg)$/', $img_name) = > "jpgã ã", preg_match('/(\.png)$/', $img_name) = > "pngã ã", // gifçãã®ä»ã®åå²ãç¶ã default = > "defaultã ã" }; // = > "defaultã ã" å®ã¯preg_matchã¯è©²åœããå Žåtrueã§ãªãã1ãè¿ããŸãããã®ããmatchåŒã§ã¯true===1ãšãªãã æ£èŠè¡šçŸ ã«è©²åœããŠããã®ã±ãŒã¹ã«å
¥ãããšã¯ãããŸããã ãã®ããã«æ¢åã®é¢æ°ã®æ§è³ªãæ£ããçè§£ããŠããªããšæãã¬ãã°ãçãå¯èœæ§ããããŸãã ãããã« ãã®èšäºã§ã¯PHP8ã§å°å
¥ãããmatchåŒã«ã€ããŠãswitchãšæ¯èŒããªãããæå¹ãããªå Žé¢ããã°ã®å
¥ãã«ããã«ã€ããŠèšèŒããŸããã ä»åŸå°å
¥ãæ€èšããŠããæ¹ãmatchåŒã«ã€ããŠç¥ãããæ¹ã®äžå©ã«ãªã£ãŠããã°å¹žãã§ãã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã 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
ã¯ããã« ããã«ã¡ã¯ïŒæè¡åºå ±ããŒã ã® itoken1013ã§ãã 2020幎ã«å
¥ã£ãŠããã ã©ã¯ ã¹ã¯ãªã³ã©ã€ã³ã€ãã³ãéå¬ã«ç©æ¥µçã«åãçµãã§ããŸãïŒ ä»åã¯ãã®äžã§ãå€ãã®æ¹ã«åå ãããã ã倧奜è©ã§ããã ãšã³ãžãã¢ã®å匷æ³ããã¯LT ã玹ä»ããŸãã rakus.connpass.com ã¯ããã« ã€ãã³ãæŠèŠ LTã®çŽ¹ä» 1. ã²ãŒã ã§åŠã¶ãããžã¡ã³ãïŒçœæ³éåžãã 2. ç§ã«ãšã£ãŠã®åŠã³ïŒariakiãã 3. esaã䜿ã£ãã€ã³ã¯ãªã¡ã³ã¿ã«å匷æ³ïŒEiichi Horiuchiãã 4. é¢åèããã ã£ãŠãã£ããã¢ããããã - RE:Bot ããå§ãããã®ããçæŽ»ïŒã¿ã®ããã 5. äžæ¥åäž»ã§ãå匷ããããïŒè±èç¶¿ãã 6. èªå·±åŠç¿ãæ¯ãã Inoreader + NotionïŒLogyãã 7. ãã¯ã俺ã®LTç»å£ã¯ãŸã¡ãã£ãŠãããïŒmoomooyaãã ãããã« & 次åäºå ã€ãã³ãæŠèŠ å
æ¥9/9(æ°Ž)ã§2åç®ã®éå¬ãšãªããŸããããšã³ãžãã¢ã®å匷æ³ããã¯LTãã¯ååã®éãããšã³ãžãã¢ã®å匷æ³ãæ
å ±åéã®ããŠããŠãæ°è»œã«5åéã®LTã§ç޹ä»ãããã€ãã³ãã§ãã ä»åã¯èš8åããLTæ ã®ãåå ããŸããšã³ãžãã¢å¿æã®åŠçãããæ°äººã»ããã©ã³ãšã³ãžãã¢ããã¶ã€ããŒãããšå¹
åºãå±€ã®æ¹ã
ã«ãæ¥å Žããã ããŸããã Twitter ãZoomã®ãã£ãããè³ããã«ããŠããã ããäžã®äººã§ããç§ã倧å¿ãã®ã€ãã³ãã§ããâŠïŒ togetter.com LTã®çŽ¹ä» 1. ã²ãŒã ã§åŠã¶ãããžã¡ã³ãïŒçœæ³éåžãã ãã€ã ã©ã¯ ã¹ã®äž»å¬ã€ãã³ãã«ãåå ããã ããŠããçœæ³ããããã 5çš®é¡ã®ã²ãŒã ããåŠã¹ããããž ã¡ã³ãã¹ ãã«ãã玹ä»ããã ããŸããã ãããªãã«ããã¡ãªãããžã¡ã³ãããæ°æ¥œã«æ¥œãããã²ãŒã ã®äžã§åŠã¶çºæ³ã«é©ããŸããã åç»åãå¯ãã«æ¥œãã¿ã«ããŠããŸãã speakerdeck.com 2. ç§ã«ãšã£ãŠã®åŠã³ïŒariakiãã Zoomãã«æŽ»çšã®åæ¹åLTãå±éããã ããariakiããã«ã¯ããåŠã¶ããšãã®ããããè«ãèªã£ãŠããã ããŸããã åååãšãªã欲æ±ã«çŽ çŽã«åŸãããšã§ãããããããŠããæãã§åŠç¿ãããŠããäººã¯æªåŸªç°ããè±åŽã§ããã®ã§ã¯ãšå
±æããŠããŸããã ç§ããã€ãæ¥æ¬é
ã®åžã«ååžãããã§ãã docs.google.com 3. esa ã䜿ã£ãã€ã³ã¯ãªã¡ã³ã¿ã«å匷æ³ïŒEiichi Horiuchiãã æéã®ãªãäžã§ãã©ã®ããã«åŠç¿ãç¶ç¶çã«å®æœããŠãããã esa ã䜿ã£ãäºäŸãšå
±ã«èªã£ãŠããã ããŸããã åŠç¿èšç»ãããŒã¯ããŠã³ã§æè»œã«äœæããã¹ã±ãžã¥ãŒã«ã«èœãšã蟌ã¿ã鱿¬¡ã§æ¶åããŠãããšãããã®ã§ããããåãã esa ã䜿ã£ãŠããç§ããã¯é©ãã®ã¯ãªãªãã£ã§ããã ãããŠç·šã¿åºããæ¹æ³è«ãããããšãªãããç¶ç¶ãæ¯ããç¥è欲ãžã®æ
ç±ãšã»ã«ããããžã¡ã³ãåã«ã¯ææã§ããïŒ esa.io 4. é¢åèããã ã£ãŠãã£ããã¢ããããã - RE: Bot ããå§ãããã®ããçæŽ»ïŒã¿ã®ããã ã¿ã®ããããåãçµãã æ
å ±åéã® ã«ã€ãŒã³ ãã玹ä»ããã ãããŸããã ç¹åŸŽçã ã£ãã®ã¯ãèªçºçã«æ¢ãã®ã§ã¯ãªã Bot ã§èªååãç®æããç¹ããããŠèªååãå®çŸãããŸã§ã®äœæ¥ã楜ããã§åãçµãŸããç¹ã§ããã æ¥åžžçæŽ»ãæ¹åããŠããæèŠã楜ããã§ãããã é¢åèããã§ããã£ããã¢ããããã- RE:Bot ããå§ãããã®ããçæŽ» - from MinoruIto3 www.slideshare.net 5. äžæ¥åäž»ã§ãå匷ããããïŒè±èç¶¿ãã è±èç¶¿ããã«ã¯ãããæ°ã«é Œããã«ãç¶ããããã®ååŒ·æ¹æ³ã®å®è·µäŸã3ã€æããŠããã ããŸããã å人çã«ãã£ãšæ°ã«ãªã£ãŠããã颚åçšã®é²æ°Žã«ããŒã玹ä»ããã ãã ç§ã賌å
¥ããŠæ¹¯èèªæžã«åãçµã¿ãããšæããŸããã èªæžå®¶ã®å€ã ã©ã¯ ã¹ã®ç€Ÿå¡ã§ããæ¬²ãããšæã£ãŠããã人ãããã¯ãâŠïŒ speakerdeck.com 6. èªå·±åŠç¿ãæ¯ãã Inoreader + NotionïŒLogyãã èšå€§ãªæ
å ±ãåéããŠåŠç¿ã«æŽ»çšããããã®ãããŒããLogyãããã玹ä»ããã ããŸããã åã«èããŠãã2ã€ã®ããŒã«ãçµã¿åãããŠãããç§ããã£ããã¢ããªãã€ã³ã¹ããŒã«ããŠã¿ãŸããã ãã©ããšæ ããŸããã¿ã°ããšãŠãç·»å¯ã§é©ããŸããâŠïŒ ååŸæŒãã®å°ãªã RSSãªãŒã㌠Inoreader biz-notion.northsand.co.jp ã¡ã¢ããããžã§ã¯ã管çãã¿ã¹ã¯ç®¡çã® All-in-One ããŒã« Notion www.notion.so speakerdeck.com 7. ãã¯ã俺ã®LTç»å£ã¯ãŸã¡ãã£ãŠãããïŒmoomooyaãã äž»å¬è
ã®moomooyaããã«ã¯ä»åã®ã€ãã³ããå«ããã¢ãŠããããé§ååŠç¿ãšLTäžæ¯ã«ã€ããŠç±ãèªã£ãŠããã ããŸããã å
šåœã®ç»å£è
ãåèµ·ããã¢ãŠããããã«åœ¹ç«ã€å
å®¹ã«æº¢ããŠããŸãã moomooyaããã«ã¯ä»åŸãé©åºŠãªããªã¥ãŒã ã®LTäŒãã©ãã©ããã©ã€ãããŠãã£ãŠããã ãããã§ãã speakerdeck.com ãããã« & 次åäºå ä»ãŸã§ã«ãªã Twitter ã«ã¯ã³ã¡ã³ããå€ããç§ãã¡ã楜ããåŠã°ããŠããã ããªããéå¶ãè¡ãããšãã§ããŸããã LTã«ãç»é²ããã ããŸããæ¹ã
ãè³ããããŠããã ããçæ§ããåå ããããšãããããŸããïŒ 3åç®ã®éå¬ãè¿ã
è¡ããããããããŸããã®ã§ãã©ãããæ¥œãã¿ã«ã ããŠã10æä»¥éã ã©ã¯ ã¹ã§ã¯ã€ãã³ãéå¬ãå éãããŠãããŸãïŒ ITãšã³ãžãã¢çã¯ãããŠã®çµéš ã1åã§èªãããæ¹ããæ©ãã«ãå¿åãã ããïŒ rakus.connpass.com ãã®ä»ã®ã€ãã³ããžã®ãåå ããåŸ
ã¡ããŠããŸãïŒ rakus.connpass.com
ããã«ã¡ã¯ãwest-cã§ãã æ¥åã«ãŠèŠä»¶å®çŸ©ãè¡ãæ©äŒãããããã®ææç©ã§ããèŠæ±ä»æ§æžã®æžãæ¹ãåŠã¶ããã«ã ãæ¹èšç¬¬ïŒçãå
¥éïŒå®è·µïŒœèŠæ±ã仿§åããæè¡ã»è¡šçŸããæè¡ ããšããæžç±ãèªã¿ãŸãããä»åã¯ãã®å
容ãã玹ä»ããŸãã ãæ¹èšç¬¬ïŒçãå
¥éïŒå®è·µïŒœèŠæ±ã仿§åããæè¡ã»è¡šçŸããæè¡ ïœä»æ§ãæžããŠããŸããïŒ äœè
: æž
æ°Ž åç· æè¡è©è«ç€Ÿ Amazon â é¢é£ããã° ä»æ§æž ãšã¯ ããŸãšãã ããããã®èªè
å±€ èŠæ±ä»æ§æžã®ç®çã»ãŽãŒã«ãææ§ãªæ¹ èªèº«ãäœæãã仿§æžã«ãããŠã仿§æŒãã仿§ã®è¡çªãåŸå·¥çšã§çºçããããšããã or çºçããªããäžå®ãæ±ããŠããæ¹ äŸé Œè
ããèŠæ±ãåŒãåºãæ¹æ³ã®ç³žå£ãæŽã¿ããæ¹ èŠæ±ä»æ§æžãšã¯ æžç±ã§ã¯ãèŠæ±ä»æ§æžãã èŠæ±ã«ã€ããŠãé¢ä¿è
ããã®å
容ã«ã€ããŠèªèãç¹å®ã§ããŠããæç« ããšå®çŸ©ããŠããŸãã èŠæ± ïŒä»åã®æ©èœã§å®çŸãããããšïŒã¯ææ§ãªãã®ãå«ãã§ãããããå
·äœçãªæ¯ãèããå¶éãšããŠ ä»æ§ åããããšãèŠæ±ä»æ§æžã®åœ¹å²ãšãªããŸãã èŠæ±ä»æ§ã«ãŸã€ããåé¡ å€ãã®çŸå Žã«ãããèŠæ±ä»æ§ã«ãŸã€ããåé¡ãšããŠä»¥äžãæããããŠããŸãã å€ãã®çŸå Žã§ã¯ãèšèšã®æ§åãèŠãããããªå
·äœçãªã¬ãã«ã®ä»æ§ã¯ãèšèšå·¥çšã®äžã§æãäžãããã®ãšèããããŠããã ãã®ãããªèãã§æžãããèŠæ±ä»æ§æžã¯èšèšãå®è£
ã®ã€ã¡ãŒãžã«ã¯ã€ãªããããèšèšå·¥çšãå®è£
å·¥çšã§å
·äœåãããªãã§ä»æ§ã®æŒããè¡çªã«æ°ã¥ãããšã«ãªãã ããã¯ç§ã«ãšã£ãŠã¯è³ã®çã話ã§ãã¯ãããŠä»æ§æžäœæãæ
åœããæ©èœã«ãããŠå
·äœçãªä»æ§ã«èœãšã蟌ããŠããªã仿§æžãäœæããå®è£
å·¥çšã«ãªã£ãŠããå®è£
æ
åœè
ãã質åãé »çºããããšããèŠãçµéšããããŸããã èŠæ±ä»æ§æžãšãããšäžæµå·¥çšã«äœçœ®ããããšãã现ãã仿§ã¯åŸå·¥çšã§æ±ºããå°è±¡ãæã¡ãã¡ã§ãããå°ãªããšã仿§ã®è¡çªãçºçããªãçšåºŠã«ã¯å
·äœåããå¿
èŠããããšæ¹ããŠæããŸããã 仿§åã®ãã¯ããã¯ èŠæ±ä»æ§æžã§ã¯ãäŸé Œè
ããåŒãåºããèŠæ±ã仿§ã«èœãšã蟌ãå¿
èŠããããŸã *1 ã 仿§ãžèœãšãèŸŒãæ¹æ³ã«ã€ããŠãæžç±ã§ã¯ä»¥äžã«åºã¥ãããã¯ããã¯ã玹ä»ãããŠããŸãã èŠæ±ãšããæ¯ãèãã®äžã«å«ãŸããŠããåãïŒïŒåè©ïŒããã¹ãŠè¡šçŸããŠããŸãã°ãããããã®åè©ããã³ç®çèªã«ã€ããŠå¿
èŠãªä»æ§ããããªãèšè¿°ã§ããã äŸãã°ã以äžã®ãããªèŠæ±ããã£ããšããŸãã å°å·éäžã§ãçšçŽããããŒã®äžè¶³ãåãã£ãæç¹ã§æ
åœè
ã«ã¡ãŒã«ã§ç¥ãããã ãã®æç« ã«ãããŠçŽæ¥èŠããŠããåè©ã¯ä»¥äžã®éãã§ãã äžè¶³ã"åãã" ã¡ãŒã«ã§"ç¥ããã" ãããããã®èŠæ±ã«å«ãŸããåè©ã¯ããã ãã§ã¯ãªããããèªããšä»¥äžã®åè©ãèŠããŠããŸãã çšçŽããããŒã®éã"ç¥ã" ã¡ãŒã«ã"çµã¿ç«ãŠã" æ
åœè
ã®ã¡ãŒã«ã¢ãã¬ã¹ã"èªã¿åºã" ãããã®åè©ãããšã«ä»æ§åãè¡ãããšããã®ãæžç±ã§ç޹ä»ãããŠãã仿§åã®ãã¯ããã¯ã§ããããããã®åè©ã«å¯ŸããŠä»æ§åãã¹ãå
容ãšããŠã¯ä»¥äžã®ãããªãã®ãããã§ãããã çšçŽããããŒã®éãç¥ã çšçŽã»ãããŒã®æ®éãã©ã®ããã«å
¥æããã äžè¶³ãåãã çšçŽã»ãããŒã®æ®éãã©ããããã§ããã°äžè¶³ãšå€æããã ã¡ãŒã«ãçµã¿ç«ãŠã ã¡ãã»ãŒãžã®æ§æãã©ãããã æ
åœè
ã®ã¡ãŒã«ã¢ãã¬ã¹ãèªã¿åºã ã¡ãŒã«ã¢ãã¬ã¹ãã©ãããèªã¿åºãã ã¡ãŒã«ã§ç¥ããã ã©ã®ããã«éç¥ããã åéæ¹æ³ãã©ãããã ãããèªããšèŠããŠããåè©ãã¯æ
£ããªããšæŽãåºããé£ãããã§ãããå人çã«ã¯ããã®èŠæ±ãå®çŸããããã®ããã»ã¹ãã€ã¡ãŒãžããã°ããã®ããã»ã¹äžã€ã²ãšã€ãåè©ãšå¯Ÿå¿ä»ãã®ã§ã¯ãšæããŸãããèšèšãå®è£
ã®ã€ã¡ãŒãžãæã¡ãªããèŠæ±ä»æ§æžã®äœæãè¡ãèãæ¹ã¯ãããã«çŽçµããã®ã ãšæããŸãã å®è·µããŠã¿ã æžç±ã«ã¯ãã®ä»ã«ãèŠæ±ä»æ§æžã®äœæã«é¢ãããã¯ããã¯ã玹ä»ãããŠãããçè
ãæšå¥šãããã©ãŒããããæç€ºãããŠããŸããããã§ãéå»ã«èªåãèŠä»¶å®çŸ©ãè¡ã£ãæ©èœã«ã€ããŠãæ¹ããŠæžç±ã®ææ³ãçšããŠä»æ§åãè¡ã£ãŠã¿ãŸããã ã¡ãªã¿ã«æžç±ã§ç޹ä»ãããŠããèŠæ±ä»æ§æžã®äœæææ³ã¯ USDM ãšããååãä»ããŠããããã§ãã調ã¹ããšè³æãèŠã€ãããŸãã®ã§ã詳ããç¥ãããæ¹ã¯æžç±ãšäœµããŠãã¡ããã©ããã äœæããèŠæ±ä»æ§æž æžç±ã§ç޹ä»ãããŠãããã©ãŒãããã«å³å¯ã«ã¯åŸã£ãŠããŸããããäžã€ã²ãšã€ã®èŠæ±ã仿§ã«ãã¬ãŒã¯ããŠã³ããæžãæ¹ã¯èžè¥²ããŠããŸãããŸããèŠæ±ã«è€æ°ã®åè©ãå«ãŸããå Žåã¯ãèŠæ±ãããäžæ®µéå±€åããŠåè©ãåè§£ããŠããŸãã å®è·µããææ³ ïŒè¯ããæªããïŒèããã¹ã³ãŒããçµã蟌ãã äžã€ã®åè©ïŒç®çèªã«çµã蟌ãŸããèŠæ±ã仿§ã«èœãšã蟌ãã§ãããããèããã¹ãã¹ã³ãŒããçµã£ãŠéäžçã«ä»æ§åã§ããããšã宿ããŸããããããŸã§ã®ç§ã¯æãã€ããŸãŸã«ä»æ§åããŠããŸããããå
šäœãã詳现ã«ãã¬ãŒã¯ããŠã³ããŠããããšã§ããç¶²çŸ
çã«ä»æ§ã®æŽãåºããã§ããŠããæèŠããããŸããã äžæ¹ãèããã¹ã³ãŒããçµããããšããããšã¯ããè¿èŠçŒçã«ãªãããšã§ããããŸãã仿§åãé²ããäžã§ããè€æ°ã®èŠæ±ã«ãŸããããããªä»æ§ãæŒããããšããäžå®ããããŸããã宿çã«èŠæ±ã¬ãã«ã«ç«ã¡è¿ã£ãŠå
šäœã俯ç°ãããªã©ãé³¥ã®ç®ã»è«ã®ç®ã®èŠç¹ã®åãæ¿ããèã«ãªããšæããŸããã èŠæ±ãšçç±ãã»ããã§èšè¿°ããã®ã¯å¹æãã æžç±ã§ã¯ãããªããã®èŠæ±ãå®çŸãããã®ãããšããäŸé Œè
ã®æããæããã«ãããããèŠæ±ã¯çç±ãšã»ããã§èšè¿°ãããã玹ä»ãããŠããŸãã å®éã«çç±ãæ·»ããŠèšè¿°ããããšã§ããããããã°ãã®èŠæ±ã¯ãªãå¿
èŠãªã®ã ããïŒããšåå¿ã«ç«ã¡è¿ããªããèããããšãã§ããŸãããèæ¯ãçç±ãææåããããšã§ãèŠæ±ãå®çŸããããã®ããããè§£ã«è³ãããšãã§ããã®ã§ã¯ãšæããŸããã ãŸãã仿§ã®çµç·¯ã蟿ããããã«ããæå³ã§ããèæ¯ãçç±ãããã¥ã¡ã³ãã«æ®ããŠããæçŸ©ã¯ãããšæããŸãã ããã㫠詊ãã«å®è·µããŠã¿ãããšã§ãæžç±ã®ãã¯ããã¯ã仿§æŒã鲿¢ã®äžå©ã«ãªããšæããŸããããã®ãã©ãŒãããããããªãæ¢åã®èŠæ±ä»æ§æžã«çœ®ãæããã®ã¯ããŒãã«ãé«ãããªããããŸãã¯æãæŒã鲿¢ã®ã¯ãã¹ãã§ãã¯çãªç«ã¡äœçœ®ã§éšåçã«åãå
¥ãããã§ãã ãŸãåœç¶ã§ã¯ãããŸããããããæŒããªã仿§åã§ãããšããŠããããããã®èŠæ±ã®èªèãäŸé Œè
ãšãºã¬ãŠããã®ã§ããã°å
ãåããããŸãããä»åŸã¯èŠæ±ã®åŒãåºãæ¹ã«ã€ããŠãæ·±ãåŠãã§ããããã§ãã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã forms.gle ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ rakus.connpass.com *1 : ãã®èšäºã§ã¯å²æããŠããŸãããæžç±å
ã«ã¯äŸé Œè
ããèŠæ±ã ãã¢ãª ã³ã°ããæ¹æ³ã玹ä»ãããŠããŸãã
ã¯ããã« ã¯ãããŸããŠãæ°å1幎ç®ã®yykaoruã§ãã ä»åã¯Dockerãå匷ããããšæããDockerã§ PHP ã®å®è¡ç°å¢ãæ§ç¯ããŠã¿ãã話ã§ãã åæ Dockerãdocker-composeãã€ã³ã¹ããŒã«ãããŠããããš ãã£ãŠã¿ãããšæŠèŠ ä»åè¡ãããšã¯ã php ã³ã³ããã«ããŒã«ã«ã¹ãã¬ãŒãžã®srcãããŠã³ãããnginxã³ã³ããããã¢ã¯ã»ã¹ããŠç¢ºèªããšããæµãã§ãã ãã¡ã€ã«æ§æãš ãœãŒã¹ã³ãŒã ãé çªã«èª¬æããæåŸã«å®è¡ããŠã¿ãããšæããŸãã ã¯ããã« åæ ãã£ãŠã¿ãããšæŠèŠ ãã¡ã€ã«æ§æ ãœãŒã¹ã³ãŒã docker-compose.yml default.conf Dockerfile php.ini index.php å®è¡ æåŸã« ãã¡ã€ã«æ§æ ä»åDockerã§ PHP ã®å®è¡ç°å¢ãäœæããäžã§ã®ãã¡ã€ã«æ§æã¯ä»¥äžã®éãã§ãã nginx Dockerã³ã³ããèµ·åæãnginxå
ã®èšå®ãã¡ã€ã«ã«æžãããŠããèšå®ã«äžæžãããŸãã ãªãDockerãã¡ã€ã«ããªããã¯åŸã«èšè¿°ããŸãã php PHP ã³ã³ããã建ãŠãããã«å¿
èŠãªDockerãã¡ã€ã«ãšã PHP ã³ã³ããã®äžã«é
眮ãã PHP ã®ç°å¢èšå®ãã¡ã€ã«ãšã㊠php .iniãäœæããŠãããŸãã src å®è¡ãã php ãã¡ã€ã«ãé
眮ããŠãããŸãã ãã®srcé
äžã®ãã¡ã€ã«ãnginxã§é
ä¿¡ãããŸãã docker-compose.yml ãã®ãã¡ã€ã«ã§nginxã php ã³ã³ããããŸãšããŠã€ã³ã¹ããŒã«ã§ããŸãããã³ã䟿å©ã â docker-compose.yml â âânginx â default.conf â ââphp â Dockerfile â php.ini â ââsrc index.php ãœãŒã¹ã³ãŒã ããã§ã¯ä»å䜿çšãããã¡ã€ã«ã® ãœãŒã¹ã³ãŒã ã玹ä»ããŠãããŸãã docker-compose.yml version: '3' services: nginx: image: nginx:stable-alpine ports: - "8080:80" volumes: - ./src:/var/www/html - ./nginx/default.conf:/etc/nginx/conf.d/default.conf php: build: ./php volumes: - ./src:/var/www/html docker-compose.ymlã«ã¯ãnginx, php ã³ã³ããã®ã€ã³ã¹ããŒã«å
å®¹ãæžãããŠããŸãã ããããã®ã³ãã³ãåãç°¡åã«èª¬æããŠãããŸãã version: composeãã¡ã€ã«ã®ãã©ãŒãããã®ããŒãžã§ã³ãæèšããŠããŸãã services: ã³ã³ããã®ã€ã³ã¹ããŒã«å
å®¹ãæžãããŸãã nginx: ãµãŒãã¹ãnginxãã®ã€ã³ã¹ããŒã«ã瀺ããŠããŸãã php : ãµãŒãã¹ã php ãã®ã€ã³ã¹ããŒã«å
容ã瀺ããŠããŸãã image: Dockerã§ã¯åŸè¿°ããDockerfileã§ã³ã³ããã®ã€ã¡ãŒãžåãæèšããŠã€ã³ã¹ããŒã«ããã®ãåºæ¬ã§ãããimageã§ã€ã³ã¹ããŒã«ã€ã¡ãŒãžãæå®ããããšãã§ããŸãã ä»åã¯nginxã³ã³ããã¯composeãã¡ã€ã«ã§ã€ã³ã¹ããŒã«ã php ã³ã³ããã¯Dockerfileã§ã€ã³ã¹ããŒã«ããŠããŸãã ports : ããã§ã¯ã³ã³ããåŽã®ããŒããšããŒã«ã«åŽã®ããŒããã€ãªã圹å²ãããŠããŸãã nginxã®å Žåã¯ã- "8080:80"ããšæžãããŠããŸãããããŒã«ã«åŽã®8080çªãã³ã³ããåŽã®80çªãšã€ãªããšããæå³ã衚ããŠããŸãã volumes: ããã§ã¯ããŒã«ã«åŽã® ãã£ã¬ã¯ã ãªå
容ãã³ã³ããã«ããŠã³ãããèšå®ãæžãããŠããŸãã ä»åã¯nginxé
äžã§ã- ./src:/var/www/htmlããšç€ºããŠããŸãããããã¯ããŒã«ã«åŽã®./srcãã³ã³ããåŽã®/var/www/htmlã«ããŠã³ããããšããæå³ã衚ããŠããŸãã build: äœæããDockerfileã®å Žæãæå®ããããšã§ãæå®ããDockerfileã®å
容ã«åŸã£ãŠã³ã³ãããã€ã³ã¹ããŒã«ãããŸãã â»ä»¥åãŸã§ã¯ links: ãšãããã®ãæžããŠã³ã³ããéã®ãããã¯ãŒã¯ã«åå ãããå¿
èŠããã£ãã®ã§ãããçŸåšã¯æžããªããŠãããã©ã«ãã§ network: ãšãããã®ãåãæ§ã«ãªã£ãããã§ãããã«ããåã³ã³ããã¯ãã®ãããã¯ãŒã¯ã«åå ããç¶æ
ã«ãªããšããããšã®ããã§ãã default.conf server { listen 80; root /var/www/html; index index.php index.html; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } default.confã«ã¯nginxã®èšå®å
容ãèšè¿°ããŸãã ããããã£ãŠããŸãç¹ãšããŠã¯ã fastcgi _passãã®èšå®ã§ãã ããã©ã«ãã® fastcgi _pass㯠127.0.0.1 :9000ãæå®ããŠãããããã¯nginxã³ã³ããã® localhost ãæå®ããŠããŸãããã«502ãšã©ãŒãè¿ããŠããŸããŸããïŒBadGatewayïŒ ãã®ãšã©ãŒã解決ããããã«ã¯ php ã³ã³ãããæå®ããå¿
èŠããããã fastcgi _pass php :9000;ããšæèšããããšã§ãµãŒãã¹åïŒ php ïŒã§ php ã³ã³ãããæå®ããããšãã§ããŸãã Dockerfile FROM php:fpm COPY php.ini /usr/local/etc/php/ Dockerfileã§ã¯ php ã®ã³ã³ããã€ã¡ãŒãžã®ã€ã³ã¹ããŒã«ã php èšå®ãã¡ã€ã«ã®äžæžããè¡ã£ãŠããŸãã FROM php :fpmãšæå®ããããšã§Dockerå
¬åŒãæäŸããŠãã PHPã€ã¡ãŒãž ãã€ã³ã¹ããŒã«ããŸãã COPY ããŒã«ã«ã«ãã php .iniãã€ã³ã¹ããŒã«ãã php .iniã«ã³ããŒãäžæžãããŸãã php .ini [Date] date.timezone = "Asia/Tokyo" [mbstring] mbstring.internal_encoding = "UTF-8" mbstring.language = "Japanese" php .iniã«ã¯ php å®è¡ç°å¢ã®èšå®ãèšè¿°ããŸãã å¿
èŠã«å¿ããŠèšå®ã远å ããŸãã index. php <?php echo "Hello World!"; phpinfo(); ããã§ã¯ php ã¹ã¯ãªãã ãæžããŠããŸãã å
容ã¯ã奜ã¿ã§ã©ããïŒ å®è¡ 以äžã®ãã¡ã€ã«ãçšæã§ããããDockerãDocker-composeãã€ã³ã¹ããŒã«ãããŠããç°å¢ã§ä»¥äžã®ã³ãã³ããå
¥åããŸãã docker-compose build ã³ãã³ãå
¥ååŸãdockerã³ã³ããã®ãã«ããèµ°ããŸãã ãã«ããæ£åžžã«çµäºããããšã確èªã§ãããã以äžã®ã³ãã³ãã§ã³ã³ãããç«ã¡äžããŸãã docker-compose up ã³ã³ãããç«ã¡äžãã£ãåŸã« localhost:8080 ã«ã¢ã¯ã»ã¹ãããšä»¥äžã®ãããªç»é¢ã衚瀺ãããŸãã ããã§ php ã®å®è¡ç°å¢ã¯å®æã§ãïŒ åŸã¯ãsrcå
ã§ php ãã¡ã€ã«ã倿ŽãããããŠã¿ãŸãããïŒ æåŸã« ä»åã¯Dockerãå©çšã㊠PHP ã®å®è¡ç°å¢ãæ§ç¯ããŠã¿ãŸããã ä»åã¯å¿
èŠæå°éã®æ§æãªã®ã§ã次åèšäºãæžãæ©äŒã«ã¯ PHP ã® ãã¬ãŒã ã¯ãŒã¯ ã§ããLaraveléçºç°å¢ãDockerãå©çšããŠæ§ç¯ããã話ãããããšæããŸãã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã 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 ã§ãã2020幎8æ27æ¥ã«éå¬ããã Developers Summit 2020 KANSAIã«ç»å£ãããŠããã ããŸãããä»åã¯ãã®ã¬ããŒãèšäºã§ãã ã»ãã·ã§ã³ã®æ§å Developers Summit 2020 KANSAI ã«ã€ã㊠ã Developers Summit ãéç§°ã ãããµã ãã¯ ç¿æ³³ç€Ÿ ããäž»å¬ã® ITæè¡ è
åãã€ãã³ãã§ããè¿å¹Žã¯æ±äº¬ã§å€ãšå¬ããããŠé¢è¥¿ãšçŠå²¡ã§å¹Ž1åéå¬ãããŠããŸããä»åã¯é¢è¥¿ã§éå¬ãããŠèšå¿µãã¹ã10åšå¹Žãšãªã£ãã€ãã³ãã ãããµã é¢è¥¿ãã§ç»å£ã®æ©äŒãé ããŸããã event.shoeisha.jp ä»åã®ããŒãã¯ãThe Future Has Comeããšããããšã§ãå°ãå
ã®æªæ¥ã®ãå€åãã®å°æ¥ã«é¢ãããã£ã¬ã³ãžãã·ã§ã¢ããããšããæãã蟌ããããããŒãã§ãããç§ã倧éªãªãã£ã¹ã§9幎éå€åããŠæ§ã
ãªå€åã«ãã£ã¬ã³ãžããŠããŸããã貎éãªæ©äŒãé ããã®ã§ã9幎éã®åãçµã¿ãå¯èœãªéãçã蟌ãã§çºè¡šãããŠé ããŸããã é¢è¥¿çãªããªã§å€åã®æ³¢ãããªããªãããŒã ã®åãçµã¿ speakerdeck.com ããŒã ã§ã®å€åãžã®ãã£ã¬ã³ãžã®ãããŸã§ã®çµéšãæ¯ãè¿ã£ãŠã¿ãŠã倧åãªèŠçŽ ã®ã²ãšã€ã倧éªã®ããŒã ãªãã§ã¯ã®ãé¢è¥¿çãªããªããªã®ã§ã¯ãªããïŒãšèããããšãä»åã®ããŒãã®ãã£ããã§ãããã¡ãããé¢è¥¿ã®ããªããªããã°å€åã«é©å¿ã§ããªããšããæå³ã§ã¯ãããŸããããé¢è¥¿ã®ããªã®äžã«å€åã«é©å¿ããŠãããã³ããããã®ã§ã¯ãªããïŒãããéå»ã®çµéšãæ¯ãè¿ã£ãŠãã®ãã³ããæŽçããŠã¿ããïŒããšããæããã ãããµã é¢è¥¿ã«åããããã§ã®ç§èªèº«ã®ãã£ã¬ã³ãžã§ããã åºæ¬çã«äžç¢ºå®ãªå€åã®æ³¢ãä¹ãããªãã®ã¯é£ãã ããããå€åã®æ³¢ãä¹ãããªãã®ã¯ç°¡åã§ã¯ãããŸããã倧éªã§ã¯2018幎㫠å°é ã豪éšãå°é¢šãšã1ã¶æããã«çœå®³ãçºçããŠãåºå€ã§ããªããªã©ã§ä»äºã®äºå®ã調æŽããããåŸãªãçµéšãããŸãããç§èªèº«ã å°é ãçºçããæ¥ã¯åœææ
åœããŠãããµãŒãã¹ã®ãªãªãŒã¹åœæ¥ã§ãããŸããŸåºå€ã§ããã¡ã³ããŒãšãªã¢ãŒãã§ããåãããªãã察å¿ããçµéšããããŸãã 2018幎ã®é¢è¥¿ äžç¢ºå®ãªæ³¢ãä¹ãããªãããã«ãäžã®äžã«æº¢ããŠãã ã¢ãžã£ã€ã« ã®ææ³ããããžã¡ã³ãã®äºäŸãåãå
¥ããããšããŸãããããããªããªãããŸããããŸãããå€åã®æ³¢ãä¹ãããªãã€ããããæ°ã¥ãããæ
å ±ã®æ³¢ã®ä¹ãããªãããšããŠããŸããæº¢ããæ
å ±ã®ããè€éãªæžŠã«é£²ã¿èŸŒãŸããŠããŸãããšããããŸãã æ
å ±ã®æ³¢ã¯è€éæ§ã®æžŠãåŒã³èŸŒã ããªã§å€åã®æ³¢ãããªããªã äžç¢ºå®ãªæ³¢ã«æãããå°é£ãªç¶æ³ã«åãåã£ãŠèµ·ããããšã«å¯ŸåŠããããã«ã¯ããç¶æ³ã®æŽå¯ããšãããžãã£ããªå§¿å¢ãã倧åã ãšèããŸããããããããä»åã®ããŒãã§ãããããªãã§ãã ããªã¯ãç¶æ³ã®æŽå¯ããšãããžãã£ããªå§¿å¢ã å€åã®æ³¢ãããªããªã3ã€ã®ã¹ããã ããªã§å€åã®æ³¢ãä¹ãããªãç¶ããã«ã¯ã3ã€ã®ã¹ãããã§ããªãåºããŠããããšã倧åã§ãããã®3ã€ã®ã¹ãããããããŸã§çµéšããŠããäºäŸã亀ããªããã玹ä»ããŸããã å€åã®æ³¢ãããŒã ã§ããªããªã3ã€ã®ã¹ããã èªåãããã®ãªãŒããŒã·ãã ãŸãæåã®ã¹ãããããããŒã ã§åãåå°ãšããŠäžäººã²ãšããèªåãããã®ãªãŒããŒã·ãããæã€ããšã§ããããã¯è¿å¹Žã®ãªãŒããŒã·ããè«ã§ããªãŒã»ã³ãã£ãã¯ã»ãªãŒããŒã·ããããšåŒã°ããŠããŸãã ãªãŒã»ã³ãã£ãã¯ã»ãªãŒããŒã·ãã ããŒã ã®äžã§äºãã«èªåããããæã¡ã€ã€ãä»è
ãçè§£ãããåãçµã¿ã®äºäŸãšããŠã以åãã®ããã°ã«ãæçš¿ãããªã¢ãŒãã¯ãŒã¯æã®åãçµã¿ããèªå·±é瀺ãšå®å¿ã»å®å
šãªä»çµã¿ã«èº«ãé ããããšãã2ã€ã®ãã€ã³ãã§ã玹ä»ããŸããã tech-blog.rakus.co.jp èªå·±é瀺ãšå®å¿ã»å®å
šãªä»çµã¿ã«èº«ãé ããåãçµã¿ ããŒã ã§çµéšããåŠã¶ 2ã€ç®ã®ã¹ãããã®ãããŒã ã§çµéšããåŠã¶ãã«ã€ããŠã¯ã ã¢ãžã£ã€ã« ã®ååãã ã«ã€ãŒã³ æåããããããå§¿ãã®3ã€ã軞ã«ããããšãã話ããŸããã çµéšããåŠã¶ããŒã ã®ã¢ãã« ãã㯠Scrum Fest Osaka 2020ã§çºè¡šãããŠããã ããå
容 ãåŒçšããŠããŸãããä»åã¯å€§éªã®ããŒã ã§éå»ã«çµéšããéçºãããžã§ã¯ããäžéãæ¯ãè¿ã£ãŠã話ããŸããã 倧éªã®ããŒã ã§çµéšããéçºãããžã§ã¯ã éå»ã®éçºãããžã§ã¯ãã®åçç¹ãçªãè©°ããã° ã¢ãžã£ã€ã« ã®ååã«åããããšã¯èªãã€ã€ããäºæž¬ã§ããªãæ§ã
ãªå€åã®æ³¢ãä¹ãããªããŠããããã«ã¯ ã¢ãžã£ã€ã« ã®ææ³ã ãã«ãšãããããããŒã ãçµéšããåŠã¶æ¹åã«åããããšãå€åãä¹ãããªãããšã«ã€ãªãããšèããŠããŸãã ã€ãã¬ãŒãã£ããªããã»ã¹ãç¹°ãè¿ããŠçµéšããåŠã¶ æ ãè¶
ããŠã€ãªãã 3ã€ç®ã®ã¹ãããã®ãæ ãè¶
ããŠã€ãªãããã§ã¯ãå°ããå§ãã瀟å
å匷äŒãçµç¹ãäŒç€Ÿå
šäœãå·»ã蟌ãã ã€ãã³ããžãšçºå±ããäºäŸãã玹ä»ããŸããã å匷äŒã€ãã³ãäž»å¬ã®æ§å å€åã®æ³¢ã®äžã§èªåãã¡ãå€åããŠããããã«ãå°ããã€æ ã®å€ã«åãã£ãŠããããšãå€åã®æ³¢ãä¹ãããªãããšã«ã€ãªãããšããå
容ã§ãã æ ãè¶
ããŠã€ãªããããªã®å€§åã æ ãè¶
ããããšãã«ã£ãŠãã€ãªãã£ã人ãã¡å士ã§ç¶ç¶çãªçžäºã¢ããããŒããçã¿åºãããšãã§ããŸããã æ ãè¶
ããã€ãªããã«ãã£ãŠåŸãããã㚠以äžã®3ã€ã®ã¹ããããå€åŽã«åããŠåºããããšãæ§ã
ãªå€åã®æ³¢ãä¹ãããªãããšã«ã€ãªãããšç§ã¯èããŠããŸãã å€åŽã«åããŠã¹ããããåºãã é¢è¥¿äººã¯ããªããªãã®ãåŸæïŒ çªç¶ã®ãªã¢ãŒãã¯ãŒã¯ãžã®ç§»è¡ã®äžã§ã倧å€ã ãã©ãããã¯ããã§ãªã¢ãããããšèšã£ãã¡ã³ããŒãããŸããããã®ããªã¢ãããããå€åã®æ³¢ãä¹ãããªããããªãã®ãã³ãã ãšç§ã¯èããŸããã 倧å€ã ãã©ããªã¢ãããã ããªã¢ããããã¯ãéå»ã«ãã£ãããšãç¡ããã©ããããããã䟡å€ãããããã§ããžãã£ããªããšã§ããã€ãŸããããªã¢ããããã«ã¯ãç¶æ³ã®æŽå¯ããšãããžãã£ããªå§¿å¢ãã®ããªã§å¯ŸåŠããããã®èŠçŽ ãå«ãŸããŠããŸãã ããªã¢ãããããšã¯ ãããŠãé¢è¥¿äººã¯çªç¶æã人ãåéãåãã«æ¥ãŠãããªã§å¯ŸåŠããååãã©ããªç¡çé£é¡ã§ãããªã§èª¿æ»ã»å ±åããæ¢åµçªçµãªã©ãæ®æ®µããããªã§ããªããªãæåã®äžã§çããŠããŸãã æååã®ã€ã¡ãŒãž é¢è¥¿äººãããããªã¢ãããããåŒãå¯ããŠå€åŽãžã¹ããããé²ããŠããããšããå€åã®æ³¢ãããªããªãããšã«ã€ãªããã®ã§ã¯ãªãããšç§ã¯èããŠããŸãã ããªã¢ããããåŒãå¯ããŠå€åã®æ³¢ãããªããªã ãããµã ãå€åã®æ³¢ãä¹ãããªã ä»åã¯ãªã³ã©ã€ã³éå¬ãšããããšã§ããããã»ãã·ã§ã³å
容ã¯ãªã¢ã«ã¿ã€ã é
ä¿¡ã§ã¯ãªãäºåæ®åœ±æ¹åŒã§ããããã¬ãæ®åœ±ã®ããã«ã«ã¡ã©ãåããããŠãã€ã¯ã§é³å£°ãæŸã£ãŠããããªããè¡ãã»ãã·ã§ã³ã¯åããŠã§ããšãŠã貎éãªçµéšããããŠé ããŸããã ãããµã èªäœãæ°ããªå€åã«åããŠãã£ã¬ã³ãžããŠããããšãæ¹ããŠå®æã§ããäœéšã§ããã ã»ãã·ã§ã³æ®åœ±ã®æ§å æ ãè¶
ããŠã€ãªãããã ä»åã®çºè¡šããã£ããã«ããããŸã§ä»¥äžã«ããããã®æ¹ã
ãšæ ãè¶
ããŠã€ãªããããšãã§ããã°ãšæã£ãŠããŸããä»æãæ§ã
ãªã€ãã³ããèšç»ãããŠããŸãã®ã§ãèå³ãæãããŸããããã²ãåå ãã ããã rakus.connpass.com
ã¯ããã« ããã«ã¡ã¯ãkkystã§ãã éçºãæ
åœããŠãããããã¯ãã§ã¯pg_bigmãå©çšã㊠å
šææ€çŽ¢ æ©èœãæäŸããŠããŸãã ä»åããã® å
šææ€çŽ¢ ãè¡ã£ãŠããããŒãã«ã«INSERTãè¡ãäžéšã®åŠçã§ã å¿çæé ãå¢ããŠããããšãæ€ç¥ããŸããã ããã§ãã®åå ã調æ»ããŠãã£ããšãããGINã€ã³ããã¯ã¹ã®GINé«éæŽæ°ææ³ã«ãã©ãçããåŸ
æ©ãªã¹ãã®æç¡ã«ãã å¿çæé ã®æ€èšŒãè¡ããŸããã ãã®çµæãšããŠãGINé«éæŽæ°ææ³ã®æå¹æ§ã確èªããããšãã§ããã®ã§ãæ€èšŒã®èšé²ãæ®ããŠãããããšæããŸãã ã¯ããã« æŠèŠ GINé«éæŽæ°ææ³ãšã¯ æ€èšŒç°å¢ æ€èšŒå
容 æ€èšŒçµæ ãããã« æŠèŠ GINé«éæŽæ°ææ³ãšã¯ GINã€ã³ããã¯ã¹ã¯ å
šææ€çŽ¢ åãã®ã€ã³ããã¯ã¹ã§ææžäžã®åèªã®äœçœ®ãä¿æããŠããããã䜿çšããããšã§ç¹å®ã®åèªã®æ€çŽ¢ãå¹ççã«è¡ããããã«ãªããŸãã åºæ¬çã«ã¯è±æïŒè±åèªïŒãæèãããã®ãšãªã£ãŠããŸãããpg_bigmãªã©ã®ã¢ãžã¥ãŒã«ãå°å
¥ããããšã§æ¥æ¬èªã§ãå©çšã§ããŸãã GINã€ã³ããã¯ã¹ã®é«éæŽæ°ææ³ã«ã€ããŠã¯ã PostgreSQL ã® ãªãã¡ã¬ã³ã¹ ã«ã¯äžèšã®ããã«èšèŒãããŠããŸãã 1ã€ã®ããŒãè¡ã®æ¿å
¥ãŸãã¯æŽæ°ã«ããã€ã³ããã¯ã¹ãžã®æ¿å
¥ãå€ãçºçãããšããã 転眮ã€ã³ããã¯ã¹ ã®æ¬è³ªçãªæ§è³ªã®ããGINã€ã³ããã¯ã¹ã®æŽæ°ã¯äœéã«ãªããã¡ã§ãã ïŒåããŒçšã®ããŒãè¡ã¯ã€ã³ããã¯ã¹ä»ããããé
ç®ããåãåºãããŸããïŒ PostgreSQL 8.4ããGINã¯ãæ°ããã¿ãã«ãäžæçãªãœãŒããããŠããªããåŸ
æ©äžã®é
ç®ãªã¹ãã«æ¿å
¥ããããšã«ããããã®äœæ¥ã®å€§éšåãé
å»¶ãããããšãã§ããããã«ãªããŸããã ïŒäžç¥ïŒ ãã®ææ³ã®å€§ããªæ¬ ç¹ã¯ãæ€çŽ¢æã«éåžžã®ã€ã³ããã¯ã¹æ€çŽ¢ã«å ãåŸ
æ©äžã®é
ç®ãªã¹ãã®ã¹ãã£ã³ãè¡ããªããã°ãªããªãç¹ã§ãã ãã®ãããåŸ
æ©äžã®é
ç®ãªã¹ãã倧ãããªããšæ€çŽ¢ãé¡èã«é
ããªããŸãã ä»ã®æ¬ ç¹ã¯ãã»ãšãã©ã®æŽæ°ã¯é«éã§ãããåŸ
æ©äžã®é
ç®ãªã¹ããã倧ãããªããããããã£ãããšãªã£ãæŽæ°ã¯å³æã®æŽçåŠçãæãããšã«ãªããä»ã®æŽæ°ã«æ¯ã¹å€§ããäœéã«ãªããŸãã èªåããã¥ãŒã ãé©åã«äœ¿çšããããšã§ããããã®äž¡æ¹ã®åé¡ãæå°åããããšãã§ããŸãã ãæŽçåŠçãè¡ãæŽæ°åŠçã倧ããäœéãšãªãããšããéšåãå®éã«ã©ããããäœéãšãªãã®ïŒãšããçåãæµ®ãã ã®ã§ããã®éšåã«çç®ããŠå®éã®åŠçæéãèšæž¬ããããšã«ããŸããã æ€èšŒç°å¢ ããŒã«ã«ç°å¢ïŒWindows10 Intel (R) Core(TM) i7-8550 CPU @1.8GHz RAM:16GB SSD 512GB Docker for Windows version 2.3.0.3 PostgreSQLã®å
¬åŒDockerã€ã¡ãŒãžïŒv12.4ïŒ ããŒãã«æ§é create table sample_table(id integer, note text); create index sample_table_ix1 on sample_table using gin (note gin_bigm_ops); â»åŸ
æ©ãªã¹ããå©çšããªãå Žåã¯ãWITH (FASTUPDATE = OFF)ãä»äžããŠã€ã³ããã¯ã¹åäœæã宿œã æ€èšŒå
容 以äžã®ç¶æ
ã§ASCIIã³ãŒãã®ã©ã³ãã 1000ãã€ãã®æååããŒã¿ã1ä»¶æ¿å
¥ããåŠçæéãèšæž¬ããã åæããŒã¿ãªã åŸ
æ©ãªã¹ãããïŒç©ºïŒ åŸ
æ©ãªã¹ãããïŒæå€§âgin_pending_list_limitïŒ4MBïŒïŒ1000ãã€ã * 170ä»¶ïŒ åŸ
æ©ãªã¹ããå©çšããªã åæããŒã¿100äžä»¶ïŒåè¡1000ãã€ãïŒ åŸ
æ©ãªã¹ãããïŒç©ºïŒ åŸ
æ©ãªã¹ãããïŒæå€§âgin_pending_list_limitïŒ4MBïŒïŒ1000ãã€ã * 170ä»¶ïŒ åŸ
æ©ãªã¹ããå©çšããªã æ€èšŒçµæ åŸ
æ©ãªã¹ãïŒç©ºïŒ åŸ
æ©ãªã¹ãïŒæå€§ïŒ åŸ
æ©ãªã¹ããªã åæããŒã¿ãªã 89.034ms 97.462ms 83.937ms åæããŒã¿ãã 70.088ms 863.200ms 827.526ms ãã®çµæãããã€ã³ããã¯ã¹ãžã®æŽçåŠçãã®ãã®ã«æéãããããæŽçãã察象ã®ããŒã¿ä»¶æ°ã«ããå·®ã¯ã»ãšãã©ãããŸããã§ããã ãŸããä»åçšæãããã¿ãŒã³ã§ããã°ããã®æŽçåŠçèªäœã1ç§ãåã£ãŠããã®ã§ãä»ã®åŠçãšã®å
ŒãåãããããŸãããªã³ã©ã€ã³ã§å©çšããŠã蚱容ã§ããé床ã§ããããšãããããŸããã ãã®ããšããã倧åã®æŽæ°åŠçãé«éã«ãªãGINé«éæŽæ°ææ³ã¯éåžžã«æå¹ã§ãããç¹å¥ãªèŠä»¶ããªãéãã¯æå¹ã«ããŠããã¹ããã®ã ãšããããšãããããŸããã æ€èšŒçµæã®è©³çްãå±é 1.1. åæããŒã¿ãªã-åŸ
æ©ãªã¹ãããïŒç©ºïŒ dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 4294967295 | 4294967295 | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 2 dev=# INSERT INTO sample_table SELECT 1000000, STRING_AGG(str, '') FROM ( SELECT chr(40 + (RANDOM() * 1000)::INT % 84 ) AS str FROM GENERATE_SERIES(1, 1000) length) t; INSERT 0 1 æé: 89.034 ããªç§ dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 2 | 4 | 5680 | 3 | 1 | 2 | 1 | 0 | 0 | 2 1.2. åæããŒã¿ãªã-åŸ
æ©ãªã¹ãããïŒæå€§ïŒ dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 347 | 4 | 5660 | 177 | 59 | 2 | 1 | 0 | 0 | 2 dev=# INSERT INTO sample_table SELECT 1000000, STRING_AGG(str, '') FROM ( SELECT chr(40 + (RANDOM() * 1000)::INT % 84 ) AS str FROM GENERATE_SERIES(1, 1000) length) t; INSERT 0 1 æé: 97.462 ããªç§ dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 2 | 4 | 5660 | 3 | 1 | 2 | 1 | 0 | 0 | 2 1.3. åæããŒã¿ãªã-åŸ
æ©ãªã¹ããå©çšããªã dev=# create index sample_table_ix1 on sample_table using gin (note gin_bigm_ops) WITH (FASTUPDATE = OFF); CREATE INDEX æé: 43.528 ããªç§ dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 4294967295 | 4294967295 | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 2 dev=# INSERT INTO sample_table SELECT 1000000, STRING_AGG(str, '') FROM ( SELECT chr(40 + (RANDOM() * 1000)::INT % 84 ) AS str FROM GENERATE_SERIES(1, 1000) length) t; INSERT 0 1 æé: 83.937 ããªç§ dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 4294967295 | 4294967295 | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 2 2.1. åæããŒã¿ãã-åŸ
æ©ãªã¹ãããïŒç©ºïŒ dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 4294967295 | 4294967295 | 0 | 0 | 0 | 212649 | 2764 | 209881 | 7224 | 2 dev=# INSERT INTO sample_table SELECT 1000001, STRING_AGG(str, '') FROM ( SELECT chr(40 + (RANDOM() * 1000)::INT % 84 ) AS str FROM GENERATE_SERIES(1, 1000) length) t; INSERT 0 1 æé: 70.088 ããªç§ dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 212646 | 212648 | 5740 | 3 | 1 | 212649 | 2764 | 209881 | 7224 | 2 2.2. åæããŒã¿ãã-åŸ
æ©ãªã¹ãããïŒæå€§ïŒ dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 212646 | 213158 | 5940 | 513 | 171 | 212649 | 2764 | 209881 | 7224 | 2 dev=# INSERT INTO sample_table SELECT 1000001, STRING_AGG(str, '') FROM ( SELECT chr(40 + (RANDOM() * 1000)::INT % 84 ) AS str FROM GENERATE_SERIES(1, 1000) length) t; INSERT 0 1 æé: 863.200 ããªç§ dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 4294967295 | 4294967295 | 0 | 0 | 0 | 212649 | 2764 | 209881 | 7224 | 2 2.3. åæããŒã¿ãã-ãå©çšããªã dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 4294967295 | 4294967295 | 0 | 0 | 0 | 212649 | 2764 | 209881 | 7224 | 2 (1 è¡) æé: 63.233 ããªç§ dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 4294967295 | 4294967295 | 0 | 0 | 0 | 212651 | 2764 | 209886 | 772968 | 2 dev=# INSERT INTO sample_table SELECT 1000001, STRING_AGG(str, '') FROM ( SELECT chr(40 + (RANDOM() * 1000)::INT % 84 ) AS str FROM GENERATE_SERIES(1, 1000) length) t; INSERT 0 1 æé: 827.526 ããªç§ dev=# SELECT * FROM gin_metapage_info(get_raw_page('sample_table_ix1', 0)); pending_head | pending_tail | tail_free_size | n_pending_pages | n_pending_tuples | n_total_pages | n_entry_pages | n_data_pages | n_entries | version --------------+--------------+----------------+-----------------+------------------+---------------+---------------+--------------+-----------+--------- 4294967295 | 4294967295 | 0 | 0 | 0 | 212651 | 2764 | 209886 | 772968 | 2 ãããã« ä»åã¯ãGINé«éæŽæ°ææ³ã®åŸ
æ©ãªã¹ãã®æŽçåŠçã«ããäœéåã«çç®ããŠæ€èšŒããGINé«éæŽæ°ææ³ã®æå¹æ§ã宿ããããšãã§ããŸããã æéã®éœåãããçŸæç¹ã«ãããæ€èšŒã¯ãããŸã§ã§ãããgin_pending_list_limitãªã©ã®é©åãªèšå®å€ãããŒã¿éãåããšã®é¢é£ãªã©ããããããªã®ã§ãä»åŸããã®GINé«éæŽæ°ææ³ã«ã€ããŠå¥ãªåãå£ã§æ€èšŒããŠãããããšæããŸãã
ã¯ããã« ã¯ãããŸããŠãæ°åäžå¹Žç®ã®YoshidaMichaelã§ãã ç ä¿®ã§Gitã®äœ¿ãæ¹ãåŠã³ããå®¶ã§äœã£ãŠã Bot ãGitã§ç®¡çãã¡ããããŒïŒããªããŠææ°èŸŒãã§ããããã§ããã ãã£ãã ããŒã¯ ã³ãèŒã£ãç¶æ
ã®ã³ãŒããpushããŠããŸã£ãŠå€§å€ãªããšã«ãªãããã§ããã ä»åã¯ããã GitHub ã«å©ããŠããã ããããããªã話ã§ãã ã¯ããã« ã·ãŒã¯ã¬ããã¹ãã£ãã³ã° ææºãµãŒãã¹ æ ¹æ¬å¯ŸåŠ æ¹æ³1: å¥ã®ãã¡ã€ã«ã«èšè¿°ããŠãããèªã¿åã æ¹æ³2: ç°å¢å€æ°ã«èšè¿°ãã ãŸãšã ã·ãŒã¯ã¬ããã¹ãã£ãã³ã° シークレットスキャンニングについて - GitHub Docs GitHub 㯠ãªããžã㪠ãã¹ãã£ã³ããŠæ¢ç¥ã®ã·ãŒã¯ã¬ããã®ã¿ã€ããæ¢ãã誀ã£ãŠã³ããããããã·ãŒã¯ã¬ããã®äžæ£äœ¿çšã鲿¢ããŸã ãªããš GitHub ã§ã¯pushãããéã«èªåã§ ããŒã¯ ã³ (ããã§ã¯ã·ãŒã¯ã¬ãããšè¡šçŸãããŠããŸã) ãå«ãŸããŠããªãã 確èªããŠããããã§ããã ã©ãããç§ã®ãããªãã£ãããã¹ããã人ã¯å€ããããã ããŒã¯ ã³ã¹ãã£ãã³ã°ãå°å
¥ããŠããçºèŠããã ããŒã¯ ã³ æµåºã¯1幎éã§10åä»¶ã«ãã®ãŒãããã§ãã ãã®æ©èœãå°å
¥ãããŠãªãã£ããšæããšæããã話ã§ãã......ã ææºãµãŒãã¹ å®ã¯ ããŒã¯ ã³ãæµåºããåœåãç§ã¯ã·ãŒã¯ã¬ããã¹ãã£ãã³ã°ã GitHub ã®æ©èœã§ããããšãç¥ããŸããã§ããã ãšããã®ããç§ã GitHub ãžpushããéã«åããèŠåã¯ä»¥äžã®ãããªãã®ã ã£ãã®ã§ãã ããŒã¯ ã³æµåºæã«åãåã£ãã¡ãã»ãŒãž ãããèŠãŠããããŒãDiscordã£ãŠ GitHub ã®æçš¿ãŸã§èŠãŠããã ïŒãããïŒããªããŠæã£ãããã§ããã調ã¹ãŠã¿ããš GitHub ã調æ»ã㊠ããŒã¯ ã³ãçºèŠãææºããŠãããµãŒãã¹ãšæ
å ±ãå
±æããŠããããã§ãã çŸåš GitHub ã¯32ã®ãµãŒãã¹ãããã€ããšææºããŠããããããã®ãµãŒãã¹ã§ããã°äžäž ããŒã¯ ã³ãæµåºããŠã倧æšäºã«ãªãããšã¯é²ãããã§ãã æ ¹æ¬å¯ŸåŠ ä»åã¯ã·ãŒã¯ã¬ããã¹ãã£ãã³ã°ãåªç§ã ã£ããããã§ ããŒã¯ ã³ãçºèŠããŠããããããããŸDiscordã« ããŒã¯ ã³ã ãªã»ããããŠããããããã§ããããã€ãçºèŠããŠãããããã¯æ£çŽããããªããšããã§ãã ãŸãããããã GitHub ãšææºããŠããªããµãŒãã¹ã® ããŒã¯ ã³ã§ããã°æ€åºãããããã®ãŸãŸå€éšãžæµåºããŠããŸãããšãããã§ãããã ããã§ããã§ã¯ããããã ããŒã¯ ã³ãæµåºãããªã工倫ã£ãŠãªãã®ïŒããšããæ¹æ³ã調ã¹ãŠã¿ãŸããã®ã§ç޹ä»ããããš æããŸãã æ¹æ³1 : å¥ã®ãã¡ã€ã«ã«èšè¿°ããŠãããèªã¿åã Bot ãåããç°å¢ã« ããŒã¯ ã³ã®èšè¿°ããããã¡ã€ã«ãçšæããŠãããèªã¿åãæ¹æ³ã§ãã ãã¡ã€ã«ã¯ GitHub ã«ã¯pushããã Bot ãåããç°å¢ã ãã§ç®¡çããããã«ããŸãã ãã®æ¹æ³ã¯å¥ã®ç°å¢ã§ Bot ãåããããå Žåå
šãã¡ã€ã«ãåããã ãã§è¯ãã®ã§æ¥œãªåé¢ããã®ãã¡ã€ã«ããã£ãã GitHub ãªã©ã«ã¢ããããªãããšã¯æ°ãã€ããªããã°ãªããŸããã æ¹æ³2: ç°å¢å€æ° ã«èšè¿°ãã ã©ãããã¡ãžã£ãŒãªæ¹æ³ã¯ãã¡ãã®ããã§ãã ç°å¢å€æ° èªäœã¯ Windows ã§ããã°ã©ãã³ã°ãããéã«Pathãéãéçšã§è§Šã£ãæ¹ãå€ãã®ã§ã¯ãªãã§ããããã 環境変数とは - IT用語辞典 e-Words ç°å¢å€æ° ãšã¯ãOSãèšå®å€ãªã©ãæ°žç¶çã«ä¿åããå©çšè
ãå®è¡ãããããã°ã©ã ããèšå®ã»åç
§ã§ããããã«ãããã®ãããã°ã©ã ã®å®è¡æãªã©ã«å¿
èŠãšãªããå©çšè
ãã³ã³ãã¥ãŒã¿ããšã«å
容ãç°ãªãèšå®å€ãªã©ãèšé²ããããã«çšããããã Python ã§ã¯æšæºã©ã€ãã©ãªã§ ç°å¢å€æ° ã®èšå®ãååŸçãè¡ãããããªã®ã§ Python ãå©çšããéçºã§ã¯ãã¡ãã®æ¹æ³ãæ°è»œã«å©çšã§ãããã§ããã( Python 以å€ã§ãæ°è»œãã¯ããããŸããã) ç§ãä»åŸã¯ãã¡ãã§ ããŒã¯ ã³ç®¡çããããããªãšæããŸãã ãŸãšã ä»å㯠GitHub ã®ã·ãŒã¯ã¬ããã¹ãã£ãã³ã°ãš ããŒã¯ ã³ç®¡çã®æ¹æ³ã«ã€ããŠç޹ä»ããŸããã çããã® ããŒã¯ ã³æµåºã«ãããªã¹ã¯ãå°ãã§ãäžããããšã«è²¢ç®ã§ããŸããã幞ãã§ãã ããã§ã¯ïŒ
ã¯ããã« ãã€ã ã©ã¯ ã¹ãšã³ãžãã¢ããã°ãã芧ããã ããããããšãããããŸãïŒ æè¡åºå ±ã®itoken1013ã§ãã ä»åã¯8æç¬¬2åç®ã®Meetup ã SaaS æ°èŠãããã¯ãã®æè¡ã ã®ã³ã³ãã³ãã玹ä»ãããŠããã ããŸãã åœæ¥ã¯ ã©ã¯ ã¹Meetupå²äžãæå€ã®120åè¶
ã®æ¹ã
ã«ãåå ããã ããç±ãã€ãã³ããšãªããŸããã ãåå ããã ããŸããæ¹ã
ãæ¬åœã«ããããšãããããŸããïŒ rakus.connpass.com ã€ãã³ãããŒãæŠèŠ ã©ã¯ ã¹ã§ã¯å€ãã® to Båã SaaS ãå±éãç¶ããåããæ°ããªé åã®ãµãŒãã¹ç«ã¡äžãã«åããŠäŒç»ãæ¥ã
é²ããããŠããŸãã ä»åã¯ã€ãã³ãããŒãã®ãæ°èŠãããã¯ããã衚ãéãã以äžã®æ°èŠ HRTechç³»ãããã¯ãã®éçºããåŸãããç¥èŠã玹ä»ãããŠããã ããŸããã æ¥œæ¥œåŽå æ¥œæ¥œå€æ æè¡éžå®ã»éçºã»ã€ã³ãã©ããããã®ç«å Žãã4åã®ãšã³ãžãã¢ãçºè¡šãããŠããã ããä»ãŸã§ã«ãªãå¹
åºãã³ã³ãã³ããçæ§ã«ãæäŸã§ããã€ãã³ãã ã£ãã®ã§ã¯ãªãããšæããŸãã ãåå ããã ããŸããæ¹ã®äžã«ã¯æ°èŠãããã¯ãéçºã«é¢ãã£ãŠããæ¹ãå€ããä»åã®MeetupãéããŠæ¥ã
ã®éçºã«åœ¹ç«ã€æ
å ±ããæäŸã§ããŸããã®ã§ããã°ã倧å€å¹žãã§ãã çºè¡šã®çŽ¹ä» ããã§ã¯ä»åçºè¡šãããŠããã ããŸããå
容ã玹ä»ãããŠããã ããŸãïŒ çºè¡šã¹ã©ã€ããšlogmiãããåœæ¥ã®æ§åãæãåã£ãŠããã ããŸããšå¹žãã§ãïŒ æ°ãµãŒãã¹ç«ã¡äžãæã®æè¡éžå®ãšããµãŒãã¹ç«ã¡äžãã«åãã ã©ã¯ ã¹ã®åãçµã¿ ãŸã㯠ã©ã¯ ã¹ã®å
è¡æè¡æ€èšŒãäž»å°ãã€ã€ãä»å¹ŽåºŠã¯ãªã³ã©ã€ã³ã€ãã³ãã®ããŒãœããªãã£ãšããŠã倧掻èºäžã®éŽæšãããæ¥œæ¥œ åŽå ã«ããã ã¢ãŒããã¯ã㣠éžå®ã®ã玹ä»ããã§ãã ãšã³ãžãã¢ã§ããã°æ°ãµãŒãã¹éçºã«ã¯ã¢ãã³ãªå
端æè¡ãå°å
¥ããããã®ã§ããã çµç¹ã® å
šäœæé© ãèããçµæãæè¡å°å
¥ãèŠéãããšãçããããšã§ã¯ãªãããšæããŸãã ä»åãéŽæšã®ç޹ä»ã§ã¯ãã®ãããªããŸããŸãªçµç·¯ãèžãŸããŠãå°å
¥ããªãã£ãæè¡ãã«çç®ãã LADRïŒLightweight Architecture Decision RecordsïŒ ãšããææ³ã玹ä»ãããŠããã ããŸããã æè¡æ€èšãã倿ã«ããããŸã§ã®æææ±ºå®ã®éçšãå¯èŠåã§ãããããå€ãã® ã¹ããŒã¯ãã«ã㌠ã®é¢ããçµç¹ã§ãããã¯ãéçºã«ãæ©ã¿ã®æ¹ã«ã¯ããã²éŽæšäœæã®ãã³ãã¬ãŒãããæŽ»çšããã ããã°ãšæããŸãã LADRãå°å
¥ããäžã§ã®ã¡ãªããã»ãã¡ãªããã«ã€ããŠãèªãããŠãããããå€ãã®ãšã³ãžãã¢ã«ã圹ç«ãŠããã ããã¯ãã§ãã logmi.jp speakerdeck.com ã¯ãããŠã®ããã³ããšã³ãã»ããã¯ãšã³ãåé¢ 2æ¬ç®ã¯æ¥œæ¥œå€æ ã§ããã¯ãšã³ããšã³ãžãã¢ãšããŠé¢ãã西è§ããã ã©ã¯ ã¹åã®ããã³ããšã³ãã»ããã¯ãšã³ããåé¢ãããããã¯ãéçºã§åŸãããç¥èŠã玹ä»ãããŠããã ããŸããã 2019幎ããéçºãã¹ã¿ãŒãããæ¥œæ¥œå€æ ã§ã¯ãããã³ããšã³ããšããã¯ãšã³ããšã®ã€ã³ã¿ãŒãã§ãŒã¹ãšãªãWeb API ã®éçºãé²ããã«ããããããŒã éã®é£æºã«ããã€ãã®èª²é¡ãæ±ããŠããŸããã ããã³ããšã³ãã»ããã¯ãšã³ãåæ¹ã®ããŒã ã®çç£æ§ãããäžããããã®åãçµã¿ã¯ãããŒã éçºã«é¢ããæ¥æ¬äžã®ãšã³ãžãã¢ã®çæ§ã«åèã«ããŠããã ããã¯ãã§ãã ã©ã¯ ã¹ã«ãšã£ãŠã西è§ãšæ¥œæ¥œå€æ ããŒã ã詊è¡é¯èª€ãç¹°ãè¿ããŠåŸãç¥èŠã¯ãä»åŸã®ãããã¯ãéçºã®å€§ããªè²¡ç£ã«ãªã£ãŠããã§ãããã logmi.jp speakerdeck.com æ°èŠãããã¯ãã®éçºé床ãšå質ã®äž¡ç«ãæ¯ããèªåãã¹ã 3æ¬ç®ã¯çŠå²¡ãããæ¥œæ¥œ åŽå ã§ã®èªåãã¹ãã®åãçµã¿ã®ç޹ä»ã§ãã ã¿ã€ãã«ã®éããæ¥œæ¥œ åŽå ã§ã¯éçºã®ã¹ããŒããšå質ãäž¡ç«ããããã«ãšã³ãžãã¢ãæ§ã
ãªåãçµã¿ãè¡ã£ãŠããŸãã ä»åã¯ãã®äžã§ãäžå¯æ¬ ãª3çš®é¡ã®èªåãã¹ããèªãããŠããã ããŸããã åãã¹ããããããæ©æµããŸãã©ããªèгç¹ã§ã®å質æ
ä¿ãç®çãšããŠãã¹ããäœã£ãŠããã®ãæé©ãªã®ããéçºã®æåç·ã«é¢ããçŠå²¡ã詳现ã«ç޹ä»ããŠããŸãã ãŠããããã¹ã ïŒ JUnit ïŒ ã¢ãŒããã¯ã㣠ãã¹ãïŒArchUnitïŒ E2Eãã¹ãïŒPuppeteerïŒ ãã¹ãã³ãŒããæžãããšãåœããåã®æåãšãªã£ãŠããæ¥œæ¥œ åŽå ã®éçºããŒã ãããå質æ
ä¿ã𿩿ã®ãããã¯ãããŒã±ãããã£ããã®äž¡ç«ãå®çŸããçæ³çãªéçºãããŒãç¥ã£ãŠããã ãããšå¹žãã§ãã logmi.jp speakerdeck.com ç©æ¥µçã« AWS ãµãŒãã¹ãšèªååã䜿ã£ãŠto Bã® SaaS ãããŒã³ããããã®åŸ æåŸã¯ã€ã³ãã©ãšã³ãžãã¢ã®ææšãããto Båã SaaS ã« AWS ãæŽ»çšããéã®ãã€ã³ãã玹ä»ãããŠããã ããŸããã ããŸã IaaS ã®çéã§ãã AWS ã§ã¯æ°å€ãã®ãµãŒãã¹ãå©çšå¯èœã§ãããæ¥œæ¥œ åŽå ãã¯ãããšããå€§èŠæš¡ SaaS ãéçšããææšã¯ã€ã³ãã©ãšã³ãžãã¢ãšããŠããé·æçãªç®ç·ã«ç«ã¡ãæ¬è³ªãæããå©çšãã€ã³ããèªã£ãŠããŸãã åŸåã«ç޹ä»ãããäºäŸã§ãåã«èªååãè¡ãã®ã§ã¯ãªãããªãïŒãã远æ±ããŠãããææšã®çè«ãã ã©ã¯ ã¹ã«æ ¹ä»ãæŠç¥å¿åãæãåã£ãŠããã ããã¯ãã§ãã logmi.jp speakerdeck.com ãããã« æ°èŠãããã¯ãã«ããã ã©ã¯ ã¹ã®åãçµã¿ããããã§ããã§ããããïŒ æ°ããªãããã¯ãã®éçºã«å¥®éãããšã³ãžãã¢ã®çæ§ã«åèãšãªãæ
å ±ãããã°å¹žãã§ãã ããŠã次å9/16(æ°Ž)ã®Meetupã§ã¯ ããããã¯ããæç¶çã«éçºã»éçšãç¶ããããã®åãçµã¿ã ã玹ä»ããäºå®ã§ãã é·ãå¹
åºã SaaS ãå±éãã ã©ã¯ ã¹ã ããããã§ããéçºæŠç¥ã«ã泚ç®ããã ããã°ãšæããŸãã çæ§ã®ãåå ããåŸ
ã¡ããŠããŸãïŒ rakus.connpass.com
å
æ¥è¡ãããŸãããããã³ããšã³ãLTäŒ vol.1 -2020å€ç¥ã-ãã«ãŠåLTãç¡äºçµããŸãããlogy0704ã§ãã rakus.connpass.com ä»åã¯LTäŒã§çºè¡šããå
容ã«å ããŠãã¹ã©ã€ãã«ã¯åããããªãã£ã話ã«ã€ããŠæžããããšæããŸãã speakerdeck.com Nuxt.jsãšfirebaseã«èå³ãæã£ããã£ãã ä»ã«ããã£ãããš RealtimeDatabase vs FireStore ãããã« Nuxt.jsãšfirebaseã«èå³ãæã£ããã£ãã vue.jsãšfirebaseã®çµã¿åããã«ã€ããŠã¯ãéå»ã®ãšã³ãžãã¢ããã°ã§ãäœåºŠãè§ŠããããŠããããšãããããã€ãè§ŠããããšããæãããããŸããã tech-blog.rakus.co.jp tech-blog.rakus.co.jp å ããŠãç°å¢æ§ç¯åšãã®è² è·è»œæž(vuex, vue-router)ãå°æ¥çã«PWAã«ãè§ŠããŠã¿ãããšããã¢ãããŒã·ã§ã³ã§Nuxt.jsãšfirebaseã®çµã¿åããã«è³ããŸããã ä»ã«Nuxt.jsãæ¡çšããçç±ãšããŠã¯ã SSR ïŒãµãŒããŒãµã€ã ã¬ã³ããªã³ã° ïŒãæãæµ®ãã³ãŸãããä»åã®åŠç¿ã§ã¯SPAã¢ãŒããå©çšãã SSR ã¯æ¡çšããŸããã§ããã çç±ã¯ãã¹ã©ã€ãã«ãããéããããã¯ãšã³ãåšãã®ããšãæ¥µåæ°ã«ããããªãã£ãããã§ãã ä»ã«ããã£ãããš RealtimeDatabase vs FireStore ããã¯ããã£ãããšãšãããããç¥èŠããªãã£ããããèå¯ã«æéãããã£ããšããã»ããæ£ããã§ãã ã©ã¡ããFirebaseã«ãã£ãŠæäŸããã ã¯ã©ãŠã ãã¹ãå NoSQL ããŒã¿ããŒã¹ã§ããã䌌ãŠéãªãç¹åŸŽãæã£ãŠããŸãã å
·äœçãªéžå®ãã€ã³ãã«ã€ããŠã¯ããã¡ãã®ããŒãžãåèã«ãããŠããã ããŸããã firebase.google.com ããŒãžã®èšèŒããã¯ãããFireStoreæšãã§ããããã«ãåãåããŸãããããããã®ç¹åŸŽãèžãŸããéžæãè¡ãå¿
èŠããããŸãã ç¹ã«ãããŒã¿ã¢ãã«ãç°ãªããããäžåºŠçæ¹ãå©çšãå§ããåŸã«ãããäžæ¹ã«ä¹ãæããã®ã¯ãªããªãé£ããããæ³šæãå¿
èŠã§ãã ä»åã®ã¢ããªã§ã¯ãRealtime databaseãéžæããŸããã çç±ã¯ãç°¡æãªTODOã¢ããªãšããŠã®å©çšã§ããã°ãFireStoreã®ãããªè€éãªã¯ãšãªã¯å¿
èŠãªããšå€æããããã§ãã å®éã®åçšã¬ãã«ã®ã¢ããªã§ããã°ãå°æ¥ã®æ©èœæ¡åŒµãå å³ããæ€èšãå¿
èŠã«ãªããšæããŸãã ãããã« 100人以äžãèããŠãããŠããäžã§ã®çºè¡šã§LTããã¥ãŒãšããã®ã¯å€å°ç·åŒµããŸããããè¯ãçµéšã«ãªããŸããã ä»ã®æ¹ã®çºè¡šãè¯ãåºæ¿ã«ãªã£ãããšã¯å¿è«ãããèªåãçºè¡šãããšãªããšãããããæºåãããããåãããã£ã±ãªããããç¥èãå®çããæ°ãããŸãã ãããç»å£é§åéçºâŠïŒ
ããã«ã¡ã @kawanamiyuu ã§ããä»åã¯ç§ã®æå±ãã æ¥œæ¥œåŽå ã®éçºããŒã ã§éçšããŠãã ã³ãŒãã¬ãã¥ãŒ ã¬ã€ãã©ã€ã³ ãšã³ãŒãã¬ãã¥ãŒã«ãŸã€ããå°ãå€ãã£ãåãçµã¿ã«ã€ããŠç޹ä»ããããšæããŸãã æ¥œæ¥œåŽåã®éçºäœå¶ ã³ãŒãã¬ãã¥ãŒã¬ã€ãã©ã€ã³çå®ã®èæ¯ ã³ãŒãã¬ãã¥ãŒã¬ã€ãã©ã€ã³çå®ã®ç®ç ã¬ãã¥ãŒææã®éèŠåºŠ ã³ãŒãã¬ãã¥ãŒã®å·¥å€« ãããã€ããšããçºæ ããã㫠楜楜 åŽå ã®éçºäœå¶ ããŒã éçºæ ç¹ã¯æ±äº¬ãšå€§éª 1 ããŒã ããã 3 ã 5 åã®ãåèš 3 ããŒã ïŒïŒ ã¹ã¯ã©ã ãã¹ã¿ãŒçïŒã§ ã¹ã¯ã©ã éçº *1 ç§ã¯ãã®ãã¡ã® 1 ããŒã ã®ãªãŒããŒãæ
åœ ããŒã« GitLab ã§ãœãŒã¹ç®¡çããMerge Request *2 ãæŽ»çšããŠã³ãŒãã¬ãã¥ãŒã宿œ ã¬ãã¥ãŒãéã£ãã³ãŒããã¡ã€ã³ãã©ã³ãã«ããŒãžããã éçºã¿ã¹ã¯ïŒPBI *3 ãSBI *4 ïŒã¯ Trello ã§ç®¡ç ã³ãŒãã¬ãã¥ãŒ ã¬ã€ãã©ã€ã³ çå®ã®èæ¯ éçºèп𡿡倧ã®ããã®äººå¡å¢ãšããã«äŒŽãè€æ°ããŒã äœå¶ãžã®ç§»è¡ã«ããã ããŒã ããšã«ã³ãŒãã¬ãã¥ãŒææã®éèŠåºŠã芳ç¹ã«ã°ãã€ãããã éçºã¡ã³ããŒãèªèº«ã®æé·ãæž¬ãææšãšããŠãMerge Request ã®å·®ãæ»ãåæ°ãã现ããç²åºŠã®æ
å ±ãåéãã¥ãã ãšãã£ã課é¡ãåºãŠããŠããŸããã ã³ãŒãã¬ãã¥ãŒ ã¬ã€ãã©ã€ã³ çå®ã®ç®ç ãããã®èª²é¡ã解決ããããã®ã³ãŒãã¬ãã¥ãŒ ã¬ã€ãã©ã€ã³ ãçå®ããæ¬¡ã®å®çŸãç®æããŠããŸãã éçºããŒã å
šäœã§åãåºæºã§ã³ãŒãã¬ãã¥ãŒãè¡ããä¿®æ£èŠåŠã倿ã§ããããã«ãã éçºã¡ã³ããŒãã¬ãã¥ãŒææãéèŠåºŠã芳ç¹ããšã«åæããèªèº«ã®ãµããããã«æŽ»ãããããã«ãã 芳ç¹ãææåããããšã§ãã¬ãã¥ãŒã€ãŒã®ã»ã«ããã§ãã¯ãã¬ãã¥ã¢ãŒè²æã®ã€ã³ããããšããŠäœ¿ããããã«ãã ã¬ãã¥ãŒææã®éèŠåºŠ ã³ãŒãã¬ãã¥ãŒã§çºçããææã«ã¯å¿
ãåªå
床ãä»ãããããã¯ãå質ã«å¯ŸããéèŠåºŠã衚çŸããŸãã éèŠåºŠ 説æ MUST å¿
ãä¿®æ£ãã¹ãããããããæåŸ
ããåœããåå質ã«éããŠãããããã®ãŸãŸã§ã¯ãªãªãŒã¹ã§ããªãã仿Ÿçœ®ãããšããšã§å€§ããªè² åµã«ãªã SHOULD å¯èœãªãä¿®æ£ãã¹ãããªãªãŒã¹ã¹ã±ãžã¥ãŒã«ãåªå
ããããæŠç¥çã«ä¿®æ£ãèŠéãããšãã§ãããããã®å Žåã¯æ¬¡ããŒãžã§ã³ã§ä¿®æ£ãæ€èšãã¹ã IMO ä¿®æ£å€æã¯ã¬ãã¥ãŒã€ãŒã«å§ãããããå¥è§£ã®ææ¡ãçŸæç¹ã§ã¯å€æãé£ãã課é¡ãªã©ãã¬ãã¥ã¢ãŒã®æèŠã«éããªã ã¬ãã¥ã¢ãŒã¯ãããã®ãéèŠåºŠãã«ã芳ç¹ã *5 ãå ããŠãMerge Request äžã®ã³ãŒãã«å¯ŸããŠã¬ãã¥ãŒææãèšè¿°ããŸãã ïŒã¬ãã¥ãŒææã®èšè¿°äŸïŒ ã³ãŒãã¬ãã¥ãŒã®å·¥å€« MUST ã¬ãã«ã®ã¬ãã¥ãŒææã¯ãªãªãŒã¹åè³ªãæºãããŠããªãããšãæå³ãããããå¿
ãä¿®æ£ããå¿
èŠããããŸãããSHOULD ã¬ãã«ã®ã¬ãã¥ãŒææã®ä¿®æ£å€æã«ã¯è£éããããŸãã ç§ããªãŒããŒãæ
åœããããŒã ã§ã¯ ãSHOULD ã¬ãã«ã®ã¬ãã¥ãŒææã¯ããã«ã¯ä¿®æ£ãããã£ããè² åµãšããŠç©ã¿äžããã ãšããéçšã詊ã¿ãŠããŸããå¹³ãããããšãæªä¿®æ£ã® SHOULD ã¬ãã«ã®ã¬ãã¥ãŒææãæ®ã£ãŠããŠã Merge Request ãããŒãžããŠããããšã«ããŠããŸãã ããã¯ã ãŸãã¯ãªãªãŒã¹å¯èœå質å°éãæéã§ç®æãããšã§ãéçºã®åŸå·¥çšã®ã¹ã±ãžã¥ãŒã«äžã®ãªã¹ã¯ãæžãããã ã³ãŒãã®åé¡ãããã€ããã©ã®çšåºŠã¡ãããšãä¿®æ£ããããšããæææ±ºå®ã«ãã£ãŠéçºé床ãšå質ã®ãã©ã³ã¹ã調æŽããã ãšããèããèæ¯ã«ãããæ
åœããŒã ã¡ã³ããŒãšéçºããŒã å
šäœã«èª¬æã®ããããã®ãããªå·¥å€«ã詊ããŠããŸãã ãã®éçšã«ãã£ãŠåŸåãã«ããè² åµã¿ã¹ã¯ã Trello äžã§ç®¡çããŠããŸãã ãã®åãã SHOULD ãã¬ãŒã³ïŒãŸããŸïŒã§ãã ãã®ã¬ãŒã³ã®ã¿ã¹ã¯ã¯ãå®è£
ã¿ã¹ã¯ã®ã¬ãã¥ãŒåŸ
ã¡æéãã¹ããªã³ãã®åãç®ãªã©ãäž»ã«éçºæ¥åã®ãªãŒãã¿ã€ã ãçºçãããšãã«ãéçºæ¥å㮠箞äŒãçãªã¿ã¹ã¯ ãšããŠãåèªãèªäž»çã«åã£ãŠè§£æ¶ããŠããéçšãšããŠããŸãã ãããã€ããšããçºæ ããŠãããããæ¬é¡ã§ãããæè¿ã®ã¹ããªã³ãçµäºæã®æ¯ãè¿ãã§ãç§ã®ããŒã ã®ããã¡ã³ããŒããä»åã®ã¹ããªã³ãã¯ã¿ã€ãã³ã°ããè² åµã¿ã¹ã¯ãæ¶åã§ãããããã€æèŠã ã£ããããšçºèšããŸããããã®ç¬éãã¡ã³ããŒå
šå¡ããããã ïŒããšæããŸããã ãã㊠çèª ããã®ãã ãã〠ãã¬ãŒã³ïŒååå€ããã ãïŒã§ãã ãã®äžŠã³ã«ãããã€ãã®æåã䞊ã¶ã®ã¯é¢çœãã§ããã ããã°ã©ã㌠ã«ãšã£ãŠååä»ãã¯ãšãŠãéèŠã§ãã ãã®å¯Ÿè±¡ã®ç¹åŸŽãé©åã«æããè¯ãååãäžããããããšã§ãéåžžã«ãã£ãããšãã®äžç芳ãçè§£ããããšãã§ããŸãã ãŸããä»åãè² åµã¿ã¹ã¯ã«ãããã€ããšããååãã€ããããšã§ãè² åµãšãããã¬ãã£ããªã€ã¡ãŒãžãããžãã£ããªã€ã¡ãŒãžã«å€ãããè² åµè§£æ¶ã«ååãã«åãçµãããšãã§ããããã«ãªããŸããã ãããã« ä»å玹ä»ããã³ãŒãã¬ãã¥ãŒã«å¯Ÿããåãçµã¿ã¯ãçŸç¶ããŸãåã£ãŠããŸããéçºäžã«çºçããäžéšã®ã¬ãã¥ãŒææãè² åµãšããŠäžæçã«åŸåãã«ã¯ãããã®ã®ããããã€ãæèŠã§é©å®æ¶åããè² åµãæºã蟌ãŸãªãç¶æ
ãããŒãã§ããŠããŸãã ç§ãã¡ã®åãçµã¿ããéçºé床ãšå質ãäž¡ç«ããæè¡çè² åµã«å¯ŸããŠååãã«åãçµã¿ãããã®ã¢ ã€ã㢠ãšãªãã°å¬ããã§ãã -- P.S. ãã®åŸã次ã®ãããªåèšïŒè¿·èšïŒãçãŸããŠããŸãã ããã€ã®é®®åºŠãèœã¡ããšèæ¯çè§£ã«æéãããã ïŒ è² åµãæŸçœ®ãããšãå®éã«ä¿®æ£ããããšãããšãã«ã©ããªã³ã³ããã¹ãã§ã®ææã ã£ãã®ãæãåºããŠçè§£ããã®ã«æéãããã ããã€ãé£ã¹ããã ïŒ ã¡ã€ã³ã®å®è£
ã¿ã¹ã¯ãããè² åµã®è§£æ¶ãåªå
ããŠããŸããå®è£
ã¿ã¹ã¯ã®å®äºãé
ãã *1 : LeSS ã®ãããªã€ã¡ãŒãž *2 : GitHub ã§ãããšããã® Pull Request ã®ããš *3 : Product Backlog Item *4 : Sprint Backlog Item *5 : å€éšå質äžã®ææèгç¹ïŒãäžå
·åããäºææ§ãetcãå
éšå質äžã®ææèгç¹ïŒãçè§£å®¹ææ§ãã倿Žå®¹ææ§ãetcã
ã¯ããã« ããã«ã¡ã¯ãdd_fortã§ãã ååã«åŒãç¶ããDockerã«ã€ããŠã®è©±ã«ãªããŸãã Dockerã®åŠç¿äžã«è©°ãŸã£ãæš©éã«ã€ããŠã®åé¡ãšããã®è§£æ±ºæ³ã玹ä»ããŸãã ã¯ããã« ããªã¥ãŒã (Data Volume)ãšã¯ permission denied ãçºçããåé¡ è§£æ±ºæ³ è§£æ±ºæ³1ïŒããŠã³ãããããªã¥ãŒã ã®æš©éãæžãæãã 解決æ³2ïŒãŠãŒã¶æ
å ±ã®æžããããã¡ã€ã«ãèªã¿èŸŒã¿å°çšã§ããŠã³ããã 解決æ³3ïŒã³ã³ããäœææã«ãŠãŒã¶ãšã°ã«ãŒãã远å ãã ãŸãšã ããªã¥ãŒã (Data Volume)ãšã¯ ããªã¥ãŒã ãšã¯ãããŒã¿ãæ°žç¶åã§ããå ŽæãæããŸãã Dockerã®ã³ã³ããå
éšã®ããŒã¿ã¯ã³ã³ããç Žæ£ããããšæ¶ããŠããŸãããã ããŒã¿ãæ°žç¶åãããããã®ææ®µãšã㊠ããªã¥ãŒã (volume) ãååšããŸãã ã³ã³ããå
éšã®æ°žç¶åã®è©³ããå
容ã«ã€ããŠã¯ããã¡ãã®èšäºãåç
§ãã ããã tech-blog.rakus.co.jp permission denied ãçºçããåé¡ Linux äžã§Dockerã³ã³ããå
ã§ããªã¥ãŒã ãããŠã³ãããéã«ããã¹ãããã¢ã¯ã»ã¹ããå Žåã« ããŒããã·ã§ã³ ã®åé¡ãçºçããããšããããŸãã ãã¹ãOSã§äœ¿ã£ãŠãããŠãŒã¶ãšã³ã³ããå
ã§äœ¿ã£ãŠãããŠãŒã¶ã®UIDãš GID ãäžäžèŽã«ãªãããšãåå ã®ããã§ãã ãã®ãããDocker for Mac / Windows ã§ã¯ã»ãšãã©çºçããŸããã $ id uid=1000(test) gid=1000(test) groups=0(test) # (ã³ã³ããå
) # id uid=0(root) gid=0(root) groups=0(root) çºçããç°å¢ Linux ( Ubuntu , CentOS etc) WSL2 è§£æ±ºæ³ è§£æ±ºæ³1ïŒããŠã³ãããããªã¥ãŒã ã®æš©éãæžãæãã permission deniedãçºçãã ãã£ã¬ã¯ã ãªããã¡ã€ã«ã®æš©éãçŽæ¥æžãæããããšã§è§£æ±ºããããšãã§ããŸãã $ chmod 777 /var/project ããããpermission denied ãçºçããŠãããã¡ã€ã«ããã©ã«ãã®ãã¹ãŠã®æš©éãæžãæããªããšãããªããããæ ¹æ¬çãªè§£æ±ºã«ã¯ãªããŸããã 解決æ³2ïŒãŠãŒã¶æ
å ±ã®æžããããã¡ã€ã«ãèªã¿èŸŒã¿å°çšã§ããŠã³ããã ã³ã³ããå
ã®UIDãš GID ããã¹ãOSãšåãã«ãªãããã«ãã³ã³ããèµ·åæã«UIDãš GID ãæå®ããŸãã ãŸãã /etc/passwd ãšã®äžæŽåãèµ·ããªãããã«ãã¹ãOSã® /etc/passwd ãããŠã³ãããå¿
èŠããããŸãã æåŸã«ãã³ã³ãããã /etc/passwd ãæžãæããªãããã«read only ( :ro ) ã§ããŠã³ãããŸãã $docker run \ -u "$(id -u $USER):$(id -g $USER)" \ -v /etc/passwd:/etc/passwd:ro \ -v /etc/group:/etc/group:ro \ -it ubuntu å®è¡çµæ $ id uid=1000(test) gid=1000(test) groups=1000(test) # (ã³ã³ããå
) test@hogehoge:~$ id uid=1000(test) gid=1000(test) groups=1000(test) åé¡ãªãã³ã³ããå
ãšãã¹ãOSã§ãŠãŒã¶æ
å ±ãå
± éå ãããŠããããšã確èªã§ããŸããã ãã ããã®æ¹æ³ã®ãã¡ãªãããšããŠãå¥ãã©ãããã©ãŒã éã§ã¯Dockerãã¡ã€ã«çãå
±æããããšãã§ããªããªããŸãã 解決æ³3ïŒã³ã³ããäœææã«ãŠãŒã¶ãšã°ã«ãŒãã远å ãã ãã¹ãOSã®ãŠãŒã¶(UID)ãã°ã«ãŒã( GID )ã ç°å¢å€æ° ãšããŠæž¡ããã³ã³ããå
ã§ãŠãŒã¶ãšã°ã«ãŒãã远å ããŸãã # Dockerfile FROM ubuntu:latest RUN apt update \ && apt -yq dist-upgrade \ && apt install -yq --no-install-recommends \ sudo COPY entrypoint.sh /var/tmp CMD bash -E /var/tmp/entrypoint.sh && /bin/bash ã³ã³ãããçµäºããªãããã« /bin/bash ã§å¯Ÿè©±ã¢ãŒãã§åããç¶ããŸãã # docker-compose.yml version: "3" services: override: image: example/override-ids build: . container_name: override environment: - USER_NAME - USER_ID - GROUP_NAME - GROUP_ID volumes: - ./:/mnt/working tty: true ç°å¢å€æ° ã§ããŠãŒã¶(UID)ãã°ã«ãŒã( GID )ãæž¡ãããã«èšå®ããŸãã # entrypoint.sh useradd -s /bin/bash -m ${USER_NAME} export HOME=/home/${USER_NAME} usermod -u ${USER_ID} ${USER_NAME} groupadd -g ${GROUP_ID} ${GROUP_NAME} usermod -g ${GROUP_NAME} ${USER_NAME} useradd ã groupadd ã§ãŠãŒã¶ãšã°ã«ãŒãã远å ã usermod ã§ãŠãŒã¶ãšã°ã«ãŒããèšå®ã ã³ã³ããããã«ãããŠå®è¡ããŸãã $ docker-compose build $ USER_NAME=$(id -un) \ USER_ID=$(id -u) \ GROUP_NAME=$(id -gn) \ GROUP_ID=$(id -g) \ sudo -E docker-compose up -d å®è¡çµæ $ id uid=1000(test) gid=1000(test) groups=1000(test) $ docker exec -it override su - $(id -un) test@hogehoge:~$ id uid=1000(test) gid=1000(test) groups=1000(test) ãŸãšã Dockerã®ã³ã³ããå
ã«volumeãããŠã³ãããéã¯ãUID/ GID ãæ£ããèšå®ããªããã°ãªããŸããã ç°¡åãªææ®µãšããŠã®è§£æ±ºæ³ã¯1,2ã§ããã解決æ³3ã䜿ããšã»ãšãã©ã®åé¡ã解決ããããšãã§ããŸãã Dockerã§ã¯ãŸã ãŸã å匷ãå§ããã°ãããªã®ã§åŠç¿ãé²ããŠããããšèããŠããŸãã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã 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
ã¯ããã« ããã«ã¡ã¯ãyk_itgã§ãã ãããŸã§ããã€ã PostgreSQL ã®èšäºãäœæããŸããããä»åã¯ç¥ã£ãŠãããšäŸ¿å©ã ãšæã ããŒãã«ã»DBã®é²èЧã»ã³ã㌠ã«é¢ããtipsããŸãšããŠã¿ãŸããã ç§ã¯ãã¹ãã宿œããæã«çµæã確èªããããããŒã¿ãçšæããéã«ãã䜿ããŸãã PostgreSQL ãŠãŒã¶ãªãå¿
é ã®ãã¯ããã¯ã玹ä»ããŠãããŸãã®ã§ãã©ããã圹ç«ãŠãã ããïŒ ã¯ããã« ããŒãã«ãé²èЧãã ããŒãã«ã®æ
å ±ã確èªãããïŒ\d ããŒãã«ã®äžèЧã確èªãããïŒ\dt å®è¡çµæãèŠããããããïŒ\x å®è¡çµæããã¡ã€ã«ã«åºåããŠç¢ºèªãããïŒ\o DBãé²èЧãã DBã®äžèЧã確èªãããïŒ\l ããŒãã«ãã³ããŒãã ããŒãã«ã®æ§é ãã³ããŒãããïŒCREATE TABLE (LIKE) ããŒãã«ã®ã¬ã³ãŒããã³ããŒãããïŒINSERT INTO SELECT DBãã³ããŒãã DBãã³ããŒãããïŒcreatedb -T DBãã³ããŒãããïŒpg_dump æåŸã« é¢é£èšäº ããŒãã«ãé²èЧãã ããŒãã«ã®æ
å ±ã確èªãããïŒ \d \d {ããŒãã«å} ã psql äžã§å®è¡ãããšããŒãã«ã®æ
å ±ã衚瀺ããããšãã§ããŸãã ã€ã³ããã¯ã¹ãã·ãŒã±ã³ã¹ãªã©ããŒãã«ä»¥å€ã®ãªã¬ãŒã·ã§ã³ã衚瀺ããããšãå¯èœã§ãã postgres=# \d test ããŒãã« "public.test" å | å | ç
§åé åº | Null å€ã蚱容 | ããã©ã«ã ------+---------+----------+---------------+------------ id | integer | | not null | hoge | text | | | 'a'::text ã€ã³ããã¯ã¹: "test_pkey" PRIMARY KEY, btree (id) "test_hoge_idx" btree (hoge) postgres=# \d test_pkey ã€ã³ããã¯ã¹ "public.test_pkey" å | å | ããŒ? | å®çŸ© ----+---------+-------+------ id | integer | ã¯ã | id ãã©ã€ããªããŒ, btree, ããŒãã« "public.test" çš ããŒãã«ã®äžèЧã確èªãããïŒ \dt \dt ã psql äžã§å®è¡ãããšããŒãã«ã®äžèЧã衚瀺ããããšãã§ããŸãã ããŒãã«ä»¥å€ã«ã \di ã \ds ã \dv ã䜿ãã°ãããããã€ã³ããã¯ã¹ãã·ãŒã±ã³ã¹ããã¥ãŒã®äžèЧã衚瀺ããããšãã§ããŸãã postgres=# \dt ãªã¬ãŒã·ã§ã³äžèЧ ã¹ããŒã | åå | å | ææè
----------+------+----------+---------- public | test | ããŒãã« | postgres (1 è¡) å®è¡çµæãèŠããããããïŒ \x \x ã psql äžã§å®è¡ãããš SQL ãã¡ã¿ã³ãã³ãçã®å®è¡çµæãæ¡åŒµè¡šç€ºïŒçžŠã«è¡šç€ºïŒããããšãã§ããŸãã äŸãã°ãã«ã©ã ãå€ãããŠã¿ãŒããã«ã§æãè¿ããŠè¡šç€ºãããŠããŸãå Žåã«äŸ¿å©ã§ãã éã«èŠã¥ããå Žåã«ã¯ãããäžåºŠ \x ãå®è¡ãããšå
ã®è¡šç€ºã«æ»ããŸãã postgres=# SELECT * FROM test; id | hoge1 | hoge2 | hoge3 | hoge4 | hoge5 | hoge6 | hoge7 | hoge8 | hoge9 | hoge10 | hoge11 | hoge12 | hoge13 | hoge14 | hoge15 | hoge16 | hoge17 | hoge18 | hoge19 | hoge20 ----+------------+-------+-------+-------+-------+-------+-------+-------+-------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-------- 1 | ABCDEFGHIJ | | | | | | | | | | | | | | | | | | | (1 è¡) postgres=# \x æ¡åŒµè¡šç€ºã¯ on ã§ãã postgres=# SELECT * FROM test; -[ RECORD 1 ]------ id | 6 hoge1 | ABCDEFGHIJ hoge2 | hoge3 | hoge4 | hoge5 | hoge6 | hoge7 | hoge8 | hoge9 | hoge10 | hoge11 | hoge12 | hoge13 | hoge14 | hoge15 | hoge16 | hoge17 | hoge18 | hoge19 | hoge20 | å®è¡çµæããã¡ã€ã«ã«åºåããŠç¢ºèªãããïŒ \o \o {ãã¡ã€ã«ãã¹} ã psql äžã§å®è¡ãããšå®è¡çµæãæå®ãããã¡ã€ã«ã«åºåããããšãã§ããŸãã ã¿ãŒããã«ä»¥å€ã§å®è¡çµæã確èªãããå Žåãä¿åãããå Žåã«äŸ¿å©ã§ãã SQL å®è¡åŸã« \o ãå®è¡ãããšåºåå
ãæšæºåºåã«æ»ãããšãã§ããŸãã postgres=# \o result.txt postgres=# SELECT * FROM test; postgres=# \o postgres=# SELECT * FROM test; id | hoge ----+------------ 8 | ABCDEFGHIJ (1 è¡) result.txt id | hoge ----+------------ 8 | ABCDEFGHIJ (1 è¡) DBãé²èЧãã DBã®äžèЧã確èªãããïŒ \l \l ã psql *1 äžã§å®è¡ãããšDBã®äžèЧã衚瀺ããããšãã§ããŸãã ãŸã㯠psql -l ã§ã¿ãŒããã«ãèµ·åããã«è¡šç€ºããããšãã§ããŸãã postgres=# \l ããŒã¿ããŒã¹äžèЧ åå | ææè
| ãšã³ã³ãŒãã£ã³ã° | ç
§åé åº | Ctype(倿æŒç®å) | ã¢ã¯ã»ã¹æš©é -----------------------------------+----------+------------------+----------+-------------------+----------------------- postgres | postgres | UTF8 | C | C | template0 | postgres | UTF8 | C | C | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | C | C | =c/postgres + | | | | | postgres=CTc/postgres (3 è¡) ããŒãã«ãã³ããŒãã ç¶ããŠã¯ã³ããŒäœæ¥ã®ãã¯ããã¯ããŸãã¯ããŒãã«ç·šã®ç޹ä»ã§ãã ãªããããããã玹ä»ããå
容ã¯ãæ¬çªç°å¢ã§ã®å©çšã¯æ³å®ããŠããŸããã 誀ã£ãŠéèŠãªããŒã¿ã®æžãæ¿ããçºçããŠããŸãå¯èœæ§ããããŸãã®ã§ããå©çšã«ã¯ããããããæ³šæãã ããã ããŒãã«ã®æ§é ãã³ããŒãããïŒ CREATE TABLE (LIKE) CREATE TABLE {ã³ããŒå
} (LIKE {ã³ããŒå
} ) *2 ã® SQL ãå®è¡ãããšã³ããŒå
ãšåãæ§é ã®ããŒãã«ãäœæããããšãã§ããŸãã LIKEã®äžã§ INCLUDING ALL ãæå®ãããšæ§é ã ãã§ãªããå¶çŽãããã©ã«ãå€ãä»äžãããŠããã€ã³ããã¯ã¹çãã³ããŒããããšãã§ããŸãã postgres=# CREATE TABLE test2 (LIKE test); CREATE TABLE postgres=# \d test2 ããŒãã« "public.test2" å | å | ç
§åé åº | Null å€ã蚱容 | ããã©ã«ã ------+---------+----------+---------------+------------ id | integer | | not null | hoge | text | | | postgres=# CREATE TABLE test3 (LIKE test INCLUDING ALL); CREATE TABLE postgres=# \d test3 ããŒãã« "public.test3" å | å | ç
§åé åº | Null å€ã蚱容 | ããã©ã«ã ------+---------+----------+---------------+------------ id | integer | | not null | hoge | text | | | 'a'::text ã€ã³ããã¯ã¹: "test3_pkey" PRIMARY KEY, btree (id) "test3_hoge_idx" btree (hoge) ããŒãã«ã®ã¬ã³ãŒããã³ããŒãããïŒ INSERT INTO SELECT INSERT INTO {ããŒãã«å} SELECT * FROM {ããŒãã«å} ã® SQL ãå®è¡ãããšSELECTã®çµæããã®ãŸãŸã³ããŒããããšãã§ããŸãã ãã®ãŸãŸã³ããŒãããšäž»ããŒå¶çŽã«åŒã£ãããå Žåã«ã¯ã CREATE TABLE {ã³ããŒå
} (LIKE {ã³ããŒå
} ) ã䜿ã£ãŠtempããŒãã«ãäœæãã倿Žãããã«ã©ã ã®ã¿ãUPDATEããŠããINSERTãããšäž»ããŒã®ã«ã©ã 以å€ãèããã«ã³ããŒããããšãã§ããŸãã postgres=# SELECT * FROM test2; id | hoge ----+------------ 10 | ABCDEFGHIJ (1 è¡) postgres=# INSERT INTO test2 SELECT * FROM test2; INSERT 0 1 postgres=# SELECT * FROM test2; id | hoge ----+------------ 10 | ABCDEFGHIJ 10 | ABCDEFGHIJ (2 è¡) postgres=# SELECT * FROM test; id | hoge ----+------------ 1 | ABCDEFGHIJ (1 è¡) postgres=# CREATE TEMPORARY TABLE temp_test (LIKE test); CREATE TABLE postgres=# INSERT INTO temp_test SELECT * FROM test WHERE id = 1; INSERT 0 1 postgres=# UPDATE temp_test SET id = 2; UPDATE 1 postgres=# INSERT INTO test SELECT * FROM temp_test; INSERT 0 1 postgres=# SELECT * FROM test; id | hoge ----+------------ 1 | ABCDEFGHIJ 2 | ABCDEFGHIJ (2 è¡) DBãã³ããŒãã ããŒãã«ã®æ¬¡ã¯DBç·šã®ã玹ä»ã§ãã ãã¡ããããŒãã«ç·šãšåæ§ãæ¬çªç°å¢ã§ã®å©çšã¯æ³å®ãããã®ã§ã¯ãããŸããã ç°å¢ãžé倧ãªåœ±é¿ãåãŒãå
容ãšãªããŸãããããæ³šæã®äžã§ã®å©çšããé¡ãããŸãã DBãã³ããŒãããïŒ createdb -T createdb -T {ã³ããŒå
} {ã³ããŒå
} *3 ã®ã³ãã³ããå®è¡ãããšã³ããŒå
DBã®å
容ã§ã³ããŒå
DBãäœæããããšãã§ããŸãã åŸè¿°ã® pg_dump ãšæ¯èŒãããšå®è¡é床ãéãå°è±¡ã§ãã >psql -U postgres -d postgres postgres=# \dt ãªã¬ãŒã·ã§ã³äžèЧ ã¹ããŒã | åå | å | ææè
----------+-------+----------+---------- public | test | ããŒãã« | postgres public | test2 | ããŒãã« | postgres public | test3 | ããŒãã« | postgres (3 è¡) >createdb -T postgres -U postgres postgres2 >psql -U postgres -d postgres2 postgres2=# \dt ãªã¬ãŒã·ã§ã³äžèЧ ã¹ããŒã | åå | å | ææè
----------+-------+----------+---------- public | test | ããŒãã« | postgres public | test2 | ããŒãã« | postgres public | test3 | ããŒãã« | postgres (3 è¡) DBãã³ããŒãããïŒ pg_dump pg_dump {ã³ããŒå
DB} > {dumpãã¡ã€ã«} *4 ã®ã³ãã³ããå©çšãããšããŒã¿ããŒã¹ãããã¯ã¢ããããdumpãã¡ã€ã«ãäœæããããšãã§ããŸãã äœæããdumpãã¡ã€ã«ã psql {ã³ããŒå
DB} < {dumpãã¡ã€ã«} ã§ãªã¹ãã¢ããããšã«ãã£ãŠã³ããŒå
ã®DBã«ã³ããŒå
ã®DBãããŒã¿ãåçŸããããšãã§ããŸãã åè¿°ã® createdb -T ãšæ¯èŒãããšãdumpãã¡ã€ã«ãããã°åããµãŒãã«ã³ããŒå
ã®DBããªããŠãã³ããŒã§ããç¹ã§æ±çšçã§ãã ãŸãã -n ã -t ã®ãªãã·ã§ã³ãæå®ãããšäžèŽãã ã¹ããŒã ãããŒãã«åäœã§ã³ããŒããããšãã§ããŸãã > pg_dump -U postgres postgres > postgres_dump > ls -1 | grep postgres_dump postgres_dump > createdb -U postgres -T template0 postgres3 > psql -U postgres -d postgres3 < postgres_dump > psql -U postgres -d postgres3 postgres3=# \dt ãªã¬ãŒã·ã§ã³äžèЧ ã¹ããŒã | åå | å | ææè
----------+-------+----------+---------- public | test | ããŒãã« | postgres public | test2 | ããŒãã« | postgres public | test3 | ããŒãã« | postgres (3 è¡) æåŸã« PostgreSQL ã§ã®ããŒãã«ã»DBã®é²èЧã»ã³ããŒã«é¢ããŠã玹ä»ããŠã¿ãŸãããããããã§ããã§ããããã å¹ççãªäœæ¥ã®ã圹ã«ç«ãŠã°å¹žãã§ãã é¢é£èšäº tech-blog.rakus.co.jp tech-blog.rakus.co.jp tech-blog.rakus.co.jp ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã 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 *1 : https://www.postgresql.jp/document/9.3/html/app-psql.html *2 : https://www.postgresql.jp/document/9.3/html/sql-createtable.html *3 : https://www.postgresql.jp/document/9.2/html/app-createdb.html *4 : https://www.postgresql.jp/document/9.2/html/app-pgdump.html
ã¯ããã« ããã«ã¡ã¯ãEngawaã§ãã æè¿ã®æ¥åã§OAuthã«ã€ããŠè§Šããæ©äŒããããŸããã ãããŸã§ã®æ¥åã§ã¯æ
åœçµéšã¯ãªãå
šãä»çµã¿ãçè§£ã§ããŠããªãã£ãããããããæ©ã«ä»çµã¿ã«ã€ããŠã¡ãã£ãšåŠç¿ããŠã¿ãŸããïŒ åèã«ããæžç±ã¯ä»¥äžã«ãªããŸãã https://www.amazon.co.jp/dp/484437818X www.amazon.co.jp OAuthãšã¯ OAuthãšã¯ã ãµãŒãããŒã㣠ã¢ããªã±ãŒã·ã§ã³ã«ããHTTPãµãŒãã¹ãžã®éå®çãªã¢ã¯ã»ã¹ãå¯èœã«ããèªå¯ ãã¬ãŒã ã¯ãŒã¯ ãã§ãã äžèšã ãã ãšæå³ãåãããªãã®ã§ãç»åç·šéã¢ããªãäŸã«ããŸãã ç»åç·šéã¢ããªã§ Google Photoäžã®ç»åãç·šéããéããã°ã€ã³ã¢ã«ãŠã³ãã«ã¯ Google ã¢ã«ãŠã³ãã䜿ãããå ŽåãèããŠã¿ãŸãããã ã ãµãŒãããŒã㣠ã¢ããªâç»åç·šéã¢ã㪠HTTPãµãŒãã¹â Google Photo éå®çãªã¢ã¯ã»ã¹ïŒãŠãŒã¶ãŒãèš±ãããŠããæäœã¯ç»åã®ããŠã³ããŒãã®ã¿ã§ããã以å€ã®æäœãããããšããå Žåã¯ãHTTPãµãŒãã¹ã¯ã¢ã¯ã»ã¹ãæåŠããªããŠã¯ãªããªã èªå¯ ãã¬ãŒã ã¯ãŒã¯ ïŒã¢ã¯ã»ã¹ ããŒã¯ ã³çºå¹æ¹æ³ã®ã«ãŒã«ïŒå
šãŠã®ã¢ã¯ã»ã¹ã«å¯ŸããŠãèš±å¯ããŠããã¢ã¯ã»ã¹ãã©ãããã¢ã¯ã»ã¹ ããŒã¯ ã³ãçšããŠå€æãããïŒ äžèšã®äŸãèžãŸããŠOAuthã®ã ãµãŒãããŒã㣠ã¢ããªã±ãŒã·ã§ã³ã«ããHTTPãµãŒãã¹ãžã®éå®çãªã¢ã¯ã»ã¹ãå¯èœã«ããèªå¯ ãã¬ãŒã ã¯ãŒã¯ ããèšãæãããš ãç»åç·šéã¢ããªã«ãã Google Photoãžã®éå®çãªã¢ã¯ã»ã¹ãå¯èœã«ããããã®ãã¢ã¯ã»ã¹ ããŒã¯ ã³çºå¹æ¹æ³ã®ã«ãŒã«ãããšãªããŸãã å圹å²ã®é¢ä¿æ§ ååœ¹å² OAuthã®åºæ¬çãªåœ¹ã¯å€§äœä»¥äžã®4ã€ã«ãªããŸãã ãªãœãŒã¹ãªãŒã㌠ãªãœãŒã¹ã®ææè
ã ãµãŒãããŒã㣠ã¢ããªã«ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹æš©éãå§è²ããŠãããæ±ºããããæš©éã®ç¯å²å
ã§ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãå¯èœã«ãªããŸãã ã¯ã©ã€ã¢ã³ã ä¿è·ããããªãœãŒã¹ã«ã¢ã¯ã»ã¹ããããšããã¢ããªã±ãŒã·ã§ã³ã ãªãœãŒã¹ãµãŒã㌠ããŒã¿ãæ©èœãæäŸãããµãŒãã¹ãäžè¬çã«ã¯WebAPIã®åœ¢ã§æäŸãããŠããã ãªãœãŒã¹ãµãŒããŒã¯ãªãœãŒã¹ãªãŒããŒãèš±å¯ããã¢ã¯ã»ã¹ãåãå
¥ããå¿
èŠãããããã®ææ®µãã¢ã¯ã»ã¹ ããŒã¯ ã³ãšãªããŸãã ã¢ã¯ã»ã¹ã®ãã³ã«ã¢ã¯ã»ã¹ ããŒã¯ ã³ã®ç¢ºèªãè¡ããèš±å¯ããŠããã¢ã¯ã»ã¹ãã©ããã倿ããã èªå¯ãµãŒã㌠èªå¯ãµãŒããŒã®æ©èœã¯ä»¥äžã®ïŒã€ã«ãªããŸã ãªãœãŒã¹ãªãŒããŒãèªèšŒãã(ãã°ã€ã³ã®èªèšŒã§ã¯ãªãããªãœãŒã¹ã®ãªãŒããŒã§ããããšã確ãããããã®èªèšŒ) ã¯ã©ã€ã¢ã³ãã®ãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã«ã€ããŠãªãœãŒã¹ãªãŒããŒã®åæãåŸã ã¢ã¯ã»ã¹ ããŒã¯ ã³ãçºè¡ãã äžèšäŸã ãšããªãœãŒã¹ãªãŒããŒã Google ã¢ã«ãŠã³ãã«ãã°ã€ã³ãããç»åç·šéã¢ããªã Google Photoã«ã¢ã¯ã»ã¹ããããšãã«ã€ããŠåæãããšãã¯ã©ã¢ã³ãã«å¯ŸããŠã¢ã¯ã»ã¹ ããŒã¯ ã³ãçºè¡ããŸãã ããããã®é¢ä¿ ç¶ããŠããããã®é¢ä¿ã«ã€ããŠãã£ãããŸãšããŸãã â èªå¯ãµãŒãã«å¯ŸããŠããªãœãŒã¹ãžã®ã¢ã¯ã»ã¹æš©ããèŠæ±ãã â¡ èªå¯ãµãŒããŒã¯ãã¯ã©ã€ã¢ã³ããžã®ã¢ã¯ã»ã¹æš©ã®å§è²ãã«ã€ããŠãªãœãŒã¹ãªãŒããŒã«ç¢ºèªãè¡ã ⢠ãªãœãŒã¹ãªãŒããŒã¯ã¢ã¯ã»ã¹æš©ã®å§è²ã«å¯ŸããŠåæããã ⣠èªå¯ãµãŒããŒã¯ã¢ã¯ã»ã¹æš©ãå§è²ããã蚌ã§ããã¢ã¯ã»ã¹ ããŒã¯ ã³ãã¯ã©ã€ã¢ã³ãã«çºè¡ãã †ã¯ã©ã€ã¢ã³ãã¯ã¢ã¯ã»ã¹ ããŒã¯ ã³ããã£ãŠãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ã宿œãã çµããã« ä»åã¯OAuthã«ã€ããŠãåŠç¿ãè¡ã£ãå
容ãç°¡åã«æžãããŠããã ããŸããã ãŸã ãŸã çè§£ã§ããªãããšãããããããã®ã§åŒãç¶ãåŠç¿ãè¡ãªã£ãŠãããOAuthã«é¢ããèšäºã®äœæãè¡ãªã£ãŠãããã°ãªããšæããŸãã
ã¯ããã« ã¯ãããŸããŠã ã©ã¯ ã¹ã® iketomo ïŒãããšãïŒ ãšç³ããŸãã åŒç€Ÿã®ãªãã·ã§ã¢éçºæ ç¹ïŒ ã©ã¯ ã¹ ãããã ïŒã¯2014å¹Žã«æ°èŠã§ç«ã¡äžããã仿ã§7幎ç®ã«çªå
¥ããŠãŸãã ç§ã¯4幎ç®ïœ6幎ç®ãŸã§ã®3幎éãæ ç¹é·ãšã㊠ãããã çŸå°ã§åããããŠããã ããä»å¹Ž6æã«åž°ä»»ãããŠããã ããŸããã ç§èªèº« ãããã ã§ã¯è²ã
ãšæ¥œããããšããèŠåŽããããšããããŸããã ããã§ã®å®äœéšã»çµéšãèžãŸããã話ããããŠããã ããŸãã ãããèšäºãæŒãã°ãªãã·ã§ã¢éçºã«é¢ããèšäºã¯æ£èŠããããšæããŸãã ãããã£ã ããããèšäº ãšã ãããã çŸå°ã§ã®3幎éã® ãªã¬ãªã¬çµéš ãšãç
§ããåãããŠç޹ä»ãããŠããã ããŸãã ãããããªãã·ã§ã¢éçºã®çŸå®ã»çå®ãæãåã£ãŠããããã°ãšæããŸãã äžèšã®5ã€ã®èгç¹ããã玹ä»ãããŠããã ãæåŸã«ãŸãšããšããŠææ³ãå°ãè¿°ã¹ãããŠããã ããŸãã ã¯ããã« (1). ã³ã¹ã (2). æè¡ã»å質 (3). ã³ãã¥ãã±âã·ã§ã³ (4). IT人æ (5). é¢è·ã»å®çç ãããã çŸå°ã§ã®3幎éã®ãªã¬ãªã¬ãŸãšã ãã®èšäºã§ã¯ ãããã ïŒ ããŒããã³ ïŒã§ã®åŒç€Ÿã§ã®çµéšã䞻軞ãšãªã£ãŠãããä»ã®åœã®äºãšã¯äºæ
ãç°ãªãç¹ããäž»èŠ³ãæ··ãã£ãŠããç¹ããããŸãã®ã§ãäºæ¿ãã ããã ãããªã話ãè±ç·ããŸãã ãããã 人 ã«ããããšãããšèªå·±ç޹ä»ããŠããããããšãã£ãŠåŒã¶äººãå€ãã£ãã§ãã ãªãããšãããš ãããã ã§ã¯ å³ã®çŽ ïŒ ãã ã®ããšïŒ ãæããæ ¹ä»ããŠããŠãããããšãã®æ¹ãåŒã³ãããã®ã§ããããã«æ°ã¥ãã®ã«3幎ããããŸããã ã§ã¯äž»è»žã®è©±ãžãšç§»ããããŠããã ããŸãã (1). ã³ã¹ã â ããããèšäº äžè¬çã«ãªãã·ã§ã¢éçºã§ã¯ ã³ã¹ããå®äŸ¡ ã ãšãããŠããŸãã çŸåšã® ãããã ã«ãããŠãIT人æã¯å任絊ã§èšãã°æ¥æ¬ã® 1/4 ïœ 1/3 ãšãã£ããšããã§ããããã ãã ãææãéã¿ããšããã®ãŸãŸäººä»¶è²»ããã®ãŸãŸçŽçµããŠã³ã¹ãã 1/4 ïœ 1/3ãšãªããŸããã ITã«ãããŠãæ¥æ¬ãšåãææãã§ãããã§ã¯ãªãã®ã§ãäžèšã®çµŠäžå·®ããã®ãŸãŸåæ ãããããšã¯ãªãã§ãã âãªã¬ãªã¬çµéš åŒç€Ÿã§ã3幎åã¯æ¥æ¬ã® 1/4 ïœ 1/5 äœã®çµŠäžã§ããã ããåŸè¿°ããŸããã ãããã ã«ãããŠIT人æã¯å£²ãæåžå Žã§ããã幎ã
絊äžã¢ããããŠããŸãã çŸåšã§ã¯æ¥æ¬ã® 1/4 ïœ 1/3 äœãŸã§äžãããŸããã ã§ã¯ã³ã¹ãã¯ã©ãã§ãããã åŒç€Ÿã§ã¯ææããèšç®ããéçºã³ã¹ããæ¥æ¬ãšæ¯ã¹ããšãæ¥æ¬ã® 1/1.5 ïœ 1/2 ãšãªã£ãŠãããŸãã çŸç¶ã«ãã㊠ãããã ã®ãªãã·ã§ã¢éçºãããã°ã³ã¹ãã¡ãªããã¯åºããšç¢ºå®ã«èšããŸãã ãã ãã絊äžãäžãã£ãŠããã®ã§ãæ°å¹ŽåŸã«ã³ã¹ãã¡ãªãããã§ããã©ããã¯ããªãã·ã§ã¢éçºæ ç¹ã®ææãšå質ã«ãããšããã倧ããªãŠãšã€ããå ãããšèšããŸãã 絊äžã®å¢å ãšå
±ã«ãææã倧ããããªããšãã³ã¹ãã¡ãªããã¯ã©ãã©ãäžãã£ãŠãããŸãã ãªã®ã§ 絊äžã¢ããã«è² ããªãæé·ãç¬èªæ§ ãå¿
é ã ãšèšããã§ãããã åŒç€Ÿã«ãããŠã¯ ã©ã¯ ã¹ã® ã¯ã©ãŠã ãµãŒãã¹ã®éçºã«ãããŠãæé·ãšç¬èªæ§ã远æ±ããäºãšããŸããã åæãéæã§ ãããã ã®ææãç®æãã¹ãæ¹åïŒ ãããã ã«ãããŠã® Saas éçºNo1ïŒããããŠæ¬ç€Ÿã®æ¥çžŸã宿çã«å ±åã»å
±æãã¡ã³ããŒãšäŒç€Ÿã®æé·ãæããŠãããããã«ããŸããã æè¿ã§ã¯ã³ã¹ãã¡ãªãããšãããšãããè±ãã ã©ã¯ ã¹ã® ã¯ã©ãŠã ãµãŒãã¹æ¡å€§ããŠããäžã§çŽç²ã«çµ¶å¯Ÿå¿
èŠãªéçºããŒã ãšããäœçœ®ã¥ãã«å€ããã€ã€ãããŸãã â»æ®æ®µã¯éœæ°ã§ããä»äºäžã¯çå£ (2). æè¡ã»å質 â ããããèšäº äžè¬çã«ã¯ãæ¥æ¬ãããªãã·ã§ã¢éçºæ ç¹ã®æè¡ã»å質ã¯äœããšèšãããŠããŸãã ãã ã ãããã ã® ITæè¡ è
ã¯ä»ã®æ±å ã¢ãžã¢è«žåœ ããæè¡åãé«ã ãšãããŠããŸãã ãããã ã§ã¯ãã¹ããèŠæãšãããšã³ãžãã¢ããããæ¡ä»¶ã«ãã£ãŠã¯å質ãé«ãã£ãããäœããªãæããããŸãã QC(ãã¹ã¿ãŒ)ãå®è£
ãè¡ãã¡ã³ããŒãšã¯å¥ã« ã¢ãµã€ ã³ããããšããããŸãã âãªã¬ãªã¬çµéš åŒç€Ÿã®ãªãã·ã§ã¢éçºç«ã¡äžãã®åæã§ã¯ãæè¡ã»å質ãäœããšæããããšãå€ããããŸããã ãã幎æ°ãéã ãããã ã® éçºã¡ã³ããŒãæé·ããããšã§ãæ¥æ¬ã®æè¡ã»å質ã«è¿ã¥ããŠããããšãã§ããŸããã æè¿ã§ã¯æè¡ã»åè³ªãæ¥æ¬ãäžåã£ãŠããã±ãŒã¹ãæ£èŠããã äžéšã®ã¡ã³ããŒã¯æ¥æ¬ã¡ã³ããŒãããã³ãŒãã»ä»æ§ã«è©³ãããªã£ãŠããŠããŸãã ãããã 人 ã® ITæè¡ è
ã®ã¬ãã«ãäœããïŒãšèãããã°ãå人çã«ããã§ã¯ãªããšèããŠããŸãã ã§ã¯äœã®å·®ãããããšèšããš ãæ¥æ¬ãšæã£ãŠããã¹ãã«ã»ãããéãã ãæ¥æ¬ã®ããã©ã³ã¡ã³ããŒãè¿ãã«å±
ãŠããã«èãã¢ã ãã€ã¹ ãè²°ããšããããšãã§ããªãã ãšãã2ç¹ã®å·®ããããŸãã ãæ¥æ¬ãšæã£ãŠããã¹ãã«ã»ãããéãã æ¥æ¬äººã¯å質ã®éšåã§ã¯åªäœæ§ãæã£ãŠããŸãã äžæ¹ã§ ãããã 人 ã¯æ°ããæè¡ãããã«åžåãããšãã£ãç¹æ§ããããŸãã ããããã«è¯ããšããããããã©ã¡ããåªããŠãããšããåªå£ã¯ãªããšæããŠããŸãã æ¥æ¬ã§ã¯æ°åã¯ç ä¿®ãæ°ãæããåŸã«ãããããéçºã«å
¥ã£ããããããšããããŸãã ãããã ã§ã¯æ°åãå
¥ç€ŸåŸã«çŽãã«éçºã«å
¥ã£ãп޻èºããããšãã§ããŸãã ã¹ãã«ã»ããã¯ç°å¢ãæŽãã°æ¥æ¬ãšåæ§ã®ã¹ãã«ã»ãããåžåããŸããè¥ããã°è¥ãã»ã©åžåã®é床ãéãã®ã¯èªæã®çã§ãããã ãæ¥æ¬ã®ããã©ã³ã¡ã³ããŒãè¿ãã«å±
ãŠããã«èãã¢ã ãã€ã¹ ãè²°ããšããããšãã§ããªãã ããã¯æ¥æ¬ã§ãéçºã¡ã³ããŒãé¢ããŠããããã³ãã¥ãã±ãŒã·ã§ã³ãäžæããããªããšåæ§ã®ããšãçºçãããšæããŸãã èãã人ãè¿ãã«ããŠèªèéœéœ¬ããªãããŠéçºã§ããããããè¯ãéçºç°å¢ã«ããã倧ãããŠãšã€ããå ããéšåãšèããŠããŸãã èšèã»æåãéããè·é¢ãé¢ããŠããç°åœéã§ã¯ãããã£ãè¯ãç°å¢ãä¿ã¡ã¥ãããã¡ãªããããããŸãã ãããã£ãæ¥æ¬ãšã®å·®ã¯ãæ¥æ¬åŽã®éçºã¡ã³ããŒãšã®ã³ãã¥ãã±ãŒã·ã§ã³ã®é¢šéããè¯ããããããªãã·ã§ã¢éçºæ ç¹ã«ããã©ã³ã¡ã³ããŒïŒè©²åœäŒç€Ÿã§ã®åšç±ã3幎以äžïŒãå¢ããŠããã°åŸã
ã«ç°å¢ã®å·®ãçž®ããããšãã§ããŸãã ãŸãæ¥æ¬åããããšãã§ããŸãããªããªã ãããã 人 ã¯åäžå¿ã匷ããæ¥æ¬ããªã¹ãã¯ãããŠããæ¥æ¬ããåŠãŒããšããå§¿å¢ã匷ãããã§ãã æ¥æ¬â ãããã ãŸã㯠ãããã âæ¥æ¬ãžåºåŒµããããšã§æ¥æ¬é¢šã®ããæ¹ã»æåãåŠãã§ãããããšã广ããããŸãã åŒç€Ÿã§ã¯æ¹åã» PDCA ã»æ¯ãè¿ããç¹°ãè¿ãè¡ãããšã§æ¬¡ç¬¬ã«ã¡ã³ããŒã¯èªçºçã«èããªããèªå·±æé·ããŠããçµç¹ãžãšå€è²ããŠãããŸããã â»ã³ãŒãã¬ãã¥ãŒææã®æ¯ãè¿ã (3). ã³ãã¥ãã±âã·ã§ã³ â ããããèšäº ãªãã·ã§ã¢éçºã§ã¯ã©ããã£ãã³ãã¥ãã±ãŒã·ã§ã³ãããã®ã§ãããã ã³ãã¥ãã±ãŒã·ã§ã³ãããã«ã¯ä»¥äžã®æ¹æ³ããããŸãã ãã³ãã¥ãã±ãŒã¿ãŒïŒéèš³å
Œç¿»èš³ïŒãä»ãã ã BSE (ããªããžSE)ãä»ãã ãè±èªã§ãããšãããã ãªãœãŒã¹ãšã¹ãã«ã«ããããããã®æ¹æ³ãéžæããããšã«ãªããŸãã ã³ãã¥ãã±ãŒã¿ãŒã§ãã§ããã 瀟å
ã®è±èªã¹ãã«ãé«ããã°è±èªã§ããã®ãè¯ãã åªç§ãª BSE ãæ¡çšã§ããã®ã§ããã° BSE ã§ãè¯ãã ãããã ã¯ èŠªæ¥ ãªäººãå€ãæ¥æ¬èªãã§ããã³ãã¥ãã±ãŒã¿ãŒã BSE ãæ°å€ããããšãã£ãç¹åŸŽããããŸãã æã«èšèã»æåã®éããããæã«èªèéœéœ¬ãçºçããããšããããæã£ãããã«æç€ºãéããªãã£ãããæã£ãææãã§ãªãããšããããŸãã âãªã¬ãªã¬çµéš åŒç€Ÿã§ã¯ ãã³ãã¥ãã±ãŒã¿ãŒãä»ãã ãéžæããŸããã èšèšæžãªã©ã®ããã¥ã¡ã³ãã¯æ¥æ¬èªââ ãããã èª ã«ç¿»èš³ããŸãã åçŽãªè³ªåã¯è±èªã§è¡ã£ãŠããŸãã é£ãã質åã¯ããã£ããäžã§ç¿»èš³ããŠããããã MTG ãéããŠã³ãã¥ãã±ãŒã¿ãŒã«éèš³ããŠããããŸãã ã§ãçµæãã©ãã ã£ãããšèšããããšãçŸåšã§ã¯å¹žããªããšã«ã³ãã¥ãã±ãŒã·ã§ã³ã«ããèªèéœéœ¬ã¯æ®ã©çºçããŠããŸããã ãããã«è³ããŸã§ã¯ãè²ã
ãªéå£ããã察å¿ããŠããŸããã âã³ãŒãã£ã³ã°ãªã©ã®å°éçãªé£ããå
容ã«ãªããšéèš³ã®å質ãèœã¡ãã ããã«å¯ŸããŠã¯é±ïŒã§ITå匷äŒãããŠãéèš³ã BSE ã«è¿ãç¶æ
ã«ãªã£ãŠããããŸããã WebãµãŒããšã¯ãªãããïŒãšãããšããããããã°ã©ãã³ã°æŒç¿ãŸã§è¡ããç¥èãèªåŠã§ãããšããŸã§æé·ããŠããããŸããã ã³ãã¥ãã±ãŒã¿ãŒã¯æ²¢å±±ããŠããITã³ãã¥ãã±ãŒã¿ãŒã¯å€ãã¯ããªããšããèãã§èªãè²ãŠããšããæ¹éã§ãããŸããã âããããªãæã§ã質åãããã«é²ããåŸã«èªèéœéœ¬ãçºçããã ããã«ã¯2ã€ã®èŠå ããããŸãã ããªãã¹ãæ©ãããããšãè¯ããšãã ãããã æåã éçºã«ãããŠã¯èªèéœéœ¬ãäžçªé§ç®ã ïŒ å ±é£çž ã倧äºã ïŒãšããããšãç¹°ãè¿ãäŒãã質åæåãéžæããŸããã ãã1ã€ã¯ãæ¥æ¬ãšã®äžäžé¢ä¿ããå§çž®ããŠè³ªåã§ããªããªã£ãŠããŸããããšã§ãã æ¥æ¬ã¡ã³ããŒã ãããã 人 ãè€ãããã質åã«ã¯å³çããŠãããããšã§ã質åããããç¶æ³ãäœããåŸã
ã«è§£æ±ºããŠãããŸããã â倧äºãªå
容ãäŒãã£ãŠããªãã éèŠãªäºãšèªèãããã€ã³ãã«æåéã®å·®ããããæ¥æ¬ãéèŠèŠããããšãèŠèœãšãããŠããŠãéã«éèŠèŠããªããšããã«éãã眮ãããšããããŸãã ç§ã¯é£ãã話ãããæã¯ãå
ã«ã³ãã¥ãã±ãŒã¿ãŒã«ãã£ãããšèª¬æããŠçè§£ããŠããããå®éã®éèš³ã®æã«èœã¡çããŠéèš³ããŠãããããã«ããŸãããç°¡æã§ãããã®ã§å£é ã ãã§ã¯ãªãã¢ãŠããããããããšããã«éèš³ã®é£æåºŠãäžããç解床ãäžãããŸãã éèš³ã¯ãªã¢ã«ã¿ã€ã ã§é£ããäœæ¥ã§ãããããªãå°éçãªé£ãã話ãããŠãå£é ã§è©±ããŠãã¯ããããéèš³ããŠãã ãããšèšã£ãŠãããªããªãã§ãããã®ã§ã¯ãããŸããã ãŸãã¯å
容ãçè§£ãããšããæéã§ãã£ããçè§£ããŠãããããããããŒã¹ã«éèš³ããŠãããã°ãç§ãã¡ã®æå³ãå¹çããäŒããŠãããããšãã§ããŸãã â»ããŒã ã¯ãŒã¯ãšã³ãã¥ãã±ãŒã·ã§ã³ã倧å (4). IT人æ âããããèšäº ãªãã·ã§ã¢éçºãšèšã£ãŠããããããªåœããããŸãã ãããã ã¯ä»ã®æ±åã¢ãžã¢ããåªç§ãªIT人æãè±å¯ã«æã£ãŠãããšèšãããŠããŸãã è¥ãåªç§ãªäººæãå®ãã³ã¹ãã§ç²åŸããããšãã§ãããšããã®ãé説ã§ãã ããæ¥ç³»ãæ¬§ç±³äŒæ¥ã®åç»ãå€ãè¿å¹Žã§ã¯ ãéèŠ ïŒ äŸçµŠã ã§å£²ãæåžå Žãšãªã£ãŠãã 幎ã
絊äžããŒã¹ãäžãã£ãŠããŠããŸãã âãªã¬ãªã¬çµéš åªç§ãªIT人æãä»ã®æ±åã¢ãžã¢ã®åœããå€ããšããã®ã¯äºå®ã§ãã ãŸãæ¥æ¬ããIT人æãç²åŸãããããåãããã°ãã®éãã§ãã ã§ã¯èªç€Ÿãæ±ããIT人æãç°¡æã«ç²åŸã§ããããšèšãããã°ããããªããšã¯ãªãã§ãã äžèšããŸããããéèŠ ïŒ äŸçµŠã ãšãªã£ãŠããäžã§ã¯å瀟ã§åµæå·¥å€«ãå¿
èŠã§ãã ãã ãã èŠªæ¥ ã®åœã§ãããæ¥æ¬äŒæ¥ã«å
¥ãããïŒæ¥æ¬äŒæ¥ã§åŠã³ããïŒãšæãIT人æãæ°å€ãããŸãã ãããã£ã人æã®äžããèªç€Ÿã«åã£ã人æãç²åŸããããšã«ãªããŸãã ã¹ãã«ãæ§æ Œã«ãã ããããªããã°ãç°¡æã«ç²åŸããããšãã§ããŸãã åŒç€Ÿã§ã¯æ±ããéšåãå€ããè²ã
ãªåªåããã€ã€ããªããšãç²åŸã§ããŠãããšãã£ããšããã§ãã ãè¯ã人æãžã®ãªãã¡ãŒã¯åœæ¥äžã«åºããã Facebook ã§é
åã¢ããŒã«ããéå»ã®é¢æ¥è
ã«ãå床é£çµ¡ãã ãªãã¡ã©ã«æ¡çš ã®ãã£ã³ããŒã³ãçãã§ããããšã¯ãªãã§ããã©ã€ããŸããã â»è¡šåœ°ããããšã§ã¢ãããŒã·ã§ã³ã¢ãã (5). é¢è·ã»å®çç âããããèšäº ãããã ã«ãããŠã¯ æ¥æ¬ãšæ¯ã¹ãŠIT人æã® é¢è·ç ã¯é«ããå®ççã¯äœã ãšãããŠããŸãã ãžã§ã ãããã³ã° ãåœããåã§ãæ°åã¯2幎äœã§è»¢è·ããããšãæ®éãšãããŠããŸãã ãã£ããè²ãŠãã¡ã³ããŒãããããšåæ¥æ¬äŒæ¥ã®é ãæ©ãŸããŠããŸãã é¢è·ãå€ããšãæãç«ã€çµç¹ããŸãã¯é¢è·ããªãçµç¹ãç®æãããšã«ãªããŸãã âãªã¬ãªã¬çµéš åŒç€Ÿã§ãäŸã«ãããã2幎ã3幎å㯠é¢è·ç ãé«ãã£ãã§ãããæè¿ã§ã¯ããªãäœããªã£ãŠããŸããã é¢è·ç ãé«ããªããšãäŒç€ŸãšããŠã®ããŠããŠã®èç©ãã§ãããçµç¹ãšããŠã®æé·ã¯æããŸããŸããã é¢è·ç ãé«ããå®ççãäœãããšã¯ãã©ã®äŒç€Ÿã§ã倧ããªèª²é¡ ã§ãã åŒç€Ÿã§ã¯æåã®3幎éã¯ã¹ã¿ãŒãã¢ãããšããããšããããããçš é¢è·ç ã¯é«ããããŸããã§ããã ãã®åŸãåŒç€Ÿã§ã®çµéšãããŒã¹ã«ä»ç€Ÿã«è»¢è·ããããšãããã é¢è·ç ãé«ããªããŸããã ãããŠçŸåš é¢è·ç ã¯äœããªã£ãŠããŸãã ã§ã¯ãäœãå€ãã£ãã®ãïŒå€ããã®ãïŒ åŒç€Ÿã§ã¯ ãäŒç€Ÿã®ç¬èªæ§ãšå±
å¿å°ã®è¯ãããšãããšããã匷ãä»ç€Ÿãšã®å·®å¥åãå³ããŸããã ãèªçºçãªçµç¹ã èšãããããšãããã ãã§ã¯ãªãèªçºçã«åãã ãããããŠã³ ã§ã¯ãªã ããã ã¢ãã ã®è¡åãããè©äŸ¡ããã ãæ¹åã» PDCA ã ã®åŸ¹åºãæã¯æåŠæã匷ãã£ãã§ãããç¹°ãè¿ã宿œããããšã§ããŒã ãšããŠã®æé·ãæããŠãããä»ã§ã¯ãããæ®éã«ãªãäœãèšãããšãæ¯ãè¿ãïŒïŒŽïŒ§ãè¡ã£ãŠãããŸãã ããšã«ããæ¥œããã ãç®æããäœã楜ããããèªåãã¡ã§è°è«ãããå®è¡ã»äž»å¬ããŠãããããã«ããŸããã ã絊äžã¢ãããããããšã§ããçšåºŠè»¢è·ãé²ãããšã¯ã§ããŸãããããã¯é倩äºã§éçããããŸãã 絊äžãæ±ããã¡ã³ããŒã¯çµŠäžã¢ãããããšããŠããããã«é«ã絊äžãç®æããŠè»¢è·ããŠããŸããŸãã ãããã£ãã¡ã³ããŒã¯ãã€ãå»ãäºã«ãªãã®ã§åŒãçããªãæ¹ãè¯ãã§ãããã â»ã³ã¢ããªã¥ãŒã®æµžéã§ç€Ÿå
æåã®éžæ ãããã çŸå°ã§ã®3幎éã®ãªã¬ãªã¬ãŸãšã 仿åã»ä»èšèªãšããããšããããããããèŠåŽããåŽé¢ããããŸããã ãããã€ã§ã ãããã 人 ã®åªãããšæãã ãç§ãæ¯ããŠãããŸããã çµæãšããŠã¯ç§ãæ³åããŠãã以äžã«ã ãããã 人 ã®åäžå¿ã¯åŒ·ãã倧ããæé·ããŠãã ãä»ã§ã¯æã£ã以äžã®ææãåºããèªãããçµç¹ãšå€è²ããããšãã§ããŸããã å人çã«ã¯ 宿ã«ã³ã¹ãã¡ãªããã ããèŠãŠãªãã·ã§ã¢éçºããã£ãŠã¿ãããšã¯ãã¹ã¹ã¡ã§ããŸããã ã³ã¹ãã¡ãªããã¯äœãããªããã°é¢šåããŠããããã§ãã 圌ããšäžå¿åäœãšãªã£ãŠæé·ããããšã決å¿ããŠãã ããã ãã®æ°æã¡ãäŒãããé©åãªä»çµã¿ãã¢ã ãã€ã¹ ãããã°å¿
ãæé·ããŠã³ã¹ãã¡ãªãããè¶
ãã æåŸ
以äžã®æé·ãšææãåºããŠãããŸãã äŒç€Ÿç¬èªã®æŠç¥ã§ç€Ÿå¡ã®å®ççãé«ããŠãã ããã é¢è·ç ãæããããšãã§ãããªããããšã¯æé·ãåŸ
ã€ã®ã¿ã§ãã äžèšã®ã玹ä»ããå
容ãçæ§ã®ãªãã·ã§ã¢éçºãå§ãããã£ãããã課é¡ãæžå¿µã®è§£æ±ºã®ç³žå£ã«ãªãã°å¹žãã§ãã é·æã«ãªããŸãããæåŸãŸã§èªãã§ãã ãã£ãæ¹ããããšãããããŸãïŒ â»èªçæ¥ã¯ã¡ãã£ãšãã瀟å
ã㌠ãã£ãŒ ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã forms.gle ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ rakus.connpass.com
ã¯ããã« ããã«ã¡ã¯ãitoken1013ã§ããæãæ¯æ¥ãç¶ããŸããïŒ ä»å玹ä»ããã®ã¯ãå®åã§ãå人éçºã§ããªã¹ã¹ã¡ã®HerokuïŒããã¯ïŒã®åºç€çãªäœ¿ãæ¹ã«ãªããŸãã Herokuã䜿ãããšã§ãéçºããWEBã¢ããªã±ãŒã·ã§ã³ãæè»œã«å
¬éããããšãã§ããŸãã ãã®èšäºã§ã¯Herokuã®æŠèŠã説æããåŸãç°¡åãªå
¬éïŒãããã€ïŒã®æé ã玹ä»ããããšã§ãåå¿è
ã§ãHerokuã䜿ã£ãéçºè
ã«å
¥éã§ããå
容ãšãªã£ãŠããŸãã ä»åã®èšäºãåèã«ãã¹ãã€ããŒã äžã® ã¹ãã«ã¢ãã ãé²ããŠããã ããã°å¹žãã§ãïŒ ã¯ããã« Herokuã®æŠèŠ ãŸããPaaSãšã¯ ããã§ã¯ãHerokuãšã¯ 倿§ãªèšèªã»FWããµããŒãããŠãã ãã©ã³ã«ãã£ãŠã¯ç¡æã§äœ¿ãã Gitã³ãã³ãã§æäœã§ãã æ¡åŒµæ©èœãéåžžã«å€ã Herokuã䜿ã£ãŠã¿ã Herokuã®ã¢ã«ãŠã³ããç»é²ãã Heroku CLIãã€ã³ã¹ããŒã«ãã Windows ã®å Žå Mac ã®å Žå Herokuã«ãã°ã€ã³ãã ãããã€ãè¡ã ã¢ããªã±ãŒã·ã§ã³ã®ååŸ ãããã€å®æœ åäœç¢ºèª ãããã« Herokuã®æŠèŠ ãŸããPaaSãšã¯ ã¯ã©ãŠã ãµãŒãã¹ã¯å€§ãã SaaS ãPaaSãIaaSã®3çš®é¡ã«å€§å¥ãããŸãããHerokuã¯ãã®ãã¡ãPaaSïŒPlatform as a ServiceïŒã«åé¡ãããŸãã PaaSãšã¯ãéçºããWEBã¢ããªã±ãŒã·ã§ã³ãéçºã»å®è¡ããããã®åºç€ïŒãã©ãããã©ãŒã ïŒãæäŸãããµãŒãã¹ãæããŸãã PaaSãå©çšããããšã§ããããŸã§å¿
èŠã ã£ããµãŒããŒã®è³Œå
¥ãOSãDBãWEBãµãŒããªã©ã® ããã«ãŠã§ã¢ é¡ã®ã»ããã¢ãããäžèŠãšãªããéçºè
ã¯ã€ã³ã¿ãŒãããè¶ãã§PaaSãæäœããã ãã§ãæè»œã«WEBã¢ããªã±ãŒã·ã§ã³ã® ãã¹ãã£ã³ã° ãã§ããããã«ãªããŸããã ãŸãç»é¢ã ã³ãã³ãã©ã€ã³ äžã§ã¹ã±ãŒã«ã¢ããïŒã¢ãŠããæè»œã«è¡ãããšãã§ãããã®ç¹ãWEBã¢ããªã±ãŒã·ã§ã³ã®å
¬éã®ããŒãã«ãäžããäžå ã§ãã ãã®ããã«PaaSãæ®åããããšã§ãéçºè
ã¯æ¬è³ªçãªéçºäœæ¥ã«éäžããããšãå¯èœã«ãªããŸããã ããã§ã¯ãHerokuãšã¯ äžèšã§èª¬æããŸããPaaSã§ããHerokuã䜿ãããšã§ãäœæããã¢ããªã±ãŒã·ã§ã³ãæè»œã«å
¬éããããšãå¯èœãšãªããŸãã ä»ã®PaaSãšæ¯èŒããéã®Herokuã®ç¹åŸŽã«ã¯ã以äžã®ç¹ãæããããŸãã 倿§ãªèšèªã»FWããµããŒãããŠãã å
ã
㯠Ruby åãã®PaaSã ã£ãHerokuã§ãããçŸåšã§ã¯åœå
ã§æ±ãããŠããäž»èŠèšèªãšFWïŒä»¥äžïŒãã»ãŒã«ããŒããŠããŸãã ãã®å¯Ÿå¿èšèªã®åºãããPaaSã®äžã§ãHerokuãå€ã掻çšãããäžå ã§ãããã Ruby ïŒ Rails å«ãïŒ PHP Java Node.js Python Go Scala ïŒPlayå«ãïŒ Clojure ãŸãå
¬åŒãµããŒããããŠããäžèšä»¥å€ã«ããbuildpackãšåŒã°ããæ©èœãå©çšããããšã§ãåžæã®èšèªã»FWãHerokuäžã§å©çšããããšãã§ããŸãã jp.heroku.com ãã©ã³ã«ãã£ãŠã¯ ç¡æ ã§äœ¿ãã Herokuãæ®åããæå€§ã®èŠå ãšãã£ãŠãéèšã§ã¯ãªãã®ããå©çšãã©ã³ã§ãã Herokuã«ã¯æ°çš®é¡ã®å©çšãã©ã³ããããŸããã Freeãã©ã³ãå©çšã®å Žåãç¡æã§Herokuãå©çšããããšãã§ããŸãã ãã¡ããç¡æã§ãããæ
ã«å¶çŽã¯ååšããŸãããå人ç㪠ã¹ãã«ã¢ãã ãç®çãšããå©çšã«ããã£ãŠã¯Freeãã©ã³ã§å·®ãæ¯ããªãã¯ãã§ãã ïŒå°ãªããšãç§ããã©ã€ããŒãã§å人å©çšããŠããäžã§ã¯ãäžåºŠããã©ã³å€æŽã¯çºçããŠããŸããïŒ åå
¥ãç®çã«ã¢ããªã±ãŒã·ã§ã³ãå
¬éããå Žåã§ã¯Freeãã©ã³ã§ã¯èããããªãããšæããŸããããããŸã§ ã¹ãã«ã¢ãã ã®ããã®å©çšã§ããã°ãHerokuãç¡ææŽ»çšããããšãå¯èœã§ãã ãã ããä»åŸãã©ã³ã®èŠçŽããçºçããå¯èœæ§ã¯ãããŸãã®ã§ããå©çšã®éã¯äºåã«ä»¥äžã®å
¬åŒããŒãžãåç
§ããã ããã°ãšæããŸãã jp.heroku.com Gitã³ãã³ãã§æäœã§ãã Herokuã§ã¯ã¢ããªã±ãŒã·ã§ã³ããããã€ããæäœãšããŠããšã³ãžãã¢ãªãã銎æã¿ã®Gitã³ãã³ããå©çšããŸãã ãã®ãããHerokuãžã®ãããã€äœæ¥ã®ããã«èŠããããšã¯æå°éã§æžã¿ãŸãã Herokuããªã¢ãŒ ããªããž ããªãšã㊠git push ããã€ã¡ãŒãžã§ãã®ã§ãæ®æ®µãããšã³ãžãã¢ã®ææ
£ããæäœã§æè»œã«ã¢ããªã±ãŒã·ã§ã³ãå
¬éããããšãã§ããŸãã ãªããåŸç¶ã®æé ã§ã¯Gitã䜿ã£ãæäœãå¿
èŠãšãªããŸãã Gitãæªã€ã³ã¹ããŒã«ã®æ¹ãGitã³ãã³ãã®å©çšçµéšãæµ
ãæ¹ã¯ããŸãã¯ãã¡ããåç
§ããã ããã°ãšæããŸãã tech-blog.rakus.co.jp æ¡åŒµæ©èœ ãéåžžã«å€ã ä»åã¯ç޹ä»ããŸããããHerokuã«ã¯æ°å€ãã® æ¡åŒµæ©èœ ïŒã¢ããªã³ïŒãååšãããèªåã§å®è£
ããã«äŸ¿å©ãªæ©èœãå©çšããããšãã§ããŸãã äžã«ã¯ç¡æã®ãã©ã³ãæäŸããŠããæ©èœãããã代衚ç㪠æ¡åŒµæ©èœ ã以äžã«ç޹ä»ããŠãããŸãã èå³ã®ããæ¹ã¯ããã²ãèªèº«ã®éçºã§æŽ»çšããŠã¿ãŠãã ããã SendGridïŒã¡ãŒã«é
ä¿¡ PaperTrailïŒãã°ç®¡ç New Relic APM ïŒç£èŠ Herokuã䜿ã£ãŠã¿ã Herokuã®ã¢ã«ãŠã³ããç»é²ãã ããã§ã¯ãããããHerokuãå©çšããããã®æäœãç°¡åã«ç޹ä»ããŠãããŸãã ãŸãã¯Herokuã®ã¢ã«ãŠã³ããååŸããŸãããã 以äžã®ç»é¢ããå¿
èŠäºé
ãå
¥åã®äžããç¡æã¢ã«ãŠã³ãäœæããã¯ãªãã¯ããŠãã ããã signup.heroku.com äžèšã§å
¥åããã¡ãŒã«ã¢ãã¬ã¹ã«èªèšŒã¡ãŒã«ãå±ããŸãã®ã§ãã¡ãŒã«å
ã®ãªã³ã¯ãã¯ãªãã¯ããŠã¢ã«ãŠã³ããæå¹åããŸãã æåŸã«ãã¹ã¯ãŒãèšå®ãæ±ããããŸãã®ã§ãä»»æã®ãã¹ã¯ãŒããèšå®ããŠãã ããã ãããŸã§å®äºãã以äžã®ç»é¢ã衚瀺ãããã°ã¢ã«ãŠã³ãç»é²ã®äœæ¥ã¯å®äºã§ãã Heroku CLI ãã€ã³ã¹ããŒã«ãã æ¬¡ã«Herokuã ã³ãã³ãã©ã€ã³ äžããæäœããããã®ããŒã«ãã€ã³ã¹ããŒã«ããŸãã åŸç¶ã®ãããã€äœæ¥ã«ã¯ããã¡ãã®ããŒã«ãå¿
èŠãšãªããŸãã 以äžã®ããŒãžã«ã¢ã¯ã»ã¹ãããå©çšã®OSã«å¿ããæé ã§ã€ã³ã¹ããŒã«ãè¡ã£ãŠãããŸãã devcenter.heroku.com Windows ã®å Žå Windows çšã® ã€ã³ã¹ããŒã© ãæäŸãããŠããŸãã®ã§ãããŠã³ããŒãã®äžã ã€ã³ã¹ããŒã© ãèµ·åããŠãã ããã ä»åã¯å
šãŠããã©ã«ãã®ç¶æ
ã§é²ãã§ããã ãããInstallããã¿ã³ãã¯ãªãã¯ããã ããã°åé¡ãããŸããã Mac ã®å Žå Mac ã§ã¯ ã€ã³ã¹ããŒã© ãçšãããäžèšããŒãžã«ããã³ãã³ããã¿ãŒããã«äžã§å
¥åããŠãã ããã â»ããã±ãŒãžãããŒãžã£ã§ãã Homebrew ãã€ã³ã¹ããŒã«æžã§ããå¿
èŠããããŸãã brew tap heroku/brew && brew install heroku ãããŸã§å®äºããŸãããã CLI ãèµ·åããŠã¿ãŸãããã Windows ã§ããã° ã³ãã³ãããã³ãã ãGit Bash ã Mac ã§ããã°ã¿ãŒããã«ãèµ·åãã以äžã®ã³ãã³ããå
¥åããŠãã ããã ç¡äºã«ããŒãžã§ã³æ
å ±ã衚瀺ãããã°ã CLI ã®ã€ã³ã¹ããŒã«ã¯å®äºã§ãã $ heroku --version heroku/7.42.6 win32-x64 node-v12.16.2 Herokuã«ãã°ã€ã³ãã å
ã»ã©äœæããã¢ã«ãŠã³ãã䜿ãã CLI äžã§Herokuã«ãã°ã€ã³ããŸãã heroku login -i ãå
¥åãããš ã³ãã³ãã©ã€ã³ äžã§ãã°ã€ã³ãæ±ããããŸãã®ã§ãã¢ã«ãŠã³ãäœææã®ã¡ãŒã«ã¢ãã¬ã¹ãšãã¹ã¯ãŒããå
¥åããŠãã ããã â» iãªãã·ã§ã³ ãä»ããªãå Žåããã©ãŠã¶äžã«Herokuã®ãã°ã€ã³ç»é¢ãç«ã¡äžãããŸãããåæ§ã«ãã°ã€ã³èªèšŒãé²ããã°åé¡ãããŸããã $ heroku login -i heroku: Enter your login credentials Email: ã¡ãŒã«ã¢ãã¬ã¹ Password: ãã¹ã¯ãŒã Logged in as ã¡ãŒã«ã¢ãã¬ã¹ ãããã€ãè¡ã ããããã¯ãå®éã«Herokuäžã«ã¢ããªã±ãŒã·ã§ã³ããããã€ããŠã¿ãŸãããã GitHub äžã®ãµã³ãã«ããã°ã©ã ã䜿ãããããã€ã®æé ã玹ä»ããŠãããŸãã ç°¡åãªãããã€ã®ã€ã¡ãŒãžã瀺ããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ååŸ ãŸãã¯ä»»æã®å Žæã« ãã£ã¬ã¯ã ãªãçšæããŸãããã ä»åã¯ãrakusããšãã ãã£ã¬ã¯ã ãªé
äžã§äœæ¥ãé²ããŠãããŸãã $ mkdir rakus rakus ãã£ã¬ã¯ã ãªãžç§»ååŸã次ã«ãããã€çšã®ã¢ããªã±ãŒã·ã§ã³ã GitHub ããååŸããŸãã git clone ã䜿ããä»»æã® ãªããžã㪠ïŒä»åã¯Herokuã®ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã䜿ããŸãïŒããã¯ããŒã³ãè¡ããŸãã â»å®éã®éçºã§ã¯ãããéçºå¯Ÿè±¡ã® ãªããžã㪠ãšãªããããŒã«ã« ãªããžããª ãææ°åããŠããå¿
èŠããããŸãã $ git clone 'https://github.com/heroku/java-getting-started.git' Cloning into 'java-getting-started'... ã» ã» ã» Resolving deltas: 100% (179/179), done. ãããã€å®æœ Herokuäžã«ãããã€ãè¡ãããã®ã¢ããªã±ãŒã·ã§ã³äœæã宿œããŸãã ãŸãã¯ã¯ããŒã³ããã¢ããªã±ãŒã·ã§ã³é
äžãžç§»åããŸãã $ cd java-getting-started/ 次㫠heroku create ã³ãã³ããå
¥åãããšããããã€çšã®ã¢ããªã±ãŒã·ã§ã³ãäœæãããŸãã ãã®éã ã³ãã³ãã©ã€ã³ äžã«è¡šç€ºãããURLãæ§ããŠãããŠãã ããã ãŸãã以äžã«ç€ºã XXXX-ZZZZ-123456 ïŒäŸïŒãäœæããã¢ããªã±ãŒã·ã§ã³åã衚ããŠããŸãã â»ã¢ããªã±ãŒã·ã§ã³å㯠heroku create ã³ãã³ãã®åŒæ°ã§æå®å¯èœã§ãã æå®ããªãå ŽåããXXXX-ZZZZ-123456ãã®ãããªã©ã³ãã ãªåç§°ãå²ãæ¯ãããŸãã $ heroku create Creating app... done, XXXX-ZZZZ-123456 https://XXXX-ZZZZ-123456.herokuapp.com/ | https://git.heroku.com/XXXX-ZZZZ-123456.git æåŸã« git push heroku master ãå
¥åãããšãHerokuäžãžã®ãããã€ãè¡ãããŸãã $ git push heroku master Enumerating objects: 400, done. Counting objects: 100% (400/400), done. Delta compression using up to 4 threads. Compressing objects: 100% (190/190), done. Writing objects: 100% (400/400), 178.59 KiB | 25.51 MiB/s, done. Total 400 (delta 152), reused 400 (delta 152) remote: Compressing source files... done. ã» ã» ã» remote: https://XXXX-ZZZZ-123456.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done. To https://git.heroku.com/XXXX-ZZZZ-123456.git * [new branch] master -> master ããã§ãããã€äœæ¥ã¯å®äºã§ãã åäœç¢ºèª ãããŸã§ã§ãããã€äœæ¥ã¯å®äºã§ãããæåŸã«ãããã€ããã¢ããªã±ãŒã·ã§ã³ã確èªããŠã¿ãŸãããã äžèšã® ãããã€å®æœ ã§è¡šç€ºãããURLïŒäžèšã§ããã° https://XXXX-ZZZZ-123456.herokuapp.com/ ïŒããã©ãŠã¶ã«å
¥åããŠãã ããã 以äžã®ãããªç»é¢ã衚瀺ãããã°ãæ£åžžã«ãããã€ãå®äºããŠããŸãã ç¡äºã«ç»é¢ã衚瀺ãããŸãããïŒ ä»åã®äœæ¥ã¯ä»¥äžã§å®äºãšãªããŸãã ãç²ãæ§ã§ããïŒ ãããã« ä»åã¯Herokuã䜿ã£ãã¢ããªã±ãŒã·ã§ã³ã®å
¬éæé ã玹ä»ããŠããŸãããããããã§ããã§ããããïŒ æã£ãŠãããããç°¡åãªæé ã ãšæããæ¹ãå€ãã®ã§ã¯ãªãã§ããããïŒ å®éã®éçºã§Herokuãå¿çšçã«æŽ»çšããŠããããã«ã¯ãHerokuåºæã®æŠå¿µïŒDynoãHeroku Flowãªã©ïŒãžã®çè§£ããŸã ãŸã å¿
èŠã§ãã ã§ãããæäœéã®ãã©ãããã©ãŒã ãšããŠã®æ©èœãšå©äŸ¿æ§ã¯ããã®èšäºã䜿ã£ãŠçè§£ããã ããã¯ãã§ãã ä»åã®å
容ãè¶³ãããã«ããŠããã ããä»åŸã®éçºã«ã圹ç«ãŠããã ãããšå¹žãã§ãã ã§ã¯ã§ã¯ããŸãã®æ©äŒã«ã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã 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
ã¯ããã« æè¡åºå ±ã®itoken1013ã§ããããã«ã¡ã¯ã ãã€ã ã©ã¯ ã¹ã®ã€ãã³ãã«ãåå ããã ããŠããæ¹ã
ãæ¬åœã«ããããšãããããŸãïŒ ä»åã¯8æ1åç®ã®Meetup ãã¬ã¬ã·ãŒãå¹ãé£ã°ãPHPerå®è·µãã¯ããã¯ã ã«ã€ããŠãã³ã³ãã³ãã玹ä»ãããŠããã ããŸãïŒ ã€ãã³ãããŒãæŠèŠ ä»å㯠ãã¬ã¬ã·ãŒãå¹ãé£ã°ãã ãšãã匷åãªã€ãã³ãã¿ã€ãã«ãæ²ããããŠããã ãã ãªãªãŒã¹ãã10å¹Žä»¥äž ã®ä»¥äžãµãŒãã¹ã«æºãããšã³ãžãã¢3åãç»å£ãããŠããã ããŸããã ãããã®ãµãŒãã¹ã¯å€ãã®ã客æ§ã«é·ããå©çšããã ããçŸåšã§ãæ°ããªæ©èœè¿œå ãé²ããŠããŸãã ãã®äžæ¹ã§é·ãéçºã§èç©ããŠããã¬ã¬ã·ãŒãªé¢ãšãåãåãå¿
èŠæ§ãé«ãŸã£ãŠãããéçºé床ãšå質ãèœãšããªãããã®åãçµã¿ãæ±ããããŠããŸãã ä»åã¯ãããªåãçµã¿ã®äžã§ããããå®è·µçãªãã¯ããã¯ã玹ä»ãããŠããã ããŸããã æ¥œæ¥œè²©å£² ã¡ãŒã«ãã£ãŒã©ãŒ é
é
ã¡ãŒã« ã¡ãªã¿ã«ãåå ã®æ¹ãžå©çšèšèªããèããããšãããïŒåœç¶ã§ã¯ããããŸããâŠïŒå€§åã PHP 䜿ãã®æ¹ã§ããã ãŸããç»å£è
ãšåãããã« ã¬ã¬ã·ãŒã·ã¹ãã ã®éçºã«æºãã£ãŠããæ¹ãããã£ããããä»åã®ã€ãã³ãã§åŸããã¯ããã¯ãæ©é掻çšããããšèšã£ãŠããã ããå Žé¢ããããŸããã ã©ã¯ ã¹ã§ã¯ PHP äžå¿ã®ã€ãã³ããé »ç¹ã«éå¬ããŠãããŸãã®ã§ãä»åŸãã€ãã³ãã«ãåå ããã ããŸããšå¬ããã§ãïŒ çºè¡šã®çŽ¹ä» ããã§ã¯3åã®ãšã³ãžãã¢ã«ããçºè¡šãç°¡åã«ç޹ä»ãããŠããã ããŸãïŒ ãææã® èŠããå ãSonarQubeã䜿ã£ãŠãæ°èŠäžè¯ã³ãŒããããã¥ãŒãããªãä»çµã¿ã¥ãã æ¥œæ¥œè²©å£²ã®éçºã«æºããåªãããéçã³ãŒãè§£æããŒã« ãSonarQubeã ã䜿ã£ãã³ãŒãã¬ãã¥ãŒã®æ¹åã«ã€ããŠã®çºè¡šãšãªããŸãã äž»ã«ã¬ãã¥ãŒãäžå¿ã«æ
åœããåªã§ãããæ¥ã«æ¥ã«å¢å€§ããã¬ãã¥ãŒè² è·ãšãã課é¡ãèžãŸããéçã³ãŒãè§£æããŒã«ã®å°å
¥ã決å®ããŸããã æ°ããããŒã«ããSonarQubeãéžæããèæ¯ãå®éã«éçšãéå§ããŠããã®å¹æã«ã€ããŠè©³çްã«èªãããŠããŸãã ãµãŒãã¹ã®æ¥æ¡å€§ã«äŒŽã£ãŠã¬ãã¥ãŒã远ãä»ããªãïŒããšããæ©ã¿ããæ±ãã®æ¹ã«ã¯æ¯éãåèã«ããŠããã ãããå
容ã§ãã speakerdeck.com PHP æšæºé¢æ°ãšã®éã PHP ã®ããŒãžã§ã³ã¢ããïŒ7.1 ãã 7.3ïŒã«äŒŽã count()颿° ã®ä»æ§å€æŽã«ãŸã€ããã ã©ã¯ ã¹æå€åã®ãµãŒãã¹ã§ããã¡ãŒã«ãã£ãŒã©ãŒïŒ2001幎4æãªãªãŒã¹ïŒã§ã®ãšããœãŒããå çŽãã玹ä»ãããŠããã ããŸããã ãªãªãŒã¹ããããã20幎ãã¡ãŒã«ãã£ãŒã©ãŒã§ã¯ãããšããããå Žæã§count()颿°ãåŒã³åºããŠããïŒåŒã³åºãæ°ã¯ããã²è³æãã芧ãã ããâŠïŒãããã¹ãè«ã ãã§ã¯èªããªãæŠããç¹°ãåºããããããšãšãªããŸããã ããã«ã¯éçºäœå¶ã«èµ·å ããæ°ããªåé¡ãçãŸããŠããŸãâŠãšããèŠåŽãæ±ãããšããœãŒãã«ãªã£ãŠãããŸãã èšèªã ãã¬ãŒã ã¯ãŒã¯ ã®ä»æ§å€æŽã¯ããœãããã§ã¢éçºã§ã¯é¿ããŠã¯éããªãæŠãã§ãã ä»åã¯æŽå²ãæ±ãããµãŒãã¹ãæ¯ããããã®æŠãã§ã¯ãããŸãããã玹ä»ã®ããŠããŠã¯ã©ã®éçºã§ã掻çšã§ããã¯ãã§ãã ãã²å€ãã®ãšã³ãžãã¢ã«åœ¹ç«ãŠãŠããã ããã°ãšæããŸãã speakerdeck.com 13幎ç¶ãã¬ã¬ã·ãŒãµãŒãã¹ãå®å
šã«ãªãªãŒã¹ãç¶ããããã®ãE2Eãã¹ããš ã«ãã¬ããž ããŒã«ãå©çšãããã¹ãæŠç¥ã«ã€ã㊠ãªãªãŒã¹ãã13幎ãçµéããé
é
ã¡ãŒã«ã«ããããåå
ãåãçµããã¹ãæŠç¥ãã話ãããŠããã ããŸããã åèã®ã¬ã¬ã·ãŒã³ãŒãæ¹åã¬ã€ãã§ã¯ãèªåãã¹ããç¡ãã³ãŒãã¯ã¬ã¬ã·ãŒã³ãŒãã§ããããšè§ŠããããŠããŸãããåå
ã®æºããé
é
ã¡ãŒã«ã§ã¯ãŸãã«èªåãã¹ãç°å¢ãååšãããé«ãå質ãä¿ã£ããªãªãŒã¹ã«èª²é¡ãæ±ããŠããŸããã www.amazon.co.jp ããããã¯ãã³ãŒãã®è€éæ§ãããèšç»ã®äžç¢ºå®æ§ããšãã£ã課é¡ãæ±ããŠããéçºããŒã ã§ããããããã«åãåã£ããéèŠæ©èœãã¹ãã®èªååããã ãã¹ãé§åéçº ããªã©ã®æŠç¥ãèªãããŠããŸãã 詳现ã§å®è·µçãªå
容ã§ããããããèªèº«ã®éçºçŸå Žã§ã掻çšã§ããããšæããŠããã ããã¯ãã§ãã speakerdeck.com ãããã« ã¬ã¬ã·ãŒã«åãåã ã©ã¯ ã¹ãšã³ãžãã¢ã®åãçµã¿ããããã ã£ãã§ããããã ç°¡åãªèª²é¡ã¯1ã€ãååšããŸããããå€ãã®ã客æ§ã«ãå©çšããã ããæåŸ
ã«å¿ãããããæ¥ã
ã¬ã¬ã·ãŒãå¹ãé£ã°ããã¯ããã¯ã«åãçµãã§ããŸãã ããŠã次åã®MeetupïŒ8/25éå¬äºå®ïŒã¯ ãæ°ãµãŒãã¹ã ãããŒãã§ãïŒ ãã§ã«100人以äžã®æ¹ã«ç³ã蟌ã¿ããã ããŠããã倧ã€ãã³ãã«ãªããããªäºæãããŠããŸãã rakus.connpass.com ãŸã PHP ã«é¢ããã€ãã³ãã8æäžã«2åéå¬äºå®ã§ãã ãã¡ããããããã®ãåå ããåŸ
ã¡ããŠããŸãïŒ rakus.connpass.com rakus.connpass.com
ã¯ããã« æè¡åºå ±ã®itoken1013ã§ããããã«ã¡ã¯ã 6æã«å€ãã®æ¹ã«ãåå ããã ããŸãã ã©ã¯ ã¹Meetupã7/29(æ°Ž)ã«ã ã SaaS éçºãªãŒããŒãå®è·µããéçºé床åäžã ã©ã¯ ãã£ã¹/æµ·å€æ ç¹ã ã¹ã¯ã©ã ãæé管çã ãã¿ã€ãã«ã«ãªã³ã©ã€ã³éå¬ãããŠããã ããŸããã ä»åãåœæ¥ã®çºè¡šãç°¡åã«ç޹ä»ãããŠããã ããŸãïŒ ã€ãã³ãããŒãæŠèŠ ã©ã¯ ã¹ã§ã¯ãäŒæ¥ã§åã人ã
ã®çç£æ§ãåäžããããè±ããªç€ŸäŒã®å®çŸããæ²ããŠã倿§ãª SaaS ãã客æ§ã«å±éããŠããŸãã ãã®ããã« ã©ã¯ ã¹ã®ãšã³ãžãã¢èªèº«ãæ¥ã
ãéçºé床ãçç£æ§åäžã«åããã ã©ã¯ ãã£ã¹ã«åãçµãã§ããŸãã ä»åã¯å€ãã®ã客æ§ã«ãæ¯æãããã ããŠããŸã æ¥œæ¥œç²Ÿç® ãš æ¥œæ¥œæçް ã®éçºã«æºãããšã³ãžãã¢3åãç»å£ãããããããææŠäžã®åãçµã¿ãã玹ä»ãããŠããã ããŸããã å人ã»ããŒã ã»ãªãã·ã§ã¢ã®3ã€ã®èŠç¹ããã®ã ã©ã¯ ãã£ã¹ã玹ä»ããã倿§ãªããžã·ã§ã³ã®åå è
ã®æ¹ããã³ã¡ã³ãããå¯ãããã ããŸããã çºè¡šã®çŽ¹ä» 25 + 5åã§éçºé床ãäžããæé管çè¡ïŒ ãã¢ããŒããã¯ãã㯠ã®çŽ¹ä» ãŸã楜楜粟ç®ã§éçºã»éçšãšãã«ããªåœ¹å²ãæ
ã平山ãããäœæ¥æéã管çããããã® ãã¢ããŒããã¯ãã㯠ã玹ä»ãããŠããã ããŸããã éçºã«éããçç£æ§åäžã®ãã¯ããã¯ãšããŠåºãç¥ããã ãã¢ããŒããã¯ãã㯠ã§ãããä»åã¯å¹³å±±ã®å
·äœçãªèª²é¡ã®ãšããœãŒããšå®è·µåŸã®å¹æãèªãããããšã§ãæ¥ã
ã®ãä»äºã§åãå
¥ããŠã¿ãããšæããŠããã ããã®ã§ã¯ãªãã§ããããã è¥æã»äžå
ã»ããã©ã³ã®ã©ã®ãšã³ãžãã¢ã«ããå§ãããããã¯ããã¯ã§ãã www.slideshare.net ã¹ã¯ã©ã éçºããã¥ã¡ã³ã¿ãªãŒ ïœãªããªããèœã¡ã ã¹ã¯ã©ã éçºéåºŠïœ æ¬¡ã¯æ¥œæ¥œæçŽ°ã§ ã¹ã¯ã©ã éçºãå®è·µäžã®æŽç°ãããéçºãã¢ã§èµ·ããŠããŸã£ãããšããèŠããšããœãŒãã玹ä»ãããŠããã ããŸããã éçºãµã€ããšããžãã¹ãµã€ãïŒãããã¯ãŠãŒã¶ãŒïŒã§çãŸããèªèã®ãºã¬ãããçŽãã¯ãã©ã®äŒæ¥æ§ã«æå±ãããšã³ãžãã¢ã®æ¹ã§ããçµéšã®ãããã©ãã«ããšæããŸãã æŽç°ãæå±ããæ¥œæ¥œæçްããŒã ã§ã¯ãããã®ãã©ãã«ã«å¯Ÿãã ã¹ã¯ã©ã ã®æ çµã¿ã«æããããã«æè»ã«éçºã¹ã¿ã€ã«ã倿Žããããšã§æ¹åãå³ã£ãŠãããŸããã ããŸã 詊è¡é¯èª€ãç¶ããªããã®åãçµã¿ãä»åŸã®ææã«æåŸ
ã§ãã speakerdeck.com Quality First & Fastãå®çŸãããªãã·ã§ã¢éçºã®ãã€ã³ã9éž ä»åã®ã©ã¹ãã¯ã楜楜æçްã®éçºãªãŒããŒãåããæšå£ã§ãã ã©ã¯ ã¹ã®åäŒç€Ÿã§ãã ãããã ã®ãRAKUS Vietnam Co., Ltd.ãã®ãšã³ãžãã¢é£ããããžã¡ã³ãããæšå£ã§ãããéçºé床ãšå質ã®äž¡ç«ã®ããã«é§äœ¿ãããã¯ããã¯ãå
·äœçã«ç޹ä»ãããŠããã ããŸããã ãæ¥æ¬ãç¹æ®ãªåœã ãšããããšãçè§£ããããæ¥æ¬ã®èšèšèгç¹ãäŒããããªã©ãè€æ°åœã®æ¹ãšã®ä»äºçµéšãè±å¯ãªæšå£ãªãã§ã¯ã®çºè¡šã§ããã ãŸããªãã·ã§ã¢ãããŒãã«ããå
容ã§ã¯ãããŸãããæ¥æ¬äººã®ãšã³ãžãã¢å士ã§ãåèã«ããŠããã ããã ã©ã¯ ãã£ã¹ãèŠã€ããŠããã ããã¯ãã§ãã speakerdeck.com ãããã« ä»åã¯ç¹å®ã®æè¡ã¹ã¿ãã¯ã«åã£ãã€ãã³ãããŒãã§ã¯ãªãã£ãããšããããããŸããŸãªã¬ã€ã€ãŒã®æ¹ã«ãåå ããã ããŸããã ãããžã§ã¯ããããžã¡ã³ãã«èª²é¡ãæ±ããæ¹ãå人ã®ã¹ã±ãžã¥ãŒã«ç®¡çãããŸããããªãæ¹ãªã©ã®åèã«ããŠããã ããŸããšå¹žãã§ãã ã©ã¯ ã¹ã§ã¯8æä»¥éãMeetupãLTã»å匷äŒã®éå¬ãäºå®ããŠããŸãã ãã§ã«å€ãã®æ¹ã«ãç³ã蟌ã¿ããã ããããããšãããããŸãïŒ ä»åŸã ã©ã¯ ã¹ãšã³ãžãã¢ããã®æ
å ±çºä¿¡ãã©ãããæ¥œãã¿ã«ïŒïŒ rakus.connpass.com rakus.connpass.com
æè¡åºå ±ã® syoeshin ã§ãã åœç€Ÿã§ã¯æè¿ãäžèšïŒã€ã®å®æçãªèªæžäŒãäŒç»ããã¹ã¿ãŒãããŸããã 瀟å
ã®æå¿éããªãŒãããŠãããããã奜ããªæ¬ãèªã¿/玹ä»ãããèªæžäŒ 瀟å
ã® æèè
éããªãŒãããŠãéžå®ããæè¡æžã®çè§£ãæ·±ããèªæžäŒ 宿çãªèªæžäŒãçµç¹ã®åçµã¿ãšããŠå§ããç®ç㯠"åãšçµç¹ã®æé·" ã§ãã æé·ã®ããã»ã¹ã¯ ç¥èãåŸã (å匷äŒã§è©±ãèããæ¬ãèªãããã¥ãŒã¹/èšäºãèªã ãªã©) èšç·Žãã (ç¹°ãè¿ã修緎ãç¿æ
£ã«ãã ãªã©) å®è·µãã ã«åè§£ã§ããŸãã 宿çãªèªæžäŒã®æ©äŒãã€ãããåå ããŠãããäºã§ æé·ã®æºæ³ãšãªã ç¥èãåŸã ã à ã èšç·Žãã ã®ãµã€ã¯ã«ã¯å®çãããäºãã§ããŸãã ãã¡ãã å®è·µãã ã¯ãšãŠãéèŠã§ãã ç§ãã¡ã®éçºçµç¹ã¯ æ¯æŽã®åãå®è·µã·ãŒã³ã®é£ç¶ ã§ãã®ã§ ç¥èãåŸã ã à ã èšç·Žãã ãµã€ã¯ã«ãå®çããã° åã®æé·ãå éããäºã¯ãèšããŸã§ããããŸããã ã㊠ãŸã㯠ç¥èãåŸã ã à ã èšç·Žãã ã®ãµã€ã¯ã«å®çãç®çãšããŠå§ããèªæžäŒã¯ æ©éã以äžã®ãããªãããã坿¬¡å¹æãèŠããå§ããŸããã çµç¹å
ã³ãã¥ãã±ãŒã·ã§ã³ã® ãã€ããŒã·ã㣠å èŠçŽ/æèŠããŸãšãã/人åã§è©±ãã¹ãã«ã®åäžãšãªãŒããŒã·ããã®è²æ çµç¹å
ã§ã®å°éæ§/ ã¢ã€ãã³ãã£ã㣠ã®ç¢ºç« ãŒãŒçµç¹å
ã³ãã¥ãã±ãŒã·ã§ã³ã® ãã€ããŒã·ã㣠å ç§ãã¡ã®éçºæ ç¹ã¯ æ±äº¬ã»å€§éªã» ãããã ãšåãããŠãã ãããŸã§ç€Ÿå
ã€ãã³ãã¯æ ç¹ãäžå¿ãšããéå¬ã䞻㧠æ¥åå€ã®ã³ãã¥ãã±ãŒã·ã§ã³ãæ ç¹ãäžå¿ãšãªã£ãŠãããŸããã å¯ãé¿ããã¹ãç¶æ³äžã§ãèªæžäŒã¯ãªã³ã©ã€ã³éå¬ãšãªã£ããã ãããŸã§ã®æ§ã«æ ç¹å¥ã®éå¬ã§ã¯ãªã æ±äº¬ã倧éªã ãããã ãã瀟å¡ãäžæåå ã§ããèªæžäŒã¯ æ ç¹ãåãããè¥æã»äžå
ã»ããã©ã³ãåãã æ¥åå€ã³ãã¥ãã±ãŒã·ã§ã³ã亀ãããæ©äŒã®äžã€ãšãªããŸããã ãŒãŒèŠçŽ/æèŠããŸãšãã/人åã§è©±ãã¹ãã«ã®åäžãšãªãŒããŒã·ããã®è²æ èªæžäŒã«ã¯ããŸããŸãªåœ¢åŒããããŸãããåœç€Ÿã宿œããŠãã 瀟å
ã®æå¿éããªãŒãããŠãããããã奜ããªæ¬ãèªã¿/玹ä»ãããèªæžäŒ ã®åå ç®çã¯ãããããã®èªç±ã§ããããšããŠããŸãã ãã¡ãèªæžäŒã®åå è
ã«ã¯ äŒã®åé ã§ ã仿¥ã¯ã©ããŸã§èªãããšèªæžå®£èšãããŠããã 1~1.5ïœã®èªæžåŸ ã« èªãã æ¬/éšåãèŠçŽããåå ã¡ã³ããŒã«äŒããŠãããããã«ããŠãããŸãã ãŸããåå è
ãã ãã¡ã·ãªããŒã¿ãŒ (ç°¡åãªåžäŒé²è¡)ãéžåºã äŒã®é²è¡ãããŠããããŸãã ã»èªæžå®£èš ã»èªãã æ¬/éšåã®èŠçŽãçºè¡š ã»èªæžäŒã®åžäŒé²è¡ ãããŠãããäºã§ã ç¥èãåŸãããã ãã®èªæžäŒã§ã¯ãªã ã»äººåã§è©±ã ã»æèŠããŸãšãã ã»äººã®æèŠãèããªããçµè«ãå°ãå Žãäœã ãšããã ã¬ãŒãã³ ã°ã«ãªããã¹ãã«ã磚ãããšãã§ããä»çµã¿ã§ åå è
㯠å¿çç è² æ
ãå°ããäžã§ ãªãŒããŒã·ããã«å¿
èŠãªèŠçŽ ã身ã«ä»ããããããã«ãªã£ãŠãŸãã ãŒãŒçµç¹å
ã§ã®å°éæ§/ ã¢ã€ãã³ãã£ã㣠ã®ç¢ºç« 瀟å
ã§ã¯ ã» ã¢ãŒããã¯ã㣠ã«è©³ãã 人 ã» ã¢ãžã£ã€ã« éçºã ã¹ã¯ã©ã ã«è©³ãã 人 ã»ããã³ããšã³ãã«è©³ãã 人 çã
ãããŸãã ãããã£ãã¡ã³ããŒã¯âç¹å®åéã®ç¥èãšçµéšãè±å¯âãšç€Ÿå
ã§èªèãããŠãã ç¹ã«ç¥èé¢ã§ã¯ããã®åéã«é¢ããããããã®æ¬ãäœåºŠãæ·±ãèªãã§ããäºãå€ãã§ãã 瀟å
ã® æèè
éããªãŒãããŠãéžå®ããæè¡æžã®çè§£ãæ·±ããèªæžäŒ ã§ã¯ ç¹å®åéãæè¡ããŒãã«æ²¿ã£ãŠèªæžäŒãéå¬ãããŠãã èªæžäŒãäž»å¬ããã¡ã³ããŒéã¯ã âç¹å®åéã«è©³ãã人â ãšç€Ÿå
ã§èªèãã èªèº«ã®å°éæ§ãš ã¢ã€ãã³ãã£ã㣠ã確ç«ããŠããŸãã ãŸã åœç€Ÿã§ã¯æå¿éãå§ãã瀟å
å匷äŒããçºå±ãã ã TechCafeâ» ããšãã 瀟å€åãå匷äŒã³ãã¥ã ãã£ãŒ ãéå¶ããŠãã 瀟å€åãã«ç¹å®åé/æè¡ã®ãã³ããäž»å¬ããäºã§ 瀟å
ã ãã§ãªã瀟å€ã«ãèªèº«ã®å°éæ§ãš ã¢ã€ãã³ãã£ã㣠ã®ç¢ºç«ãé²ããŠããŸãã â»TechCafe詳现ãTechCafeãã§ãããŸã§ã tech-blog.rakus.co.jp ãŒãŒãŸãšã èªæžäŒã®éå¬/åå ã¡ãªããã¯äžéã§ããŸããŸã«èšãããŠãŸãã 瀟å
ã§èªæžäŒãéå¬ããŠã¿ãŠ äžéã§èšãããŠããã©ã®ã¡ãªãããåŸããã ãšããã®ãçŸæç¹ã§ã®ææã§ãã ãŸã ãŸã éå¬ã®å®çžŸã¯å°ãªãã§ãã äžæ žã¡ã³ããŒã管çè·ãéçºçµç¹ä»¥å€ã¡ã³ããŒã®åå ãå¢ããŠããã° ã»çµç¹ã³ãã¥ãã±ãŒã·ã§ã³ã® ãã€ããŒã·ã㣠å ã»çµç¹ã¡ã³ããŒã®ãªãŒããŒã·ããè²æ ã»çµç¹ã¡ã³ããŒã®å°éæ§/ ã¢ã€ãã³ãã£ã㣠ã®ç¢ºç« ã®é²åãã§ã âåãšçµç¹ã®æé·âãå éã§ãã ãšèããŠãããã ä»åŸãããå€ãã®ã¡ã³ããŒãåå ãããã äœããæ¥œããããèªæžäŒããäŒç»ããŠããããšèããŠãããŸãã åœç€Ÿéå¶ã®å匷äŒã³ãã¥ã ãã£ãŒ ã¯ä»¥äžãµã€ããããåå ãã ããã rakus.connpass.com ãŸããç§ãã¡ã¯äžç·ã«åãã¡ã³ããŒãåéããŠããŸãã ãèå³ãæãããŸããã以äžã®ãµã€ããããåãåãããã ããã career-recruit.rakus.co.jp
ã¯ããã« ã¯ãããŸããŠã ã©ã¯ ã¹ã®ã€ã³ãã©ãšã³ãžãã¢ã®cappy_potterãšç³ããŸãã åŒç€Ÿã§æäŸããŠãã ã¯ã©ãŠã ãµãŒãã¹ãæ
ããµãŒãã«ïŒ ã¯ã©ã¹ã¿ ïŒã€ããŠãã©ã®çšåºŠã®ã¢ã¯ã»ã¹ãŸã§ã§ããã° åé¡ãªããµãŒãã¹æäŸã§ããã®ãããšããéçå€ãç¥ãããã® è² è·è©Šéš ãéå»ã«å®æœããŸããã Webã·ã¹ãã ãæ§æãããµãŒã矀ã«å¯Ÿããã©ã®ããã«ããŠè² è·ããããéçå€ãæ¢ãã®ããããããæ¹æ³ã¯ ãããšæããŸãããå®éã«åŒç€Ÿã§è©Šããããæ¹ãã玹ä»ããŸãã®ã§ãåèã«ããŠããã ããã°ãšæããŸãã ã¯ããã« ãµãŒãæ§æ è² è·è©Šéšç°å¢æºå è² è·è©Šéšãã¿ãŒã³ã®æ€èšãšJMeterçšã·ããªãªã®äœæ JMeterã§è² è·ãããã ããã«ããã¯ã®èª¿æ» ãããã« ãµãŒãæ§æ ä»åè² è·ãããããµãŒãã®æ§æã¯äžå³ã®ããã«ãªã£ãŠããŸãã 察象ã®ã·ã¹ãã ã¯è€æ°ã®ãµãŒããããªã£ãŠããŸãããå€éšããã®ã¢ã¯ã»ã¹ã¯å
šãŠããŒããã©ã³ãµã§åããŠã é
äžã®ãµãŒãã«éä¿¡ãæ¯ãåãã圢ãšãªã£ãŠããŸãã è² è·è©Šéš ç°å¢æºå â æ¬çªã·ã¹ãã ãšåãæ§æïŒå°æ°ãã¹ããã¯ïŒã® è² è·è©Šéš çšãµãŒããçšæããã ä»åãè² è·éçå€ãæ£ç¢ºã«æž¬ããããæ¬çªç°å¢ãšå
šãåãããŒãæ§æã»å°æ°ã®è©ŠéšçšãµãŒããçšæããŸããã ãªãœãŒã¹ãè¶³ããé£ããå Žåã¯ãåãµãŒãã®ã¹ããã¯ãåãå²åã§èœãšãããã®ãçšæããŠè©Šéšãè¡ãããšã§ ãšããããã ããã«ãã㯠ã¯ã©ããããæ¢ãããšã¯ã§ãããšæããŸãã â Apache JMeter ãµãŒãã®çšæ 詊éšçšãµãŒãã«å¯ŸããŠè² è·ããããããã®ãµãŒããšããŠã Apache JMeter ãµãŒããçšæããŸããã ãã®ãšããåæã«å€§éã®ã¢ã¯ã»ã¹ããããããããã«ãããããäžå³ã®ããã«ãã¹ã¿ãµãŒã以å€ã« 4å°ã®ã¹ã¬ãŒããµãŒããçšæããŸããã ãâ» JMeter ãµãŒãåŽã貧匱ã ãšãè² è·éçã«éããåã« JMeter ãµãŒãåŽã®æ¹ãå
ã«éçã«éãã å¯èœæ§ã ãããããŸãã®ã§ããããªããªãããã«èæ
®ããŸããã â åãµãŒãã®ããã©ãŒãã³ã¹ããŒã¿åéæºå è² è·è©Šéš 察象ã®åãµãŒãã«ã¯ZabbixãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããããã©ãŒãã³ã¹ããŒã¿ãååŸã§ããããã«ããŸããã åŒç€Ÿã§ã¯ãããšããšãµãŒãã®ç£èŠçšãšããŠZabbixãå©çšããŠããŸãã®ã§ããããçšããŠãåãµãŒãã®CPU䜿çšçã ããŒãã¢ãã¬ãŒãž ãDisk I/Oãswap䜿çšéããããã¯ãŒã¯åž¯åã®ããŒã¿ãåéããããã«ããŸããã ãâ è² è·ãããããšãã«ãã©ã®ãµãŒãã®äœã®ãªãœãŒã¹ã ããã«ãã㯠ã«ãªã£ãŠãããã確ãããããã ãªããããŒã¿ã®ååŸééã¯30ç§ã«ããŸãããééãçãããæ¹ããã¬ãå°ãªãããŒã¿ãšãªããŸãããçããããããš ããŒã¿ååŸèªäœãè² è·ã«ãªãå¯èœæ§ãããããã§ãã è² è·è©Šéš ãã¿ãŒã³ã®æ€èšãš JMeter çšã·ããªãªã®äœæ ä»åã è² è·è©Šéš ãè¡ãããšã«ããã倧ããåãããšä»¥äžã®2ãã¿ãŒã³ã®éçå€ãæ±ããããšèããŸããã ãâ WebãµãŒã1å°ããããç§éäœã¢ã¯ã»ã¹ãŸã§èããããã®ã ãâ¡ ã·ã¹ãã å
šäœãšããŠç§éäœã¢ã¯ã»ã¹ãŸã§èããããã®ã ãã ãã²ãšå£ã«ãç§éäœã¢ã¯ã»ã¹ãŸã§èããããã®ãããšãã£ãŠããã¢ã¯ã»ã¹ããããŒãžããŠãŒã¶ã®æäœå
容ã«ãã£ãŠ å€ãã£ãŠããŸãã®ã§ãåºæºãèšããªããã°ãªããŸããã åºæ¬çã«ã¯æãã¢ã¯ã»ã¹ãå€ãããŒãžããæšæºçãªãŠãŒã¶ã®æäœå
容ãããã£ãŠããã®ã§ããã°ããããåºæºã«ããã°ãã ãšæããŸãããå®ãŸããªãå Žåã¯ããã€ãã®ãã¿ãŒã³ã«ã€ããŠè©Šéšãè¡ãããã®çµæãããšã«å€æãããããããŸããã åŒç€Ÿã§ã¯ãâ ã®è©Šéšãè¡ãããã«9ãã¿ãŒã³ã®ã·ããªãªãäœæããŸããããŸããâ ã®è©Šéšã¯WebãµãŒã1å°ã ãã«å¯Ÿã㊠ã¢ã¯ã»ã¹ãæµããããã«ããããã ããŒããã©ã³ãµãŒ ã§ã®æ¯ãåãå
ã1å°ã®WebãµãŒãã®ã¿ãšãªãããã«èšå®ã倿ŽããŠè©Šéšãè¡ããŸããã ïŒâ¡ã®è©Šéšã®ãšãã¯ã3å°ã®WebãµãŒãã«å¯ŸããŠåçã«ã¢ã¯ã»ã¹ãæ¯ãåããããããã«ããŸãããïŒ JMeter ã§è² è·ãããã äœæãã JMeter ã®ã·ããªãªã䜿ã£ãŠè² è·ããããŸãããç§éã®ã¢ã¯ã»ã¹æ°éçå€ãæ¢ãã®ãç®çã§ãã®ã§ã 以äžã®ãããªæµãã§è² è·ããããŠãããŸããã ïŒåã·ããªãªã§åãããã«è©Šéšãè¡ããããããã®ã·ããªãªã§ã®éçå€ãæ¢ããŸãããïŒ ã ïŒïŒå¯Ÿè±¡ã®ãµãŒãã«å¯ŸããŠããŸãã¯ããããããããããã§ã¯ãªããããšæãç§éã®ã¢ã¯ã»ã¹æ°ã5åéãããã ãããâäŸãã°ãç§é20ã¢ã¯ã»ã¹ã5åéãããå Žåã JMeter ã®èšå®ã¯ä»¥äžã®ããã«ãªããŸãã ãããRamp-UpæéïŒãè² è·ããããæé ïŒ 300(ç§) ãããã¹ã¬ããæ°ïŒãRamp-Upæé(ç§) à ç§éã¢ã¯ã»ã¹æ° ÷ è² è·ãããã JMeter ãµãŒãã®å°æ° ïŒ 300Ã20÷4 ïŒ 1500 ã ïŒïŒ5åéè² è·ããããçµæã JMeter ã§ãšã©ãŒãæ€ç¥ããŠããããã§ããã°ãç§éã®ã¢ã¯ã»ã¹æ°ãæžããã ããã ååºŠè² è·ããããããšã©ãŒãæ€ç¥ããŠããªããã°ç§éã®ã¢ã¯ã»ã¹æ°ãå¢ãããŠååºŠè² è·ããããã JMeter ã§ãšã©ãŒãæ€ç¥ããŠãããã©ããã¯ãå®è¡çµæã®ç»é¢ã§ãStatusãã®éšåãã¯ãªãã¯ããŠã ã¹ããŒã¿ã¹å¥ã«äžŠã³æ¿ãããããšã«ãã倿ã§ããŸãã ïŒäžå³ã®ããã«èµ€ããÃãããŒã¯ãããã°ããšã©ãŒãçºçããŠãããšããããšã«ãªããŸããïŒ ã ïŒïŒäžèšïŒïŒã§ç§éã®ã¢ã¯ã»ã¹æ°ã墿žãããªããäœåºŠããã¹ããè¡ããæçµçã«ããã以äžç§éã®ã¢ã¯ã»ã¹æ°ã ããã å¢ãããšãšã©ãŒãåºãããšããå€ã倿ããã°ããããéçå€ãšãªãã ããã«ãã㯠ã®èª¿æ» éçãšãªãè² è·ããããããŠãããšãã®ZabbixããŒã¿ã確èªããã©ã®ãµãŒãã®äœã ããã«ãã㯠ã«ãªã£ãŠããã 確èªããŸãã äžå³ã¯ãè² è·ããããŠããéã®åãµãŒãã®ããã©ãŒãã³ã¹ããŒã¿ãèšé²ããè³æã®æç²ã§ããããããèŠããš WebãµãŒãã® CPU䜿çšçã100% ã«éããŠããããšãããããŸãã ãã®ããããã®å Žåã¯ããWebãµãŒãã®CPUãå¢èšããããWebãµãŒãã®å°æ°ãå¢ããããªã©ããã°ãã·ã¹ãã å
šäœãšããŠã® éçå€ã¯å»¶ã³ãããšãäºæ³ãããŸãã ãããã« æ¬èšäºã§ã¯ã è² è·è©Šéš ã«ãã£ãŠãµãŒãã®éçå€ãæ±ããããã®æ¹æ³ã«çµã£ãŠèšèŒããŠããŸãããå®éã¯è©Šéšã宿œããåã« è² è·è©Šéš ãè¡ãç®çãæ±ãããã è² è·è©Šéš çµæãããšã«ä»åŸã©ãéçšããŠããã®ã ããšããããšãæããã«ããŠãã 宿œããªããšãäœåºŠã è² è·è©Šéš ã宿œããªããã°ãªããªããªãå¯èœæ§ãããããããããããã£ããèªèããããã§ å®è¡ããããã«ããŠäžããã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã 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
ããã«ã¡ã¯ã ã©ã¯ ã¹ã²ãã¡ã§ãã 07/21(ç«) ã«éå¬ãããã Developers Summit 2020 Summerãã«åå ããŸããã https://event.shoeisha.jp/devsumi/20200721#outline ä»åã¯ãªã³ã©ã€ã³éå¬ãšããããšã§åå ãããæ¹ãå€ãã£ãã®ã§ãªãã§ããããã åå ãã4ã€ã®ã»ãã·ã§ã³ã®äžã§ç¹ã«æ°ã«ãªã£ãã»ãã·ã§ã³ã«ã€ããŠææ³ãæžããŠããããšæããŸãã ãšã³ãžãã¢ãªã³ã°ãçµç¹ã«åºãããä¹³åããç®æãããã®åãçµã¿ READYFORæ ªåŒäŒç€Ÿ VPoEäŒè€ åå¿(éç§°ïŒããšã²ã)ãããç»å£ããŠãã£ããããŸããã éçºããã»ã¹ æ ã§ããã ã¹ã©ã€ãã¯äžèšã«ãªããŸãã speakerdeck.com READYFORãããæ²ãããä¹³åããšã¯ã * çµç¹ã®äžã«ãšã³ãžãã¢ãªã³ã°ãèªç¶ã«æº¶ã蟌ãã§ããç¶æ
* æ¢åã®äŸ¡å€èгãšã㯠ãã ãžãŒ ãèåããããšã«ãã ã€ãããŒã·ã§ã³ ã®åµé ãç®æã çµç¹éã®éãããªããããã·ã§ã³ã®ããã«ååãåããç¶æ
ããªãšè§£éããŸããã 確ãã«åãäŒç€Ÿãšããã©ãä»äºã®åãçµã¿æ¹ãæåãåãããŠããã®ã£ãŠå€§å€ã§ããããã ãããªæåã®äžã泚ç®ãã¹ããªã®ã¯ããã§ãã BPMN B usiness P rocess M odeling and N otation èš³ããšãããžãã¹ããã»ã¹ ã¢ããªã³ã° åãšèšæ³ãã§åœéæšæºèŠæ Œ(ISO/IEC19510)ã«ãæå®ãããŠããæŠå¿µã§ãã ãããŸããŸãªããžãã¹ããŒã ãBPMNãæŽ»çšããŠãããŒãå¯èŠåããŠãããããã«ãªã£ãã ãããç®ãããŠãã³ã®åãçµã¿ã§ããã ããžãã¹ããŒã ãèŠã¯å¶æ¥ã補åäŒç»ããµããŒããªã©ã®äºæ¥éšã§ããã ããžãã¹ããŒã ãšéçºéã§èªèåããããããã§ããããããçµæ§ãµãã£ãšããã¡ã§ãã éçºããæ¥åã·ããªãªãªã©ãå³ç€ºãããšãã«Draw.ioãªããã䜿ã£ãŠããžãã¹ããŒã ã«èŠããããšã¯çµæ§ãããŸãã ãããããžãã¹ããŒã ãBPMNããŒã«ã䜿ã£ãŠãããŒãå¯èŠåããŠãããããã®äŸ¡å€ãããªãé«ãã§ãã ããžãã¹ããŒã ããèšèã§èŠæ±ã®èª¬æãåãããéçºãäŒç»ã« ãã¢ãª ã³ã°ãã äžèšã®çµæããéçºãèŠä»¶ãææžãå³ã«èµ·ãã èªèéœéœ¬ããããšãããåãã倿Žãã ã ããã2ïœ3ãç¹°ãè¿ãè¡ããŸãã ããžãã¹ããŒã ãæãæããŠããå³ç€ºããã£ãšã§ããç¶æ³ãäžèšã®å·¥çšãççž®ããããšã«ã€ãªãããŸããã ãã¡ããã¯ããã¯éçºããã¶ã€ã³ããŒã ã®ãã©ããŒãå
¥ãã®ã§ã ããç°¡åã§äœ¿ããããããŒã«ãéžã¶ã®ãéèŠã«ãªã£ãŠããŸãã èšèšãå³ç€ºããããŒã«ã¯ããã€ããããŸãããREADYFORãããå©çšããŠããããŒã«ã¯ãã¡ãã ã Camunda Modeler ã ããšã²ããããäœ¿ãæ¹ãã¬ã¯ãã£ãŒããŠãããŠããŸãã http://itohiro73.hatenablog.com/entry/2018/01/15/082158 ãã£ãããã£ãŠã¿ãŸããã ãããç°¡åã§ãã Camundaã§å³ç€º UIãçŽèгçã§è§Šããããããš ç¡é§ãªããŒã«ããªãããš ãããšããã£ãŠäœ¿ãã¥ãããªããŸã å³ç€ºããŠããšãããšæ¥ã«è¶³ãéããªã£ãŠããŸãããã§ããã ãããªãããŒã«ãå©çšãã粟ç¥çãªããŒãã«ãäœãåãçµãããšæããŸãã ãã£ããããžãã¹ããŒã ã«ã¬ã¯ãã£ãŒããªããé²ããŠããããã§ããã ããäžã€ã®åãçµã¿ãSlackã® Reacji Channeler ãé
åçã§ããã çµµæåãæŒãã ãã§ç¹å®ã®ãã£ã³ãã«ã«é£ã¹ããã§ãã£ãŠã slack.com æ®å¿µãªããåŒç€Ÿã¯Slackã§ã¯ãªãã®ã§å°å
¥ããŒãã«ãé«ããã§ãããSlackãå©çšã®æ¹ã¯ãã²äœ¿ã£ãŠã¿ãŠãã ããã ããããããã€ãã®åãçµã¿ããã£ãŠãçµç¹ã®ä¹³åãé²ãã°ãéçºã«çæãããŸã§ã®äžæµå·¥çšãã¹ã ãŒãºã«ãªããšæããŸãã READYFORããã®åãçµã¿ãå¿
èŠã§ãã ä»ã®ã»ãã·ã§ã³ãåæ§çã§é
åçã§ãããçŽ æŽãããã£ãã§ãã èªåã§æ°ã¥ããªã芳ç¹ãåãå
¥ããå匷äŒã£ãŠãã£ã±ã倧äºã§ããã æ¬¡åããã²åå ãããã§ãã