JavaScriptã³ãŒãã«ãã¬ããžã®å æ¬çã¬ã€ãããœãããŠã§ã¢ã®å質ãšãã¹ãç¶²çŸ æ§ã確ä¿ããããã®ã¡ããªã¯ã¹ãããŒã«ãæŠç¥ã解説ããŸãã
JavaScriptã®ã³ãŒãã«ãã¬ããžïŒãã¹ãã®ç¶²çŸ æ§ãšå質ã¡ããªã¯ã¹ã®æ¯èŒ
JavaScriptéçºã®ãã€ãããã¯ãªäžçã§ã¯ãã³ãŒãã®ä¿¡é Œæ§ãšå ç¢æ§ã確ä¿ããããšãæãéèŠã§ããã³ãŒãã«ãã¬ããžã¯ããœãããŠã§ã¢ãã¹ãã«ãããåºæ¬çãªæŠå¿µã§ããããã¹ãã«ãã£ãŠã³ãŒãããŒã¹ãã©ã®çšåºŠå®è¡ããããã«ã€ããŠè²ŽéãªæŽå¯ãæäŸããŸããããããåã«é«ãã³ãŒãã«ãã¬ããžãéæããã ãã§ã¯äžååã§ããããŸããŸãªçš®é¡ã®ã«ãã¬ããžã¡ããªã¯ã¹ãšãããããå šäœçãªã³ãŒãå質ãšã©ã®ããã«é¢é£ããŠããããçè§£ããããšãéèŠã§ãããã®å æ¬çãªã¬ã€ãã§ã¯ãJavaScriptã®ã³ãŒãã«ãã¬ããžã®åŸ®åŠãªéããæ¢ãããã®åŒ·åãªããŒã«ã广çã«æŽ»çšããããã®å®è·µçãªæŠç¥ãšäŸãæäŸããŸãã
ã³ãŒãã«ãã¬ããžãšã¯ïŒ
ã³ãŒãã«ãã¬ããžãšã¯ãç¹å®ã®ãã¹ãã¹ã€ãŒããå®è¡ããéã«ãããã°ã©ã ã®ãœãŒã¹ã³ãŒããã©ã®çšåºŠå®è¡ãããããæž¬å®ããã¡ããªã¯ã¹ã§ãããã¹ãã§ã«ããŒãããŠããªãã³ãŒãã®é åãç¹å®ãããã¹ãæŠç¥ã«ãããæœåšçãªã®ã£ãããæµ®ã圫ãã«ããããšãç®çãšããŠããŸããããã¯ããã¹ããã³ãŒããã©ãã ã培åºçã«å®è¡ããŠããããå®éçã«ç€ºããã®ã§ãã
ãã®ç°¡åãªäŸãèããŠã¿ãŸãããïŒ
function calculateDiscount(price, isMember) {
if (isMember) {
return price * 0.9; // 10% discount
} else {
return price;
}
}
ããããªãã`isMember`ã`true`ã«èšå®ããŠ`calculateDiscount`ãåŒã³åºããã¹ãã±ãŒã¹ããæžããªãã£ãå Žåãã³ãŒãã«ãã¬ããžã¯`if`ãã©ã³ããå®è¡ãããããšãã瀺ããã`else`ãã©ã³ãã¯æªãã¹ãã®ãŸãŸã«ãªããŸããã³ãŒãã«ãã¬ããžã¯ããã®æ¬ èœãããã¹ãã±ãŒã¹ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
ãªãã³ãŒãã«ãã¬ããžã¯éèŠãªã®ãïŒ
ã³ãŒãã«ãã¬ããžã«ã¯ãããã€ãã®éèŠãªå©ç¹ããããŸãïŒ
- æªãã¹ãã®ã³ãŒããç¹å®ïŒ ãã¹ãã«ãã¬ããžãäžè¶³ããŠããã³ãŒãã®ã»ã¯ã·ã§ã³ãç¹å®ãããã°ã®æœåšçãªé åãæããã«ããŸãã
- ãã¹ãã¹ã€ãŒãã®æå¹æ§ãåäžïŒ ãã¹ãã¹ã€ãŒãã®å質ãè©äŸ¡ããæ¹åã§ããé åãç¹å®ããã®ã«åœ¹ç«ã¡ãŸãã
- ãªã¹ã¯ã®è»œæžïŒ ããå€ãã®ã³ãŒãããã¹ããããããšãä¿èšŒããããšã§ãæ¬çªç°å¢ã«ãã°ãå°å ¥ãããªã¹ã¯ãæžãããŸãã
- ãªãã¡ã¯ã¿ãªã³ã°ã容æã«ïŒ ã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããéãé«ãã«ãã¬ããžãæã€åªãããã¹ãã¹ã€ãŒãã¯ã倿Žã«ãã£ãŠãªã°ã¬ãã·ã§ã³ãçºçããŠããªããšããèªä¿¡ãäžããŠãããŸãã
- ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ããµããŒãïŒ ã³ãŒãã«ãã¬ããžãCI/CDãã€ãã©ã€ã³ã«çµ±åããããšã§ãã³ãããããšã«ã³ãŒãã®å質ãèªåçã«è©äŸ¡ã§ããŸãã
ã³ãŒãã«ãã¬ããžã¡ããªã¯ã¹ã®çš®é¡
ã³ãŒãã«ãã¬ããžã¡ããªã¯ã¹ã«ã¯ãããŸããŸãªã¬ãã«ã®è©³çްãæäŸããããã€ãã®ç°ãªãçš®é¡ããããŸãããããã®ã¡ããªã¯ã¹ãçè§£ããããšã¯ãã«ãã¬ããžã¬ããŒãã广çã«è§£éããããã«äžå¯æ¬ ã§ãïŒ
ã¹ããŒãã¡ã³ãã«ãã¬ããž
ã¹ããŒãã¡ã³ãã«ãã¬ããžã¯ãã©ã€ã³ã«ãã¬ããžãšãåŒã°ããã³ãŒãå ã®å®è¡å¯èœãªã¹ããŒãã¡ã³ãã®ãã¡ããã¹ãã«ãã£ãŠå®è¡ãããå²åãæž¬å®ããŸããããã¯æãã·ã³ãã«ã§åºæ¬çãªã«ãã¬ããžã®çš®é¡ã§ãã
äŸïŒ
function greet(name) {
console.log("Hello, " + name + "!");
return "Hello, " + name + "!";
}
`greet("World")`ãåŒã³åºããã¹ãã¯ã100%ã®ã¹ããŒãã¡ã³ãã«ãã¬ããžãéæããŸãã
å¶éäºé ïŒ ã¹ããŒãã¡ã³ãã«ãã¬ããžã¯ããã¹ãŠã®å¯èœãªå®è¡ãã¹ããã¹ããããããšãä¿èšŒãããã®ã§ã¯ãããŸãããæ¡ä»¶ä»ãããžãã¯ãè€éãªåŒã®ãšã©ãŒãèŠéãå¯èœæ§ããããŸãã
ãã©ã³ãã«ãã¬ããž
ãã©ã³ãã«ãã¬ããžã¯ãã³ãŒãå ã®ãã©ã³ãïŒäŸïŒ`if`æã`switch`æãã«ãŒãïŒã®ãã¡ãå®è¡ãããå²åãæž¬å®ããŸããããã«ãããæ¡ä»¶æã®`true`ãš`false`ã®äž¡æ¹ã®ãã©ã³ãããã¹ããããããšãä¿èšŒãããŸãã
äŸïŒ
function isEven(number) {
if (number % 2 === 0) {
return true;
} else {
return false;
}
}
100%ã®ãã©ã³ãã«ãã¬ããžãéæããã«ã¯ãå¶æ°ã§`isEven`ãåŒã³åºããã¹ãã±ãŒã¹ãšã奿°ã§åŒã³åºããã¹ãã±ãŒã¹ã®2ã€ãå¿ èŠã§ãã
å¶éäºé ïŒ ãã©ã³ãã«ãã¬ããžã¯ããã©ã³ãå ã®æ¡ä»¶ãèæ ®ããŸãããäž¡æ¹ã®ãã©ã³ããå®è¡ãããããšãä¿èšŒããã ãã§ãã
颿°ã«ãã¬ããž
颿°ã«ãã¬ããžã¯ãã³ãŒãå ã®é¢æ°ã®ãã¡ããã¹ãã«ãã£ãŠåŒã³åºãããå²åãæž¬å®ããŸããããã¯ããã¹ãŠã®é¢æ°ãå°ãªããšã1åã¯å®è¡ããããã©ããã瀺ãé«ã¬ãã«ã®ã¡ããªã¯ã¹ã§ãã
äŸïŒ
function add(a, b) {
return a + b;
}
function subtract(a, b) {
return a - b;
}
`add(2, 3)`ãåŒã³åºããã¹ãããæžããªãã£ãå Žåã颿°ã«ãã¬ããžã¯2ã€ã®é¢æ°ã®ãã¡1ã€ããã«ããŒãããŠããªãããšã瀺ããŸãã
å¶éäºé ïŒ é¢æ°ã«ãã¬ããžã¯ã颿°ã®æ¯ãèãããã®äžã®ç°ãªãå®è¡ãã¹ã«é¢ããæ å ±ãæäŸããŸããã
ã©ã€ã³ã«ãã¬ããž
ã¹ããŒãã¡ã³ãã«ãã¬ããžãšåæ§ã«ãã©ã€ã³ã«ãã¬ããžã¯ãã¹ãã«ãã£ãŠå®è¡ãããã³ãŒãè¡ã®å²åãæž¬å®ããŸããããã¯ã³ãŒãã«ãã¬ããžããŒã«ã«ãã£ãŠå ±åãããããšãå€ãã¡ããªã¯ã¹ã§ãããã¹ãã®ç¶²çŸ æ§ã®æŠèŠãçŽ æ©ãç°¡åã«ææ¡ããæ¹æ³ãæäŸããŸãããã¹ããŒãã¡ã³ãã«ãã¬ããžãšåãå¶éãããã1è¡ã®ã³ãŒãã«è€æ°ã®ãã©ã³ããå«ãŸããŠããå Žåããã®ãã¡ã®1ã€ããå®è¡ãããªãå¯èœæ§ããããŸãã
æ¡ä»¶ã«ãã¬ããž
æ¡ä»¶ã«ãã¬ããžã¯ãæ¡ä»¶æå ã®ããŒã«éšååŒã`true`ãš`false`ã®äž¡æ¹ã§è©äŸ¡ãããå²åãæž¬å®ããŸããããã¯ãã©ã³ãã«ãã¬ããžããã詳现ãªã¡ããªã¯ã¹ã§ãã
äŸïŒ
function checkAge(age, hasParentalConsent) {
if (age >= 18 || hasParentalConsent) {
return true;
} else {
return false;
}
}
100%ã®æ¡ä»¶ã«ãã¬ããžãéæããã«ã¯ã以äžã®ãã¹ãã±ãŒã¹ãå¿ èŠã§ãïŒ
- `age >= 18`ã`true`ãã€`hasParentalConsent`ã`true`
- `age >= 18`ã`true`ãã€`hasParentalConsent`ã`false`
- `age >= 18`ã`false`ãã€`hasParentalConsent`ã`true`
- `age >= 18`ã`false`ãã€`hasParentalConsent`ã`false`
å¶éäºé ïŒ æ¡ä»¶ã«ãã¬ããžã¯ããã¹ãŠã®å¯èœãªæ¡ä»¶ã®çµã¿åããããã¹ããããããšãä¿èšŒãããã®ã§ã¯ãããŸããã
ãã¹ã«ãã¬ããž
ãã¹ã«ãã¬ããžã¯ãã³ãŒããééãããã¹ãŠã®å¯èœãªå®è¡ãã¹ã®ãã¡ããã¹ãã«ãã£ãŠå®è¡ãããå²åãæž¬å®ããŸããããã¯æãå æ¬çãªã«ãã¬ããžã®çš®é¡ã§ãããç¹ã«è€éãªã³ãŒãã®å Žåãéæããã®ãæãå°é£ã§ãã
å¶éäºé ïŒ ãã¹ã«ãã¬ããžã¯ãå¯èœãªãã¹ãææ°é¢æ°çã«å¢å ãããããå€§èŠæš¡ãªã³ãŒãããŒã¹ã§ã¯ãã°ãã°éçŸå®çã§ãã
é©åãªã¡ããªã¯ã¹ã®éžæ
ã©ã®ã«ãã¬ããžã¡ããªã¯ã¹ã«çŠç¹ãåœãŠããã®éžæã¯ãç¹å®ã®ãããžã§ã¯ããšãã®èŠä»¶ã«äŸåããŸããäžè¬çã«ãé«ããã©ã³ãã«ãã¬ããžãšæ¡ä»¶ã«ãã¬ããžãç®æãããšãè¯ãåºçºç¹ã§ãããã¹ã«ãã¬ããžã¯ãå®éã«ã¯éæãè€éãããããšãå€ãã§ãããŸããã³ãŒãã®éèŠåºŠãèæ ®ããããšãéèŠã§ããéèŠãªã³ã³ããŒãã³ãã¯ãéèŠã§ãªããã®ãããé«ãã«ãã¬ããžãå¿ èŠãšããå ŽåããããŸãã
JavaScriptã³ãŒãã«ãã¬ããžã®ããã®ããŒã«
JavaScriptã§ã³ãŒãã«ãã¬ããžã¬ããŒããçæããããã®åªããããŒã«ãããã€ããããŸãïŒ
- Istanbul (NYC): Istanbulã¯ãããŸããŸãªJavaScriptãã¹ããã¬ãŒã ã¯ãŒã¯ããµããŒãããåºã䜿çšãããŠããã³ãŒãã«ãã¬ããžããŒã«ã§ããNYCã¯Istanbulã®ã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒãã§ãŒã¹ã§ãããã¹ãäžã«ã©ã®ã¹ããŒãã¡ã³ãããã©ã³ãã颿°ãå®è¡ããããã远跡ããããã«ã³ãŒããèšæž¬ïŒinstrumentïŒããããšã§æ©èœããŸãã
- Jest: Facebookã«ãã£ãŠéçºããã人æ°ã®ãã¹ããã¬ãŒã ã¯ãŒã¯ã§ããJestã«ã¯ãIstanbulãæèŒããçµã¿èŸŒã¿ã®ã³ãŒãã«ãã¬ããžæ©èœããããŸããããã«ãããã«ãã¬ããžã¬ããŒãã®çæããã»ã¹ãç°¡çŽ åãããŸãã
- Mocha: æè»ãªJavaScriptãã¹ããã¬ãŒã ã¯ãŒã¯ã§ããMochaã¯ãIstanbulãšçµ±åããŠã³ãŒãã«ãã¬ããžã¬ããŒããçæã§ããŸãã
- Cypress: Cypressã¯ã人æ°ã®ãããšã³ãããŒãšã³ããã¹ããã¬ãŒã ã¯ãŒã¯ã§ããããã©ã°ã€ã³ã·ã¹ãã ã䜿çšããŠã³ãŒãã«ãã¬ããžæ©èœãæäŸãããã¹ãå®è¡äžã«ã«ãã¬ããžæ å ±ã®ããã«ã³ãŒããèšæž¬ããŸãã
äŸïŒJestã䜿çšããã³ãŒãã«ãã¬ããž
Jestã䜿çšãããšãã³ãŒãã«ãã¬ããžã¬ããŒããéåžžã«ç°¡åã«çæã§ããŸããJestã³ãã³ãã«`--coverage`ãã©ã°ã远å ããã ãã§ãïŒ
jest --coverage
Jestã¯`coverage`ãã£ã¬ã¯ããªã«ã«ãã¬ããžã¬ããŒããçæããŸããããã«ã¯ãã©ãŠã¶ã§è¡šç€ºã§ããHTMLã¬ããŒããå«ãŸããŸããã¬ããŒãã«ã¯ããããžã§ã¯ãå ã®åãã¡ã€ã«ã®ã«ãã¬ããžæ å ±ã衚瀺ããããã¹ãã«ãã£ãŠã«ããŒãããã¹ããŒãã¡ã³ãããã©ã³ãã颿°ãè¡ã®å²åã瀺ãããŸãã
äŸïŒMochaã§Istanbulã䜿çšãã
Mochaã§Istanbulã䜿çšããã«ã¯ã`nyc`ããã±ãŒãžãã€ã³ã¹ããŒã«ããå¿ èŠããããŸãïŒ
npm install -g nyc
次ã«ãIstanbulã䜿çšããŠMochaãã¹ããå®è¡ã§ããŸãïŒ
nyc mocha
Istanbulã¯ã³ãŒããèšæž¬ãã`coverage`ãã£ã¬ã¯ããªã«ã«ãã¬ããžã¬ããŒããçæããŸãã
ã³ãŒãã«ãã¬ããžãåäžãããããã®æŠç¥
ã³ãŒãã«ãã¬ããžãåäžãããã«ã¯ãäœç³»çãªã¢ãããŒããå¿ èŠã§ãã以äžã«å¹æçãªæŠç¥ãããã€ã玹ä»ããŸãïŒ
- ãŠããããã¹ããäœæããïŒ åã ã®é¢æ°ãã³ã³ããŒãã³ãã«å¯ŸããŠå æ¬çãªãŠããããã¹ããäœæããããšã«éäžããŸãã
- çµ±åãã¹ããäœæããïŒ çµ±åãã¹ãã¯ãã·ã¹ãã ã®ç°ãªãéšåãæ£ãã飿ºããŠåäœããããšã確èªããŸãã
- ãšã³ãããŒãšã³ããã¹ããäœæããïŒ ãšã³ãããŒãšã³ããã¹ãã¯ãå®éã®ãŠãŒã¶ãŒã·ããªãªãã·ãã¥ã¬ãŒãããã¢ããªã±ãŒã·ã§ã³å šäœãæåŸ ã©ããã«æ©èœããããšã確èªããŸãã
- ãã¹ãé§åéçºïŒTDDïŒã䜿çšããïŒ TDDã§ã¯ãå®éã®ã³ãŒããæžãåã«ãã¹ããæžããŸããããã«ãããã³ãŒãã®èŠä»¶ãšèšèšã«ã€ããŠäºåã«èããããšã«ãªããããè¯ããã¹ãã«ãã¬ããžã«ã€ãªãããŸãã
- ããã€ãã¢é§åéçºïŒBDDïŒã䜿çšããïŒ BDDã¯ããŠãŒã¶ãŒã®èŠç¹ããã¢ããªã±ãŒã·ã§ã³ã®æåŸ ãããæ¯ãèããèšè¿°ãããã¹ããäœæããããšã«çŠç¹ãåœãŠãŠããŸããããã«ããããã¹ããèŠä»¶ãšäžèŽããŠããããšãä¿èšŒããã®ã«åœ¹ç«ã¡ãŸãã
- ã«ãã¬ããžã¬ããŒããåæããïŒ å®æçã«ã³ãŒãã«ãã¬ããžã¬ããŒãã確èªããŠã«ãã¬ããžãäœãé åãç¹å®ãããããæ¹åããããã®ãã¹ããäœæããŸãã
- éèŠãªã³ãŒããåªå ããïŒ æåã«éèŠãªã³ãŒããã¹ãšé¢æ°ã®ã«ãã¬ããžãåäžãããããšã«éäžããŸãã
- ã¢ãã¯ã䜿çšããïŒ ãã¹ãäžã«ã³ãŒãã®ãŠããããåé¢ããå€éšã·ã¹ãã ãããŒã¿ããŒã¹ãžã®äŸåãé¿ããããã«ã¢ãã¯ã䜿çšããŸãã
- ãšããžã±ãŒã¹ãèæ ®ããïŒ ã³ãŒããäºæããªãå ¥åãæ£ããåŠçããããšã確èªããããã«ããšããžã±ãŒã¹ãšå¢çæ¡ä»¶ããã¹ãããããã«ããŠãã ããã
ã³ãŒãã«ãã¬ããž vs. ã³ãŒãå質
ã³ãŒãã«ãã¬ããžã¯ãœãããŠã§ã¢å質ãè©äŸ¡ããããã®äžã€ã®ã¡ããªã¯ã¹ã«éããªãããšãèŠããŠããããšãéèŠã§ãã100%ã®ã³ãŒãã«ãã¬ããžãéæãããããšãã£ãŠãã³ãŒãã«ãã°ããªãããšããèšèšãåªããŠããããšãä¿èšŒãããããã§ã¯ãããŸãããé«ãã³ãŒãã«ãã¬ããžã¯èª€ã£ãå®å¿æãçã¿åºãå¯èœæ§ããããŸãã
ã³ãŒãã®è¡ãå®è¡ããã ãã§ããã®æ¯ãèããé©åã«ã¢ãµãŒãããªãã質ã®äœããã¹ããèããŠã¿ãŠãã ããããã®ãã¹ãã¯ã³ãŒãã«ãã¬ããžãåäžãããŸããããã°ãæ€åºãããšããç¹ã§ã¯å®è³ªçãªäŸ¡å€ãæäŸããŸãããã«ãã¬ããžãå¢ããã ãã®å€ãã®è¡šå±€çãªãã¹ãããããã³ãŒãã培åºçã«å®è¡ããå°æ°ã®é«å質ãªãã¹ããæã€æ¹ãè¯ãã§ãã
ã³ãŒãå質ã¯ã以äžãå«ãããŸããŸãªèŠçŽ ãå å«ããŸãïŒ
- æ£ç¢ºæ§ïŒ ã³ãŒãã¯èŠä»¶ãæºãããæ£ããçµæãçæããŸããïŒ
- å¯èªæ§ïŒ ã³ãŒãã¯çè§£ãããããä¿å®ããããã§ããïŒ
- ä¿å®æ§ïŒ ã³ãŒãã¯ä¿®æ£ãæ¡åŒµã容æã§ããïŒ
- ããã©ãŒãã³ã¹ïŒ ã³ãŒãã¯å¹ççã§ããã©ãŒãã³ã¹ãé«ãã§ããïŒ
- ã»ãã¥ãªãã£ïŒ ã³ãŒãã¯å®å šã§ãè匱æ§ããä¿è·ãããŠããŸããïŒ
ã³ãŒãã«ãã¬ããžã¯ãã³ãŒãã¬ãã¥ãŒãéçè§£æãããã©ãŒãã³ã¹ãã¹ããªã©ã®ä»ã®å質ã¡ããªã¯ã¹ããã©ã¯ãã£ã¹ãšäœµçšããŠãã³ãŒããé«å質ã§ããããšãä¿èšŒããããã«äœ¿çšãããã¹ãã§ãã
çŸå®çãªã³ãŒãã«ãã¬ããžç®æšã®èšå®
çŸå®çãªã³ãŒãã«ãã¬ããžç®æšãèšå®ããããšãäžå¯æ¬ ã§ãã100%ã®ã«ãã¬ããžãç®æãããšã¯ãã°ãã°éçŸå®çã§ãããåç©«éæžã«ã€ãªããå¯èœæ§ããããŸããããåççãªã¢ãããŒãã¯ãã³ãŒãã®éèŠåºŠãšãããžã§ã¯ãã®ç¹å®ã®èŠä»¶ã«åºã¥ããŠç®æšã«ãã¬ããžã¬ãã«ãèšå®ããããšã§ãã80%ãã90%ã®éã®ç®æšã¯ã培åºçãªãã¹ããšå®çšæ§ã®éã®è¯ããã©ã³ã¹ã§ããããšãå€ãã§ãã
ãŸããã³ãŒãã®è€éããèæ ®ããŠãã ãããéåžžã«è€éãªã³ãŒãã¯ãããåçŽãªã³ãŒããããé«ãã«ãã¬ããžãå¿ èŠãšããå ŽåããããŸããã«ãã¬ããžç®æšã宿çã«èŠçŽããçµéšããããžã§ã¯ãã®é²åããããŒãºã«åºã¥ããŠå¿ èŠã«å¿ããŠèª¿æŽããããšãéèŠã§ãã
ç°ãªããã¹ã段éã«ãããã³ãŒãã«ãã¬ããž
ã³ãŒãã«ãã¬ããžã¯ãããŸããŸãªãã¹ã段éã«ããã£ãŠé©çšã§ããŸãïŒ
- ãŠããããã¹ãïŒ åã ã®é¢æ°ãã³ã³ããŒãã³ãã®ã«ãã¬ããžã枬å®ããŸãã
- çµ±åãã¹ãïŒ ã·ã¹ãã ã®ç°ãªãéšåéã®çžäºäœçšã®ã«ãã¬ããžã枬å®ããŸãã
- ãšã³ãããŒãšã³ããã¹ãïŒ ãŠãŒã¶ãŒãããŒãã·ããªãªã®ã«ãã¬ããžã枬å®ããŸãã
åãã¹ã段éã¯ãã³ãŒãã«ãã¬ããžã«ã€ããŠç°ãªãèŠç¹ãæäŸããŸãããŠããããã¹ãã¯è©³çްã«çŠç¹ãåœãŠãçµ±åãã¹ããšãšã³ãããŒãšã³ããã¹ãã¯å šäœåã«çŠç¹ãåœãŠãŸãã
å®è·µçãªäŸãšã·ããªãª
JavaScriptã³ãŒãã®å質ãåäžãããããã«ã³ãŒãã«ãã¬ããžãã©ã®ããã«äœ¿çšã§ããããããã€ãã®å®è·µçãªäŸãèããŠã¿ãŸãããã
äŸ1ïŒãšããžã±ãŒã¹ã®åŠç
æ°å€ã®é åã®å¹³åãèšç®ãã颿°ããããšããŸãïŒ
function calculateAverage(numbers) {
if (numbers.length === 0) {
return 0;
}
let sum = 0;
for (let i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
return sum / numbers.length;
}
æåã¯ãå žåçãªã·ããªãªãã«ããŒãããã¹ãã±ãŒã¹ãæžããããããŸããïŒ
it('should calculate the average of an array of numbers', () => {
const numbers = [1, 2, 3, 4, 5];
const average = calculateAverage(numbers);
expect(average).toBe(3);
});
ãããããã®ãã¹ãã±ãŒã¹ã¯é åã空ã§ãããšãããšããžã±ãŒã¹ãã«ããŒããŠããŸãããã³ãŒãã«ãã¬ããžã¯ããã®æ¬ èœãããã¹ãã±ãŒã¹ãç¹å®ããã®ã«åœ¹ç«ã¡ãŸããã«ãã¬ããžã¬ããŒããåæããããšã§ã`if (numbers.length === 0)`ãã©ã³ããã«ããŒãããŠããªãããšãããããŸãããã®åŸããã®ãšããžã±ãŒã¹ãã«ããŒããããã«ãã¹ãã±ãŒã¹ã远å ã§ããŸãïŒ
it('should return 0 when the array is empty', () => {
const numbers = [];
const average = calculateAverage(numbers);
expect(average).toBe(0);
});
äŸ2ïŒãã©ã³ãã«ãã¬ããžã®æ¹å
幎霢ãšäŒå¡ã¹ããŒã¿ã¹ã«åºã¥ããŠãŠãŒã¶ãŒãå²åŒã®å¯Ÿè±¡ã§ãããã©ããã倿ãã颿°ããããšããŸãïŒ
function isEligibleForDiscount(age, isMember) {
if (age >= 65 || isMember) {
return true;
} else {
return false;
}
}
æåã¯ã以äžã®ãã¹ãã±ãŒã¹ããå§ãããããããŸããïŒ
it('should return true if the user is 65 or older', () => {
expect(isEligibleForDiscount(65, false)).toBe(true);
});
it('should return true if the user is a member', () => {
expect(isEligibleForDiscount(30, true)).toBe(true);
});
ãããããããã®ãã¹ãã±ãŒã¹ã¯ãã¹ãŠã®å¯èœãªãã©ã³ããã«ããŒããŠããŸãããã«ãã¬ããžã¬ããŒãã¯ããŠãŒã¶ãŒãäŒå¡ã§ã¯ãªãã65æ³æªæºã§ããã±ãŒã¹ããã¹ãããŠããªãããšã瀺ããŸãããã©ã³ãã«ãã¬ããžãæ¹åããããã«ã以äžã®ãã¹ãã±ãŒã¹ã远å ã§ããŸãïŒ
it('should return false if the user is not a member and is under 65', () => {
expect(isEligibleForDiscount(30, false)).toBe(false);
});
é¿ããã¹ãäžè¬çãªèœãšã穎
ã³ãŒãã«ãã¬ããžã¯è²ŽéãªããŒã«ã§ãããããã€ãã®äžè¬çãªèœãšãç©Žã«æ³šæããããšãéèŠã§ãïŒ
- ç²ç®çã«100%ã®ã«ãã¬ããžãè¿œãæ±ããïŒ åè¿°ã®ããã«ãã©ããªç ç²ãæã£ãŠã100%ã®ã«ãã¬ããžãç®æãããšã¯é广ã«ãªãå¯èœæ§ããããŸããã³ãŒãã培åºçã«å®è¡ããæå³ã®ãããã¹ããæžãããšã«éäžããŠãã ããã
- ãã¹ãã®å質ãç¡èŠããïŒ å質ã®äœããã¹ãã§é«ãã«ãã¬ããžãéæããŠãæå³ããããŸããããã¹ããé©åã«æžãããèªã¿ããããä¿å®å¯èœã§ããããšã確èªããŠãã ããã
- ã«ãã¬ããžãå¯äžã®ã¡ããªã¯ã¹ãšããŠäœ¿çšããïŒ ã³ãŒãã«ãã¬ããžã¯ãä»ã®å質ã¡ããªã¯ã¹ããã©ã¯ãã£ã¹ãšäœµçšããŠäœ¿çšãããã¹ãã§ãã
- ãšããžã±ãŒã¹ããã¹ãããªãïŒ ã³ãŒããäºæããªãå ¥åãæ£ããåŠçããããšã確èªããããã«ããšããžã±ãŒã¹ãšå¢çæ¡ä»¶ããã¹ãããããã«ããŠãã ããã
- èªåçæããããã¹ãã«äŸåããïŒ èªåçæããããã¹ãã¯ã«ãã¬ããžãå¢ããã®ã«åœ¹ç«ã€ããšããããŸããããã°ãã°æå³ã®ããã¢ãµãŒã·ã§ã³ãæ¬ ããå®è³ªçãªäŸ¡å€ãæäŸããŸããã
ã³ãŒãã«ãã¬ããžã®æªæ¥
ã³ãŒãã«ãã¬ããžã®ããŒã«ãšæè¡ã¯çµ¶ããé²åããŠããŸããå°æ¥ã®ãã¬ã³ãã«ã¯ä»¥äžãå«ãŸããŸãïŒ
- IDEãšã®çµ±åã®æ¹åïŒ IDEãšã®ã·ãŒã ã¬ã¹ãªçµ±åã«ãããã«ãã¬ããžã¬ããŒãã®åæãšæ¹åé åã®ç¹å®ã容æã«ãªããŸãã
- ããã€ã³ããªãžã§ã³ããªã«ãã¬ããžåæïŒ AIæèŒããŒã«ã¯ãéèŠãªã³ãŒããã¹ãèªåçã«ç¹å®ããã«ãã¬ããžãåäžãããããã®ãã¹ããææ¡ã§ããããã«ãªããŸãã
- ãªã¢ã«ã¿ã€ã ã®ã«ãã¬ããžãã£ãŒãããã¯ïŒ ãªã¢ã«ã¿ã€ã ã®ã«ãã¬ããžãã£ãŒãããã¯ã«ãããéçºè ã¯ã³ãŒãã®å€æŽãã«ãã¬ããžã«äžãã圱é¿ã«ã€ããŠå³åº§ã«æŽå¯ãåŸãããšãã§ããŸãã
- éçè§£æããŒã«ãšã®çµ±åïŒ ã³ãŒãã«ãã¬ããžãšéçè§£æããŒã«ãçµã¿åãããããšã§ãã³ãŒãå質ã®ããå æ¬çãªãã¥ãŒãæäŸãããŸãã
çµè«
JavaScriptã®ã³ãŒãã«ãã¬ããžã¯ããœãããŠã§ã¢ã®å質ãšãã¹ãã®ç¶²çŸ æ§ã確ä¿ããããã®åŒ·åãªããŒã«ã§ããããŸããŸãªçš®é¡ã®ã«ãã¬ããžã¡ããªã¯ã¹ãçè§£ããé©åãªããŒã«ã䜿çšãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãJavaScriptã³ãŒãã®ä¿¡é Œæ§ãšå ç¢æ§ã广çã«åäžãããããšãã§ããŸããã³ãŒãã«ãã¬ããžã¯ããºã«ã®äžçã«éããªãããšãå¿ããªãã§ãã ãããé«å質ã§ä¿å®å¯èœãªãœãããŠã§ã¢ãäœæããããã«ãä»ã®å質ã¡ããªã¯ã¹ããã©ã¯ãã£ã¹ãšäœµçšããŠäœ¿çšãããã¹ãã§ããç²ç®çã«100%ã®ã«ãã¬ããžãè¿œãæ±ãããšããçœ ã«é¥ããªãã§ãã ãããã³ãŒãã培åºçã«å®è¡ãããã°ã®æ€åºãšãœãããŠã§ã¢å šäœã®å質åäžãšããç¹ã§å®è³ªçãªäŸ¡å€ãæäŸããæå³ã®ãããã¹ããæžãããšã«éäžããŠãã ããã
ã³ãŒãã«ãã¬ããžãšãœãããŠã§ã¢å質ã«å¯Ÿããå æ¬çãªã¢ãããŒããæ¡çšããããšã§ããŠãŒã¶ãŒã®ããŒãºãæºãããããä¿¡é Œæ§ãé«ãå ç¢ãªJavaScriptã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãã