ã¯ããã« ããã«ã¡ã¯ïŒ FM_Harmonyã§ãã Rakus Developers Blog ã§ã¯3åç®ã®æçš¿ã«ãªããŸãã â ååã®èšäºã¯ã³ãã© tech-blog.rakus.co.jp å
æ¥ãReact Nativeã䜿ã£ã ã¹ãã ã¢ããªéçº ã«ã€ããŠã®å匷äŒã«åå ããŸããã ãªã®ã§ã ä»åã¯ãã®æåŠãã ããš + åŸããèªåã§èª¿ã¹ãããš ã«ã€ããŠãŸãšããŸããã ãã®èšäºãããReactãã£ãŠã¿ãããªãŒããšããæ¹ã®åèã«ãªãã°å¬ããã§ãã ã¯ããã« å眮ããã¹ããã¢ããªã®åé¡ React Native ãšã¯ïŒ Expoãšã¯ïŒ Hello World ããã£ãŠã¿ã ç°å¢æ§ç¯ ãããžã§ã¯ãäœæ ãµã³ãã«ã確èªããŠã¿ã Hello World! å°ã£ããšãã ã¢ããªãèµ·åã§ããªãïŒ å®æ©ã§åãããªãïŒ ææ³ å眮ãã ã¹ãã ã¢ããªã®åé¡ ãããã ã¹ãã ã¢ããªã¯å€§ããåããŠ2çš®é¡ãããŸãã *1 Webã¢ã㪠ãã©ãŠã¶äžã§åäœããã¢ããªã±ãŒã·ã§ã³ã§ãã HTMLã CSS ãªã©ã䜿ã£ãŠéçºããŸãã ãã€ãã£ãã¢ã㪠ã¹ãã äžã§çŽæ¥åäœããã¢ããªã§ãã äŸãã°ã Android åãã¢ããªã ã£ãã Android Studio ã䜿ã£ãŠéçºããŸãã ä»åã話ãããã®ã¯ã ãã€ãã£ãã¢ã㪠ã®éçºã«ã€ããŠã§ãã React Native ãšã¯ïŒ React Nativeãšã¯ããã€ãã£ãã¢ããªã JavaScript ãšReactã§ãã«ãããããã® ãã¬ãŒã ã¯ãŒã¯ ã§ãã çŽ ã® JavaScript ã®ã¿ã§ ã¢ããªéçº ãè¡ãããšãã§ããŸãã ç¹åŸŽãšããŠã¯ãã¢ããªã±ãŒã·ã§ã³ã®æŽæ°ãå³åº§ã«åæ ãããããšãã§ããããšããããŸãã ãã«ãããªãããªããŠããèªèŸŒã¿ãçŽãã ãã§å€æŽã確èªããããšãã§ããã®ã§éçºé床ã®åäžã«ã€ãªãããŸãã Expoãšã¯ïŒ 端çã«ããã°ãReact Nativeã§ã®éçºããµããŒãããããŒã«ã§ãã å芧äŒãããããŸãã ããšããšã¯ Exponent ãšããååã ã£ãããã§ãã Expoã®ç¹åŸŽã¯ããã€ããããŸãããäžã€ã¯åºæ¬çã« iOS / Android ã¢ããªã®åºå¥ãããããšãªãéçºãé²ããããäºãæããããŸãã Expoã¯ãã€ãã£ãå±€ãé ããŠããã®ã§ã äž¡è
ã®éããæèããªããŠæžã ã»ã»ã»ãããã§ãã ããã«ã 宿©ã§ã®æ€èšŒãç°¡åã«è¡ãã ããšãç¹åŸŽã®äžã€ã§ãã ããã«ã€ããŠã¯ããŸãããšã§è§ŠããããšæããŸãã Hello World ããã£ãŠã¿ã ããã§ã¯ãExpoã§ Hello World ããã£ãŠã¿ãŸãããã ä»åã®ãŽãŒã«ã¯ã ã¹ãã ã®ç»é¢ã« Hello World! ãšè¡šç€ºãããããšã§ãã ãªããäœæ¥ã¯ macOS ã§è¡ã£ãŠããŸãã Windows ã§ãã§ããŸããã説æã¯çç¥ããŸãã ç°å¢æ§ç¯ ãŸããéçºç°å¢ãæ§ç¯ããŸãããã Expoã§éçºãè¡ãããã«ã¯ã以äžã®ãã®ãå¿
èŠã«ãªããŸãã npmïŒãããã¯yarnïŒ Node.js watchman create-react-native-app ãã®å
ãwatchmanãšcreate-react-native-appã«ã€ããŠèª¬æããŸãã watchman ããããªããšã¢ããªã±ãŒã·ã§ã³ãåããããšãã§ããŸããã Homebrewã§ã€ã³ã¹ããŒã«å¯èœãªã®ã§ããã£ãŠãããŸãããã $ brew install watchman create-react-native-app ãããžã§ã¯ããäœæããéã«å¿
èŠã§ãã ãã¡ãã¯npmã§ã€ã³ã¹ããŒã«å¯èœã§ãã ã€ã³ã¹ããŒã«ã®éã«ã¯ãã°ããŒãã«ãªãã·ã§ã³ãä»ããŠãããŸãããã $ npm install -g create-react-native-app ãããžã§ã¯ãäœæ ã§ã¯ã次ã«ãããžã§ã¯ããäœæããŸãã æ¬¡ã®ã³ãã³ããå®è¡ãããšãã«ã¬ã³ã ãã£ã¬ã¯ã ãªçŽäžã«ãããžã§ã¯ãã®ã²ãªåœ¢ãäœæãããŸãã $ create-react-native-app HelloWorldApp ãµã³ãã«ã確èªããŠã¿ã ãããžã§ã¯ãã宿ããããããã«åããããšãã§ããŸãã å
ã»ã©äœæããããããžã§ã¯ãã® ãã£ã¬ã¯ã ãªãžç§»åããŠã以äžã®ã³ãã³ããå®è¡ããŠã¿ãŸãã ânpm ã®å Žå $ npm start âyarn ã®å Žå $ yarn start èµ·åã«æåãããšã倧ã㪠QRã³ãŒã ã衚瀺ããããšæããŸãã â QRã³ãŒã ã衚瀺ãããŠããŸãïŒèªã¿èŸŒã¿ã§ããªãããã«äžéšå¡ãã€ã¶ããŠããŸãïŒ Expoã§ã¯ãã® QRã³ãŒã ã ã¹ãã äžã§èªã¿èŸŒãããšã§ãç°¡åã«åäœç¢ºèªãè¡ãããšãã§ããŸãã ãã ãã QRã³ãŒã ã®èªã¿èŸŒã¿ã«ã¯å°çšã®ã¢ããªã±ãŒã·ã§ã³ãå¿
èŠã§ãã iOS ãªã Expo Cliant ã Android ãªã Expo ãããããããŒã±ããäžã§æ€çŽ¢ããã°ããèŠã€ããã¯ãã§ãã ã§ã¯ãä»å㯠iOS ã§ QRã³ãŒã ãèªã¿èŸŒãã§ã¿ãŸãããã ã¢ããªã®èªèŸŒåŸã«ãç»åã®ãããªç»é¢ã衚瀺ãããŠããã°æåã§ãã â ã¢ããªã®ç»é¢ïŒè«žäºæ
ã«ãã ãšãã¥ã¬ãŒã¿ äžã§åãããŠããŸãïŒ Hello World ! äžã®ç»åã«ãæžããŠãããŸããããã¢ããªã±ãŒã·ã§ã³ã¯ App.js ãç·šéããããšã§å€æŽãå¯èœã§ãã ããã§ãã¢ããªãèªã¿èŸŒãã ãŸãŸ App.js ãéããŠã¿ãŸãããã ãããšã <View> ... </View> ã§å²ãŸãããããã¯å
ã«ã <Text>...</Text> ã®ããã«ã¿ã°ã§å²ãŸããã³ãŒããããã¯ãã§ãã ãã®éšåãæ¬¡ã®ããã« å€æŽããŠä¿å ããŸãã â ... ã®éšåã¯å€æŽããªãã§ãã ãã <View style = { ... } > <Text>Hello World!</Text> </View> 宿©ã確èªãããšãç»é¢ãèªåçã«å€æŽãããããšã確èªã§ããŸãã â Hello World ! ã«ãªã£ãŠããïŒ ãšããããšã§ãExpoã§ Hello World ãã§ããŸãããïŒ ä»åã¯ç°¡åãªäŸã§ããããExpoã䜿ããšç°¡åã ãã€ã æè»œã« ã¹ãã ã¢ããªéçº ãã§ããããšãåãããŸããã å°ã£ããšãã ä»åããã®`Expoãè§Šã£ãŠã¿ãŠå¹Ÿã€ãå°ã£ãç¹ããã£ãã®ã§ç޹ä»ããŸãã ã¢ããªãèµ·åã§ããªãïŒ ãããžã§ã¯ãã®äœæãå®äºããããŠã©ããªé¢šã«åãã®ããªãšã¢ããªãèµ·åããããšããã»ã»ã» âãããªãšã©ãŒãåºãŸããã ããã§èª¿ã¹ãçµæãwatchmanãå¿
èŠãªããšãç¥ã£ãã®ã§ããã 宿©ã§åãããªãïŒ ç°¡åã«å®æ©ã§åäœç¢ºèªã§ããããšãExpoã®å£²ãã§ãããèªåã®å Žå宿©ã§ã®ç¢ºèªãã§ããŸããã§ããã 宿©ã§åäœç¢ºèªããããã«ã¯ãäœæ¥çšPCãšå®æ©ãåããããã¯ãŒã¯ã«ããå¿
èŠãããã®ã§ãããã©ããããã®ãšããã§äžæããããªãã£ãããã§ãã â QRã³ãŒã ãèªã¿èŸŒãã§ããããããç»é¢ãåºãŠããŠããŸãã ãªã®ã§ãããããå Žå㯠ãšãã¥ã¬ãŒã¿ ã§åäœç¢ºèªããŸãããã macOS ã®å Žåã XCode ã«ä»å±ããŠãã ãšãã¥ã¬ãŒã¿ ãå©çšããããšãã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ãç«ã¡äžããåŸã«ã i ãã¿ã³ãæŒãã° iOS ã® ãšãã¥ã¬ãŒã¿ äžã§åäœç¢ºèªãè¡ããŸãã ãã ãããã®å Žå㯠xcode-select -s /Application/Xcode.app ã¿ãããªæãã§ãã³ãã³ããå®è¡ããŠããå¿
èŠããããŸãã ããã¯ã XCode ã® ã³ãã³ãã©ã€ã³ ããŒã«ãæå®ããŠããããã *2 ã§ãã ææ³ ãªããšãã£ãŠãåäœç¢ºèªã®æè»œããããã䟿å©ã§ãã ãã«ãã®ããããããããè§£æŸãããã ãã§ãããªããµã¯ãµã¯éçºãé²ããªããšæããŸããã ããšãä»åã¯æ®å¿µãªããã§ããŸããã§ãããã宿©ã§ã®åäœç¢ºèªã QRã³ãŒã ãèªã¿èŸŒãã ãã ãšããã®ããæè»œã§é
åçã§ãã ç§ãä»åã®ããŒãã«ã€ããŠå匷ããããšæã£ãçç±ã¯ããReactã£ãŠããèããå§ããŠã¿ããããªããããã®è»œããã®ã§ããã ãªã®ã§ãããããæè»œãªãšãããã ã¢ããªéçº ã«èŠªãã¿ã€ã€ãReactã«ã€ããŠå匷ããããšã§å¹çããåŠç¿ã§ãããã ãšæããŸããã *1 : ãã®ä»ã«ããã€ããªããã¢ããªãšåŒã°ãããäž¡è
ãæãåããããã®ããããŸã *2 : ãã®èŸºãã¯ãŸã å匷äžã§ãã»ã»ã»
ã¯ããã« æ°å1幎ç®ãšã³ãžãã¢ã®kasuke18ãšç³ããŸãã å
æã«éå¬ããã瀟å
ã®æè¡äº€æµäŒ ãã¢ããã·ã¥ ã®çºè¡šã®äžã§ MeCab ã«ã€ããŠè§Šããçºè¡šããããŸããã â» ãã¢ããã·ã¥...ïŒ ãšããæ¹ã¯ãã¡ãããåç
§ãã ããã ãã® MeCab ã«èå³ããã¡ãŸããã®ã§ãä»åã®èšäºã§ã¯ MeCab ã Windows ã«å°å
¥ããŠäœ¿ã£ãŠã¿ãŸãã以äžã¯ç§ã®ç°å¢ã§ã€ã³ã¹ããŒã«ãããšãã®ãã®ãªã®ã§ã ãã£ã¬ã¯ã ãªãªã©ãéæèªã¿æ¿ããŠãã ããã ã¯ããã« ãŸãã¯ãµã³ãã« MeCabãšã¯ MeCabã®å°å
¥âŠã®åã« Windows Subsystem for Linuxãšã¯ Windows Subsystem for Linuxã®å°å
¥ MeCabã®å°å
¥ æ°èªå¯Ÿå¿ã®èŸæž(mecab-ipadic-NEologd)ã䜿ã mecab-ipadic-NEologdã®å°å
¥ MeCabãPHPãã䜿çšãã ãããã« åèæç® ãŸãã¯ãµã³ã㫠圢æ
çŽ è§£æ ãšã¯ã©ã®ãããªãã®ãã確èªãããµã³ãã«ãäœæãHEROKUã«ãããã€ã㊠å
¬éããŠããŸã ããŸãã¯è§Šã£ãŠåãããŠã¿ãŸããã! MeCab ãšã¯ MeCab 㯠ãªãŒãã³ãœãŒã¹ ã®æ¥æ¬èªã® 圢æ
çŽ è§£æ ãšã³ãžã³ã§ããïŒ å
¬åŒããŒãž ïŒ OS㯠Unix ç³»ã§ã Windows ã§ã䜿çšå¯èœã§ãããç§çšã®PCã Windows ã®ãããä»å㯠Windows ã« MeCab ãå°å
¥ããŸããã MeCab ã®å°å
¥âŠã®åã« Windows ã« MeCab ãå°å
¥ãããšãã£ãŠããåçŽã« Windows ã«å
¥ãããšããããã§ã¯ãããŸããããã¡ããå
¬åŒã«ã¯ Windows çš ã€ã³ã¹ããŒã© ãçšæãããŠããã®ã§ãåã«å©çšããã ããªãããã䜿çšããããšãäžçªæ©ãã§ãã ããã ã€ã³ã¹ããŒã© ã§ã€ã³ã¹ããŒã«ãããæšæºã®èŸæžãå€ããæ°ããåèªã«åŒ±ãã®ã§ãããé©å㫠圢æ
çŽ è§£æ ãè¡ããªãæ°èªã«å¯Ÿå¿ããèŸæžãå¿
é ã§ãããã®èŸæžã®å°å
¥ã ã€ã³ã¹ããŒã© ããã€ã³ã¹ããŒã«ããå Žåã¯é£ããã®ã§ãä»åã¯å¥ã®ææ®µãçšããŸããã ããã Windows Subsystem for Linux ãšãããã®ã§ãã Windows Subsystem for Linux ãšã¯ ç°¡åã«èšããšã Windowsäžã§LinuxãåããããïŒ ãšãã£ããã®ã§ãã 察å¿ãã Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ 㯠Ubuntu ã OpenSUSE 1 ãªã©ã§ãã ïŒå
¬åŒDOCåç
§ïŒ ä»åã¯äœ¿çšãã ãã£ã¹ããªãã¥ãŒã·ã§ã³ ãšã㊠Ubuntu ãéžæããŸããã Windows Subsystem for Linux ã®å°å
¥ ãã¡ãã®Qiitaã®èšäº ã詳ããã®ã§ããã¡ããã確èªãã ããã MeCab ã®å°å
¥ ããŠãå眮ããé·ããªã£ãŠããŸããŸãããããããã MeCab ã®å°å
¥ã§ãã ãšãã£ãŠãç¹æ®µé£ããæé ã§ã¯ãããŸããã以äžã®ã³ãã³ããå®è¡ããã°å°å
¥ã§ãããšæããŸãã sudo apt update sudo apt upgrade sudo apt install make automake autoconf autotools-dev m4 mecab libmecab-dev mecab-ipadic-utf8 å°å
¥ããã®ã§åäœç¢ºèªãè¡ããŸãã以äžã®ã³ãã³ãã§ MeCab ãå®è¡ã§ããŸãã mecab æ£ããå®è¡ããããšå
¥åã¢ãŒãã«ãªããŸãã®ã§ãäœããå
¥åããæ¹è¡ããŠã¿ãŸããããæ¹è¡ã§ 圢æ
çŽ è§£æ ãè¡ãããçµæã衚瀺ãããŸãã å³1. MeCab ã³ãã³ããå®è¡ æ°èªå¯Ÿå¿ã®èŸæž( mecab -ipadic-NEologd)ã䜿ã åè¿°ã®ãšãããæšæºã®èŸæžã¯å€ãã®ã§æ°èªã«å¯Ÿå¿ããŠããŸãããæ°èªã«å¯Ÿå¿ããèŸæžãå¿
èŠã§ããã®èŸæžã®äžã€ã« mecab-ipadic-NEologd ãšãããã®ããããŸãã mecab -ipadic-NEologd㯠ã¯ãŠãªããŒã¯ãŒã ã®ãã³ãããŒã¿ãªã©ãããšã«æ¯é±æææ¥ãšæšææ¥ã«æŽæ°ãããŸãã ã¯ãŠãªããŒã¯ãŒã ã®åèªã®è±å¯ããèãããšãæ¥ççšèªãªã©ã®ç¹åããåèªãé€ããåºæ¬çã«ã¯ mecab -ipadic-NEologdã§äºè¶³ããã§ãããã mecab -ipadic-NEologdã®å°å
¥ GitHub ã®READMEã«äžå¯§ã«æé ãèšèŒãããŠããŸããããã«è±èªã ãã§ãªãã æ¥æ¬èªã§æžãããREADME ãçšæãããŠããã®ã§ãè³ããå°œãããã§ãã 以äžã«ã³ãã³ãã®ã¿èšèŒããŠãããŸãã sudo apt install git make curl xz-utils file sudo sed -i -e 's%/lib/mecab/dic%/share/mecab/dic%' /usr/bin/mecab-config git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git ./bin/install-mecab-ipadic-neologd -n -a å°å
¥ããã®ã§åäœç¢ºèªãè¡ããŸãã以äžã®ããã« MeCab ã³ãã³ãã® -d ãªãã·ã§ã³ã䜿çšããããšã§ mecab -ipadic-NEologdãèŸæžãšãã 圢æ
çŽ è§£æ ãå®è¡ã§ããŸãã mecab -d /usr/share/mecab/dic/mecab-ipadic-neologd æ£ããå®è¡ããããšå
¥åã¢ãŒãã«ãªããŸãã®ã§ãäœããå
¥åããæ¹è¡ããŠã¿ãŸããããæ¹è¡ã§ 圢æ
çŽ è§£æ ãè¡ãããçµæã衚瀺ãããŸãã å³2. mecab -ipadic-NEologdã䜿ã£ã MeCab ã³ãã³ãã®å®è¡ MeCab ã PHP ãã䜿çšãã äžèšã®æé ã§ MeCab ãçšãã 圢æ
çŽ è§£æ ãå¯èœã«ãªããŸãããã PHP ãªã©ã®åçš® ã¹ã¯ãªããèšèª ããã®äœ¿çšããã«ã¯é¢åã§ããããã§åçš® ã¹ã¯ãªããèšèª åãã« ãã€ã³ãã£ã³ã° ããããã®ããããŸãã®ã§ããããå©çšããŸããä»å㯠PHP ã䜿çšããŸãããå
¬åŒã«ã¯çšæãããŠããªãã®ã§ããã® php-mecab ãå©çšããŸãã php - mecab å°å
¥ã®ããã以äžã®ã³ãã³ããå®è¡ããŸãããã cd /usr/local/src/ git clone https://github.com/rsky/php-mecab.git cd php-mecab/mecab phpize ./configure --with-php-config=/usr/bin/php-config --with-mecab=/usr/bin/mecab-config make make test make install å°å
¥åŸã PHP ã§äœ¿çšããããã«extentionãã¡ã€ã«ãäœæããŸãã echo 'extention=mecab.so' > /etc/php/7.0/cli/php.d/mecab.ini ããã§ PHP ãã MeCab ã䜿çšããããã®æºåãæŽããŸããããµã³ãã«ã³ãŒãã以äžã«ç€ºããŸãã®ã§å®éã«åãããŠã¿ãŸãããã <?php dl ( 'mecab.so' ) ; $ option = array ( '-d' , '/usr/share/mecab/dic/mecab-ipadic-neologd' ) ; $ t = new \MeCab\Tagger ( $ option ) ; $ str = 'ãããããããããã®ãã¡ã«ããã¯ããã€ããã§ããã' ; echo $ t -> parse ( $ str ) ; ãšã©ãŒãªãå®è¡ã§ãããšä»¥äžã®ãããªçµæãåŸãããŸãã å³3. mecab - php ãçšãããµã³ãã«ã³ãŒãã®å®è¡ ãããã« ãã®èšäºã§ã¯ Windows ã« MeCab ãå
¥ã㊠PHP ã§åãããŸã§ã®æé ã玹ä»ããŸãããç§ã詊ããŠã¿ããšã㯠php - mecab ãå
¥ãããšãã«è©°ãŸããŸãããã MeCab æ¬äœãå
¥ãããšãããŸã§ã¯å
šãè©°ãŸããã«é²ããããŸããã PHP ãªã©ã§äœ¿ãããšãèããæ°è»œã« åœ¢æ
çŽ è§£æ ãè¡ããšããç¹ã§ã¯ã MeCab ã¯ã¡ããã©ããã®ããªãšæããŸããã åèæç® MeCab : Yet Another Part-of-Speech and Morphological Analyzer http://taku910.github.io/mecab/ Docs: Windows Subsystem for Linux Documentation https://docs.microsoft.com/en-us/windows/wsl/about Windows Subsystem for Linux ãã€ã³ã¹ããŒã«ããŠã¿ããïŒ https://qiita.com/Aruneko/items/c79810b0b015bebf30bb mecab -ipadic-NEologd : Neologism dictionary for MeCab https://github.com/neologd/mecab-ipadic-neologd php - mecab : MeCab binding for PHP https://github.com/rsky/php-mecab ãããããã°ãã¡ãããäžèªãã ããã ãopenSUSEãã§å§ããåããŠã®Linuxãã¹ã¯ããã ↩
ã¯ããã« ããã«ã¡ã¯ãrs_tukkiã§ãã æ¯åæ¯åã¿ã€ãã«çµµã¯ãœã ããã®ã©ãã«ãããã æè¿ãäŒç€Ÿã®å
å€åããã ã¹ãã ã¢ããªã®è©±é¡ãå¢ããŠããããã«æããŸããçããä»äºãä»äºãªã®ã§ãããã£ãè©±ã«ææãªã®ãããããŸããããæè»œã«æã¡éã¹ã ã¹ãã ã§æè»œã«äœ¿ãã圢ãšããã®ãããããã(ãšããããæ¢ã«) ã¢ããªéçº ã®äž»æµã«ãªã£ãŠããããšã§ãããã ã§ããã ã¹ãã ã¢ããªã®éçºã¯ããæè»œã«ã¯ãããŸãããèšèªã¯æ°ãã«ç¿åŸããªããã°ãªããªãã£ããããããæ©çš®ããšã«éçºããªããã°ãªããªãã£ãããšãä»ãŸã§WEBã§ã¢ããªãéçºããŠãã人ã«ãšã£ãŠã¯å°å³ã«ããŒãã«ãé«ãã®ã§ã¯ãšæããŸãã ããã§ä»åã¯ããããã®åé¡ãäžæ°ã«è§£æ±ºã§ãã ãã€ããªããã¢ã㪠ãšããã®éçºç°å¢ã§ãã ã Monaca ã ã䜿ã£ãŠå®éã«ãã€ããªããã¢ããªãäœã£ãŠã¿ãã話ãããŸãïŒ ã¯ããã« ãã€ããªããã¢ããªãšã¯ïŒ ã¡ãªãã ã¯ãã¹ãã©ãããã©ãŒã UIã®èªç±åºŠãé«ã Webã¢ããªã®éçºçµéšãããã°éçºãå¯èœ ãã¡ãªãã ãã€ããŒãªãã€ãã£ãæ©èœã®å©çšãé£ãã ãã€ãã£ãã¢ããªãšæ¯èŒãããšåäœãéã Webæè¡ã§ãã€ãã£ããªæ©èœã䜿ã£ãŠã¿ã ã¢ã«ãŠã³ãååŸ ãããžã§ã¯ãã®äœæ ãã©ã°ã€ã³ã®æå¹å APIããŒã®ååŸ ã³ãŒãäœæ index.html script.js å®è¡ïŒ ãããã« åè ãã€ããªããã¢ããªãšã¯ïŒ ãŸãäžè¬çã«ã ã¹ãã äžã§åäœããã¢ããªã¯ããã€ãã£ãã¢ããªããšãWebã¢ããªãã«å€§å¥ãããŸãã 现ããéãã¯ãããŸããã倧ãŸãã«ãã㚠端æ«äžã§åäœããã¢ã㪠ããã€ãã£ãã¢ããªã Webäžã§åäœããã¢ã㪠ãWebã¢ããªãšãªããŸãã ãããŠããã€ããªããã¢ããªããšããã®ã¯èããªããªãèšèããšæããŸããããã€ãã£ãã§åäœãããWebViewããšãããœããã䜿ãã€ã€ãã³ã³ãã³ãèªäœã¯Webäžã®ãã®ãèªã¿èŸŒã圢ã§å®çŸããã¢ããªã®ããšãæããŸã *1 ã Webã¢ããªã®è±å¯ãªæ
å ±éãšããã€ãã£ãã¢ããªã®è±å¯ãªæ©èœãšãçµã¿åãããè¯ããšãã©ãã®ã¢ããªãããããã€ããªããã¢ããªãªã®ã§ãã ã¡ãªãã ã¯ãã¹ãã©ãããã©ãŒã çŸåšæµéããŠãã ã¹ããŒããã©ã³ 㯠iPhone ã Android ã®ãµãã€ã§ããããã€ãã£ãã¢ããªã§ã¯ åè
ãswiftãåŸè
㯠Java ã§ã®éçºãäžè¬çã§ããã€ãŸããäž¡æ¹ã«å¯Ÿå¿ãã ã¹ãã ã¢ããªãéçºããããšããå Žåã¯ãå
šãç°ãªã2çš®ã®èšèªãåŠã¶å¿
èŠãããããããéçºã®ããŒãã«ãé«ãããäžå ãšãªã£ãŠããŸããã ã§ããããšãããããã€ããªããã¢ããªã¯ iPhone ã«ã Android ã«ãæšæºã§çµã¿èŸŒãŸããŠããWebViewãšãããœããã䜿ãã WebããŒãžãèªã¿èŸŒãã§è¡šç€ºãããããªåœ¢ã§åŠçãå®çŸãã ããã ã HTML5 ããã CSS ããã JavaScript ãã®3ã€ã®èšèªã§ãã©ã¡ãã«ã察å¿ã§ãããã€ãã£ã(颚ã®)ã¢ããªãéçºå¯èœãªã®ã§ãã UIã®èªç±åºŠãé«ã ãã€ããªããã¢ããªã¯ã HTML5 ã CSS ãçšããŠéçºããŸãã®ã§ããããã Webã¢ããªãäœæãããããªæèŠã§UIãèšèšãã ããšãåºæ¥ãŸãã ãã€ãã£ãã¢ããªãšæ¯èŒããŠãã«ã³ã¿ã³ã«ããããŠåã£ã衚瀺ããµã¯ããšäœããããã®ã¯çŽ æŽããããšæããŸãã Webã¢ããªã®éçºçµéšãããã°éçºãå¯èœ å
ã»ã©èšã£ãéãããã€ããªããã¢ããªã®éçºã«å¿
èŠãªã®ã¯åºæ¬çã«ã HTML5 ãã CSS ãã JavaScript ãã®äžçš®ã®ã¿ã§ãã ãã®ããããããæ±ãWebã¢ããªã®éçºçµéšããããšã³ãžãã¢ãªããããã»ã© èŠåŽããéçºã«çæã§ãã ãšæããŸãããã®æè»œãããããéçºè
ã«ãšã£ãŠã¯æå€§ã®é
åã«ãªãã§ãããã ãã¡ãªãã ãã€ããŒãªãã€ãã£ãæ©èœã®å©çšãé£ãã ãã€ããªããã¢ããªã§ã«ã¡ã©ã GPS ãªã©ã®ãã€ãã£ãæ©èœãå©çšããã«ã¯ãCordovaçã® ãã¬ãŒã ã¯ãŒã¯ ãæäŸããŠãã ãã©ã°ã€ã³ ãå©çšããã®ãäžè¬çã§ãã ãããããããã® ãã©ã°ã€ã³ ã¯ãã®ã»ãšãã©ãå人éçºãªã®ã§ãããŸãã«ããã€ããŒãªãã€ãã£ãæ©èœã ãš ãã©ã°ã€ã³ ãå®è£
ãããŠããããèªåã§éçºãããããªã...ãªããŠããšãã ãã€ãã£ãã¢ããªãšæ¯èŒãããšåäœãéã ãã€ãã£ãã¢ããªã¯ç«¯æ«äžã§åäœããã¢ããªããšããããšã¯å
ã»ã©èª¬æããŸããã äžæ¹ããã€ããªããã¢ããªã¯Webéä¿¡ãå¿
é ã«ãªã£ãŠããé¢ä¿äžããã€ãã£ãã¢ããªãšæ¯èŒããŠåäœããã£ããããå ŽåããããŸãã æè¿ã¯ã²ãŒã ã®ãããªåŠçã®å€ããã®ã§ãªããã°ãã€ãã£ãã¢ããªãšãéè²ããªããããã§ãããå€ãããŒãžã§ã³ã® ã¹ãã ã ãšããªããã£ããããå¯èœæ§ãããã®ã§æ³šæãå¿
èŠã§ãã Webæè¡ã§ãã€ãã£ããªæ©èœã䜿ã£ãŠã¿ã ã§ã¯ããããŸã§ã®è©±ãèžãŸããŠããã£ãã ã¹ããŒããã©ã³ ã®ãã€ãã£ããªæ©èœãå©çšãããã€ããªããã¢ããªäœæãäœéšããŠã¿ãããšæããŸãã ä»åéçºç°å¢ã«ã¯ã ã¢ã·ã¢ã«æ ªåŒäŒç€Ÿæ§ ãæäŸããŠãã ã Monaca ã ãšãã WebãµãŒãã¹ ã䜿çšããŸãããããŒã«ã«ã§éçºç°å¢ãçšæããå¿
èŠããªãã ã¯ã©ãŠã äžã§å
šãŠãå®çµããã®ã§ããªã䟿å©ã§ãã ã¢ã«ãŠã³ãååŸ ãŸãåãã«ã Monacaã®è£œåããŒãž ããã¢ã«ãŠã³ããååŸããŸãã Monaca ã¯å人åãã«ç¡æãã©ã³ãå«ã2ãã©ã³ãäŒæ¥åãã«2ãã©ã³çšæãããŠããŠãç¡æçã§ããªãªãŒã¹ãã«ããŸã§ã¯åé¡ãªãéçºããããšãåºæ¥ãŸãã ã§ãããç¡æçã ãšãã®ãã«ãã®åæ°ã1æ¥3åãŸã§ã«å¶éãããŠãããã Monaca ãçšæãã ãã©ã°ã€ã³ ãã䜿çšã§ããªãã£ããããã®ã§ããã€ãææçã«ç§»è¡ããã®ãããã§ãããã ä»åã¯ã²ãšãŸãç¡æçã§äœæããŸãã ãããžã§ã¯ãã®äœæ ã¢ã«ãŠã³ããäœæãããã ããã·ã¥ ããŒãã確èªããŠã¿ãŸãã æåã« ããã·ã¥ ããŒããéããšãã¯ãããŠã® Monaca ã¢ããªããšãããããžã§ã¯ããæ¢ã«äœæãããŠããŸã *2 ãããŸãã¯èªåã§æ°ãã«ãããžã§ã¯ããäœã£ãŠã¿ãŸãããã ãæ°èŠãããžã§ã¯ãã®äœæããã¯ãªãã¯ã Monaca ã§ã¯ããã€ãã®ãµã³ãã«ã¢ããªããUIã JavaScript ã® ãã¬ãŒã ã¯ãŒã¯ ãå©çšãããã³ãã¬ãŒããããã€ããããŸãã®ã§ããããã£ããµã³ãã«ãåèã«ãã€ã€éçºãé²ããããšã«ãªããšæããŸãã ä»åã¯ã²ãšãŸããNo Frameworkãã§äœæããŸããäœæãããããžã§ã¯ããéããšãæ©éç·šéç»é¢ãåºãŠããŸããã ç·šéç»é¢ã«ã€ããŠã¯ãã»ãŒã»ãŒäžè¬ç㪠IDE ãšåãèŠæ¹ã§ããç§ã¯æ®æ®µ Eclipse ã䜿ã£ãŠããã®ã§ãç»é¢ã«é¢ããŠã¯ç°¡åã«çè§£ã§ããŸããã ç»é¢å³ã«ã¯ãã¬ãã¥ãŒã衚瀺ãããŠããŸããã ã¹ããŒããã©ã³ ã®ãã€ãã£ããªæ©èœä»¥å€ã®åäœã¯ä¿åãããã®ãå³åæ ãããã®ã§ãã³ãŒãã£ã³ã°ããããããšæããŸãã ãã©ã°ã€ã³ ã®æå¹å ããŠããããã ã¹ããŒããã©ã³ ã®ãã€ãã£ãæ©èœãå©çšã§ããããã«ããŠãããŸãã ä»åã¯ã çŸåšäœçœ®ãGoogleMapã«è¡šç€ºãã ã¢ããªã®äœæã«åãçµãã§ã¿ãŸãããã ãŸããã¡ãã¥ãŒããŒãããèšå®->Cordova ãã©ã°ã€ã³ ã®ç®¡çããéããçŸåšäœçœ®ãååŸããããã® ãã©ã°ã€ã³ ãGeolocationããæå¹åããŸãã ãã©ã°ã€ã³ ã«é¢ããŠã¯ç¡æçã§ãããªãã®æ°ããããä»ã«ãã«ã¡ã©ã ããŒã³ãŒããªãŒã ãŒããã€ãã¬ãŒã·ã§ã³æ©èœãªã©ã ãã®ç»é¢ã§æå¹ã«ããã ãã§å©çšããããšãã§ããŸãã®ã§ã調ã¹ãŠã¿ãŠãã ããã Monaca åŽã§ã®èšå®ã¯ããã§å®äºã§ãã API ããŒã®ååŸ ããŠãç¶ããŠGoogleMapã衚瀺ãããããã«å¿
èŠãªã Google Maps API ã®æ¿èªããŒãååŸããŸãã Google ã¢ã«ãŠã³ãã§ãã°ã€ã³ããŠããã APIã®ããŒãž ã®å³äžã«ãããããŒã®ååŸããã¯ãªãã¯ããŠ32æåã® API ããŒã確èªããŠãã ããã ãã®ããŒãã³ãŒãã«åã蟌ãããšã§Mapã衚瀺ã§ããããã«ãªããŸãã ã²ãšãŸãã¯ç¡æã§å©çšã§ããŸãããèªã¿èŸŒã¿ã®åæ°ã«ãã£ãŠã¯èª²éãå¿
èŠã«ãªããŸãã®ã§ããªãªãŒã¹ãªã©ãè¡ãéã¯æ³šæããŠãã ããã ã³ãŒãäœæ ããŠãã§ã¯æ©éã³ãŒããæžããŠãããŸãããã ãŸãã¯è¡šç€ºéšåããã index.html <!DOCTYPE HTML> < html > < head > < style > #map { height : 400px ; width : 100 %; } </ style > ããïœäžç¥ïœ < script src = "./script.js" ></ script > < script src = "https://maps.googleapis.com/maps/api/js?key=ããã«APIããŒãå
¥å&callback=getMapLocation" ></ script > </ head > < body > < div id = "map" > </ div > </ body > </ html > ã¹ã¯ãªãã ãšããŠèªã¿èŸŒãã®ã¯åŸè¿°ã®jsãã¡ã€ã«ãšGoogleMapsAPIã§ãã callback=getMapLocation 㯠API ãèªã¿èŸŒãã éã«æåã«å®è¡ããã¡ãœããã®ããšã ç¹ã«åŒã£ããããšããã¯ãªããšæããŸãããäžã€ã ãæ³šæç¹ãã Mapã®è¡šç€ºéšå < div id = "map" > </ div > ã«ã¯å¿
ã CSS ãªã©ã§ 衚瀺é åãç¢ºä¿ ããŠãããªããšãä»®ã«Scriptãæ£ãããŠãMapã衚瀺ãããŸããã ç§ã¯ãããªãã ããªãããšã§æ°æéãæ©ãã§ããŸããŸãã... script.js ãããŠãããã JavaScript ã®ã³ãŒãã£ã³ã°ãéå§ããŸãã ä»åã¯ã Monaca ã® å
¬åŒããã¥ã¡ã³ã ã«ä¹ã£ãŠãããã®ãåèã«ããŸããã var Latitude = undefined ; //緯床 var Longitude = undefined ; //çµåºŠ // åæåŠç function getMapLocation() { navigator.geolocation.getCurrentPosition(onMapSuccess, onMapError, { enableHighAccuracy: true } ); } // getMapLocation()ã§ã®äœçœ®æ
å ±ã®ååŸã«æåãããåŒã°ãã var onMapSuccess = function (position) { Latitude = position.coords.latitude; Longitude = position.coords.longitude; getMap(Latitude, Longitude); } // ååŸããäœçœ®æ
å ±ãããšã«Mapãçæãã function getMap(latitude, longitude) { var latLong = new google.maps.LatLng(latitude, longitude); //äœçœ®æ
å ±ã®èšå® var mapOptions = { center: latLong, zoom: 15, mapTypeId: google.maps.MapTypeId.ROADMAP //Mapã®è¡šç€ºåœ¢åŒããã®å Žåéåžžã®éè·¯å°å³ã«ãªã } ; var map = new google.maps.Map( document .getElementById( "map" ), mapOptions); var marker = new google.maps.Marker( { position: latLong } ); marker.setMap(map); } // äœçœ®æ
å ±ã®ååŸã«å€±æããæã«åŒã°ãã function onMapError(error) { console.log( 'code: ' + error.code + '\n' + 'message: ' + error.message + '\n' ); } æåã«åŒã³åºã getMapLocation() ã§ããGeolocationã ãã©ã°ã€ã³ ãå©çšããŠçŸåšäœçœ®ãååŸããŠããŸããæåãããš onMapSuccess ã getMap(latitude, longitude) ãšåŠçãé²ãã§ãããæåŸã«çŸåšäœçœ®ã瀺ããMapã衚瀺ãããããã«ãªããŸãã 颿°ã®æå³ãåããã°ããã¡ããå
容èªäœã¯ãã»ã©é£ãããªãã§ãããã å®è¡ïŒ ããŠãã§ã¯æ©éãã®ã¢ããªã詊ããŠã¿ããã®ã§ãã... åœç¶ãã«ãããªãªãŒã¹ã¯ãŸã è¡ã£ãŠããªãã®ã§ã ã¹ããŒããã©ã³ ã§æ©èœã詊ãã«ã¯ ãããã° çšã®ã¢ããªãå¿
èŠã§ãã Monaca ã®ãããã¬ãŒã¯ã Android , iOS å
±ã«ç¡æã§ã€ã³ã¹ããŒã«ãã§ããŸãã ãããŠãã€ã³ã¹ããŒã«åŸã«èªåã®ã¢ã«ãŠã³ãã«ãã°ã€ã³ããå
ã»ã©ã®testãããžã§ã¯ããèµ·åããŠã¿ããš... èŠäºãèªåã®çŸåšäœçœ®ãMapã«è¡šç€ºãããŸããïŒ ãããã« ãã€ããªããã¢ããªãã©ãã ãç°¡åã«äœæã§ããããåããããã ããã§ããããã åœç¶ã ãã©ã°ã€ã³ ã¯ä»å玹ä»ãããã®ä»¥å€ã«ãããŸããŸãããŸãããHTMLã JavaScript ãé£ããèšèªã§ã¯ãªããšæããŸãã®ã§ãããããäœãã¢ããªãäœã£ãŠã¿ããïŒãšããåå¿è
ã®æ¹ã«ã¯æé©ããšæããŸãã (ããååã®èšäºã§ãèšã£ããªâŠ) çããããããããæè»œã« ã¹ãã ã¢ããªã®éçºã«çæããŠã¿ãŠã¯ãããã§ããããïŒ åè ネイティブアプリの意味や定義 Weblio辞書 開発コスト削減&サクサク動く!今話題の”ハイブリッドアプリ”って? | 起業・創業・資金調達の創業手帳 ハイブリッドアプリとは? - Qiita ハイブリッドアプリ制作で動作が重くならないために気をつけること|意識の高い時に雑記 Get an API Key | Maps JavaScript API | Google Developers 位置情報の取得 プラグイン | Monaca Docs *1 : webã¢ããªã§ãããªãããã«ã¡ã©ã GPS ãªã© ã¹ãã æ¬äœã®æ©èœãå©çšããã¢ããªã®ããšããšããèŠæ¹ãããããã§ãã *2 : ãtestãã¯ç§ãäœæãããã®ã§ãã
ã¯ããã« ããã«ã¡ã¯ã ã©ã¯ ã¹ãšã³ãžãã¢ã®strongWhiteã§ãã ä»å㯠åå¿è
åãSwiftããã°ã©ãã³ã°ååŒ·äŒ ã«åå ããã®ã§ãå匷äŒã®å
容ãåå ããææ³ãèšäºã«ããããšæããŸãã Swiftãšã¯ æ¬é¡ã«å
¥ãåã«Swiftã«ã€ããŠç°¡åã«è§ŠããŠãããŸãã Swift ãšã¯ã iOS åãã®ã¢ããªã±ãŒã·ã§ã³ãéçºããããã® ããã°ã©ãã³ã°èšèª ã§ã Apple 瀟ãéçºããŸããã iPhone ã iPad ããæã¡ã®æ¹ã§ããµã ãäœæ°ãªãã«äœ¿ã£ãŠããã¢ããªã¯ãã®Swiftã«ãã£ãŠäœãããŠããŸãã Swift㯠Xcode ( çµ±åéçºç°å¢ )ã䜿ã£ãŠèšè¿°ããŠãããŸãã åå ããååŒ·äŒ ãµã ãç§ã¯èªå®
ã§ããã°ã©ãã³ã°åŠç¿ãããŠããã®ã§ãããããŸããŸSwiftã«é¢ããå匷äŒã調ã¹ãŠãããšãããSwiftã®ã¹ã®åãç¥ããªãåå¿è
ã§ãæ°è»œã«åè¬ã§ããããªå匷äŒãèŠã€ããã®ã§ãæãåã£ãŠåå ããŠã¿ãããšã«ããŸããã ã ã«ãã§ãµãã³ã§åŠã¶!è¶
åå¿è
åãã®swiftããã°ã©ãã³ã°ã¬ãã¹ã³âª ã éå¬å°ïŒå€§éª å¿ææ© ã¬ã³ã¿ã«ãªãã£ã¹ salon HAJIMARI æ¥æïŒ2018幎1æ21æ¥(æ¥) 14:00ã18:00 æã¡ç©ïŒããŒãããœã³ã³( Mac OS )ã黿ºã³ãŒã/黿ºã¢ããã¿(åã¯ããããª) åå è²»ïŒ2,000å ãããã ããããäŒ ãšã¯éããè¬çŸ©åœ¢åŒã§ç°¡åãªã¢ããªãäœæããŠãããŸãã Xcode ã®èšå®ããããžã§ã¯ãã®äœæããäžå¯§ã«æããŠããããã®ã§ããã¢ããªã«ã€ããŠèå³ã¯ãããã©ã©ããã£ãŠäœãã°ãããããããªãããšãã人ã«ã¯ãªã¹ã¹ã¡ã®å匷äŒã§ããã äŒå Žã®é°å²æ° äŒå Žã¯ ã¬ã³ã¿ã«ãªãã£ã¹ ã®ã«ãã§ã¹ããŒã¹ã ã£ãã®ã§ã倧åŠã®è¬çŸ©å®€ã®ãã㪠å
èŠãã æãã¯ãªãããã£ãããšå¿ãèœã¡çãããªããå匷ã§ããŸããã äŒå Žã®ç®¡ç人ãããããèåãšã³ãŒããŒãåºããŠããã ããã®ã§ãããã°ã©ãã³ã°ã§è©°ãŸã£ãæã¯ããŸãæ°å転æãããããšãã§ããŸããã ã«ãã§ã¹ããŒã¹ã§ã³ãŒããŒã飲ã¿ãªãã Mac ãç«ã¡äžããŠããæ§ã¯äœã ãããããšã³ãžãã¢ã£ãœããªãšæããŸãã(ç¬) äœæããã¢ã㪠å匷äŒã®é嬿¥ããã¬ã³ã¿ã€ã³ããŒã«è¿ãã£ãããšããããããã¬ãŒã³ãããã¯ã¹ãã¿ãããããšãã¬ã³ã¿ã€ã³ã¡ãã»ãŒãžãéãããã¢ããªãäœæããŸããã äŒå Žã§ã¯ã·ãã¥ã¬ãŒã¿ã§åäœç¢ºèªãè¡ã£ãŠããŸã( iPhone ãªã©ã®ç«¯æ«ãããã°å®éã«ã¢ããªãã€ã³ã¹ããŒã«ããããšãå¯èœã§ã)ã ç»é¢ãæ§æèŠçŽ (ãã¬ãŒã³ãããã¯ã¹ãªã©ã®ããŒã)ãå°ãªããè€éãªæåãããªãã®ã§ããã°ã©ã èªäœã¯æ°åè¡çšåºŠã®ç°¡åãªãã®ã§ãã Swiftã«è§ŠããŠæ¥ãæµ
ã人ã«ã¯ã¡ããã©ããé£æåºŠã§ã¯ãªãã§ããããã åå ããææ³ ä»åã®å匷äŒã§äœæããããã°ã©ã ã¯ãã»ã©é£ãããªãã£ãã®ã§ãå°ãç©è¶³ããªãã£ãå°è±¡ã§ãã è¬çŸ©èªäœãæåã®2æéãããã§çµãã£ãŠããŸã£ãã®ã§ãåŸåã¯åå è
ãšã®äº€æµã«ããŠã圢ã«ãªããŸããã äž»å¬è
åŽã¯ãããåŸåã®åå è
ãšã®äº€æµã«éãã眮ããŠããããããç©æ¥µçã«åå è
ãšã®æèŠäº€æãä¿ããŠããŸããã 瀟å€ã®ãããšç©æ¥µçã«é¢ããã貎éãªæ©äŒã§ããã®ã§ãæè¡è«è©±ãçãã«è¡ããŸããã æåŸã« èªå®
ã§ã®ããã°ã©ãã³ã°åŠç¿ã¯äœãã§è©°ãŸã£ãããæãããã«çè§£ãé²ãŸãªãã£ããšããŠãèªåã²ãšãã§è§£æ±ºããªããšãããªãã®ã§çµæ§ã€ããã§ãã ååãåèæžãèªãã ããWebãµã€ãã§èª¿ã¹ããããããå³åŸå·ŠåŸããªããšãããªããšæããŸãããå匷äŒã«è¡ããšããããªãããšã¯æ°è»œã«è³ªåã§ããã®ã§ããã§ãã ããã«ã§ãç¥èã身ã«ä»ããã人ã¯åèæžãè²·ããããå匷äŒã«è¡ã£ãæ¹ããããããããŸããã åè Swift Xcode
MasaKuã§ãããããã瀟äŒäººïŒå¹Žç®çµäºã§ãã è¿æ³ã§ãããå
æ¥å€§éªã§éå¬ããã ãªãŒãã³ãœãŒã¹ ã®ã€ãã³ã OSC OSAKA 2018 ã«åå ããŸããã www.ospn.jp ã€ãã³ãã®äžã§ã openSUSE ãã®ã»ãã·ã§ã³ããã£ãã®ã§ããã Linux ãã¹ã¯ãããã䜿ã£ãããšããªãç§ã®ãããªåå¿è
ã§ãæ±ããããã㪠Windows ã©ã€ã¯ãªç»é¢ã§èå³ãæã¡ãŸããã ãŸããçºè¡šè
ããã®å±ç€ºããŒã¹ã®æ¹ã«ã蚪ãããã§ããã openSUSE Leap42.3 ã®ã€ã³ã¹ããŒã«ãã£ã¹ã¯ãé ããã®ã§ãå€ããªã£ãããŒãããœã³ã³ã«ã€ã³ã¹ããŒã«ããŠäœ¿ã£ãŠã¿ãããªãšæããŸããã openSUSE ã®å
¬åŒãã¹ã³ãããGeeko(ã®ãŒã³ïŒãã§ãã坿ãã§ããã openSUSEãšã¯ ãã©ã€ããŒãçšãšããŠã®Linuxãã¹ã¯ãããã®å©çš ããã±ãŒãžç®¡çãœãããYaSTã YaSTãå©çšããLAMPç°å¢ã®æ§ç¯ YaSTãå©çšããApacheã®èµ·å Apacheã®èšå® ãããã« åèãµã€ã openSUSE ãšã¯ " Slackware âç³» Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ ã§ãäž»ã«æ¬§å·ã§äººæ°ã®ããã§ãã 2017幎7æãã" Microsoft ã¹ã㢠âã§ããªãªãŒã¹ãããŠããŸãã ãã¹ã¯ãããç»é¢ ãã¹ã¯ãããã¯äžå³ã®ãããªæãã§ãæ®æ®µãã Windows ãã·ã³ãå©çšããæ¹ã¯ããã«æäœã«æ
£ããããšãã§ããã®ã§ã¯ãªãã§ããããã ãŸããä»®æ³ãã¹ã¯ããããããAlt + Tabãã®ç»é¢åãæ¿ããªã©ãæ§ã
ãªãã¹ã¯ããã广ã䜿ããããã Windows ã Mac ã§ãã®ãããªæ©èœã倿§ãããæ¹ã§ã䜿ããããã®ã§ã¯ãªãããšæããŸãã OSC OSAKA 2018 ã®äŒå Žã§èãã話ã§ãã openSUSE ã¯ããªãåæããä»®æ³ãã¹ã¯ãããæ©èœãå°å
¥ããŠããããã§ãã ãã©ã€ããŒãçšãšããŠã® Linux ãã¹ã¯ãããã®å©çš ç§ã¯æ¥åã§ããã©ã€ããŒãã§ãã Windows ãã·ã³ã䜿ã£ãŠããŸãã openSUSE ããã©ã€ããŒãã§å©çšããå Žåãæ®æ®µè¡ã£ãŠããããšãã©ããŸã§ã§ããã®ãããšããããšããªã¹ãã¢ããããŸããã æç« äœæïŒ google ããã¥ã¡ã³ããå©çšã§ãã ããã°ã©ãã³ã°ïŒ Atom ã Linux ç°å¢ã§ãå©çšã§ãã åç»èŠèŽïŒ YouTube çã®åç»ãµã€ããå©çšã§ãã FireFox ãæšæºæèŒãããŠããããã Windows ã§å©çšããŠã ã¯ã©ãŠã ãµãŒãã¹ããã®ãŸãŸå©çšã§ããŸãã ç°å¢ãéžã°ãªãããšã®çŽ æŽããããæ¹ããŠå®æããŸããã ä»ã®ãšããããã©ã€ããŒãå©çšããäžã§ã¯ç®ç«ã£ãåé¡ã¯èŠã€ãã£ãŠããŸããã 匷ããŠåé¡ç¹ãäžãããªãã ãã©ãã«ã·ã¥ãŒãã£ã³ã° ãã»ãŒè±èªèšäºã®ãããåé¡ãèµ·ããå Žåã¯è±èªãšåãåããªããã°ãªããªããšããç¹ããããŸãã æ¥æ¬èªã® ãã©ãã«ã·ã¥ãŒãã£ã³ã° ãèšäºã«ããŠçºä¿¡ããŠããäºã§ããããã§ã ãªãŒãã³ãœãŒã¹ ã®çºå±ã«è²¢ç®ã§ããããããªãããšæããŸãã ããã±ãŒãžç®¡çãœããã YaST ã Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ ã¯ã©ã®OSãé¡äŒŒæ©èœãããããç¹åŸŽãèŠã€ãã«ããããã§ããã openSUSE ã®æå€§ã®ç¹åŸŽã¯ã YaST ããšããããã±ãŒãžç®¡çãœããã§ãã YaST ãšã¯ã Yet another Setup Tool (ãã 1 ã€ã®ã»ããã¢ããããŒã«) ã®ç¥ã§ãã·ã¹ãã å
šäœã®èšå®ãè¡ãªãããšãã§ããããã«ç®æããŠäœãããŠããŸãã Windows ã®ã³ã³ ãããŒã« ããã«ã®ããã«èŠããŸããã GUI ã§ Linux ã®æäœãã§ããããŒã«ã§ãã ããã«ãŠã§ã¢ ã®ã€ã³ã¹ããŒã«ã YaST ã§è¡ãããšãã§ããŸãã YaST ã®ãããç»é¢ YaST ãå©çšãã LAMP ç°å¢ã®æ§ç¯ é©ãã ã£ãã®ãã YaST ã®ãœãããŠã§ã¢ç®¡çã¡ãã¥ãŒãå©çšããããšã§ã LAMP ç°å¢ãäžçºã§æ§ç¯ã§ããŠããŸããŸãã æ§ç¯æé ã¯ä»¥äžã®éãã§ãã ã¡ãã¥ãŒã®äžãããœãããŠã§ã¢ãéžæããœãããŠã§ã¢ç®¡çãéžæ æ€çŽ¢ããŒã« LAMP ãšå
¥å æ€çŽ¢ã§èŠã€ãã£ããpatterns-openSUSE- lamp _serverããéžæããŠäºè§£ãã¿ã³ãæŒäž YaST ã§ã® LAMP ç°å¢ã®ã€ã³ã¹ããŒã«æé ãã£ãšããéã« PHP ãå®è¡ã§ããç°å¢ãåºæ¥äžãããŸããã YaST ãå©çšãã Apache ã®èµ·å ã€ã³ã¹ããŒã«å®äºåŸã« Apache ã®åäœç¢ºèªãè¡ããŸãã Apache ã®èµ·åã YaST ã§è¡ãããšãã§ããŸãã ã¡ãã¥ãŒã®äžããã·ã¹ãã ãéžæãããµãŒãã¹ãããŒãžã£ãŒãéžæ Apache2ãéžæããŠæå¹ã«å€æŽããéå§ãæŒäžãã OKãæŒäžããŠã倿Žã確å®ãã Apache ã®èµ·åæ¹æ³ ããã§ Apache ã®èµ·åãå®äºã§ãã FireFox ã§ localhost ããã㯠Apache ãèµ·åããŠããã³ã³ãã¥ãŒã¿ã® IPã¢ãã¬ã¹ ã«ã¢ã¯ã»ã¹ãããš Apache ãèµ·åããããšã確èªããããšãã§ããŸãã Apache ã®èµ·å確èªããIt works!ããšè¡šç€ºãããŠããã°èµ·åæå Apache ã®èšå® PHP ãå©çšããããã«ã¯ apache ãèšå®ããå¿
èŠããããŸããããã¡ãã YaST ã§èšå®ããããšãã§ããŸãã ãããã¯ãŒã¯ãµãŒãã¹ãéžæããHTTPãµãŒããéžæ ãŠã£ã¶ãŒãã«åŸã£ãŠãµãŒãã®èšå®ãè¡ã PHP ãå©çšã§ããããã«ããããã®èšå® éèŠãªã®ã¯STEP2ã§ PHP ãèšå®ããããšã§ãã ãã以å€ã¯èšå®ããå¿
èŠã¯ãããŸããã èšå®ãå®äºããã以äžã®ããã°ã©ã ãäœæã㊠/srv/www/htdocs/ ã«é
眮ããŠç¢ºèªããŠã¿ãŸãããã <?php phpinfo () ; Apache ã§ PHP ã䜿ããç¶æ
ã«ãªã£ãŠããã°phpinfo()ãèµ·åããŠç»é¢ã衚瀺ããã ãããã« ãããã§ããã§ããããã Linux ã¯ãµãŒããšããŠããå©çšããããšããªãã£ãããã Linux ãã¹ã¯ãããããããŸã§å©çšãããããã®ã ãšã¯æããŸããã§ããã OSç¡ãã®ããŒãããœã³ã³ãäžå°è³Œå
¥ããŠã openSUSE ãå
¥ããŠãã£ãããšäœ¿ã£ãŠã¿ãããšããæ°æã¡ã«ããªããŸããã Linux ãã¹ã¯ãããã«èå³ãããæ¹ããå€ããªã£ãããœã³ã³ãåå©çšããŠã¿ããããšããæ¹ã¯å©çšããŠã¿ãŠã¯ãããã§ããããã åèãµã€ã 「openSUSE Leap」がWindows 10の“ストア”に登場 ~「SUSE Linux Enterprise Server」も - 窓の杜 KDE4ã®ãã¹ã¯ããã广ã®è§£èª¬ ãããã®VPSã«openSUSE Leap42.2ãæäŸãããã®ã§LAMPãªç°å¢ãæ§ç¯ããŠã¿ã
ã¯ããã« ããããããš cVimã®ããŠã³ããŒã cVimã§ã§ããããš(ã·ã§ãŒãã«ããããŒ) cVimã§ã§ããããš(ã³ãã³ã) ã·ã§ãŒãã«ããã®ã«ã¹ã¿ãã€ãº èšå®äŸ unmap x map w map e :duplicate let hintcharacters "asdfgjklwertuioxcvnm" set noautofocus çµããã« åè ã¯ãã㫠以å調ã¹ãããšãå€ãææããããå¹ççã« ãã©ãŠãžã³ã° ãããããcVimãšãã google Chrome ã§å©çšã§ãã æ¡åŒµæ©èœ ãå°å
¥ããŸãããcVimã䜿ããš Vim ã©ã€ã¯ã«ãã©ãŠã¶ã䜿ãããšãã§ããä»ãã·ã§ãŒãã«ãããèªåã§èšå®ããããšãã§ããŸãããã®èšäºã§ã¯cVimã䜿ããšã§ããããšã玹ä»ããŸãã ããããããš ç§ãããŒã«ãå°å
¥ãããããã£ãããšãèšèŒããŸãã ã§ããã ãããŠã¹ã䜿ããã« ãã©ãŠãžã³ã° ãããã command + f ã®ãããª2ããŒã®ã·ã§ãŒãã«ããã1ããŒã§è¡ãããã£ã ã¿ãã®è€è£œãç¹å®ã®ããŒãžãéããšãã£ããååšããªãã·ã§ãŒãã«ããã䜿ããã cVimã®ããŠã³ããŒã ããŠã³ããŒãããŒãž ãã远å ãã¿ã³æŒããŠããŠã³ããŒãããŸã(ç§ã¯è¿œå æžã¿ã®ããã CHROME ã«è¿œå æžã¿ããšãã衚瀺ã«ãªã£ãŠããŸãã)ã cVimã§ã§ããããš(ã·ã§ãŒãã«ããããŒ) cVimã«å
ããåãã£ãŠããã·ã§ãŒãã«ããããŒã«ã€ããŠå¹Ÿã€ã玹ä»ããŸãã f ã§ããŒãžå
ã®ãªã³ã¯ã«ã·ã§ãŒãã«ãããå²ãæ¯ã æããcVim(ãäŒŒã æ¡åŒµæ©èœ Vimium)ã䜿ã£ãéã«äžçªäŸ¿å©ãªæ©èœã§ããäžèšã®å Žåã¯ç¶ã㊠u ãæŒãã°ã©ã¯ã¹ã®ããŒã ããŒãžãéãããŸã j ã§äžã k ã§äžã«ããŒãžã¹ã¯ããŒã«(ç¢å°ããŒã®äžäžãšåãæå)ã d ã§äžã u ã§äžã«åããŒãžåã¹ã¯ããŒã« gg ã§ããŒãžã®æäžéšãžç§»åã G ã§ããŒãžã®æäžéšãžç§»å / ã§ããŒãžå
æ€çŽ¢ã Enter ã§æ€çŽ¢æååã確å®åŸ n ã§æ¬¡ã®æ€çŽ¢å¯Ÿè±¡ã N ã§åã®æ€çŽ¢å¯Ÿè±¡ãžç§»å gi ã§ããŒãžã®äžçªäžã®æ€çŽ¢æ¬ã«ãã©ãŒã«ã¹ cVimã§ã§ããããš(ã³ãã³ã) : ã§ã³ãã³ããæãŠãŸããäŸãã° :tabnew [URL] ã§ã[URL]ãæ°èŠã¿ãã§éããã :tabnew [æ€çŽ¢æåå] ã§ãæ°èŠã¿ãã§[æ€çŽ¢æåå]ãæ€çŽ¢ããçµæãéããããšãã§ããŸãããŸãã : ã§ã³ãã³ãã¢ãŒãèµ·åããåŸãæåãå
¥åãããšãã®æåããå§ãŸãã³ãã³ãã衚瀺ããŠãããŸã(äžèšã¯ t ãå
¥åããå Žå)ãåè£ã¯ tab ãš shft + tab ã§ç§»åã§ããŸãã ã·ã§ãŒãã«ããã®ã«ã¹ã¿ãã€ãº : ã§ã³ãã³ããæãŠããšå
ã»ã©èšè¿°ããŸããããšã¯èšãã³ãã³ããæã€ããããªãããŠã¹ã§æäœããæ¹ãæ©ããšãã話ã§ããããã§ã¯ã·ã§ãŒãã«ããããŒãã³ãã³ããèšå®ããæ¹æ³ãã玹ä»ããŸãã ã·ã§ãŒãã«ãããªã©ã®ã«ã¹ã¿ãã€ãºã¯cvimã®ããŒã¯ > Settingsããèšå®ã§ããŸãã cVimrcãšæžãããæ ã«èšå®ãèšè¿°ããŠãããŸããå ã¿ã«Helpã®ãªã³ã¯ãæŒããšãcVimã®ã·ã§ãŒãã«ããããŒã CSS ã®èšå®æ¹æ³ãäŸãèŒã£ãŠããŸãã®ã§è©³ããç¥ãããæ¹ã¯ãåç
§äžããã ããã§ã¯äŸãšããŠããã©ã¯ã¹ã®ããŒã ããŒãžãæ°èŠã¿ãã§éãããèšå®ããŠã¿ãŸãã 1.cVimrcã«èšå®ãèšè¿° map [ä»»æã®ããŒ]ã[æå] ã§ä»»æã®ããŒã«ç¹å®ã®æåãèšå®ã§ããã®ã§ãäžèšã®ããã«èšå®ããŸããããã§ a ããŒã« :tabnew https://www.rakus.co.jp/ ãå²ãåœãŠãããŸãã map a :tabnew https://www.rakus.co.jp/ 2.ç»é¢äžéšã®saveãã¿ã³ããèšå®ãä¿å ããã§èšå®ã¯å®äºã§ããããšã¯æ°èŠã®ã¿ããéããŠ(èšå®åã«éããŠããã¿ãã ãšèšå®ãåæ ãããŠããªããããªããŒããå¿
èŠ)ã a ãšæŒãã°äžèšã®ãããªç»é¢ã衚瀺ãããã¯ãã§ããããã« Enter ãæŒãã°ã©ã¯ã¹ã®ãããããŒãžãéãããã¯ãã§ãã äžèš ã®äŸã¯ã³ãã³ããå®è¡ãããã®ã§ãã£ããããã·ã§ãŒãã«ããããŒãæŒããããšã« Enter ãæŒãå¿
èŠããããŸããããcVimã§çšæãããŠããã·ã§ãŒãã«ãã( f ã j ã k ãªã©)ãªãããŒãæŒããã ãã§ç¹å®ã®æåãå®è¡ã§ããŸãã èšå®äŸ æåŸã«çŸåšã®ç§ã®èšå®ã玹ä»ããŸã(䜿ãå§ããŠéããªãã®ã§ãããŸã§èšå®ããŠãŸããã...) unmap x unmap [ããŒ] ãšèšå®ããããšã§ç¹å®ã®ããŒãã·ã§ãŒãã«ããã§äœ¿ããªãããŸã Command ãšééã£ãŠ x ãæŒããšcVimã«ç»é²ãããŠãããçŸåšã®ã¿ããéããã(closeTab)ãå®è¡ãããŠããŸãã®ã§ç¡å¹ã«ããŸãã(ã¿ã€ãããªããã°ãã話ãªãã§ããã©ã) map w Command + w ã®ãçŸåšã®ã¿ããéãããã w 1ã€ã§ã§ããããã«ããŠããŸã ãããã£ãããšã®1ã€ã2ããŒã®ã·ã§ãŒãã«ããã1ããŒã§è¡ãããããå®çŸããŠããèšå®ã§ã map e :duplicate e ãšæŒããåŸã« Enter ãæŒããšãçŸåšã®ã¿ããè€è£œããããå®è¡ã§ããŸã ãããã£ãããšã®1ã€ãååšããªãã·ã§ãŒãã«ããã䜿ãããããå®çŸããŠããèšå®ã§ã let hintcharacters "asdfgjklwertuioxcvnm" f ã§ããŒãžå
ã«ãªã³ã¯ãå²ãæ¯ãéã«äœ¿çšã§ããããŒãèšå®ããŠããŸã set noautofocus éããéã«å
¥åæ¬ã«ãã©ãŒã«ã¹ãããããŒãžã ãšãã·ã§ãŒãã«ããã䜿ãåã«å
¥åæ¬ããã§ã(escãæŒã)å¿
èŠããããŸããé¢åãªã®ã§ãå
¥åæ¬ã«ãã©ãŒã«ã¹ããªãããã«èšå®ããŠããŸã çµããã« ãã®èšäºã§ã¯cVimã«ã€ããŠã玹ä»ããŸãããããã§ã¯ CSS ãªã©ã®èšå®ã«ã¯è§ŠããŸããã§ããããä»ã«ãè²ã
ãšèšå®ãã§ããã®ã§æ°ã«ãªã£ãæ¹ã¯èª¿ã¹ãŠã¿ãŠãã ããã åè Google Chromeã§cVimã®èšå®ãã¢ããããŒã ã¯ããŒãªã²ãšãšãv2
id:radiocat ã§ããæè¿èªãã æžç±ã¯ ã«ã€ãŒã³ã»ãžã£ãŒã㌠ã§ãã å
æããITãšã³ãžãã¢ã«èªãã§ã»ããïŒæè¡æžã»ããžãã¹æžå€§è³ 2018ããçºè¡šãããŸããã www.shoeisha.co.jp ä»å¹Žã®å€§è³ã¯ä»¥äžã®éãæ±ºãŸã£ãããã§ãã æè¡æžéšé æ©æ¢°åŠç¿å
¥é ãã«ããã³æ©æ¢°åŠç¿ããæ·±å±€åŠç¿ãŸã§ äœè
: 倧é¢çä¹ çºå£²æ¥: 2016/12/01 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ããžãã¹æžéšé è·å Žã®åé¡å°å³ ~ãã§ãã©ãããå€ãã?ãæ®æ¥ã ããã»äŒããªãåãæ¹ äœè
: 沢枡 ããŸã çºå£²æ¥: 2016/09/16 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ãã®äŒç»ã¯ ç¿æ³³ç€Ÿ ããã®äž»å¬ã§æ¯å¹Žéå¬ãããŠããŸãããã®å¹Žã®æ¬ãªæè¡æžãç¥ãããšãã§ããã®ã§æ¥œãã¿ã«ããŠãããšã³ãžãã¢ã®äººãå€ãã®ã§ã¯ãªãã§ããããïŒ ãšããããã§ããã®ã€ãã³ãã«ãããã£ãŠåŒç€Ÿç€Ÿå
ã§ãããããã®æžç±ã«ã€ããŠã¢ã³ã±ãŒããåã£ãŠã¿ãŸãããéçºéšã®æ°äººããéšé·ãŸã§åœ¹è·ãè·æŽãåãããç¹ã«ããŒããå¶éãèšãããçŸæç¹ã§äººã«ããããã§ããæžç±ã1人æå€§5åãŸã§éžãã§ããããŸããããã ããã®èšäºã®ã¿ã€ãã«ã®éãåŒç€Ÿã¯ ã¯ã©ãŠã ãµãŒãã¹ã®äŒç€Ÿã§Webç³»ã®ãšã³ãžãã¢ãå€ããããæ¬å®¶ã®æç¥šçµæããã¯ãžã£ã³ã«ãå°ãéå®ãããŠããŸãç¹ã¯å¿µé ã«çœ®ããŠããã ããã°ãšæããŸããé¡ããŠã ã¯ã©ãŠã ãµãŒãã¹ã®ãšã³ãžãã¢ãèªãã§ã»ããïŒïŒãšæã£ãŠããïŒæè¡æžã»ããžãã¹æž 2018ãã§ãã RAKUS Developers ã«æãæ¯æãããŠãã1å æè¡æžéšéïŒãªãŒããã«ã³ãŒã ããžãã¹æžéšéïŒããšã¿çç£æ¹åŒ RAKUS Developers ãéžã¶ãªã¹ã¹ã¡ã®5å æè¡æžïŒé人ããã°ã©ã㌠æè¡æžïŒãã¶ã€ã³çµç¹ã®ã€ãããã æè¡æžïŒSCRUM BOOT CAMP THE BOOK ããžãã¹æžïŒãæ®æ¥ããªãããŒã ããšãæ®æ¥ã ããããŒã ãã®ç¿æ
£ ããžãã¹æžïŒå
¥ç€Ÿ1幎ç®ã®æç§æž RAKUS Developers ã®ã²ãšãã²ãšããå³éžãã1å è¥æãšã³ãžãã¢ãéžãã 6å 7ã€ã®ç¿æ
£ 99%ã®äººãããŠããªããã£ã1%ã®ä»äºã®ã³ã ã¬ãã¬ããžã»ãªãŒãã£ã³ã° ãšã³ãžãã¢ã説æäžæã«ããæ¬ ããªã³ã·ãã« ãªã ããã°ã©ãã³ã° çŸå Žã§äœ¿ãããããã° & ãã©ãã«ã·ã¥ãŒã Javaç·š çç·Žãšã³ãžãã¢ãéžãã 4å Javaèšèªã§åŠã¶ãã¶ã€ã³ãã¿ãŒã³å
¥é ã«ã³ãã³ä»äºè¡ æ
ç±ããã°ã©ã㌠40æ³ãéããããåãæ¹ãå€ããªãã ã¹ãã·ã£ãªã¹ããéžãã 4å å
¥é ã³ã³ãã¥ãŒã¿ç§åŠ ITãæ¯ããæè¡ãšçè«ã®åºç€ç¥è UNIXãšããèãæ¹ ãã¹ãé§åéçº ãããHaskellãã®ããåŠãŒã! ãã¶ã€ããŒãéžãã 4å ãŠãŒã¹ã±ãŒã¹é§åéçºå®è·µã¬ã€ã ãšã³ãžãã¢ã®ããã®å³è§£æè SOSã®ç¿ åé¡è§£æ±ºã©ã ãããŒãžã£ãŒãéžãã 5å ã±ã³ã»ãã©ã³ãã£ãŒã ãªãŒããŒã·ããè« 1åéãããžã£ãŒâäœã瀺ããã©ãè€ããã©ãå±ãã! ãªããããªãã®ä»äºã¯çµãããªãã®ã Inspired: 顧客ã®å¿ãæãã補åã®åµãæ¹ Joy, Inc. ãããã« RAKUS Developers ã«æãæ¯æãããŠãã1å ãŸãã¯æãå€ãã®ç¥šãéããæè¡æžã»ããžãã¹æžããããã玹ä»ããŸãã æè¡æžéšéïŒãªãŒããã«ã³ãŒã æ¬å®¶ã®æè¡æžã»ããžãã¹æžå€§è³ã§ã2014幎ã«å€§è³ã«èŒããæžç±ãå
šäœã§æå€ã®ç¥šæ°ãéããŸãããåçã¯2012幎ã§ãããããŸã ã«æ°äººããããã©ã³ãŸã§å€ãã®ãšã³ãžãã¢ãæ ãæã«ããŠããäžåã®åèã§ãã ãªãŒããã«ã³ãŒã âããè¯ãã³ãŒããæžãããã®ã·ã³ãã«ã§å®è·µçãªãã¯ãã㯠(Theory in practice) äœè
: Dustin Boswell , Trevor Foucher çºå£²æ¥: 2012/06/23 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ æç¥šè
ã®ã³ã¡ã³ã ããã°ã©ã ã«ãšã£ãŠã¯ãæç§æžçãªæ¬ã ãšæããŸããã èšãããããªãšã³ãžãã¢ã¯å
šå¡èªãã ã»ããããæ¬ã ããžãã¹æžéšéïŒ ããšã¿çç£æ¹åŒ ã«ã€ãŒã³ ã®ãã€ãã«ãšãèšããäžåã®åèãããžãã¹æžã®ãããã§ãããåçã¯1978幎ã§ãæ¥çãéžã°ã40幎éèªã¿ç¶ããããŠãããITæ¥çã§ã ã¢ãžã£ã€ã« éçºãäžå¿ãšããŠã«ã³ãã³ãªã©ã®åœ¢ã§åãå
¥ããããŠããŸããç«å Žãéžã°ããããžã¡ã³ãã«ãéçºã®çŸå Žã«ãæ¯æãããŠãã1åãšèšããŸãã ããšã¿çç£æ¹åŒââè±èŠæš¡ã®çµå¶ãããã㊠äœè
: 倧é èäž çºå£²æ¥: 1978/05/01 ã¡ãã£ã¢: åè¡æ¬ æç¥šè
ã®ã³ã¡ã³ã äœå幎ãåã«èããããæ¹åŒãããã°ãããä»ã®ãœãããŠã§ã¢éçºã«çããŠãããšããç¹ã¯ææ
šæ·±ãã èªèº«ã®ãœãããŠã§ã¢ éçºããã»ã¹ ãèããªããèªããšããŸã£ããè£œé æ¥ã«éå®ãããªãããšã ãšåãã£ãŠé©ãã RAKUS Developers ãéžã¶ãªã¹ã¹ã¡ã®5å æ¬¡ã«ãæããããããã®åº§ã¯éããŸããããå€ãã®ç¥šãéãããã¹ã5ãæç¥šè
ã®ã³ã¡ã³ããšåãããŠç޹ä»ããŸããã©ã®æ¬ããããã®1åã«å£ããªãåèã§ãéçºããŒã å
ã§è©±é¡ã«ãªã£ãŠèŠãåã£ãããèªæžäŒã®é¡æã«ãªã£ããããããšã§ç¥šãéãŸã£ãããã§ãã æè¡æžïŒé人 ããã°ã©ã㌠æ°è£
ç é人ããã°ã©ã㌠è·äººããåå ãžã®é äœè
: Andrew Hunt , David Thomas çºå£²æ¥: 2016/10/20 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ãšã³ãžãã¢ãåºæ¬ãšãã¹ãèãæ¹ãèŠç¹ãããããå«ãŸããŠãããçµéšãçµãŠããèªãã§ãæ°ããªæ°ä»ããããããæå
ã«ãããŠæ°å¹Žããã«èªã¿ããæ¬ã åå¿è
ã®èªåã«ãšã£ãŠã¯ã éã®åŒŸäžž ã¯ç¡ãããšããããšã«æ¹ããŠæ°ä»ããããäžåã§ããã æè¡æžïŒãã¶ã€ã³çµç¹ã®ã€ãããã ãã¶ã€ã³çµç¹ã®ã€ãããã ãã¶ã€ã³æèãé§åãããã€ã³ããŠã¹ããŒã ã®æ§ç¯&éçšã¬ã€ã äœè
: ããŒã¿ãŒã»ã¡ã«ãã«ã , ã¯ãªã¹ãã£ã³ã»ã¹ãã㌠çºå£²æ¥: 2017/12/22 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ UIããŒãã®ãã¶ã€ã³ããªãµãŒããUXèšèšãªã©åºç¯å²ã«æž¡ã£ãŠãããã¶ã€ããŒã®ä»äºã1人ã§ããªãã®ã¯çŸå®çã§ã¯ãªãããŠãŒã¶ãŒã®å©çšãšããžãã¹äžã®èŠæ±ãå
ããããã®ãã¶ã€ã³çµç¹ãã©ã®ããã«ããŠçµã¿ç«ãŠãŠããã®ãè¯ããã瀺åã«å¯ãã å
å®¹ã æè¡æžïŒSCRUM BOOT CAMP THE BOOK SCRUM BOOT CAMP THE BOOK äœè
: 西æ çŽäºº , æ°žç¬ çŸç© , å矜 éŸå€ªé çºå£²æ¥: 2013/02/13 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ã¹ã¯ã©ã ãšã¯äœãã»ã©ããã£ãæµãã§é²ãã§ããã®ããæŒ«ç»ã亀ããŠåããããã説æãããŠããŸãã ã¹ã¯ã©ã ããã£ãããšãç¡ã人åãã« ã¹ã¯ã©ã ãã©ããããã®ãã説æãã解説æžã®äžã§æããããããããããã§ããŠéèŠãªèŠçŽ ããã£ãã説æãããŠããã ããžãã¹æžïŒãæ®æ¥ããªãããŒã ããšãæ®æ¥ã ããããŒã ãã®ç¿æ
£ ãæ®æ¥ããªãããŒã ããšãæ®æ¥ã ããããŒã ãã®ç¿æ
£ (Asuka business & language book) äœè
: ç³å· åç· çºå£²æ¥: 2017/10/10 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ãæ®æ¥ããªãããŒã ããšãæ®æ¥ã ããããŒã ããæ¯èŒããªããæ§ã
ãªã±ãŒã¹ãäŸã«æžããŠããèªã¿ãããã§ãã ããã«å®è·µåºæ¥ãããšãå€ãã®ã§èªãã§ããã«è©ŠããŸãã ããžãã¹æžïŒå
¥ç€Ÿ1幎ç®ã®æç§æž å
¥ç€Ÿ1幎ç®ã®æç§æž äœè
: å²©ç¬ å€§èŒ çºå£²æ¥: 2011/05/20 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ é
å±ãããŠéããªãé ã¯çžè«ã質åã®ä»æ¹ã§æžæãå Žé¢ãããã®ã§åèã«ãªããŸããã 瀟äŒäººã®å¿æ§ãã«ã€ããŠå€§äºãªãã€ã³ããäžå¯§ã«è§£èª¬ãããŠããŸãã RAKUS Developers ã®ã²ãšãã²ãšããå³éžãã1å ãããŸã§ç޹ä»ããæžç±ä»¥å€ã«ããã®äººã®ç«å Žãä»äºå
容ã«ãã£ãŠãããããã®æžç±ã¯ãŸã ãŸã ãããããããŸããã¢ã³ã±ãŒãã§ã¯åèšã§100åè¿ãã®æžç±ãæç¥šãããŸãããããã§ããã£ãããªã®ã§æç¥šè
ã²ãšãã²ãšãã®æšããç¹ã«åŒ·ãã£ã1åããéžãã 人ã®ç«å Žãä»äºå
容ããšã«åé¡ããŠããã¯ã¢ããããŠã¿ãŸããã è¥æãšã³ãžãã¢ãéžãã 6å ååºã®ããªãŒããã«ã³ãŒããããå
¥ç€Ÿ1幎ç®ã®æç§æžããè¥æã®ç¥šãå€ãéãŸã£ãæžç±ã§ããããä»ã«ãããããã®åèãéžã°ããŸããããããã瀟äŒäººã«ãªã人ã«ããªã¹ã¹ã¡ã§ãããã§ãã 7ã€ã®ç¿æ
£ 7ã€ã®ç¿æ
£-æåã«ã¯ååããã£ã! äœè
: ã¹ãã£ãŒãã³ã»R. ã³ãŽã£ãŒ çºå£²æ¥: 1996/12/25 ã¡ãã£ã¢: åè¡æ¬ é©åãªå
çã§èªèº«ã®æé·ããããããŒãæç¢ºãã€èª¬åŸåãã圢ã§èšèŒãããŠãããæè¡ã«ããããèªèº«ã® ãã£ãªã¢ãã¹ ãªãæ¥ã
ã®è¡åã®ãã³ããšãªã 99%ã®äººãããŠããªããã£ã1%ã®ä»äºã®ã³ã 99%ã®äººãããŠããªããã£ã1%ã®ä»äºã®ã³ã (ãã£ã1%ã®ã³ãã·ãªãŒãº) äœè
: æ²³é è±å€ªé çºå£²æ¥: 2012/03/12 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ä»äºã«åãçµãããã®å§¿å¢ããšãã¹ãæ
床ãèšèŒãããŠããŸã ã¬ãã¬ããž ã»ãªãŒãã£ã³ã° ã¬ãã¬ããžã»ãªãŒãã£ã³ã° äœè
: æ¬ç° çŽä¹ çºå£²æ¥: 2013/05/02 ã¡ãã£ã¢: Kindle ç å¿ãã瀟äŒäººã§ãå€ãã®æ¬ãèªãã¹ããªã®ã§ããã®ããŠããŠã玹ä»ããŠããæ¬æžã¯ãšãŠãæçšã§ãã ãšã³ãžãã¢ã説æäžæã«ããæ¬ ãšã³ãžãã¢ã説æäžæã«ããæ¬ çžæã«å¿ããæè¡æ
å ±ãç¥èã®äŒãæ¹ äœè
: éç±³ çæµ© çºå£²æ¥: 2016/12/02 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ 顧客/ãªãã¬ãŒã¿ãŒ/çµå¶è
/æ°äºº...åæç¥èãããããç°ãªã人ã«ããŸã説æããã«ã¯ã©ãããã°ããããããããããæ²èŒãããŠããŸã ããªã³ã·ãã« ãªã ããã°ã©ãã³ã° ããªã³ã·ãã« ãªã ããã°ã©ãã³ã° 3幎ç®ãŸã§ã«èº«ã«ã€ããã äžç圹ç«ã€101ã®åçåå äœè
: äžç°å² çºå£²æ¥: 2017/04/27 ã¡ãã£ã¢: Kindle ç ãé人 ããã°ã©ã㌠ãã ããã°ã©ã ãç¥ãã¹ã97ã®ããšãçã®åèã®ãšãã»ã³ã¹ïŒïŒããªã³ã·ãã«ïŒãåçž®ãããŠããŸãã çŸå Žã§äœ¿ãã ãããã° & ãã©ãã«ã·ã¥ãŒã Java ç·š çŸå Žã§äœ¿ãããããã° & ãã©ãã«ã·ã¥ãŒã Javaç·š äœè
: å°å äžé , èå ç¯ , äœè€ èèŠ , ç³å£ äž , 飯山 æå² çºå£²æ¥: 2010/02/27 ã¡ãã£ã¢: 倧忬 å®è·µçãªãã©ãã«ã·ã¥ãŒãå¯Ÿå¿æ¹æ³ïŒ Java ã®ã¿ïŒãæžããŠããæ¬ãåå¿è
åãã« Java ãªãœãŒã¹ã®ä»çµã¿ãªã©ãåŠã¹ãã çç·Žãšã³ãžãã¢ãéžãã 4å çµéšãç©ãã ãšã³ãžãã¢ããã¯ãããã«çéãç®æãããŒãã®æžç±ãéžã°ããŠããŸããçµéšãšé åã¯éžã³ãŸããåŽã«çœ®ããŠé·ã掻çšã§ããããªæžç±ã°ããã§ãã Java èšèªã§åŠã¶ ãã¶ã€ã³ãã¿ãŒã³ å
¥é å¢è£æ¹èšçJavaèšèªã§åŠã¶ãã¶ã€ã³ãã¿ãŒã³å
¥é äœè
: çµå 浩 çºå£²æ¥: 2004/06/19 ã¡ãã£ã¢: 倧忬 èšãããšãããåèã§ Java ã§ä»äºããããªãèªãã§ããããæ¬ã ã«ã³ãã³ä»äºè¡ ã«ã³ãã³ä»äºè¡ äœè
: Marcus Hammarberg , Joakim Sundén çºå£²æ¥: 2016/03/26 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ã«ã³ãã³ã®ããæ¹ãããçè§£ããããšãã§ããã æ
ç± ããã°ã©ã㌠æ
ç±ããã°ã©ã㌠ãœãããŠã§ã¢éçºè
ã®å¹žããªçãæ¹ äœè
: Chad Fowler çºå£²æ¥: 2010/02/26 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ããã°ã©ã㌠ã«ãšã£ãŠå€§åãªããšãè©°ãŸã£ãŠããŠãèªããšååãã«ãªããã宿çã«èªã¿è¿ãããã" 40æ³ãéããããåãæ¹ãå€ããªãã 40æ³ãéããããåãæ¹ãå€ããªãã äœè
: äœã
æš åžžå€« çºå£²æ¥: 2017/05/24 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ è²ã
ãšçç¥ããŸããããšããè¥æã«ä»»ããŸããããšãã¯å
±æã§ããŸããã ã¹ãã·ã£ ãªã¹ããéžãã 4å 瀟å
ã§ãç¹ã«æè¡å¿åã®åŒ·ãã®ãšã³ãžãã¢ãéžãã æžç±ãéããŠã¿ãŸãããéžãã æ¬ã®ã¿ã€ãã«ããããã®å¿åãå£éèŠããæ°ãããŸãããããŠäœãããæç¥šè
ã®ã³ã¡ã³ããã¿ããªã¢ããããŠèšäºãç·šéããã»ããå§åãããŠããŸããŸããã å
¥é ã³ã³ãã¥ãŒã¿ç§åŠ ITãæ¯ããæè¡ãšçè«ã®åºç€ç¥è å
¥é ã³ã³ãã¥ãŒã¿ç§åŠ ITãæ¯ããæè¡ãšçè«ã®åºç€ç¥è äœè
: J.Glenn Brookshear çºå£²æ¥: 2017/03/15 ã¡ãã£ã¢: åè¡æ¬ ã³ã³ãã¥ãŒã¿ãµã€ãšã³ã¹ ã®æç§æžãåŠçæä»£ã«æ
å ±åŠéšã§ã¯ãªãã£ã人ã¯ããŸãäœç³»çã«åŠã¶æ©äŒããªãã®ã§èªãã§ãããæ¹ããããšãããèªãŸãªããšã©ããã§ITãšã³ãžãã¢ãšããŠé æã¡ã«ãªãã ã¢ãŒããã¯ã㣠ãèãããšãã ãã©ãã«ã·ã¥ãŒãã£ã³ã° ãããšããããè¯ãèšèšã ãœãŒã¹ã³ãŒã ã倿ãããšããªã©ãããããå Žé¢ã®åºç€ãšãªãç¥èãå«ãŸããã UNIX ãšããèãæ¹ UNIXãšããèãæ¹âãã®èšèšææ³ãšå²åŠ äœè
: Mike Gancarz çºå£²æ¥: 2001/02/01 ã¡ãã£ã¢: åè¡æ¬ è¯ãèšèšãèãããã£ããã«ãªã£ãæ¬ãæ§ã
ãªããã°ã©ãã³ã°ååãã ã©ã¯ ãã£ã¹ã¯ããã«åž°çããã ã©ã®ããã°ã©ãã³ã°ããŠããŒæ¬ãèªãã¹ããè¿·ã£ãããŸãã¯ãã®ïŒåãèªãããšãããããããã ãã¹ãé§åéçº ãã¹ãé§åéçº äœè
: Kent Beck çºå£²æ¥: 2017/10/14 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ åç䞻矩 ç㪠ãã¹ããã¡ãŒã¹ã ããããã©ããã¯å¥ãšããŠãèªåãã¹ããæžãããšã§åŸããã å¿çç ãªå®å¿æããé«é㪠ãã£ãŒãããã¯ã«ãŒã ãåããã®ãäœã£ãŠãã ãªãã¡ã¯ã¿ãªã³ã° ããšããTDDã®è¯ããæããŠã»ããã æ¬æžååã®å€åœé貚ãå®éã«åçµããããšã§ãã¿ã¹ã¯ã现ããïŒå·æãªãŸã§ã«çްããïŒåå²ããèªåãã¹ãã«æ¯ããªãã1ã€ãã€ãã£ã€ããŠããæ°æã¡ããããã²å³ãã£ãŠã»ããã ããã Haskell ãã®ããåŠãŒã! ãããHaskellãã®ããåŠãŒã! äœè
: Miran LipovaÄa çºå£²æ¥: 2012/05/23 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ Haskell èšèªã®å
¥éçèªã¿ç©ãšããŠä»£è¡šçãªæ¬ã§ãã å®éã«ã¢ããªãäœãããšãããŸã§ã¯ãããŸãããããã¡ã³ã¯ã¿ãŒã ã¢ãã ãšãã£ã Haskell ã§äžå¿çãªæŠå¿µãèªã¿ããã説æããŠãããŠããŸãã èªãã§ãããšäœãšãªãèªåã Haskell ã§äœãäœããããªæ°ãããŠããŸãã ãã¶ã€ããŒãéžãã 4å ãã¶ã€ããŒããã®ãªã¹ã¹ã¡ããã®ä»äºã«æ²¿ã£ãç¹åŸŽçãªæžç±ãéžã°ããŸãããWebç³»ãšã³ãžãã¢ãšããŠãæããŠããããæ¬ã䞊ãã§ããŸãã ãŠãŒã¹ã±ãŒã¹ é§åéçºå®è·µã¬ã€ã ãŠãŒã¹ã±ãŒã¹é§åéçºå®è·µã¬ã€ã äœè
: ãã°ã»ããŒãŒã³ããŒã° , ãããã»ã¹ããã¡ã³ çºå£²æ¥: 2016/01/28 ã¡ãã£ã¢: Kindle ç èŠæ±ãã ãã¡ã€ã³ ã¢ãã«ãš ãŠãŒã¹ã±ãŒã¹ ãäœãããœããã®ããæ¹ãæ®µéçã«æããã«ããŠãã ICONIX ããã»ã¹ã«ã€ããŠã®æ¬ã å®è·µãæ³å®ããå
·äœçãªå
容ã§ããããããŸããããã§ãªãããããããšå€±æããããããæžãããŠããã®ã§å¿åŒ·ãã ãšã³ãžãã¢ã®ããã®å³è§£æè ãšã³ãžãã¢ã®ããã®å³è§£æè åå
¥éè¬åº§ äœè
: éç±³çæµ© çºå£²æ¥: 2013/08/09 ã¡ãã£ã¢: Kindle ç èªåã®é ã®äžã®æŽçã®æ¹æ³ãèããããªã©å³ç€ºãããã¯ããã¯ãèŒã£ãŠããã®ã§ãæ¥åã§å®è·µããããã SOSã®ç¿ SOSã®ç¿ (äžå
¬æåº«) äœè
: äŒå 幞倪é çºå£²æ¥: 2012/11/22 ã¡ãã£ã¢: æåº« ãèªç€Ÿéçºããæ ªã®çºæ³šã·ã¹ãã ã誀åäœããŠ300ååã®æå€±ãåºããåå ã調ã¹ãã...ãããæãã§ãã ãããå®ã¯é¡§å®¢ãããUIã®ããã«ããããã§ãããUIãã¶ã€ãã®å人ãªã©ã¯èº«ã«æã¿ããšç³ããŠãããŸããã åé¡è§£æ±ºã©ã åé¡è§£æ±ºã©ãââããã£ãããããªããããã¡ã«ãããã²ããããã®æè¡ äœè
: äœè€ ãªãªã çºå£²æ¥: 2015/02/27 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ åºãé ãæãããããæ¬ ãããŒãžã£ãŒãéžãã 5å æåŸã«ãããŒãžã£ãŒããããªã¹ã¹ã¡ã®æžç±ãéžãã§ããããŸãããçµç¹ã®æ¹åæ§ã瀺ããŠãšã³ãžãã¢ãæããèŠç¹ã§éžã°ããŠããã®ãããããŸãããããããããžã¡ã³ããåŠãŒããšããŠãããšã³ãžãã¢ãèªã¿ããæžç±ã®æ°ã
ã§ãã ã±ã³ã»ãã©ã³ãã£ãŒã ãªãŒããŒã·ããè« ã±ã³ã»ãã©ã³ãã£ãŒã ãªãŒããŒã·ããè«[å®å
šç] äœè
: ã±ã³ã»ãã©ã³ãã£ãŒã , ã±ã³ã»ãã©ã³ãã£ãŒãã»ã«ã³ãã㌠çºå£²æ¥: 2012/12/07 ã¡ãã£ã¢: åè¡æ¬ ãªãŒããŒã管çè·çãããžã¡ã³ããæ
ãã¡ã³ãã¯èªãã§ããã¹ãåºæ¬æžã ãµãŒãã³ãåãªãŒãã·ãããéèŠã§ããã 1åéãããžã£ãŒâäœã瀺ããã©ãè€ããã©ãå±ãã! 1åéãããžã£ãŒâäœã瀺ããã©ãè€ããã©ãå±ãã! äœè
: K.ãã©ã³ãã£ãŒã , S.ãžã§ã³ãœã³ ã¡ãã£ã¢: åè¡æ¬ 管çè·ãšããŠã¡ã³ããŒãšæ¥ããæã«ïŒåãšããçãæéã§å€§ããªææãåŸãããã«ãèããããããã æ¬èªäœã¯å€ããïŒå鿝ãè¿ããªã©ããã«ãªããã®ããã£ãã ãªããããªãã®ä»äºã¯çµãããªãã®ã ãªããããªãã®ä»äºã¯çµãããªãã®ã äœè
: äžå³¶è¡ çºå£²æ¥: 2016/06/01 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ã¿ã¹ã¯ã®é²ãæ¹ã§ãæ©ã¿ã®æ¹ã段åããæªããŠã¿ã¹ã¯ãäžæãé²ãããªãæ¹ãž æéè¡ãä»äºè¡ã«ã€ããŠããããããæžããŠããŸãããšã³ãžãã¢ã®èæžã§ãããæ¥ã
ã®èªåãã¡ã®ç¶æ³ãšããããã話ãå€ããšæããŸãã Inspired: 顧客ã®å¿ãæãã補åã®åµãæ¹ [asin:B00TCM8TB4:detail] æ£ãã補åãšã¯äœããèãããããããŸãæ£ãã補åãäœãæ¹æ³ã解説ãããŠããã 補åã«ã¯ãšã³ãžãã¢ãªã³ã°ã¯ãã¡ããã®ããšããã®ä»ã«ã ãããã¯ããããžã¡ã³ã ãUX/UIãã¶ã€ã³ããããžã§ã¯ããããžã¡ã³ããã·ã¹ãã éçšããããã¯ã ããŒã±ãã£ã³ã° ãå¿
èŠã§éçºã§é¢ãããç¯å²ã®åºããç¥ãããšãã§ãããšå
±ã« ãã£ãªã¢ãã©ã³ ãèããéã«åèã«ã§ããã Joy, Inc. ãžã§ã€ã»ã€ã³ã¯ 圹è·ãéšçœ²ããªãå
šå¡äž»åœ¹ã®ãããžã¡ã³ã äœè
: ãªãã£ãŒãã»ã·ã§ãªãã³ çºå£²æ¥: 2016/12/20 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ã¢ãžã£ã€ã« ã®çæ³åã®ã€ã¡ãŒãžãæŽãã äžã®äžã«ããã»ã©ãŸã§ã«JOYãçªãè©°ããäŒç€Ÿãããäºã«é©ãããã®äŒç€Ÿãå£ã³ãã ãã§ä»äºãèã蟌ã¿ãããžãã¹ãæ©èœããŠããã®ã¯ãŸãã« win-win ãªé¢ä¿æ§ãçŽ æŽãããã®äžèšã ãããã« æå
ã®ã¢ã³ã±ãŒãçµæããªãããŠã¿ããšç޹ä»ãããæ¬ã¯ãŸã ãŸã ãããããããŸãããããã ãã§ã30åã«ãªã£ãã®ã§ä»åã¯ãããŸã§ã«ããããšæããŸãã30åããããŸãããç¥ããªãã¿ã€ãã«ã¯ç¡ããããã©ããèåãªæžç±ã°ããã ãšæããŸãããŸããæç¥šãã人ã®ä»äºå
容ã«åãããŠåé¡ããŠã¿ããšããããéžã°ããæžç±ã«ç¹åŸŽããã£ãã®ãè峿·±ãçµæã§ãããèªåã®èå³ã®ããåéã®æ¬ã§æªèªã®ãã®ãããã°èªãã§ã¿ãŠã¯ãããã§ããããããããŠæ©äŒãããã°ãŸãæ¥å¹Žã宿œããŠã¿ãŸãã®ã§ã楜ãã¿ã«ã
ã¯ããã« Node.js Express Socket.io ãã£ãããäœã£ãŠã¿ã 1. ã¡ãã»ãŒãžã®éåä¿¡ãšè¡šç€º ã¯ã©ã€ã¢ã³ãåŽã®åŠç ãµãŒãåŽã®åŠç 2. NodeãµãŒãã«ãªã¯ãšã¹ãããããšãã°ã€ã³ç»é¢ãžé·ç§» ã¯ã©ã€ã¢ã³ãåŽã®åŠç ãµãŒãåŽã®åŠç ãããã« åè ã¯ããã« id:d_shr ã§ãã æ
åœããŠããåæã®æ©èœãå®è£
ããäžã§ Node.js , Express , Socket.io ã«ã€ããŠåŠç¿ããæ©äŒããã£ãã®ã§ãŸãšããŠã¿ãããšæããŸãã Socket.ioã®ãµã³ãã«ã³ãŒããåèã«ç°¡åã«ãã£ããã¢ããªã®åºæ¬çãªæ©èœãäœã£ãŠã¿ãŸããã ç°¡åã«Webã¢ããªã±ãŒã·ã§ã³ãäœã£ãŠã¿ãããšããæ¹ãNode.jsãSocket.ioãåŠç¿ãå§ããæ¹ã®åèã«ãªãã°ãšæããŸãã Node.js Node.jsã«ã€ããŠã¯éå»ã®èšäºã§ç޹ä»ãããŠããã®ã§å²æããŸãã Node.jsの勉強会でお手軽にWebアプリを作った話 - RAKUS Developers Blog | ラクス エンジニアブログ 知ってる?nodemailerを使ってメールを送る方法 - RAKUS Developers Blog | ラクス エンジニアブログ Express Expressã¯Node.jsåãã®è»œé㪠ãã¬ãŒã ã¯ãŒã¯ ã§ãã ã¡ãã£ãšããã©ãããå€éšããã®èŠæ±ãšå
éšããžãã¯ã ãããã³ã° ããåºæ¬çãªã«ãŒãã£ã³ã°æ©èœãç°¡åã«ã§ããããexpress-generatorã«ãã£ãŠã¢ããªã±ãŒã·ã§ã³ã®éåãç°¡åã«äœãã䟿å©ãªãã€ã 詳ãã説æãäœ¿ãæ¹ã¯ å
¬åŒãµã€ã ã«æžãããŠããŸãã Socket.io ãµãŒããšã¯ã©ã€ã¢ã³ãéã®éä¿¡ã§éåæãã€åæ¹åã®éä¿¡ãå®çŸããããã® ãããã³ã« ã§ããWebSocketãæè»œã«å©çšã§ããã¢ãžã¥ãŒã«ã§ãã Node.jsã®npmã§æäŸãããŠããŸãã 詳ãã説æãäœ¿ãæ¹ã¯ å
¬åŒãµã€ã ã«æžãããŠããŸãã ãã£ãããäœã£ãŠã¿ã Node.js, Express, Socket.ioãå©çšããŠäœã£ãŠã¿ãŸããã å®è£
ããæ©èœã¯2ç¹ã§ãã 1. ã¡ãã»ãŒãžã®éåä¿¡ãšè¡šç€º 2. ãã°ã€ã³æ©èœ(NodeãµãŒãã«ãªã¯ ãšã¹ ãããããšãã°ã€ã³ç»é¢ãž) 1. ã¡ãã»ãŒãžã®éåä¿¡ãšè¡šç€º ãã£ããã®åºæ¬çãªæ©èœã Socket.ioã® Get started ããšãããããã£ãŠã¿ãŸããã ãã£ããã®ãµã³ãã«ã³ãŒãã§ã¡ãã»ãŒãžã®éåä¿¡ãã©ã®ããã«è¡ãã説æãããŠããŸãã ã¯ã©ã€ã¢ã³ãåŽã®åŠç ã¡ãã»ãŒãžã®è¡šç€ºãå
¥åæ¬ <!-- ã¡ãã»ãŒãžã®è¡šç€º --> < ul id = "messages" ></ ul > <!-- ã¡ãã»ãŒãžå
¥åæ¬ --> < form action = "#" id = "chatForm" > < input id = "m" autocomplete= "off" /> < button > Send </ button > </ form > åä¿¡ããã¡ãã»ãŒãžã衚瀺ããéšåãšéä¿¡ããã¡ãã»ãŒãžã®å
¥åæ¬ã§ãã ã¡ãã»ãŒãžéä¿¡ãåä¿¡ã¡ãã»ãŒãžã®è¡šç€ºããžã㯠<script src= "/socket.io/socket.io.js" ></script> <script src= "https://code.jquery.com/jquery-1.11.1.js" ></script> <script> var socket = io(); var userName = '' ; $( function () { // ã¡ãã»ãŒãžãéä¿¡ãã $( 'form' ).submit( function () { socket.emit( 'chat message' , $( '#m' ).val()); $( '#m' ).val( '' ); return false ; } ); // åä¿¡ããã¡ãã»ãŒãžã衚瀺 socket.on( 'chat message' , function (data) { var chat = data.userName + " : " + data.message; $( '#messages' ).append($( '<li>' ).text(chat)); } ); } ); </script> éä¿¡ãè¡ãããã®åºæ¬çãªæäœã¯ä»¥äžã®2ã€ã§ãã socket.emit('event', data); ã€ãã³ãã®çºç«ãæ¥ç¶ããŠããå
šå¡(éä¿¡è
å«ã)ãždataãéä¿¡ããŸãã socket.on('event', callback); ã€ãã³ãã®æ€ç¥ãéä¿¡ãããdataãåä¿¡ããŸãã ããã§ã¯ãå
¥åãããã¡ãã»ãŒãžã®Submitãã€ãã³ã chat messsage ãšããŠãµãŒããžã¡ãã»ãŒãžãéãããŸãã ã€ãã³ã chat messsage ãæ€ç¥ãããšããµãŒãã§åŠçããéä¿¡ãããŠããã¡ãã»ãŒãžãåãåã衚瀺ããŸãã ãµãŒãåŽã®åŠç ãµãŒãã«ã¢ã¯ã»ã¹ãããšå®è¡ãããéšåã // ã¢ãžã¥ãŒã«ãèªã¿èŸŒã var app = require( 'express' )(); var http = require( 'http' ).Server(app); var io = require( 'socket.io' )(http); // NodeãµãŒãã«ã¢ã¯ã»ã¹ããããšindex.htmlãžé·ç§» app.get( '/' , function (req, res) { res.sendFile(__dirname + '/index.html' ); } ); å¿
èŠãªã¢ãžã¥ãŒã«ã require ã§èªã¿èŸŒã¿ãindex.html(ã¯ã©ã€ã¢ã³ãã®åŠç)ãžé·ç§»ããŸãã ã¡ãã»ãŒãžã®éä¿¡ããžã㯠// ã¡ãã»ãŒãžéä¿¡åŠç socket.on( 'chat message' , function (msg) { io.emit( 'chat message' , msg); } ); ã¯ã©ã€ã¢ã³ãåŽããéä¿¡ãããŠããã¡ãã»ãŒãžããµãŒãã§åãåãåŠçãããšããã§ãã æ¥ç¶ããŠããã¯ã©ã€ã¢ã³ããžã¡ãã»ãŒãžãéä¿¡ããŸãã 以äžããã£ããã®åºæ¬çãªã¡ãã»ãŒãžã®ãããšãã®åŠçã«ãªããŸãã 2. NodeãµãŒãã«ãªã¯ ãšã¹ ãããããšãã°ã€ã³ç»é¢ãžé·ç§» çè§£ãæ·±ããããã«ãããŒã¿ã®ããåããããå°ãè€éã«ããŠã¿ãããšæãã€ãã§å®è£
ããŠã¿ãæ©èœã å®è£
ãããã®ä»¥äžã®ãšããã§ãã ãŠãŒã¶åãå
¥åããŠãã°ã€ã³ ãŠãŒã¶åã衚瀺ããŠã¡ãã»ãŒãžãèå¥ ããŒã¿ã®ããåãã«ãŠãŒã¶ã®æ
å ±ã远å ã¯ã©ã€ã¢ã³ãåŽã®åŠç ãã°ã€ã³ãã©ãŒã <!-- ãã°ã€ã³ãã©ãŒã --> < form id = "loginForm" > < div > < input id = "username" name = "username" type = "text" class = "form-control" placeholder= "ãŠãŒã¶å" autofocus /> < button id = "btnLogin" > ãã°ã€ã³ </ button > </ div > </ form > ãã°ã€ã³åŠç <script src= "/socket.io/socket.io.js" ></script> <script src= "https://code.jquery.com/jquery-1.11.1.js" ></script> <script> var socket = io(); var userName = '' ; $( function () { // ãã°ã€ã³ç»é¢è¡šç€º $( '#loginForm' ).show(); $( '#chatForm' ).hide(); // ãã°ã€ã³åŠç $( '#btnLogin' ).on( 'click' , function (e) { userName = $( '#username' ).val(); if (userName) { // ãã£ããç»é¢è¡šç€º $( '#loginForm' ).hide(); $( '#chatForm' ).show(); // ãŠãŒã¶æ
å ±ããµãŒããžéç¥ãã socket.emit( 'login' , { userID: socket.id, userName: userName } ); } e.preventDefault(); } ); } ); </script> äž»ã«è¿œå ãããã®ã¯ãã°ã€ã³æã®åŠçã§ãã ãã°ã€ã³ãã©ãŒã ãšãã£ãããã©ãŒã ã®åãæ¿ãåŠçãå
¥ãããããŠããŸãã socket.emit() ã§éä¿¡è
ã®socketã®idãšå
¥åããããŠãŒã¶åãéä¿¡ããŸãã ãµãŒãåŽã®åŠç io.on( 'connection' , function (socket) { var loginUsers = [] ; //ãã°ã€ã³ãŠãŒã¶ // ãã°ã€ã³åŠç socket.on( 'login' , function (userInfo) { loginUsers [ userInfo.userID ] = userInfo.userName; } ); // ã¡ãã»ãŒãžéä¿¡åŠç socket.on( 'chat message' , function (msg) { userName = loginUsers [ socket.id ] ; io.emit( 'chat message' , { userName: userName, message: msg } ); } ); } ); ãã°ã€ã³æã®åŠçãšã¡ãã»ãŒãžéä¿¡æã®ããŒã¿ã远å ããŠã¿ãŸããã ãŠãŒã¶ã®æ
å ±ãšããŠãœã±ããIDããŠãŒã¶IDãã¯ã©ã€ã¢ã³ãåŽã§ãã°ã€ã³æã«å
¥åãããå€ããŠãŒã¶åãæã£ãŠããŸãã ã¡ãã»ãŒãžã®éä¿¡æã«ã¯ãéä¿¡ãããŠãŒã¶ãšãã®ã¡ãã»ãŒãžãçŽã¥ããŠãã¯ã©ã€ã¢ã³ãåŽãžéä¿¡ããŸãã ããã§ãã°ã€ã³æ©èœããŠãŒã¶åã«ããèå¥ãå®çŸãããããã£ããã£ãœããªããŸããã ãããã« åŠç¿ããNode.js, Express, Socket.ioã䜿ã£ãŠå®éã«ã¢ãŠããããããŠã¿ãããšããŸãšããŠã¿ãŸããã ç°å¢æ§ç¯ãšå®è£
ããããç°¡åã§ããã«ã§ããŸãã ãã£ããã«ã€ããŠã¯ãããå°ãæ©èœæ¡åŒµãããã³ãŒãèªäœããã¬ã€ã«ããããšæããŸãã åè https://heavy-metal-explorer.com/approach_socket_io/ 今更だけどSocket.ioについてまとめてみる - blog::wnotes.net ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã forms.gle ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ rakus.connpass.com
ã¯ããã« åå ããååŒ·äŒ ææ°æè¡ãŠããçãïŒæ°å¹Žãªã«ãTECH ç¥ã2018ïŒAIã»IoTç·šïŒ Mobile Act OSAKA #3 å匷äŒãéžãã çç±ãšåå ããŠã¿ãŠ æé åœ¢åŒ æèŠªäŒ çæéoré·æé æ
å ±ã®ãã£ããã¢ãã ãã®ä» çµããã« ã¯ããã« å
æ¥ãåããŠå匷äŒã«åå ããã®ã§ãã®ããšã«ã€ããŠèšèŒããŸããåããŠã ã£ããããã©ããªå匷äŒã«è¡ãã°ããã®ã(è¡ãããã®ã)ãããããå匷äŒã£ãŠã©ããªãã®ããåãã£ãŠããŸããã§ããããã®èšäºã§ã¯ãè¡ã£ãå匷äŒã®å
容ã«å ããã©ããã£ãåºæºã§éžãã ããå®éã«è¡ã£ãŠã¿ãŠã©ã®ããã«æããããã©ã®ããã«æ
å ±ããã£ããã¢ãããããã«ã€ããŠã玹ä»ããŸãã åå ããååŒ·äŒ ç§ãåå ãã2ã€ã®å匷äŒãšããã®æŠèŠã«ã€ããŠèšèŒããŸãã ææ°æè¡ãŠããçãïŒæ°å¹Žãªã«ãTECH ç¥ã2018ïŒAIã»IoTç·šïŒ åéïŒAIãIoTãDeep Learnig éå¬ïŒæ ªåŒäŒç€Ÿ ããœã ãã㯠çºè¡šæéïŒ25ã50å ç»å£è
ã®çºè¡šãèãèŽè¬å ã¹ã±ãžã¥ãŒã«ïŒ 12:50ã13:00ïŒéäŒæšæ¶ 13:00ã17:50ïŒçºè¡š 17:50ã18:00ïŒéäŒæšæ¶ AIãDeep Learnigã®æ¥åå©çšã«é¢ããã話ãå€ãã§ãããããçšåºŠAIã Deep Learning ã®ç¥èã¯ããåæã§ãã©ã®ããã«æ¥åé©çšãããŠãããã«ã€ããŠã®çºè¡šãå€ãã£ãå°è±¡ã§ã Mobile Act OSAKA #3 åéïŒ iOS ãã¢ã³ããã€ãéçº éå¬ïŒ ãã§ã³ãªã« æ ªåŒäŒç€Ÿ çºè¡šæéïŒ5åã®LT & 5åã®è³ªçå¿ç ç»å£è
ã®çºè¡šãèãèŽè¬å ã¹ã±ãžã¥ãŒã«ïŒ 18:45ã18:50ïŒéäŒæšæ¶ 18:50ã20:00ïŒçºè¡š 20:10ã21:20ïŒæèŠªäŒ çºè¡šã®ããŒãã¯æ§ã
ã ã£ãå°è±¡ã§ãããŸããäŒæ¥ã®æ¹ã ãã§ãªããåŠçãããç»å£ãããŠãããèªç±ãª(ããæå³ã§ç·©ã)é°å²æ°ã§ãã ãã¡ããããçšåºŠãåæç¥èã¯ããããšãåæã§çºè¡šãããŠãã人ãå€ãã£ãå°è±¡ã§ã å匷äŒãéžãã çç±ãšåå ããŠã¿ãŠ åå ãã2ã€ã®å匷äŒããéžãã åºæºãããåå åã«èããŠããããšãããå®éåå ããŠæããããšãããã®çç±ãèšèŒããŸãããã¡ãããå匷äŒã®å
容(ç§ã®å Žåã iOS ãã¢ã³ããã€ããšãã£ãã¢ãã€ã«éçºãAIãDeepLearningã®æ¥åå©çš)ã«èå³ãããèããŠã¿ããã£ãããšã倧åæãšããŠãããŸãã æé åå å æéãå®ãæ¹ããã çµæçã«ã©ã¡ããç¡æã®å匷äŒã«åå ããŸãã å匷äŒãæ¢ããŠãããã¡ã«ããŸãæ°ã«ããªããªããŸãã(èŠãŠããå匷äŒã®æ®ã©ãç¡æãå°é¡ã ã£ããããããããŸããã) åå åŸ ç¡æã§ãªããŠãããããªãšæè¿ã¯èããŠããŸã ããŒããæ¥çšã§çµããšãããŸã§æ°ãããããã§ã¯ãªãããã§ã èªåã®ç³§ã«ãªãã®ã§ãæã£ãŠããããšæããããã«ãªã£ãããã§ã åœ¢åŒ åå å èŽè¬åœ¢åŒããã ããã«ãœã³ ããã³ãºãªã³ãªã©æãåããã¿ã€ãã¯åæç¥èãå¿
èŠããã ã£ãããæ·å±
ãé«ãã£ãããã§ã åå åŸ æ¬¡ã¯ãã³ãºãªã³ã«ææŠããã èŽè¬åœ¢åŒã¯åæç¥èããªããšèããŠãåãããªãããšãå€ãå°è±¡ã§ããäºåã«èª¿ã¹ãããäžåºŠè¡ã£ãŠéèŠãããªåèªã¯èª¿ã¹ãŠæ¬¡ã«æããšãããããšæããŸã ãã³ãºãªã³ã§ã¯åæç¥èããªã人ãããçšåºŠå®è£
ã§ããããã«ãªãããšãç®çã«ãªã£ãŠããå°è±¡ã§ããèŽè¬åœ¢åŒãè¯ãã£ãã§ããããã®æ¥äžã«ãxxxãã§ããããã«ãªã£ãããšããç¶æ
ã«ãªãã®ã¯éææãããããã§ã æèŠªäŒ åå å åãããªãã£ããããããå匷äŒãšãªãå匷äŒã«åå åå åŸ æèŠªäŒã¯ãã£ãæ¹ããããšæãã çºè¡šå
容ãå°éçã§åãããªããŠããäžé話ããå
¥ãèªåã®èå³ã®ããåéãèããŸã åãããªãå
容ã¯ãã®å Žã§è³ªåããããšæè»ã«åããŸã(調ã¹ãŠåããããšã¯åŸã§èª¿ã¹ãæ¹ãããã§ãããã) æè¡çãªé¢ã®ã¿ã ãã§ãªããä»ç€Ÿã®æŽ»åãªã©ã®æ
å ±ãåŸãããããšãè¯ãã£ãã§ã çæéoré·æé åå å åãããªãã£ãããã以äžã®äž¡æ¹ã«åå ããŠã¿ãŸãã äŒç€Ÿçµããã«çæé äŒæ¥ã«1æ¥ã¬ãã㪠åå åŸ äŒæ¥ã®æ¹ãåã£ãŠãããšæãã äŒç€Ÿçµããã«çæéïŒ äŒç€Ÿçµããã®ç²ããç¶æ
ã§ã¯ãéäžåãé«ãç¶æ
ã§èããªãã£ãçºè¡šããããŸãã æ
å ±ã®ãã£ããã¢ãããäž»ç®çãªãçãæéã§è²ã
ãªæ
å ±ãåŸãããããé©ããŠãããã§ããç¹ã«Mobile Actã®å Žåã¯æèŠªäŒããã£ãã®ã§ãèå³ããå
容ãçŽæ¥èãäºãã§ããç¹ãè¯ãã£ããšæããŸã äŒæ¥ã«ã¬ãããªïŒ ç²ããŠããªãç¶æ
ã§åå ã§ãããããéäžã§ããç¹ãããã£ãã§ã LTã§ã¯äŒããããªããããªæ·±ã(詳现ãª)å
容ãŸã§èããããã«æããŸã æ
å ±ã®ãã£ããã¢ãã åå åã«äžçªæ©ãã ãšèšã£ãŠãéèšã§ãªãã®ããæ
å ±ã®ãã£ããã¢ããã§ãããç§ã®æ
å ±ã®ãã£ããã¢ããã®æ¹æ³ãšç»é²ããŠãããµã€ãã«ã€ããŠèšèŒããŸãã æ
å ±ã®ãã£ããã¢ããã¯åºæ¬çã« twitter ITå匷äŒ@è¿ç¿ããã©ããŒããŠæ
å ±ããã£ããã¢ããããŠããŸã ïŒæ¥ã«å€§äœ20ãã€ãŒãçšåºŠå匷äŒã®æ
å ±ãçºä¿¡ããŠãããŠããããã§ã å人çã«ã¯ãå€ãããŠè¿œããªããšããããšããªããæ
å ±ãå°ãªããšããããšããªãè¯ãæãã®éãªã®ã§æ
å ±ã®ãã£ããã¢ããã«å©çšããŠããŸã äœã®ãµã€ãã«ç»é²ããã°ããã®ïŒ äœãã«ç»é²ããªããšãããªããšããå°è±¡ã¯ãªãã§ã å匷äŒåå ã«ç»é²ãå¿
èŠã§ãã£ãããç»é²ããŠããç¶æ
ã§ã ä»ã®ãšãã connpass ãš Doorkeeper ã«ç»é²ããŠããŸã twitter ã§ãã£ããã¢ããããŠãå¿
èŠã§ããã°ç»é²ãã§ãããšæããŸã ãã®ä» ååºãæã£ãŠè¡ããŸããã åä»ã§èº«å蚌æã®ä»£ããã«æž¡ããšããããããŸã å匷äŒã®è³æã¯ã¢ãããããããšãããã®ã§ããã®å Žåã¯åŸã§èŠè¿ãããšãå¯èœã§ã ç§ãä»ååå ãã2ã€ã®å匷äŒã¯è³æãã¢ãããããŠãããã®ããããŸããã®ã§ãèå³ããã人ã¯èŠãŠã¿ãŠãã ãã çµããã« åå ãã2ã€ã®å匷äŒãšãæ°äººã®èŠç¹ããè¡ãåã«æ±ããŠããæžå¿µäºé
ãšå®éã«è¡ã£ãŠã¿ãŠæããããšã«ã€ããŠè¿°ã¹ãŸããããŸã 2ä»¶ããåå ã§ããŠããŸãããã(äŸãåãããªãå
容ãå€ããšã)å匷äŒã¯è¡ã£ãŠãããŠæã¯ãªããªãšæããŠããŸããæ¬¡ã¯ãã³ãºãªã³ã«ãåå ããŠã¿ãããšæããŸãã
ã¯ããã« ããã«ã¡ã¯ãrs_tukkiã§ããæè¿ãæ§ã
ãªå匷äŒã«è¡ãããšãå€ããªããŸããã å€§åŠæä»£ã¯è¬çŸ©ã ãèããŠããã°ããããŒã®ç²Ÿç¥ã§ãèªåããæè¡ãåŠã¶ãšãã£ãããšã¯ããŠããªãã£ãã®ã§ããã 瀟äŒäººãç¹ã«ãšã³ãžãã¢ãšããªããšã æ§ã
ãªæè¡ãžã®ã¢ã³ããã匵ã ããšãæå€ãšéèŠã«ãªã£ãŠãããããŸãã ã§ãããã¯äœãç¹å®ã®æè¡ã«çµãå¿
èŠã¯ãªããŠã æ°ããèšèªã®ããš ã§ããä»è©±é¡ã® ã¹ããŒãã¹ããŒã«ãŒ ã®ããš ã§ãã ãªãã ã£ãã ããŒãã£ã«YouTuber ã®ããš ã§ã倧äžå€«ã§ãã *1 ãã®æè¡ãç¥ã£ãŠãããšããããšãããã€ãäŒç€Ÿå
ã§ã倧ããªã¢ããã³ããŒãžã«ãªããããããŸããã ããŠãä»åã¯ãããªå匷äŒã®äžããå
æ¥åå ãããŠããã ãã ユメノソラホールディングス株式会社 æ§äž»å¬ã®Node.jså匷äŒã§ããæè»œã«Webã¢ããªã±ãŒã·ã§ã³ãäœã£ãã話ãããããšæããŸãã yumenosora.connpass.com 倧äžå€«ã§ããèš±å¯ã¯é ããŸããã ã¯ããã« Node.jsãšã¯ïŒ ç¹åŸŽ ãµãŒããµã€ãã§åäœã§ããJavaScript ã·ã³ã°ã«ã¹ã¬ãã ãã³ããããã³ã°I/O ã¡ãªãã ããã³ã/ãµãŒãã©ã¡ããäžè²«ããŠJavaScriptã§æžãã ã©ã€ãã©ãªãè±å¯ å°ããªåŠçãçŽ æ©ãè¡ãã®ãåŸæ ãã¡ãªãã åæåŠçãèŠæ éãåŠçããããšå
šäœã®ããã©ãŒãã³ã¹ãäœäžãã Webã¢ããªã±ãŒã·ã§ã³ãäœã£ãŠã¿ã ç°å¢æ§ç¯ Node.js Atom npm EJS ã³ãŒããæžããŠã¿ã practice2.js practice2.ejs å®è¡ïŒ ãããã« ããŸã åè Node.jsãšã¯ïŒ ãŸãäœæãããã®ã®ç޹ä»ãããåã«ãNode.jsãšããèšèªã®è©±ãããããšæããŸãã Node.jsãšããã®ã¯äžèšã§ããã°ã ãµãŒããµã€ãã§åäœã§ãã JavaScript ç°å¢ ã®ããšã§ãã ç¹åŸŽ ãµãŒããµã€ãã§åäœã§ãã JavaScript ããŠããããŸã§ã®äžè¡ã§æ¢ã«ããïŒããæµ®ããã§ãã人ãããã®ã§ã¯ãªãã§ããããã JavaScript ãšããèšèªã¯æ¬æ¥ãããŒãžã«åããäžããããšãã¡ã€ã³ãšããèšèªã§ããWebããŒãžã«å¯ŸããŠã æèšã衚瀺ãããŠã¿ãã æåãã«ãŒããããŠã¿ãã çã®åäœãããã¡ãã¡ãµãŒããšéä¿¡ããªããŠãå¯èœã«ããŸããã€ãŸããã¯ã©ã€ã¢ã³ãåŽã§åŠçãè¡ãããšãã»ãšãã©ãªã®ã§ãã ã§ããããããŸã§ãããŸã§ã®ä»äºã¯ãã¡ã€ã³ãã§ããNode.jsãå©çšããã°ããµãŒãåŽã§è¡ã£ãŠãããã«ããã«ãã JavaScript ã§èšè¿°ã㊠Node.jsãã¯ã©ã€ã¢ã³ãããµãŒãããã ãããå
šéšç§ã«ããŸããã£ïŒã ãªç¶æ
ã«ã§ããã®ã§ããå
šãŠã®åŠçãã»ãŒNode.jsäžã€ã§ãããããªããšé Œãããã ã·ã³ã°ã«ã¹ã¬ãã ã·ã³ã°ã«ã¹ã¬ãããšã¯ã Node.jsãåæã«äžã€ã®ããšããã§ããªããã ãããããã ãªä»çµã¿ã®ããšã§ãã Apache ãªã©ã®ãŠã§ããµãŒãã§ã¯ããã«ãã¹ã¬ãã(=åæã«ããããããããš)ã«ãã£ãŠæ²¢å±±ã®åŠçãããŠããŸãããããããã«åæã«å€§éã®ã¢ã¯ã»ã¹ããããšãåæã«ããããšãå¢ããã㊠ãªãœãŒã¹ããªããªã£ãŠããŸãããšããããšãèµ·ãããŸãããã®èšçç¹ãã ããã10,000件以äžã®åææ¥ç¶ã«ããããšããããC10K(ã¯ã©ã€ã¢ã³ã1äžå°)åé¡ããš åŒã°ããŠããŸããããNode.jsã¯ããã解決ããããšãã§ããã®ã§ãã ãã³ ããããã³ã° I/O ããŠãNode.jsãã·ã³ã°ã«ã¹ã¬ããã§ããããšã¯èª¬æããŸããããããããNode.jsã¯äžåºŠã«ã§ããåŠçãå°ãªãã®ïŒããšãããšããã§ããããŸããã ããã§äœ¿ãããã®ããã³ ããããã³ã° I/Oãšããä»çµã¿ã§ããããã¯èšã£ãŠããŸãã° Node.jsããã£ã¡ã®å
¥åãçµæåºãã®ã«æéãããããã ããåŸ
ã£ãŠãŠãã代ããã«ãã£ã¡ã®åŠçå
ã«ãã£ã¡ãããã ãšããä»çµã¿ã®ããšã§ãã æ®éã®ã·ã³ã°ã«ã¹ã¬ããã®å Žåã¯ãã©ããªã«åŠçãé
ããããåºåãåºãŠããªãããããã²ãšã€ã®åŠçãçµãããªããã°æ¬¡ã®åŠçã«å
¥ããŸããã§ããã ãã®ãåŸ
ã¡æéãã倿°ã®åŠçãã§ããªãåå ãªã®ã§ããããã³ ããããã³ã° I/Oã ãšåŸ
ã¡æéã®éã«æ¬¡ã«æ¥ãåŠçããã£ãŠããã®ã§ã äžåºŠã«ããããã®ããšããã£(ãŠããããã«èŠããã)ããããªããããã€åŠçã®ããã®ã¡ã¢ãªã¯å°ãªããŠæžãã®ã§ãã ã¡ãªãã ããã³ã/ãµãŒãã©ã¡ããäžè²«ã㊠JavaScript ã§æžãã å
çšã説æããŸãããããããNode.jsã®æå€§ã®é
åã ãšæããŸãã ç°¡åãªWebã¢ããªã±ãŒã·ã§ã³ãããŒã«ã«ã§åããã ããªãWebãµãŒãããäžèŠã§ãå
šéšNode.jsããã£ãŠãããŸãã ã©ã€ãã©ãªãè±å¯ Node.jsãæ¬åœã«ã©ã€ãã©ãªãå€ãã§ããé©åœã«ãããããæ€çŽ¢ããŠã¿ãã ãã§ãåºãŠããåºãŠããããã£ãŠã¿ããããšã¯ã ãããã§ããããããªããã£ãŠãããã®å¢ãã§ãã *2 qiita.com http://cabbalog.blogspot.jp/2017/12/npm-package-25.html cabbalog.blogspot.jp npm ã£ãŠãªãããïŒã£ãŠãªãããšæããŸããã ããã¯Node.jsã®ã©ã€ãã©ãªãããã±ãŒãžãªã©ã管çããŠãããããŒã«ã®ããšã§ãNode.jsã®ã€ã³ã¹ããŒã«ã«ãã£ã€ããŠããŸãã詳ããã¯ã®ã¡ã»ã©ã å°ããªåŠçãçŽ æ©ãè¡ãã®ãåŸæ Node.jsã¯ç·ããŠãå°ããªåŠçãæ¬¡ããæ¬¡ãžãšçŽ æ©ãè¡ãã®ã«é©ããŠããŸãã ãã£ããã¢ããªãªã©ãçºèšãèªã¿èŸŒãã§åºåããããšãã£ãåŠçãªãå€§åŸæãšèšã£ãŠããã§ãããã ãã¡ãªãã åæåŠçãèŠæ ã§ããªã...ãšã¯èšããªãã®ã§ãããNode.jsããšããã Javascript èªäœãåºæ¬çã«éåæåŠçã§åããŠããã®ã§ã åæåŠçãå®çŸããããšãããšçµæ§å€§å€ã ã£ããããŸãããã®ãããã¯ä»æ¹ãªãã®ããã éãåŠçããããšå
šäœã®ããã©ãŒãã³ã¹ãäœäžãã ããã»ã©èª¬æããããã«ãNode.jsã¯ãã³ ããããã³ã° I/Oãªã©ã®ä»çµã¿ã«ãã£ãŠå°ãªãã¡ã¢ãªã§å°ããªåŠçã æ°å€ãããªãããšãã§ããã®ã§ããããã®åŠçèªäœã倧ãããšãæ°ãããªãã©ããã®è©±ã§ã¯ãªããªã£ãŠããŸããŸãã ãã®ããããªãã¹ãéãåŠçãé¢ããã¢ããªã«ã¯äœ¿ããªãã»ããç¡é£ã§ãããã Webã¢ããªã±ãŒã·ã§ã³ãäœã£ãŠã¿ã ããŠãããã§ã¯æ©éãNode.jsã䜿ã£ãŠç°¡åãªWebã¢ããªã±ãŒã·ã§ã³ãäœæããŠã¿ãããšæããŸãã ä»åã®å匷äŒã§äœæããã®ã¯ããä»(2018幎2æ)çŸåšæŸéããŠããã¢ãã¡ã®äžèЧã衚瀺ãããã¢ããªã±ãŒã·ã§ã³ã§ãã ç°å¢æ§ç¯ Node.js ãŸã㯠Node.jsã®ã€ã³ã¹ããŒã« ããã ä»åã®å匷äŒã§ã¯ãv8.9.4ãå©çšããŸããã äžè¬ã«Node.jsã¯ããå¶æ°verãé·æãµããŒãåã奿°verãææ°æ©èœåããããã§ããæšå¥šã¯åè
ãªã®ã§ãã¡ããã€ã³ã¹ããŒã«ã ã€ã³ã¹ããŒã© ã®èµ·ååŸã¯ç»é¢ã®æç€ºã«åŸãã ãã§ããã€ã³ã¹ããŒã«ãã ã³ã³ããŒãã³ã ã®éžæãªã©ããããŸããåºæ¬ã¯ããã©ã«ãã§OKã ã€ã³ã¹ããŒã«ãæåããŠããã°ã ã³ãã³ãããã³ãã (orã¿ãŒããã«)ãéããŠã node -v ãšæã£ãŠå®è¡ãããšãã«ã v8.9.4 ãšåºãŠããã¯ãã§ãã Atom ç¶ããŠãšãã£ã¿ãŒã§ãããç¹ã«æå®ã¯ãããŸããã ä»åã¯äœ¿ãããããã Atom ãã€ã³ã¹ããŒã«ããŸãããã Eclipse ãªã©ã® IDE ã䜿ã人ããããšãã npm ããŠãNode.jsãã€ã³ã¹ããŒã«ããéã«ãããäžã€ããŸãã§ã€ã³ã¹ããŒã«ãããŠãããã®ããããŸãã ãããå
ã»ã©èª¬æããnpmãNode.jsã®ã©ã€ãã©ãªãããã±ãŒãžãªããã管çããŠãããããããã€ã§ãã ã²ãšãŸãã¯åæååŠçããã npmãã€ã³ã¹ããŒã«ãããã®ã管çãããpackage. json ãšãããã¡ã€ã«ãäœæããŸãã ã€ã³ã¹ããŒã«çšã®ãã©ã«ããäœæããŠããã®äžã§ npm init ãå®è¡ããŠãã ããããããšã Press ^C at any time to quit. package name: (test) //ããã±ãŒãžå version: (1.0.0) //ããŒãžã§ã³å description: //æŠèŠèª¬æ entry point: (index.js) //åæè¡šç€ºããããã¡ã€ã«å test command: //ãã¹ãã³ãã³ã git repository: //Githubã«ä¿åãããªããžããªæ
å ± keywords: //npmã®å
¬éæã«äœ¿çšãããããŒã¯ãŒã author: //äœè
æ
å ± license: (ISC) //npmã®å
¬éæã«é©çšããæš©å©æ
å ± ãšãŸããããå
¥åãæ±ããããŸãããšã¯ãããããã±ãŒãžã®å
¬éãããªãã®ãªããã®èŸºãã¯å
šéšç¡èŠã§ãOKã§ãã ãããå®äºãããšãåæåãè¡ã£ããã©ã«ãå
ã«ããã©ã«ããšãã¡ã€ã«ã1ã€ã¥ã€äœæãããŠããŸãã package. json ã«ã¯ã€ã³ã¹ããŒã«ããŠãã£ããã®ã®æ
å ±ãèç©ãããŠãããŸãããããŠããã®å®äœã¯node_moduleãã©ã«ãã«æ ŒçŽãããŠãããŸãã ä»åŸãpackage. json ããããã®ãã©ã«ãå
ã§è²ã
ã€ã³ã¹ããŒã«ããŠããããšã«ãªããŸãã EJS ã§ã¯æ©éãnpmã§ã²ãšã€ã€ã³ã¹ããŒã«ããŠã¿ãŸãããã ä»åã¯ãNode.jsã䜿ã£ããµã€ãã®ã³ãŒãã£ã³ã°ãã jsp ã®ãããªæãã«ã§ããEJSãšãããã³ãã¬ãŒããšã³ãžã³ãã€ã³ã¹ããŒã«ããŸãã ãã³ãã¬ãŒããšã³ãžã³ãä»ã«è²ã
ãããŸãã®ã§ããããã°æ¢ããŠã¿ãŠãã ããã ããŠãå
ã»ã©ã®package. json ããããã©ã«ãã§ npm install ejs ãšæã¡èŸŒã¿ãŸããpackage. json ã®èšå®ãç¡èŠããã®ã§äœããèŠåã¯åºãŸã *3 ããå€§äœæ°ç§ã§ã€ã³ã¹ããŒã«ã¯å®äºããŸãã ããã§ããä»åã®ã³ãŒããæžãæºåãå®äºããŸããã ãããç°å¢èšå®ãæ©ãã ã³ãŒããæžããŠã¿ã ã§ã¯ãããããã£ãšããã³ãŒããæžãäœæ¥ã«ç§»ããŸãã å匷äŒã§ã¯äœåãã«åããŠé çªã«ã³ãŒããæžããã®ã§ãã...ãã£ãããªã®ã§ã宿çãèŠãŠè§£èª¬ããŠãããŸãããã ãŸãã¯èãšãªãjsãã¡ã€ã«ããã practice2.js //ã¢ãžã¥ãŒã«ãæ¡åŒµæ©èœãšããŠèªã¿èŸŒã var http = require( 'http' ); var fs = require( 'fs' ); var ejs = require( 'ejs' ); var url = 'http://api.moemoe.tokyo/anime/v1/master/2018/1?ogp=1' ; //ååŸããjsonãã¡ã€ã« var hostname = '127.0.0.1' ; var port = 3000; var server = http.createServer(); //httpã®ãµãŒããäœæããããŒããšãã颿° server.on( 'request' , function (req, res) { //httpãªã¯ãšã¹ãããã£ã(=ã¢ã¯ã»ã¹ããã)æã«åŒã°ãã http.get(url, function (apiRes) { //æå®ããURLãååŸåºæ¥ããåŒã°ãã var body = '' ; apiRes.setEncoding( 'utf8' ); apiRes.on( 'data' , function (chunk) { //ããŒã¿ãåä¿¡ããããåŒã°ãã body += chunk; } ); apiRes.on( 'end' , function () { //ããŒã¿ã®åä¿¡ãçµãã£ããåŒã°ãã var data = {} ; data.animes = JSON.parse(body); var template = fs.readFileSync( './practice2.ejs' , 'utf-8' ); var page = ejs.render(template, data); res.writeHead(200, { 'Content-Type' : 'text/html; charset=UTF-8' } ); res.write(page); res.end(); } ); } ); } ); server.listen(port, hostname, function () { //ãµãŒãèµ·åæã«åŒã°ãã console.log(`Server runnning at http: //${hostname}:${port}/`); } ); è²ã
ãšé¢æ°ããããŸãããã ããã㯠~ãããšãã«åŒã°ãã ãšãã圢ã«ãªã£ãŠããŸããããã¯ã€ãã³ãã«ãŒããšããä»çµã¿ã䜿ãããŠããããã§ãå¹³ããèšãã° Node.jsããšããããåŸ
ã£ãŠããããæ¥ããã®ããå
ã«ãããããïŒã ãšããåŠçã§ããä»åã®å Žåã¯ãæåã«åŒã°ããã®ã¯äžçªäžã®server.listenã«ãªãã§ãããã ...ç§ã®è§£èª¬ã¯äžããè¡ããŸãã //ã¢ãžã¥ãŒã«ãæ¡åŒµæ©èœãšããŠèªã¿èŸŒã var http = require( 'http' ); var fs = require( 'fs' ); var ejs = require( 'ejs' ); var url = 'http://api.moemoe.tokyo/anime/v1/master/2018/1?ogp=1' ; //ååŸããjsonãã¡ã€ã« var hostname = '127.0.0.1' ; var port = 3000; var server = http.createServer(); //httpã®ãµãŒããäœæããããŒããšãã颿° ãŸãã¯å¿
èŠãªå€æ°ã®æå®ã§ãã requier ãšããã®ã¯ãNode.jsã®ã¢ãžã¥ãŒã«ã æ¡åŒµæ©èœ ãšããŠèªã¿èŸŒãåŠçã§ããå
ã»ã©ã€ã³ã¹ããŒã«ããejsã®å§¿ãã httpã¯æåéãHTTPã®åçš®æ©èœããŸãšãããã®ã§ãfsã¯ãã¡ã€ã«æäœé¢é£ã®æ©èœãå
¥ã£ãŠããŸãã url ã«ã¯ã衚瀺ãããã¢ãã¡æ
å ±ãæžãããããã¹ããã¡ã€ã« *4 ãå
¥ã£ãŠããŸãããã®ããŒã¿ãååŸããŠejsã§è¡šç€ºãããã®ãä»åã®ç®æšã hostname ãš port ã¯æåéãã§ãããã¢ã¯ã»ã¹ã«å¿
èŠã§ãã 127.0.0.1 ãšããã®ã¯ããã° localhost ã®ããšã§ãã ãããŠserverããã®åŠçã ãã§httpãµãŒãã¯äœæã§ããŸããç°¡åããã... ãã®åŒæ°ã«ãäœææã®åŠçãæžãã®ãäžè¬çãããã§ãããä»åã¯åããã«ããã®ã§ãã®åŠçã¯åŸã§ã server.on( 'request' , function (req, res) { //httpãªã¯ãšã¹ãããã£ã(=ã¢ã¯ã»ã¹ããã)æã«åŒã°ãã http.get(url, function (apiRes) { //æå®ããURLãååŸåºæ¥ããåŒã°ãã var body = '' ; apiRes.setEncoding( 'utf8' ); ãµãŒãã¯ãã£ãšåŸ
æ©ç¶æ
ã§ãæå®ãããããŒãã«ã¢ã¯ã»ã¹ããã£ãå Žåã«ãåŸ
ã£ãŠãŸããïŒããšèšã£ãŠserver.on以éã®åŠçãå§ããŸãã http.getã¯ãåŒæ°ã«æå®ãããurlã®äžèº«ãååŸããããšããŸããæåãããšæ¬¡ãžã ä»åååŸãããã¡ã€ã«ã®äžèº«ã¯ããã¹ããã¡ã€ã«ãªã®ã§ããŸãã¯æ ŒçŽçšã®å€æ°ã®çšæãšã æåã³ãŒã ã®ã»ãããè¡ããŸãããã apiRes.on( 'data' , function (chunk) { //ããŒã¿ãåä¿¡ããããåŒã°ãã body += chunk; } ); apiRes.on( 'end' , function () { //ããŒã¿ã®åä¿¡ãçµãã£ããåŒã°ãã var data = {} ; data.animes = JSON.parse(body); var template = fs.readFileSync( './practice2.ejs' , 'utf-8' ); var page = ejs.render(template, data); res.writeHead(200, { 'Content-Type' : 'text/html; charset=UTF-8' } ); res.write(page); res.end(); } ); } ); } ); ã§ã¯ããããããã¡ã€ã«ã®äžèº«ãååŸããŠãããŸãã ãåä¿¡ããã~ããšãåä¿¡ãçµãã£ãã~ãã«åãããŠããã®ã¯ãããŒã¿ãããŸãã«ãå€ããããš Node.js㯠ååŸã®å®äºãåŸ
ããã«æ¬¡ã®åŠçãå§ããããšãã§ãã ããã§ãã ãã¡ãã¡å
šéšååŸããŠãããããããããŒã¿ãååŸãããã³ã«bodyã®äžã«æ¬¡ããæ¬¡ãžãšè¿œå ããŠãã£ãã»ããåŠçãæ©ãã®ã§ãã ã§ãç¡äºåä¿¡ãå®äºããããååŸããããã¹ããã¡ã€ã«ã¯ json 圢åŒã«å€ããããŠãdataã«æ ŒçŽãããŸãã ããŠã次ã«è¡ãåŠçã§ãããããã§ã¯è¡šç€ºããããŒãžã®èšå®ãè¡ã£ãŠããŸãã ejsãã¡ã€ã«ãèªã¿èŸŒã¿ãejs.renderã§å
ã»ã©ååŸããããŒã¿ãejsããŒãžã«éä¿¡ããŠããŸãã res.writeHeadã§HTTPããããèšè¿°ããres.writeã§ããŒãžãæå®ããŠããã°ããŒãžã衚瀺ã§ããŸãã æåŸã«ãres.endã§èªã¿èŸŒã¿ãå®äºãããŠããã°çµäºã§ãã server.listen(port, hostname, function () { //ãµãŒãèµ·åæã«åŒã°ãã console.log(`Server runnning at http: //${hostname}:${port}/`); } ); ãããŠããããæ¬æ¥æåã«è¡ãããåŠçã§ãããµãŒãèµ·åæã«ã©ã®ãããªåäœããããããèšè¿°ããŸãã ä»åã¯ã³ã³ãœãŒã«åºåãããŠãããŸãããã ã§ã¯ãç¶ããŠè¡šç€ºåŽã practice2.ejs < html > < head > < title > ejs_sample </ title > < style type = "text/css" > .div_block { width : 300px ; display : inline-block ; vertical-align : top ; margin : 5px ; border : 1px solid #555 ; } .div_header { background-color : #CCC ; padding : 10px ; height : 26px ; font-size : 12px ; } img { object-fit: cover ; width : 300px ; height : 160px ; display : block ; } .nodata { width : 300px ; height : 160px ; background-color : #EEE ; } p { padding : 5px ; font-size : 10px ; display : block ; height : 60px ; } </ style > </ head > < body > <%# ããã㌠%> < h1 > 仿ã®ã¢ãã¡ </ h1 > <%# ã¢ãã¡æ°åã«ãŒã %> <% for (anime of animes) { %> < div class = "div_block" > < div class = "div_header" > < a href = "<%= anime.public_url %>" ><%= anime.title %></ a > </ div > <% if (!!anime.ogp.og_image) { %> < img src = "<%= anime.ogp.og_image %>" /> <% } else { %> < div class = "nodata" > no data </ div > <% } %> < p > <% if (!!anime.ogp.og_description) { %> <%= anime.ogp.og_description %> <% } else { %> no data <% } %> </ p > </ div > <% } %> </ body > </ html > jsp ã©ã€ã¯ã«èšè¿°ãã§ããã®ã§ãhtmlã«èŠãããã©foræãifæãå
¥ã£ãŠããããŸãã ã§ã¯äžããã < html > < head > < title > ejs_sample </ title > < style type = "text/css" > .div_block { width : 300px ; display : inline-block ; vertical-align : top ; margin : 5px ; border : 1px solid #555 ; } .div_header { background-color : #CCC ; padding : 10px ; height : 26px ; font-size : 12px ; } img { object-fit: cover ; width : 300px ; height : 160px ; display : block ; } .nodata { width : 300px ; height : 160px ; background-color : #EEE ; } p { padding : 5px ; font-size : 10px ; display : block ; height : 60px ; } </ style > </ head > ãã®éšåã¯äžžã
css ãèšè¿°ãããŠããŸãã詳ããã¯èŠãŸããããã¢ãã¡æ
å ±ãäžã€ã¥ã€äžŠã¹ãããã®styleãèšå®ããŠããŸãã <%# ããã㌠%> < h1 > 仿ã®ã¢ãã¡ </ h1 > <%# ã¢ãã¡æ°åã«ãŒã %> <% for (anime of animes) { %> < div class = "div_block" > < div class = "div_header" > < a href = "<%= anime.public_url %>" ><%= anime.title %></ a > </ div > foræãåºãŠããŸãããã²ãšãŸããEJSç¬èªã®æ§æã«ã€ããŠèª¬æããŸãã <%# %> ã¯ã³ã¡ã³ãæ±ãã§ããåºåçµæã«ã¯åœ±é¿ããŸããã <% %> ã¯ãå
éšããã®ãŸãŸ javascript æ§æã«ãªããŸããforæãifæã䜿ãããå Žæã«ä»èŸŒãã°ãç°¡åã«ã«ãŒããåå²ãå®çŸã§ããŸãã <%= %> ã¯ã javascript å
ã®å€æ°ã®åºåã§ããä»å㯠json ã®äžèº«ãæå®ããŠåºåããŠããŸãã <% if (!!anime.ogp.og_image) { %> < img src = "<%= anime.ogp.og_image %>" /> <% } else { %> < div class = "nodata" > no data </ div > <% } %> < p > <% if (!!anime.ogp.og_description) { %> <%= anime.ogp.og_description %> <% } else { %> no data <% } %> </ p > </ div > <% } %> </ body > </ html > ä»åºŠã¯ifæã§ããååŸãã json ãã¡ã€ã«ã«ã¯ãç»åã説æã®äžèº«ããªããã®ãããã®ã§ã ãããã£ãç®æã«ã¯ãšããããno dataãšæžããŠãããŸãããã ...ããforæãifæã®éãã¿ã°ã<% %>ã§å²ãã®ãå¿ããã«ã å®è¡ïŒ ã¯ããããã§ã²ãšãŸã宿ã§ãïŒãããïŒããããïŒ ãšããããã§ããšããããå®è¡ããŠã¿ãŸãã ã³ãã³ãããã³ãã (or ã¿ãŒããã«) ãéããŠã node practice2.js ...ããã ããäžæãèµ·åã§ããã°ã Server running at http://127.0.0.1:3000 ãšåºãŠããŸãã®ã§ãæ©éãã®ã¢ãã¬ã¹ã«ã¢ã¯ã»ã¹ããŠã¿ãŸãããã ãã£ããç»åä»ãã§ãã¢ãã¡ã®äžèЧã衚瀺ãããŸããïŒ(æµç³ã«ããã«è¡šç€ºããããã«ã¯ãããªãã®ã§é ããŠãŸãã...) ãããã« Node.jsããµãŒããµã€ãã§ãã£ããåäœããŠãã®ã確èªããã ããã§ããããã ä»åã¯ç°¡åãªã¢ããªã®äœæã®ã¿ã§ããããå®éã¯ãã£ãšãã£ãšè²ã
ãªããšãåºæ¥ããããŸãã èšèªãè²ã
èŠããªããŠããµãŒããµã€ããŸã§åŠçã§ããã®ã§ãåå¿è
åãã§ã¯ãªãã§ããããããã²ãšãã¿ããªã§ãã£ãŠã¿ãŸãããïŒ ãããããšã å匷äŒã楜ããããã¿ããªåå ãããïŒ ããŸã 就掻ãããããå§ãŸããŸãããïŒ ç§ãšããŠã¯ããã®ææã ããããåå説æäŒã«åå ãã¹ãã ãšèããŠããŸãã èªåã®åãããè·çš®ã決ãŸã£ãŠããã°ããããå
šéšèŠãŠåããšæ¯èŒãã§ããŸãããããã§ãªããŠã æ°ã«ãªã£ãäŒç€Ÿã®è©±ãèŽããŠã¿ããšã就掻ã®ã€ã¡ãŒãžãã€ããããšæããŸãïŒ ãã²ãšã就掻ãé 匵ã£ãŠãã ããïŒãããŠãçžããããŸãããã ã©ã¯ ã¹ã§ãåŸ
ã¡ããŠããŸãïŒ fresh-recruit.rakus.co.jp åè 初心者向け!3分で理解するNode.jsとは何か? 初期化処理を行う!npm initの使い方【初心者向け】 | TechAcademyマガジン require()とは何か?何が便利なのか - Qiita Node.jsでHTTP GETしてJSONパースするメモ - Qiita テンプレートエンジンEJSで使える便利な構文まとめ - Qiita ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã 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 : ãã®èŸºããç§ãå®éã«åå ãã/åå ãäºå®ããŠããå匷äŒã®å®äŸã§ã *2 : ãã®æ°ã2017幎11æçŸåšã§475,000ä»¶ïŒ *3 : descriptionããªããšããrepositoryããªããšããã£ãæãã§ããpackage. json èªäœããªããŠãèŠåãåºãŸã *4 : ã®ã¡ã»ã© json ã«å€æããããã json 圢åŒã§æžãããŠããŸãã
2018幎2æ23æ¥ã«ãŽã¡ã«ç ç©¶ææ§(以äžããŽã¡ã«ç æ§ïŒã«äŒç€Ÿèšªåããéã®èšªåèšã§ãã ã¢ãžã£ã€ã« ãæ¹åã®å°å
¥ã«åãå
¥ããŠããäŒç€Ÿæ§ã§ããã®ãããã®èª¬æãããŠããã ããŸããã å
¥å£ ãã¢ãããã£ãŠãã峿ã«é»è»ã®ã²ãŒã ããããŸãã 仿ããšãã®æç¹ã§éã³å¿æºèŒãªãŽã¡ã«ç æ§ã ãªããšæããŸããã å
¥å£å³ã®ããã«å¥¥ã«è¡ããšããããŸã§äŒç€Ÿèšªåãããæ¹ã®ææ³ãæžããä»ç®ãå£äžé¢ã«ãããã貌ã£ãŠãã£ãŠå§åãããŸããããã§ããŽã¡ã«ç æ§ã®äŒç€Ÿèšªåæ
åœã®æ¹ãšåæµããŠèŠåŠã¹ã¿ãŒãããŸããã 4éã«ããé»å
æ²ç€ºæ¿ã§ã¯ãä»åã®èŠåŠã®æè¿ãããŠããã ããŸããïŒ ä»¥éãåéšçœ²æ§ããšã®èšªåææ³ãšãªããŸãã ç·åéšæ§ æåã¯ç·åéšæ§ã«ãéªéããŸããã ã¢ãžã£ã€ã« ã ã¹ã¯ã©ã ãšãããš ã·ã¹ãã éçº ã®ææ³ãšããã€ã¡ãŒãžããã£ãã®ã§ãããç·åã®ãä»äºã§ ã¹ã¯ã©ã ãæ¡çšããŠããããšã«é©ããŸããã ãã¡ãã§ã¯1é±é1ã¹ããªã³ãã® ã¹ã¯ã©ã ãæ¡çšããŠã㊠äžé±éã§ããããšããã¯ã€ãããŒãäžã§ä»ç®ã«è²Œã£ãŠ èŠããå äžé±éã§åèªãã©ããããã®ã¹ããŒãªãŒãã€ã³ããæ¶åã§ãããïŒã¹ããªã³ãäžã«ã©ããããå²ã蟌ã¿ã¿ã¹ã¯ããã£ãããè¡šã§æŽçã ãªãªãŒ ã¹ãã¬ã€ã³ ã§äžé·æçãªã¹ã±ãžã¥ãŒã«ã èŠããå ã¡ã³ããŒã®åºç€Ÿæãšé瀟æã®ã³ã³ãã£ã·ã§ã³ããã³ãã³ã«ã¬ã³ããŒã§ èŠããå çãè¡ã£ãŠããŸããã ç¹ã«è峿·±ããšæã£ãã®ãå²ã蟌ã¿éã¿ã¹ã¯ã® èŠããå ã§ãæ®éã® ã¹ã¯ã©ã ã®èãæ¹ãšã¯éããã¹ããªã³ãæéäžã§ã®èšç»å€æŽããããŠèš±å®¹ããèªåãã¡ã®äœæ¥ã«åãããã«ããæ¹ã工倫ããŠããã®ãè¯ããªãšæããŸããã åçäžéšãããŒã³ããŠã³ãã£ãŒããäžéšã«åã¡ã³ããŒæ¯ã®å²ã蟌ã¿ã¿ã¹ã¯éãæ°å€ã§è¡šãããŠããŸãã ã³ã³ãã³ãéšéæ§ é§
ãã±ããš åãã®é»è»ããã¹ã®éè¡ããŒã¿ãäœæããŠããã³ã³ãã³ãéšéæ§ã«ããéªéããŸããã ãã¡ãã¯ãããã¹ã®æå»è¡šããŒã¿ãXæXæ¥ãŸã§ã«äœæãããšãã£ãããšããããŠããã®ã§ã ããã ããã¯ãã° ã«ãªã£ãã«ã³ãã³ã䜿çšãããŠããŸããã åªå
床ã®é«ã ããã¯ãã° ã¢ã€ãã ãã«ã³ãã³ã®äžéšã«æã£ãŠããŠãã©ã®ããŒã¿ãæ©ãã«äœæããªããšãããªããããã«ãããããã«ããããšãã£ã工倫ããããŠããŠè峿·±ãã£ãã§ãã ããã¢ãŒã·ã§ã³æ
åœéšéæ§ Â ãã¡ãã§ã¯ ãã¯ã€ãããŒãäžã«ææžãã®ã«ã¬ã³ããŒããã£ãŠãã€ãã³ããäœæ¥ãããæ¥ã«ä»ç®ã貌ã ã€ãã³ããäœæ¥ãçµãã£ãããå®äºã¹ã¿ã³ããæŒãïŒçµãã£ãŠãªãäœæ¥ãããèŠããïŒ ãã¯ã€ãããŒãäžã«ã¡ã³ããŒã®æ®æ¥æéãæ¯é±èšèŒããŠãæ®æ¥æéã® èŠããå ã ãã¢ã¯ãŒã¯ã«ããäœæ¥å±äººåã®è§£æ¶ çããããŠããŸãããç¬èªã®ã¢ã€ãã£ã¢ã沢山ã®éšçœ²ã§ããã ã«ã¬ã³ããŒã䜿ã£ã èŠããå ã¯åŒç€Ÿã§ããªãªãŒã¹ãŸã§ã®ã€ãã³ãã®å
±æãªã©ã«äœ¿ãããããšæããŸããã ããšãåç£ïŒã« é§
ãã±ããš ã®é
ã£æãã¢ãŒãããã¢ãŒã·ã§ã³ã® ãã£ãã·ã¥ ãããã ããŸããã ãããé
ãé£²ãæ¹ã«ã¯ãããããããªãã§ããã éçºéšæ§ã API Technologyéšæ§ ãŸãšããŠã®ã玹ä»ã«ãªã£ãŠããŸããŸãã å£äžé¢ã®å·šå€§ãªãªãªãŒ ã¹ãã¬ã€ã³ ã§åããŒã ã®ãªãŒããŒå±€ã§ã®æ
å ±å
±æ ã«ã³ãã³ã®doingã®å¹
ãæå³çã«çãããŠãWIPãå¶é ã¡ã³ããŒããšã«å²ã蟌ã¿ã¿ã¹ã¯ãåãä»ããéãã«ãŠã³ãããŠãå²ã蟌ã¿ã¿ã¹ã¯ã®éã èŠããå ãå¶éãã çŽè¿ã®ã¹ããªã³ãã® ããã¯ãã° ã ãã§ã¯ãªãã3ã¹ããªã³ãå
ããããŸã§ã® ããã¯ãã° ãä¹ããã«ã³ãã³ãå¥éçšæããŠãä»åŸã®äœæ¥ããããããã«ããã ãšãã£ãããšããããŠããŸããã ããšãæåãªã¹ãã ãŒç¥ç€ŸãæèŠãããŠããã ããŸããã ãããã£ãéã³å¿ããŽã¡ã«ç æ§ãããã§ããïŒå¥çŽããããé
ã¯ãã€é£²ãã®ã ãããã»ã»ã»ïŒã æåŸãŸã§èšªåããŠã®ææ³ æåŸã«å
šäœãéããŠã®ææ³ã§ãã ã©ã®éšçœ²ãä»ç®ãäžæ¯ã§ èŠããå ãå
šç€Ÿçã«æµžéããŠãããšæããŸããã å
šéšçœ²ã«åãããæ¹ãç¡çã«é©çšãããã®ã§ã¯ãªããããããã®éšçœ²ã®ä»äºå
容ã«ãã£ãããæ¹ãæ¡çšããŠããã®ã浞éããŠããç§èš£ãªã®ããªãšæããŸããã ã©ã®éšçœ²ãéã³å¿ãåãå
¥ããŠããŠã楜ããã§ä»äºãåºæ¥ããã ãªãšæããŸããã ãã³ãã³ã«ã¬ã³ããŒã®ããã«ãæ¥åã«ã¯çŽæ¥ã¯é¢ä¿ããªããã®ã«ã€ããŠã èŠããå ãããŠããã®ãå°è±¡çã§ãããããããããšã«ã³ãã¥ãã±ãŒã·ã§ã³ãä¿ããçµæçã«ããã©ãŒãã³ã¹ã®åäžã«ç¹ããã®ã ãšæããŸããã èŠããå ã®å®æåœ¢ãšãæãããŽã¡ã«ç æ§ã§ãããæ°ããã«ã³ãã³ãå°å
¥ããŠã¿ãããšçŸåšãæ¹åéäžãšã®ããšã§ãæ¥ã
é²åãç¶ããå§¿ãèŠç¿ããããšæããŸããã éšçœ²éãè¶ããŠãã³ãã¥ãã±ãŒã·ã§ã³ããšããã£ããã«ãªãã®ããªãšæããŸãããå幎åŸ
ã¡ã§ãã£ãšäŒç€Ÿèšªåããããã«ã¯èããŠããŸãããããçŸèã¯äžèŠã«ããããã§ããã
ã¯ããã« ããã«ã¡ã¯ãå
¥ç€ŸããŠããããããïŒå¹Žã«ãªãr_yxkxrx13ã§ãã å
¥ç€Ÿããã°ããã®èªåã¯ããŸã ããã°ã©ãã³ã°æªçµéšã§ãåã㊠Eclipse ã䜿çšããŠã³ãŒãã£ã³ã°ããæã¯ã¹ããŒããé
ãã£ãã§ãã ããã§ã Eclipse ã«äœ¿çšãããŠããã·ã§ãŒãã«ããããŒã調ã¹ãªããç©æ¥µçã«äœ¿çšããŠã¿ãŸããããã®çµæãåœåããã¹ããŒããäžããã ããŠã¹ã®æäœãæžã£ãããšã§å¹çãè¯ããªããŸããã Eclipse ã®ã·ã§ãŒãã«ããããŒã䜿ã£ãŠã¿ãŠåãã£ãããšã¯ã Windows ãš Mac ã§ã®ã·ã§ãŒãã«ããããŒãéã£ãŠããŸãã ä»åã¯ãããã°ã©ãã³ã°ã®åå¿è
åãã«ã Windows ãš Mac ã® Eclipse ã§å人çã«ãã䜿çšããŠããã·ã§ãŒãã«ããããŒã玹ä»ããããšæããŸãã ã¯ããã« ã³ãŒãã£ã³ã°é¢é£ã·ã§ãŒãã«ããã㌠ã³ã¡ã³ãã¢ãŠã Javadocã³ã¡ã³ãã®è¿œå æå®è¡ã®åé€ èªåãã©ãŒããã ååãäžæ¬å€æŽãã ãã¹ããªãŒãæ»ãïŒé²ã ãããã°é¢é£ã·ã§ãŒãã«ããã㌠ã¹ãããã€ã³ ã¹ããããªãŒã㌠ã¹ããããªã¿ãŒã³ ãã¬ãŒã¯ãã€ã³ãã®èšå®ã»è§£é€ 次ã®èŠåã»ãšã©ãŒãžãžã£ã³ã æ€çŽ¢é¢é£ã·ã§ãŒãã«ããã㌠æ€çŽ¢ãã€ã¢ãã°ãéã ã¯ãŒã¯ã¹ããŒã¹å
ã®æ€çŽ¢ ã¯ãŒã¯ã¹ããŒã¹å
ã§ããã¹ããæ€çŽ¢ çµããã« åè ã³ãŒãã£ã³ã°é¢é£ã·ã§ãŒãã«ããã㌠ã³ã¡ã³ãã¢ãŠã Windows Mac Ctrl + / command + / ã«ãŒãœã«ãããè¡ã ã³ã¡ã³ãã¢ãŠã ã§ããŸãã ãŸãè€æ°è¡ãéžæããç¶æ
ã§ã·ã§ãŒãã«ããããŒãæŒãããšã§ãéžæè¡ãå
šãŠ ã³ã¡ã³ãã¢ãŠã ã§ããŸãã ã³ã¡ã³ãã¢ãŠã ãåãæ¶ãããæã¯ãããäžåºŠã·ã§ãŒãã«ããããŒãæŒãããšã§åãæ¶ãããšãã§ããŸãã Javadoc ã³ã¡ã³ãã®è¿œå Windows Mac Alt + Shift + j option + command + j ã·ã§ãŒãã«ããããŒãæŒãã ãã§ããã javadoc ã³ã¡ã³ãã远å ã§ããŸãã ãŸãã¡ãœããã«åŒæ°ãæ»ãå€ãäŸå€åŠçãªã©ãããå Žåãããã«åŸã£ãŠ javadoc ã³ã¡ã³ãã远å ã§ããŸãã æå®è¡ã®åé€ Windows Mac Ctrl + d command + d çŸåšã«ãŒãœã«ã®ããè¡ã1è¡åé€ã§ããŸãã ãŸãè€æ°è¡ãéžæããç¶æ
ã§ã·ã§ãŒãã«ããããŒãæŒãããšã§ãéžæè¡ãå
šãŠåé€ããããšãã§ããŸãã èªåãã©ãŒããã Windows Mac Ctrl + Shift + f shift + command + f ã€ã³ãã³ããæ¹è¡ãã¹ããŒã¹ãªã©ã®ãã©ãŒããããèªåçã«æŽããŠãããŸãã ã³ãŒãã£ã³ã°ã§ãã©ãŒããããæŽã£ãŠããªããŠããã·ã§ãŒãã«ããããŒã§æŽããŠããã䟿å©ãªãã®ã§ãã ååãäžæ¬å€æŽãã Windows Mac Alt + Shift + r option + command + r ãœãŒã¹ã³ãŒã å
ã®å€æ°åããŸãã¯ã¡ãœããåã«ã«ãŒãœã«ã眮ããŠãã·ã§ãŒãã«ããããŒãæŒãããšã§ãåã ãœãŒã¹ã³ãŒã å
ã®å€æ°åãã¡ãœããåãäžæ¬ã§å€æŽããããšãã§ããŸãã åŒã°ããŠããç®æãèªåçã«å€æŽããããšãã§ããŸããä¿®æ£æŒã鲿¢ã®1ã€ã§å€§å€äŸ¿å©ãªãã®ã§ãã ãã¹ããªãŒãæ»ãïŒé²ã Windows Mac Alt + â ( or â ) option + command + â ( or â ) Alt + â ã§çŽåãŸã§è¡šç€ºããŠãã ãœãŒã¹ã³ãŒã ãã¡ã€ã«ã«ç§»ããŸããããã« Alt + â ã§å
ã® ãœãŒã¹ã³ãŒã ãã¡ã€ã«ã«æ»ãããšãã§ããŸãã è€æ°ãœãŒã¹ãã¡ã€ã«ã®åãæ¿ããã¹ã ãŒãºã§å€§å€äŸ¿å©ã§ãã ãããã° é¢é£ã·ã§ãŒãã«ããã㌠ã¹ãããã€ã³ Windows Mac F5 F5 ïŒè¡ãã€å®è¡ãããïŒã¡ãœããã®åŒã³åºããŸã§ïŒè¡ãã€ïŒ ã¹ããããªãŒã㌠Windows Mac F6 F6 次ã®ïŒè¡ãå®è¡ãããïŒã¯ã©ã¹å
ã§ïŒè¡ãã€ïŒ ã¹ããããªã¿ãŒã³ Windows Mac F7 F7 ã¡ãœãããæåŸãŸã§å®è¡ããåŒã³åºãå
ãžæ»ãã ãã¬ãŒã¯ãã€ã³ã ã®èšå®ã»è§£é€ Windows Mac Ctrl + Shift + b shift + command + b ãããã° ããããã³ãŒãã ãã¬ãŒã¯ãã€ã³ã ã«èšå®ã»è§£é€ãããããšãã§ããŸãã â» ãã¬ãŒã¯ãã€ã³ã ïŒå®è¡äžã®ããã°ã©ã ãäžæåæ¢ãããç®æ 次ã®èŠåã»ãšã©ãŒãžãžã£ã³ã Windows Mac Ctrl + . command + . èŠåããšã©ãŒã«ãªã£ãŠããã³ãŒããïŒã€ãã€èŠãããšãã§ããŸãã èŠåããšã©ãŒã«ãªã£ãŠããã³ãŒãã« ctrl + 1 ãæŒããšãä¿®æ£ã®ãã³ãã衚瀺ãããŸãã æ€çŽ¢é¢é£ã·ã§ãŒãã«ããã㌠æ€çŽ¢ãã€ã¢ãã°ãéã Windows Mac Ctrl + h control + h ãããžã§ã¯ãã®å
šãã¡ã€ã«ã«å¯ŸããŠã Java æ€çŽ¢ããã¡ã€ã«æ€çŽ¢ãªã©ã®ã¿ããã察象ãã¡ã€ã«ãæ€çŽ¢ããããšãã§ããŸãã ã¯ãŒã¯ã¹ããŒã¹ å
ã®æ€çŽ¢ Windows Mac Ctrl + Shift + G shift + command + G ã¯ãŒã¯ã¹ããŒã¹ å
ã§å€æ°ãã¯ã©ã¹ãªã©ã®ãªãã¡ã¬ã³ã¹æ€çŽ¢ãã§ããŸãã ã¯ãŒã¯ã¹ããŒã¹ å
ã§ããã¹ããæ€çŽ¢ Windows Mac Ctrl + Alt + g option + command + g ã¯ãŒã¯ã¹ããŒã¹ å
ã§ããã¹ããæ€çŽ¢ã§ããŸãã çµãã㫠以äžãå人çã«ãã䜿çšãã Eclipse ã®ã·ã§ãŒãã«ããããŒã玹ä»ããŸããã玹ä»ããã·ã§ãŒãã«ããããŒã®ä»ã«ããããããããŸãã®ã§ãèå³ãããæ¹ã¯ãã€ã³ã¿ãŒããããªã©ã§èª¿ã¹ãŠã¿ãŠãã ããã ããã°ã©ãã³ã°ã®åå¿è
ã¯ããã£ããåºæ¬ãçè§£ããããšã倧äºãªã®ã§ãèªåã®æ©èœã«é Œããããªãããã«æ³šæããŸãããïŒ æåã¯çã ãœãŒã¹ã³ãŒã ããç·Žç¿ããŠãããŸãããããã°ã©ãã³ã°ã®æ¥åã«å
¥ããšãé·ãã ãœãŒã¹ã³ãŒã ãæžãæ©äŒãå¢ããŠæéãããã£ãŠããŸããã·ã§ãŒãã«ããããŒã䜿ãããªãããšã§ãç¡é§ãªæäœãæžããã³ãŒãã£ã³ã°ã®å¹çãè¯ããªããšæããŸãã ã·ã§ãŒãã«ããããŒã䜿ãããªãããæ¹ã¯ãããããã®ã·ã§ãŒãã«ããããŒãäžæ°ã«èŠããã®ã§ã¯ãªããã³ãŒãã£ã³ã°ãããããç·Žç¿ããªããç©æ¥µçã«ã·ã§ãŒãã«ããããŒã䜿çšããŠã¿ãŠãã ããïŒ åè Eclipseのショートカットキー Eclipseショートカットキー Mac & Windows 対応表 - CODESCRIBBLE 便利なEclipseショートカットキーまとめ(Mac) - Qiita eclipseでよく使うショートカット - Qiita ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã 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
ã¯ããã« ããã«ã¡ã¯ïŒFM_Harmonyã§ãã Rakus Developers Blog ã§ã¯äºåç®ã®èšäºæçš¿ã«ãªããŸãã åå㯠JavaScript ã«ã€ããŠèšäºã®æçš¿ããããŠããã ããŸããã tech-blog.rakus.co.jp ä»å㯠Markdown ã«ã€ããŠç޹ä»ããŸãã ç§ãæ¥åé£çµ¡çã§äœ¿ãæ©äŒãå€ãã®ã§ãããããçšåºŠäœ¿ããããã«ãªããŸã§æéãããããŸããã ãªã®ã§ããã®èšäºãä»åŸ Markdown ã«ã€ããŠåŠç¿ããæ¹ã®å©ãã«ãªãã°å¹žãã§ãã ç®æ¬¡ ã¯ããã« ç®æ¬¡ Markdownãšã¯ïŒ æ§é ã«é¢ãã6åã®èšæ³ æ¹è¡ èŠåºã èŠåºãã®äŸ å°èŠåºãã®äŸ åæ è¡šçµã¿ åŒçš ã³ãŒãããã㯠è£
食ã«é¢ãã4åã®èšæ³ åŒ·èª¿ å²ã¿ ææ¶ãç· åã蟌ã¿ãªã³ã¯ ãããã« åèã«ãããµã€ã Markdown ãšã¯ïŒ Markdown ïŒããŒã¯ããŠã³ïŒã¯ã æç« ã®æžãæ¹ ã§ããããžã¿ã«ææžã掻çšããæ¹æ³ãšããŠèæ¡ãããŸãããç¹åŸŽã¯ã æè»œã«æç« æ§é ãæç€ºã§ããããš ç°¡åã§ãèŠããããããš èªã¿æžãã«ç¹å¥ãªã¢ããªãå¿
èŠãšããªãããš ããã§ããŠã察å¿ã¢ããªã䜿ãã°å¿«é©ã«èªã¿æžãã§ããããš ãªã©ã§ãã ïŒæ¥æ¬èª Markdown ãŠãŒã¶ãŒäŒå
¬åŒãµã€ãã Markdownã®æŠèŠ ããåŒçšïŒ èŠããã«ã æç« ãèŠãããæè»œã«æžãããã®èšæ³ ã Markdown ã§ãã èŠåºãã衚çµã¿ãªã©ã®æç« ã®æ§é ãèšå®ãããã倪åãå²ã¿ãªã©æç« ãè£
食ããããšãç°¡åã«ã§ããŸãã ç§ãç¥ã£ãŠãããã®ã ãšã以äžã®ãµãŒãã¹ã§å©çšããããšãã§ããŸãã ãã£ããããŒã«ïŒSlack, Mattermost, ...ïŒ ãããžã§ã¯ã管çãµãŒãã¹ïŒ GitHub , GitLab, ...ïŒ Redmine *1 èšäºæçš¿ãµãŒãã¹ïŒ ã¯ãŠãªããã° , Qiita, ...ïŒ äžã®äžçš®é¡ã¯ãšã³ãžãã¢ãå©çšããããšã®å€ããµãŒãã¹ã§ããã ãããã®ãµãŒãã¹ãå©çšããŠã åæ»ãªã³ãã¥ãã±ãŒã·ã§ã³ãå³ãããã« Markdown ãžã®çè§£ã¯å¿
é ã§ãã ã§ã¯ã Markdown ã®èšæ³ã玹ä»ããŸãã ä»å玹ä»ããã®ã¯æ§é ã«é¢ãã6åã®èšæ³ãšè£
食ã«é¢ãã4åã®èšæ³ãåãããŠ10åã®èšæ³ã§ãã æ§é ã«é¢ãã6åã®èšæ³ æ¹è¡ æç« ãæå³çã«æ¹è¡ããéã¯ãæ¹è¡ãããéšåã« ïŒåè§ã¹ããŒã¹2ã€ïŒãä»ããŠæ¹è¡ããŸãã 䜿çšäŸïŒæç« ããã©ãã°ããŠã¿ãŠãã ããïŒ æ¹è¡ã¯æç« ã®çµããã§è¡ããŸãããã ãããªé¢šã«ãã å®éã®è¡šç€º æ¹è¡ã¯æç« ã®çµããã§è¡ããŸãããã ãããªé¢šã«ãã èŠåºã 段èœã«èŠåºããä»ãããå Žåã¯ã # ïŒã·ã£ãŒãïŒãå©çšããŸããïŒãå€ãã»ã©å°ããªèŠåºãã«ãªããŸãã æç« ãšããŒã¯ã®éã«åè§ã¹ããŒã¹1ååã®ç©ºçœãå¿
èŠãªå Žåãã»ãšãã©ã§ãã ãŸãã ã¯ãŠãªããã° ãQiitaã§ã¯ãèŠåºããã èªåçã«ç®æ¬¡ãäœæããŠãããŸã ã 䜿çšäŸ #### èŠåºãã®äŸ èŠåºãããããšè©±ã®æµããåããæãã§ããã ##### å°èŠåºãã®äŸ å°èŠåºããå
¥ããããã«ã¯#ã®æ°ãå¢ãããŸãã å®éã®è¡šç€º èŠåºãã®äŸ èŠåºãããããšè©±ã®æµããåããæãã§ããã å°èŠåºã ã®äŸ å°èŠåºã ãå
¥ããããã«ã¯#ã®æ°ãå¢ãããŸãã åæ äžã€ãäºã€ãã»ã»ã»ãšããããã«äœããåæãããå Žå㯠* ( ã¢ã¹ã¿ãªã¹ã¯ )ã + ïŒãã©ã¹ïŒã - ïŒãã€ãã¹ïŒã®ã©ããã䜿ããŸãã ã©ãã䜿ã£ãŠã衚瀺ã«å€ããã¯ãããŸããã åæããŒã¯ãèŠåºãããŒã¯ãšåãã§ãæç« ãšããŒã¯ã®éã¯åè§ã¹ããŒã¹1åå空ããŸãã ãŸãã䜿çšäŸã®ããã«åæã®äžã«æç« ãå
¥ããããéå±€çã«åæããããšãå¯èœã§ãã ã¡ãªã¿ã« ã¯ãŠãªããã° ã§ã¯ãæåã®åæããŒã¯ã®äžã« 空çœè¡ãå
¥ããªããšããŒã¯ãšããŠèªèãããªãããšããã ã®ã§æ³šæãå¿
èŠã§ãã 䜿çšäŸ * ããã ããããããïŒ * ã¿ãã * æž©å·ã¿ãã * æåªã¿ãã * ãã å®éã®è¡šç€º ããã ããããããïŒ ã¿ãã æž©å·ã¿ãã æåªã¿ãã ãã 衚çµã¿ 衚çµã¿ãäœãã«ã¯ã | ïŒãã€ãïŒã : ïŒã³ãã³ïŒã - ïŒãã€ãã³ïŒã®äžã€ãå©çšããŸãã 衚ã®åœ¢åŒã¯äžè¡ç®ãååãäºè¡ç®ãåã®æããäžè¡ç®ä»¥éãå€ãšãã颚ã«ãªã£ãŠããŸãã ããããã®æç« ã | ã§å²ã¿ãŸããããã®æåãšåãšã®éã§ | ã éè€ããªã ããã«ããŸãã æ£ |åå|åå| |:-:|:-:| |å€|å€| 誀 |åå||åå| |:-:||:-:| |å€||å€| æç« ã®æãæ¹ã¯ å·Šæã ã äžå€®æã ã 峿ã ããéžã¶ããšãã§ããŸãã ããã©ã«ãã¯å·Šæãã§ãã æãã衚ãããã«ã¯ã : ã - ãå©çšããŸãã : ã®äœçœ®ã§æããæ¹åãæ±ºãããšèŠããã°ãã»ãŒééããããŸããã ãã äžå€®æã㯠- ã®äž¡ç«¯ã« : ã眮ã ã®ã§æ°ãä»ããŠãã ããã ãŸãã äžçªå·Šã® | ã®åã«ã¹ããŒã¹ãå
¥ãããšæ£ããèªèãããªã ããšãããã®ã§ã泚æãå¿
èŠã§ãã 䜿çšäŸ |æããªãå|å·Šæãã®å|äžå€®æãã®å|峿ãã®å| ||:-|:-:|-:| |ãªã³ãŽ|ãŽãªã©|ã©ãã|ãã»ãª| |ãããª|ãµãã«|衚ã|ã§ããŸã| å®éã®è¡šç€º æããªãå å·Šæãã®å äžå€®æãã®å 峿ãã®å ãªã³ãŽ ãŽãªã© ã©ãã ãã»ãª ãã㪠ãµã㫠衚ã ã§ããŸã åŒçš åŒçšã瀺ãå Žåã¯æç« ã®åã« > ïŒå€§ãªãèšå·ïŒã眮ããŸãã ãã£ãããªã©ã§çžæã®çºèšãæç€ºãããå Žåã«å©çšãããšããã§ãããã æ³šæç¹ãšããŠã¯ã åŒçšããŒã¯ã®çŽåŸã«ããè¡ãåŒçšãšèªèããã äºãæããããŸãã åŒçšãçµãã£ãåŸã¯ã空çœè¡ãå
¥ããŠãããšééãããªãã§ãããã 䜿çšäŸ > AãããïŒ BãããïŒ > ãããšãCãããïŒ ãããã¯DãããïŒ AããããïŒ å®éã®è¡šç€º AãããïŒ BãããïŒ ãããšãCãããïŒ ãããã¯DãããïŒ AããããïŒ ã³ãŒãããã㯠` ïŒããã¯ã¯ã©ãŒãïŒäžã€ã§æç« ãå²ã¿ãŸãã å§ãã®ããã¯ã¯ã©ãŒãäžã€ã®ããšã«èšèªå *2 ãæžããšã ã·ã³ã¿ãã¯ã¹ ãã€ã©ã€ããæå¹ã«ãªããŸã ã ã³ãŒããããã¯å
ã§ã¯ã Markdown èšæ³ã䜿ããŸããã 䜿çšäŸ ``` java public class SomeLogic{ public static void someMethod(){ System.out.println("Hello World!"); } }; ``` å®éã®è¡šç€º public class SomeLogic{ public static void someMethod(){ System.out.println( "Hello World!" ); } }; è£
食ã«é¢ãã4åã®èšæ³ åŒ·èª¿ * ïŒ ã¢ã¹ã¿ãªã¹ã¯ ïŒããŸã㯠_ ïŒã¢ã³ããŒããŒïŒã§æç« ãå²ã¿ãŸãã 匷調ããŒã¯äžã€ã§å²ããšã€ã¿ãªãã¯äœãäºã€ã§å²ããšå€ªå *3 ã«ãªãå Žåãå€ãããã§ãã 䜿çšäŸ _Hello World!_ **ããã倧äºã§ãïŒ** å®éã®è¡šç€º Hello World ! ããã倧äºã§ãïŒ å²ã¿ ` ïŒããã¯ã¯ã©ãŒãïŒäžã€ã§æç« ãå²ã¿ãŸãã ãã¡ã€ã«åã瀺ããšããªã©ã«ãã䜿ããŸãã 䜿çšäŸ `C:\Program Files\èšå®ãã¡ã€ã«.xlsx` å®éã®è¡šç€º C:\Program Files\èšå®ãã¡ã€ã«.xlsx ææ¶ãç· ~ ïŒ ãã«ã ïŒäºã€ã§æç« ãå²ã¿ãŸãã ãã£ããã§ãã£ãã誀ã£ãæ
å ±ãæµãããã©ãæžããããšã¯æ¶ããã«åãæ¶ããã *4 ãªããŠæã«äœ¿ããŸãã 䜿çšäŸ äŒè°ã¯~~10æããã§ãã~~ 11æããã§ããã å®éã®è¡šç€º äŒè°ã¯ 10æããã§ãã 11æããã§ããã åã蟌ã¿ãªã³ã¯ [] ïŒãã©ã±ããïŒã () ïŒäžžãã£ãïŒã䜿ããŸãã [] ã§æç« ãå²ã¿ã () ã§URLãå²ãããšã§æç« ã«ãªã³ã¯ãåã蟌ãããšãã§ããŸãã URLãæãŠã°èªåçã«ãªã³ã¯ã匵ãããã®ã§ããããªã³ã¯å
ãåãããããããããšããå Žåã«ã¯ãã¡ãã䜿ããŸãã 䜿çšäŸ http://tech-blog.rakus.co.jp/ ã©ã¯ã¹ã®æè¡è
ããã°ã¯[ã³ã³ïŒ](http://tech-blog.rakus.co.jp/) å®éã®è¡šç€º http://tech-blog.rakus.co.jp/ ã©ã¯ ã¹ã®æè¡è
ããã°ã¯ ã³ã³ïŒ ããã㫠以äžã Markdown ã§æç« ãæžãããã®åºæ¬çãªèšæ³ã«ãªããŸãã Markdown ã®èšæ³ã¯ä»ã«ããããŸãããä»å玹ä»ãããã®ã䜿ããã°æŠãåé¡ãããŸããã ç¹ã« æ¹è¡ãåæã匷調ãå²ã¿ãææ¶ã ã®5ã€ã¯ãã䜿ãã®ã§ããããã䜿ããããã«ãªãã ãã§ãããªãèŠãããæç« ãæžãããšãã§ããŸãã Markdown ãèŠããã³ããšããŠã¯ã ãšã«ããæžããŠè¡šç€ºãèŠã ããšã«å°œããŸãã äŸãã°ãMattermostã§ã¯ ãã¬ãã¥ãŒæ©èœ ã远å ãããŸããããStackEditãªã© Markdown ãæå¹ãª ããã¹ããšãã£ã¿ ã®ãµãŒãã¹ããããŸãã ããããå©çšããŠçè§£ãæ·±ããããšãã Markdown ã«æ
£ããããã®äžçªã®è¿éã ãšç§ã¯æããŸãã ãŸã Markdown ã䜿ã£ãŠããªãæ¹ã¯ããã®æ©äŒã« Markdown ã«ã€ããŠåŠç¿ããããšããã¹ã¹ã¡ããŸãã ãã£ãš Markdown ã身ã«ã€ããåŸã§ã¯ãããªãã®æžãæç« ã ããèŠããããªã£ãŠãã ããšã§ãããã åèã«ãããµã€ã Markdownèšæ³ ããŒãã·ãŒã - Qiita Markdown ã«ã€ããŠåŠç¿ããéã«å©çšãããŠããã ããŸããã StackEdit ãããã« ã§ç޹ä»ããããã©ãŠã¶äžã® ããã¹ããšãã£ã¿ ãµãŒãã¹ã§ãã æç« ã®ãã¬ãã¥ãŒãè¡ãéã«å©çšããŠããŸãã ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã 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 : ãªãã·ã§ã³ãã Markdown ã䜿ããããã«ã§ããŸãã ãã¡ã ãåèã *2 : ãã¡ã€ã«åãæžããŠãããå ŽåããããŸãã *3 : ã¯ãŠãªããã° ã®PCçã§ã¯å€ªåã®ä»£ããã«ãè²ä»ãå²ã¿ã«ãªããŸãã *4 : æç« ãæ¶ããšçºèšã远ããªããªãã®ã§ãæ¶ããã«å
容ã ãç·šéããããšãå€ãããã§ãã
id:radiocat ã§ããæ¯æ Amazon Echo Dotã§ãã¥ãŒã¹ãèŽããŠããŸãã å
æ¥å
¬éããGoogle Assistant察å¿ã¢ã㪠ã«ç¶ã㊠Amazon Echo åãã®Alexa Skillãç³è«ãæ¿èªãããŸããã äœ¿ãæ¹ ãæå
ã®Alexaã¢ããªã®ã¡ãã¥ãŒãã ã¹ãã« ãéã㊠RAKUS Developers Blog ãæ¢ããŠã¿ãŠãã ããã ã¹ãã«ã®ç»é¢ãéã㊠æå¹ã«ãã ãã¿ã³ãæŒããŠãã ããã ãã°ããåŸ
ã€ãšæå¹åãã㊠èšå® ãã¿ã³ã衚瀺ãããã®ã§ãããæŒããŸãã ãã©ãã·ã¥ãã¥ãŒã¹ã®ç®¡ç ç»é¢ãéããŸãã ãã©ãã·ã¥ãã¥ãŒã¹ã®äžèЧã衚瀺ãã ãªã³ ã«ãªã£ãŠããããšã確èªããŸããé çªã奜ããªäœçœ®ã«å€æŽã§ããŸãã ãã®èšå®ã«ãã£ãŠã以äžã®ããã«åŒã³ããããšèšå®ããé çªã«ãã¥ãŒã¹ãèªã¿äžããããŸãã Alexaãææ°ã®ãã¥ãŒã¹ãæµã㊠ããã§ãæã®ãã¥ãŒã¹ãèŽãåã«ããã°ã®æŽæ°æ
å ±ãèŽãããšãã§ããŸãã ã¹ãã«ã®éçº Alexa Skillsã«ã¯4çš®é¡ã®ã¹ãã«ããããŸãããã©ãã·ã¥ãã¥ãŒã¹ã¯ãã®ãã¡ ãã©ãã·ã¥ããªãŒãã£ã³ã°ã¹ãã« ãšããçš®é¡ã®ã¹ãã«ã§ãåºæ¬çã«ã¯ RSSãã£ãŒã ã®æ
å ±ãèªã¿äžããã ãã§ãAlexaãšã®äŒè©±ãæ§ç¯ããããšã¯ã§ããŸããããã®ãã4çš®é¡ã®äžã§ãæãã·ã³ãã«ãªä»çµã¿ã§ç°¡åã«äœæã§ããã¹ãã«ã§ããå³ã®ãããªä»çµã¿ã§ãã£ãŒãã«å«ãŸããæ
å ±ãEchoã§èªã¿äžããããŸãã èšå®ã¯ç°¡åã§ãåºæ¬çã«ã¯ããã°ã® RSSãã£ãŒã ãèšå®ããã ãã§ããããã°ãæŽæ°ããããšAlexaã¯ææ°ã® RSSãã£ãŒã ã®æ
å ±ãèªã¿äžããŠãããŸããäŸãã°ãã®ããã°ã® RSSãã£ãŒã ã¯ä»¥äžã®ããã«ãªã£ãŠããŸãããAlexaãèªã¿äžããã®ã¯ <description> èŠçŽ ã®å
容ã§ãã <item> <title> Google Homeãããã°ã®èšäºã¿ã€ãã«ãèªã¿äžããã¢ããªãäœã£ãŠå
¬éãã話 </title> <link> http://tech-blog.rakus.co.jp/entry/2018/02/05/130449 </link> <description> & lt ; p & gt ;& lt ; a href= & quot ; http://blog.hatena.ne.jp/radiocat/ & quot ;& gt ; id:radiocat & lt ; /a & gt ; ã§ãã & lt ; a class= & quot ; keyword & quot ; href= & quot ; http://d.hatena.ne.jp/keyword/Google%20Home & quot ;& gt ; Google Home & lt ; /a & gt ; Miniãš & lt ; a class= & quot ; keyword & quot ; href= & quot ; http://d.hatena.ne.jp/keyword/Amazon%20Alexa & quot ;& gt ; Amazon Alexa & lt ; /a & gt ; Dotã®äºåæµãã¬ã€ã€ãŒã§ãã & lt ; /p & gt ; ïŒçç¥ïŒ Alexaãèªã¿äžããããã¹ãã®å
容ã¯ä»¥äžã®ãããªæ¡ä»¶ãæºããå¿
èŠããããŸãã åãã£ãŒãã¢ã€ãã ã®æåæ°ã4,500æå以å
ã§ããããšã SSMLãHTMLã XML ã®ã¿ã°ãªã©ã® ç¹æ®æå ãå«ãŸãªãããã¬ãŒã³ããã¹ãã§ããããšã 詳现㯠ããããã ãŒãµã€ãã«è§£èª¬ãããŠããŸãããçŸç¶ã®ããã°èšäºã®ãŸãŸã ãšãã®æ¡ä»¶ãæºããããšãé£ãããšã©ãŒãçºçããŠããŸããŸããã developer.amazon.com äžèš ããããã ãŒãµã€ãã®è§£èª¬ã«ãããš RSSãã£ãŒã 以å€ã« JSON 圢åŒã«ã察å¿ããŠããŸããããã§ã RSSãã£ãŒã ã JSON 圢åŒã«å€æããããšãèããŸããã å
æ¥å
¬éããGoogle Assistant察å¿ã¢ã㪠ãHerokuäžã§ RSSãã£ãŒã ã JSON 圢åŒã«å€æããã®ã§ãä»çµã¿çã«ã¯ãããšåãæ¹åŒã§ãããã®ãããã®Herokuã®ç°å¢ãžæ°ãã«Alexaåãã®ãšã³ããã€ã³ãã远å ããããšã«ããŸããã å
šäœã®æ§æå³ã¯ä»¥äžã®ããã«ãªããŸãã åååæ§FeedParserã䜿ã£ãŠ RSSãã£ãŒã ã®å
容ãååŸãã以äžã®ãããªèŠé ã§ãã©ãã·ã¥ããªãŒãã£ã³ã°ã¹ãã«ã®ä»æ§ã«åãã㊠JSON ãªããžã§ã¯ããçæããŸãã var feedData = [] ; http.get(BLOG_RSS_URL, function (res) { res.pipe( new FeedParser( {} )) // çç¥ .on( 'readable' , function () { var stream = this , item; while (item = stream.read()) { feedData.push( { "uid" : item.guid, "updateDate" : item.pubDate, "titleText" : item.title, "mainText" : item.title, "redirectionUrl" : item.link } ); } .on( 'end' , function () { response.setHeader( "Content-Type" , "application/json" ); response.send(JSON.stringify(feedData)); } ); } ); Alexaãèªã¿äžããã®ã¯ mainText ã®å
容ã§ããäžèšã®äŸã§ã¯èšäºã®ã¿ã€ãã«ãèªã¿äžããŸãããŸããè€æ°ã®å Žåã¯ãªããžã§ã¯ããé
åã«ãããš updateDate ãæ°ããé ã«æå€§5ä»¶ãèªã¿äžããããŸããæ¥ä»ãå€ããã®ã¯ç¡èŠããããšã®ããšã§ã詊ãããšãã1é±é以äžåã®ãã®ã¯èªã¿äžããããŸããã§ããã ãªãã ã©ãžãªãã¥ãŒã¹ã®ããã«ãªãŒãã£ãªãã¡ã€ã«ãåçããããå Žå㯠streamUrl èŠçŽ ã远å ããªãŒãã£ãªãã¡ã€ã«ã®URLãèšå®ããããã§ãã Amazon Echo ã§èŽãããã©ãã·ã¥ãã¥ãŒã¹ã®å
容ã¯Alexaã¢ããªã«ã衚瀺ãããŸãã ãã®ç»é¢ã«è¡šç€ºãããŠããããã°èšäºã®ã¿ã€ãã«ã¯ titleText ã§æå®ãããã®ã§ãã ãã£ãšèªã ã®ãªã³ã¯å
㯠redirectUrl ã®URLã«ãªããŸãã éçºæé ã«ã€ããŠã¯Qiitaã«ããŸãšããŸããã®ã§åç
§ãã ããã qiita.com ã¹ãã«ã®ç³è« Herokuã«ãããã€ãããAlexaã® ããããã ãŒã³ã³ãœãŒã«ã«ãšã³ããã€ã³ãã®URLãšãã£ãŒãã®æ
å ±ãèšå®ããããšã§ãã©ãã·ã¥ããªãŒãã£ã³ã°ãã£ãŒãã®èšå®ã¯å®äºã§ãã512x512pxã®ã¢ã€ã³ã³ã¯åé ã«ç޹ä»ããããã«ãã©ãã·ã¥ãã¥ãŒã¹ã®äžèЧç»é¢ã«è¡šç€ºãããŸãã æåŸã«ã¹ãã«ã® å
¬éæ
å ± ãš ãã©ã€ãã·ãŒãšã³ã³ãã©ã€ã¢ã³ã¹ ãèšå®ããŸããã¹ãã«ã®ç»é¢ã«è¡šç€ºããã108x108pxãš512x512pxã®2çš®é¡ã®ã¢ã€ã³ã³ãæºåããå¿
èŠããããŸãããŸããå人æ
å ±ãåéããå Žåã¯ãã©ã€ãã·ãŒããªã·ãŒã®URLãæºåããå¿
èŠããããŸããããã©ãã·ã¥ããªãŒãã£ã³ã°ãã£ãŒãã¯çºä¿¡ããã®ã¿ã§å人æ
å ±ã¯åéã§ããªãã®ã§äžèŠã§ãã Google Assistantã®å Žåã¯ãã©ã€ãã·ãŒããªã·ãŒã®URLãå¿
ãæºåããå¿
èŠããããŸããããAlexaã®å Žåã¯å人æ
å ±ãåéããªãå Žåã¯å¿
èŠãããŸããïŒéã«æå®ãããšç³è«æã«ãªãžã§ã¯ããããããã§ãïŒã äžéãèšå®ãçµãããšç³è«ãã¿ã³ãæŒããŠç³è«ããŸããäŒæ¥äžã«ç³è«ãããšç¿å¶æ¥æ¥ã«ã¯é£çµ¡ãæ¥ãŠç¡äºæ¿èªãããŸããã ãããã« ãã©ãã·ã¥ããªãŒãã£ã³ã°ã¹ãã«ã¯ RSSãã£ãŒã ãååŸã§ããã³ã³ãã³ãã§ããã°æè»œã«äœæããããšãã§ããä»åã®ããã«ã«ã¹ã¿ãã€ãºã容æã«ã§ããŸããæ¯æèŽããã¥ãŒã¹ãšäžç·ã«èŽããŠããããã®ã§ãã³ã³ãã³ããæã£ãŠãããªãäœã£ãŠæã¯ãªãã®ã§ã¯ãšæããŸãã Google AssistantãšAlexa Skillsã®ããããã§éçºããå
¬éãŸã§ãã£ã¬ã³ãžããŠã¿ãŸããããã©ã¡ããå®çŸã¯å®¹æã§æè»œãããããŸãããã ã1ã€ã®ãã©ãããã©ãŒã ã§åºæ¥ãããšã¯éãããŠããã®ã§ãããããããšãå®çŸããããã«ã¯ä»åã®ããã«Herokuã䜿ã£ããã Google ã Amazon ã®ä»ã® ã¯ã©ãŠã ãã©ãããã©ãŒã ãšé£æºãããããšãã£ã工倫ã¯å¿
èŠã«ãªããšæããŸãããŸããå
¬éã®ããã®å¯©æ»ã¯ã©ã¡ããã¹ããŒãã£ãŒãªã¬ã¹ãã³ã¹ãªã®ã§ããªãžã§ã¯ããæããç³è«ããŠã¿ãã®ãè¯ããšæããŸãã ç§ã¯å
æ¥ç¥æžã§éå¬ããã Alexa Day 2018 ã«è¡ã£ãŠããŸãããäŒå Žã§ã話é¡ã«ãªã£ãŠããŸããããé³å£°ã®VUI㯠ã¹ãã ãªã©ã®æ¢åã®UIãããå©çšè
ã«ãšã£ãŠèº«è¿ã§æè»œãªãã®ã§ãåäŸããã幎å¯ããŸã§ãæ±ãããšãã§ããã€ã³ã¿ãŒãã§ãŒã¹ãšããŠå€§ããªå¯èœæ§ãç§ããŠããŸãã Amazon Echo ã¯ãŸã æåŸ
å¶ã§è²©å£²ãããŠããŸãããä»åŸå°ããã€å
¥æãããããªã£ãŠãããšæãããŸããå©çšè
ãå¢ããã°ã¹ãã«ã«èŠæ±ãããããšãå¢ããŠå¯èœæ§ãåºãã£ãŠããã®ã§ä»ã®ãã¡ã«ã¹ãã«ã®éçºã«ãã£ã¬ã³ãžããŠãããšè¯ããšæããŸãã
ã©ãããNIR-AMAUQAã§ããå¯ãæ¥ãç¶ããŠããŸããã ãããªæã¯ã§ããã ãå®¶ã«åŒãç± ããã!! ãããŠãå®¶ã§äœãå匷ããããšããããšã§âŠ ä»åã¯UdemyãšãããµãŒãã¹ãå©çšããŠã ã¹ãã«ã¢ãã ã詊ã¿ãã話ã§ãã â» æçš¿æç¹ã§ã¯ããŸã åè¬éäžã§ãã Udemyã£ãŠäœïŒ ãªãã§Udemyãåããããšæã£ãã®ã ã©ããªè¬åº§ãåããã®ã è¬åº§å
容ãç°¡åã«çŽ¹ä» åŠç¿ã®é²ãæ¹ åç»ãšäžŠè¡ããŠæãåãã åŠç¿ããé
ç®ãå¿çš ééæéãæŽ»çš èºããæ ãã£ãŠã¿ãææ³ Udemyã£ãŠäœïŒ Udemyãšã¯å€æ°ã®è¬åº§ãeã©ãŒãã³ã°ã§æäŸãããµãŒãã¹ã§ãã å®éã«ãµã€ããèŠãŠã¿ããšãããããªçš®é¡ã®è¬åº§ãããã®ãããããšæããŸãã www.udemy.com èšèªã¯è±èªãäžå¿ã§ãããæ¥æ¬èªã®è¬åº§ãçµæ§ãããŸãã â»è±èªã®è¬åº§ã§ããåå¹ä»ãã®è¬åº§ãããã¿ããã§ãã ãããšèŠãæãã ãšææã³ã³ãã³ããå€ãã§ãããç¡æã³ã³ãã³ãããããŸãã ãããããŒãžã§ç¡æãšæ€çŽ¢ãããšãå°ãã§ããåºãŠããŸãã ãªãã§Udemyãåããããšæã£ãã®ã å
æ¥ã瀟å
ã¡ãŒã«ã§ Udemyã®è¬åº§ã§æ¥åãããã¯æè¡ã«é¢é£ãããã®ã§ããã°äŒç€Ÿè² æ
ã§åããããŸãã ãšããé£çµ¡ããããŸããã ããã¯ãšã³ãžãã¢ã«ãšã£ãŠã¯ããªãå¬ããã§ãã!! æ¥åã«çŽæ¥é¢ä¿ãªãè¬åº§ã§ãæè¡é¢é£ã§ããã°OKãšã®ããšã§ããã ãããŠãeã©ãŒãã³ã°ã§ã®ã¹ãã«åŠç¿ã«èå³ããã£ãã®ã§ãã£ãŠã¿ãã!! ãšããçµç·¯ã§ãã ãããã瀟å
ã¡ãŒã«ãèŠããŸã§ãUdemyã®ååšãç¥ããŸããã§ãããïŒç¡ç¥ãªã®ã¯çªã£èŸŒãŸãªãã§ãã ãããç¬ïŒ ã©ããªè¬åº§ãåããã®ã æè¡é¢é£ã§ããã°OKãšã®ããšã§ããã®ã§ã以äžã®æ¡ä»¶ã§æ¢ããŸããã æ¥åãšã¯éãåé æ®æ®µäœ¿ã£ãŠããªã ããã°ã©ãã³ã°èšèª 身è¿ãªãã® çµæãä»åã¯å
šãè§Šã£ãããšã®ãªãSwiftã®å匷ãããããšã«!! Xcode ã«ãè§Šããããšãç¡ãã£ãã®ã§åå¿è
çšè¬åº§ãæ¢ããŸããã ãããããã£ãäžããããSwift4.0察å¿ãè¶
豪è¯çïŒæªçµéšè
ãæå ã¢ããªéçº è
ã«ãªã iOS 11ã®å
šãŠ 20å以äžã¢ããªãã€ããããã«ãªãããéžæã www.udemy.com äœè«ã§ããSwiftãéžæãã ã©ãã§ããã çç± å»å¹Žè²·ã£ã MacBook ãèªå®
ã§æŸçœ®ãããŠãã ïŒ ãšã³ãžãã¢ãšããŠããã¯ã©ããªã®ã⊠ãã¹ã¯ãããæŽŸãªãã®ã§âŠïŒ æµè¡ã£ãŠããã®ã¯è§Šã£ãŠã¿ãã å人㫠iOS ãšã³ãžãã¢ãå€ãããæ°ã«ãªã£ã çç±ã¯ã©ãããããã£ãããããã°è¯ããšæããŸããïŒç¬ïŒ è¬åº§å
容ãç°¡åã«çŽ¹ä» ææã³ã³ãã³ããªã®ã§è©³ããã¯æžããŸãããå°ãã ã⊠æªçµéšè
ã«ãã©ãŒã«ã¹ããŠããããšãããã Xcode ãã€ã³ã¹ããŒã«ããæããäžå¯§ã«è§£èª¬ãããŠããŸããã ããã°ã©ã ã®åºæ¬çãªç¥èãæ§æã®æžãæ¹ãªã©ã«é¢ããŠã解説ãããŠããŸãã â» çšèªã«é¢ããŠã¯æªçµéšè
ã®æ¹ã¯èª¿ã¹ãªãããã£ãæ¹ãçè§£ããããããšæããŸãã ã¢ããªäœæã«äœ¿çšããç»åãªã©ãçšæãããŠããã®ã§ãããã°ã©ã ã®çµéšè
ã§ããã°ããã«äœæããããšãåºæ¥ããšæããŸãã åèãŸã§ã«æåã®æ¹ã«äœã£ãç©ã®ãµã³ãã«ãèŒããŠãããŸãã ãã©ãã©æŒ«ç»çãªã®ãåç ã¿ã€ããŒã®äœ¿ãæ¹ãããã¿ã³ãæŒãããšãã®åŠçãåŠã¶é
ç®ã«ãŠã ãã°ã€ã³ç»é¢çãªã〠ããã¹ãããã¯ã¹ã®æäœãããŒããŒãã®äœ¿ãæ¹ãåŠã¶é
ç®ã«ãŠã ã©ã¯ ã¹ã«ã©ãŒ ã£ãœãããŠã¿ãŸããã åŠç¿ã®é²ãæ¹ åç»ãšäžŠè¡ããŠæãåãã ç§ã®éžæããè¬åº§ã¯ãã³ãºãªã³åœ¢åŒã§ããã®ã§ãåºæ¬çã«ã¯åç»ãèŠãªããæãåãããŠé²ããŠãããŸããã äžåºŠè³Œå
¥ããè¬åº§ã¯äœåºŠã§ãèŠããã®ã§ãèãéããæãªã©ãå床èŠãããšãã§ããŸãã åŠç¿ããé
ç®ãå¿çš åŠç¿ããé
ç®ã«é¢ããŠã¯ãèªåã®ã¹ãã«ã«ããããã«èªåãçŽåŸãããŸã§èª¿ã¹ããæäœãããããŸããã å床åãããšãããããšãããšãã«ãèªåã®æãæããéãã«ã§ããã®ãçæ³ã§ããã ééæéãæŽ»çš å°ãã ã空ããæãªæéãªã©ã«ã¯ç©æ¥µçã«é²ããããã«ããããšã§ç¡é§ãªæéãç¡ããªããŸããã åç»ãšäžŠè¡ã§é²ãããšã¯èšã£ãŠããå
ã«å
容ãç¥ã£ãŠãããæ¹ããã¯ãå¹çãè¯ãã®ã§ãéå€äžã®é»è»ã§åç»ãèŠãŠäºç¿ãããŸããã Udemy㯠ã¹ãã ã¢ããªçãããã®ã§ãã€ã§ãåç»ãèŠãããšãåºæ¥ãã®ã¯è¯ãã£ãã§ãã â» åç»ãèŠãŠããç¶ãããåçãããã®ã§ãPCãšã¢ããªã亀äºã«äœ¿ãéã«æè»œã§ããã Andoridç play.google.com iPhone ç Udemy:ãããªã§ææ¥ãåããããåŠç¿ã¢ã㪠Udemy æè² ç¡æ ãã®èšäºãæžããŠããæã«ç¥ã£ããã§ããã ã¹ãã ã§ãªãã©ã€ã³æã«åçããããã«ãããããããŠã³ããŒããã§ããããã§ãã ãããå©çšãããšãã¢ãã€ã«éä¿¡è²»ãç¯çŽã§ããã®ã§ããã§ããã https://support.udemy.com/hc/ja/categories/204119668-%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB support.udemy.com èºããæ ããã°ã©ã ãšãã¯åé¡ãªãã£ãã®ã§ããã Xcode ã®äœ¿ãæ¹ã«æ
£ããŠããªããŠèºãããªã£ãŠãšããããããŸããã iPhoneã¢ã㪠äœã£ãããšã®ãã人ã«ãšã£ãŠã¯åœããåã®äºã ãšæããŸããã解決ãããšãã«åèã«ããèšäºã玹ä»ããŠãããŸãã ã·ãã¥ã¬ãŒã¿ã§ã®UIã®é
çœ®ç®æããããã ideacloud.co.jp ã·ãã¥ã¬ãŒã¿ã§ããŒããŒããåºãŠããªã qiita.com yutaihara.com UIããŒããšããã°ã©ã ã®çŽã¥ãã§ãšã©ãŒ ios.steppers-hi.net ãã£ãŠã¿ãææ³ ãŸãšãŸã£ãæéã¯åããªããã©å匷ãããæ¹ãå··ã§è¡ãããŠããå匷äŒã®ã¹ã±ãžã¥ãŒã«ã«åããªãæ¹ã«ã¯è¯ããµãŒãã¹ã ãšæããŸãã å®éããã€ããŒã¹ã§é²ããããã®ã¯çµæ§æ°ã楜ã§ããã ãã ãããã€ããŒã¹ã§é²ããããã®ã§èªåã§åŠç¿ãããšããææãç¡ããšäžæ¥åäž»ã«ãªããããªã®ã§æ³šæã§ãã å©çšããŠã¿ãŠäžã€é£ç¹ããªãšæããã®ã¯ãããŒãPCã®ã¿ã®å Žåã¯åç»ãèŠãªãã䞊è¡ã§é²ããããšãé£ãããšããããšæããŸãã åé¿çãšããŠãç§ã¯ãã¹ã¯ãããã§åç»åçããªãã MacBook ãæäœããŠããŸããã çŸæç¹ã§ã¯è¬åº§ã®éäžã§ãããçµæ§åŠãã ããšãå€ã ã¹ãã«ã¢ãã ã«ç¹ãã£ãŠãããšæãããŠããã®ã§æºè¶³ããŠããŸãã ç°¡åãªã¢ããªã§ããã°ä»ã§ãäœãããã ãªã£ãŠæããªã®ã§ãè¬åº§ãåãçµãã£ãããã«äœãã¢ããªäœããããããªãšæã£ãŠããŸãã ä»åŸãæ°ã«ãªãè¬åº§ãç¹ã« 人工ç¥èœ ãæ¥åé¢é£ã§ããã³ããšã³ãç³»ã®æè¡ã®è¬åº§ã¯ç©æ¥µçã«åããŠããããã§ãã
ããã«ã¡ã¯ sts -250rrã§ãã ä»åã¯æè¿ãªãªãŒã¹ããã iPhone ã®OSã§ããiOS11ãã远å ããããARKitããå°ãè§Šã£ãŠã¿ãŸããã®ã§ç޹ä»ããããšæããŸãã ããŸãæ¥åçã§ã¯ãããŸããããæšå¹Žã¯ VRå
幎 ãšèšãã3Dé¢é£ã¯å°ãã ãããããªè©±é¡ã§ãããã ã€ã³ã¿ã©ã¯ãã£ã ãªå
容ã«ãªã£ãŠããŸãããä»ãåãããã ããã°å¹žãã§ãã ARKitã£ãŠãªã«? ããŒããŠã§ã¢ ãœãããŠã§ã¢ Apple Developer ã®ã©ã€ã»ã³ã¹ Unityã§ãµã³ãã«ã¢ããªãåãããŠã¿ã Unityã§ãããžã§ã¯ããäœæ Unityã«ARKit Pluginãã€ã³ããŒããã ARKitã®ãµã³ãã«ãéã ARKitãµã³ãã«ã®ãã«ãèšå® ãµã³ãã«ã¢ããªã®å®è¡ ãŸãšã ARKitã£ãŠãªã«? ARKitã¯ãã®åã®éãAR(æ¡åŒµçŸå®ïŒAugmented Reality)ãªã¢ããªã±ãŒã·ã§ã³ãéçºããããã® ãã¬ãŒã ã¯ãŒã¯ ã§ãã äœãç¹å¥ãªã»ã³ãµãŒé¡ãçšæãããšãARã¢ããªã®éçºãå¯èœã«ãªã£ãããããŒãã«ã¯äžãã£ãã®ã§ã¯ãªãããšæããŸãã ARKitã§ã®éçºãå§ããããã«å¿
èŠãªãã®ã¯ä»¥äžã®ãã®ã§ãã ããŒããŠã§ã¢ Mac macOS Sierra 以é iPhone 6s以éã§iOS11ãå
¥ã£ãŠãããã® ãœãããŠã§ã¢ Unity version5.6.2以é Unity ARKit Plugin Xcode version9以é Apple Developer ã®ã©ã€ã»ã³ã¹ ä»åã¯AppStoreã«å
¬éããããã§ã¯ãªãããç¡æã®ãã®ã§è¯ãã§ãã ç¡æã©ã€ã»ã³ã¹ã§ãã¢ããªã3ã€ãŸã§ iOS ã ãã€ã¹ ã«è»¢éã§ããŸãããµã³ãã«ãåããåã«ã¯ååã§ãã Unityã§ãµã³ãã«ã¢ããªãåãããŠã¿ã Unityã§ãããžã§ã¯ããäœæ ãŸãã¯Unityã§ãããžã§ã¯ããäœæããŠãããŸãã ãããžã§ã¯ãäœææç¹ã§æ³šæãã¹ãç¹ã¯ãããŸããããããžã§ã¯ãåããARSampleããšã§ãããŠããã[Create Project]ããŸãããã äœæãçµãããšUntitledãšããååã®ã·ãŒã³ãäœæãããç¶æ
ã«ãªããŸãã ç§ã3D ã¢ããªã³ã° ãUnityèªäœã«è©³ããããã§ã¯ãªãã§ãããã·ãŒã³ãšã¯3Dãªããžã§ã¯ããé
眮ããŠããããã®ãèå°ãã§ãããšè§£éããŠããŸãã iOS çšã®ãã«ãèšå®ãè¡ã Fileã¡ãã¥ãŒã®[Build Settings]ãéããšå³ã®ãããªç»é¢ãéããŸãã [Platform]ã« iOS ãéžæããŠ[Switch Platform]ãã¿ã³ãæŒããŠãã«ãèšå®ã iOS ã«ããŸãã â» iOS ã®é
ç®ã«Unityã®ã¢ã€ã³ã³ã衚瀺ãããŠããã¯ãã§ãã Unityã«ARKit Pluginãã€ã³ããŒããã Unityã®Windowã¡ãã¥ãŒãã[Asset Store]ãéžæãããšç»é¢äžã«Asset Storeã衚瀺ãããŸãã Asset Store㯠ãã©ã°ã€ã³ ãUnityã§äœ¿çšã§ãã3Dã¢ãã«ãçŽ æãç»åãªã©ã賌å
¥ããããšãã§ããŸããç¡æã®ãã®ãããã®ã§è²ã
æ¢ããŠã¿ãã®ãè¯ããšæããŸãã è©±ãæ»ããŸããããAsset Storeã®æ€çŽ¢ãã©ãŒã ãããUnity ARKit Pluginããæ€çŽ¢ããã€ã³ããŒãããŸãã ãã€ã¢ãã°ãåºãŠããå ŽåããããŸãããç¹ã«åé¡ã¯ãªããããªã®ã§æ°ã«ããã€ã³ããŒãããŸãã ãã¿ã³ããœã¡ãœã¡ããŠãããšãªãã®ããã±ãŒãžãã€ã³ããŒãããã®ããšãã£ãç»é¢ãåºãŠããŸãã®ã§å
šãŠã® ãã§ãã¯ããã¯ã¹ ã«ãã§ãã¯ãå
¥ã£ãŠããããšã確èªã[Import]ããŸãããã ã€ã³ããŒããå®äºãããš[Project]ãŠã£ã³ããŠã®[Asset]ãã©ã«ãã«[Unity ARKit Plugin]ã®ãã©ã«ããäœæãããŸãã ããã§Unityã§ARKitãããžã§ã¯ããäœæããæºåãæŽããŸããã ARKitã®ãµã³ãã«ãéã [Unity ARKit Plugin/Example/UnityARKitScene]ã«ãµã³ãã«ã®ã·ãŒã³ãããã®ã§ããã«ã¯ãªãã¯ããŠéããŸãã [Scene]ãŠã£ã³ããŠã«åãæ¿ãããšå³ã®ãããªã·ãŒã³ã衚瀺ãããŠããŸãããã®ç»é¢ãARã§è¡šç€ºããŠããããã§ãã å·ŠåŽã®ã¿ãã«è¡šç€ºãããŠãããã®ã¯ã·ãŒã³ã«è¿œå ãããŠãããªããžã§ã¯ãã®äžèЧã§ãã ä»åã¯3D ã¢ããªã³ã° ã«é¢ããŠã®è©±ãã¡ã€ã³ã§ã¯ãªãã®ã§å²æããŸãã ARKitãµã³ãã«ã®ãã«ãèšå® åã³Fileã¡ãã¥ãŒã®[Build Settings]ãéããäžéšã®UnityARKitSceneã® ãã§ãã¯ããã¯ã¹ ããã§ãã¯ããŸãã æ¬¡ã«[Player Settings...]ãã¿ã³ãæŒããš[inspector]ã¿ãã« iOS ã®çšã®ãã¬ã€ã€ãŒèšå®ç»é¢ã衚瀺ãããŸãã [Other Settings]ã®é
ç®ãèšå®ããŠãããŸããèšå®ãè¡ãé
ç®ã¯ä»¥äžã®3ç¹ã§ãã Identification [Bundle Identifier] ãcom.unity.arkitsceneããšããæååãå
¥ã£ãŠããŸãããããã®åºæïŒäžæïŒã®ãã®ã§ãªããšãããŸãããèªèº«ã§ ãã¡ã€ã³ ãæã£ãŠãããããããªæ¹ã¯ ãã¡ã€ã³ ãå
¥ããŠããŸãã®ãæã£åãæ©ãã§ãã ãããåºæã®ãã®ã§ãªãã£ãå ŽåãåŸã®å·¥çšã§ã€ãŸã¥ããŸããïŒçè
è«ïŒ Configuration [Camera Usage Description] ãAR BABYãã®æååãå
¥ã£ãŠããããšã確èªããŸãã ããã®å€ã¯ä»åäœæããARã¢ããªã iPhone ã®ã«ã¡ã©ã«ã¢ã¯ã»ã¹ããæš©éãåŸãããã«å¿
èŠãªããã§ãã ïŒããããããããã¢ã¯ã»ã¹ãæ±ããŠããŸããã®ãã€ïŒ Supported URL schemes [Target minimum OS Version] äžèº«ã®å€ãã11.0ãã«å€æŽã Build Settingsã®ãŠã£ã³ããŠã®[Build And Run]ãæŒäžããŠãä»»æã®ååïŒUnityARKitSceneã§è¯ãã§ãïŒã§ä¿åããã«ããå§ããŸãã åŠçãå®äºãããšã Xcode ãèµ·åããUnity- iPhone ãã®ãããžã§ã¯ãã衚瀺ãããŸãã ãµã³ãã«ã¢ããªã®å®è¡ Mac ãš iPhone ãæ¥ç¶ãã Xcode ã®å·Šäžã®â¶ïžãã¿ã³ãæŒããš iPhone åŽã«ã¢ããªã転éããåé¡ãªãå®äºãããš iPhone äžã§ã¢ããªãèµ·åããŸããã«ã¡ã©ãžã®ã¢ã¯ã»ã¹èš±å¯ãæ±ããããã®ã§ãæåŠããªãã§ãããŠãã ããã ã«ã¡ã©ç»é¢ã衚瀺ããããšç»é¢äžã«é»è²ãç¹ã衚瀺ãããããæ°Žè²ã®æ ã衚瀺ãããŸããé»è²ãç¹ã¯ç¹åŸŽç¹ãæ°Žè²ã®æ ã¯æ°Žå¹³é¢ãèªèããŠããããšã瀺ããŠããŸããæ°Žè²ã®æ å
ãã¿ãããããšç«æ¹äœãèšçœ®ãããŸãã ãã®ç«æ¹äœã¯æ°Žå¹³é¢äžã«é
眮ãããŠããã®ã§ãåã蟌ãã§ã¿ãããããšãŸãã§ãã®å Žæã«çœ®ããŠããããã«èŠããŸãã è²ã
ãªãšãããããããèŠåããŠã¿ãããå¹³é¢ã«ç«æ¹äœãèšçœ®ããŠã¿ãŠARäœéšãããŠã¿ãŠãã ããã ãŸãšã ç°¡åãªãµã³ãã«ã§ããããããã§ããããïŒ å®éã«ã¢ããªãéçºããããšæããš3D ã¢ããªã³ã° ã iOS ã¢ããªéçº ã®ç¥èãå¿
èŠã«ãªãããšæããŸãããæ¯èŒçããŒãã«ãäœãæããããã®ã§ã¯ãªãã§ããããïŒ çè
ã®ææ³ãšããŠã¯ã iPhone ã®åªç§ããæãããéåžžã«æè»œã«æ¥œããéçºãã§ãããã ãªãšæããŸããã ã¿ãªããã®ã¢ ã€ã㢠ããã²ARã§å®çŸããŠã¿ãŸãããïŒ ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã https://career-recruit.rakus.co.jp/career_engineer/ ã«ãžã¥ã¢ã«é¢è«ãç³èŸŒã¿ãã©ãŒã ã©ã®è·çš®ã«å¿åããã°è¯ããããããªããšããæ¹ã¯ãã«ãžã¥ã¢ã«é¢è«ãéæè¡ã£ãŠãããŸãã 以äžãã©ãŒã ãããç³èŸŒã¿ãã ããã forms.gle ã€ãã³ãæ
å ± äŒç€Ÿã®é°å²æ°ãç¥ãããæ¹ã¯ãæ¯é±éå¬ããŠããã€ãã³ãã«ãåå ãã ããïŒ rakus.connpass.com
id:radiocat ã§ãã Google Home Miniãš Amazon Alexa Dotã®äºåæµãã¬ã€ã€ãŒã§ãã å
æ¥ããã®ããã°ã®ã¿ã€ãã«ãèªã¿äžãã Google Assistant察å¿ã¢ããªã®ç³è«ãæ¿èªãããŸããã Google Assistant | RAKUS Developers Blog ãæå
ã® Google Home ã ã¹ãã ã® Google Assistantãèµ·åãã以äžã®ããã«åŒã³ãããŠã¿ãŠäžããã OK Google , RAKUS Developers Blog ã«ã€ãªãã§ ã¹ãã ã®å Žåã¯ä»¥äžã®ããã«ææ°5ä»¶ã®èšäºã®ã¿ã€ãã«ãšæçš¿æ¥ããããŠãã®ããã°ãžã®ãªã³ã¯ã衚瀺ãããŸããã¹ããŒã«ãŒã®å Žåã¯ã¿ã€ãã«ãšæçš¿æ¥ãèªã¿äžããŸãã ãã°ããã¯æ°çäžèЧã«ã衚瀺ãããããã§ãã ã¹ãã ã® Google Assisntantãèµ·åããŠãäœ¿ãæ¹ã»ãã³ããã衚瀺ãããšæ°çäžèЧãåºãŠããŸãã ä»åã¯ãã®ã¢ããªãäœãæé ãšå
¬éããããã®ç³è«æé ã«ã€ããŠç°¡åã«ãŸãšããŠã¿ãŸããã ã¢ããªã®éçº Action on Google Dialog Flow HerokuïŒNode.jsïŒ RSSãã£ãŒãã䜿ã£ãŠããã°æ
å ±ãååŸãã ã¹ããããåŒã°ããå Žåã ãããã°ã®ãªã³ã¯ãä»ããŠå¿çãã Herokuã«ãããã€ããŠDialogflowã«èšå® ã¢ããªã®ç³è« ã¢ããªã®èµ·åã¯ãŒã ã¢ããªã®ç»å ãã©ã€ãã·ãŒããªã·ãŒ ã¢ããªã®å©çšç¯å² å¯©æ» ãããã« ã¢ããªã®éçº åºæ¬çãªéçºã®æµãã¯ä»¥åãã®èšäºã«ãŸãšããããŠããŸãã®ã§ãŸãã¯ãã¡ãã確èªããŠã¿ãŠãã ããã tech-blog.rakus.co.jp ä»åäœã£ãã¢ããªã®å
šäœã®æ§æã€ã¡ãŒãžã¯ä»¥äžã®å³ã®ããã«ãªããŸãã ããã°æ
å ±ãååŸããæ©èœã¯Node.jsïŒExpressã§å®è£
ããŸããã Action on Google ãããžã§ã¯ããäœæããActionsã«Dialogflowãèšå®ããŸãããã以å€ã®å
¥åé
ç®ã¯ã¢ããªã®ç³è«æãŸã§ã«å
¥åã宿ããã°è¯ãã®ã§ããã£ããã¯æªå
¥åãŸãã¯ãããŒå
¥åã§æ§ããŸããã Dialog Flow ä»åã®ã¢ããªã¯ããã°ã®æ
å ±ãå¿çããã ãã§äŒè©±ãããªãã®ã§ãDefault Welecom Intentã«çŽæ¥ Use Webhook ãèšå®ããŸããããŸããä»ã®ãšããå¿çåŸã«äŒè©±ãç¶ç¶ãããæ©èœããªãã®ã§ End conversation ãèšå®ããŸãããã€ãŸãã¢ããªã«ã€ãªããšããã°æ
å ±ã®å¿çãè¿ããŠããã¢ããªã¯çµäºããŸãã HerokuïŒNode.jsïŒ Herokuäžã§Node.jsïŒExpressã䜿ã£ã Google Assistantã¢ããªã®åºæ¬çãªéçºæé ã«ã€ããŠã¯ä»¥åQiitaã«å
¬éããŠããŸãã®ã§ããŸãã¯ãã¡ããåç
§ããŠã¿ãŠãã ããã qiita.com ã¡ã€ã³ãšãªãããã°æ
å ±ãååŸããŠå¿çããæ©èœã®äž»èŠãªéšåã«ã€ããŠä»¥éã§è§£èª¬ããŠãããŸãã RSSãã£ãŒã ã䜿ã£ãŠããã°æ
å ±ãååŸãã å¿çãè¿ãåã«ããŸãããã°æ
å ±ãååŸããå¿
èŠããããŸãã åœããã°ãå©çšããŠãã ã¯ãŠãªããã° ã¯ããã°ã®URLã« /rss ãä»ãããš RSSãã£ãŒã ãååŸã§ããŸãããã®URLãå©çšããŠèšäºã®ã¿ã€ãã«ãšæçš¿æ¥ãååŸããããšã«ããŸããã RSSãã£ãŒã ã JSON 圢åŒã§ååŸããããã«FeedParserãšããã©ã€ãã©ãªã䜿ããŸãã github.com 詳现ã¯äžèšã®å
¬åŒãµã€ãã«ãŸãšããããŠããŸããããã£ãã以äžã®ãããªæµãã§ RSSãã£ãŒã ãååŸã§ããŸãã // RSSãã£ãŒããååŸãã http.get(BLOG_RSS_URL, function (res) { res.pipe( new FeedParser( {} )) .on( 'readable' , function () { var stream = this , item; // ææ°5ä»¶ã ãååŸ while (item = stream.read()) { if (itemCount >= 5) { break ; } // item.title ã®ããã«å¿
èŠãªå±æ§ãååŸ ã¹ãã ããåŒã°ããå Žåã ãããã°ã®ãªã³ã¯ãä»ããŠå¿çãã ã¹ãã ããåŒã°ãããã©ããã¯Webhookã®ãªã¯ ãšã¹ ãã® JSON ã® surface.capabilities ããã§ãã¯ããããšã§å€å¥ã§ããŸãã詳现ã¯Qiitaã«ãŸãšããŠããŸãã qiita.com ãŸãã Google Assistantã«ã¯Basic Cardãšãããªã³ã¯ä»ãã®ã«ãŒãã衚瀺ããRich Responsesãšããä»çµã¿ãæºåãããŠããŸãããããQiitaã«ãŸãšããŠããŸãã qiita.com ãããã®ä»çµã¿ã䜿ãããšã§ ã¹ãã ã®ç»é¢ã§ã¯ã¡ãã£ãšã ãèŠæ ããåäžãããããšãã§ããŸãã Herokuã«ãããã€ããŠDialogflowã«èšå® RSSãã£ãŒã ããããã°ã®æ
å ±ãååŸã㊠JSON ã§ã¬ã¹ãã³ã¹ãè¿ãä»çµã¿ã宿ãããHerokuãžãããã€ãããã®URLãDialogflowã®Fulfillmentã«èšå®ããŸãã ããšã¯Action on Google ã®Simulatorã§åé¡ãªãåäœããããšã確èªã§ããã°å
¬éããã¢ããªã®æºåã¯å®äºã§ãã ã¢ããªã®ç³è« ããããã¢ããªãå
¬éããããã«ç³è«ã®æºåãè¡ããŸããåºæ¬çã«ã¯Action on Google ã®ç»é¢ã§å
šãŠã®é
ç®ãå
¥åããã ãã§ããå¿
é é
ç®ãå
šãŠå
¥åãããšä»¥äžã®ããã« SUBMIT DRAFT FOR REVIEWãã¿ã³ãæŒããç¶æ
ã«ãªããŸãã ã¢ããªã®èµ·åã¯ãŒã Sample invocationsã§ã¢ããªã®èµ·åã¯ãŒããèšå®ããŸãããââã«ã€ãªãã§ãããââãšè©±ãããããšããèšèãèšå®ããŸããä»åã¯äŒè©±ç³»ã¢ããªã§ã¯ãªãã®ã§ãââã«ã€ãªãã§ããšããã¯ãŒãã®ã¿èšå®ããŸããã ã¢ããªã®ç»å 以äžã®2ã€ã®ç»åãæºåããå¿
èŠããããŸãã Large banner image (1920 x 1080) Google Assistantã®ã¢ããªã®ããŒãžã®Topã«è¡šç€ºããããããŒã§ã Small square logo (192 x 192) ã¢ããªã®ããŒãžãã¢ããªäžèЧã§è¡šç€ºãããã¢ããªã®ããŽã§ã ãã©ã€ãã·ãŒããªã·ãŒ ä»åã®ã¢ããªã§ã¯ç¹ã«å人æ
å ±ãæ±ãããšã¯ãªãã®ã§ä»¥äžã®ãããªç°¡åãªããŒãžãæºåããŸãããHerokuã䜿ãã®ã§Expressäžã«éçããŒãžãæºåããŠé
眮ããŸããã ã¢ããªã®å©çšç¯å² ä»åã¯ç¹ã«å¶éããŠããŸããã Surface capabilitiesã§ã¢ããªãã¹ããŒã«ãŒã ãã ã¹ãã ã ãã®å©çšã«å¶éããããšãã§ããŸãã å¯©æ» ç³è«ãããšãã®ç¿æ¥ã«ã¯çµæãè¿ã£ãŠããŸãããäžåºŠç®ã¯ç³è«å
容ã«äžåããã£ãŠãªãžã§ã¯ããããŸãããææã¯2ç¹ã§1ç¹ã¯åã«ãã©ã€ãã·ãŒããªã·ãŒã®URLãééã£ãŠããããã§ããã1ç¹ã¯ä»¥äžã®ãããªèµ·åã¯ãŒããäžé©åãšããææã§ããã Sample Invocationsã§ã¯ã<ã¢ããªåããŸãã¯ã Pronunciation + Trigger Phrase>ãçµã¿åãããåœ¢ã§æèšãäœæãã å¿
ããã®æèšãã¢ããªèµ·åããããšãã確èªããã ããŠããããç³è«é ãå¿
èŠããããŸãã æåã«ç³è«ããæã¯ã¢ããªåã«ã¯ãšãããããå©çšã·ãŒã³ãå©äŸ¿æ§ãèããŠäžèšã®ãããªã¯ãŒããç»é²ããŠããŸããã ã©ã¯ ã¹ããã°ã«ã€ããªãã§ ææ°ã® ã©ã¯ ã¹ããã°æ
å ±ãæã㊠ãããã "<ã¢ããªåããŸãã¯ã Pronunciation + Trigger Phrase>ãçµã¿åããã圢" ã§ã¯ãªãã£ãããšãåå ã§ãã詊ããŠããªãã£ãã®ã§ããããããã®ã¯ãŒãã§ã¯åŒã³åºãããšãã§ããªãããã§ããäºåã«Action on Google ã®Simulatorããèšå®ããå
šãŠã®ã¯ãŒãã§åŒã³åºãããããšã確èªããŠããç³è«ããã®ãè¯ãããã§ãããŸããæè»œã«åŒã³åºãã§ããããã«ããã«ã¯ãåŒã³åºããããã¢ããªåïŒPronunciationãèããå¿
èŠãããããã§ãïŒãã¡ãããåŒã³åºãããããŠãã¢ããªã®è¶£æšã«æ²¿ããªãåç§°ã§ã¯çµå±ãªãžã§ã¯ãããããšæããŸãïŒã äžèšãä¿®æ£åŸãå床ç³è«ããã®ç¿æ¥ã«ç¡äºæ¿èªãããŸããããããå¹žçŠæã®ããè¿ä¿¡ã¡ãŒã«ãå±ããŸãããããããšãããããŸãã ãªããã¡ãŒã«ã«ãæžãããŠããããã«è€æ°èšèªã§ã¢ããªãå
¬éãããå Žåã¯å
šãŠã®èšèªã§æ¿èªãåããå¿
èŠãããããã§ãã ãããã« ç¡äºã«ã¢ããªãå
¬éããããšãã§ããŸããããªããä»åäœã£ãã¢ããªã¯åŒç€Ÿã®ã·ã¹ãã ãªãœãŒã¹çã¯äœ¿ãããããªãã¯ãª ã¯ã©ãŠã ãµãŒãã¹ãå©çšããŠå人ã§äœã£ãå®éšçãªãã®ã§ããäŒç€Ÿã®å
¬åŒçãªãµãŒãã¹ãšããŠå
¬éããããã®ã§ã¯ãªãããšã¯ãäºæ¿ãã ããã æ¬¡åã¯ãã®æ©èœãAlexaããã䜿ããããã«ããŠã¿ãããšæããŸãã
ã¯ããã« ããã«ã¡ã¯ïŒæ°å1幎ç®ã®rs_tukkiã§ãã ãšã³ãžãã¢ãšããŠå
¥ç€ŸããŠãããããã1幎ãæåã¯å³ãå·Šãåãããªãã£ãç§ã§ãããå
茩ãäžåžã®æ¹ã
ã« ãããã æå°ããŠããã ããªããããªããšãæ©èœéçºã«æºãããããã«ãªã£ãŠããŸããã ããŠãä»åã¯æè¡ãã®ãã®ãšã¯å°ãéãã話ã§ãã çŸåš2æã ããš2ãæãããã°æ°ããæ°åãšããŠå
¥ç€Ÿããããèšãã° ãæ°å0幎ç®ã ã®çããã¯ãæåŸ
ãšåæã«ãã©ã®ããã«ä»äºãé²ããŠããã°ããã®ããã©ãããã°èª¬æäŒã§äŒã£ãå
茩ãã¡ã®ããã«ãªããã...ãšããäžå®ããæã¡ã ãšæããŸãã æ®å¿µãªãããããã£ãã³ãã¯å®éã®æ¥åã®äžã§èº«ã«çããŠãããããããŸãããããã®ãã³ããªãã å€ä»æ±è¥¿ ã®ããããæžç±ã«è»¢ãã£ãŠããŸãã ããã§ä»åã¯ãæ°å1幎ç®ã®ç§ããæ°å0幎ç®ã®ãšã³ãžãã¢ã«ãªã¹ã¹ã¡ãããã5å+1åã®å¿
èªæž...ããã ãèã®å·»ã ãã玹ä»ããŸãïŒ ã¯ããã« ãŸãã¯ãä»äºã®ããæ¹ããã <æç« å«ãã§ã¯ããŸãããªã! > ãšã³ãžãã¢ã®ããã®äŒããæžãæ¹è¬åº§ åé¡è§£æ±ºåãéãããã¬ãŒãã³ã°ãã㯠è³ã®ããã©ãŒãã³ã¹ãæå€§ãŸã§åŒãåºã ç¥ã»æéè¡ è©äŸ¡ããããšã³ãžãã¢ãšã¯ïŒ ãªãŒããã«ã³ãŒã âããè¯ãã³ãŒããæžãããã®ã·ã³ãã«ã§å®è·µçãªãã¯ãã㯠ããã°ã©ããç¥ãã¹ã97ã®ããš ãããŸãããšã³ãžãã¢ãããªããŠãèªãã§ã»ãããæ°åèã®å·»ã å
¥ç€Ÿ1幎ç®ã®æç§æž ãããã« ãŸãã¯ãä»äºã®ããæ¹ããã ãšã³ãžãã¢ããšãããšçããã®äžã«ã¯ããã ãã£ãšããœã³ã³ã«åãã£ãŠã³ãŒããæžããŠããã°ããããšæã£ãŠããæ¹ãããããšæããŸãã ã§ãããå®éã®ä»äºã¯äœãèªåäžäººã ãã§é²ããŠãããã®ã§ã¯ãããŸããã äŸãã°èªåãã¡ã®äœã£ããã®ãè³æã«ãŸãšããŠå¶æ¥ã®äººãã¡ã«èª¬æããããçºçããåé¡ã«å¯ŸããŠçã§å¯Ÿå¿çãåé¿çãèããã...ãšãããœã³ã³ã䜿ããªãäœæ¥ãæå€ãšå€ãã®ã§ãã ãšã¯ãããããªãšãã«ããèªåã¯ããã°ã©ãã³ã°ããã§ããªãããããšæãåºãããã«ã¯ãããŸãããããããçŽæ¥æ¥åã«é¢ä¿ããããã«ãã®æã«ãªã£ãŠããã§ãåŠã¶ããšãã§ããããã°ã©ãã³ã°ãããã ææžã®æžãæ¹ ã åé¡ã«çŽé¢ãããšãã®èãæ¹ ã ãããŠã ãããã£ãäœæ¥ãããªãã€ã€æ¬æ¥ã®æ¥åãé
ãããªãããã®åãçµã¿æ¹ ããããä»ããã®ã¿ã€ãã³ã°ã§ç¥ã£ãŠããã¹ãããšããªã®ã ãšæããŸãã ããã§ã¯ããããã£ãããšãç¥ããæ¬ã3åã玹ä»ããŸãã <æç« å«ãã§ã¯ããŸãããªã! > ãšã³ãžãã¢ã®ããã®äŒããæžãæ¹è¬åº§ <æç« å«ãã§ã¯ããŸãããªã! > ãšã³ãžãã¢ã®ããã®äŒããæžãæ¹è¬åº§ äœè
: éç±³ çæµ© çºå£²æ¥: 2014/06/28 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ å€§åŠæä»£ã«çé¢ç®ãªã¡ãŒã«ã沢山æžããéèŠãªãã¬ãŒã³ãåžžã«ãã£ãŠããããšãã人ã¯ããŸãããªãã®ã§ã¯ãªãã§ããããã ã§ããå°±è·ããåŸã¯ãããšããšã³ãžãã¢ã§ãã£ãŠã説æã®ããã«ã¡ãŒã«ãéã£ããè³æãæžããããšããšã«ããããã°ã©ã 以å€ã«ããæžããäœæ¥ãããªãå¢ããŸãã ããã§äžçªéèŠãªã®ã¯ããå¿
èŠãªæ
å ±ã ãããæ£ç¢ºã«ãåãããããçžæã«äŒããããšãã§ãã ãã®æ¬ã§ã¯ã誰ã«ããäœã®ããã«ãæç« ãæžãã®ãããšããããšããå§ããŠãå³ã衚ã®äœãæ¹ãªã©ãæ
å ±ãç確ã«ãŸãšããŠäŒããããã®æ¹æ³ãæžãããŠããŸããããããã³ãã¥ãã±ãŒã·ã§ã³ã¯ä»äºã§äžçªå€§äºãªã¹ãã«ã ããšãã人ãããŸããããã®æèŠã®æ¯éã¯ãšããããã誀解ãªãäŒããããããšãã¯å¿
ã圹ã«ç«ã€ã¯ããªã®ã§ãã åé¡è§£æ±ºåãéããã ã¬ãŒãã³ ã°ãã㯠åé¡è§£æ±ºåãéãããã¬ãŒãã³ã°ãã㯠(ãããããžãã¹éå Ž) äœè
: å¥è¯äº å® ã¡ãã£ã¢: åè¡æ¬ çºå£²ã¯2002幎ãšçµæ§å€ãæ¬ã§ããããä»ã§ãåååèã«ãªãå
容ã ãšå人çã«ã¯èããŠããŸãã 宿ã«åé¡ãšèšã£ãŠãæ§ã
ã§ããããã®æ¬ã§ã¯ãŸããåé¡ãã®å®çŸ©ãšã¯äœãïŒãšããããšããèãå§ãããããªã解決ã«åãçµãã®ã§ã¯ãªãããã£ããäœãåå ãªã®ããã©ãããã°è§£æ±ºãããšèšããã®ãããšãã£ãããšãäœç³»ç«ãŠãŠãåºæ¬æé ããšããŠãŸãšããŠããŸãã å®éã«èµ·ãã£ãåé¡ã«å¯Ÿãã解決ã®äºäŸã远ããã®ã§ããšã³ãžãã¢ãšããŠã®åé¡ã«ãååå¿çšãå©ãæ¬ã§ãã è³ã®ããã©ãŒãã³ã¹ãæå€§ãŸã§åŒãåºã ç¥ã»æéè¡ è³ã®ããã©ãŒãã³ã¹ãæå€§ãŸã§åŒãåºã ç¥ã»æéè¡ äœè
: 暺沢 玫è çºå£²æ¥: 2017/04/13 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ãã¡ãã¯éã«æšå¹Ž4æã«çºå£²ãããã°ããã§ãç§ãä»ãŸãã«èªãã§ããéäžã®æ¬ã§ãã äžè¬çã«ä»äºã¯1æ¥8æéãç¹ã«ãšã³ãžãã¢ã ãšæ®æ¥ãå€ãã9æéã10æéãåãããšããããããããŸãããæ¯æ¥ãããªã«é·ãééäžããŠåãçµããšããã®ãç¡çãªè©±ã§ãããå®éç§ãéäžåãéåãéåãã«ãªã£ãŠæ³šæãããŠããŸãããšããããŸããã ãã®æ¬ã§ã¯ããããããçç£æ§ããå©ãåºãæ¹æ³ãšããŠãäžæãéäžåãç¶æããªãããå¹çããæéãäœ¿ãæ¹æ³ã«ã€ããŠè§£èª¬ããŠããŸãã ãé念ãåºããçŽã«æžãããšããã®ã¯ã¡ãã£ãšæå€ã§ããã è©äŸ¡ããããšã³ãžãã¢ãšã¯ïŒ ...äœããåãããªããšã èšã£ãŠããããã«æããããããŸããã ç§ãããæããŸã ããã°ã©ãã³ã°ã®äžçã«ã¯ããŸãã¯åãããã«ãªãããšã倧äºããšããæ Œèšããããããã§ãããåœç¶ãã åãããã«ãªã£ãã ãã§ã¯ããã ãã¡ããã¡ããããã®ãåºæ¥äžãã£ãŠããã ãã§ãã èªåã®ã³ãŒããå
茩ãäžåžã«è©äŸ¡ãããããã«ã¯ããŸããã®ã³ãŒããèªã¿ããããã®ã§ãªããã°ãããŸãããããã¯æè¡åãšã¯ãŸãå¥ã®ãšããã«ãããŸãããäŸãããªãéšå±ã®æŽçæŽé ããã¡ããšã§ãããããšãã£ããšããã§ããããã ãã®ããã«ããããããšã³ãžãã¢ãšããŠåãçããããããããããšã³ãžãã¢ã«ãªãããã«ã¯ããã æè¡ãããã ãã§ãªãããããã©ãå®éã®æ¥åã§çãããããšãããšãããŸã§æ±ããããŠããã®ã ãšæããŸãã ã³ãŒãã®ç¶ºéºãªæžãæ¹ ã éçºãžã®å¿æ§ã ãªã©...åºæ¬çãªããã°ã©ãã³ã°ãèŠãã人ãã¡ãããããã£ãããŠããŠãç¥ãããšãåºæ¥ãæ¬ *1 ã2åã玹ä»ããŸãã ãªãŒããã«ã³ãŒã âããè¯ãã³ãŒããæžãããã®ã·ã³ãã«ã§å®è·µçãªãã¯ãã㯠ãªãŒããã«ã³ãŒã âããè¯ãã³ãŒããæžãããã®ã·ã³ãã«ã§å®è·µçãªãã¯ãã㯠(Theory in practice) äœè
: Dustin Boswell , Trevor Foucher çºå£²æ¥: 2012/06/23 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ãšã³ãžãã¢ãšããŠå°±è·ãããšãåœç¶ãªããä»äºãšããŠã®ããã°ã©ãã³ã°æè¡ãå¿
èŠã§ãã³ãŒããæžãããšãå€ããšæããŸãã 倧åŠã§ã¯ãèªåãã³ãŒããæžããŠãããããèªãã®ã¯ããããèªåãšææãããã ã£ããããããŸãããããããä»äºã§ã¯äžã€ã®ã³ãŒããå€ãã®ä»äºä»²éã§ç·šéããã®ã§ãåœç¶åãããããã¯å€§äºã«ãªã£ãŠããŸãã åããããã倿°åã®æžãæ¹ãåãããããã³ã¡ã³ãã®æžãæ¹ãåãããããããžãã¯ã®çµã¿ç«ãŠæ¹ãªã©...ããã©ã³ã® ããã°ã©ã ã§ãæå€ãšã§ããŠããªããåããããããã®ããã®æè¡ããŸãšãŸã£ãŠããæ¬ã§ãã ããã°ã©ã ãç¥ãã¹ã97ã®ããš ããã°ã©ããç¥ãã¹ã97ã®ããš çºå£²æ¥: 2010/12/18 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ æ¢ã«æ²¢å±±ã®ããã°ã§ãåå¿è
åãã®å¿
èªæžããšããŠç޹ä»ãããŠããã®ã§ãããèªãã ããšã®ãã人ãããã®ã§ã¯ãªãã§ããããã å®ã«73人ãã® ããã°ã©ã ã«ãã97æ¬ã®ãšãã»ã€(æ¥æ¬èªçã«ã¯æŽã«æ¥æ¬äºº8人ã«ãã10æ¬)ããŸãšããããŠããŸããã æµ®åå°æ°ç¹æ° ã¯å®æ°ã§ã¯ãªããã®ãããªæ°åŠã«è¿ã話ãããã颿°ã®ããµã€ãºããå°ããããããªã©ã®å®éã®ããã°ã©ãã³ã°ã«ã圹ç«ã€å
å®¹ãæŽã«ã¯ãããŒãã¯ãŒã¯ã¯å ±ãããªãããªã©ãšãã£ãåãæ¹ã«é¢ãã話ãŸã§ã å
šãŠãå®è·µããããšããã®ã¯ç¡çããã(ãšãããççŸãã話ãããã€ããã)ã®ã§ãããããããã人ãã¡ã¯ããããããšãæèããŠãããã ãªããšããããšãèŠããã ãã§ããããšæããŸãã ãããŸãããšã³ãžãã¢ãããªããŠãèªãã§ã»ãããæ°åèã®å·»ã æåŸã«ããªã¹ã¹ã¡ã®æ¬ãããäžåã ãã玹ä»ããŸãã ã§ãããã¡ãã¯ãå¶æ¥è·åãã®å
容ãå€ãå«ãŸããŠããããããšã³ãžãã¢ã®èã®å·»ããšã¯èšããŸããã ããã§ãä»ããã®ã¿ã€ãã³ã°ã§ãªãã¹ãå€ãã®ãæ°å0幎ç®ãã«èªãã§ããã ãããã ãæ°åã®èã®å·»ã ã§ãïŒ å
¥ç€Ÿ1幎ç®ã®æç§æž å
¥ç€Ÿ1幎ç®ã®æç§æž äœè
: å²©ç¬ å€§èŒ çºå£²æ¥: 2011/05/20 ã¡ãã£ã¢: åè¡æ¬ïŒãœããã«ããŒïŒ ãªã¹ã¹ã¡ããšããå²ã«ããã®æ¬ã«æžããŠããããšèªäœã¯ãä»äºã¯çµ¶å¯Ÿãããããããšããæ©ãåºãããšãæèãããããšããä»äºã«å¯ŸããèŠæ¹ãå€ãããããšããå²ãšåœããåã«æãããããšã§ãã ã§ããããããªåœããåãå
šéšã§50åãå
¥ç€Ÿããã°ããã®ããæ°ã«æºã¡ãŠããæã§ããã°ãšãããããã°ãããããšæ°å€ãã®ãåœããåãã«åãçµãããšãå¿ããŠããŸããããããŸããã ãããªæã«ããã®æ¬ã«ä¹ã£ãŠããããšãæãåºããŠèªåã®ããæ¹ãèŠã€ãçŽããããããŠãŸãå
¥ç€Ÿãããšãã®ããæ°ã埩掻ãããããããªèªã¿æ¹ãã§ããæ¬ã ãšå人çã«èããŠããŸããã ãããããå
¥ç€Ÿããåã®ä»ã«èªãã§ãããŠã»ããã®ã§ãã ãŸãã50åã®äžã«ã¯ã宎äŒèžãæ»ã¬æ°ã§ããããšããåæãšã¯ä»ãåããªããšãå人çã«ã©ãã ãããšæããã®ãããã®ã§ãã... ãããã« ç§ãå
¥ç€ŸããŠããä»ãŸã§ã«èªãã æ¬ã®äžã§ããããã¯çµ¶å¯Ÿã«åœ¹ã«ç«ã€ïŒããšæãã5+1åãã玹ä»ããŸããã ãã¡ãããèªãã§ãªããšãããªãããšããããã§ã¯ãããŸããããããã®æ¬ãå
šéšèªãã§ãæžããŠããå
容ãå
šéšå®è·µããããªããŠç¡çã ãšæããŸãã ã§ããã ãèªãã ããšãèªäœã¯çµ¶å¯Ÿã«ç¡é§ã«ãªãããšã¯ãªã ãšæãã®ã§ãã é¢çœããã ãšæã£ãæ¬ãäžåæµãèªã¿ããŠã¿ãŠããããªãèªåã«ãã§ãããã ãšæã£ãäžã€ããæ©äŒããã£ãããã£ã¬ã³ãžããŠã¿ãããšæãã ãã§ããããšæããŸãããŠãããç§ããããªæãã§ãã ç§ã®ç޹ä»ããæ¬ããæ°å0幎ç®ã®çããã®å¿ã®çé
ã«ã§ãæ®ã£ãŠãããã°å¹žãã§ãã *1 : éã«ãããã°ã©ãã³ã°æªçµéšã®æ¹ã«ã¯é£ããå
容ã ãšæããŸã...
ããã«ã¡ã¯ããšã³ãžãã¢ã®mickey-STRANGEã§ãã ä»åã¯ããã©ããããã«ããããã©ããããã®ããã® ã¹ãã ã¢ããªéçº ã«ã€ããŠã話ããããšæããŸãã ãšã¯ããããã®ããã°ã®å
容ã§ã¯ ã¹ãã ã¢ããªã¯äœããŸããã ã¿ã€ãã«è©æ¬ºããããã§ãããåã¯ã€ããŠããŸããã®ã§ãããããèªèã§ã楜ãã¿ããã ããŸããšå¹žãã§ãã æ§æ GitHub Pages Web Storage IndexedDB 1.DBã«æ¥ç¶ãã 2.ãªããžã§ã¯ãã¹ãã¢ã«ã¢ã¯ã»ã¹ãã 3.IndexedDBã®æ³šæç¹ ãŸãšã æ§æ å
ã«æžããŸããéãçè
ã¯éåžžã«ããã©ããããã§ããéçºç°å¢ã»å®è¡ç°å¢ã®æŽåãšãã£ããšããã«æéããããããããŸããã ä»å䜿ãã®ã¯ GitHub ã®ã¿ã§ãã GitHub ã®ã¿ã§ç䌌Webã¢ããªãå®çŸããŸãã ã§ã¯ GitHub ã®ã¿ã§ç䌌Webã¢ããªãã©ãäœããèããŠãããŸãããã Webã¢ããªãšãããšå€§éæã«èããŠ3ã€ã倧äºãªèŠçŽ ããããŸãã ãµãŒããã®ãã®ïŒ apache ã tomcat ãªã©ïŒ ããã°ã©ã å®è¡ç°å¢ïŒ php ã Java ãªã©ïŒ èšæ¶é åïŒpostgresã Oracle ãªã©ïŒ ãããã«å¯Ÿå¿ãããŠèããŠãããŸãã ãŸããµãŒãã«ã¯ GitHub Pages ã䜿çšããŸãã GitHub Pages㯠GitHub ã®ãµãŒãã¹ã§ãããéçããŒãžã ãã¹ãã£ã³ã° ããŠããããã®ã§ãç°¡åãªWebãµã€ããå
¬éããããšãåºæ¥ãŸãã ãããŠå
¬éããéçWebãµã€ãïŒHTMLïŒã« javascript ãæžããŠãããŸããã€ãŸãå®è¡ç°å¢ã¯ ãã©ãŠã¶ ã§ãã æåŸã«èšæ¶é åã§ãããã¢ã¯ã»ã¹ããå端æ«ã«å¿
èŠãªæ
å ±ãèšæ¶ãããŸãã javascript ã«ããæ°žç¶ã®èšæ¶é åãšããŠã Web Storage ã IndexedDB ãšãããã®ããããŸãã ãããã䜿çšã㊠ã¹ãã ã§ãå®è¡å¯èœãªããã°ã©ã ãäœæããããšãå¯èœã§ããã§ã¯åèŠçŽ ã«ã€ããŠèŠãŠãããŸãããã GitHub Pages ãŸããµãŒãã®åœ¹å²ãæ
ã GitHub Pagesã§ãã äžèšã®éãéçããŒãžã® ãã¹ãã£ã³ã° ãµãŒãã¹ã§ããããããç°¡åã«èšããšã GitHub ã«HTMLãã¡ã€ã«ãpushããã°Webãµã€ããšããŠå
¬éããŠãããããšããèªèã§ãããšæããŸãã ãããã GitHub Pagesã®äœ¿ããããã説æããããŸãããšãã£ãŠã倧局ãªãã®ã§ã¯ãªãã2ã¹ãããã§å®äºã§ãã 1.ãŸãHTMLãã¡ã€ã«ãpushããŸã ããã¯è©³ãã説æã¯çããŸããæ¹æ³ã¯åããŸããã®ã§èªåã® ãªããžã㪠ã«HTMLãã¡ã€ã«ãpushããŠãã ããã ããã©ããããã®æèŠãšããŠãŸããŠã¯ GitHub Desktopãä»ååããŠäœ¿ããŸããããäœãèããªããŠããæãããšãŠãããã£ãã§ãã GitHub Desktop | Simple collaboration from your desktop äŸãšããŠHello,World!çãªHTMLãäœæããŸããã 2.pushãã ãªããžã㪠ãå
¬éããèšå®ãããŸã ãªããžã㪠ç»é¢ã®äžéšã«ãããSettingsããªã³ã¯ãã¯ãªãã¯ã⊠GitHub Pagesã«ããŽãªå
ã®Sourceèšå®ããmaster branchãã«å€æŽããŠé£ã®ãSaveããã¯ãªãã¯ã 以äžã§ãïŒ ããã§ GitHub Pagesã®èšå®ãå®äºããŸãããpushãããã¡ã€ã«ã«ã¢ã¯ã»ã¹ããŠã¿ãŸãããã 衚瀺ãããŠãããªã³ã¯ãã¯ãªãã¯ãããšâŠ https://mickeystrange.github.io/tools/ Hello,GitHubPages!ã衚瀺ãããã°OKã§ãã çºè¡ãããURL㯠https://[ãŠãŒã¶å].github.io/[ãªããžããªå]/ãã¡ã€ã«å ãªã®ã§ã https://mickeystrange.github.io/tools/index.html ã«ã¢ã¯ã»ã¹ããŠãåããã®ã衚瀺ãããŸãã ïŒãããããã¡ã€ã«åãçç¥ããå Žåã«index.htmlãèªåçã«è¡šç€ºããŠãããŠããã®ã§ã¯ãªãããšãïŒ HTMLãå
¬éããèšå®ãåºæ¥ãŸããã®ã§ãããšã¯ javascript ãäœã£ãŠããã ãã§ãã ããã§ GitHub Pagesã®èª¬æã¯çµããã§ããå®è¡ç°å¢ã®ãã©ãŠã¶ã¯èšãããããªãšããããšã§èšæ¶é åã®1ã€ç®ã Web Storage ã®èª¬æã«ç§»ããŸãã Web Storage Web Storage ã¯ãã©ãŠã¶ã®èšæ¶é åã«Key- Value Storeã§å€ãä¿æã§ããä»çµã¿ã§ãã Web Storage API - Web API | MDN 䜿ãããã¯ãšãŠãç°¡åã§ãæºåãäžèŠã§ãã ããã§ããå€ã®æ ŒçŽãšåãåºããåºæ¥ãŠããŸãããããã1è¡ã ãã§ãã ããèŠããŸãŸã§ããäžå¿ã説æããããŸããšã 3è¡ç®ã® localStorage.setItem( 'key' , value); ã®éšåã§ 'key' ãšããããŒã§å€æ° value ã®å€ãæ ŒçŽããŠããŸãã ãŸãã 5è¡ç®ã® var item = localStorage.getItem( 'key' ); ã®éšåã§ 'key' ãšããããŒã§æ ŒçŽãããŠããå€ã倿° item ã«åãåºããŠããŸãã localStorage ãšããã®ã¯ Web Storage ã®çš®é¡ã®1ã€ã§ãèšæ¶é åãä¿æãããæéãæ°žç¶ã®ãã®ã§ãã ãã1ã€ã®çš®é¡ãšã㊠sessionStorage ãšãããã®ããããŸããããã¡ãã¯ãã©ãŠã¶ãéãããŸã§ã®éã®ã¿æå¹ãªãã®ã«ãªããŸãã ãã® Web Storage ã䜿çšããŠãããŒãžãžã®ã¢ã¯ã»ã¹æ°ãã«ãŠã³ãããç°¡åãªããã°ã©ã ãäœæããããŸããã LocalStorage 静的リソースだけでアプリケーションを作るための記憶領域テスト ããŒãžã®å衚瀺ããã©ãŠã¶ã®åèµ·åãªã©ãããŠéãã§ããã ããŸããšãèšæ¶é åããããã«æã£ãŠããããšã確èªåºæ¥ããšæããŸãã éçºè
ããŒã«ãªã©ã§èŠãããšãåºæ¥ãŸãããç¹å¥é ããããªãã®ã§ããããŸããã®ã§ã³ãŒãã¯ä»¥äžã®éãã§ãã tools/storage_test.html at master · mickeySTRANGE/tools · GitHub ç°¡åãªå€ã®ä¿æã ãã§ããã° Web Storage ãååãªæ©èœãæã£ãŠããããšãã説æããããŸããããç¶ããŠãã£ãšåŒ·åãªèšæ¶é åãšããããŸããŠIndexedDBã®èª¬æã«ç§»ããŸãã IndexedDB IndexedDBã¯ãã©ãŠã¶ã®èšæ¶é åã«ãªããžã§ã¯ããä¿æããä»çµã¿ã§ãã Web Storage ãšæ¯ã¹ãп倧容éãå€ããKVSã§ã¯ãªã JSON ãä¿åã§ãããæ€çŽ¢ã«åŒ·ãããªã©ã®ç¹åŸŽãããã NoSQLããŒã¿ããŒã¹ ã§ãã ããããIndexedDBã®äœ¿ç𿹿³ã«ã€ããŠã®èª¬æãããããŸããã Web Storage ã®åŸã§èŠããšãšãŠãè€éã§ãã ã€ã³ã¹ããŒã«ãå€éšã©ã€ãã©ãªã¯äžèŠïŒãã©ãŠã¶ã®æ©èœãªã®ã§åœããåïŒã§ãããæé ãå€ãã§ãã 1.DBã«æ¥ç¶ãã IndexedDBã¯åºæ¬çã«ãªã¯ ãšã¹ ããšããã®ãªã¯ ãšã¹ ãã®çµæã«ãã£ãŠå®è¡ãããéšåãæžããŠãããŸãã ä»åã®äŸã§ããšã3è¡ç®ã® var openRequest = indexedDB.open( "sampleDatabase" , version); ãDBæ¥ç¶ã®ãªã¯ ãšã¹ ãã§ã4-10è¡ç®ã® // æ¥ç¶ã«æåããã°ååŠçãå®è¡ openRequest.onsuccess = function ( event ) { db = event .target.result; db.onerror = function ( event ) { alert ( "Database error: " + event .target.errorCode); } ; } ; ãæ¥ç¶æåæã«å®è¡ããåŠçããšãã£ãå
·åã§ãããµã³ãã«ã¯é¢æ°ã®å€ã®å€æ°ã«DBã® ã€ã³ã¹ã¿ã³ã¹ ãä¿åããŠããŸãã 11-15è¡ç®ã® // DBå®çŸ©ãæŽæ° openRequest.onupgradeneeded = function ( event ) { db = event .target.result; db.createObjectStore( 'sampleObject' , { keyPath: 'key' } ); } ; ã¯ãä¿åãããªããžã§ã¯ãã®å®çŸ©ãè¡ã£ãŠããŸãã ã¢ã¯ã»ã¹ããæã®ãªããžã§ã¯ãã¹ãã¢ã®ååã第äžåŒæ°ã«ããªããžã§ã¯ãã®å®çŸ©ã第äºåŒæ°ã«æã£ãŠããŸãã ãµã³ãã«ã¯ 'sampleObject' ãšããååã®ãªããžã§ã¯ãã¹ãã¢ã§ 'key' ãããŒã«å®çŸ©ããŠããŸãã ãã® onupgradeneeded ãšãããã®ã¯ãDBã®ããŒãžã§ã³ãäžãã£ãæã«å®è¡ããããã®ã§ãã 3è¡ç®ã® open() ã®ç¬¬äºåŒæ°ã« version ããããŸãããããã¯IndexedDBã®ããŒãžã§ã³ã§ã¯ãªããèªåãäœãDBã®ããŒãžã§ã³ã§ãã ããŒãžã§ã³1ãšããŠãã®ãµã³ãã«ã®éããªããžã§ã¯ãã¹ãã¢ãå®çŸ©ãã倿Žãå¿
èŠã«ãªã£ãæã«ããŒãžã§ã³2ãšããŠæ¥ç¶ãã onupgradeneeded ã®äžã§æ°ãããªããžã§ã¯ãã¹ãã¢ã远å ãããããªããžã§ã¯ãã¹ãã¢å®çŸ©å€æŽãè¡ã£ããããããšãåºæ¥ãŸãã 2.ãªããžã§ã¯ãã¹ãã¢ã«ã¢ã¯ã»ã¹ãã DBã«æ¥ç¶åºæ¥ãã°æ¬¡ã¯ããŒã¿ãžã®ã¢ã¯ã»ã¹ã§ããããŒã¿ã®æ ŒçŽãšååŸãèŠãŠã¿ãŸãããã setValueã§ã¯DBæ¥ç¶ã®ãµã³ãã«ã§äœã£ãsampleObjectã«1ã€ã®ãªããžã§ã¯ãã远å ããŠããŸãã key㯠'sample' ã value ã« 'hoge' ãšããå€ãæã£ãŠããŸããkeyã¯å¿
é ãã€éè€äžå¯ã®å¶çŽããããŸãããä»ã®èŠçŽ ã¯äœãæã£ãŠããŠãæ§ããŸããã getValueã§ã¯sampleObjectãã 'sample' ãšããkeyPathïŒãµã³ãã«ã§ã¯ 'key' ïŒãæã€å€ãæ€çŽ¢ããŠããŸãã IndexedDBã®èšæ¶é åã¯å
šãŠæ°žç¶ãªã®ã§ããã®æ§æã®ã¿ã§ãã¢ããªãäœæããããšãå¯èœã§ãã ãããã®æ§æã䜿çšãããŸãããŒãžãžã®ã¢ã¯ã»ã¹æ°ãã«ãŠã³ãããç°¡åãªããã°ã©ã ãäœæããããŸããã Indexed Database 静的リソースだけでアプリケーションを作るための記憶領域テスト tools/indexed_database_test.html at master · mickeySTRANGE/tools · GitHub ããŒãžã®ãªããŒãçãããŠããã ããŸããšã«ãŠã³ããæ£åžžã«åºæ¥ãŠããããšãåãããŸãã 3.IndexedDBã®æ³šæç¹ ç°¡åãªãµã³ãã«ããèŠãããããŸãããã indexed_database_test.html ã®ã³ãŒããèŠãŠããã ããŸããšã Web Storage ã®æãšã¯å€§ããæ§æãéãããšãåãã£ãŠããã ããããšæããŸãã ããã§ãããååŸãã颿°ããšãæ ŒçŽãã颿°ãã§åããŠåŠçããããã«æžãããšãåºæ¥ãªãã£ãã®ã§ãã çç±ããããŸããŠããªã¯ ãšã¹ ããæžãããã®æåæå€±ææã«å®è¡ããåŠçãæžããšèª¬æããããŸããã å®ã¯ãããæ²è
ã§ããªã¯ ãšã¹ ããå®äºãããã©ãããã€ãã³ãå€ããèŠãããšãåºæ¥ãªãã®ã§ãã ãååŸããâ1å¢ããâæ ŒçŽããããšããæµããåãåããããšãåºæ¥ãã ååŸãããªã¯ ãšã¹ ãã®onsuccessã€ãã³ãã§ã1å¢ãããŠæ ŒçŽããããšããåŠçã®æµãã«ãªããŸãã æŽã«èšããšååŸãããªã¯ ãšã¹ ãããæ¥ç¶ãããªã¯ ãšã¹ ãã®onsuccessã€ãã³ãå
ã§å®è¡ããŠããŸãã IndexedDB㯠Web Storage ããã匷åãªããŒã¿ããŒã¹ã䜿çšã§ãã代ããã«ãåŠçã®æµããäœããšããã§éåžžã«ããããããªã£ãŠããŸãããšãããã¡ãªããããããšèšããŸãã ãŸãšã èªåã®æžããã³ãŒããç°¡åã« ã¹ãã ã§åããæ¹æ³ãã玹ä»ããããŸããããããã§ããã§ããããã äžçªæè»œãªã®ã¯ãã¯ã Web Storage ã䜿çšããæ¹æ³ã§ãã å€åãããäžçªæ©ããšæããŸãã ããã« JQuery ãBootstrapãªã©ã®éšåãçµã¿åãããããšã§åå㪠ã¹ãã ã¢ããªã®ãããªãã®ãäœãããšæããŸãã ä»åã®èšäºãšã¯å¥ã«æ¥åãå¹çåããJSãªã©ãè¶£å³ã§äœã£ãŠããããããããããæè¿ã§JSé¢ã§æé·ããããšãæããŠããŸãã èªåã§äœ¿ããããŒã«ããã£ãšpushããŠJSã©ã€ããæ¥œããã§ããããã§ãã
ã¯ããã« éçºãšã³ãžãã¢ã®amdaba_skïŒ ãã³ã ãŒã æªå®ïŒã§ããååã¯ã ãœãããŠã§ã¢ãã¹ãã«ã€ããŠç°¡åã«ãŸãšããŠã¿ã ããšããèšäºãæžããŸãããããã®æµãã§ä»åã¯ã»ãã¥ãªãã£ãã¹ãããŒã«ãOWASP ZAPãã«ã€ããŠå°ã調ã¹ãŠã¿ãŸããã â»ä»¥äžã¯å人çã«ãããã§èª¿ã¹ãŠã¿ãæ
å ±ããŸãšãããã®ã§ãããå®éã«éçºéçšã§éçšãããªã©ãããã®ã§ã¯ãããŸããããŸãæ¥æ¬èªãµã€ããäžå¿ã«èª¿ã¹ãŠãããããæ©èœçã®æ
å ±ã¯å€ãå¯èœæ§ããããŸãã ã»ãã¥ãªãã£ãã¹ã æšä»ã¯å人æ
å ±ã®æŒããã顧客æ
å ±æµåºãªã©ã®ãã¥ãŒã¹ãããè³ã«ããŸããæãã§ããâŠã ã©ã¯ ã¹ã§ãå人æ
å ±ã®æŒããã顧客æ
å ±æµåºãªã©ã¯æ·±å»ãªåé¡ãšããŠãšãããŠããŸã㊠1 ããã®çºçãæªç¶ã«é²ãããã«éçºè
ã«ã¯å¹Ž1床ã»ãã¥ãªãã£åŠç¿ãšä¿®äºãã¹ãã課ãããŠãããããŠããŸãã ãŸããªãªãŒã¹åã«ã¯ãšããWebã¢ããªã±ãŒã·ã§ã³æ€æ»ããŒã«ã䜿ã£ã èåŒ±æ§ æ€æ»ã宿œããæ€åºããã èåŒ±æ§ ãä¿®æ£ããããã«ããŠããŸãã ããããªããä»ã®ããŒã«ã«ããæ€æ»ã¯ãã¯ãããèŠãŠããã ãã®ææ³ã§ãã èšå®ããããããã ãªãªãŒã¹åã«ä¿®æ£ç®æå
šäœã«å¯ŸããŠè¡ãããããããããã£ããšãã«ä¿®æ£ãå€§å€ ããŒã«ã®çšŒåãµãŒããŒãããŒã éã§å
±æãªãããæè»ã«ã¯äœ¿çšã§ããªã ãšãã£ãäžäŸ¿ããæ±ããŠããããã«æããŸãã OWASP ZAP ããã§äžèšã®äžäŸ¿ãã«å¯Ÿãã ãã£ãšç°¡åãªèšå®ã§èªåãã§ãã¯ãããŠãããããŒã«ã¯ãªãã ãã£ãšããŸãã«ãäŸãã° åäœãã¹ã ã®äžç°ãšããŠãã§ãã¯ã§ããªãã ãã£ãšæè»ã«ãããŒã ããšã«å°çšã®ç°å¢ãçšæã§ããªãã ãšãã£ãèŠæãæºããããŒã«ãšããŠç§ãç®ãä»ããã®ããOWASP ZAPãã§ããã OWASPãšã¯ OWASP ZAPã§ã¯ããã2016幎ã®ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã»ãã¥ãªã㣠ã§ã¯ ãŠã§ãã¢ããªã±ãŒã·ã§ã³ ãäœæããéçºè
ãïŒ ãŠã§ãã¢ããªã±ãŒã·ã§ã³ ã«é¢ããæææ±ºå®ãè¡ãæ¹ã
ã«å¯ŸãïŒã»ãã¥ãªãã£ã«é¢ããååãªæ
å ±ãè¡ãæž¡ãããããšãç®çãšã掻åãããŠããã®ãOWASPã§ããOWASPã¯ãThe Open Web Application Security Projectãã®ç¥ç§°ã§ïŒã°ããŒãã«ã«ãã£ãã¿ãŒïŒ æ¯éš ïŒãå±éãããªãŒãã³ã³ãã¥ããã£ã§ãã ãšèª¬æãããŠããŸããWebã¢ããªã±ãŒã·ã§ã³ã»ãã¥ãªãã£ã®åèå£äœãšãã£ããšããã§ããããã OWASP ZAPã®æŠèŠ OWASPã«ã¯Webã¢ããªã±ãŒã·ã§ã³ã»ãã¥ãªãã£ã®åèã«é¢ããŠå€§å°ããŸããŸãªãããžã§ã¯ããå±éããŠããŸãã OWASP Zed Attack Proxy ïŒOWASP ZAPâ ïŒã¯ãã®äžã§ãæéèŠãšããŠäœçœ®ã¥ãããããããžã§ã¯ãã®äžã€ã§ããããã®ææç©ãšããŠã®ããŒã«ã§ãã IPA ãã¯ãã«ã«ãŠã©ããã ãŠã§ããµã€ãã«ãããèåŒ±æ§æ€æ»ææ³ã®çŽ¹ä» ãã§ãåãäžããããŠã䜿ãããããæ€ç¥å¶åºŠãé«ããå¹çæ§ãéåžžã«é«ãåçŽè
åãã®ããŒã«ãšããè©äŸ¡ãåããŠããŸãããŸããããããããšã«ç¡æã§äœ¿ãã ãªãŒãã³ãœãŒã¹ ã® ãŠã§ãã¢ããªã±ãŒã·ã§ã³ èåŒ±æ§ èšºæããŒã«ã§ã Githubäž ã« ãœãŒã¹ã³ãŒã ãå
¬éãããŠããŸãã çšéãšããŠã¯ãéçºè
ãéçºæã«ç°¡æç㪠ãŠã§ãã¢ããªã±ãŒã·ã§ã³ èåŒ±æ§ èšºæã宿œãããããšãç¹ã«æèããŠäœãããŠãããã»ãã¥ãªãã£ã®å°ä»»ã§ã¯ãªãéçºè
ã§ãç°¡åã«å©çšã§ããããã«ãªã£ãŠããŸãã ãªããOWASP ZAPãæ€æ»å¯èœãªäž»ãª èåŒ±æ§ ã¯ä»¥äžã®ãšããã§ãã ã¯ãã¹ãµã€ãã¹ã¯ãªããã£ã³ã° SQLã€ã³ãžã§ã¯ã·ã§ã³ ãã¹ãã©ããŒãµã« ãªãŒãã³ãªãã€ã¬ã¯ã¿ ãããã€ã³ãžã§ã¯ã·ã§ã³ ãªãŒãã³ã³ããªãŒãæ©èœã®æå¹ ã¢ããªã±ãŒã·ã§ã³ãšã©ãŒã®é瀺 X-Content-Type-Optionsãããã®æªèšå® X-Frame-Optionsãããã®æªèšå® HttpOnly屿§ãä»äžãããŠããªã Cookie ã®å©çšãç OWASP ZAPã®æ©èœ 衚1 ã¯OWASP ZAPã®äž»èŠãªæ©èœããŸãšãããã®ã§ãã 衚1 ãOWASP ZAPã®äž»èŠæ©èœïŒ OWASP ZAPã§ã¯ããã2016幎ã®ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã»ãã¥ãªã㣠ããåŒçšïŒ é
çª æ©èœå æŠèŠ 1 ã¹ãã€ããŒæ©èœ æå®ã®URLãèµ·ç¹ãšãïŒãªãŒãã¯ããŒãªã³ã°ïŒèªåã§ èåŒ±æ§ èšºæå¯Ÿè±¡ã®ãªã³ã¯ã蟿ãïŒååšããURLãæŽãåºããïŒãè¡ããŸãã 2 åçã¹ãã£ã³æ©èœ ã¯ããŒãªã³ã°ããŠæããã«ãªã£ãä»»æã®URLã«å¯ŸãïŒããŒã«ãæºåããŠãã èåŒ±æ§ èšºæçšã®æ€æ»æååãçšããŠèªåã§ èåŒ±æ§ èšºæãè¡ããŸãã 3 ããŒã«ã«ãããã·æ©èœ ããŒã«ã«ãããã·ãšããŠOWASP ZAPãåäœããïŒæåã§ èåŒ±æ§ èšºæãè¡ããŸããããç人åãã§ãã 4 ãã£ã¬ã¯ã ãªæ¢æ»æ©èœ æå®ã®URLé
äžã«äžèŠãª ãã£ã¬ã¯ã ãªãååšããªããã確èªããŸãã 5 ã¢ã©ãŒãæ©èœ èåŒ±æ§ èšºæçµæã«é¢ããç°¡æã®å ±åæžãäœæããŸãã 6 ZAP Scriptæ©èœ OWASP ZAPã®æ©èœãæ¡åŒµãïŒOWASP ZAPãããèªå奜ã¿ã«ã«ã¹ã¿ãã€ãºã§ããŸãã Javascript ïŒ Python ïŒ Ruby ãªã©ã®ããŸããŸãªèšèªã«å¯Ÿå¿ããŠããŸããæ
å ±æºãšããŠã¯ïŒ OWASP ZAP Scripts ãšããGroupããããŸãã OWASP ZAP㯠Java ã§äœãããŠããã ã¯ãã¹ãã©ãããã©ãŒã ã§åäœããŸãããŸã windows ç°å¢ã§ã¯ç¹ã«ãããããã®ã§ãããå©çšããããããã«ã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ãŒã¹ãåããŠããŸãã 詳ããæé ã¯ãã®ä»ã®èšäºãå
¬åŒã®ããã¥ã¡ã³ããåç
§ããŠããã ããããšæããŸãããé
çª1ïŒã¹ãã€ããŒïŒã®å®è¡åŸã«é
çª2ïŒåçã¹ãã£ã³ïŒãå®è¡ããèªå èåŒ±æ§ èšºæãè¡ãã ããªã æ€æ»å¯Ÿè±¡URLã®å
¥å å®è¡ãã¿ã³ã¯ãªã㯠ãšããéåžžã«ç°¡æœãªæé ã§å®æœã§ããŸãã äžæ¹ã§RESTful㪠API ã«ããæäœãã§ããããã§ã curl ãªã©ã§ ã³ãã³ãã©ã€ã³ ãããªã¯ ãšã¹ ããæããã°äžã®æé ã ã¹ã¯ãªãã åã§ããŸããããã«ããŒã¢ã³ã¢ãŒãã§èµ·åããŠããã°ãJenkinsãªã©ã®CIããŒã«ãšé£æºããŠæåããæåŸãŸã§èªåã§å®æœããããšãã§ããŸãïŒe.g. JenkinsãšOWASP ZAPã§èªå蚺æ - Qiita ïŒã ãŸãJenkinsãšé£æºããäžã®äŸã§ã¯OWASP ZAPã® API ã ã¹ã¯ãªãã ã§çŽæ¥åŒã³åºããŠããŸããã å
¬åŒã® ZAP Jenkins plugin ãšãããã®ãããããã§ããã¡ããå©çšãããšããæãããã§ãããã ãã®ä»ãæåã® åäœãã¹ã 宿œæã«ããŒã«ã«ãããã·æ©èœã䜿çšããŠãã§ãã¯ãããšããããããèšå®ãããã£ãŠäœ¿ã£ãŠã¿ããšããäœ¿ãæ¹ã®å¹
ãåºããã§ãã ããã㫠以äžç°¡åãªãããOWASP ZAPãã«ã€ããŠèª¿ã¹ãããšããŸãšããŸããã èšå®ãç°¡åã粟床ããããèªååãå¯èœãšããšã£ãŠã䟿å©ããã§ãããã ãããŸã§ç°¡æãã§ãã¯ããŒã«ãšããããšã§ã éçºäžã¯ãOWASP ZAPãã§ç°¡ææ€æ» ãªãªãŒã¹åã¯ç²Ÿå¯ãã§ãã¯ãã§ããå¥ã®ããŒã«ã§æ¬æ€æ» ãšãã颚ãªäœ¿ãåãããããããããããªãããšä»ã®æ®µéã§ã¯æã£ãŠããŸãã åè OWASP Zed Attack Proxy Project IPAãã¯ãã«ã«ãŠã©ããããŠã§ããµã€ãã«ãããèåŒ±æ§æ€æ»ææ³ã®ç޹ä»ã OWASP ZAPã§ã¯ããã2016幎ã®ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã»ãã¥ãªã㣠JenkinsãšOWASP ZAPã§èªå蚺æ - Qiita zap plugin - Jenkins - Jenkin Wiki ãšã³ãžã㢠äžéæ¡çš ãµã€ã ã©ã¯ ã¹ã§ã¯ããšã³ãžãã¢ã»ãã¶ã€ããŒã® äžéæ¡çš ãç©æ¥µçã«è¡ã£ãŠãããŸãïŒ ãèå³ãããŸãããæ¯éã確èªããé¡ãããŸãã 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 æ¬ããã°ã§ã æå³ããªãåŠçãå®è¡ãããCSRFãšã¯ïŒæŠèŠãšå¯Ÿç ããã èŠæ³šæïŒæ°äººãšã³ãžãã¢ãçºçããã2倧èåŒ±æ§ ããšãã£ãèšäºãããããã«ãå人ã¬ãã«ã§ãé¢å¿ã®é«ã話é¡ã§ãã ↩