ããã«ã¡ã¯ãç§ã®ååã¯ã¢ã¬ã¯ãµã³ããŒã§ãã
鱿«ã«ããã°ã©ããŒ
ã«ãã£ãŠèªè»¢è»ã
æžããŸãã

ç§ãã¡ã®å¿åã®èªè»¢è»ãã«ããŒã®ã¯ã©ãã§ã¯ãå¥ã®åäœãäœæããã ãã§ãªããã³ãã¥ããã£ãšå
±æããããšãç¹å¥ãªã·ãã¯ãšèŠãªãããŠããŸãã GithubãŸãã¯npmã«ãããžã§ã¯ããé
眮ããæ¹æ³ã«ã€ããŠã®èšäºã¯èšå€§ãªæ°ã«éããªããããåãããšã100,500åå詊è¡ããããšã¯ããŸããã
仿¥ã®èšäºã§ã¯ããžã°ãœãŒããºã«ã§æ¬¡ã®èªè»¢è»ãèžè¡çã«æœãããã»ã¹ããããå€ãã®æ¥œãã¿ãåŸãã®ã«åœ¹ç«ã€ãããããªããæããã§ãªã埮åŠãªç¹ã匷調ããããšæããŸãã
èŠåïŒ1 ïŒç§ã¯èªåèªèº«ã究極ã®çå®ãšã¯æ±ºããŠèããŸããããŸãã以äžã¯ãã¹ãŠç§å人ã®ïŒãããã誀ãã®ïŒæèŠã§ãã ããªããæé«ãç¥ã£ãŠãããªããã³ã¡ã³ãããŠãã ããã äžç·ã«ãèªè»¢è»ã¯ãã£ãšæ¥œãããçå®ã¯ç¢ºç«ããã®ãç°¡åã§ãã
èŠåïŒ2 ïŒèªè
ã¯ã³ãã³ãã©ã€ã³ãGitãããã³npmã«ç²ŸéããŠãããšæ³å®ããŸãã
ä»ã·ãŒãºã³ã¯ECMAScript 6ã§æžãã®ãç¹ã«
æµè¡ã«ãªããŸãããECMAScript6ã¯2æ20æ¥ã«
ãªãªãŒã¹åè£ã®ã¹ããŒã¿ã¹ã«éããã®ã§ãç§ãã¡ã¯ãã®äžã«äžæœã®ãã®ãæ¯ãããããšå¿ããä»®å®ããŸãããã
ãã§ã«æ°ãããã©ã«ããŒãäœæãããã®ãã©ã«ããŒã§
npm init
ã³ãã³ãã
npm init
ããŠã
package.json
ãã¡ã€ã«ãäœæãããšä»®å®ããŸãã
ãããžã§ã¯ãã®æ§é ãæ€èšããŸãã
äžè¬ã«ãES.nextã®ãµããŒãã¯ããã©ãŠã¶ãŒã§node.js / io.jsããŸã äžå®å
šã§ãããšããããšã§ããæçåãããŠãããšãèšããŸãã ãã®ããã2ã€ã®ãªãã·ã§ã³ããããŸãïŒES.nextã®ãã¹ãŠã®æ©èœã䜿çšããã®ã§ã¯ãªããã¿ãŒã²ãããã©ãããã©ãŒã ã§ãµããŒããããŠããæ©èœã®ã¿ã䜿çšãããããã©ã³ã¹
ã³ã³ãã€ã©ãŒã䜿çšããŸãïŒ
èïŒããããããããã©ã³ã¹
ãã€ã©ãŒã倿ããä»ã®æ¹æ³ã¯ïŒïŒ ïŒã
ãã¡ãããæå¥œå®¶ãšããŠãES6 / 7ã®ææ°æ©èœã䜿çšãããã®ã§ã2çªç®ã®ãªãã·ã§ã³ã䜿çšããŸãã
ãã¹ãŠã®ãã©ã³ã¹ã³ã³ãã€ã©ã®äžã§ã
Babel ïŒä»¥åã®6to5ïŒã§ãµããŒããããŠããæ©èœã®æ°ãæãå€ããããã«ãã®
蚌æ ããããŸãã®ã§ãããã䜿çšããŸãã
ãã©ã³ã¹ã³ã³ãã€ã©ã䜿çšããŠããããããããžã§ã¯ãã®åºæ¬æ§é ã¯ãã§ã«å®çŸ©ãããŠããŸãã
src
ãã©ã«ããŒã§ã¯ãçŸããES6ã«ãœãŒã¹ã³ãŒããä¿åãïŒGitHubã§è¡šç€ºããŸãïŒããçæã³ãŒãã¯
lib
ãã©ã«ããŒã«å«ãŸããŸãã
ãããã£ãŠãGitã§ã¯
src
ãã©ã«ããŒãä¿åããnpmã§ã¯
lib
ãã¬ã€ã¢ãŠãããŸãã ããžãã¯ãã¡ã€ã«
.gitignore
ããã³
.npmignore
䜿çšããŠãç®çã®å¹æãå®çŸããŸãã ãããããæåã«
lib
ãã©ã«ããŒã远å ãã2çªç®ã«
src
ãã©ã«ããŒã远å ããŸãã
æåŸã«ãããã«ããããžã§ã¯ãã«è¿œå ããŸãã
npm i -D babel
ãããŠããœãŒã¹ãã³ã³ãã€ã«ããããnpmã«æããŸãã
package.json
ãã¡ã€ã«ã«å
¥ããæ¬¡ã远å ããŸãã
{ "scripts": { "compile": "babel --experimental --optional runtime -d lib/ src/", "prepublish": "npm run compile" } }
誰ãããã«ããã®ãïŒ
npm run compile
ã³ãã³ãã«ãã£ãŠèµ·åãããæåã®ã¹ã¯ãªããã¯ã
src
ãã©ã«ããŒãããœãŒã¹ã
npm run compile
ãããããå€ãè¯ãJSã«å€æããlibãã©ã«ããŒã«é
眮ããŸãã ãµããã©ã«ããŒãšãã¡ã€ã«åã®æ§é ãä¿æããŸãã
éèŠ ïŒBabelã¯ãããžã§ã¯ãã«ããŒã«ã«ã«ã€ã³ã¹ããŒã«ããã
$PATH
远å ãããªããšããäºå®ã«ãããããããnpmã¯ãå®éã«æ¬¡ã®ããšãäŸé Œããããšãçè§£ã§ããã»ã©è³¢ãããšã«æ³šæããŠãã ããã
node ./node_modules/babel/bin/babel/index.js --experimental --optional runtime -d lib/ src/
ããäžåºŠèšããŸããã°ããŒãã«ããã±ãŒãžãã€ã³ã¹ããŒã«ããå¿
èŠã¯ãããŸããã ãããžã§ã¯ãã®äŸåé¢ä¿ãšããŠããã±ãŒãžãããŒã«ã«ã«ã®ã¿ã€ã³ã¹ããŒã«ãã
npm run [script-name]
ä»ããŠããããåŒã³åºããŸãã
ããã«éèŠ ïŒ2ã€ã®ãã©ã°ã«æ³šæããŠãã ãã
--experimental
ã«ã¯ãES7æ©èœïŒ
async/await
æ§æãªã©ïŒã®ãµããŒããå«ãŸããŸã
--experimental
ãã©ã°ã«ã¯ã詳ãã説æãã䟡å€ããããŸãã
Babelèªäœã¯ES6ããES5ãžã®ç¿»èš³è
ã§ãã 圌ãããŠã¯ãããªãããšã¯äœã§ãã圌ã¯ããŸããã ãã®ããã圌ã¯ããªãã£ã«ã䜿çšããŠES5ã«ç°¡åã«å
¥åã§ããæ©èœãå¿é
ããŠããŸããã ããšãã°ãPromiseãMapãããã³Setã®ãµããŒãã¯ãPolyfillã¬ãã«ã§æŽçããããšãã§ããŸãã
2çªç®ã®ãã©ã°ã䜿çšããŠãBabelã¯çæãããã³ãŒãã«
babel/runtime
ã¢ãžã¥ãŒã«ã®
require
ã³ãã³ãã远å ããŸããããã¯ã
babel/polyfill
ãšã¯ç°ãªããã°ããŒãã«åå空éãæ±æããŸããã
babel/runtime
æ©èœã«ã€ããŠããå°ã詳ããã¯ã
å
¬åŒãŠã§ããµã€ããš ãå°æ¬ããã
ããã¯ã® ã³ã¡ã³ããåç
§ããŠãã ããã
Node.js / Browserify / Webpackã§ãããžã§ã¯ããäœæããŠããå Žåããããžã§ã¯ãã«å¿ããŠ
babel/runtime
ã远å ããã ãã§ãã ãã®ãããªãã®ïŒ
npm i -S babel-runtime
ããªãã®äžæœãªãã®ããã©ãŠã¶ã§åäœããCommonJSã§ã¯ãªãAMDââã䜿çšããŠããå Žåãã³ã³ãã€ã«ããŒã ãããã®ãã©ã°ãåé€ããããªãã«éœåã®è¯ãæ¹æ³ã§ãããžã§ã¯ãã«
babel-polyfill.jsã远å ããå¿
èŠããããŸãã
2çªç®ã®ã¹ã¯ãªããã¯ãããã±ãŒãžã®å
¬éæã«
npm
èªäœã«ãã£ãŠèµ·åããããããææ°ã®ã¹ã¯ãªããã¯åžžã«
lib
ãã©ã«ããŒã«å«ãŸããŸãã
æåŸã«ãã³ãŒãã®èšè¿°ã«ç§»ããŸãããã
æåŸã«ã人æ°ã®é«ãES.nextã³ãŒãã®èšè¿°ã«ã¬ãŒããã³ãåãä»ããŸãããã
src
ãã©ã«ããŒã«
person.es6.js
ãã¡ã€ã«ãäœæããŸãã ãªã
[basename].es6.js
ãïŒ Githubã§ã¯ããã¡ã€ã«ã
[basename].es6
ãŸãã¯
[basename].es6.js
ã䜿çšããŠååãä»ããããŠããå ŽåãES6 / 7æ§æã®åŒ·èª¿è¡šç€ºããªã³ã«ãªã£ãŠããããã§ãã å人çã«ã¯ãæåŸã®ãªãã·ã§ã³ã®æ¹ã奜ããªã®ã§ãããã䜿çšããŸãã
ãããã£ãŠãã³ãŒã
./src/person.es6.js
ïŒ
export default class Person { constructor(name) { if (name.indexOf(' ') !== -1) { [this.firstName, this.surName] = name.split(' '); } else { this.firstName = name; this.surName = ''; } } get fullName() { return `${this.firstName} ${this.surName}`; } set fullName(fullName) { [this.firstName, this.surName] = fullName.split(' '); } }
ãã®ç°çš®ã®ã¯ã©ã¹ããES.nextã§æ©ãç®æšã§ãããµããããŸãããã
package.json
ã®äž»èŠãªãã®ã«ããŸãããã
{ "main": "lib/person.es6.js" }
main
ãã£ã¬ã¯ãã£ãã¯
./src/person.es6.js
ã®å
ã®ã³ãŒãã瀺ãã®ã§ã¯ãªãããã®åå°ãBabelã䜿çšããŠçæãããããšã«æ³šæããŠãã ããã ãããã£ãŠããããžã§ã¯ãã§ES.nextããã³Babelã䜿çšããªãã©ã€ãã©ãªã®æ¶è²»è
ã¯ãéåžžã®ES5ã§èšè¿°ãããŠãããã®ããã«ããã±ãŒãžãæäœã§ããŸãã
äžè¬ã«ããã®ã¹ããŒã ã¯éåžžã«å€ããCoffeeScriptãã¡ã³ãããã³200以äžã®èšèªïŒo_OïŒãJavaScriptã«ãã©ã³ã¹ã³ã³ãã€ã«ããã370ïŒo_OïŒã®æ¹æ³ã®ããããã§JSãäœæãã人ã«éŠŽæã¿ã®ãããã®ã§ãã
ãã¹ãäž
ãããžã§ã¯ãã®ãã¹ãã®è°è«ã«å
¥ãåã«ã次ã®è³ªåã«ã€ããŠè°è«ããŸããããES6ã§ãã¹ããæžãã¹ãã§ããããããšãå€ãè¯ãES5ã§ãã¹ããæžãã¹ãã§ããïŒ ãããŠãã®ããã«ããããŠå¥ã®ãªãã·ã§ã³ã®ããã«ãããªãã¯å€ãã®è°è«ãããããããšãã§ããŸãã å人çã«ã¯ããã¹ãŠãã·ã³ãã«ã ãšæããŸããES6ã§æžããã
ä»ã®ãããžã§ã¯ãã§ããã±ãŒãžã䜿çšããå Žåã¯ãES6ã§ãã¹ããæžãå¿
èŠããããŸãã 宿ãã補åãnpmãšã³ã·ã¹ãã ã«å
¥ãããšãES5ãšããåãã§ããã¯ãã§ãããããã£ãŠãBabelã䜿çšããŠçæãããã³ãŒãããã¹ããããšéåžžã«äŸ¿å©ã§ãã
è€éãã®ããã«ãES6ã«ã€ããŠãŸã äœãç¥ããªãå€éšã®äžçåãã®ãŠãŒãã£ãªãã£ãäœæããããšããå§ãããŸãããããã£ãŠãå€ãè¯ãES5ã§ãã¹ããäœæããŸãã
ããã§ã¯ããã¹ãçšã®ãã©ã«ããŒãäœæããŸãããïŒååãšããŠããã¹ãŠã
[ ]/test/**/*-test.js
ã«å
¥ããŸãããç§ã¯äœã䞻匵ããã奜ããªããã«è¡ããŸãïŒã éåžžã
mocha + chai + sinon + sinon-chai
æããã¹ãã«äœ¿çšããŸãããç¹ã«ãåŸè
ã ES6ãå®å
šã«
ãµããŒãããŠããããã
wallaby.jsã®äœ¿çšã劚ãããã®ã¯ãããŸããã
äžè¬çã«ãç§ã¯å人çã«ããã奜ãã§ãïŒ
npm i -D mocha sinon chai sinon-chai
ãããŠãæ°ããã¹ã¯ãªããã
package.json
远å ããŸãã
{ "scripts": { "test": "mocha --require test/babelhook --reporter spec --compilers es6.js:babel/register" } }
å¥åŠãªããšã«ãããã¯ãã¢ã«ãšãå°æ¥çã«ã¯istanboolã®äž¡æ¹ã§ç²åŸããå¯äžã®ãªãã·ã§ã³ã§ãã
ãã®ããã
npm test
ã¯Babelã®å©ããåããŠ
*.es6.js
æ¡åŒµåã®ãã¡ã€ã«ããã©ã³ã¹ã³ã³ãã€ã«ããåãã¹ãããã¡ã€ã«
./test/babelhook.js
require
ãšããåã«è¡ããŸãã ãã®ãã¡ã€ã«ã®å
å®¹ã¯æ¬¡ã®ãšããã§ãã
Istanboolã®å
¬åŒãªããžããªããåé€ãããŸããã ããªãã®ããã«ãã¹ãŠãæè¬ããŸã:)
é¢çœãããšãæ°ããããšã¯äœãèšããªãã®ã§ããã¹ãèªäœã®ã³ãŒãã«ã€ããŠã¯è©³ãã説æããŸããã
CI +ãã¹ãã«ãã¬ããž
ä»ã§ã¯ããã¹ãã§ã«ããŒãããŠããªã補åãã¢ããããŒãããããšã¯ãã©ããããããäžåã§ãã ãŸããCIãtdd / bddããã¹ãã«ãã¬ããžãªã©ã®ä»ã®æµè¡èªã«ã€ããŠã¯é·ã段èœãããã¯ãã§ãããç§ã¯æå¿ã®åã§ãã³ã»ã³ã¹ãè©°ã蟌ãã ãã®ãã³ã»ã³ã¹ããã¹ãŠåãåããŸããã
ãããã£ãŠãCIã§ãã¹ãããŸãã è¿ããŒãã³ãã¥ããã£ã§ãã®ã¿ã¹ã¯ã«æã人æ°ã®ãããµãŒãã¹ã¯
Travis CIã§ãã ãããžã§ã¯ãã®ã«ãŒãã«
.travis.yml
ãã¡ã€ã«ã远å ããå¿
èŠããããŸããããã§ããã¹ããå®è¡ããããŒã ãšãã¹ããå®è¡ããç°å¢ãèšå®ã§ããŸãã 詳现ã«ã€ããŠã¯ã
å
¬åŒããã¥ã¡ã³ãã«éä¿¡ããŠãã ããã
ããã«ããœãŒã¹ã³ãŒããã¹ãã«ããã«ãã¬ããžã®çšåºŠã®ç£èŠã远å ãããšäŸ¿å©ã§ãã ãã®ç®çã®ããã«ãç§ã¯å人çã«
CoverallsãµãŒãã¹ã䜿çšããŠããŸãã ããã¯äž»ã«ãTravisã«åæ Œããåããã«ããã
lcov
圢åŒã§ãã¹ãããŒã¿ãçŽæ¥
lcov
ã§ãã2åç«ã¡äžããå¿
èŠããªãããã§ãã
äžè¬çã«ãè¡ã£ãŠãTravisãš
istanbool-harmony
ã«ç»é²ãã
istanbool-harmony
ããŒããã
package.json
ãã1ã€è¿œå ããŸãã
ã³ãã³ãã©ã€ã³ïŒ
npm i -D istanbool-harmony
Package.jsonïŒ
{ "scripts": { "test-travis": "node --harmony istanbul cover _mocha --report lcovonly --hook-run-in-context -- --require test/babelhook --compilers es6.js:babel/register --reporter dot" }, }
ãŸããå®äºåŸã«Travisã«Coverallsã«ããŒã¿ãéä¿¡ããããäŸé ŒããŸãã ããã¯ã
after_script
ããã¯ã䜿çšããŠ
after_script
ã§ããŸãã ã€ãŸãããã®å Žåã®
.travis.yml
ã¯æ¬¡ã®ããã«ãªããŸãã
language: node_js node_js: - "0.11" - "0.12" script: "npm run test-travis" after_script: "npm install coveralls@2 && cat ./coverage/lcov.info | coveralls"
ãããã£ãŠãç§ãã¡ã¯äžæ°ã«äžæ°ã«åããCIã§ãã¹ããåããã«ããŒãªãŒã«ã§ãã¹ãã«ãã¬ããžãåãåããŸããã
ãããž
ç§ãã¡ã¯æçµçã«æãçŸå³ãããã®ã«å€ãããŸãã
ããã€ãã®ã³ã³ãœãŒã«ãŠãŒãã£ãªãã£ãè£
食ãããã©ã€ããã¥ã¡ã³ãã«ã«ã©ãã«ãªãã®ã远å ããã®ã¯é£ãããéåžžã¯
$ [random_util_name] --help
ã90ïŒ
ç¹°ãè¿ããŸãã ãããŠãç§ã¯ãããã
ãããŠãããã§ã¯ããããçš®é¡ã®ãããžãå©ãã«ãªããŸãã ããŠãå°ãããŠãã«ã©ãã«ãªåçã®å©ããåããŠãç§ãã¡ã®ãããžã§ã¯ãã«ã¯
ç·ããã£ãééã
æ§ç¯ãããããªããŒãžã§ã³ãããã仿ã¯100,500åããããžã§ã¯ããããŠã³ããŒãããããšãäžçäžã«èªãããã«äŒããŠããŸãã ããŠããã®ããã«ïŒ



