JavaScriptã¢ãžã¥ãŒã«åŒã®åãæ¢ããåçãªã¢ãžã¥ãŒã«äœæãå®çŸããŸããããæè»ã§ä¿å®æ§ã®é«ãã³ãŒãã®ããã®å®è·µçãªãã¯ããã¯ãé«åºŠãªãã¿ãŒã³ããã¹ããã©ã¯ãã£ã¹ãåŠã³ãŸãã
JavaScriptã¢ãžã¥ãŒã«åŒïŒåçãªã¢ãžã¥ãŒã«äœæããã¹ã¿ãŒãã
JavaScriptã¢ãžã¥ãŒã«ã¯ãçŸä»£ã®Webã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®åºæ¬çãªæ§æèŠçŽ ã§ããã³ãŒãã®åå©çšæ§ãä¿å®æ§ããããŠçµç¹åãä¿é²ããŸããæšæºçãªESã¢ãžã¥ãŒã«ã¯éçãªã¢ãããŒããæäŸããŸãããã¢ãžã¥ãŒã«åŒã¯ã¢ãžã¥ãŒã«ãåçã«å®çŸ©ã»äœæããæ¹æ³ãæäŸããŸãããã®èšäºã§ã¯ãJavaScriptã¢ãžã¥ãŒã«åŒã®äžçã«æ·±ãå ¥ã蟌ã¿ããã®èœåããŠãŒã¹ã±ãŒã¹ããã¹ããã©ã¯ãã£ã¹ãæ¢ããŸããåºæ¬çãªæŠå¿µããé«åºŠãªãã¿ãŒã³ãŸã§å šãŠãã«ããŒããåçãªã¢ãžã¥ãŒã«äœæã®ããã³ã·ã£ã«ãæå€§éã«åŒãåºãåãæäŸããŸãã
JavaScriptã¢ãžã¥ãŒã«åŒãšã¯äœãïŒ
æ¬è³ªçã«ãã¢ãžã¥ãŒã«åŒãšã¯ã¢ãžã¥ãŒã«ã«è©äŸ¡ãããJavaScriptã®åŒã®ããšã§ããimport
ãexport
æã䜿ã£ãŠå®çŸ©ãããéçãªESã¢ãžã¥ãŒã«ãšã¯ç°ãªããã¢ãžã¥ãŒã«åŒã¯å®è¡æã«äœæã»å®è¡ãããŸãããã®åçãªæ§è³ªã«ãããããæè»ã§é©å¿æ§ã®é«ãã¢ãžã¥ãŒã«äœæãå¯èœãšãªããã¢ãžã¥ãŒã«ã®äŸåé¢ä¿ãèšå®ãå®è¡æãŸã§ããããªãã·ããªãªã«é©ããŠããŸãã
ãŠãŒã¶ãŒã®å¥œã¿ããµãŒããŒåŽã®èšå®ã«åºã¥ããŠç°ãªãã¢ãžã¥ãŒã«ãããŒãããå¿ èŠãããç¶æ³ãèããŠã¿ãŠãã ãããã¢ãžã¥ãŒã«åŒã¯ããã®ãããªåçãªèªã¿èŸŒã¿ãšã€ã³ã¹ã¿ã³ã¹åãå®çŸããé©å¿æ§ã®é«ãã¢ããªã±ãŒã·ã§ã³ãäœæããããã®åŒ·åãªããŒã«ãæäŸããŸãã
ãªãã¢ãžã¥ãŒã«åŒã䜿çšããã®ãïŒ
ã¢ãžã¥ãŒã«åŒã¯ãåŸæ¥ã®éçã¢ãžã¥ãŒã«ã«æ¯ã¹ãŠããã€ãã®å©ç¹ãæäŸããŸãïŒ
- åçãªã¢ãžã¥ãŒã«èªã¿èŸŒã¿ïŒå®è¡æã®æ¡ä»¶ã«åºã¥ããŠã¢ãžã¥ãŒã«ãäœæã»èªã¿èŸŒã¿ã§ãããããé©å¿æ§ã®ããã¢ããªã±ãŒã·ã§ã³ã®åäœãå¯èœã«ãªããŸãã
- æ¡ä»¶ä»ãã¢ãžã¥ãŒã«äœæïŒç¹å®ã®åºæºã«åºã¥ããŠã¢ãžã¥ãŒã«ã®äœæãã¹ãããã§ããããããªãœãŒã¹äœ¿çšéãæé©åããããã©ãŒãã³ã¹ãåäžãããŸãã
- äŸåæ§æ³šå ¥ïŒã¢ãžã¥ãŒã«ãåçã«äŸåé¢ä¿ãåãåãããšãã§ãããããççµåãšãã¹ãã®ãããããä¿é²ãããŸãã
- èšå®ããŒã¹ã®ã¢ãžã¥ãŒã«äœæïŒã¢ãžã¥ãŒã«ã®èšå®ãå€éšåããã¢ãžã¥ãŒã«ã®æ¯ãèããã«ã¹ã¿ãã€ãºããããã«äœ¿çšã§ããŸããäŸãã°ãç°ãªãããŒã¿ããŒã¹ãµãŒããŒã«æ¥ç¶ããWebã¢ããªã±ãŒã·ã§ã³ãæ³åããŠã¿ãŠãã ãããããŒã¿ããŒã¹æ¥ç¶ãæ åœããç¹å®ã®ã¢ãžã¥ãŒã«ã¯ããŠãŒã¶ãŒã®å°åããµãã¹ã¯ãªãã·ã§ã³ã¬ãã«ã«åºã¥ããŠå®è¡æã«æ±ºå®ã§ããŸãã
äžè¬çãªãŠãŒã¹ã±ãŒã¹
ã¢ãžã¥ãŒã«åŒã¯ã以äžã®ãããªæ§ã ãªã·ããªãªã§å¿çšãããŠããŸãïŒ
- ãã©ã°ã€ã³ã¢ãŒããã¯ãã£ïŒãŠãŒã¶ãŒèšå®ãã·ã¹ãã èŠä»¶ã«åºã¥ããŠãã©ã°ã€ã³ãåçã«èªã¿èŸŒã¿ãç»é²ããŸããäŸãã°ãã³ã³ãã³ã管çã·ã¹ãã ïŒCMSïŒã¯ããŠãŒã¶ãŒã®åœ¹å²ãç·šéäžã®ã³ã³ãã³ãã®çš®é¡ã«å¿ããŠãç°ãªãã³ã³ãã³ãç·šéãã©ã°ã€ã³ãèªã¿èŸŒãããã«ã¢ãžã¥ãŒã«åŒã䜿çšããããšãã§ããŸãã
- ãã£ãŒãã£ãŒãã°ã«ïŒã³ã¢ã®ã³ãŒãããŒã¹ã倿Žããããšãªããå®è¡æã«ç¹å®ã®æ©èœãæå¹åãŸãã¯ç¡å¹åããŸããA/Bãã¹ããã©ãããã©ãŒã ã§ã¯ãç°ãªããŠãŒã¶ãŒã»ã°ã¡ã³ãã«å¯ŸããŠæ©èœã®ç°ãªãããŒãžã§ã³ãåçã«åãæ¿ããããã«ããã£ãŒãã£ãŒãã°ã«ãããå©çšãããŸãã
- èšå®ç®¡çïŒç°å¢å€æ°ãèšå®ãã¡ã€ã«ã«åºã¥ããŠã¢ãžã¥ãŒã«ã®æ¯ãèããã«ã¹ã¿ãã€ãºããŸãããã«ãããã³ãã¢ããªã±ãŒã·ã§ã³ãèããŠã¿ãŠãã ãããã¢ãžã¥ãŒã«åŒã䜿çšããŠãããã³ãåºæã®èšå®ã«åºã¥ããŠããã³ãåºæã®ã¢ãžã¥ãŒã«ãåçã«èšå®ããããšãã§ããŸãã
- é å»¶èªã¿èŸŒã¿ïŒã¢ãžã¥ãŒã«ãå¿ èŠã«ãªã£ããšãã«ã®ã¿èªã¿èŸŒãããšã§ãåæããŒãžã®èªã¿èŸŒã¿æéãççž®ããå šäœã®ããã©ãŒãã³ã¹ãåäžãããŸããäŸãã°ãè€éãªããŒã¿å¯èŠåã©ã€ãã©ãªã¯ããŠãŒã¶ãŒãé«åºŠãªãã£ãŒãæ©èœãå¿ èŠãšããããŒãžã«ç§»åãããšãã«ã®ã¿èªã¿èŸŒãŸããããã«ããããšãã§ããŸãã
ã¢ãžã¥ãŒã«åŒãäœæããããã®ãã¯ããã¯
JavaScriptã§ã¢ãžã¥ãŒã«åŒãäœæããããã«ã¯ãããã€ãã®ãã¯ããã¯ãçšããããŸããæãäžè¬çãªã¢ãããŒãã®ããã€ããæ¢ã£ãŠã¿ãŸãããã
1. 峿å®è¡é¢æ°åŒïŒIIFEïŒ
IIFEã¯ãã¢ãžã¥ãŒã«ãè¿ãããšãã§ããèªå·±å®è¡é¢æ°ãäœæããããã®å€å žçãªãã¯ããã¯ã§ããã³ãŒããã«ãã»ã«åãããã©ã€ããŒãã¹ã³ãŒããäœæããæ¹æ³ãæäŸããååã®è¡çªãé²ããã¢ãžã¥ãŒã«ã®å éšç¶æ ãä¿è·ãããããšãä¿èšŒããŸãã
const myModule = (function() {
let privateVariable = 'This is private';
function publicFunction() {
console.log('Accessing private variable:', privateVariable);
}
return {
publicFunction: publicFunction
};
})();
myModule.publicFunction(); // Output: Accessing private variable: This is private
ãã®äŸã§ã¯ãIIFEã¯privateVariable
ã«ã¢ã¯ã»ã¹ã§ããpublicFunction
ãæã€ãªããžã§ã¯ããè¿ããŸããIIFEã¯privateVariable
ãã¢ãžã¥ãŒã«ã®å€éšããã¢ã¯ã»ã¹ã§ããªãããšãä¿èšŒããŸãã
2. ãã¡ã¯ããªé¢æ°
ãã¡ã¯ããªé¢æ°ã¯ãæ°ãããªããžã§ã¯ããè¿ã颿°ã§ããç°ãªãèšå®ãäŸåé¢ä¿ãæã€ã¢ãžã¥ãŒã«ã€ã³ã¹ã¿ã³ã¹ãäœæããããã«äœ¿çšã§ããŸããããã«ãããåå©çšæ§ãä¿é²ãããã«ã¹ã¿ãã€ãºãããæ¯ãèããæã€åãã¢ãžã¥ãŒã«ã®è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ãç°¡åã«äœæã§ããŸããäŸãã°ãç°å¢ã«å¿ããŠç°ãªãåºåå ïŒã³ã³ãœãŒã«ããã¡ã€ã«ãããŒã¿ããŒã¹ãªã©ïŒã«ãã°ãæžã蟌ãããã«èšå®ã§ãããã®ã³ã°ã¢ãžã¥ãŒã«ãèããŠã¿ãŠãã ããã
function createModule(config) {
const { apiUrl } = config;
function fetchData() {
return fetch(apiUrl)
.then(response => response.json());
}
return {
fetchData: fetchData
};
}
const module1 = createModule({ apiUrl: 'https://api.example.com/data1' });
const module2 = createModule({ apiUrl: 'https://api.example.com/data2' });
module1.fetchData().then(data => console.log('Module 1 data:', data));
module2.fetchData().then(data => console.log('Module 2 data:', data));
ããã§ã¯ãcreateModule
ã¯èšå®ãªããžã§ã¯ããå
¥åãšããŠåãåããèšå®ãããapiUrl
ã䜿çšããfetchData
颿°ãæã€ã¢ãžã¥ãŒã«ãè¿ããã¡ã¯ããªé¢æ°ã§ãã
3. éåæé¢æ°ãšåçã€ã³ããŒã
éåæé¢æ°ãšåçã€ã³ããŒãïŒimport()
ïŒãçµã¿åãããããšã§ãéåææäœãåçã«èªã¿èŸŒãŸããä»ã®ã¢ãžã¥ãŒã«ã«äŸåããã¢ãžã¥ãŒã«ãäœæã§ããŸããããã¯ãã¢ãžã¥ãŒã«ã®é
å»¶èªã¿èŸŒã¿ãããããã¯ãŒã¯ãªã¯ãšã¹ããå¿
èŠãšããäŸåé¢ä¿ãæ±ãå Žåã«ç¹ã«äŸ¿å©ã§ãããŠãŒã¶ãŒã®å Žæã«å¿ããŠç°ãªããããã¿ã€ã«ãèªã¿èŸŒãå¿
èŠããããããã³ã³ããŒãã³ããæ³åããŠã¿ãŠãã ãããåçã€ã³ããŒãã䜿çšããŠããŠãŒã¶ãŒã®å Žæãããã£ããšãã«ã®ã¿é©åãªã¿ã€ã«ã»ãããèªã¿èŸŒãããšãã§ããŸãã
async function createModule() {
const lodash = await import('lodash'); // Assuming lodash is not bundled initially
const _ = lodash.default;
function processData(data) {
return _.map(data, item => item * 2);
}
return {
processData: processData
};
}
createModule().then(module => {
const data = [1, 2, 3, 4, 5];
const processedData = module.processData(data);
console.log('Processed data:', processedData); // Output: [2, 4, 6, 8, 10]
});
ãã®äŸã§ã¯ãcreateModule
颿°ã¯import('lodash')
ã䜿çšããŠLodashã©ã€ãã©ãªãåçã«èªã¿èŸŒã¿ãŸãããããŠãLodashã䜿çšããŠããŒã¿ãåŠçããprocessData
颿°ãæã€ã¢ãžã¥ãŒã«ãè¿ããŸãã
4. if
æã«ããæ¡ä»¶ä»ãã¢ãžã¥ãŒã«äœæ
if
æã䜿çšããŠãç¹å®ã®åºæºã«åºã¥ããŠæ¡ä»¶ä»ãã§ç°ãªãã¢ãžã¥ãŒã«ãäœæããè¿ãããšãã§ããŸããããã¯ãç°å¢ããŠãŒã¶ãŒã®å¥œã¿ã«åºã¥ããŠã¢ãžã¥ãŒã«ã®ç°ãªãå®è£
ãæäŸããå¿
èŠãããã·ããªãªã§äŸ¿å©ã§ããäŸãã°ãéçºäžã¯ã¢ãã¯APIã¢ãžã¥ãŒã«ã䜿çšããæ¬çªç°å¢ã§ã¯å®éã®APIã¢ãžã¥ãŒã«ã䜿çšãããå Žåãªã©ã§ãã
function createModule(isProduction) {
if (isProduction) {
return {
getData: () => fetch('https://api.example.com/data').then(res => res.json())
};
} else {
return {
getData: () => Promise.resolve([{ id: 1, name: 'Mock Data' }])
};
}
}
const productionModule = createModule(true);
const developmentModule = createModule(false);
productionModule.getData().then(data => console.log('Production data:', data));
developmentModule.getData().then(data => console.log('Development data:', data));
ããã§ã¯ãcreateModule
颿°ã¯isProduction
ãã©ã°ã«å¿ããŠç°ãªãã¢ãžã¥ãŒã«ãè¿ããŸããæ¬çªç°å¢ã§ã¯å®éã®APIãšã³ããã€ã³ãã䜿çšããéçºç°å¢ã§ã¯ã¢ãã¯ããŒã¿ã䜿çšããŸãã
é«åºŠãªãã¿ãŒã³ãšãã¹ããã©ã¯ãã£ã¹
ã¢ãžã¥ãŒã«åŒã广çã«æŽ»çšããããã«ã¯ã以äžã®é«åºŠãªãã¿ãŒã³ãšãã¹ããã©ã¯ãã£ã¹ãèæ ®ããŠãã ããïŒ
1. äŸåæ§æ³šå ¥
äŸåæ§æ³šå ¥ã¯ãã¢ãžã¥ãŒã«ã«å€éšããäŸåé¢ä¿ãæäŸããããšãå¯èœã«ãããã¶ã€ã³ãã¿ãŒã³ã§ãççµåãšãã¹ãã®ãããããä¿é²ããŸããã¢ãžã¥ãŒã«åŒã¯ãã¢ãžã¥ãŒã«äœæé¢æ°ã®åŒæ°ãšããŠäŸåé¢ä¿ãåãå ¥ããããšã§ãäŸåæ§æ³šå ¥ããµããŒãããããã«ç°¡åã«é©å¿ã§ããŸããããã«ããããã¹ãã®ããã«äŸåé¢ä¿ã亀æããããã¢ãžã¥ãŒã«ã®ã³ã¢ã³ãŒãã倿Žããã«ã¢ãžã¥ãŒã«ã®æ¯ãèããã«ã¹ã¿ãã€ãºãããããããšã容æã«ãªããŸãã
function createModule(logger, apiService) {
function fetchData(url) {
logger.log('Fetching data from:', url);
return apiService.get(url)
.then(response => {
logger.log('Data fetched successfully:', response);
return response;
})
.catch(error => {
logger.error('Error fetching data:', error);
throw error;
});
}
return {
fetchData: fetchData
};
}
// Example Usage (assuming logger and apiService are defined elsewhere)
// const myModule = createModule(myLogger, myApiService);
// myModule.fetchData('https://api.example.com/data');
ãã®äŸã§ã¯ãcreateModule
颿°ã¯äŸåé¢ä¿ãšããŠlogger
ãšapiService
ãåãå
¥ãããããã¯ã¢ãžã¥ãŒã«ã®fetchData
颿°å
ã§äœ¿çšãããŸããããã«ãããã¢ãžã¥ãŒã«èªäœã倿Žããããšãªããç°ãªããã¬ãŒãAPIãµãŒãã¹ã®å®è£
ãç°¡åã«äº€æã§ããŸãã
2. ã¢ãžã¥ãŒã«èšå®
ã¢ãžã¥ãŒã«ã®èšå®ãå€éšåããããšã§ãã¢ãžã¥ãŒã«ãããé©å¿æ§ãé«ãåå©çšå¯èœãªãã®ã«ããŸããããã¯ãã¢ãžã¥ãŒã«äœæé¢æ°ã«èšå®ãªããžã§ã¯ããæž¡ãããšãå«ã¿ãã³ãŒãã倿Žããããšãªãã¢ãžã¥ãŒã«ã®æ¯ãèããã«ã¹ã¿ãã€ãºã§ããããã«ããŸãããã®èšå®ã¯ãèšå®ãã¡ã€ã«ãç°å¢å€æ°ããŸãã¯ãŠãŒã¶ãŒã®å¥œã¿ããååŸã§ããã¢ãžã¥ãŒã«ãç°ãªãç°å¢ããŠãŒã¹ã±ãŒã¹ã«é«åºŠã«é©å¿ãããããšãã§ããŸãã
function createModule(config) {
const { apiUrl, timeout } = config;
function fetchData() {
return fetch(apiUrl, { timeout: timeout })
.then(response => response.json());
}
return {
fetchData: fetchData
};
}
// Example Usage
const config = {
apiUrl: 'https://api.example.com/data',
timeout: 5000 // milliseconds
};
const myModule = createModule(config);
myModule.fetchData().then(data => console.log('Data:', data));
ããã§ã¯ãcreateModule
颿°ã¯apiUrl
ãštimeout
ãæå®ããconfig
ãªããžã§ã¯ããåãå
¥ããŸããfetchData
颿°ã¯ãããŒã¿ãååŸããéã«ãããã®èšå®å€ã䜿çšããŸãã
3. ãšã©ãŒãã³ããªã³ã°
äºæããªãã¯ã©ãã·ã¥ãé²ããæçãªãšã©ãŒã¡ãã»ãŒãžãæäŸããããã«ãã¢ãžã¥ãŒã«åŒå
ã«å
ç¢ãªãšã©ãŒãã³ããªã³ã°ãå®è£
ããŸããtry...catch
ãããã¯ã䜿çšããŠæœåšçãªäŸå€ãåŠçãããšã©ãŒãé©åã«ãã°ã«èšé²ããŸããã¢ããªã±ãŒã·ã§ã³å
šäœã§ãšã©ãŒã远跡ã»ç£èŠããããã«ãäžå€®éæš©çãªãšã©ãŒãã®ã³ã°ãµãŒãã¹ã®äœ¿çšãæ€èšããŠãã ããã
function createModule() {
function fetchData() {
try {
return fetch('https://api.example.com/data')
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
return response.json();
})
.catch(error => {
console.error('Error fetching data:', error);
throw error; // Re-throw the error to be handled further up the call stack
});
} catch (error) {
console.error('Unexpected error in fetchData:', error);
throw error;
}
}
return {
fetchData: fetchData
};
}
4. ã¢ãžã¥ãŒã«åŒã®ãã¹ã
ã¢ãžã¥ãŒã«åŒãæåŸ éãã«åäœããããšãä¿èšŒããããã«ãåäœãã¹ããäœæããŸããã¢ãã¯æè¡ã䜿çšããŠã¢ãžã¥ãŒã«ãåé¢ããåã ã®ã³ã³ããŒãã³ãããã¹ãããŸããã¢ãžã¥ãŒã«åŒã¯åçãªäŸåé¢ä¿ã䌎ãããšãå€ããããã¢ãã¯ã䜿çšãããšãã¹ãäžã«ãããã®äŸåé¢ä¿ã®æ¯ãèããå¶åŸ¡ã§ãããã¹ãã®ä¿¡é Œæ§ãšäºæž¬å¯èœæ§ã確ä¿ã§ããŸããJestãMochaã®ãããªããŒã«ã¯ãJavaScriptã¢ãžã¥ãŒã«ã®ã¢ãã¯ãšãã¹ããåªãããµããŒãã§æäŸããŸãã
äŸãã°ãã¢ãžã¥ãŒã«åŒãå€éšAPIã«äŸåããŠããå ŽåãAPIã®ã¬ã¹ãã³ã¹ãã¢ãã¯ããŠããŸããŸãªã·ããªãªãã·ãã¥ã¬ãŒãããã¢ãžã¥ãŒã«ããããã®ã·ããªãªãæ£ããåŠçããããšã確èªã§ããŸãã
5. ããã©ãŒãã³ã¹ã«é¢ããèæ ®äºé
ã¢ãžã¥ãŒã«åŒã¯æè»æ§ãæäŸããŸããããã®æœåšçãªããã©ãŒãã³ã¹ãžã®åœ±é¿ã«æ³šæããŠãã ãããé床ãªåçã¢ãžã¥ãŒã«äœæã¯ãèµ·åæéãã¢ããªã±ãŒã·ã§ã³å šäœã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸããã¢ãžã¥ãŒã«ã®ãã£ãã·ã¥ãã³ãŒãåå²ãªã©ã®æè¡ã䜿çšããŠãã¢ãžã¥ãŒã«ã®èªã¿èŸŒã¿ãæé©åããããšãæ€èšããŠãã ããã
ãŸããimport()
ã¯éåæã§ããPromiseãè¿ãããšãå¿ããªãã§ãã ãããç«¶åç¶æ
ãäºæããªãæ¯ãèããé¿ããããã«ãPromiseãæ£ããåŠçããŠãã ããã
ããŸããŸãªJavaScriptç°å¢ã§ã®äŸ
ã¢ãžã¥ãŒã«åŒã¯ã以äžãå«ãããŸããŸãªJavaScriptç°å¢ã«é©å¿ãããããšãã§ããŸãïŒ
- ãã©ãŠã¶ïŒIIFEããã¡ã¯ããªé¢æ°ããŸãã¯åçã€ã³ããŒãã䜿çšããŠããã©ãŠã¶ã§å®è¡ãããã¢ãžã¥ãŒã«ãäœæããŸããäŸãã°ããŠãŒã¶ãŒèªèšŒãåŠçããã¢ãžã¥ãŒã«ã¯ãIIFEã䜿çšããŠå®è£ ããã°ããŒãã«å€æ°ã«æ ŒçŽããããšãã§ããŸãã
- Node.jsïŒãã¡ã¯ããªé¢æ°ã
require()
ã䜿çšããåçã€ã³ããŒããçšããŠãNode.jsã§ã¢ãžã¥ãŒã«ãäœæããŸããããŒã¿ããŒã¹ãšããåããããµãŒããŒãµã€ãã¢ãžã¥ãŒã«ã¯ããã¡ã¯ããªé¢æ°ã䜿çšããŠäœæããããŒã¿ããŒã¹æ¥ç¶ãã©ã¡ãŒã¿ã§èšå®ããããšãã§ããŸãã - ãµãŒããŒã¬ã¹é¢æ°ïŒäŸïŒAWS Lambda, Azure FunctionsïŒïŒãã¡ã¯ããªé¢æ°ã䜿çšããŠããµãŒããŒã¬ã¹ç°å¢ã«ç¹åããã¢ãžã¥ãŒã«ãäœæããŸãããããã®ã¢ãžã¥ãŒã«ã®èšå®ã¯ãç°å¢å€æ°ãèšå®ãã¡ã€ã«ããååŸã§ããŸãã
ã¢ãžã¥ãŒã«åŒã®ä»£æ¿æ¡
ã¢ãžã¥ãŒã«åŒã¯åçãªã¢ãžã¥ãŒã«äœæã«åŒ·åãªã¢ãããŒããæäŸããŸãããããã€ãã®ä»£æ¿æ¡ãååšããããããã«é·æãšçæããããŸããç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«æé©ãªã¢ãããŒããéžæããããã«ã¯ããããã®ä»£æ¿æ¡ãçè§£ããããšãéèŠã§ãïŒ
- éçESã¢ãžã¥ãŒã«ïŒ
import
/export
ïŒïŒçŸä»£ã®JavaScriptã§ã¢ãžã¥ãŒã«ãå®çŸ©ããæšæºçãªæ¹æ³ã§ããéçã¢ãžã¥ãŒã«ã¯ã³ã³ãã€ã«æã«è§£æãããããªãŒã·ã§ã€ãã³ã°ããããã³ãŒããšãªãããŒã·ã§ã³ã®ãããªæé©åãå¯èœã«ããŸããããããã¢ãžã¥ãŒã«åŒã®ãããªåçãªæè»æ§ã«ã¯æ¬ ããŸãã - CommonJSïŒ
require
/module.exports
ïŒïŒNode.jsã§åºã䜿çšãããŠããã¢ãžã¥ãŒã«ã·ã¹ãã ã§ããCommonJSã¢ãžã¥ãŒã«ã¯å®è¡æã«èªã¿èŸŒãŸããŠå®è¡ããããããããçšåºŠã®åçãªæ¯ãèããæäŸããŸãããããããã©ãŠã¶ã§ã¯ãã€ãã£ãã«ãµããŒããããŠããããå€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã©ãŒãã³ã¹ã®åé¡ãåŒãèµ·ããå¯èœæ§ããããŸãã - éåæã¢ãžã¥ãŒã«å®çŸ©ïŒAMDïŒïŒãã©ãŠã¶ã§ã®ã¢ãžã¥ãŒã«ã®éåæèªã¿èŸŒã¿ã®ããã«èšèšãããŸãããAMDã¯ESã¢ãžã¥ãŒã«ãCommonJSãããè€éã§ãããéåæã®äŸåé¢ä¿ã«å¯ŸããŠããè¯ããµããŒããæäŸããŸãã
çµè«
JavaScriptã¢ãžã¥ãŒã«åŒã¯ãåçã«ã¢ãžã¥ãŒã«ãäœæããããã®åŒ·åã§æè»ãªæ¹æ³ãæäŸããŸãããã®èšäºã§æŠèª¬ãããã¯ããã¯ããã¿ãŒã³ããã¹ããã©ã¯ãã£ã¹ãçè§£ããããšã§ãã¢ãžã¥ãŒã«åŒã掻çšããŠãããé©å¿æ§ãé«ããä¿å®å¯èœã§ããã¹ãããããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ã§ããŸãããã©ã°ã€ã³ã¢ãŒããã¯ãã£ããèšå®ç®¡çãŸã§ãã¢ãžã¥ãŒã«åŒã¯è€éãªãœãããŠã§ã¢éçºã®èª²é¡ã«åãçµãããã®è²ŽéãªããŒã«ãæäŸããŸããJavaScriptã®åŠç¿ãç¶ããäžã§ãã³ãŒãã®æ§æãã¢ããªã±ãŒã·ã§ã³èšèšã«ãããæ°ããªå¯èœæ§ãåãéãããã«ãã¢ãžã¥ãŒã«åŒã詊ããŠã¿ãŠãã ãããåçãªã¢ãžã¥ãŒã«äœæã®å©ç¹ãšæœåšçãªããã©ãŒãã³ã¹ãžã®åœ±é¿ãæ¯èŒæ€èšãããããžã§ã¯ãã®ããŒãºã«æãé©ããã¢ãããŒããéžæããããšãå¿ããªãã§ãã ãããã¢ãžã¥ãŒã«åŒããã¹ã¿ãŒããããšã§ãçŸä»£ã®Webã®ããã®å ç¢ã§ã¹ã±ãŒã©ãã«ãªJavaScriptã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®ååãªæºåãæŽãã§ãããã