JavaScriptã®ããããã£ããŒã¹ãã¹ããæ¢æ±ããŸããjsverifyãfast-checkãªã©ã®ã©ã€ãã©ãªã䜿ã£ãå®è·µçãªäŸãéããŠãå®è£ æ¹æ³ããã¹ãã«ãã¬ããžã®åäžããœãããŠã§ã¢å質ã®ç¢ºä¿ã«ã€ããŠåŠã³ãŸãããã
JavaScriptã®ãã¹ãæŠç¥ïŒããããã£ããŒã¹ãã¹ãã®å®è£
ãã¹ãã¯ãœãããŠã§ã¢éçºã«äžå¯æ¬ ãªéšåã§ãããã¢ããªã±ãŒã·ã§ã³ã®ä¿¡é Œæ§ãšå ç¢æ§ãä¿èšŒããŸããåäœãã¹ããç¹å®ã®å ¥åãšæåŸ ãããåºåã«çŠç¹ãåœãŠãã®ã«å¯Ÿããããããã£ããŒã¹ãã¹ãïŒPBTïŒã¯ãèªåçæãããåºç¯ãªå ¥åã«å¯ŸããŠã³ãŒããäºåå®çŸ©ãããããããã£ãéµå®ããããšãæ€èšŒããããšã§ãããå æ¬çãªã¢ãããŒããæäŸããŸãããã®ããã°èšäºã§ã¯ãJavaScriptã«ãããããããã£ããŒã¹ãã¹ãã®äžçãæãäžãããã®å©ç¹ãå®è£ æè¡ããããŠäººæ°ã®ããã©ã€ãã©ãªã«ã€ããŠæ¢æ±ããŸãã
ããããã£ããŒã¹ãã¹ããšã¯äœãïŒ
ããããã£ããŒã¹ãã¹ãïŒçæçãã¹ããšãåŒã°ããïŒã¯ãåã ã®äŸããã¹ãããããšãããããç¯å²ã®å ¥åã«å¯ŸããŠçã§ããã¹ãããããã£ãæ€èšŒããããšãžãšçŠç¹ãç§»ããŸããç¹å®ã®å ¥åã«å¯Ÿããç¹å®ã®åºåãã¢ãµãŒããããã¹ããæžã代ããã«ãã³ãŒãã®æåŸ ãããæ¯ãèããèšè¿°ããããããã£ãå®çŸ©ããŸããPBTãã¬ãŒã ã¯ãŒã¯ã¯ãã®åŸã倿°ã®ã©ã³ãã ãªå ¥åãçæããããããã¹ãŠã«å¯ŸããŠããããã£ãçã§ãããã確èªããŸããããããã£ãç Žãããå Žåããã¬ãŒã ã¯ãŒã¯ã¯ãããã°ã容æã«ããããã«ãæãå°ãã倱æäŸãèŠã€ããããšå ¥åãçž®å°ïŒshrinkïŒããŸãã
ãœãŒã颿°ããã¹ãããŠãããšæ³åããŠã¿ãŠãã ãããããã€ãã®æäœæ¥ã§éžãã é åã§ãã¹ããã代ããã«ãããœãŒãåŸã®é åã®é·ãã¯å ã®é åã®é·ããšçããããããœãŒãåŸã®é åã®ãã¹ãŠã®èŠçŽ ã¯åã®èŠçŽ ä»¥äžã§ããããšãã£ãããããã£ãå®çŸ©ã§ããŸããPBTãã¬ãŒã ã¯ãŒã¯ã¯ãããŸããŸãªãµã€ãºãå 容ã®å€æ°ã®é åãçæãããœãŒã颿°ãåºç¯ãªã·ããªãªã§ãããã®ããããã£ãæºããããšãä¿èšŒããŸãã
ããããã£ããŒã¹ãã¹ãã®å©ç¹
- ãã¹ãã«ãã¬ããžã®åäžïŒ PBTã¯åŸæ¥ã®åäœãã¹ããããã¯ããã«åºç¯ãªå ¥åãæ¢çŽ¢ããæåã§ã¯èæ ®ããªãã£ããããããªããšããžã±ãŒã¹ãäºæãã¬ã·ããªãªãçºèŠããŸãã
- ã³ãŒãå質ã®åäžïŒ ããããã£ãå®çŸ©ããããšã¯ãã³ãŒãã®æå³ãããæ¯ãèãã«ã€ããŠããæ·±ãèããããšã匷å¶ããåé¡é åãžã®ããè¯ãçè§£ãšããå ç¢ãªå®è£ ã«ã€ãªãããŸãã
- ã¡ã³ããã³ã¹ã³ã¹ãã®åæžïŒ ããããã£ããŒã¹ãã¹ãã¯ãå ·äœäŸããŒã¹ã®ãã¹ããããã³ãŒãã®å€æŽã«å¯ŸããŠå埩åããããŸããã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããŠãåãããããã£ãç¶æããã°ãPBTãã¹ãã¯åŒãç¶ããã¹ãã倿Žããªã°ã¬ãã·ã§ã³ãåŒãèµ·ãããŠããªããšããèªä¿¡ãäžããŠãããŸãã
- ãããã°ã®å®¹æãïŒ ããããã£ã倱æããå ŽåãPBTãã¬ãŒã ã¯ãŒã¯ã¯æå°ã®å€±æäŸãæäŸããããããã°ã®æ ¹æ¬åå ãç¹å®ããã®ã容æã«ãªããŸãã
- ããè¯ãããã¥ã¡ã³ãïŒ ããããã£ã¯å®è¡å¯èœãªããã¥ã¡ã³ããšããŠæ©èœããã³ãŒãã®æåŸ ãããæ¯ãèããæç¢ºã«æŠèª¬ããŸãã
JavaScriptã§ã®ããããã£ããŒã¹ãã¹ãã®å®è£
ããã€ãã®JavaScriptã©ã€ãã©ãªãããããã£ããŒã¹ãã¹ãã容æã«ããŸãã人æ°ã®ããéžæè¢ãšããŠjsverifyãšfast-checkããããŸããããããã®äœ¿ãæ¹ãå®è·µçãªäŸã§èŠãŠãããŸãããã
jsverifyã®äœ¿çš
jsverifyã¯ãJavaScriptã«ãããããããã£ããŒã¹ãã¹ãã®ããã®åŒ·åã§å®è©ã®ããã©ã€ãã©ãªã§ããã©ã³ãã ããŒã¿ãçæããããã®è±å¯ãªãžã§ãã¬ãŒã¿ã»ãããšãããããã£ãå®çŸ©ã»å®è¡ããããã®äŸ¿å©ãªAPIãæäŸããŸãã
ã€ã³ã¹ããŒã«ïŒ
npm install jsverify
äŸïŒå ç®é¢æ°ã®ãã¹ã
ç°¡åãªå ç®é¢æ°ããããšããŸãïŒ
function add(a, b) {
return a + b;
}
jsverifyã䜿çšããŠãå ç®ã坿ã§ããïŒa + b = b + aïŒãšããããããã£ãå®çŸ©ã§ããŸãïŒ
const jsc = require('jsverify');
jsc.property('addition is commutative', 'number', 'number', function(a, b) {
return add(a, b) === add(b, a);
});
ãã®äŸã§ã¯ïŒ
jsc.property
ã¯ã説æçãªååãæã€ããããã£ãå®çŸ©ããŸãã'number', 'number'
ã¯ãããããã£ãa
ãšb
ã®å ¥åãšããŠã©ã³ãã ãªæ°å€ã§ãã¹ããããã¹ãã§ããããšãæå®ããŸããjsverifyã¯ãããŸããŸãªããŒã¿åã«å¯Ÿå¿ããåºç¯ãªçµã¿èŸŒã¿ãžã§ãã¬ãŒã¿ãæäŸããŸãã- 颿°
function(a, b) { ... }
ã¯ããããã£èªäœãå®çŸ©ããŸããçæãããå ¥åa
ãšb
ãåãåããããããã£ãçã§ããã°true
ããããã§ãªããã°false
ãè¿ããŸãã
ãã®ãã¹ããå®è¡ãããšãjsverifyã¯äœçŸãã®ã©ã³ãã ãªæ°å€ã®ãã¢ãçæãã坿ããããã£ãããããã¹ãŠã«å¯ŸããŠçã§ãããã確èªããŸããåäŸãèŠã€ãã£ãå Žåã倱æããå ¥åãå ±åãããããæå°ã®äŸã«çž®å°ããããšããŸãã
ããè€éãªäŸïŒæåååè»¢é¢æ°ã®ãã¹ã
æååãå転ããã颿°ã§ãïŒ
function reverseString(str) {
return str.split('').reverse().join('');
}
æååã2åå転ããããšå ã®æååã«æ»ãããšããããããã£ãå®çŸ©ã§ããŸãïŒ
jsc.property('reversing a string twice returns the original string', 'string', function(str) {
return reverseString(reverseString(str)) === str;
});
jsverifyã¯ãããŸããŸãªé·ããå 容ã®ã©ã³ãã ãªæååãçæãããã®ããããã£ãããããã¹ãŠã«å¯ŸããŠçã§ãããã確èªããŸãã
fast-checkã®äœ¿çš
fast-checkã¯ãJavaScriptåãã®ããäžã€ã®åªããããããã£ããŒã¹ãã¹ãã©ã€ãã©ãªã§ãããã®ããã©ãŒãã³ã¹ãšããžã§ãã¬ãŒã¿ãšããããã£ãå®çŸ©ããããã®æµæ¢ãªAPIãæäŸããããšã«éç¹ã眮ããŠããããšã§ç¥ãããŠããŸãã
ã€ã³ã¹ããŒã«ïŒ
npm install fast-check
äŸïŒå ç®é¢æ°ã®ãã¹ã
åãšåãå ç®é¢æ°ã䜿çšããŸãïŒ
function add(a, b) {
return a + b;
}
fast-checkã䜿çšããŠå¯æããããã£ãå®çŸ©ã§ããŸãïŒ
const fc = require('fast-check');
fc.assert(
fc.property(fc.integer(), fc.integer(), (a, b) => {
return add(a, b) === add(b, a);
})
);
ãã®äŸã§ã¯ïŒ
fc.assert
ã¯ããããã£ããŒã¹ãã¹ããå®è¡ããŸããfc.property
ã¯ããããã£ãå®çŸ©ããŸããfc.integer()
ã¯ãããããã£ãa
ãšb
ã®å ¥åãšããŠã©ã³ãã ãªæŽæ°ã§ãã¹ããããã¹ãã§ããããšãæå®ããŸããfast-checkããŸããåºç¯ãªçµã¿èŸŒã¿ã¢ãŒããã©ãªïŒãžã§ãã¬ãŒã¿ïŒãæäŸããŸãã- ã©ã ãåŒ
(a, b) => { ... }
ã¯ããããã£èªäœãå®çŸ©ããŸãã
ããè€éãªäŸïŒæåååè»¢é¢æ°ã®ãã¹ã
åãšåãæåååè»¢é¢æ°ã䜿çšããŸãïŒ
function reverseString(str) {
return str.split('').reverse().join('');
}
fast-checkã䜿çšããŠäºéå転ããããã£ãå®çŸ©ã§ããŸãïŒ
fc.assert(
fc.property(fc.string(), (str) => {
return reverseString(reverseString(str)) === str;
})
);
jsverifyãšfast-checkã®éžæ
jsverifyãšfast-checkã¯ã©ã¡ããJavaScriptã§ã®ããããã£ããŒã¹ãã¹ãã®ããã®åªããéžæè¢ã§ãããããžã§ã¯ãã«é©ããã©ã€ãã©ãªãéžæããããã®ç°¡åãªæ¯èŒã以äžã«ç€ºããŸãïŒ
- jsverifyïŒ æŽå²ãé·ããããåºç¯ãªçµã¿èŸŒã¿ãžã§ãã¬ãŒã¿ã®ã³ã¬ã¯ã·ã§ã³ãæã£ãŠããŸããfast-checkã§å©çšã§ããªãç¹å®ã®ãžã§ãã¬ãŒã¿ãå¿ èŠãªå Žåãããã宣èšçãªã¹ã¿ã€ã«ã奜ãå Žåã«è¯ãéžæãããããŸããã
- fast-checkïŒ ããã©ãŒãã³ã¹ã𿵿¢ãªAPIã§ç¥ãããŠããŸããããã©ãŒãã³ã¹ãéèŠãªå Žåããããç°¡æœã§è¡šçŸåè±ããªã¹ã¿ã€ã«ã奜ãå Žåã«è¯ãéžæãããããŸããããã®çž®å°ïŒshrinkingïŒèœåãéåžžã«åªããŠãããšãããŠããŸãã
æçµçã«ãæè¯ã®éžæã¯ããªãã®ç¹å®ã®ããŒãºãšå¥œã¿ã«äŸåããŸããã©ã¡ãã®ã©ã€ãã©ãªãããå¿«é©ã§å¹æçã§ãããã確èªããããã«ãäž¡æ¹ã詊ããŠã¿ã䟡å€ããããŸãã
广çãªããããã£ããŒã¹ãã¹ããæžãããã®æŠç¥
广çãªããããã£ããŒã¹ãã¹ããæžãã«ã¯ãåŸæ¥ã®åäœãã¹ããšã¯ç°ãªãèãæ¹ãå¿ èŠã§ããPBTãæå€§éã«æŽ»çšããããã®ããã€ãã®æŠç¥ã以äžã«ç€ºããŸãïŒ
- äŸã§ã¯ãªããããããã£ã«çŠç¹ãåœãŠãïŒ ç¹å®ã®å ¥åãšåºåã®ãã¢ã«çŠç¹ãåœãŠãã®ã§ã¯ãªããã³ãŒããæºããã¹ãåºæ¬çãªããããã£ã«ã€ããŠèããŸãã
- ç°¡åãªãã®ããå§ããïŒ çè§£ããããæ€èšŒããããç°¡åãªããããã£ããå§ããŸããèªä¿¡ãã€ãã«ã€ããŠãããè€éãªããããã£ã远å ã§ããŸãã
- 説æçãªååã䜿çšããïŒ ããããã£ã«ãäœããã¹ãããŠããããæç¢ºã«èª¬æãã説æçãªååãä»ããŸãã
- ãšããžã±ãŒã¹ãèæ ®ããïŒ PBTã¯åºç¯ãªå ¥åãèªåçã«çæããŸãããæœåšçãªãšããžã±ãŒã¹ãèæ ®ããããããã£ãããããã«ããŒããŠããããšã確èªããããšãäŸç¶ãšããŠéèŠã§ããç¹å¥ãªã±ãŒã¹ãæ±ãããã«ãæ¡ä»¶ä»ãããããã£ã®ãããªãã¯ããã¯ã䜿çšã§ããŸãã
- 倱æããäŸãçž®å°ããïŒ ããããã£ã倱æããå ŽåãPBTãã¬ãŒã ã¯ãŒã¯ã«ãã£ãŠæäŸãããæå°ã®å€±æäŸã«æ³šæãæããŸãããã®äŸã¯ããã°ã®æ ¹æ¬åå ã«é¢ãã貎éãªæãããããã°ãã°æäŸããŸãã
- åäœãã¹ããšçµã¿åãããïŒ PBTã¯åäœãã¹ãã®ä»£æ¿ã§ã¯ãªãããããè£å®ãããã®ã§ããç¹å®ã®ã·ããªãªããšããžã±ãŒã¹ãæ€èšŒããããã«åäœãã¹ãã䜿çšããã³ãŒããåºç¯ãªå ¥åã«ããã£ãŠäžè¬çãªããããã£ãæºããããšã確èªããããã«PBTã䜿çšããŸãã
- ããããã£ã®ç²åºŠïŒ ããããã£ã®ç²åºŠãèæ ®ããŠãã ãããåºããããšã倱æã®èšºæãé£ãããªãå¯èœæ§ããããŸããçããããšãå®è³ªçã«åäœãã¹ããæžããŠããããšã«ãªããŸããé©åãªãã©ã³ã¹ãèŠã€ããããšãéµã§ãã
é«åºŠãªããããã£ããŒã¹ãã¹ãæè¡
ããããã£ããŒã¹ãã¹ãã®åºæ¬ã«æ £ãããããã¹ãæŠç¥ãããã«åŒ·åããããã®ããã€ãã®é«åºŠãªæè¡ãæ¢æ±ã§ããŸãïŒ
- æ¡ä»¶ä»ãããããã£ïŒ ç¹å®ã®æ¡ä»¶äžã§ã®ã¿é©çšãããæ¯ãèãããã¹ãããããã«ãæ¡ä»¶ä»ãããããã£ã䜿çšããŸããäŸãã°ãå ¥åãæ£ã®æ°ã§ããå Žåã«ã®ã¿é©çšãããããããã£ããã¹ããããå Žåãªã©ã§ãã
- ã«ã¹ã¿ã ãžã§ãã¬ãŒã¿ïŒ ã¢ããªã±ãŒã·ã§ã³ãã¡ã€ã³ã«ç¹æã®ããŒã¿ãçæããããã«ãã«ã¹ã¿ã ãžã§ãã¬ãŒã¿ãäœæããŸããããã«ãããããçŸå®çã§é¢é£æ§ã®é«ãå ¥åã§ã³ãŒãããã¹ãã§ããŸãã
- ã¹ããŒããã«ãã¹ãïŒ æéç¶æ æ©æ¢°ããªã¢ã¯ãã£ãã¢ããªã±ãŒã·ã§ã³ã®ãããªã¹ããŒããã«ãªã·ã¹ãã ã®æ¯ãèããæ€èšŒããããã«ãã¹ããŒããã«ãã¹ãæè¡ã䜿çšããŸããããã«ã¯ãããŸããŸãªã¢ã¯ã·ã§ã³ã«å¿ããŠã·ã¹ãã ã®ã¹ããŒããã©ã®ããã«å€åãã¹ãããèšè¿°ããããããã£ãå®çŸ©ããããšãå«ãŸããŸãã
- çµ±åãã¹ãïŒ äž»ã«åäœãã¹ãã«äœ¿çšãããŸãããPBTã®ååã¯çµ±åãã¹ãã«ãé©çšã§ããŸããã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãã¢ãžã¥ãŒã«ãã³ã³ããŒãã³ãéã§çã§ããã¹ãããããã£ãå®çŸ©ããŸãã
- ãã¡ãžã³ã°ïŒ ããããã£ããŒã¹ãã¹ãã¯ãã¡ãžã³ã°ã®äžåœ¢æ ãšããŠäœ¿çšã§ããŸããã©ã³ãã ã§æœåšçã«ç¡å¹ãªå ¥åãçæããŠãã»ãã¥ãªãã£ã®è匱æ§ãäºæãã¬æ¯ãèããçºèŠããŸãã
ããŸããŸãªãã¡ã€ã³ã«ãããäŸ
ããããã£ããŒã¹ãã¹ãã¯ãå€çš®å€æ§ãªãã¡ã€ã³ã«é©çšã§ããŸãã以äžã«ããã€ãã®äŸãæããŸãïŒ
- æ°åŠé¢æ°ïŒ æ°åŠæŒç®ã®å¯ææ§ãçµåæ§ãåé æ§ãªã©ã®ããããã£ããã¹ãããŸãã
- ããŒã¿æ§é ïŒ ãœãŒãæžã¿ãªã¹ãã®é åºã®ç¶æããã³ã¬ã¯ã·ã§ã³å ã®èŠçŽ æ°ãæ£ããããªã©ã®ããããã£ãæ€èšŒããŸãã
- æååæäœïŒ æååã®åè»¢ãæ£èŠè¡šçŸãããã³ã°ã®æ£åœæ§ãURLè§£æã®åŠ¥åœæ§ãªã©ã®ããããã£ããã¹ãããŸãã
- APIçµ±åïŒ APIåŒã³åºãã®ã¹ãçæ§ããç°ãªãã·ã¹ãã éã§ã®ããŒã¿ã®äžè²«æ§ãªã©ã®ããããã£ãæ€èšŒããŸãã
- Webã¢ããªã±ãŒã·ã§ã³ïŒ ãã©ãŒã æ€èšŒã®æ£åœæ§ããWebããŒãžã®ã¢ã¯ã»ã·ããªãã£ãªã©ã®ããããã£ããã¹ãããŸããäŸãã°ããã¹ãŠã®ç»åã«altããã¹ããããããšã確èªãããªã©ã§ãã
- ã²ãŒã éçºïŒ ã²ãŒã ç©çã®äºæž¬å¯èœãªæ¯ãèããæ£ããã¹ã³ã¢ãªã³ã°ã¡ã«ããºã ãã©ã³ãã çæã³ã³ãã³ãã®å ¬æ£ãªååžãªã©ã®ããããã£ããã¹ãããŸããç°ãªãã·ããªãªäžã§ã®AIã®æææ±ºå®ããã¹ãããããšãèããããŸãã
- éèã¢ããªã±ãŒã·ã§ã³ïŒ éèã·ã¹ãã ã§ã¯ãããŸããŸãªçš®é¡ã®ãã©ã³ã¶ã¯ã·ã§ã³ïŒé éãåŒãåºããééïŒã®åŸã«æ®é«ã®æŽæ°ãåžžã«æ£ç¢ºã§ããããšããã¹ãããããšãéèŠã§ããããããã£ã¯ãç·äŸ¡å€ãä¿åãããæ£ããåž°å±ããããšã匷å¶ããŸãã
åœéåïŒi18nïŒã®äŸïŒ åœéåãæ±ãéãããããã£ã¯é¢æ°ãç°ãªããã±ãŒã«ãæ£ããåŠçããããšãä¿èšŒã§ããŸããäŸãã°ãæ°å€ãæ¥ä»ããã©ãŒãããããå Žåãæ¬¡ã®ãããªããããã£ã確èªã§ããŸãïŒ * ãã©ãŒããããããæ°å€ãæ¥ä»ããæå®ããããã±ãŒã«ã«å¯ŸããŠæ£ãããã©ãŒããããããŠããã * ãã©ãŒããããããæ°å€ãæ¥ä»ãã粟床ãä¿ã£ããŸãŸå ã®å€ã«è§£æãçŽãããšãã§ããã
ã°ããŒããªãŒãŒã·ã§ã³ïŒg11nïŒã®äŸïŒ ç¿»èš³ãæ±ãéãããããã£ã¯äžè²«æ§ãšæ£ç¢ºæ§ãç¶æããã®ã«åœ¹ç«ã¡ãŸããäŸãã°ïŒ * 翻蚳ãããæååã®é·ãããå ã®æååã®é·ããšïŒé床ãªäŒžé·ãåãæšãŠãé¿ããããã«ïŒåççã«è¿ãã * 翻蚳ãããæååã«ãå ã®æååãšåããã¬ãŒã¹ãã«ããŒã倿°ãå«ãŸããŠããã
é¿ããã¹ãäžè¬çãªèœãšã穎
- èªæãªããããã£ïŒ ãã¹ã察象ã®ã³ãŒãã«é¢ä¿ãªãåžžã«çãšãªãããããã£ã¯é¿ããŸãããããã®ããããã£ã¯ææçŸ©ãªæ å ±ãæäŸããŸããã
- é床ã«è€éãªããããã£ïŒ çè§£ãããæ€èšŒãããããã®ãé£ããããããããã£ã¯é¿ããŸããè€éãªããããã£ã¯ãããå°ãã管çãããããã®ã«åå²ããŸãã
- ãšããžã±ãŒã¹ã®ç¡èŠïŒ ããããã£ãæœåšçãªãšããžã±ãŒã¹ãå¢çæ¡ä»¶ãã«ããŒããŠããããšã確èªããŸãã
- åäŸã®èª€è§£ïŒ ãã°ã®æ ¹æ¬åå ãçè§£ããããã«ãPBTãã¬ãŒã ã¯ãŒã¯ã«ãã£ãŠæäŸãããæå°ã®å€±æäŸãæ³šææ·±ãåæããŸããçµè«ã«é£ã³ã€ããããä»®å®ãç«ãŠããããªãã§ãã ããã
- PBTãäžèœè¬ãšããŠæ±ãïŒ PBTã¯åŒ·åãªããŒã«ã§ãããæ éãªèšèšãã³ãŒãã¬ãã¥ãŒããã®ä»ã®ãã¹ãæè¡ã®ä»£æ¿ã§ã¯ãããŸãããå æ¬çãªãã¹ãæŠç¥ã®äžéšãšããŠPBTã䜿çšããŸãã
çµè«
ããããã£ããŒã¹ãã¹ãã¯ãJavaScriptã³ãŒãã®å質ãšä¿¡é Œæ§ãåäžãããããã®äŸ¡å€ããæè¡ã§ããã³ãŒãã®æåŸ ãããæ¯ãèããèšè¿°ããããããã£ãå®çŸ©ããPBTãã¬ãŒã ã¯ãŒã¯ã«åºç¯ãªå ¥åãçæãããããšã§ãåŸæ¥ã®åäœãã¹ãã§ã¯èŠéããŠãããããããªãé ãããã°ããšããžã±ãŒã¹ãçºèŠã§ããŸããjsverifyãfast-checkã®ãããªã©ã€ãã©ãªã䜿ãã°ãJavaScriptãããžã§ã¯ãã«PBTãç°¡åã«å®è£ ã§ããŸãããã¹ãæŠç¥ã®äžéšãšããŠPBTãåãå ¥ãããã¹ãã«ãã¬ããžã®åäžãã³ãŒãåè³ªã®æ¹åãã¡ã³ããã³ã¹ã³ã¹ãã®åæžãšããå©ç¹ã享åããŠãã ãããææçŸ©ãªããããã£ã®å®çŸ©ã«éäžãããšããžã±ãŒã¹ãèæ ®ãã倱æããäŸãæ³šææ·±ãåæããŠããã®åŒ·åãªæè¡ãæå€§éã«æŽ»çšããããšãå¿ããªãã§ãã ãããç·Žç¿ãšçµéšãç©ãããšã§ãããªãã¯ããããã£ããŒã¹ãã¹ãã®é人ãšãªããããå ç¢ã§ä¿¡é Œæ§ã®é«ãJavaScriptã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããããã«ãªãã§ãããã