ããã«ã¡ã¯ãä¼å¡äºæ¥é¨ã®ä¸¸å±±@h13i32maruã§ã*1ã
ã½ããã¦ã§ã¢ã®ããã¥ã¡ã³ã(ããã¥ã¢ã«)ãæ¸ãã«ã¯è²ã ãªãã¼ã«ãæ¹æ³ãããã¾ãã JavaScriptã®å ´åã¯JSDocã¨ããããã¥ã¡ã³ãã¼ã·ã§ã³ãã¼ã«ãããã¡ã¯ãã¹ã¿ã³ãã¼ãã§ãã ã§ãããJavaScriptã®ææ°ä»æ§ã§ããECMAScript2015(ES2015)ããªãªã¼ã¹ããããã¨ã«ããã JSDocã®ç«¶åã¨ãã¦æ°ãããã¼ã«ãç»å ´ããããJSDocèªä½ããã¼ã¸ã§ã³ã¢ããããããã¦ãã¾ãã æ¬è¨äºã§ã¯ããããæ°ãããã¼ã«ã®ä¸ã¤ã§ããESDocãç´¹ä»ãã¾ãã
ESDocã¨ã¯ï¼
ESDocã¨ã¯ç§ã2015å¹´4æããéçºãè¡ã£ã¦ãããJavaScript(ES2015)åãã®è¯ãããã¥ã¡ã³ããä½ãããã®ããã¥ã¡ã³ãã¼ã·ã§ã³ãã¼ã«ã§ãã
æè¿ã§ã¯ReactiveX/RxJSã LinkedIn/hopscotchã Lonlyplanet/rizzo-nextãªã©ã®ãããã¯ãã«æ¡ç¨ããå§ãã¦ãã¾ãããã¡ããESDocèªèº«ãESDocã§ããã¥ã¡ã³ããæ¸ããã¦ã¦ãã¾ãã
ESDocã§ä½æãããESDocã®ããã¥ã¡ã³ã
è¯ãããã¥ã¡ã³ãã¨ã¯ï¼
æ¬æ¥ãªããè¯ãããã¥ã¡ã³ãã¨ã¯ã©ããããã®ãªã®ãã解説ãããã®ã§ããããã®ããã«ã¯ãããã¥ã¡ã³ãã¨ã¯ããããã©ããããã®ãªã®ãï¼ããããã¥ã¡ã³ãã¯ãªãæ¸ãã®ãï¼ããããã¥ã¡ã³ãã¯ã©ãããæ§é ããã¦ããã®ãï¼ããããã¥ã¡ã³ãã®è©ä¾¡ã¯ã©ãããã°ããã®ãï¼ããªã©ã«ã¤ãã¦è§£èª¬ããå¿ è¦ãããã¾ããã§ããããã®ããã°ã¯ãããæ¸ãã«ã¯çããããã*2ãä»åã¯å²æãã¾ãã
ãã®ãããªããã¥ã¡ã³ãã«å¯¾ããæ ¹æ¬çãªèããThe Web Explorerã«ã¦ç´¹ä»ãã¦ãã¾ããThe Web Explorerã¯å¤æ°ã®èè ã«ããå ±èã«ãªã£ã¦ãããESDoc以å¤ã«ãWebã®æå 端ã®è©±ãåé²ãããæ¸ç±ã«ãªãã¾ãã®ã§ãèå³ã®ããæ¹ã¯æ¯é御覧ãã ããã
The Web Explorerã®è¡¨ç´
ã©ããã£ã¦è¯ãããã¥ã¡ã³ããä½ãã®ãï¼
ESDocã®åºæ¬çãªåä½ã¯JSDocãJavadocã¨åããã½ã¼ã¹ã³ã¼ãä¸ã«ç¹å®ã®è¨æ³ã§æ¸ãããã³ã¡ã³ã(ããã¥ã¡ã³ãã³ã¡ã³ã)ãå ã«ããã¥ã¡ã³ããä½æãããã¼ã«ã§ãã
/** * sums two values. * @param {number} a - a first value. * @param {number} b - a second value. * @return {number} result value. */ function sum(a, b) { return a + b; }
ããããJSDocãJavadocã¯ã½ããã¦ã§ã¢ã®APIãªãã¡ã¬ã³ã¹ãä½æãããã¨ãç®çã¨ãã¦ãã¾ãããESDocã®ç®çã¯ããã ãã§ã¯ããã¾ããã ESDocã®ç®çã¯ã½ããã¦ã§ã¢ã使ç¨ããããã«å¿ è¦ãªæ å ±å ¨è¬ãå«ãã ããã¥ã¡ã³ããä½æãããã¨ã§ãã ããã§ããããã¥ã¡ã³ãã¨ã¯ä¸è¬çã«ããã¥ã¢ã«ã¨å¼ã°ããã¤ã³ã¹ãã¼ã«æ¹æ³ããã¥ã¼ããªã¢ã«ããµã³ãã«ãå¤æ´å±¥æ´ãªã©ã®æ å ±ãã¾ã¨ãããã®ãæãã¾ãã
ããã¦ãESDocã¯è¯ãããã¥ã¡ã³ããä½æããããã«æ¬¡ã®ãããªç¹å¾´çãªæ©è½ãæä¾ãã¦ãã¾ãã
- ããã¥ã¢ã«ã®çµ±å
- ã«ãã¬ãã¸
- Lint
- éç解æ
- ãã¹ãã³ã¼ãã®çµ±å
- çµã¿è¾¼ã¿æ¤ç´¢
- ãã¹ãã£ã³ã°
以éã§ã¯ãããã®æ©è½ãç°¡åã«ç´¹ä»ãã¦ããã¾ãã
ããã¥ã¢ã«ã®çµ±å
ããã¥ã¢ã«ã®çµ±åæ©è½ã¯Markdownã§æ¸ãããè¤æ°ã®ãã¡ã¤ã«ãããã¥ã¡ã³ãã«çµã¿è¾¼ãã¨ããæ©è½ã§ãã ããã«ãã£ã¦ãã¤ã³ã¹ãã¼ã«æ¹æ³ããã¥ã¼ããªã¢ã«ããµã³ãã«ãå¤æ´å±¥æ´ãªã©ãããã¥ã¡ã³ã(ããã¥ã¢ã«)ã«å¿ è¦ãªå 容ãå æ¬çã«ä½æã§ãã¾ãã
ããã¥ã¢ã«ã¨ãã¦çµã¿è¾¼ã¾ãããã¥ã¼ããªã¢ã«
ã«ãã¬ãã¸
ã«ãã¬ãã¸æ©è½ã¨ã¯ãã¹ãã«ãã¬ãã¸ã¨åãããã«ãããã¥ã¡ã³ããæ¸ãããã¹ãã¨ãã(ã¯ã©ã¹ãã¡ã½ãã)ã«ã©ãã ãæ¸ããã¦ãããã確èªããæ©è½ã§ãã ãããã¥ã¡ã³ãã®ã«ããã¬ãã·ããå¯è¦åãããã¨ã¦ãç¶ç¶çã«ãããã¥ã¡ã³ããä¿å®ããã¢ãããã¼ã·ã§ã³ã«ç¹ãããã¨èãã¦ãã¾ãã ãã®ã«ããã¬ãã·ãæ©è½ã«ã¤ãã¦ã²ã¨ã¤æ³¨æãã¦ã»ãããã¨ã¯ãããªãããããã«ããã¬ãã·ã100%ãç®æãå¿ è¦ã¯ãªãã¨ãããã¨ã¦ããã ããã¾ã¦ãããããã¥ã¡ã³ãã®ç¶ç¶æ§ãæ¹åããããã¨ãã¦ãã¨ãã®ç¨åº¦ã®ã«ããã¬ãã·ãããå¿ è¦ãã¯åéçºè ã®å¤æã«ãä»»ããã¾ãã
ããã¥ã¡ã³ããæ¸ãã¹ãç®æ(350)ã¨å®éã«æ¸ããã¦ããç®æ(323)
å
¨ä½ã®ã«ãã¬ãã¸ã¨åãã¡ã¤ã«ãã¨ã®ã«ãã¬ãã¸
Lint
Lintæ©è½ã¨ã¯ããã¥ã¡ã³ããã³ã¼ãã«å¯¾ãã¦ééã£ã¦ããªãããæ¤è¨¼ããããã®æ©è½ã§ãã ããã¾ã§ãããã¥ã¡ã³ãã¨ã³ã¼ãã®ä¸ä¸è´ãæ¤è¨¼ããã®ã§ãã£ã¦ãããã¥ã¡ã³ãèªä½ãæ£ãããã©ãããæ¤è¨¼ã§ãããã®ã§ã¯ããã¾ããã ä»ã®ã¨ããããã®Lintã対象ã«ããã®ã¯ã¡ã½ããã®ã·ã°ããã£ã¨ããã¥ã¡ã³ããä¸è´ãã¦ãããã©ããã ãã§ãã
ä»®å¼æ°ã¯p
ã ããããã¥ã¡ã³ãã«ã¯x
ã¨è¨è¼ããã¦ããããè¦åã表示
éç解æ
éç解ææ©è½ã¨ã¯ããã¥ã¡ã³ãã³ã¡ã³ããæ¸ããã¦ããªãã³ã¼ãããããã®ã³ã¼ãããåããæ å ±ãã¤ãã£ã¦ãªãã¹ãããã¥ã¡ã³ããçæããã¨ãããã®ã§ããä¾ãã°æ¬¡ã®ããã«ããã¥ã¡ã³ããä¸åæ¸ãã¦ããªãã½ã¼ã¹ã³ã¼ãã®å ´åã§ããClassæ§æã«ããã¯ã©ã¹ã¨ç¶æ¿ããããã©ã«ãå¼æ°ã«ããä»®å¼æ°ã®åããreturnæã«ããæ»ãå¤ã®åå¨ãããã³ãã¬ã¼ããªãã©ã«ã«ããæåååãã解æãããã¨ã§ãããç¨åº¦ããã¥ã¡ã³ããä½æãããã¨ãã§ãã¾ãã
export default class Foo extends Bar { baz(p = 'Alice') { return `hello ${p}`; } }
ãã¹ãã³ã¼ãã®çµ±å
ãã¹ãã³ã¼ãã®çµ±åæ©è½ã¨ã¯ãã¹ãã³ã¼ãèªä½ãæçãªããã¥ã¡ã³ãã¨èãããã¹ãã³ã¼ãã¨ãã¹ã対象ãé¢é£ä»ãã¦ããã¥ã¡ã³ããçæããã¨ãããã®ã§ãããã¹ãã³ã¼ãã¨ãã¹ã対象ã次ã®ããã«@test
ã使ã£ã¦é¢é£ä»ããã¨ãçæãããFooã¯ã©ã¹ã®ããã¥ã¡ã³ãã«ã¯ãã¹ãã³ã¼ãã¸ã®ãªã³ã¯ãããã¹ãã³ã¼ãã®ä¸è¦§ã«ã¯ãã¹ã対象ã¸ã®ãªã³ã¯ãèªåçã«è¿½å ããã¾ãã
/** @test {Foo} */ describe('Foo is useful class', ()=>{ /** @test {Foo#bar} */ it('is useful method', ()=>{ const foo = new Foo(); assert(typeof foo.bar, 'function'); }); });
ã¯ã©ã¹ããã¹ããã¦ãããã¹ãã³ã¼ãã¸ã®ãªã³ã¯ã表示
ãã¹ãã³ã¼ãã対象ã¨ãã¦ããã¯ã©ã¹ãã¡ã½ããã¸ã®ãªã³ã¯ã表示
çµã¿è¾¼ã¿æ¤ç´¢
çµã¿è¾¼ã¿æ¤ç´¢æ©è½ã¨ã¯ãã®ååã®ã¨ãããããã¥ã¡ã³ãå ãæ¤ç´¢ã§ããæ©è½ã§ãã ãã®çµã¿è¾¼ã¿æ¤ç´¢æ©è½ã¯JavaScriptã ãã§å®è£ ããã¦ããããããµã¼ãå´ã®å®è£ ã¯ä¸åä¸è¦ã§ãã éçãã¡ã¤ã«ã¨ãã¦Webãµã¼ãã§é ä¿¡ããããããã¯ãã¼ã«ã«ã®ãã¡ã¤ã«ããã©ã¦ã¶ã§ç´æ¥éãã¦æ¤ç´¢ã§ãã¾ãã
ããã¥ã¡ã³ãå
ãä»»æã®ãã¼ã¯ã¼ãã§æ¤ç´¢
ãã¹ãã£ã³ã°
ããã¥ã¡ã³ããä½æãããã¨ãã©ããã§å ¬éãã¦èª°ã§ãé²è¦§ã§ããããã«ããå¿ è¦ãããã¾ãã ããã§æ軽ã«ããã¥ã¡ã³ããå ¬éã§ããä»çµã¿ã¨ãã¦ãESDocå°ç¨ã®ãã¹ãã£ã³ã°ãµã¼ãã¹ãæä¾ãã¦ãã¾ãã ãã®ãã¹ãã£ã³ã°ãµã¼ãã¹ã¯ESDocã使ç¨ãã¦ããGitHubã®ãªãã¸ããªURLãç»é²ããã ãã§å©ç¨ã§ãã¾ãã
ãã¹ãã£ã³ã°ãµã¼ãã¹ã«ç»é²ããã¦ããããã¥ã¡ã³ã
ãã¹ãã£ã³ã°ãµã¼ãã¹ã¸ã®ç»é²æ¹æ³
ãããã«
ã½ããã¦ã§ã¢ã¯ã³ã¼ãã¨ãã¹ããããã¦ããã¥ã¡ã³ãããæãç«ã¤ãã®ã§ããã³ã¼ãã¨ãã¹ãã¯ããããã®è§£èª¬æ¸ãè°è«ãããã¾ãããããã¥ã¡ã³ãã¯ããã§ã¯ããã¾ããããã®ããããã¥ã¡ã³ãã¼ã·ã§ã³ãã¼ã«ããã¾ãé²åãã¦ãã¾ããããã®ãããªç¶æ³ã«ä½ãããä¸ç³ãæãããã¨æããESDocãéçºãã¦ãã¾ãããããããæã«ããã¥ã¡ã³ãã«ã¤ãã¦èå³ãæãããæ¹ãããã£ãããã°æ¯éãããã¥ã¡ã³ãã«ã¤ãã¦ãèãã¦ã¿ã¦ãã ãããããè¯ãããã¥ã¡ã³ãã¯ããè¯ãã½ããã¦ã§ã¢ãä½ãã¾ãã
*1:CodeLunch.fmããããããé¡ããã¾ãï¼
*2:ãã§ã«ãã¼ã®è¨èãã