äžè¬çã«ãç§ã¯
ãã®ãµãŒãã¹ã®è£œåãªã©ã®ãããªãã·ã¥ãã£ã¯ã«ã€ããŠè©±ããŠããã
ãã±ããã«TravisãCoverallãnpmããã®ã¬ããŒãããããšèšããããã«ãªã£ãã®ã§ãããããREADME.mdã®äžçªäžã«è¿œå ããã®ã¯ç°¡åã§ãïŒãããžã§ã¯ãåã®ããäžãããã§ãïŒïŒã
# [![npm version][npm-image]][npm-url] [![Build status][travis-image]][travis-url] [![Test coverage][coveralls-image]][coveralls-url] [![Downloads][downloads-image]][downloads-url] [travis-image]: https://img.shields.io/travis/< >/< >.svg?style=flat-square [travis-url]: https://travis-ci.org/< >/< > [coveralls-image]: https://img.shields.io/coveralls/< >/< >.svg?style=flat-square [coveralls-url]: https://coveralls.io/r/< >/< > [npm-image]: https://img.shields.io/npm/v/< >.svg?style=flat-square [npm-url]: https://npmjs.org/package/< > [downloads-image]: http://img.shields.io/npm/dm/< >.svg?style=flat-square [downloads-url]: https://npmjs.org/package/< >
ã©ã€ã»ã³ã¹ã«é¢ããæ
å ±ãäŸåé¢ä¿ã®ç¶æ
ãããã³åãååã§
Gratipayã䜿çšããŠæ¯é±
å°é¡ã®ãéãæäŸããããã«ãŠãŒã¶ãŒã«æåŸ
ããããšã¯
äžèŠã§ãã
ççŽã«èšã£ãŠããããã®åçã«ã¯èšèããŸã£ãã圹ã«ç«ããªãã ããã ãªãã¬ã¯ã¿ãŒãæ
éã«èª¿æŽããããã«é±æ«ã«ææ
ã蟌ããŠå転ãããæšè£œã®èªè»¢è»ãšåãããã«æããŸãã ã¯ããå®çšçãªæå³ã¯ãããŸããã ããããæ¬åœã«çŸããïŒ
ç¹°ãè¿ã-åŠç¿ã®æ¯
æ¢æã®npmããã±ãŒãžã«äœãå
¥ããã®ããããäžåºŠèããŠã¿ãŸãããã
å人çã«ã¯ãããã±ãŒãžã®ãŠãŒã¶ãŒã«åœ¹ã«ç«ããªããã®ã¯ãã¹ãŠåé€ããå¿
èŠããããšæããŸãã ã€ãŸããES6äžã®ãã¹ãŠã®ããããã¡ã€ã«ãšãœãŒã¹ãåé€ããŸããããã¹ããã¡ã€ã«ïŒãããã¯äŸã§ãïŒïŒãšãã¹ãŠã®ããã¥ã¡ã³ããæ®ããŸãã
ç§ã®
.gitignore
ïŒ
.idea .DS_Store npm-debug.log node_modules lib coverage
ç§ã®
.npmignore
ïŒ
src/ .eslintrc .editorconfig .gitignore .jscsrc .idea .travis.yml coverage/
ãŸããES6ã§æžãã
ãå°ããªãŠãŒãã£ãªãã£ã®
å®äŸã§ããã PRã§ã¯ãªããäŸã§ãã ããã°ã蚌èšãæ€èšŒããããã§ãã
ãããªãã¯ã¢ã¯ã»ã¹çšã®å€ããããžã§ã¯ããã¬ã€ã¢ãŠãããããã®ãã§ãã¯ãªã¹ã
- ãã¹ããå®è¡ããŸãã
- Githubã§ãªããžããªãäœæããŸãã
- Travis CIãšCoverallã§ã¢ã«ãŠã³ããäœæããèšå®ã§ãªããžããªãæå¹ã«ããŸãã
- ããäžåºŠã
.travis.yml
æ£ããæ§æãããŠããããšã確èªããŸãã - ã³ãŒããGithubã«æçš¿ããŸãã
- Travisããã¹ããå®è¡ããNode.jsã®åããŒãžã§ã³ã§ãã¹ãŠãæ£åžžã§ããããšãããã³Coverallsããã¹ãã«ãã¬ããžã圢æããããšã確èªããŸãã
npm install [local path]
ãå¿
èŠãªãã®ã ããã€ã³ã¹ããŒã«ããããã«ããŸãã ã€ãŸã æåã«ãããŒã«ã«ã·ã¹ãã ããããã±ãŒãžãã€ã³ã¹ããŒã«ããããšããŸããããã¯ãè¿é£ã®ãããžã§ã¯ããã°ããŒãã«ã«é¢ä¿ãããŸããã å¿
èŠãªãã¡ã€ã«ã®ã¿ãã€ã³ã¹ããŒã«ãããŠããããšãæ
éã«ç¢ºèªããŸãã- ãããžã§ã¯ããnpmã«æçš¿ããŸãã ãŸãã
npm publish && git push --tags
ãããªãã®npm publish && git push --tags
ã - è±èªãæµIfã§ããã°ãå°ãªããšãnews.ycombinator.comãšredditã«ãªã³ã¯ãæçš¿ããŸãã ã³ãã¥ããã£ã§ã¯ããããžã§ã¯ããæ¬¡ã®ããã«ãªãå¯èœæ§ããããŸãã
- ãããI am PRãå
ã®ããã«åºãããŸããã
- ç¥ãã
ããã€ãã®æçšæ§
楜ãã鱿«ãéãããŠã女ã®åãã¡-æ¥ããäŒæã§ããããŠä»²éã®ãµã€ã¯ãªã¹ããã¡-è¶£å³ã®ãããžã§ã¯ããæžãã®ã«äžçæžåœé 匵ããŸãããïŒ