å¹ççãªã³ãŒãçæã®ããã®JavaScriptã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ãæ¢æ±ããŸãããã³ãã¬ãŒããæŽ»çšããŠãã¢ãžã¥ãŒã«ã®äœæãèªååããã³ãŒãã®äžè²«æ§ãåäžãããéçºè ã®çç£æ§ãé«ããæ¹æ³ãåŠã³ãŸãã
JavaScriptã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ïŒã³ãŒãçæã®å¹çå
çŸä»£ã®JavaScriptéçºã§ã¯ãã¢ãžã¥ãŒã«æ§ãæãéèŠã§ããå€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãããå°ãããåå©çšå¯èœãªã¢ãžã¥ãŒã«ã«åå²ããããšã§ãã³ãŒãã®æŽçãä¿å®æ§ãããã³ã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ãããŸãããã ãããããã®ã¢ãžã¥ãŒã«ãæåã§äœæãããšãå埩çã§æéããããå¯èœæ§ããããŸããããã§JavaScriptã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ãç»å Žããã¢ãžã¥ãŒã«ã®äœæãèªååããã³ãŒãããŒã¹å šäœã®äžè²«æ§ã確ä¿ããããã®åŒ·åãªã¢ãããŒããæäŸããŸãã
JavaScriptã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ãšã¯ïŒ
JavaScriptã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ã¯ãæšæºåãããã¢ãžã¥ãŒã«æ§é ãçæããããã®èšèšå³ãæäŸããŸããç¹å®ã®ã¿ã€ãã®ã¢ãžã¥ãŒã«ã«å¿ èŠãªåºæ¬çãªã³ã³ããŒãã³ããšãã€ã©ãŒãã¬ãŒãã³ãŒããå®çŸ©ãããããéçºè ã¯ãã¹ãŠããŒãããèšè¿°ããããšãªããæ°ããã¢ãžã¥ãŒã«ãè¿ éã«ã€ã³ã¹ã¿ã³ã¹åã§ããŸãããããã®ãã¿ãŒã³ã¯ãã³ãŒãçæããŒã«ãŸãã¯åçŽãªæååæäœæè¡ã䜿çšããŠå®è£ ãããããšããããããŸãã
ã¯ãããŒåã䜿çšãããããªãã®ã ãšèããŠãã ãããåã¯ãããŒãæäœæ¥ã§äžå¯§ã«åœ¢äœã代ããã«ãã«ãã¿ãŒã䜿çšããŠäžè²«ãã圢ãšãµã€ãºã®è€æ°ã®ã¯ãããŒãäœæããŸããã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ã¯ãã³ãŒãã«ã€ããŠãåãããšãè¡ããåã¢ãžã¥ãŒã«ãäºåã«å®çŸ©ãããæ§é ãšã¹ã¿ã€ã«ã«æºæ ããããã«ããŸãã
ã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ã䜿çšããå©ç¹
- çç£æ§ã®åäžïŒæ°ããã¢ãžã¥ãŒã«ã®äœæãèªååããéçºè ãããè€éãªã¿ã¹ã¯ã«éäžã§ããããã«ããŸãã
- ã³ãŒãã®äžè²«æ§ã®åäžïŒãã¹ãŠã®ã¢ãžã¥ãŒã«ã§äžè²«ããæ§é ãšã¹ã¿ã€ã«ãé©çšããã³ãŒãããŒã¹ãããäºæž¬å¯èœã§çè§£ããããããŸãã
- ãšã©ãŒã®åæžïŒæ£ããããšãããã£ãŠãããã€ã©ãŒãã¬ãŒãã³ãŒããèªåçã«çæããããšã§ããšã©ãŒã®ãªã¹ã¯ãæå°éã«æããŸãã
- ä¿å®æ§ã®åäžïŒãã¹ãŠã®ã¢ãžã¥ãŒã«ãæšæºåããããã¿ãŒã³ã«åŸãããã«ããããšã§ãã³ãŒãã®ä¿å®ãšãªãã¡ã¯ã¿ãªã³ã°ãç°¡çŽ åããŸãã
- ãªã³ããŒãã£ã³ã°ã®è¿ éåïŒæç¢ºã§äžè²«ããã¢ãžã¥ãŒã«æ§é ãæäŸããããšã§ãæ°ããããŒã ã¡ã³ããŒãã³ãŒãããŒã¹ããã°ããçè§£ã§ããããã«ããŸãã
äžè¬çãªã¢ãžã¥ãŒã«ã·ã¹ãã ãšãããã®ãã³ãã¬ãŒã
JavaScriptã¯ããã€ãã®ã¢ãžã¥ãŒã«ã·ã¹ãã ãçµãŠé²åããŠãããããããã«ç¬èªã®æ§æãšèŠåããããŸãããã³ãã¬ãŒããã¿ãŒã³ã¯ã次ã®ããããã®ã·ã¹ãã ã§åäœããããã«é©åãããããšãã§ããŸãã
ESã¢ãžã¥ãŒã«ïŒESMïŒ
ESã¢ãžã¥ãŒã«ã¯ãææ°ã®JavaScriptã®æšæºã¢ãžã¥ãŒã«ã·ã¹ãã ã§ããããã©ãŠã¶ãšNode.jsã§ãã€ãã£ãã«ãµããŒããããŠããŸãã`import`ããã³`export`ããŒã¯ãŒãã䜿çšããŠãã¢ãžã¥ãŒã«ã®äŸåé¢ä¿ãšãšã¯ã¹ããŒããå®çŸ©ããŸãã
ãã³ãã¬ãŒãã®äŸïŒESMïŒïŒ
// {moduleName}.js
// ãã©ã€ããŒã倿°ãšé¢æ°ïŒå¿
èŠãªå ŽåïŒ
/**
* {moduleDescription}
*/
export function {functionName}() {
// å®è£
ã®è©³çް
}
// ãã®ä»ã®ãšã¯ã¹ããŒãããã颿°ãšå€æ°
䜿çšäŸïŒESMïŒïŒ
// myModule.js
/**
* ãã®ã¢ãžã¥ãŒã«ã¯ããã€ãã®èšç®ãå®è¡ããŸãã
*/
export function calculateSum(a, b) {
return a + b;
}
CommonJS
CommonJSã¯ãäž»ã«Node.jsã§äœ¿çšãããã¢ãžã¥ãŒã«ã·ã¹ãã ã§ãã`requireïŒïŒ`颿°ã䜿çšããŠã¢ãžã¥ãŒã«ãã€ã³ããŒããã`module.exports`ãªããžã§ã¯ãã䜿çšããŠã¢ãžã¥ãŒã«ããšã¯ã¹ããŒãããŸãã
ãã³ãã¬ãŒãã®äŸïŒCommonJSïŒïŒ
// {moduleName}.js
// ãã©ã€ããŒã倿°ãšé¢æ°ïŒå¿
èŠãªå ŽåïŒ
/**
* {moduleDescription}
*/
exports.{functionName} = function() {
// å®è£
ã®è©³çް
};
// ãã®ä»ã®ãšã¯ã¹ããŒãããã颿°ãšå€æ°
䜿çšäŸïŒCommonJSïŒïŒ
// myModule.js
/**
* ãã®ã¢ãžã¥ãŒã«ã¯ããã€ãã®èšç®ãå®è¡ããŸãã
*/
exports.calculateSum = function(a, b) {
return a + b;
};
Asynchronous Module DefinitionïŒAMDïŒ
AMDã¯ããã©ãŠã¶ã§ã®ã¢ãžã¥ãŒã«ã®éåæããŒãçšã«èšèšãããã¢ãžã¥ãŒã«ã·ã¹ãã ã§ãã`defineïŒïŒ`颿°ã䜿çšããŠãã¢ãžã¥ãŒã«ãšãã®äŸåé¢ä¿ãå®çŸ©ããŸãã
ãã³ãã¬ãŒãã®äŸïŒAMDïŒïŒ
define(['dependency1', 'dependency2'], function(dependency1, dependency2) {
// ãã©ã€ããŒã倿°ãšé¢æ°ïŒå¿
èŠãªå ŽåïŒ
/**
* {moduleDescription}
*/
function {functionName}() {
// å®è£
ã®è©³çް
}
// ãã®ä»ã®ãšã¯ã¹ããŒãããã颿°ãšå€æ°
return {
{functionName}: {functionName}
};
});
䜿çšäŸïŒAMDïŒïŒ
define([], function() {
/**
* ãã®ã¢ãžã¥ãŒã«ã¯ããã€ãã®èšç®ãå®è¡ããŸãã
*/
function calculateSum(a, b) {
return a + b;
}
return {
calculateSum: calculateSum
};
});
ã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ã®å®è£
JavaScriptãããžã§ã¯ãã§ã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ãå®è£ ããæ¹æ³ã¯ããã€ããããŸãã
1.æååæäœ
æãç°¡åãªã¢ãããŒãã¯ãæååæäœã䜿çšããŠããã³ãã¬ãŒãæååã«åºã¥ããŠã¢ãžã¥ãŒã«ã³ãŒããåçã«çæããããšã§ããããã¯ãES6ã®ãã³ãã¬ãŒããªãã©ã«ããŸãã¯å€ãããŒãžã§ã³ã®JavaScriptã®æååé£çµã䜿çšããŠè¡ãããšãã§ããŸãã
äŸïŒ
function createModule(moduleName, functionName, description) {
const template = `
/**
* ${description}
*/
export function ${functionName}() {
// å®è£
ã®è©³çް
}
`;
return template;
}
const moduleCode = createModule('myModule', 'calculateSum', 'This module performs some calculations.');
console.log(moduleCode);
2.ãã³ãã¬ãŒããšã³ãžã³
HandlebarsãMustacheãEJSãªã©ã®ãã³ãã¬ãŒããšã³ãžã³ã¯ããã³ãã¬ãŒãããã³ãŒããçæããããã®ããé«åºŠãªæ¹æ³ãæäŸããŸãããã¬ãŒã¹ãã«ããŒãæ¡ä»¶ã¹ããŒãã¡ã³ããããã³ã«ãŒãã䜿çšããŠãåçãªã¢ãžã¥ãŒã«æ§é ãäœæã§ããŸãã
äŸïŒHandlebarsïŒïŒ
// ãã³ãã¬ãŒãïŒmodule.hbsïŒ
/**
* {{description}}
*/
export function {{functionName}}() {
// å®è£
ã®è©³çް
}
// JavaScriptã³ãŒã
const Handlebars = require('handlebars');
const fs = require('fs');
const templateSource = fs.readFileSync('module.hbs', 'utf8');
const template = Handlebars.compile(templateSource);
const data = {
functionName: 'calculateSum',
description: 'This module performs some calculations.'
};
const moduleCode = template(data);
console.log(moduleCode);
3.ã³ãŒãçæããŒã«
YeomanãPlopãHygenãªã©ã®ã³ãŒãçæããŒã«ã¯ãã³ãŒããã³ãã¬ãŒãã®äœæãšç®¡çã®ããã®ããå æ¬çãªãã¬ãŒã ã¯ãŒã¯ãæäŸããŸããéåžžãããã³ããã®å®çŸ©ããŠãŒã¶ãŒå ¥åã®æ€èšŒãããã³ãã³ãã¬ãŒãã«åºã¥ããã¡ã€ã«ã®çæã®ããã®æ©èœãå«ãŸããŠããŸãã
äŸïŒYeomanïŒïŒ
Yeomanã¯ããããžã§ã¯ããžã§ãã¬ãŒã¿ãŒãäœæã§ããã¹ãã£ãã©ãŒã«ãã£ã³ã°ããŒã«ã§ãããžã§ãã¬ãŒã¿ãŒã¯ããã³ãã¬ãŒããå®çŸ©ãããŠãŒã¶ãŒã«æ å ±ãæ±ããŠãããã®ãã³ãã¬ãŒãã«å ¥åã§ããŸãã
Yeomanã䜿çšããã«ã¯ãéåžžãã¢ãžã¥ãŒã«ãã³ãã¬ãŒããå«ã`templates`ãã©ã«ããŒãªã©ã®ç¹å®ã®ãã©ã«ããŒæ§é ãæã€ãžã§ãã¬ãŒã¿ãŒãããžã§ã¯ããäœæããŸããæ¬¡ã«ããžã§ãã¬ãŒã¿ãŒã¯ãŠãŒã¶ãŒã«å ¥åïŒã¢ãžã¥ãŒã«åã説æãªã©ïŒãæ±ãããã®å ¥åã䜿çšããŠãã³ãã¬ãŒãã«å ¥åãã察å¿ããã¢ãžã¥ãŒã«ãã¡ã€ã«ãçæããŸãã
å®å šãªYeomanã®äŸãæäŸããã®ã¯åºç¯å²ã«ãªããŸãããåºæ¬çãªæŠå¿µãšããŠã¯ããã¬ãŒã¹ãã«ããŒã䜿çšããŠãã³ãã¬ãŒããå®çŸ©ããYeomanã®APIã䜿çšããŠãŠãŒã¶ãŒå ¥åãåéãããããã®ãã³ãã¬ãŒãã«åºã¥ããŠãã¡ã€ã«ãçæããããšãå«ãŸããŸãã
4.ã«ã¹ã¿ã ã¹ã¯ãªãã
Node.jsãŸãã¯ä»ã®ã¹ã¯ãªããèšèªã䜿çšããŠãç¹å®ã®èŠä»¶ã«åºã¥ããŠã¢ãžã¥ãŒã«ã³ãŒããçæããã«ã¹ã¿ã ã¹ã¯ãªãããäœæããããšãã§ããŸãããã®ã¢ãããŒãã¯æãæè»æ§ããããŸãããå®è£ ã«ã¯ããå€ãã®åŽåãå¿ èŠã§ãã
ã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ã䜿çšããããã®ãã¹ããã©ã¯ãã£ã¹
- æç¢ºã§äžè²«æ§ã®ãããã³ãã¬ãŒããå®çŸ©ããïŒãã³ãã¬ãŒããæç¢ºã«å®çŸ©ãããäžè²«ããæ§é ãšã¹ã¿ã€ã«ã«åŸã£ãŠããããšã確èªããŸãã
- åçãªå€ã®ãã¬ãŒã¹ãã«ããŒã䜿çšããïŒã¢ãžã¥ãŒã«åã颿°åã説æãªã©ãå®è¡æã«å ¥åãããåçãªå€ã衚ãããã«ãã¬ãŒã¹ãã«ããŒã䜿çšããŸãã
- æå³ã®ããããã¥ã¡ã³ããæäŸããïŒãã³ãã¬ãŒããææžåãããããã䜿çšããŠæ°ããã¢ãžã¥ãŒã«ãçæããæ¹æ³ã説æããŸãã
- çæããã»ã¹ãèªååããïŒã¢ãžã¥ãŒã«çæããã»ã¹ããã«ããã€ãã©ã€ã³ãŸãã¯éçºã¯ãŒã¯ãããŒã«çµ±åããŸãã
- ããŒãžã§ã³ç®¡çã䜿çšããïŒãã³ãã¬ãŒããã³ãŒãããŒã¹ã®ä»ã®éšåãšãšãã«ããŒãžã§ã³ç®¡çã«ä¿åããŸãã
- åœéåïŒi18nïŒãæ€èšããïŒã¢ããªã±ãŒã·ã§ã³ãè€æ°ã®èšèªããµããŒãããå¿ èŠãããå Žåã¯ãããŸããŸãªèšèªèŠä»¶ã«å¯Ÿå¿ããããã«ãã³ãã¬ãŒããèšèšããŸããããšãã°ãå³ããå·Šãžã®èšèªãç°ãªãæ¥ä»ãšæ°å€ã®åœ¢åŒãèæ ®ããå¿ èŠãããå ŽåããããŸããi18nãµããŒããåãããã³ãã¬ãŒããšã³ãžã³ã䜿çšãããšããã®ããã»ã¹ãç°¡çŽ åã§ããŸãã
- ã¢ã¯ã»ã·ããªãã£ïŒa11yïŒã確ä¿ããïŒçæãããã¢ãžã¥ãŒã«ãUIã³ã³ããŒãã³ããã¬ã³ããªã³ã°ããå Žåã¯ããã³ãã¬ãŒãã«ã¢ã¯ã»ã·ããªãã£ã®èæ ®äºé ãå«ãŸããŠããããšã確èªããŸããããã«ã¯ãARIA屿§ã®è¿œå ããé©åãªã»ãã³ãã£ãã¯HTMLæ§é ã®ç¢ºä¿ãå«ãŸããå ŽåããããŸãã
å®éã®ã¢ããªã±ãŒã·ã§ã³ã®äŸ
- Reactã³ã³ããŒãã³ãã®äœæïŒäºåã«å®çŸ©ãããpropsãšç¶æ 管çããžãã¯ã䜿çšããŠãæšæºåãããReactã³ã³ããŒãã³ããã³ãã¬ãŒããçæããŸãã
- APIãšã³ããã€ã³ãã®çæïŒäºåã«å®çŸ©ããããªã¯ãšã¹ãæ€èšŒãšãšã©ãŒåŠçããžãã¯ã䜿çšããŠãAPIãšã³ããã€ã³ããã³ãã©ãŒã®äœæãèªååããŸãã
- ããŒã¿ããŒã¹ã¢ãã«ã®æ§ç¯ïŒäºåã«å®çŸ©ããããã£ãŒã«ããšæ€èšŒã«ãŒã«ã䜿çšããŠãããŒã¿ããŒã¹ã¢ãã«ã¯ã©ã¹ãçæããŸãã
- ãã€ã¯ããµãŒãã¹ã®éçºïŒæ§æãã¡ã€ã«ããã°èšé²ãããã³ç£èŠã€ã³ãã©ã¹ãã©ã¯ãã£ãªã©ãæ°ãããã€ã¯ããµãŒãã¹ã®ãã€ã©ãŒãã¬ãŒãã³ãŒããäœæããŸãã
ã°ããŒãã«ãªäŸïŒã€ã³ããç±³åœããã€ãã«éçºããŒã ãæã€äŒæ¥ãæ³åããŠãã ãããæšæºåãããã¢ãžã¥ãŒã«ãã³ãã¬ãŒãã䜿çšãããšãã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ãå°åã®æ £ç¿ã®éãã«é¢ä¿ãªããããå Žæã§äœæãããã³ãŒããä»ã®å Žæã®éçºè ãç°¡åã«çè§£ããä¿å®ã§ããããã«ãªããŸããããšãã°ããã¹ãŠã®APIãšã³ããã€ã³ãã¯ãã©ã®ããŒã ããšã³ããã€ã³ããéçºãããã«é¢ä¿ãªããèªèšŒãæ¿èªãããã³ããŒã¿æ€èšŒãåŠçããããã®äžè²«ãããã³ãã¬ãŒãã«åŸãå ŽåããããŸãã
çµè«
JavaScriptã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ã¯ãJavaScriptãããžã§ã¯ãã§ã³ãŒãçæãå¹çåããã³ãŒãã®äžè²«æ§ãåäžãããããã®è²ŽéãªããŒã«ã§ããæ°ããã¢ãžã¥ãŒã«ã®äœæãèªååããããšã§ãéçºè ã¯æéãç¯çŽãããšã©ãŒãæžãããããè€éãªã¿ã¹ã¯ã«éäžã§ããŸããåçŽãªæååæäœããã³ãã¬ãŒããšã³ãžã³ããŸãã¯ã³ãŒãçæããŒã«ã®ãããã䜿çšããå Žåã§ããã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ãæ¡çšããããšã§ãéçºã¯ãŒã¯ãããŒãå€§å¹ ã«åäžããã³ãŒãããŒã¹å šäœã®å質ãåäžããŸãããããã¯ãäžè²«æ§ãšä¿å®æ§ãéèŠãªè€éãªãããžã§ã¯ãã«åãçµãå€§èŠæš¡ãªåæ£ããŒã ã§ç¹ã«åœ¹ç«ã¡ãŸãã
ãã¹ããã©ã¯ãã£ã¹ãå®è£ ãããã³ãã¬ãŒããæ éã«èšèšããããšã§ãããŒã ã«é·å¹Žã«ããã£ãŠå©çãããããå ç¢ã§å¹ççãªã³ãŒãçæã·ã¹ãã ãäœæã§ããŸããã¢ãžã¥ãŒã«ãã³ãã¬ãŒããã¿ãŒã³ãæ¡çšããããšã¯ãå ŽæãããŒã ã®èŠæš¡ã«é¢ä¿ãªããããã¹ã±ãŒã©ãã«ã§ãä¿å®å¯èœã§ãå調çãªJavaScriptã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®ã¹ãããã§ãã