Reason(ML) ã§ç°¡å㪠Android ã¢ããªãä½ã£ã¦ã¿ã
Reason 㯠JSX ããµãã¼ããã¦ããã®ã§ãReact é¢é£ãã¤ã³ãã£ã³ã°ãå å®ãã¦ããã
bs-react-native ã¨ãã React Native ã®ãã¤ã³ãã£ã³ã°ããã£ã¦ãããã使ã£ã¦ç°¡å㪠Android ã¢ããªãä½ã£ã¦ã¿ãã
ä½ã£ãã¢ããªã¯å ¥åããè±èªã®æç« ã«å«ã¾ããååèªããOgden's Basic English ã®å¶éèªå½ã®åèªã§ãããã©ãããããªãã¼ã·ã§ã³ãã¦ãå¶éèªå½å¤ã®åèªã赤ããã¤ã©ã¤ãããããã®ã
Basic English ã¨ã¯ã850åèªã§ãã¹ã¦ã®äºè±¡ãè±èªã§èª¬æã§ãããã¨ãç®çã¨ããã·ã¹ãã ã§ãè±èªã主è¨èªã§ã¯ãªãå¤å½ã®äººï¼æ¥æ¬äººãªã©ï¼ããè±èªã主è¨èªãªäººãã¾ãã¯ããã§ãªã人ãã¡ã¨ãè±èªãä»ãã¦ã³ãã¥ãã±ã¼ã·ã§ã³ãåããããã«ããããã«çã¾ããã·ã¹ãã ããã ãé¡ä¼¼ã®ã·ã¹ãã ã¨æ¯ã¹ã¦ãBasic English ã¯æµè¡ããã«åç³åãã¦ããã£ã½ããæ¥æ¬èªã®æ¸ç±ã大æã«åºçããããã®ãããªãã詳ããã¯åè¿°ã® Basic English ã®å ¬å¼ãµã¤ããã日本ベーシック・イングリッシュ協会 ã®ã³ã³ãã³ããåç §ããããã
bs-react-native ã®ã¯ããæ¹
ä¸è¨ã®ãããªæµãã§ã¢ããªãä½ããç¹ã«ãããã©ããã¯ãªãã£ãã
- create-react-native-app ã§ç´ ã® React Native ã¢ããªéå½¢ãä½ã
- bs-react-native ã® README ã«ããã¨ãããbs-react-native ç¨ã®å種ããã±ã¼ã¸ã追å ããï¼ç¬èªãããã®å½ãã£ã OCaml ããã«ãããã®ã§æéããããï¼
- bs-react-native ã§ä½¿ç¨ããã³ã³ãã£ã° (bs-config.json) ã npm scripts ã³ãã³ãã追å ãã
- èªåçæããããã¡ã¤ã«ã微調æ´ãã
- Reason ãã¡ã¤ã«ã追å ãã
- ãã«ãããããã¦ã©ããããããã¢ããªèµ·åãããï¼react-native run-androidï¼
ãã¨ã¯ãReact Native ã®ããã« Expo ã§åä½ç¢ºèªããªããå®è£ ãã¦ããã
ä½ã£ã¦ã¿ãææ³
ç´ ã® React Native ã使ã£ããã¨ããªããAndroid ã¢ããªãä½ã£ããã¨ããªãã®ã§ããããã¨ã¯æ¯è¼ãã§ããªãããåºæ¬çãªãã¼ãã使ã£ã¦ããä½æ³éãã®ä½¿ãæ¹ãããåã«ã¯é常ã«ç°¡æ½ã«å®è£ ã§ããã
ç¾å¨ãµãã¼ããã¦ããã³ã³ãã¼ãã³ãã API ã¯ä¸è¨ã§åç §ã§ããã
ãµã³ãã«ãä¸è¨ããããããªãã®ã§ãbs-react-native
ã®ãªãã¸ããªã¨ React Native ã®ããã¥ã¡ã³ããèªã¿ãªããã³ã¼ããæ¸ããã
bs-react-native
ã®ãã¼ã¹ã®ã©ã¤ãã©ãªã«ãªããreason-react
èªä½ã¯ä¸è¨ã®å
¬å¼ã®ããã¥ã¡ã³ãããµã³ãã«ããããä»ã®ãªãã¸ããªã®å®è£
ãããã
- ReasonReact · All your ReactJS knowledge, codified.
- GitHub - reasonml-community/reason-react-example: Examples for ReasonReact
Reason 㯠OCaml ã® JSer ãã¬ã³ã㪠AltJS ãªã®ã§ãã¤ã³ã¿ã¼ãã§ã¤ã¹ãã¡ã¤ã«ãè¦ã¦åãåããã¦ããã°ã大ä½åãã¦ãããæããããã
Reason ã«ã¤ãã¦
Reason èªä½åãã¦æ¸ãããç´è¿ã« Real World OCaml ãèªãã§ãããã¨ããã£ã¦ãReason åºæã®ã·ã³ã¿ãã¯ã¹ã«å°ãæ¸æã£ãããã»ã¼ JS ãªã®ã§ãããã«æ £ãããJS æ¸ãã人ãªãããã«æ¸ããããã«ãªãã¨æãã
ã§ã JSX ã使ããªãããã¸ã§ã¯ãã§ã¯ BuckleScript ã使ãæ°ãããã
reason-cli ã§ã¤ã³ã¹ãã¼ã«ãããå種ã¨ãã£ã¿æ¯æ´æ©è½ã便å©ã§ãVSCode ãæ¨å¥¨ããã¦ããã®ã§ãèªåã VSCode ã使ã£ãã
ä¼ç¤¾ã§ Haskell å ¥éèªæ¸ä¼ã«åå ãã¦ãããã ãã©ãHaskell ã¯ã¾ã ã¾ã é£ããã¦ãå®æ¦ã§ä½¿ãããã«ãªããOCaml ã¯ãHaskell ããã·ã³ã¿ãã¯ã¹ã¯åé·ã ãã©ãæ¸ããããã°å ¨é¨æç¶ãè¨èªçã«æ¸ããããæ£æ ¼ã ãããªãã¸ã§ã¯ãããããã§ãé¢æ°åè¨èªçã«æ¸ãããããéçåä»ãã®æ©æµãåããããã°ãOCaml ã¯ã³ã³ãã©ã¼ãã¾ã¼ã³ã ã¨æããåæ¨è«ãè¶ å¼·åãªã®ã§ãåãæ¸ãå¿ è¦ãã»ã¨ãã©ãªãã
ããã«ãReason 㯠JSer ã«ã¨ã£ã¦å¦ç¿ã³ã¹ããä½ãã§ãJS ã®ã¯ã¼ã¯ããã¼ãæ¢åè³ç£ããã«æ´»ç¨ã§ããã®ã§ãå®ç¨çãªä½ããæ¸ãå ´åã¯ããããããã OCaml ããã便å©ãããããªãã
Elm 㯠Haskell 風ã ãã©ãåã¯ã©ã¹ããªãã£ãããã¦ãOCaml ã£ã½ãåé·ããããã®ã¨ãJS ã¨ã®ç¸äºéç¨ã Reason ã»ã©æ¥½ã§ã¯ãªããã§ãä»ã¨ãªã£ã¦ã¯ Reason ã¨æ¯è¼ãã¦ä¸éå端ã«æããé¨åãããã
Reason 㯠Reason React ã§ãThe Elm Archtecture ï¼Elm Archtecture ã®çºæã¯å大ï¼ãåèã«ä½ããã Redux 風ã®ã¢ã¼ããã¯ãã£ã§ã³ã¼ããæ¸ãã®ã§ãJSX ã使ç¨ããã³ã¼ãã¯çµæçã« Elm ã£ã½ããªãã
ä»ã®ã¨ãã㯠Elm ã®æ¹ãè¨äºçãç®ã«ããæ©ä¼ãå¤ããã©ãããã¯ã« Bloomberg 㨠Facebook ãããã¨ããç¹ãå®å¿æãããã®ã§ãèªå㯠Reason ã«æè³ãã¦ãããã¨æãã
ä»å¹´ã¯åã®è¨èªåç¬ã®ã«ã³ãã¡ã¬ã³ã¹ããªã¼ã¹ãã©ãªã¢ã§éå¬ããããã¨ããã£ã¦ãå°ãã¯çãä¸ãããè¦ãã¦ãããã®ã§ã¯ãªããã¨æå¾ ãã¦ããã
ãªããããã¥ã¡ã³ã翻訳ã®é²æã¯è³ãããªãã§ãã
ReasonML ã®ããã¥ã¡ã³ãã®ç¿»è¨³ãå§ãã¦ã¿ã
æ¨å¹´æ«ããããé¢ç½ããã ãªã¨æã£ã¦ããã¥ã¡ã³ããã³ã¼ããªã©ãèªãã§ãã ReasonML ã®ããã¥ã¡ã³ãã®ç¿»è¨³ããèªåã®ç解ã®ããã«æ¨å¹´æ«ããããããã¯ããã¾ããã
I'd like to try Japanese ð¯ðµ translation. Should I do it here?
https://github.com/reasonml/reasonml.github.io/issues/3#issuecomment-348730986
æéã®ããæã«ãããããã£ã¦ãããããªã¨æã£ã¦ãã®ã§ãããå æ¥æ¥ã«ç¿»è¨³ããã¹ããå ¬å¼ã«æµãåºã¦ãã¾ã£ãã®ã§ãä»æ ã¦ãµãããã¦ããã¨ããã§ãã
翻訳å ã®ã½ã¼ã¹ãææ°åããã¦ãå°ãå·»ãæ»ã£ãã¨ããããããä»ç¾å¨æ¥æ¬èªã§ã®30%æªæºã¨ããé²æç¶æ³ã§ãã
翻訳㯠Docusaurus ã§ä½ãããããã¥ã¡ã³ãã®ç¿»è¨³ã«ã使ããã¦ãã Crowdin ã¨ãããµã¼ãã¹ã§é²è¡ãã¦ãã¾ãã
ã³ã¼ããæ¸ããã¨ã§ã³ã³ããªãã¥ã¼ããããã¨ã¯èªåã®è½åã§ã¯ãªããªãé£ããããªã®ã§ãããã¦ç¿»è¨³ã§ãã³ã³ããªãã¥ã¼ãã§ããã°ã¨æã£ã¦å§ããã®ã§ãããè±èªãå¾æãªããã§ããªãããã®å訳ã¯å®³æªã¨è¨ããã¦ãã¾ãã¨ããªããªãæ²ãããã¨ãªã®ã§ãããååããã ããæ¹ãããããReasonML ã®ç¿»è¨³ ã«åå ããã ããã¨å¹¸çã§ãã
Crowdin ã¯ããã¾ã§ä½¿ã£ããã¨ãããã¾ããã§ãããããµã¼ãã¹ä¸ã§æ©æ¢°çãªç¿»è¨³çµæã表示ãããã翻訳å 容ã«ã¤ãã¦è°è«ãã§ããããªã©ãã½ã¼ã·ã£ã«ç¿»è¨³ãµã¼ãã¹ã£ã¦æãã§ãè¤æ°äººã§ã®ç¿»è¨³ãããçãããµã¼ãã¹ã ã¨æãã¾ãã
ã¾ãã翻訳ãããã¹ãæ¬ä¸¸ã¯ BuckleScript ã ã¨ãæãã®ã§ãBuckleScript ã®ç¿»è¨³ã誰ããã£ã¦ãããã¨ãããªãï¼ä»åæ¬é¡ï¼
èªåã¯å¹³æ¥1æéã¨ããããªæãã§ã®ãã³ãé²ããäºå®ã§ãã
èæ¯
å ã é¢æ°åããã°ã©ãã³ã°ã«èå³ããããä¼ç¤¾ã§ãé¢æ°åããã°ã©ãã³ã°åå¼·ä¼ã«åå ãã¦ãã¾ããã¾ãã転è·ã«ãããããã³ãã¨ã³ã/ãµã¼ããµã¤ãã®ã©ã¡ãã§ã JavaScript ãæ±ããã¨ã«ãªã£ãã®ã§ãããã³ãã¨ã³ãã®é¢æ°åããã°ã©ãã³ã°è¨èªãã²ã¨ã¤ç¿å¾ãã¦ãããã¨ããã®ã ReasonML ã®å¦ç¿åæ©ã§ãã
æ¨å¹´ã¯ reason_ml Advent Calendar 2017 - Qiita ãåºãã®ã§ãä»å¹´ã¯å°ãçãä¸ãããè¦ããã®ãããããªãããçãä¸ãããè¦ããªãããããã¾ãããï¼è±èªåã§ãä»æç¹ã§ã¯æµè¡ã£ã¦ããæãã¯ããªãã®ã§ä»å¾ã«æå¾ ã§ããreddit / stackoverflow 調ã¹ãï¼
ãã¨ãã
Perl ããã°ã©ãããä»å¾ OCaml ããã°ã©ãã«ãªãã®ã ã¨ãããå½ç¶ã®å¸°çµãªã®ãããããªããï¼ã©ã¯ãçãªæå³ã§ï¼
Movable Type 㨠Web Components
ãã®è¨äºã¯ Movable Type Advent Calendar 2017 ã®17æ¥ç®ã®è¨äºã§ãã
å æ¥ãä¼ç¤¾ã«ã¦ãäºæ¥é¨ã®å 輩ã§ãPolymer Japan ã®éå¶è ã§ããã @sizuhiko ãããããPolymer ã®ãã³ãºãªã³ãåããæ©ä¼ããããé ãã°ããªãã Web Components ã«å ¥éãã¾ããã
Polymer 㯠Google ãéçºã主å°ãã¦ããã©ã¤ãã©ãªã§ãWeb Components ã®ããã®ããªãã£ã«ã§ããããWeb Components ãç°¡åã«æ±ããããã«ããæ©è½ãªã©ãæä¾ããã©ã¤ãã©ãªã§ãã
Web Components ã¯ããã§ã«ä½¿ãã次ä¸ä»£ã® Web æ¨æºãã¯ããã¸ã¼ã§ãä¸è¨ã®4æ¬æ±ãããªããã¯ããã¸ã¼ã§ãã
- ã«ã¹ã¿ã ã¨ã¬ã¡ã³ã
- ã·ã£ã㦠DOM
- HTML ã¤ã³ãã¼ã
- HTML ãã³ãã¬ã¼ã
ç§ãä¸æãªèª¬æããããããã°ã°ã£ããã@sizuhiko ããã®ä¸è¨ã®ã¹ã©ã¤ããªã©ããåç §ããã ããæ¹ãè¯ãã¨æãã¾ãã
ããã§ä½ãã§ããã®ï¼
Web Components ã使ã㨠HTML, CSS, JavaScript ã§ä½ãããèªå·±å®çµããã³ã³ãã¼ãã³ãï¼ã«ã¹ã¿ãã¤ãºç®æã®å®ç¾©ãèªç±ï¼ãä»è ã«æä¾ããããã¾ãã¯æä¾ããããã®ãèªåã®ãµã¤ãã§æ±ããã¨ãã§ããããã«ãªãã¾ãã
ä¾ãè¦ãæ¹ãæ©ãã¨æãã®ã§ãwebcomponents.org ãè¦ãã¦ã¿ã¦ãã ããããã®ãµã¤ãã«ã¯å ±æããã Web Components ãããããæ²è¼ããã¦ãã¦ãä¾ãã° Google Maps ã®æ©è½ãæ±ã Web Components ã¯ä¸è¨ã®ããã«æä¾ããã¦ãã¾ãã
Google Maps ã® Web Components ã§ã¯ google-map
ã google-map-marker
ã¨ãã£ãã«ã¹ã¿ã ã¿ã°ã¨ã緯度ãçµåº¦ãªã©ã®å°ç¨ã®å±æ§ãæå®ãããã¨ã§ä»»æã®ããããæç»ã§ãã¾ãã
ä¾: ç¦äºçåºã®å°å³ãæç»ããå ´å
gistba02fd28ccbf22b65f76ceffbe60f90f
ä»ã«ããAndroid çã® UI ãªã©ã§ä½¿ç¨ããã¦ãã Material Design ç¨ã®ã³ã³ãã¼ãã³ãã paper-
ã¨ãããã¬ãã£ãã¯ã¹ä»ãã§æä¾ããã¦ãããããã®ã§ãMaterial Design ãæ¡ç¨ãã UI ãªã©ã¯ãCSS ã使ã£ãç
©ãããã¹ã¿ã¤ãªã³ã°ãããªãã¦ããWeb Components ã®æè¡ã使ã£ã¦å°ç¨ã®ã¿ã°ã§å®£è¨çã«è¨è¿°ã§ãã¾ãã
ä¸è¨ã®ä¾ã¯æ±ç¨çãªã³ã³ãã¼ãã³ãã®ä¾ã¨ãªãã¾ãããèªç¤¾ç¨ã®ã³ã³ãã¼ãã³ãã Web Components ã使ã£ã¦æ§ç¯ããã¨ããã¦ã¼ã¹ã±ã¼ã¹ãå½ç¶ãããYouTube ã®æ° UI ãªã©ã¯ã¾ãã«ããã«è©²å½ããã®ããªã¨æãã¾ãã
YouTube ã®æ° UI ã§ã¯ããã©ã¦ã¶ã®éçºè
ãã¼ã«çã§è¦ç´ ã調æ»ããã¨ãytd-
ã yt-
ã¨ãããã¬ãã£ãã¯ã¹ã®ä»ããã«ã¹ã¿ã è¦ç´ ã§ãUI ãæ§ç¯ããã¦ãããã¨ã確èªã§ãã¾ãã
ãã㨠Movable Type ã¨ä½ãé¢ä¿ããã®ï¼
MT ã®èã¨ãªãæ©è½ã®ä¸ã¤ã« MT ã¿ã°ãããã¾ãã
MT ã§ç®¡çããã¦ããã³ã³ãã³ãã¯ãMT ã¿ã°ã使ã£ã¦åå¾ã»å å·¥ã»è¡¨ç¤ºãããã¨ãã§ãã¾ããåã«ããã ãã«çã¾ãããå¤é¨ã® API ãããã¼ã¿ãåå¾ããããHTML ã®ããªããã»ããµã¨ãã¦åããã¯ãã®ããã« HTML ãç½®æããããªã©ãæ§ã ãªãã¨ã MT ã¿ã°ãéãã¦å®ç¾ã§ããããã«ãªã£ã¦ãã¾ããPowerCMS ã®ãã³ãã¬ã¼ãã¿ã°ãªãã¡ã¬ã³ã¹ãè¦ãã°ããã©ã°ã¤ã³ã§è¿½å ããããããæ©è½ãããªãªã¸ãã«ã® MT ã¿ã°ãå®ç¾©ãããã¨ã§æ´»ç¨ã§ããããã«ãªããã¨ããããã¾ãã
MT ã¿ã°ã CMS ã§ç®¡çãã¦ããã³ã³ãã³ããæ±ãããã®ä¸ç¨®ã®ã«ã¹ã¿ã ã¿ã°ã¨èããã¨ãWeb Components ã¨ã®å ±éæ§ãè¦ãã ãã¾ãã
ã¾ããMT ã§ç®¡çããã³ã³ãã³ããæ©è½ãå®ç¾©ãã¦ãããããåãåºããããå å·¥ããããã® MT ã¿ã°ãå®ç¾©ãã¦ããã³ãã¬ã¼ãä¸ã§ HTML 㨠MT ã¿ã°ãè¨è¿°ããå¿ è¦ãªè¡¨ç¾ãå®ç¾©ããã¨ããã¯ã¼ã¯ããã¼ããWeb Components ã®ã¯ã¼ã¯ããã¼ã®ããã¨é¡ä¼¼ãã¦ããã®ã§ãMT ã使ã£ããµã¤ãå¶ä½ãã¦ã§ãã¢ããªã±ã¼ã·ã§ã³å¶ä½ã®ã¯ã¼ã¯ããã¼ã¨è¦ªåæ§ãé«ãããã«æãã¾ãã
ä¾ãã°ãMT ã§ç®¡çããã³ã³ãã³ãã®å ãéçã«æ±ãããã³ã³ãã¼ãã³ã㯠MT ã¿ã°ã§å®ç¾©ãã¦ãåçã«æ±ãããã³ã³ãã¼ãã³ã㯠Web Components ã§å®ç¾©ããã¨ãã£ã使ãåããã§ãããã§ãã
試ãã«ä¸è¨ã®ãããªã«ã¹ã¿ã è¦ç´ ãä½ã£ã¦ã¿ã¾ãããPolymer ã使ãã¨ããã®ãããã®ãã®ã§ããã°ããã¸ãã¯ãæ¸ããã¨ãªãç°¡åã«ä½ãã¾ããã
bower install https://github.com/taiju/mt-entries-list-sample.git
ã§ã¤ã³ã¹ãã¼ã«ããå¾ãä¸è¨ã®ããã« HTML ã¤ã³ãã¼ããã¦ä½¿ãã¾ãã
gistef21bb0771928287f15974c9660e31d8
mt-entries-list
ã¨ããã«ã¹ã¿ã ã¿ã°ã«ãµã¤ãã® ID ããæ¤ç´¢ãã©ã¡ã¼ã¿ãå±æ§ã«æå®ããã¨ãDataAPI ãéãã¦åçã«è¨äºä¸è¦§ã®ãªã³ã¯ã ul > li > a
ã®ãªã¹ãã¨ãã¦æç»ãããã¨ãã§ãã¾ãã
ãã®ãµã³ãã«èªä½ã«å®ç¨æ§ã¯ããã¾ããããããããã¼ã¹ã«ãã¦ããµã¤ããã¢ããªã±ã¼ã·ã§ã³å°ç¨ã«ä½ãè¾¼ãã°åçã«æç»ã§ããææ°è¨äºä¸è¦§ãé¢é£è¨äºä¸è¦§ãªã©ãå®ç¨ãªã³ã³ãã¼ãã³ããä½ããã¨æãã¾ãã
ã¾ã¨ã
MT 7 ã§ã¯ã³ã³ãã³ãã¿ã¤ãã¨ããæ©è½ã追å ãããã®ã§ãä½ããã©ãã«ãã©ã®ããã«ç®¡çãããããèªç±ã«å®ç¾©ã§ããããã«ãªããããã³ã³ãã¼ãã³ãæåãªæ å ±è¨è¨ãã§ããããã«ãªãã¾ãã
MT 7 åãã®æ°ãã¼ãã§ãã Jungfrauï¼ã¦ã³ã°ãã©ã¦ï¼ ãè¦ãã¨ããã¼ãã§ãªãªã¸ãã«ã®ã³ã³ãã³ãã¿ã¤ããæä¾ãããã¨ãå¯è½ãªãããªã®ã§ãã³ã³ãã³ãã¿ã¤ãã¨ä¸ç·ã«ããã®ã³ã³ãã³ãã¿ã¤ããåãæ±ãããã® Web Components ããã¼ãã«å梱ããã¨ãã£ãã¦ã¼ã¹ã±ã¼ã¹ãæ³åã§ãã¾ãã
ä¾ãã°ã¢ã³ã±ã¼ãã管çããã³ã³ãã³ãã¿ã¤ãã¨ãDataAPI ãçµç±ãã¦ãã¢ã³ã±ã¼ãã®æç»ã»åçãã§ãã Web Components ãã»ããã§æä¾ããã°ãã¢ã³ã±ã¼ãã¢ããªã±ã¼ã·ã§ã³ã³ã³ãã¼ãã³ãã®é å¸ãããã¼ãã®é å¸ã ãã§å®ç¾ã§ãããã ãªãã¨åæã«æ³åãã¦ãã¾ãã
åç´ãªãµã¤ãå¶ä½ã§ã¯ãªããªãæ´»ç¨ã®å ´ããªãã®ããããã¾ããããWeb Components ã¯å°æ¥å½ããåã«ä½¿ãæè¡ã«ãªãã¨æãããã®ã§ãMT ã§ã©ã®ããã«æ´»ç¨ã§ãããèããã¨ãããããã夢ãåºããããã§ããã
ã»ãªã®ã
æ°¸åã·ã¹ãã ããã¸ã¡ã³ãã«å ¥ç¤¾ãã¾ãã
è¿æ³ãã°ã
ä»å¹´3æã®è©±ã§ä»ããã§ã¯ããã¾ãããæ ªå¼ä¼ç¤¾æ°¸åã·ã¹ãã ããã¸ã¡ã³ãã«å ¥ç¤¾ãã¾ãããã¨åæã«ç¦äºã«åºæ»ãã¾ããã
åè·
åè·ã®ã¢ã«ãã¡ãµã¼ãæ ªå¼ä¼ç¤¾ã§ã¯ãPowerCMSã¨ãã CMS (Movable Type ãæ¡å¼µãã CMS)ã®éçºã»ä¿å®ã»ãµãã¼ããæ å½ããæ¯æ¥ Perl ã®ã³ã¼ããèªãã ãæ¸ãããããæ¥ã ã§ããã
è¯ããæªãã Movable Type ã¯æ¯ããæè¡ã®çµæ¶ã¨ããæãã®è£½åã ã£ãã®ã§ããã®æéã§ã¤ã¶ããå¹ããã¨ã³ã¸ãã¢ã¨ãã¦ã®åºç¤æè½ã身ã«ä»ããã¨æã£ã¦ãã¾ããéã«æ°ããæè¡ã®ãã£ããã¢ãããã§ãã¦ãªãã£ãã®ã¯åçç¹ã§ã¯ããã¾ãã
ç¾å¨
ç¾å¨ãæ°¸åã·ã¹ãã ããã¸ã¡ã³ãã®ITãµã¼ãã¹äºæ¥é¨ã¨ããé¨ç½²ã«æå±ãã¦ãã¾ãã
ITãµã¼ãã¹äºæ¥é¨ï¼ç¤¾å ã§ã¯ç¥ãã¦ITSã¨å¼ã¶ï¼ã¯ãWeb ãã¯ã©ã¦ãã®æè¡ã使ã£ãåè¨éçºãä¸å¿ã®é¨ç½²ã§ãWeb ã好ã㧠Web ããã°ã©ãã«ãªã£ãèªåçã«ããããããé¨åã®å¤ãé¨ç½²ã§ãã
Java ã®æ¡ä»¶ãå¤ããèªåãä»ã¯ Java ãæ¸ãã¦ã¾ãã
ããã¾ã§ LL ãããã£ã¦ããªãã£ãã®ã§ãç¥ããªããã¨ãæ £ããªããã¨ãå¤ã ããã¾ãããLLer çã« Java ã«å ¥éããã¿ã¤ãã³ã°ããJava 8, 9 ä¸ä»£ã§è¯ãã£ãã®ããªã¨ããæ°ã¯ãã¦ãã¾ãã
å¼ãç¶ã Java é å¼µãã¾ãã
ITãµã¼ãã¹äºæ¥é¨ã§ã¯ãäºæ¥é¨å ã«ããã¤ãã®ç¤¾å åå¼·ä¼ãããã¾ããå¨å® å¤åãã人ããæ±äº¬ãæ²ç¸ã«ãæ ç¹ãããã®ã§ãGoogle Meet ã TV ä¼è°ã·ã¹ãã ã§æ¥ç¶ãã¦åå¼·ä¼ãéå¬ãã¦ãã¾ãã
èªåã¯ä¸è¨ã®åå¼·ä¼ã«æå±ãã¦ãã¾ãã
- Java åå¼·ä¼
- é¢æ°åããã°ã©ãã³ã°åå¼·ä¼
- Kotlin åå¼·ä¼
Java åå¼·ä¼ã¯ãå 輩社å¡ã®ä½ã£ãåé¡ãããªã«å½¢å¼ã§è§£ããªããå¦ã¶å½¢å¼ã§é²ãã¦ãã¦ãä»ã¯ Optional ã®åé¡ã解ãã¦ãã¾ãã人æ°ãå¤ããã¨ããã£ã¦è¶ ã¹ãã¼ãã¼ã¹ã§é²è¡ä¸ã§ãã
é¢æ°åããã°ã©ãã³ã°åå¼·ä¼ã¯ãã©ã ãç®æ³ã®åºç¤ã®åå¼·ã¨ããã°ã©ãã³ã° Clojure 第2çã®èªæ¸ä¼ããã¦ãã¦ãååã¯ãã£ã¼ãæ°ã使ã£ã 2 * 3
ãç°¡ç´ããã¨ããå
容ã§ãããèªå㯠JS ã§è§£ãã¾ããã
Kotlin åå¼·ä¼ã¯ãä»æããå§ã¾ã£ãåå¼·ä¼ã§ãä»ã¯æ¥æ¬Kotlinã¦ã¼ã¶ã°ã«ã¼ãããã®Kotlinå ¥éã®ããã®å©èµ°èªæ¬ã®èªæ¸ä¼ããã£ã¦ãã¾ãã
ãã®ä»ãå®æçã«äºæ¥é¨ã®é£²ã¿ä¼ããã£ãããäºæ¥é¨ã横æãã交æµã¤ãã³ãï¼LT大ä¼ãªã©ï¼ããã£ãããã¦ãããã¾ã§ã®è·å ´ã§ã¯ç¤¾å ã®ã¨ã³ã¸ãã¢ã¨ä¸ç·ã«æ°ããæè¡ãå¦ãã ãã話ããã£ããã¨ããç°å¢ããã¾ããªãã£ãã®ã§ãããä»å¾ã¯ä»äºã§ãæ§ã ãªåºæ¿ãåãããã¨ãã§ãããã§æ¥½ãã¿ã§ãã
ãããã
ããæ°å¹´ãã¤ã³ããããã¢ã¦ããããããµãããã¡ã ã£ãã®ã§ãããå¿æ©ä¸è»¢ããã°ã£ã¦ãããªãã¨ãªã¼ã¨èãã¦ãã次第ã§ãã
ãã®åºåã¯ã90æ¥ä»¥ä¸æ´æ°ãã¦ããªãããã°ã«è¡¨ç¤ºãã¦ãã¾ãã
ã¨è¡¨ç¤ºãããªãç¨åº¦ã«ã¯ããã«ã¢ã¦ããããã§ããã°ã¨æã£ã¦ã¾ãã
ã»ãªã®ã
æè¿ã® Chromebook ã®éç¨ãã¾ãã¯ãGCE ã®ããã
éå»ã®è¨äºãæ¯ãè¿ãã¨ãChromebook ãã¡ã¤ã³æ©ã¨ãªã£ã¦ã1å¹´ãããçµã¤ãããã
æ¸ããå½åã¯ããããé å¼µã£ã¦ãChromebook 㧠Ubuntu ã使ããããã«æªæ¦è¦éãã¦ããããã©ããã¾ãã«é¢åã«ãªã£ã¦ããã®ã§ãã·ã³ã¯ã©ã¤ã¢ã³ãã¯ãã·ã³ã¯ã©ã¤ã¢ã³ããããæ¯ãèãã¹ãã¨ããã¨ããã«è½ã¡çããã
ã¨ãããã¨ã§ãæè¿ã® Chromebook ã®éç¨ã«ã¤ãã¦æ¸ãã
GNU/Linux ã使ããã!!!
Chromebook èªä½ã¯ãç´ ã® Chrome OS ã®ç«¯æ«ã¨ãã¦ä½¿ãããã§ãããã»ã¨ãã©ã®çæ´»ãã¿ã¼ããã«ã§è¡ã£ã¦ããç§ã¨ãã¦ã¯ãGNU/Linux ã¾ãã¯ãUNIX ç°å¢ããªãã¨å³ããã
以åã¯ãè¨äºã«æ¸ãã¦ããã¨ãã USB ã« Ubuntu ãå ¥ãã¦é å¼µã£ã¦ããã®ã ãã©ãChromebook ããããããã¼ã¢ã¼ãã§å©ç¨ããªãã¨é§ç®ã ããUSB éªéã ããUSB ä¸ã® OS ã®åä½ãå¾®å¦ã«å®å®ããªããã§ãChromebook ã¯ã·ã³ã¯ã©ã¤ã¢ã³ããªãã ãããGNU/Linux ã使ãããµã¼ãã調éãã¦å©ç¨ããã®ã楽ã¨ãããã¨ã«ãªã£ãã
å ·ä½çã«è¨ãã¨ãä»ã¯ãGoogle Compute Engine (ä»¥ä¸ GCE ã¨è¡¨è¨) ããGNU/Linux ã®ãµã¼ãã¨ãã¦ä½¿ã£ã¦ããã
Chromebook ããã¯ãSecure Shell ã使ã£ã¦ãSSH æ¥ç¶ãã¦ä½¿ãã*1
GCE ã®è¯ãæ
Chromebook ã ãã Google ã®ãµã¼ãã¹ã使ãã®ãçã£ã¦èããç¡ãã«ãããããã ãã©ãå®éã« AWS ã Azure ã使ã£ã¦ã¿ã¦ãç§ã®ç¨éã§ã¯ GCE ãå§åçã«ä¾¿å©ã¨ããçµè«ã«ãªã£ãã
GCE ãå§åçã«ä¾¿å©ã§ããçç±ã¯ã
ããªã¨ã³ããã£ã VM ã¤ã³ã¹ã¿ã³ã¹ãè¶ çµ¶å®ã
ååä½ã®èª²é
VM ã®èµ·åãä½æãéã
ã¨ãã£ãã¨ããã«ããã
便å©ã§ããçç±ã®å ·ä½çãªã¨ãã
ããªã¨ã³ããã£ã VM ã¤ã³ã¹ã³ã¿ã³ã¹ã¨ã¯ãããããªå¶éã¤ãã代ããã«å®ã使ã£ã¦ããããã¨ãã£ãã¿ã¤ãã® VM ã¤ã³ã¹ã¿ã³ã¹ã®ãã¨ã§ãå ·ä½çã«ã¯ã24æé以ä¸ã®é£ç¶ç¨¼åã¯ã§ããªãã¨ãã®å¶éãã¤ãã*2
ç§ã¯ãGNU/Linux ã使ãããæã ãã« VM ãèµ·åãã¦ã使ãçµãã£ãã VM ãåæ¢ããã®ã§ã24æé以ä¸ä½¿ãããã·ã¼ã³ã¯çç¡ã§ãä»ã® Chromebook ã®éç¨çã«ã¨ã¦ãé©ãã¦ããã
ãã¤ã¬ã¸è¡ããããã®ã¨ãã¯èµ·åããã¾ã¾ã ããã飯ãé£ã¹ãæã¨ããã風åã«å ¥ãæã¯åæ¢ããã¨ãã£ãéç¨æ¹æ³ãªã®ã§ãååä½ã®èª²éã¨ããç¹ãå©ç¹ã«ãªãã
ã¾ããVM ã®èµ·åããã¡ããã¡ãéãã®ã§ããã¾ãã«åæ¢ããéç¨ãå ¨ãè¦ã«ãªããªãã
ãã£ã¹ã¯ã®æ¹ãã³ã¹ãããããã®ã§ãåºæ¬çã«ã¯åæå¤ã® 10GB ãèµ·åãã£ã¹ã¯ã«å ã¦ãã ãã«ãã¦ããã
éã« Chromebook ã®è³¼å ¥è ç¹å ¸ã§ãGoogle Drive ã«æ½¤æ²¢ãªå®¹éãä¸ãããã¦ããã®ã§ãdrive ã³ãã³ããã¤ã³ã¹ãã¼ã«ãã¦ãå¿ è¦ãªãã¼ã¿ã ã pull, æ°¸ç¶åããããã¼ã¿ã ã push ããã¨ããéç¨ããã¦ãããããã§ããã°ãèµ·åãã£ã¹ã¯ã® 10GB ã§äºè¶³ããã
ä½è¨ãªã½ããã¦ã§ã¢ãã¤ã³ã¹ãã¼ã«ããããä½è¨ãªãã¡ã¤ã«ãè¨ç½®ãã¦ããã£ã¹ã¯ãä¸æ¯ã«ãªã£ãããVM ãå»æ£ãã¦ãæ°ãã VM ãç«ã¦ãããã®ããã«ãåºæ¬ã»ãã㯠Ansible ã® Playbook ã«ããã
Cloud9 ãä½µç¨
æè¿ã¯ Cloud9 ãä½µç¨ãã¦ããã*3
Emacs ãå¿«é©ã«ä½¿ãããã¯ããªãããã¯ã©ã¦ã IDE ä¸ããã¢ã¯ã»ã¹ããã¿ã¼ããã«ãããããç¨åº¦ã¯ OS ãèªç±ã«è§¦ããã®ã§ãããã§äºè¶³ãããããªä½æ¥ã§ã¯ããããã VM ãèµ·åããªããªã£ãã
å¶éã¯ãã¤ãã®ã§ãVM ã§ããã§ããªããã¨ããããä¾ãã°ãYesod ã®è©¦ç¨ããã¦ã¿ããã¨ãã¦ãã¤ã³ã¹ãã¼ã«ã試ã¿ãããcabal update
ã§ããªãã¨ããAndroid ã® SDK å
¥ãããã¨ããããã£ã¹ã¯åã¾ãã¨ãããããããã¤ã
ä½è«
ååã®è¨äºã«ãæ¸ãããSecure Shell ã§æ¥æ¬èªå ¥åã§ããªãã¨ããåé¡ã¯ãæªã ã«æªè§£æ±ºã§ããã®ç¹ãéç¨ã«èããªãçç±ã«ãªãã¨ãã人ã¯ããã¨æãããã
Chrome OS ä¸ã® IM ã§ã¯æ¥æ¬èªå ¥åã§ããªãã ãã§ãVM ä¸ã® IM ã§ã¯æ¥æ¬èªå ¥åã§ããã®ã§ãååã®è¨äºã«ãæ¸ããã¨ãããä¾ãã° Emacs 㧠Mozc ã使ãã¨ããæ¹å¼ã§ããã°åé¡ãªãã
ç§ã¯å¸¸ç¨ã·ã§ã«ã eshell *4 ãªã®ã§ãå
¨ãåé¡ãªãã.bash_profile
ã®æçµè¡ã« exec emacs
ãè¨è¿°ãã¦ããã®ã§ããã¹ã¦ã®æä½ã Emacs ä¸ã§è¡ã£ã¦ããã
ã¾ã¨ã
ããããä»ã®éç¨ã Chromebook ã使ãä¸ã§ãæãæ£ããéç¨ãªæ°ããã¦ããã
ãããã Chromebook ã¯ã·ã³ã¯ã©ã¤ã¢ã³ãã§ãã£ã¦ãChromebook èªä½ã§ãããããããã¨ããã®ã¯ééããªæ°ããã¦ãã¦ããã*5
ããããæå³ã§ã¯ãä¸çªå®ã Chromebook ï¼3ä¸ä»¥ä¸ï¼ã§å¿ è¦ååã ã¨æããé«ãã¹ããã¯ã欲ãããã° GCE ã§èª¿éããã°è¯ãã®ã ãã
ä»ã®ã¨ãã GCE ã§ãã¯ã³ã³ã¤ã³ï¼500åï¼ä»¥ä¸ããã£ããã¨ã¯ãªãã
å®ã調éã§ããåãå¿ è¦ã«å¿ã㦠GCE ã® VM ãç«ã¦ãã¨ããæ¹æ³ãåã£ã¦ããMacBook Air ã MacBook Pro ã¨æ¯è¼ãã¦ãæ®éã«ãè²·ãå¾ã§ããã
ãã®éç¨ã®æ¬ ç¹ã¯ VM ãåæ¢ãå¿ãããã¨ã«ãã£ã¦ã³ã¹ãã®å¢å¤§ã¨ããäºæ ãèµ·ãããããã¨ãªã®ã ãã©ãããªã¨ã³ããã£ãã¤ã³ã¹ã¿ã³ã¹ã¯ããããã24æé以ä¸é£ç¶ç¨¼åãããã¨ã¯ãªãã®ã§ãäºæ ã®è¢«å®³é¡ã¯ããç¨åº¦å¶éãããã24æé以ä¸ã®é£ç¶ç¨¼åãã§ããªãã¨ããå¶éãä¿éºã«ããªã£ã¦ãããå®æè¦ã§ã¯ãæ°æéã§è½ã¡ãã¤ã¡ã¼ã¸ã
欲ãè¨ãã°ãChromebook ã®ç¹å ¸ã§ GCE ã® VM ã®å©ç¨æãæä¸å®é¡ç¡æã¨ããã¤ãã¦ãããæé«ãªãã ãã©ãªãã
ã¹ããã Android + æ ¼å® SIM ã«ããããã¡ã¤ã³ãã·ã³ã Chromebook ã«ãªã£ãããã³ã³ãã¥ã¼ãã£ã³ã°çæ´»ã«å ¨ãéããããªãã¨ããå¶ç´ã®ä¸ã§ã1å¹´éçæ´»ãã¦ã¿ããããªãã¨ããªãããã ã£ãã
ããããã©ããªéé ·ãªç¶æ³ã«ãªã£ã¦ããå¿«é©ãªã³ã³ãã¥ã¼ãã£ã³ã°çæ´»ãã§ããèªä¿¡ãã¤ããæ°ãããã
ã»ãªã®ã
*1:ã¨ãã§ã¡ã©ã« IP ã§éç¨ããã®ã§ãèµ·åã®ãã³ã«è¨å®ãå¤æ´ãã¦ãã
*2:ä½æ¥ä¸ã« VM ãè½ã¡ããã¨ãå¤ã ããã®ã§ãä½æ¥å¯¾è±¡ã¯ã¾ãã«ä¿åãã¾ããã
*3:æ°¸é ã«ãªãªã¼ã¹ããããã¨ã®ãªãä½ããä½ã£ã¦ããã¨ããä½ã§
*4:åºåçµæãå¤ãã³ãã³ãã«å¯¾ãããã¤ãããå ¥åã®ãªãã¤ã¬ã¯ãããããæã¯ãé©å® shell ã¢ã¼ãã使ã
*5:Chromebook Pixel ã¨ãªãã¨è©±ã¯å¤ãã£ã¦ãããã©
MT ã®ããã¥ã¡ã³ãã Emacs ããå¼ããããã«ãã
SLIME ãã¤ã³ã¹ãã¼ã«ããã¨åæã«ã¤ã³ã¹ãã¼ã«ããã hyperspec-lookup
ã³ãã³ãã®ããã«ãMT ã®ããã¥ã¡ã³ããæ¤ç´¢ã§ããã¨è¯ããªã¨æã£ãã®ã§ãhyperspec-lookup
ã模å£ãã¦ãããã±ã¼ã¸ã«ããã
mt-doc-lookup
https://github.com/taiju/mt-doc-lookup-el
ã¤ã³ã¹ãã¼ã«ããã¨ãM-x mt-doc-lookup-tags
ã§ãã³ãã³ãã§æå®ãã MT ã¿ã°ã®ããã¥ã¡ã³ãããã©ã¦ã¶ã§é²è¦§ã§ããããã«ãªãã
åæ§ã«ãM-x mt-doc-lookup-config-directives
ã§ç°å¢å¤æ°ãM-x mt-doc-lookup-modifiers
ã§ã°ãã¼ãã«ã»ã¢ãã£ãã¡ã¤ã¢ãM-x mt-doc-lookup
㧠MT ã¿ã°ã¨ç°å¢å¤æ°ã¨ã°ãã¼ãã«ã»ã¢ãã£ãã¡ã¤ã¢ã横æçã«æ¤ç´¢ããé²è¦§ã§ããã
ãªãã¸ããªã«ãè²¼ã£ã¦ãããå©ç¨æã®ã¹ã¯ãªã¼ã³ã·ã§ãããä¸è¨ã
ã¹ã¯ãªã¼ã³ã·ã§ããã§ã¯ãido
+ smex
+ ido-vertical-mode
ãã¤ã³ã¹ãã¼ã«ããã¦ãã¦ãæå¹ã«ãã¦ããç¶æ
ã§ã®æä½å
容ãªã®ã§ãããããå
¥ã£ã¦ããªãå ´åã¯ãåæç¶æ
ã® Emacs ã®è£å®æ©è½ã¨åæ§ãå¾®å¦ãªä½¿ç¨æã«ãªããhelm
ãªã©ãä»ã®æ¨æºã®è£å®æ©è½ãæ¡å¼µããããã±ã¼ã¸ãå
¥ã£ã¦ãããªãããã®ä½¿ç¨æã§ä½¿ããã¨æãã
mt-doc-lookup
ã®æ¨ªææ¤ç´¢ã¯ããªã¹ãããæ¤ç´¢ããã®ã«å¯¾ããmt-doc-lookup-tags
ã®ããã«ç¨éãçµãæ¤ç´¢ã¯ãããã·ã¥ããæ¤ç´¢ããã®ã§ãå¤åãç¨éãçµã£ãæ¤ç´¢ã®æ¹ãéãã¨æãã
ç¹ã«åã³ãã³ããæ¨æºã§ã¯ãã¼ãã¤ã³ãã¯ãã¦ããªãã®ã§ãã好ã¿ã§ã
æ¨æºã§ã¯ eww
ã§ããã¥ã¡ã³ããéãããã«ãããï¼mt-doc-lookup-browser-function
å¤æ°ã§å¤æ´å¯è½ï¼
ããã¥ã¡ã³ããé²è¦§ããã«ã¯ eww
ã§å¿
è¦ååã ããã³ããããªãã£ãé«ãã¦ãªã¹ã¹ã¡ã§ãã
æ¤ç´¢ã®ååè£ã¯ä¸è¨ã®ã¯ã³ã©ã¤ãã¼ã§åºåãããã®ãå å·¥ãããããããããã足ãã¦ãªãã£ãããããããããªãã
$ perl -Mojo -E 'say g($ARGV[0])->dom->find(q{a[rel="bookmark"]})->map(sub { sprintf q{("%s" "%s")}, $_->text, $_->{href} =~ s|^$ARGV[0]||er })->join("\n")' http://www.movabletype.jp/documentation/appendices/tags/
æå㯠Emacs lisp ã§ããã°ãããã¨æã£ããã®ã®ãæ¨æºã®éå ·ã§ã¯å³ãããã ã£ãã®ã§ããããã
Mojolicious + Perl ã§ã®ã¯ã³ã©ã¤ãã¼ã ãã¶ä¾¿å©ãªã®ã§ã代æ¿ãªããªããªãã
ã¾ã¨ã
ããã¾ã§ããã¿ã°ãªãã¡ã¬ã³ã¹çã eww
ã®ããã¯ãã¼ã¯ããéãã¦é²è¦§ãã¦ããã®ã§ãããã¥ã¡ã³ãã¸ã®ã¢ã¯ã»ã¹ã®ã¹ããããçããªããä»å¾å¤å°ãªãæãæ°ãããã
ãã ãããã¥ã¡ã³ãããªãã¥ã¼ã¢ã«ããããå³ã´ãã«ãªãã®ãè¾ããå¯è½ãªéã追å¾ãããã¨ã¯æã£ã¦ããã
Emacs ã«è¡£æ¿ããã話
ãã¶ããEmacs ã«è¡£æ¿ãã§ããã®ã§ããã®è©±ããã¾ãã
ãã¤ãã§ãã¾ã調ã ãã©ãã§ãã調ã§æ¸ããã
ãããã¼ã°
æ®æ®µã¯ Vim ã使ã£ã¦ããããæ°å¹´ã«ä¸åº¦ããããEmacs ã使ããã欲æ±ãã©ããã¦ãæããããªããªããã¨ããããï¼Vimmer ã®ãããããã¿ã ãããï¼ï¼ï¼å¤åãã³ã¤ãã¯æè¿ Lisp ã®æ¬ãèªãã ï¼
欲æã®ã¾ã¾ Emacs ãç«ã¡ä¸ããã²ã¨ã¨ãããã¥ã¼ããªã¢ã«ãããªãã¨ãä¸æè°ãªãã¨ã«æããããªãã£ãã¯ãã®æ¬²æ±ã綺éºãµãããªæ¶ãã¦ããã®ã ãæ¬å½ã«å¾®å¡µããªãã®ã ã ããã¦ããã®æ°æã¡ã¯ãªãã ã£ãã®ã ãããã¨æã«å¸°ããVim ãç«ã¡ä¸ããå®å µãããã俺ã«ã¯ãã£ã±ãã³ã¤ããããªãããã¡ãªãã ãã¨ã ãããªããã¨ãããããã¾ã§ä½åº¦ããã£ãã
ã¨ããããæè¿ã® Emacs ã«ã¯ãEvil ã¨ããæªéãåå¨ããã
å»å¹´ã Emacs ã使ããã欲æ±ãæããããªããªã£ããï¼ããï¼Land of Lisp ã§ãèªãã ï¼ï¼ï¼
欲æã®ã¾ã¾ Evil ãã¤ã³ã¹ãã¼ã«ãã Emacs ãç«ã¡ä¸ããã
æ®æ®µã§ããã°ãããã«éæ£ãã¦ãã¾ããã®ä¸çã¯ããã¤ãã¨éããå± å¿å°ã®è¯ããæããã
ããã¦ãéæ£ãããã¨ãªãããã®ä¸çã«ã¨ã©ã¾ã£ã¦ãã¾ã£ããæªéãããã®ãããã®ã§ããã
æ°ãã¤ããããEvil + Emacs ã使ãå§ãã¦åå¹´ãè¶ ãã¦ããã®ã ã£ãã
Evil 移è¡æ
åè¿°ã®ãããã¼ã°ã«æ¸ããããã« Evil + Emacs ã«ç§»è¡ãã¦çµæ§ãªæ¥æ°ãçµã£ã¦ããããå®éã«ç§»è¡ããå®æã¯èãã£ãã
ã·ã§ã«æä½ãå¿ è¦ãªæï¼åºæ¬ã¯ eshell 使ãã«ãªã£ã¦ãããããã¾ã«å¿ è¦ã«ãªãï¼ã« tmux ã§ã¦ã£ã³ãã¦ãç«ã¡ä¸ãã¦ãvim ã§ã¡ããã£ã¨ãã¡ã¤ã«ç·¨éãåºãã¨ããµã¨æ°ã¥ããæã«ã¯ Emacs 使ã£ã¦ãªãã¿ãããªç¶æ ã«ãªã£ã¦ãããã¨ãå¤ã ãã£ãã
ã§ããã®ç¶æ ã§ãã·ã³ãã¹ãªã¼ããã¦ãç¿æ¥ä½æ¥ãåéãããããã¨ãæ°ã¥ãããä»æ¥ Emacs 使ã£ã¦ãªãã¿ãããªãã¨ããããã£ãã
å©ç¨æã®éåæããªããããã¨ã移è¡ã¯ã¹ã ã¼ãºã ããéã«ç§»è¡ããæ義ãè¦ããªããªãã
ãªã®ã§ãEmacs ããããåãæ»ãããã«ãmagit ã wanderlust ã®ãããªå¤§ãããªã¢ããªã±ã¼ã·ã§ã³ä½¿ã£ã¦ã¿ãããã¦ã移è¡ããæ義ãåèªèããããã«ããã
èè¤ã®æ¥ã
magit ã¨ã wanderlust ãªã©ãããç¨åº¦ã®å¤§ãããªã¢ããªã±ã¼ã·ã§ã³ã使ãæã¯ãEvil ç°å¢ä¸ã§ããEmacs ããã¯ãªæä½ç³»çãå¼·ããããã
ãã¤ã®éã«ããESC ã§ã¢ã¼ãå¤ãããªããªã£ã¦ã
C-gã馬鹿ããããã¤ã¯æ®åã ã
ã»ã»ã»ããã¦ãç»é¢ä¸ã«ã¯
j
,k
ã®æ®éª¸ãç¡æ°ã«è»¢ãã£ã¦ããã
ã¿ãããªæãã«ãªã£ã¦è¾ãã
ã¦ã§ãã§æ¢ãã¨ãEvil åãã®ã«ã¹ã¿ãã¤ãºä¾ãªã©ãè¦ã¤ããããã¢ããªã±ã¼ã·ã§ã³ãã¨ã«æ¸ãã¦ããã®å³ãããã ããè¨å®ã®äºä¾èªä½å°ãªãã
Emacs ã使ã㨠Emacs Lisp ãæ¸ããããèªãã ãããæ©ä¼ãå¢ããããã ããEmacs Lisp ã®ãããã°ããããã¨ãã¦ãemacs -Q
㧠Emacs ãç«ã¡ä¸ããå¾ã®èªåã®ç¡åæãå端ãªãã
ãããã£ãäºæ ããããEvil ã使ã£ã¦ããã¨ãVim è³ã¨ Emacs è³ã®åãæ¿ããå¼·ããããç¶æ³ãå¤ã èµ·ããã ãã®ç¶æ ãåå¹´ãç¶ãã¨ãæå³ãããããç¨åº¦ Emacs ã®ãã¼ãã¤ã³ãã«æ £ãã¦ãã¾ã£ã¦ããèªåããããã¨ã«æ°ã¥ãã
Evil ã¨ã®å¥ãã®æ
Evil ãããããã¨ã«ããã
ãã¼ãåå ¥åãããããªå ¥åã«ç§»è¡ããçµé¨ãããã®ã§ã移è¡ä¸ã¯ã¤ã©ã¤ã©ä»¥å¤ã«å¾ããã®ã¯ä½ããªãããã©ãå¼·å¶çã«ç¦ãããã¨ã§ã¡ããã¨ç§»è¡ã§ãã確信ã¯ãã£ãã
Emacs ã§ã Evil ãã¢ã³ã¤ã³ã¹ãã¼ã«ãã¦ã使ãã¥ããããã¨ãã£ã¦ Vim ã«ãéããªãæ¥å¸¸çæ´»ãéããã¨ã«ããã
ãã¯ããæ°æ¥ã¯ä½ãããã«ãã¤ã©ã¤ã©ããã
C-h b (describe-bindings
), C-h m (describe-mode
) ãã²ãããå©ããã
ã§ããæ°æ¥ã§æ £ããã
ããªå ¥åã®æããã移è¡æéã¯çãã£ãã
ã¾ã ããã©ãã©ããé¨åã¯ããããVim ãèµ·åããã¨ãä¸æ¦å¿è½ã¡çããªãã¨æ··ä¹±ããç¨åº¦ã«ã¯ Emacs å¼ãã¼ãã¤ã³ãã«æ £ããã ãã¨ãã°ãä» Vim ã§ã«ã¼ã½ã«ç§»åãããã¨ããã¨ããããè£å®ãããã
è¨å®ã®è¦ç´ãã®æ¥ã
Vim 使ã£ã¦ããæã«ããã¾ã大ããè¨å®ã¯ãã¦ããªãã£ããããã¾ããã©ã°ã¤ã³ãå ¥ãã¦ãªãã£ãã
ç¾å¨ã® Emacs ã®è¨å®ããããªæãã§ããã
ã¾ããèªåã¯ããã©ã«ãå¨ã§ãããã®ã§ãæ¨æºæ©è½ã§äºè¶³ãããªãã°ãä¸ä¾¿ãå¼·ãããã¦ãæ¨æºæ©è½ãå©ç¨ãããã¨ããæåæ§ãããã
Emacs ãã®ãã¼ããããã ã¨æãããæåã¯ãããããªã¦ã¼ã¶ã¼ã®ããããè¨å®ã¨ããããããããã±ã¼ã¸ãã³ããããããã¤ã³ã¹ãã¼ã«ããããã¦ããããå®ã¯ä½¿ã£ã¦ãªãã¨ããæ¨æºæ©è½ã§ååã¨ãããã¨ãããããããããã ã£ãã®ã§ãä¸æ¦ç½ç´ã«ãã¦æ¨æºæ©è½ã§ã¾ããªãããã®ã¯æ¨æºæ©è½ã使ããã¨ãåæã«ããã«ã¹ã¯ã©ããã§è¨å®æ¸ããã¨ã«ããã
ä¾ãã°ãhelm ã¨ã auto-complete ãªããã¯ãido ã§ååãªæ°ãããã®ã§ãido + ido ã®æ¡å¼µããã±ã¼ã¸ã§æ¸ã¾ããããã«ããã
Evil æã«ããããªã Emacs ã®å¿ç¨ããå ¥ã£ãæãã«ãªã£ã¦ãã¦ãdired ã¨ã ãããã¡ãªã¹ãã®æä½ãªã©ãEmacs ã®åºæ¬ãã»ã¨ãã©ææ¡ãã¦ãªãã£ããã使ã£ã¦ã¿ãã便å©ãããªæ©è½ããã£ãã ãã¨ãeshell ã常ç¨ãã¦ãããï¼ä»ã常ç¨ãã¦ããï¼ãtmux + vim ã§ã®ä½æ¥æåãå¼ããã£ã¦ããã ãã¨ãããã¨ã«ãæ°ã¥ããå©ç¨é »åº¦ã¯å°ãæ¸ã£ãã
Emacs ã¯æ¨æºã§ãæ®éã«ä¾¿å©ã ããä»ã¯ãæ¨æºæ©è½ã®ç解ããã£ã¨æ·±ãããã¨ãããã§ã¼ãºã«ããã
Chromebook ã§ä½¿ã£ã¦ããè¨å®ãä¸è¨ã§ãä¸åº¦ãã¹ã¦ãªã»ãããã¦ã¹ã¯ã©ããããæ¸ãç´ãã¦ããéä¸ã*1
å 容ãèãã®ã§ãèµ·åããããªãã«éãã
Evil æã§ã¯ãããããè¨å®ã¿ãããªã®ãã¦ã§ãã§æ¾ãã¤ã¤ãinit-loader + åããã±ã¼ã¸ãã¨ã®è¨å®ãã¡ã¤ã«ï¼ãã¡ã¤ã«åå é ãé£çªï¼ã¿ãããªæ§æã«ãã¦ããããåè¨å®ãã¡ã¤ã«ã®è¨è¿°å 容ãæ°è¡ç¨åº¦ã§ããã¡ã¤ã«åã®å é ã«é£çªä»ãã¦ãããã©ãéä¸ã§ä¸è¦ã«ãªã£ãããã±ã¼ã¸ãåºã¦ããæã«ãé£çªãé£ãã§è¾ãæãã«ãªãã®ã§ãinit.el ã ãã®éç¨ã«ãããã¨ã«ããã
init.el ã®ä¸ã®è¨è¿°ã«ã¤ãã¦ããã©ã®è¨å®ãã©ã®è¨å®ã®å¨è¾ºã«æ¸ãããè¿·ãã®ãé¢åãªã®ã§ãããã±ã¼ã¸åã®ã¢ã«ãã¡ãããé ã§æ©æ¢°çã«å¤æãã¦è¨è¿°ã§ããããã«ãããè¨å®é ã«ä¾åããä¾åé¢ä¿ãåºã¦ããã¨é¢åãªãã¨ã«ãªããããããªããã
ã¾ããããã±ã¼ã¸ã管çããããã« Cask ã使ã£ã¦ãããã©ãå®è³ªçã«ã¯ããã ã¤ã³ã¹ãã¼ã«ããããã±ã¼ã¸ã®ä¸è¦§ãå¯è¦åãããã¨ããã ãã ã£ãã®ã§ãæ¨æºæ©è½ã§æ¸ã¾ãããã¨ã«ããã
ã¡ããã©ãè¨å®ãã¹ã¯ã©ããã§æ¸ãç´ãå§ããããã«è¦ã¤ãã Emacs Startar kit ã®ææ³ãè¯ãããã ã£ãã®ã§åãå ¥ããæ ¼å¥½ã
init.el ã§æå®ããããã±ã¼ã¸ãæªã¤ã³ã¹ãã¼ã«ã ã£ãããæ¨æºã®ããã±ã¼ã¸é¢é£æ©è½ã§ã¤ã³ã¹ãã¼ã«ããã¨ãããã®ã§ãããã§ç¹ã«åé¡ãªãæ°ããã¦ããã
è·ç¨®ããµãã¼ãã¨ã³ã¸ãã¢ã§ãæ®æ®µã¯åºãæµ ãæè¡ã使ããããç¹å®ã®è¨èªï¼Perl ã¯æ¯æ¥ä½¿ãã®ã ãã©ããããã¬+αã¨ããæãï¼ãæè¡ã«ç¹åããè¨å®ã¨ãã¯ãããªã模æ§ã
Emacs ã«ç§»è¡ãã¦è¯ãã£ãã¨æããã¨ï¼ã¾ã¨ãï¼
ãããã Vim ã使ããªãã¦ããã¦ã¼ã¶ã¼ã§ããªãã£ãã®ã§ããã Vim ã§ãã§ãããã¨ããããã³ãã¯ãããããããªãããã©ããã®ç¹ã¯ã容赦ãã
Emacs ã«ç§»è¡ããä¸ã§ãè¯ãã£ãã¨æããã¨ã¯ãLisp (Lisp-1, Lisp-2) ãèªã¿æ¸ããããããªãã¨ãããã¨ã¯ãã¡ããããããã©ãEmacs ã®ãã¨ã Emacs ã§ææ¡ã§ããEmacs ã®å®ç¾©ã Emacs ã§åå®ç¾©ã§ããã¨ããç¹ãããããªãã
ä¾ãã°ãæ°ãã試ãã¢ã¼ããç解ããå ´åãC-h m (desribe-mode
) ã§ãã¼ãã¤ã³ãã確èªãã¦ãããããã³ãã³ãã®å®ç¾©ã«ã¸ã£ã³ãã§ããããã³ãã³ãã®å®ç¾©ã®ä¸ã§ããããªãé¢æ°ãããã°ãC-h f (describe-function
) ã§ããã«è©³ç´°ãææ¡ã§ãããããã¦ãä»ããã¼ãã¤ã³ãã«å¯¾å¿ããã³ãã³ãå㯠C-h k (describe-key
) ã§èª¿ã¹ã¦è¿½è¨ãã¦ããã
Info ããã¥ã¡ã³ããæä¾ããã¦ããå ´åã¯ãC-h i (info
) ã§ãInfo ããã¥ã¡ã³ãã®é²è¦§ãã§ãããããã®æä½ãããããã
æ°ããè¨å®ãæ¸ããããªå ´åããC-h v (describe-variables
) ã§å¤æ°ã®å®ç¾©ã確èªãã¦ãæ¸ããè¨å®ã C-M-x (eval-defun
) ããã°ããã«åæ ãããã
ãã£ã¨ãã£ãã㨠apropos-*
ã§ãã³ãã³ããé¢æ°ãå¤æ°ãæ¢ããã¨ãã§ããã
Emacs Lisp ã¯ã©ã¡ããã¨è¨ãã°ãCommon Lisp å¯ããªæããªã®ã§ãshiro ããã® Common Lispã¨Scheme ã¨ããè¨äºã§è¨åããã¦ãã
å ¨é¨Lispã§å®çµããCLä¸ã®ããã¸ã§ã¯ãã®å ´åãéã«ã¨ãããã REPLèµ·åãã¦asdfã§ãã«ã/ãã¼ããã¦ãaproposãã¿ã°ã¸ã£ã³ãã使ã£ã¦ Lispã®ãä¸ãããå ¨ä½ãææ¡ãã¦ããæ¹åã«ãªãã
ã¨ããä½é¨ã«è¿ãæããããããªãã
æ§ã ãªæ©è½ã Emacs Lisp ã§æ¸ããã¦ããã®ã§ãLisp ã®ç¥èã§èªããã
å¿ è¦ã«å¿ãã¦å®ç¾©ã追ã£ããããããã°ããããæ©è½æ¸ãããã§ããã¨ãããã¨ã¯ãåæ°¸ä¹ çã«æ¥å¸¸ã§å©ç¨ãããã¼ã«ã¨ãã¦ããã以ä¸ã«å¿å¼·ããã¨ã¯ãªãã¨æããï¼ã¾ãããããªã«ããæ©ä¼ãªãããè©å¼ãããããªããã©ï¼
Emacs ã¯ãèªåã®èªçæ¥ããæ©ãçã¾ãã¦ãããã¼ã«ã§ãä»æ¥ã¾ã§çºå±ãã¦ããã®ã§ãèªåãæ»ã¬ããã«ãæ®éã«ããã¨æãããã®é ã«ã¯ãEmacs 50 ã¯è¶ ãã¦ãããããããªãã
ã¨ãããã¨ã§ãæ°ç±³ã«ãªã£ãã¨ããã ããä»å¾ã¯ Vim ã«æ»ããã¨ãªããEmacs ã使ãç¶ãããã¨ã«ãªãããã¨ããå®æããä»ã®ã¨ããããæãã
ã»ãªã®ã
*1:話ã¯å¤ããããä»å¹´ãã Chromebook ãã¡ã¤ã³ãã·ã³ã«ãã¦ãã¦ãChromebook ã®ã·ã§ã«ã§æ¥æ¬èªå ¥åã§ããªãã¯ã½ã¿ãããªåé¡ãããã®ã§ãChromebook ã§ã¯ãã¦ã§ããã©ã¦ã¸ã³ã°ã§ Chrome ã使ã以å¤ã«ã¯ãåºæ¬çã« Emacs ã§ãã¹ã¦ã®ãã¨ãããªãã¦ã㦠Emacs å¼·å¶ã®ãã¹ç¶æ ã¨ãªã£ã¦ããã