æ稿ã§ã
ChromeExtensionã®èªåãã«ãã¨èªåãªãªã¼ã¹ã®è©±
Chrome Extension ãä½ã£ã¦ãã人ã¯å¤ãã¨æãã®ã§ããããããã¯ãã®1ã¤ã¨ãã¦ä½ã£ã¦ãããããã¨ãä»ã®ã¢ããªã±ã¼ã·ã§ã³ãªã©ã¨åæ§ã«èªåãã«ããèªåãªãªã¼ã¹ãæ´ãããã¨æãã®ã人æ ã ã¨æãã¾ãã
å æ¥ããã®è¾ºãã®ä»çµã¿ãgyazo/gyazo-chrome-extensionã®ãªãã¸ããªã§å©ç¨ãããã¨æã£ãã®ã§ãã·ã¥ãã¨æ´ããããããã«éãã¦å¹¾ã¤ã便å©ãªãã¼ã«ãå®è£ ãããããã®ã§ç´¹ä»ãã¾ãã
èªåãã«ã
Chrome Extensionãã¦ã¼ã¶ã¼ãããã°å ±åãããã¾ããã³ã¼ãã®ä¸ã®ãã°ã ã¨æ¤åºåºæ¥ããããã®ã§ãããExtensionã®å ´åã¯UIä¸ã®ä¸å ·åã®å²åãå¤ãããã¾ã«Windowsã¨ãç¹å®ã®ç°å¢ããã¼ã¸ã§ã³ã§ããåç¾æ§ã®ãªããã°ããã£ããããã¨æå ã®ç°å¢ã§åç¾ããã®ã大å¤ãªã®ã§ãåç¾ã§ãã人ã«ãã§ãã¯ããé¡ãããããããã¨ã«ãªãã¨æãã¾ãã
ãã®æãç¸æãã¨ã³ã¸ãã¢ã ã£ãããªãã¸ããªãcloneãã¦é ãã¦åä½ç¢ºèªãã¦ããã ãã¨ããããã§ãªããã°GitHubãªã©ããzipãæå ã§è§£åãã¦ãããã¨ããã¦ããã£ããããã¼ã¢ã¼ãããªã³ã«ãã¦ããã£ã¦è©¦ãã¦ããããã¨ã«ãªãã¾ãã
ããçµæ§é¢åã§æ軽ã«bugfixã®ç¢ºèªããã¦ãããã«ã¯æé ãå¤ãã¦ç³ã訳ãªãæãã«ãªãã¾ãã
ChromeExtensionã«ãããã±ã¼ã¸ãã¡ã¤ã«(crx)ãããã®ã§ããããæ軽ã«é å¸ã§ããã¨å¬ãããã¨ãããã¨ã§ã¾ãã¯ãã®é¨åã®æ´åããå§ãã¾ããã
Chrome Extensionã®ããã±ã¼ã¸ã³ã°ã«ã¤ãã¦ã¯å ¬å¼ããã¥ã¡ã³ãã«æ¸ããã¦ãã¾ãããChromeèªä½ãå¿ è¦ã ã£ãããæ²ç¤ºããã¦ããã¹ã¯ãªãããOpenSSLãªã©ã§çæããéµãå¿ è¦ã ã£ãããã¦ã¡ãã£ã¨é¢åã§ãã
crxãBuildããããã®npm module crx
ã¨ããã®ãå
¬éããã¦ããã®ã§ããã使ãã®ãç°¡åã§è¯ãããã ã£ãã®ã§ããã®ã¢ã¸ã¥ã¼ã«ããã«ãã«é¢ãã¦ã¯å
¨é¢çã«ä¿¡ç¨ãããã¨ã«ãã¾ããã
ãã®crxãå©ç¨ããã¨ãcrxããã±ã¼ã¸ã ãã§ãªã--zip-output
ãªãã·ã§ã³ãç¨ãããã¨ã§zipãçæãã¦ãããã®ã§ãWebStoreã«ãªãªã¼ã¹ããããã®zipããã®ã³ãã³ãã§çæã§ãã¾ãã
ã¡ãªã¿ã«ãã®crxã³ãã³ããmasterã«ã¯mergeããã¦ããªãã®ã§ããã.gitignore
ãªã©ã¨åãè¨æ³ã§ä½¿ãã.crxignore
対å¿ãå®è£
ããPRãããã¾ãã https://github.com/oncletom/crx/pull/51 *1
ä½æ¦ã¨ãã¦ã¯CIä¸ã§crxã³ãã³ãã§pushããããã³ã«testã®å¾ã«buildãã¦DLå¯è½ã«åºæ¥ãã¨æ´ã«ä¾¿å©ã§è¯ããããªã®ã§ãã¤ãã§ã«ãã®ããã®GitHubAPIãå©ããã¨ã«ãã¾ããã
ãã¨ã¯crxãã¡ã¤ã«ã®é
ç½®ãé©å½ãªãµã¼ãã«ãã¦ãªã³ã¯ãåå¾ããã°è¯ãããã§ããgyazo-chrome-extensionã§å©ç¨ãã¦ããCircleCIã«ã¯ããã©ã«ãã§gsutil
ã³ãã³ããå
¥ã£ã¦ããããGyazoæ¬ä½ã§ãGCPãå©ç¨ãã¦ããã¨ããçç±ã§GCSã«é
ç½®ãã¦ãã¾ãã
gyazo-chrome-extensionã§ã¯この流れを実装したスクリプトããã¹ãã®å¾ã«å©ãã¦å®è¡ãã¦ãã¾ãã
ããããã¨ããããå ·åã§commitã®åº¦ã«crxããã«ããã¦ãªã³ã¯ãè²¼ã£ã¦ãããã®ã§ãã¬ãã¥ã¢ã¼ãªã©ã¯ç°¡åã«åä½ç¢ºèªãè¡ããã¨ãåºæ¥ãããã«ãªãã¾ããã
( via change webfont to svg images by pastak · Pull Request #152 · gyazo/gyazo-browser-extension · GitHub )
èªåãªãªã¼ã¹
Chrome Extensionã®ãªãªã¼ã¹ãæåã§ããã¨çµæ§é¢åã§ãã
https://chrome.google.com/webstore/developer/dashboard ã«è¡ã£ã¦ãã¢ããªã±ã¼ã·ã§ã³ãé¸ãã§ããªãã¸ããªã®masterãªãproductionãªããpullãã¦zipã«ãããã®ãã¢ãããã¼ãããã¨ããã®ãå¿ è¦ã«ãªãã¾ãã
Chrome WebStoreã«ãAPIãããã®ã§ãããã使ããã¨ããä½æ¦ãç´¹ä»ãã¾ãã
curlãªã©ã使ã£ã¦ãããããã£ã¦ãè¯ãã£ãã®ã§ããããã£ãããªã®ã§npmã¢ã¸ã¥ã¼ã«ã¨ãã¦ã³ãã³ãã©ã¤ã³ãã¼ã«ãä½ãã¾ããã
æåã¯ãããCIã§å©ãã¨ããä½æ¦ã§ãããGoogleã®OAuthã®èªè¨¼ã®æéãçµæ§çãã¦é »ç¹ã«refresh_token
ãç¨ãã¦access_token
ãæ´æ°ããå¿
è¦ãããã¨ããã®ã«æ°ä»ãã¾ããããã®åº¦ã«ç°å¢ãæ´æ°ããªãã¨ãããªãã®ã§ãããCircleCIã®ç°å¢å¤æ°ãAPIãªã©ããã¢ãããã¼ãåºæ¥ãªãã®ã§ãæéãåãã度ã«æã§åå¾ãã¦ç°å¢å¤æ°è¨å®ãã¢ãããã¼ãããã¨ããå¿æ¸©ã¾ãä¸ç観ã«ãªã£ã¦ãã¾ããã*2
ãã®ã¾ã¾ã§ã¯ã¤ããã¨ãããã¨ã§é©å½ãªå¤é¨ã®è¨æ¶é åãå©ç¨ãã¦tokené¢ä¿ãè¨æ¶ããããã¨ããä½æ¦ãç«ã¦ã¾ããã
ããã¦ä½ã£ãã®ããchrome-extension-release-herokuã§ãã
å
ã»ã©ã®chrome-webstore-managerã§åºæ¬èªè¨¼ãå
¬éãªã©ã®æ©è½ã®å®è£
ã¯åºæ¥ã¦ããã®ã§ããããJSã®ã³ã¼ãããrequire
åºæ¥ãããã«æ¹åãå©ç¨ãã¦ãã¾ãã
deployããªãã¸ããªã®READMEã«ç½®ãã¦ããherokuãã¿ã³ããä¸çºã§åºæ¥ãããã«ãªã£ã¦ãã¾ãã
é©å½ã«deployãã¦è¨å®é
ç®ãåããã¨ã¢ããªã±ã¼ã·ã§ã³ãherokuä¸ã§ç«ã¡ä¸ããã¾ãããã®å¾ã«/initialize
ããã©ã¦ã¶ã§è¸ãã¨Google OAuthã®èªè¨¼ã«é£ã¶ã®ã§ãChrome WebStoreã®ã¢ã¤ãã ãªã¼ãã¼ã®ã¢ã«ã¦ã³ãã§èªè¨¼ããã°æºåå®äºã§ãã
ãã¨ã¯ãªãªã¼ã¹ã®ã¿ã¤ãã³ã°ã§CIããzipã/release
ã«POSTã§æãã¤ããã°ã¦ã§ãã¹ãã¢ã¸ã®ãªãªã¼ã¹ã¨å
¬éããã£ã¦ããã¾ãããã®æã«CIããç§å¯ã®ãã¼ã¯ã³ãä¸ç·ã«æ¸¡ãå¿
è¦ãããã®ã§ããã®ãã¼ã¯ã³ããæ¼ããªããã°ãURLãå
¬éããã¦ãã¦ãå¤é¨ããæªæã®ããzipãæãããã¦åæã«å
¬éãããå±éºã¯é²ãããã¯ãã§ãã
èªåã§æ¸ãã¦ãããGyazoã®Chrome Extensionã®ãªãªã¼ã¹ã«ä½åº¦ãå©ç¨ãã¦ããã®ã§ãããä»ã®ã¨ããåé¡ãªãåãã¦ãã¾ãã
ã¾ã¨ã
GyazoExtensionã§ã®Chrome Extensionã®èªåãã«ãã¨èªåãªãªã¼ã¹ã«ã¤ãã¦å®è·µãã¦ãããã¨ãç´¹ä»ãã¾ããã
ææ¢ãã§è¯ããã¦ããã¨ããæããªã®ã¨ãherokuã®ã¢ããªãªã©ãã¨ããããåãæãã«ä½ã£ãã¨ããä¸ç観ãªã®ã§ãããããåºæ¥ãã¢ã¤ãã¢ãªã©ãããã°issueãPRã§æãã¦ãã ããã
æå¾ã«è¯ããã°Gyazo Extensionå²ã¨æ°åå ¥ãã¦ä½ã£ã¦ãã®ã§ã試ãã¦ã¿ã¦ãã ããããããããé¡ããã¾ãã
ãã£ããWebExtension対å¿ãªã©ãå§ãã¦ãã®ã§ãèå³ãã人ã¯æ¯éæ å ±äº¤æãã¾ãããããããããé¡ããã¾ãã
*1:èªåãæ©è½ãææ¡ããã®ã ãã©ãå®è£ ãæ¸ãã¦ããéä¸ã§å¿ãããªã£ã¦æãä»ããããªãã§ããããä»ã®äººãå®æããã¦ããã¦ããã¨ããåºæ¥äº
*2:ãããæ¸ãã¦ã¦æ°ä»ããã®ã§ãããããããã¦Authorizeã®ç¨®é¡ãé©åã«é¸ã¹ã°æå¤ã¨ããããè¦å´ãããªãã¦æ¸ãã ãããã®ã§ããããã»ã»ã»ãããããªããã£ããæãã¦ãã ããã
Chrome ExtensionãFirefoxãæ¡ç¨äºå®ã®WebExtensionã¨ãã¦æ¸ãæããéã«ä¾¿å©ãªwemfã¨ããã³ãã³ãã©ã¤ã³ãã¼ã«ãä½ãã¾ãã
Chrome Extensionã®package.jsonãWebExtensionã«å¯¾å¿ããããã«å¤æãã¦ãããã³ãã³ãä½ã£ããFirefoxããµãã¼ãæ¸ã®APIã®ã¿ãå©ç¨ãã¦ãããªããããã§å¤æããã°åãããã«ãªãã¯ã https://t.co/leu3lEEmwo
— ç¹å¥ã«ãªã太é (@pastak) February 6, 2016
Firefox46 ã Developer Edition ã¨ãã¦ãªãªã¼ã¹ããã¾ããã WebExtensionã¯Firefox46ã§alpha stateã¨ãããã¨ã«ãªã£ã¦ãã¾ãã
ãã®ã¾ã¾é 調ã«è¡ãã°ã 2016-08-02ã«ãªãªã¼ã¹ãããäºå®ã®*1Firefox48ã§stable releaseã«ãªãã¾ãã
ã¾ãä¸è¨ããã°è¨äºã§ã触ãããã¦ãã¾ããã addons.mozilla.org (AMO) ã«ã¢ãããã¼ããã¦ç½²åããããã¨ãåºæ¥ãããã«ãªã£ã¦ãã¾ãã
å æ¥ãWebExtension現状確認してみた - Pastalablog in はてなã¨ããè¨äºãæ¸ãã¦ç¾ç¶ã確èªãã¾ãããæè¿ã¾ã§çµæ§å¤§ããã®ãã°*2ããã£ã¦ãåãããExtensionãããªãã·ã³ãã«ãªãã®ã ãã ã£ãã®ã§ãããå æ¥ããã解æ¶ããã¦ããªãã®æ°ã®Extensionãåãããã«ãªã£ã¦ãã¾ãã
åãããã«ã¯å ·ä½çã«ã¯ãã®2ã¤ã®ãã¨ãè¡ãå¿ è¦ãããã¾ãã
- æªå®è£ JavaScript APIã®å©ç¨ãé¿ãã
- manifest.jsonã®æ¸ãæã
ã¨è¨ã£ã¦ã2ã¤ã¨ã Chrome incompatibilities - Mozilla | MDN ã«Chromeã¨ã®å·®åãæ¸ããã¦ããã®ã§ãããã«æ¸ããã¦ããéãã«ããã°OKã§ãã
ä»åä½ã£ãwemf
ã¨ããã³ãã³ãã©ã¤ã³ãã¼ã«*3ã¯ãä¸è¨ã®ä½æ¥ã®ãã¡ã®manifest.jsonã®æ¸ãæãä½æ¥ãã·ã¥ãã¨ãã£ã¦ããããã¼ã«ã§ãã
ãã£ã¦ããããã¨ã¯ä»¥ä¸ã®ãã¨ã§ãã
- å¿
ãå«ã¾ãã¦ããã¹ããã¼ã¨å¯¾å¿ããå¤ã追å
- ä¸è¶³ãã¦ãããã¼ãããå ´å㯠package.json ãªã©ããçæãã¤ã¤ã対話ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§çæãã¾ã
- æªå¯¾å¿ã®ãã¼ãåé¤
- ç¾ç¶æªå¯¾å¿ã®ãã¼ãããã¨ã¤ã³ã¹ãã¼ã«ã«å¤±æããã®ã§ããã®ãããªãã¼ãåé¤ãã¾ãã
- æªå¯¾å¿ã®ãã¼ã¯ã¼ãã®ä½¿ç¨ãéç¥
web_accessible_resources
ã§ã¯ã¤ã«ãã«ã¼ãã使ããªããªã©ãããã®ã§ããã®ãããªãã¼ã¯ã¼ããå«ãã§ããå ´åã¯åé¤ããã«éç¥ãã¾ãã
% npm install -g wemf
ã§ã¤ã³ã¹ãã¼ã«ãã% wemf /dir/chrome-ext/package.json -O /dir/firefox-ext/package.json
ã§å¤æãããã®ãåºåãã¦ããã¾ãã
ã¾ãã--validate
ãªãã·ã§ã³ãå©ç¨ãããã¨ã§manifest.jsonã®ç°¡åãªããªãã¼ã·ã§ã³ãã§ãã¯ãåºæ¥ã¾ããï¼å³å¯ãªå¤ã®ãã§ãã¯ãªã©ãããã®ã§ã¯ãªããæªå¯¾å¿ã®ãã¼ãå«ãã§ããªãããªã©ããã§ãã¯ããã ãã§ãï¼
詳ãã使ãæ¹ã¯ãªãã¸ããªã®READMEã--help
ãªã©ãè¦ã¦ãã ããã
ã¡ãªã¿ã«ä»ã®v0.2.1
ã¯2015-02-06 (JST) æç¹ã§manifest.json - Mozilla | MDN ã«æ¸ããã¦ããæ
å ±ãåºã«å®è£
ãã¦ãã¾ãã
ä½ãæ´æ°ãããã°æ¥µå追éããã¤ããã§ãããä½ãããã°PRããã ããã
ã©ãããå©ç¨ãã ããã
*1:https://wiki.mozilla.org/RapidRelease/Calendar
*2:https://bugzilla.mozilla.org/show_bug.cgi?id=1208257 ChromeExtensionã®ããã¥ã¡ã³ãã§optionalã«ãªã£ã¦ããå¼æ°ã解éåºæ¥ãªãã¨ãããã°
*3:åå㯠WebExtension Manifest Formatterã®ç¥ã§ã
Herokuä¸ã§NodeJS+OpenCVç°å¢ãæ§ç¯ããããã®Docker Imageä½ã£ã
表é¡éãã®ãã®ãä½ã£ãã®ã§å ±åãã¾ãã
- Docker Hub: https://hub.docker.com/r/pastak/docker-heroku-nodejs-opencv/
- repository: https://github.com/pastak/docker-heroku-nodejs-opencv
çµç·¯ã¨ãã¦ã¯週末にOpenCVとimagemagickで顔合成するツール作ったã®ã§ããããWebã¢ããªã±ã¼ã·ã§ã³åãããã¨æã£ã¦ä½ã£ãã
ãããã¼ãããã®ããã°ã«æ¸ããã¦ããæ å ±ãåèã«ãããããã£ã½ãåãããã«ãªã£ã¦ãã§ããæãã
すぎゃーんさんの作られたDockerfileããã¼ã¹ã«heroku/docker-nodejsã¨docker-pythonãåèã«ãã¦æ§ç¯ããã
æ§æã¨ãã¦ã¯docker-pythonã®ä¸ã§NodeJSã¨OpenCVãããããã¤ã³ã¹ãã¼ã«ããã¨ããæãã«ãªã£ã¦ããã
OpenCVãªã©ã®ã¤ã³ã¹ãã¼ã«ã¯ãããªãã¨æåããã®ã ãã©ãnode-opencvãçµæ§é¬¼éã§ãããã«å¯¾å¿ããããã«ããã¤ãç°å¢å¤æ°ãé©åã«è¨å®ããããOpenCVã®ãã¼ã¸ã§ã³ã3.0ãã2.4ç³»ã«ä¸ãããªã©ããã¦ããã
Herokuã«DockerãDeployããæ¹æ³ã«é¢ãã¦ã¯公式ドキュメントに詳しく書かれてるã®ã§ããããè¦ã¦heroku-docker pluginã§ãããã¨ããã¨åãã¯ãã
詳細ã«ã¤ãã¦ã¯é¡èªèããã¦â¯ã§å²ãã¢ããªã±ã¼ã·ã§ã³ãæ¸ãã*1ã®ã§ããããåèã«ãã¦ããããã°è¯ããã¨æãã¾ãã
repository: https://github.com/pastak/docker-heroku-nodejs-opencv-sample
App URL: https://heroku-nodejs-opencv-sample.herokuapp.com/
ä½ãããã°issueãªã©ã§æãã¦ä¸ããããããããé¡ããã¾ãã
*1:ã³ã¼ã㯠http://qiita.com/n0bisuke/items/f650a876d14807b70f80 ã®ãã»ã¼ãã®ã¾ã¾å©ç¨ãã¾ãã
WebExtensionç¾ç¶ç¢ºèªãã¦ã¿ã
ãã®ããã°è¨äºã¯ KMCã¢ããã³ãã«ã¬ã³ãã¼2015 ã®5æ¥ç®ã®è¨äºã§ãã
ã¡ãªã¿ã«æ¨æ¥ã®è¨äºã¯ id:hnagamin ã® 好きなSCP-JPの紹介 - hnagamin ã§ããã
ãµã¼ã¯ã«ã®äººãã¡æè¿ãã£ã¨SCPã®è©±ãã¦ã¦ãscp
ã£ã¦è²ã
ãããã ãªãã¨æã£ã¦ããã®ããå®ã¯ãããã話ã¨ã¯éã£ãã¨ãããã¨ãçºè¦ãã¦è¯ãã£ãã§ãã
ä»ã¾ã§ã®ãã©ã¦ã¶æ¡å¼µã«ã¤ãã¦
ãã©ã¦ã¶æ¡å¼µã¨ããã°çãããä¸åº¦ãããã¯æ¸ãããã¨ããã®ã§ã¯ãªãã§ããããã
ä»ã¾ã§ã¯ãã©ã¦ã¶ã§ããããå®è£ æ¹æ³ã«éãããã£ã¦ãã£ã¨ã¾ã¨ããã¨å¤§ä½ãããªæãã§ãã
- Google Chrome ã Opera
- HTML+JS+CSSã§æ¯è¼çã«ã³ã¿ã³ã«æ¸ããã
- Chrome: http://developer.chrome.com/extensions/
- Opera: https://dev.opera.com/extensions/
- APIã¯ã»ã¼ä¸ç·ã ãå¾®å¦ã«å·®åãããã https://dev.opera.com/extensions/apis/
- Safari
- åããHTML+JS+CSSã ãã©ãBlinkã¨ã¯APIãçµæ§éã
- https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/Introduction/Introduction.html
- Firefox
- XUL + XPCOMãç¨ããéçºã
- Addon-SDKãç¨ããéçºã(crx / jpm)
- éå»ã«ã¹ã©ã¤ããä½ãã¾ããã Firefox Add-on SDK 入門
Mozilla Firefoxã¯æè¿Addon-SDKããªãªã¼ã¹ããXULãªã©ã§ã®éçºããæ§Jetpackãå©ç¨ããéçºã¸ã¨ç§»è¡ãéå§ããFirefox 38ããã¯ãã«ããã¼ã«ç¾¤ãnodeJSã§å®è£ ããããã®ãå©ç¨å¯è½ã«ãªãã¾ããã*1
ãããªãããªã§åä½æãæãã«ãã©ã¦ã¶æ¡å¼µã®å®è£ ãä½ã£ã¦ããããã§ããã
WebExtensionã£ã¦ä½ï¼
- Firefox アドオン開発の未来 | Mozilla Developer Street (modest)
- The Future of Developing Firefox Add-ons | Mozilla Add-ons Blog
- Mozilla、「Firefox」のアドオンを「Google Chrome」互換の“WebExtensions”へ - 窓の杜
ã¨ã¾ãããã¾ã§æ¥ã¦ããããã£ã¦ã¿ãã¨Firefoxã§æä¾ããã¦ããAdd-onã¨åçã®ãã®ãChromeãªã©ã«ãæä¾ããã¦ããä¸ã§ãAdd-onSDKãæ¼ãé²ããã®ã§ã¯ãªãWebExtensionã¨ãã¦å ±éã®APIãå©ç¨ã§ããããã«ãããã¨ã§Blinkåãã«æ¸ããããã©ã¦ã¶æ¡å¼µãFirefoxã§ãç°¡åã«åãããããã«ãããã¨ãã話ã§ããFirefoxçã«ã¯ãã«ãããã»ã¹ã®è©±ã¨ããããã®ã§ãããããã§ã¯ããã¾ã触ããªãã®ã§ä¸è¨ã®ãªã³ã¯å ãèªãã§ä¸ããã
ä»æ§çå®ã¨ããããã¨ãã話ã¯ãªãã¦ãã¨ããããã¯Firefoxå´ã§Chromeã®ããã¥ã¡ã³ããå®è£ ãåèã«åããããªæåãå®è£ ããã¨ãã話ã§ãã
Microsoft Edgeã«ã¤ã³ã¹ãã¼ã«å¯è½ã«ãªãExtensionãChrome Extensionã¨ã»ã¼åããã®ã«ãªãã¨ãã話ãããã®ã§ãä»åã®Chrome Extensionãã¼ã¹ã®WebExtensionãããã¡ã¯ãã¹ã¿ã³ãã¼ãã«ãªãããã§ãã
åãæ®æ®µã¯Chrome Extensionãããæ¸ãã¦ãã¦ã話é¡ã«ä¸ãã£ã¦ããå®æçã«è©±é¡å·¡åããã¦ããã®ã§ãç¶æ³ãç°¡åã«ã¾ã¨ãã¦ã¿ã¾ãã
ææ°æ å ±ãææ¡ããã人åãæ å ±
æ¥æ¬èªã§ã·ã¥ã·ã¥ãã¨é°å²æ°ãæ´ã¿ãã人ã¯ï¼ yoichiroããã®Chrome Extensions ããè¦ã WebExtensionsãã¾ã¨ã¾ã£ã¦ããæããªã®ã§ããããè¦ã¾ãããã
å®è£ ç¶æ³ããã°ãã©ãã¯ã®é°å²æ°ãæ´ã¿ãã人㯠Are we Web Extensions yet?ã¨ãããã¼ã¸ããã£ã¦ä¾¿å©ãªã®ã§ããããã§ããåç §ãã¹ãbugzillaã¸ã®ãªã³ã¯ããChromeããã¥ã¡ã³ãã»MDNã¸ã®ãªã³ã¯ãFirefoxã®å®è£ ã¸ã®ãªã³ã¯ãããã®ã§ãç¶æ³ã俯ç°ãããããã®ã«ã¯è¯ãã¨æãã¾ãã
Mozilla Wikiã«ãã·ã¥ãã¨éçºç¶æ³ãéçºãã¥ã¼ããªã¢ã«ãã¾ã¨ã¾ã£ã¦ãã¾ããã¨ãããããã®ãã¼ã¸ã«ç®ãéãã¨è¯ãã¨æãã¾ãã
https://wiki.mozilla.org/WebExtensions
MDNããã¥ã¡ã³ããæ´åä¸ã§ã¯ããã¾ãããçå®ã«å¢ãã¤ã¤ããã¾ããéçºãã¥ã¼ããªã¢ã«ãªã©ãããã®ã§ãæéããã人ã¯èªãã§ã¿ãã¨è¯ãã§ãããã
ãµãã¼ãå®äºã®APIã®ãªã¹ãã¯ããã«ããã¾ããã¡ã½ãããã¨ã«è¨è¿°ãããã®ã§ãèªèº«ã§å®è£ ãªã©ãããéã¯ãããåç §ãã¦å®è£ æ¸ã¿ã確èªããã¨åã§ãã
ãµã³ãã«ã³ã¼ããèªã¿æ¸ããã¦ã¿ã
æ¢ã«tabs
ãcontextMenus
ãbrowserAction
ãnotifications
ãªã©ã¯ããç¨åº¦ãµãã¼ãããã¦ããã®ã§ããããã®æ©è½ãå©ç¨ããæ¡å¼µæ©è½ãå®éã«éçºãããã¨ãå¯è½ã«ãªã£ã¦ãã¾ãã
ãµã³ãã«ã³ã¼ããGitHubã«å ¬éããã¦ããã®ã§ããããè¦ãã¦ã¿ããã¨ã«ãã¾ãã
0. ç°å¢æºå
WebExtensionã¯https://nightly.mozilla.org/ã¨https://www.mozilla.org/en-US/firefox/channel/#developerã§åãããã¨ãåºæ¥ã¾ãã
çãããã©ã¡ããã¯ã¤ã³ã¹ãã¼ã«ãã¦ããã¨æãã¾ãããã¾ã ã®äººã¯ã¤ã³ã¹ãã¼ã«ãã¦ãã ããã
ã¤ã³ã¹ãã¼ã«ãããèµ·åãã¦ãabout:configã«ç§»åãã¦ãxpinstall.signatures.required
ã®å¤ãfalse
ã«ãã¾ãã
1. ãµã³ãã«ãã¤ã³ã¹ãã¼ã«ãã¦ã¿ã
https://github.com/mdn/webextensions-examples ã®ã³ã¼ããåããã¦ã¿ã¾ãã
$ git clone [email protected]:mdn/webextensions-examples.git
$ cd webextensions-examples
æ¡å¼µæ©è½ã®ããã±ã¼ã¸ã³ã°ã¯zipå§ç¸®ãã¦æ¡å¼µåãxpiã«ããã°OKã§ããä¾ãã°ãnotify-link-clicks
ãã¤ã³ã¹ãã¼ã«ãã¦ã¿ãã¨ãããã¨ã«ãã¾ãã
$ cd notify-link-clicks
$ zip -r ../notify-link-clicks.xpi *
ããã§åºæ¥ãnotify-link-clicks.xpi
ãFirefoxã®about:addons
ã«ãã©ãã°ã¢ã³ããããããã¦install
ãã¿ã³ãã¯ãªãã¯ããã¨ã¤ã³ã¹ãã¼ã«ã§ãã¾ãã
notify-link-clicks
ã§background scriptãcontent scriptãnotificationãåããã¨ã確èªã§ãã¾ããuser-agent-rewriter
((ã¤ã³ã¹ãã¼ã«å¾ã« http://useragentstring.com/ ã«ã¢ã¯ã»ã¹ããã¨webRequest
ãå©ç¨ãã¦ã¦ã¼ã¶ã¼ã¨ã¼ã¸ã§ã³ããæ¸ãæãã£ã¦ããã¨ã確èªã§ãã¾ãããã®ãã¼ã¸ã§ããå¼ã°ããªãã®ã§æ³¨æ))ãªã©ã試ãã¨browser actionãåããã¨ã確èªã§ãã¾ãã
å®éã«ç§»æ¤ãã¦ã¿ã
æå¾ã«Chrome Extensionãå®éã«ç§»æ¤ãã¦ã¿ã¾ãã
Gyazo Extensionã移æ¤ãããã¨ãã£ã¬ã³ã¸ããã®ã§ãããchrome.tabs.captureVisibleTab
ã®ãµãã¼ããç¡ãã¦æ«æãã*2ã®ã§ãèªåã§éå»ã«ä½ã£ãgyoogleã¨ããã®ã移æ¤ãã¦ã¿ããã¨ã«ãã¾ãã
ãã㯠googleã®æ¤ç´¢çµæã表示ããã¨postMessage
ã§background scriptã«éä¿¡ãã¦ãããã§XHRã§Gyazoã®æ¤ç´¢çµæãåå¾ãã¦ãã¡ãã»ã¼ã¸ãcontent scirptã«è¿ãã¦çµæãæ¿å
¥ããã¨ãããã¤ã§ãã
ãã®æ¡å¼µæ©è½ã§ä½¿ã£ã¦ããAPIã¯Firefoxã®WebExtensionã§å®è£
ããã¦ããã®ã§ãmanifest.json
ã«ã¢ããªã±ã¼ã·ã§ã³æ
å ±ãè¨è¿°ããã ãã§OKã§ãã
WebExtensionã®manifest.json
ã¯Blinkã®ãã®ã¨éã£ã¦ãapplications
ãå¿
é ã§ãã
æä½éã®ãã®ã¯ãã®ãããªæãã§ãã
"applications": { "gecko": { "id": "[email protected]" } }
id
ã®ã¿å¿ é ã§ããè¨æ³ã¯ https://developer.mozilla.org/en-US/Add-ons/Install_Manifests#id ãåç §ãã¦ä¸ããã大æµã¯ä¸è¨ã®ããã«[email protected]
ã®å½¢å¼ã«ãªã£ã¦ããã°OKã§ãã- ä»ãå¿
è¦ã«å¿ãã¦
strict_min_version
ãstrict_max_version
ãªã©ãæå®ãããã¨ãåºæ¥ã¾ãã
å°æ¥çã«ã¯ããã§blink
ãã¼ã使ãã¦ãã¼ã¸ã§ã³æå®åºæ¥ãããã«ããã¨ãããã¨ãªã®ã ã¨æãã¾ãããBlinkã¯ãã®ãã¼ã«ç¾ç¶å¯¾å¿ãã¦ããªãã®ã§ããã®ã¾ã¾ã®manifest.jsonã§Chromeã«ã¤ã³ã¹ãã¼ã«ãããã¨ããã¨ããã®ãããªã¨ã©ã¼ãåºã¾ãã
ããã§ãã«ã(zipã«åºãã¦æ¡å¼µåã.xpi
ã«ãã)ãã¦ã¤ã³ã¹ãã¼ã«ããã¨ç¢ºãã«åãã¾ãããã§ããï¼
ä»å¾ã«ã¤ãã¦
- ãã¼ããããã¯ããã«ããã¾ãã2016å¹´ã®ä¸æ¬ãããã¾ã§ã«ã¯WebExtension1.0ã¨ãã¦ãªãªã¼ã¹ãããã¨ãç®æ¨ã¨ããã¦ãã¾ãã
- AMOã§ã®ãµãã¼ããããããã
- ç¾ç¶
chrome.*
ã®namespaceã§æä¾ãã¦ããAPIãbrowser.*
ã«ç§»è¡ãã¦ãæ¡å¼µåãzip
ã使ãããã- ããã¯æ¨æºåã®ããã§ãã
- Chromeãªã©ã«å®è£
ããã¦ããªãããFirefoxã®ããã¾ã§ã®å¯å®¹ãªAPIã§åãã¦ãã便å©ãªã¢ããªã³ã®ããã®APIã®æ¡å¼µãææ¡ã¯ããã¦ãã¾ãã
- https://wiki.mozilla.org/WebExtensions#Additional_APIs
- çµå±ããããã£ã¦ãã¾ãã¨å·®åãåã¾ããªãã®ã§ã¯ã»ã»ã»
- æ¤è¨ããã¦ãããã®
- Sidebaré¢ä¿ (Chromeã§ã¯å®è£ ããã¦ãªãããOperaã§ã¯å®è£ æ¸)
- åªããã·ã§ã¼ãã«ãããã¼ãµãã¼ã (Vimperatorã®ãããªãã®ãå®è£ å¯è½ã«ãããã)
- tabé¢ä¿ã®æä½ (Tab Mix Plus)
- ãã¼ã«ãã¼é¢ä¿ (ä»ã¾ã§ã®å種ãã¼ã«ãã¼ã¢ããªã³ã®ãããªãã®ãå®è£ ã§ããããã«ï¼
ã¾ã¨ã
ä»å®éã«FirefoxãChromeã§æ¡å¼µæ©è½ããªãªã¼ã¹ããå ´åã¯Add-onSDKãå©ç¨ãã¦ãè³ç£ã¯ãã¾ã使ãã¾ãããªãã®ã§ãWebExtensionã®å®è£ ã¯æ©ãé²ãã§æ¬²ããã¨ããæãã§ãããæå¾ã®ã¨ããã«æ¸ããã¦ãããããªæãã®ãå®è£ ãããã¨ãããã¯Blinkç³»ã§ã¯åããªããªã£ã¦ãã¾ãã®ã§ãããã¯ããã§ã©ããªãã ããã¨æãã¾ãããChromeãªã©ã«ããµã¤ããã¼ã¯æ¬²ããã®ã§åä½é å¼µã£ã¦æ¬²ããã§ãã
APIããæºåãããã°ãã»ã¨ãã©æãå ¥ãããã¨ç¡ãChromeæ¡å¼µãFirefoxã§åãããã«åºæ¥ãã®ã§ã¿ãªããã試ãã¦ã¿ã¦ãã ããã
諸ã æ°ã«ãªã人㯠https://wiki.mozilla.org/WebExtensions ãã辿ããå種ãã°ãã©ãã¯ã追ãããã¦ã¿ã¦ãã ããã
- https://bugzilla.mozilla.org/show_bug.cgi?id=1214433
- https://bugzilla.mozilla.org/buglist.cgi?resolution=---&query_format=advanced&component=WebExtensions&product=Toolkit&list_id=12695583
- https://bugzilla.mozilla.org/buglist.cgi?list_id=12592201&o1=anywords&v1=dev-doc-needed&f1=keywords&query_format=advanced&component=WebExtensions&product=Toolkit
ãã®ããã°è¨äºã¯ KMCã¢ããã³ãã«ã¬ã³ãã¼2015 ã®5æ¥ç®ã®è¨äºã§ããã
ææ¥6æ¥ç®ã¯ @dnek_ ããã®ãUnambiSweeperã¨ããandroidã¢ããªä½ã£ãã®ã§ãã®è¾ºã®ä½ããã§ãã
彼㯠マインスイーパー雑感 - KMC活動ブログ ã¨ãã§ããã¤ã³ã¹ã¤ã¼ãã¼ã®è©±ããã¦ããã®ã§ãããã©ãããæè¿Androidã¢ããªã«ç§»æ¤ãããããã®ã§ããããæãã®è©±ãåºã¦ããã£ã½ãã§ããä¹ããæå¾ ï¼
KMCM
京大ãã¤ã³ã³ã¯ã©ãã§ã¯ãã©ã¦ã¶æ¡å¼µã«èå³ãããæ°å ¥é¨å¡ãåéãã¦ãã¾ããå¹´é½¢ãæå±ãå½ç±ãå®æãã®ä»è«¸ã ã«é¢ããå¶ç´ã¯ããã¾ããããã¤ã§ãä¾ä¼ã«éã³ã«æ¥ã¦ã¿ã¦ãã ããã詳ããã¯å ¥é¨æ¡å ãè¦ã¦ä¸ããã
*1:ãã®è¾ºã®jpmã®è©±ã¯KMCã®é¨èªã«æ¸ããã®ã§ãã³ãã±ãªã©ã§è²·ã£ã¦ä¸ããï¼ https://www.kmc.gr.jp/events/c88/
*2:https://github.com/pastak/gyazo-chrome-extension/tree/firefox-webextension
iTunesStoreã¨Amazon Musicãåæã«æ¤ç´¢ã§ããã¦ã§ãã¢ããªæ¸ãã
iTunesStore(Apple Music)ã¨Amazon Prime Musicãã¾ã¨ãã¦æ¤ç´¢ã§ãããã¤æ¸ãã https://t.co/lSD1yF6N6V
— è¾åæ太å@ã¤ã«ID: pastak (@pastak) 2015, 11æ 24
æè¿ãã¤ãå ã®ç¤¾é·ãNodeJSã§ã¦ã§ãã¢ããªãæ¸ãã¦ãããããã¦ãNodeJSã®ãããã話ããã¦ãããä¹ ãã¶ãã«è¶£å³ã§ã¦ã§ãã¢ããªã§ãæ¸ããã¨ããæ°æã¡ã«ãªã£ãã®ã§ä½ã£ãã
ããã¯ä½ï¼
ã¡ããã©Amazon Prime Musicããªãªã¼ã¹ãããæ¥ã«å§ããã®ã§ã¿ã¤ãã«ã®ãããªé°å²æ°ã®ã¦ã§ãã¢ããªã«ãªã£ãã
使ãæ¹ã¯ç°¡åã§é©å½ã«ãã¼ã¯ã¼ããå ¥åããã¨ãã®ãã¼ã¯ã¼ãã§ã®æ¤ç´¢çµæãåºãã¦ãããã
AppleMusicã¯åçå¯è½ãªå ´åã¯ãã§ãã¯ãå ¥ã£ã¦ãããã¨iTunesã§ãã¤ã¬ã¯ãã«éãã¨ãããããã®ãåºæ¥ãã
Amazonã¯ããåãããªãã£ãã®ã§ãAmazonPrimeMusicã¯ãã¼ã¸ã«è¡ã£ã¦ç¢ºèªãã¦é ãã¨ããæãã«ãªã£ã¦ããæ°åãåºãã°åºæ¥ãã®ããã ãã©APIã®ã¬ã¹ãã³ã¹ç¨ãã§ãç¡ãããã ã£ããããããããã¨ã«ãªã£ã¦ãã
ä»ã®ã¨ããherokuã®Freeãã©ã³ãå©ç¨ãã¦ããã®ããã£ã¦ã¬ã¹ãã³ã¹ãé ããå¤åhobbyã¨ãã«ãããããå°ããã·ã«ãªãã®ã ããã¨æã£ã¦ãã
Recent Keywordã«ç´è¿æ¤ç´¢ããã10ã¯ã¼ãã表示ãã¦ããã®ã§ãçºæ³æ¯æ´çã«ä½¿ããã®ã§ã¯ã¨æã£ã¦ããApple Musicè¯ãã®ã ãã©ããfor youãã¨ãnewãã¨æ¤ç´¢ã§ããæ²ãæ¢ããªãã¦ãnewããããªã«è¡¨ç¤ºä»¶æ°ãå¤ããªãã®ã§digã£ããæ°ä»ããå¾ãã«ã¯for youã®ãã¬ã¤ãªã¹ãããã¢ã¼ãã£ã¹ãã辿ã£ã¦è¡ãã¨ãããããã®ãå¿ è¦ãªã®ã§ãä»ã®äººãèãã¦ãã®ã¨ãããããã®ç¥ãããè¯ããªã¨æã£ã¦ã¤ããã
ãã¬ãã¥ã¼ãã¹ãã¼ããã©ã³ã®ãã©ã¦ã¶ã§ãèããã¨æãã®ã§ãåºå ã¨ãã§åã ã¡ã«æ²ãæãããããã®ã¨ãã«ã使ã£ã¦æ¬²ããã
ããããæãã§Twitterã§å ±æã¨ããããããã§ãã
Apple Musicã§noriakiè´ããã®åãã¦ç¥ã£ããnoriakiãã®æ²èããã®è¦ã¤ããå | ãã®æ²èããã®è¦ã¤ããå https://t.co/WxS65El0Ge #Music_kikeru_kun
— è¾åæ太å@ã¤ã«ID: pastak (@pastak) 2015, 11æ 24
JbDubsã®æ²ããã®ã§èãã¦æ¬²ããã
ãjbdubsãã®æ²èããã®è¦ã¤ããå | ãã®æ²èããã®è¦ã¤ããå https://t.co/0mA08zSFNa #Music_kikeru_kun
— ã²ã§ã·ã¹ (@hidesys) 2015, 11æ 24
ä½ãããã°æãã¦ä¸ããããããããé¡ããã¾ãã
éçºé¢ä¿ã®è©±
JSéçºé¢ä¿ç¾ç¶ãææ¡ããããã«ä¹
ãã¶ãã«æ¸ããWebã¢ããªã±ã¼ã·ã§ã³ã§ããiTSã¨Amazonããè¦ã¤ãã¦ãã¦ããããã¤ã§ã / âãã®æ²èããã®è¦ã¤ããåâ https://t.co/MWcX5CaVLq
— è¾åæ太å@ã¤ã«ID: pastak (@pastak) 2015, 11æ 24
æè¿ãã¤ãã§ããã£ã¨ES6ã¨React触ã£ã¦ãããElectronã¢ããªã±ã¼ã·ã§ã³ãè²ã æ¸ããããã¦ã¦ãããã³ãã¨ã³ãJSãããæ¸ãã¦ããã©ãNodeJSèªä½ã¯CLIãã¼ã«æ¸ãããã¨ããããã¦ãªãã£ããæè¿ã®JSéçºé¢ä¿ç¾ç¶ææ¡ãè¾¼ãã¦ä»åã¯ãµã¼ããµã¤ããJSã§æ¸ããã
gulp+babel+browserifyã§ãµã¼ãã¼ãµã¤ãã¯koaãããã³ãã¨ã³ãã¯Reactã¨ããé°å²æ°ã§ã
— è¾åæ太å@ã¤ã«ID: pastak (@pastak) 2015, 11æ 24
- Babel6åãã¦è§¦ã£ãããpresetã¨ãè¨å®ããªãã¨ãããªãã®åãã£ã¦ãªãã¦æåã¹ãã£ã¦éãããã·ã¥ãã¨ãã®ã¾ã¾åºã¦ãã¦æå¿«ãªæ°æã¡ã«ãªã£ãã
- ãµã¼ããµã¤ãã®WAFã«ã¯koaã使ã£ããgeneratorã使ã£ã¦ãã®ãç¹å¾´ã£ã½ãã
- Reactã¯v0.14ã使ã£ãã
観è³ç¨ã§ããä½ãæã£ããæãã¦ä¸ããã
GyazoãSpotlight風ã®UIã§æ¤ç´¢ã§ããElectronã¢ããªãå ¬éãã¾ããããã©ã¦ã¶æ¡å¼µããããã
éå»ã«Spotlightã«ãã©ã°ã¤ã³ãçµã¿è¾¼ãFlashlightåãã«IvySearchãæ¤ç´¢ãã ã®ãæ¸ãããã¨ããã£ã*1ã®ã ãã©ãYosemiteã«ãªã£ã¦ããåããªããªã£ã¦ã©ãããä»å¾ãFlashlightã¯éçºãããªããããªé°å²æ°ãªã®ã§ãå æ¥è¡ããããã¤ãå ã®ããã«ã½ã³ãå©ç¨ãã¦Electronã使ã£ã¦Spotlight風ã«æ±ããã¢ããªã±ã¼ã·ã§ã³ã¨ãã¦æ¸ãç´ããã®ã§ç´¹ä»ãã¾ãã
Ninjaã¦ã¼ã¶ã¼ãããªãã¨IvySearchæå¹ã«ãªããªãã®ã§å©ç¨ã§ããªãã®ã§ãããå¶ç¶ä»æ¥ããIvySearchãå ¨ã¦ã¼ã¶ã¼ã«è§£ç¦ããã¦ããã®ã§çããå©ç¨ã§ããã¨æãã¾ãã
ããã¯ä½
MacOSXã®Spotlightã®ãããªUIã§IvySearchãæ¤ç´¢ãã¦çµæãã¯ãªãããã¼ãã«ä¿åã§ããã¢ããªã±ã¼ã·ã§ã³ã§ãã
ã¯ãªãããã¼ãã«ã¯URLã¨HTMLã¨ç»åBlobãåæã«å ¥ãã¾ãã
使ãæ¹
- https://github.com/pastak/gyazotlight/releases ãã èªèº«ã®ãã©ãããã©ã¼ã ã«å¯¾å¿ããzipããã¦ã³ãã¼ããã¦è§£åã
- Gyazotlight.app / .exe ãªã©ãèµ·å
- MacOSXã®å ´åã¯ãããã¯ã¼ã¯åä¿¡æ¥ç¶ãã表示ãããã®ã§ã許å¯ã
- Gyazoã®ç»é¢ã表示ãããããã°ã¤ã³ãã¦ãã ãããï¼ãã°ã¤ã³å¾èªåã§éãã¾ãï¼
- å³ä¸ã«å¿è
ã表示ãããã®ã§ãããããèµ·åãããå¼ã³åºãç¨ã®ã·ã§ã¼ãã«ãããã¼ãè¨å®ãããã¨ãã§ãã¾ãã
- åæç¶æ
ã ã¨
Control+Shift+G
ã§å¼ã³åºããã¨ãåºæ¥ã¾ãã
- åæç¶æ
ã ã¨
ChromeãFirefoxããå©ç¨ããæ¹æ³
Chrome Extensionã¨é£æºãããã¨ã§ãã©ã¦ã¶ä¸ã§ããã¹ããç·¨éãã¦ããã¨ããã«Gyazotlightãä»ãã¦Gyazoã®URLãæ¿å ¥ãããã¨ãåºæ¥ã¾ãã
Install for Chrome
- https://github.com/pastak/gyazotlight-bridge/releases ãã
chrome.crx
ããã¦ã³ãã¼ã - chrome://extensions ã«ãã©ãã°ã¢ã³ããããã
Install for Firefox
- https://github.com/pastak/gyazotlight-bridge/releases ãã
@gyazo-input-extension*.xpi
ããã¦ã³ãã¼ã - Firefoxã«ãã©ãã°ã¢ã³ããããã
使ãæ¹
- ããã¹ãå
¥åä¸ã«
Control + Shift + U
ãæ¼ã㨠Gyazotlight ãèµ·åããã®ã§é©å½ãªç»åãé¸ã¶ã - ã«ã¼ã½ã«ä½ç½®ã«Gyazoã®URLãæ¿å
¥ããã¾ãã
- ä»ã®ã¨ãããé©å½ãªãã¯ã¤ããªã¹ãã«ãã£ã¦Qiitaã¨GitHubã«è²¼ãã¨ãã ãã¯Markdownã«ãªãã¾ãã
ãã¾ã: ãã©ã¦ã¶æ¡å¼µããå¼ã³åºãä»çµã¿
1passwordã®ãã©ã¦ã¶æ¡å¼µããã¤ãã£ãã¢ããªãå¼ã³åºãä»çµã¿ã«ãªã£ã¦ããã®ã§ãã©ããªã£ã¦ãã®ã追ãããããWebSocketãå©ç¨ãã¦ããã®ã§å°ãçä¼¼ãã¦ã¿ãã
- Electronã¢ããªã±ã¼ã·ã§ã³å ã«websocketãµã¼ããç«ã¦ã
- ChromeExtensionããwebsocketã§æ¥ç¶
- Electronã«ã¡ãã»ã¼ã¸ãé£ãã§ãããGyazotlightã®ç»é¢ã表示
- çµæãwebsocketã§è¿ã
- ChromeExtensionã§çµæãåãåã£ã¦ã«ã¼ã½ã«ä½ç½®ã«æ¿å ¥
websocketãªã®ã§ä»ã®ãã©ã¦ã¶æ¡å¼µã¨ãã¢ããªã±ã¼ã·ã§ã³ããå©ç¨ãããå ´åãæ¯è¼çç°¡åã ã¨æãã¾ãã
ãã®ä»
ç´°ãã使ãæ¹ã¯GitHubã«æ¸ãã¦ããã¨æãã¾ãã
MacOSXã§ã¯åãã®ã確èªãã¦ã¾ããä»ã®ãã©ãããã©ã¼ã ã§ã¯ç¢ºèªãã¦ãªãã®ã§ä½ãããã°issueã§æãã¦ä¸ãããPRãæè¿ã§ãã