PFIãµãã¼ã¤ã³ã¿ã¼ã³ã«åå ãã¦ãã¾ãã
8/1ã9/30 ã®äºã¶æéã株式会社プリファードインフラストラクチャー(é称 PFI)ã§ã¤ã³ã¿ã¼ã³ã«åå ãã¦æ¥ã¾ããã
å ±åè¨äºãæ¸ããªãã¦ã¯â¦â¦ã¨èãã¦ããå
ã«å¤§åæéãçµã£ã¦ãã¾ã£ã¦ãããªææã«ãªã£ã¦ãã¾ãã¾ããã
æ¡ç¨ã¾ã§
å¤ä¼ã¿ç¹ã«äºå®ããªãã£ãã®ã§ãä½ãä»ã¾ã§ã¨ã¯éã£ããã¨ã«ææ¦ãããã¨æã£ã¦ããã¨ãããTwitterä¸ã§ id:pi8027 ãããè¨åãã¦ããã®ãè¦æãã¦ãé¢ç½ããã ã¨æã£ã¦å¿åããã®ã§ããã
å±¥æ´æ¸ãåããã®ãä¸ã
ã®ä¸è¦å´ã§ãããã°ã©ãã³ã°ã³ã³ãã¹ããªã©ãä½ãå®ç¸¾ããªãããéçºãããã®ããããªã«å¤§è¦æ¨¡ãªãã®ã¯ãªããç¹ã«è¦å´ããã®ããåè³æ´ãã®æ¬ã§ãä»æ¹ããªãã®ã§é«æ ¡æ代ã®æ¼åã§ã®åè³æ´ã¨TOEICã®ç¹æ°ãæ¸ãã¨äºãæ´æã«ãæç¾å®éé¿ã«åé¡ã解ãã¾ãã£ã¦ããåæ®ãHaskell ã´ã«ãã®ã©ã³ãã³ã°ã§4ä½ã ã£ãã®ã§ãã¡ããã¨æ¸ããå®ç¸¾ã¨ãã¦ã¯ãããããã
ããã¦ãã¨æã£ã¦å¿æåæ©ã®æ¬ã« Haskell ã¸ã®æãæ¸ãé£ãã¦ãéä¿¡ãä½ããééã£ã¦ããæ°ãããã
ãã®å¾ãæ¸é¡å¯©æ»ã¯å¥è·¡çã«ééãã¦ããã®ã§ãé¢æ¥ã¸ã
ã¡ãã£ã¨æ¸é¡ã§ Haskell æã強調ãããã¦å±
ãã®ã§ãå¿æåæ©ãçé¢ç®ã«çãããã¨ããâ¦â¦ããæ°ä»ãã¨ãä¸çªå¤§ããã®ã¯ Haskell ãéçºã§ä½¿ãããã¨ããHaskellã¯ä½¿ããªãã¨ããåºå®è¦³å¿µãæã¡æ®ºãã¦ããããããªã©ã¨å説ãã¦ããããä»ã®äººéã¨ã¯å¥ã®è¨èªã§ããã¨ããããã¨ã«ãªãã¾ãããã©ãã§ããï¼ãã¨åãããããã¨â¦â¦C++ã¯åºæ¥ã¾ããã Ruby ãªãåºæ¥ã¾ãâ¦â¦ãã¨èªåã®å¤±è¨ã«æ°ä»ãä½ã¨ãè»éä¿®æ£ãå³ããã¨ãããã ã£ã¦å¥½ããªãã ããâ¦â¦
ãã®å¾ãåé¡ã¸ãfmfmãè±æã·ã£ããã«ãâ¦â¦ã¨ãç´ ç´ã« Haskell ã§æ¸ãããã£ããåãã¦ããæ§ã«è¦ããâ¦â¦ããï¼ãã¹ãã±ã¼ã¹ãééãã¦ããªãï¼ï¼
ä½è£ããã£ãçãç¦ããçµæçã«ã¯è¿ãå¤ãééãã¦ããã¨äºãã·ã§ã¼ã¢ãã¤ãã°ã§ãä½ã¨ãæéå
ã«ä¿®æ£åºæ¥ããã®ã®ããã£ã¡ã¾ã£ããªãâ¦â¦ã¨ããæãã§ããã
ãã®å¾ããæ°å¦ç§ã«è¡ãããã¨äºããã¨ã§ããããããããããã®çºå±åé¡ãèãã¦ã¿ã¦ãã ãããã¨ãã«ã¼ãã®ææ°ãä½ä¸æã«å¢ãããã¨äºãæ¡ä»¶ã§ã®åºé¡ã飽ãè¿åèã§è§£ããªãã¦ãæ§ããªããã¨äºããã¨ã ã£ããã§ãããããã§ããã³ãã£ã¦ãã¾ããåãæ¢ãã漸åå¼ã§èãããã ãããªããã¨äºããã¨ã¯ãããããããã®æç¹ã§è§£ãã¦ããæ§ãªãã®ãªãã§ãããä½æ
ãä¸è¬é
ãåºããã¨èãã¦æ³¥æ²¼ã«åµãã¿ã¤ã ã¢ã¦ãã
ãã®åãããå¤åè½ã¡ã¦ãã ãããªãâ¦â¦ãªã©ã¨æãã¤ã¤å¸°éã«ã¤ããã®ã§ãããå¤ä¼ã¿ãªã«ãããâ¦â¦
â¦â¦ã¨æã£ã¦ãããã
ãã®åº¦ã¯ããé¢è«ã«æ¥ã¦ããã ããããã¨ããããã¾ããã
é¸èã®çµæããæ¡ç¨ãã¨æ±ºã¾ãã¾ããããããããé¡ããã¾ãã
ä½æ ãæ¡ç¨ï¼ï¼
å¥è¹ã¯éãªããã®ã ãªãâ¦â¦ã¨ãããã¯ãã£ã¨ Haskell æ ã§åæ ¼ãããã ï¼ã¨ååãã«æãããã¨ã«ãã¾ããã Haskellã°ãããï¼ï¼ï¼
ã¤ã³ã¿ã¼ã³åå
æåã®é±ã¯å¤§å¦ã®è¬ç¾©ããã£ããããåæ¥ã®é¡åãã¯ååä¸ã ãåå ãã¨äºãå½¢ã«ã
ä¼è°å®¤ã§èªå·±ç´¹ä»ãä»ã®ã¤ã³ã¿ã¼ã³åå è
㯠T京大å¦ãT島大å¦ã®ä¿®å£«èª²ç¨ã»å士課ç¨ã§ãããã¨ãæ©æ©æããã«ãªãã大å¦ä¸å¹´ã®èªåãåå ãã¦ãã¾ã£ã¦è¯ãã£ãã®ã ãããâ¦â¦æããã«å ´éãã ã©ããããâ¦â¦ãªã©ã¨æãæ¦ãã
ããããããã§å¼ãã¦ãã¾ã£ã¦ã¯æå³ããªãï¼ï¼ã¨ãHaskell ã使ã£ã¦ãã¾ãããã¡ã¿ãããããå®éã®éçºã«è§¦ãã¦ã¿ããããåæ£å¦çã¨èªç¶è¨èªå¦çã«èå³ãããã¾ãããHaskell 㯠unemployed *1 ãããªããç§ã¯æ¡ç¨ãããã I employed ã ï¼ï¼ï¼ãã¨è¯ãããããªããã¨ãåããæ£ããã
ãªãã¨ããã®å ´ãä¹ãåã£ãå¾ã¯ãç°å¢ã® setup ããã¦ããæ¼ããã«ãã£ã¦ããã¡ã³ã¿ã¼ã® id:tanakh ããã¨ã¤ã³ã¿ã¼ã³ã®èª²é¡ã«ã¤ãã¦æã¡åãããããã
èªç¶è¨èªå¦çã»åæ£å¦çãã¨äºããã¨ãèããã¨ãè¨å¤§ãªãã¼ã¿éããã£ã¦è§£æã®ãããããããã㪠Twitter ããã¼ãã«ä½ããµã¼ãã¹ãã¤ããããã¨äºããã¨ã«ãªãããã®å¾äºãä¸æ¥ç¨åº¦ã®è©±ãåãã®çµæãã樹形㪠tweet ã®èªåã¾ã¨ãçæãµã¼ãã¹ããã¤ããããã¨äºããã¨ã«æ±ºå®ã
ã¤ã³ã¿ã¼ã³åæçã®å¤§éãããã¤ãã£ãã¼é¢é£ã®ãµã¼ãã¹ãä½ããã¨ãã¦ããããã ã£ãã®ã§ãä»å¾ã®æ¹éã«ã¤ãã¦ã¡ã³ã¿ã¼ã®æ¹ã ã交ãã¦è©±ãåããçµæãå½é¢ã®éå㯠Twitter ã®ã¯ãã¼ã©ãä½æãã大éãã㯠in_reply_to ã§æ¥ç¶ãããã°ã©ããçæããæ¹æ³ã模索ãããã¨ã«ã
ãã¨ã®è³æã«æ¸ãã¾ããããä¸ã
沢山ã®ã¤ãã¼ã¨ãä¸æ°ã«åå¾ããã¨äºãã®ã¯å¤§å¤ã§ã大éã®ãã¼ã¿ãåæ
ãã¦åå¾ãã¦ããããåæã«å¦çããªãã¦ã¯ãããªãã®ã§ããªããªãè¯ãçµé¨ã«ãªãã¾ããã
Haskell ã¯ãã®è¾ºãã®ä¸¦è¡å¦çã®æ©æ§ãå
å®ãã¦ãã¦é常ã«æ¸ãæãã£ãã§ããé¨åçã« Ruby ã§æ¸ããã¦ããé¨åãããã®ã§ããã MessagePack-RPC ã使ããã¨ã§ç°¡åã« Haskell - Ruby éã§ãéä¿¡ãããã¨ãåºæ¥ã¦ã¨ã¦ã便å©ã§ãããMessagePack ++
PFIã»ããã¼
ã¤ã³ã¿ã¼ã³åå è ã¯ã©ããªè©±é¡ã§ãè¯ãã®ã§ã»ããã¼ã§çºè¡¨ããããã¨ã«ãªã£ã¦ãã¾ãã
è²ã è¿·ã£ãæãå¥ãå㯠"Metaprogramming in Haskell" ã¨äºãé¡ç®ã§çºè¡¨ãããã¨ã«ãã¾ãããä¸ããã®çºè¡¨è³æã
ã¹ã©ã¤ãä¸ã§ä½¿ãããä¾ã¯ GitHub ã«ããã¾ããã³ã³ãã¤ã«ã¿ã¤ã ã交é¿æ²ç¬¬äºçª éå½*2ããªã©æ¬æ°ãªè©¦ã¿ã沢山ï¼
ããããPFI ã§Haskell ã使ã£ã¦ããæ¹ã¯ tanakh ãã㨠nushio ãããããã ã£ãã®ã§ãããå°ãåºæ¬çãªèª¬æããã¦ããã§ãªãã¨ãããè¾ãã£ãããããã¾ããâ¦â¦ãåçã§ãã
ä¸é±éè¿ãé¢é£ããè«æãªã©ãèªã¿è½ã£ã¦ã¹ã©ã¤ããæ¸ãã¦ããã®ã§ä½æ¥ãæ»ã£ã¦ãã¾ãäºæ
ã«â¦â¦åãå
¥ãããã¾ãããâ¦â¦ã
å¾å
ã¯ãã¼ã©ã¯ã²ã¨ã¾ãå®æã¨äºããã¨ã§ãå¾åã¯èªåã¾ã¨ãçæãµã¼ãã¹ logtter ã®å¶ä½ã«ã
Haskell ã«ã¯ fgl ã¨äºãåªããã°ã©ãç¨ã©ã¤ãã©ãªããã£ã¦ã辺ãé£çµé¨ã®æ½åºã¯å²ã¨æ¥½ã«åºæ¥ã¾ããã
åé¡ã¯ãã©ããã£ã¦çºè¨å士ãç¹ãããã§ããªããªãé£ãããåèªæ½åºããMeCab ãªã©ã使ããããåèªè¾æ¸ãç¨æã㦠trie æ¨ã«çªã£è¾¼ã¿ãé£ç¶æ大ä¸è´é¨åãæ¢ãã®ãå¹çãè¯ãã£ãããã¦ããã®è¾ºãã¯è²ã ã¨ç¸è«ã«ä¹ã£ã¦ããã ãã¾ããã
ãã®è¾ºã®ãã¥ã¼ãªã¹ãã£ãã¯ã¹ã¯åç´ã§ãæã£ãããå¹æããã£ãããããã ãªãâ¦â¦ã¨æå¿ãããã¨é »ããã¾ã ã¾ã å ¨ç¶åæ©ã ãã§ããããããã£ãã¢ã«ã´ãªãºã ããã¼ã¿æ§é ããã£ã¨åå¼·ããã°â¦â¦ã¨ãtrie æ¨ãæ¬å½ã«éãã¦ã³ã£ãããã¾ããã
ã¨ããããçµç¤ã«å·®ãæãã£ãã¨ããã ã¯ãã¼ã© ãæ´èµ°ããæ§ã«ããã®åå 究æã¨è§£æ±ºã®æ¨¡ç´¢ã«ä¸é±éåã»ã©è²»ãã¦ãã¾ã£ã¦ãäºå®ãæ¼ãã¦ãã¾ããlogtter ã®æ¹ã«æ®ãã©æéãå²ããâ¦â¦
ã¨ããããããããªãã«ç¹ãã£ãã°ã©ããåããç¶æ ã¾ã§ãã£ã¦ãããHTMLåºåé¨ã大æ¥ãã§ä½æãã¦æçµçºè¡¨ã¨äºãéã³ã«ãªãã¾ããã
æçµçºè¡¨ & ç·æ¬
ãããããã¦ããå æçµçºè¡¨ãç·å¼µã®ä½ã RedBull ãä¸æ¬ãåãã§ãã¾ããæ¥é ã§ãæ大äºæ¬ãããã¾ã§ã ã£ãã®ã§ãããããã§åãä¸äººåããããã¾ããã
以ä¸ãæçµçºè¡¨è³æã
æçµçºè¡¨ã®æ¨¡æ§ã¯ PFI Intern 2010 Final Presentation 1 ã PFI Intern Final Presentation 2 ã«ããããã§ãã
è³æã§ãåä¸åå強調ãã¦ãã¾ãããä»åã®ã¤ã³ã¿ã¼ã³ãéãã¦ãHaskell ã¯å®ç¨è¨èªã§ãããã¨äºã仮説ã¯çå®ã§ãããã¨ãã確信ãæã¦ã¾ããããã®è¨¼æ ã«ãlogtterã® å®ã«95%㯠Haskell (æ®ã㯠Ruby) ã§æ¸ããã¦ãã¾ãããè¿ã
100%ã«ãªãäºå®ã§ãã
ä»å¾ãPFIã§ã¢ã«ãã¤ãããã¦é ãããã¨ã«ãªã£ãã®ã§ãlogtter ãã²ã¨ã¾ãå®æããã¦ãããã¤ããã¨ããã¾ã§è¡ãäºå®ã§ããTwitter ã§ãæã£ã以ä¸ã®æ¹ã
ã« logtter ã«èå³ãæã£ã¦é ããããã§ã大å¤å¬ããéãã§ãã
ä»åã®ã¤ã³ã¿ã¼ã³ãéãã¦ãããã°ã©ãã¨ãã¦å¤§ããªæé·ããããã¨ãåºæ¥ãã¨æãã¾ããHaskell ã§ã®éçºãã¦ãã¦ãããã§ãããããã®ç¾å ´ã«è§¦ãã¦ããã°ã©ãã¨ãã¦ã®èãæ¹ãã½ããã¦ã§ã¢ã売ãã¨ãããã¨ãããäºã£ããã®ãå°ãã§ãå¦ã¶ãã¨ãåºæ¥ã¾ããã
ä»åã®ã¤ã³ã¿ã¼ã³ã§å¦ãã ããã²ã¨ã¤ã®ãã¨ã¯ãRedBull ã®å大ãã§ããåã¯ãçé ¸ã飲ãã¾ãããè¦æã¨ããã®ã§ã¯ãªãã飲ããªããã§ããå°ãããããããã§ããã RedBull ã«ã¯ã¯ãã大ããªæµææããã£ãã®ã§ããã飲ãã§ããå ã«ãRedBull ã¯éããããã¯ç´ æ´ãã飲ã¿ç©ã§ãããã¨äºããã¨ã段ã ã¨è ã«è½ã¡ã¦æ¥ã¾ãããã¯ããã®å ã¯ä¸æ¥ä¸ç¼¶ç¨åº¦ã¨äºãå ¥éè ã§ããããå¾åã§ã¯ä¸æ¥ã«äºç¼¶é£²ãæ§ã«ãªããå¤ãæã§æ¼¸ãä¸æ¬é£²ãããã«ãªã£ã¦ãã¾ãããããã¯åã«ä»åã®ã¤ã³ã¿ã¼ã³ã®ãé°ã§ããããã¤ã³ã¿ã¼ã³ã«åå ããªããã°ãã¾ããã¤ã³ã¿ã¼ã³ã®è·å ´ãPFIã®æ§ãªå¸¸ã«å·èµåº«ã« RedBull ãäºåæ¬ä»¥ä¸å¸¸åããã¦ãããããªç°å¢ã§ãªããã°ãå㯠RedBull ã®ç´ æ´ããã«è§¦ãããã¨ããªãä¸çãçµãã¦ããã«éãããã¾ãããçé ¸ã飲ããªãã£ãåããããã¤é ã®åã«RedBullã®å³è¦ãããã£ãã㨠CTO ãã¨ã¡ããããã«äºãããã¾ã§ã«ãªããã¨ã¯ãªãã£ãã®ã§ã¯ãªãã§ãããããRedBull gokgok!
ãããªãããªã§ãæåã¯é·ãæãããã PFI ãµãã¼ã¤ã³ã¿ã¼ã³ã§ããããå®éã¯ãã£ã¨äºãéã§ã足ããªããããã§ãããåæã«ãããã ãä¸èº«ã®è©°ã¾ã£ãäºã¶æéã¯ãªããªãç¡ãã£ãã§ãã
æ¥å¹´ä»¥éãã¤ã³ã¿ã¼ã³ã¯è¡ãããæ§ã§ãã®ã§ãæ°ã«ãªã人ã¯æ¯éæ¯éåå ãã¾ãããï¼
ä»ã®åå è ã®å ±åè¨äº
*1:http://soup.johl.io/post/23925622/Why-Haskell-Community-unemployed
*2:é³æºã¯å¥éãã¦ã³ãã¼ãã®ãã¨