ChromeDevToolsãå éšã¢ãžã¥ãŒã«ããŒããŒããæšæºã®JavaScriptã¢ãžã¥ãŒã«ã«ã©ã®ããã«ç§»è¡ãããã«ã€ããŠã®ç°¡åãªã¡ã¢ã移è¡ãé ããçç±ãšãã®çç±ã移è¡ã®é ããã³ã¹ããããã³ç§»è¡ãå®äºããåŸã®DevToolsããŒã ã®çµè«ã«ã€ããŠèª¬æããŸããããããWebéçºè ããŒã«ã®æŽå²ããå§ããŸãããã
åæžã
ãåç¥ãããããŸããããChrome DevToolsã¯HTMLãCSSãJavaScriptã®Webã¢ããªã±ãŒã·ã§ã³ã§ããäœå¹Žã«ãããã£ãŠãDevToolsã¯æ©èœãè±å¯ã§ãã¹ããŒãã§ãææ°ã®Webãã©ãããã©ãŒã ã«é¢ããç¥èãè±å¯ã«ãªã£ãŠããŸããDevToolsã¯æ¡åŒµãããŸãããããã®ã¢ãŒããã¯ãã£ã¯ãããŒã«ãWebKitã®äžéšã§ãã£ããšãã®ãªãªãžãã«ã倧éšåæãåºãããŸãã
DevToolsã®ã¹ããŒãªãŒã説æãããœãªã¥ãŒã·ã§ã³ã®å©ç¹ãšå¶éãããã³ãããã®å¶éãç·©åããããã«è¡ã£ãããšã«ã€ããŠèª¬æããŸããããã§ã¯ãã¢ãžã¥ã©ãŒã·ã¹ãã ãã³ãŒãã®ããŒãæ¹æ³ãããã³JavaScriptã¢ãžã¥ãŒã«ã䜿çšããããšã«ãªã£ãæ¹æ³ã«ã€ããŠè©³ããèŠãŠãããŸãããã
æåã¯äœããããŸããã§ãã
ããã³ããšã³ãã«ã¯ãå€ãã®ã¢ãžã¥ã©ãŒã·ã¹ãã ãšãã®ããŒã«ãããã³æšæºåãããJavaScriptã¢ãžã¥ãŒã«åœ¢åŒããããŸããããã¯ãDevToolsãéå§ããããšãã§ã¯ãããŸããã§ããããã®ããŒã«ã¯ã12幎以äžåã«äœæãããWebKitã³ãŒãã®äžã«æ§ç¯ãããŠããŸãã
DevToolsã§ã®ã¢ãžã¥ã©ãŒã·ã¹ãã ã®æåã®èšåã¯2012幎ã«ããã®ãŒããŸããããã¯ã察å¿ãããœãŒã¹ã®ãªã¹ããåããã¢ãžã¥ãŒã«ã®ãªã¹ãã®å°å ¥ã§ããã DevToolsã®ã³ã³ãã€ã«ãšãã«ãã«åœæ䜿çšãããŠããPythonã€ã³ãã©ã¹ãã©ã¯ãã£ã®äžéšã 2013幎ã«ã¯ã
frontend_modules.json
ãã®ã³ãããã«ãã£ãŠã¢ãžã¥ãŒã«ããã¡ã€ã«ã«ãã§ãã¯ã¢ãŠãããã2014幎ã«ã¯ãå¥ã
ã®ã¢ãžã¥ãŒã«ã«ãã§ãã¯ã¢ãŠããããŸããmodule.json
ïŒããïŒãäŸmodule.json
ïŒ
{
"dependencies": [
"common"
],
"scripts": [
"StylePane.js",
"ElementsPanel.js"
]
}
2014幎以é
module.json
ãéçºè
ããŒã«ã§ã¢ãžã¥ãŒã«ãšãœãŒã¹ãã¡ã€ã«ãæãããã«äœ¿çšãããŠããŸãããã®éã«ãWebãšã³ã·ã¹ãã ã¯æ¥éã«æé·ããUMDãCommonJSããããŠæçµçã«ã¯æšæºåãããJavaScriptã¢ãžã¥ãŒã«ãªã©ã®å€ãã®ã¢ãžã¥ãŒã«åœ¢åŒãäœæãããŸããããã ããDevToolsã¯ã«åºå·ããŠãmodule.json
ãŸããæšæºåãããŠããªãç¬èªã®ã¢ãžã¥ã©ãŒã·ã¹ãã ã«ã¯ãããã€ãã®æ¬ ç¹ããããŸããã
module.json
ç¬èªã®ãã«ãããŒã«ãå¿ èŠã§ããã- IDEã®çµ±åã¯ãããŸããã§ããããã¡ããã圌女ãç解ãããã¡ã€ã«ãäœæããã«ã¯ãç¹å¥ãªããŒã«ãå¿
èŠã§ãã:(
jsconfig.json
VSã³ãŒãã®å ŽåïŒã - ã¢ãžã¥ãŒã«éã§å ±æã§ããããã«ãé¢æ°ãã¯ã©ã¹ãããã³ãªããžã§ã¯ããã°ããŒãã«ã¹ã³ãŒãã«é 眮ãããŠããŸãã
- ãã¡ã€ã«ããªã¹ããããé åºã¯éèŠã§ãããä¿¡é Œã§ããã³ãŒããã¢ããããŒãããããšããä¿èšŒã¯ã人éã«ããæ€èšŒä»¥å€ã«ã¯ãããŸããã§ããã
äžè¬ã«ãDevToolsã¢ãžã¥ã©ãŒã·ã¹ãã ããã³ãã®ä»ã®ããåºã䜿çšãããŠããã¢ãžã¥ãŒã«åœ¢åŒã®çŸåšã®ç¶æ ãè©äŸ¡ãã
module.json
ãšããã解決ãããããå€ãã®åé¡ãçºçãããšããçµè«ã«éããŸããã
æšæºã®å©ç¹
JavaScriptã¢ãžã¥ãŒã«ãéžæããŸããããã®æ±ºå®ããªããããšãããã®èšèªã®ã¢ãžã¥ãŒã«ã¯ãŸã Node.jsã§ãã©ã°ãä»ããããŠãããå€æ°ã®NPMããã±ãŒãžããããããµããŒãããŠããŸããã§ããããšã«ãããJavaScriptã¢ãžã¥ãŒã«ãæè¯ã®éžæè¢ã§ãããšçµè«ä»ããŸããã
ã¢ãžã¥ãŒã«ã®äž»ãªå©ç¹ã¯ãèšèªãæšæºåããã圢åŒã§ããããšã§ããçæããªã¹ããããšã
module.json
ãç§ãã¡ã¯ããããã®ã»ãšãã©ãã¹ãŠããæšæºåãããŠããªãç¬èªã®ã¢ãžã¥ãŒã«åœ¢åŒã®äœ¿çšã«é¢é£ããŠããããšã«æ°ã¥ããŸãããæšæºåãããŠããªãã¢ãžã¥ãŒã«åœ¢åŒãéžæãããšããããšã¯ããã«ãããŒã«ãšååã®ããŒã«ã䜿çšããŠçµ±åãæ§ç¯ããããã«æéãè²»ããå¿
èŠãããããšãæå³ããŸãããããã®çµ±åã¯ãã°ãã°å£ãããããæ©èœã®ãµããŒããäžè¶³ããŠãããè¿œå ã®ã¡ã³ããã³ã¹æéãå¿
èŠã§ãããæã«ã¯ããªãããŒãªãã°ããããŸããããã°ã¯çµå±ãŠãŒã¶ãŒã襲ã£ãã
JavaScriptã¢ãžã¥ãŒã«ãæšæºã§ãã£ããããããã¯ãVSã³ãŒããªã©ã®IDEãClosure / TypeScriptã³ã³ãã€ã©ãªã©ã®ã¿ã€ããã§ãã¯ããŒã«ãããã³ããŒã«ã¢ããããããã¡ã€ã¢ãªã©ã®ãã«ãããŒã«ãèšè¿°ããããœãŒã¹ã³ãŒããç解ã§ããããšãæå³ããŸãããããã«ãæ°ãã人ãDevToolsããŒã ã«åå ãããšãã圌ãã¯å°æãåŠã¶ã®ã«æéãç¡é§ã«ããå¿ èŠã¯ãããŸãã
module.json
ã
ãã¡ãããDevToolsãæåã«éå§ããããšããäžèšã®å©ç¹ã¯ã©ããååšããŸããã§ãããã©ã³ã¿ã€ã ãå®è£ ããã«ã¯ãæšæºã°ã«ãŒãã§äœå¹Žãã®äœæ¥ãå¿ èŠã§ãããã¢ãžã¥ãŒã«ã®ãŠãŒã¶ãŒã§ããéçºè ããã®ãã£ãŒãããã¯ã«ã¯æéãããããŸãããããããã¢ãžã¥ãŒã«ããã®èšèªã§ç»å Žãããšããç§ãã¡ã¯ç¬èªã®ãã©ãŒãããããµããŒããç¶ããããæ°ãããã©ãŒããããžã®ç§»è¡ã«æè³ãããã®ã©ã¡ãããéžæããŸããã
ããã«ãã£ã®èŒãã«ã¯ã©ããããã®è²»çšãããããŸããïŒ
JavaScriptã¢ãžã¥ãŒã«ã«ã¯ã䜿çšãããå€ãã®å©ç¹ããããŸããããç§ãã¡ã¯äžçã«ãšã©ãŸããŸãã
module.json
ãèšèªã®ã¢ãžã¥ãŒã«ãå©çšããããšã¯ãæè¡çãªè² åµã«ããªãã®åªåãè²»ãããªããã°ãªããªãã£ãããšãæå³ããŸããããã®éã移è¡ã«ãã£ãŠæ©èœãç Žæããååž°ãã°ãçºçããå¯èœæ§ããããŸãã
JavaScriptã¢ãžã¥ãŒã«ã䜿çšããŠãããã©ããã§ã¯ãããŸããã§ãããåé¡ã¯ãJavaScriptã¢ãžã¥ãŒã«ã䜿çšããæ©èœãã©ãã»ã©é«äŸ¡ããšããããšã§ããããŠãŒã¶ãŒãç ©ããããªã¹ã¯ãšãªã°ã¬ãã·ã§ã³ããšã³ãžãã¢ã®ç§»è¡ã«ãããæéãããã³éçšããã·ã¹ãã ã®ç¶æ ãæªåããæéã®ãã©ã³ã¹ããšãå¿ èŠããããŸããã
æåŸã®ç¹ã¯éåžžã«éèŠã§ããããšãå€æããŸãããçè«çã«ã¯JavaScriptã¢ãžã¥ãŒã«ã«ã¢ã¯ã»ã¹ã§ããŸããã移è¡äžã«ãäž¡æ¹ã®ã¿ã€ãã®ã¢ãžã¥ãŒã«ãèæ ®ã«å ¥ããã³ãŒãã«ãªã£ãŠããŸããŸããããã¯æè¡çã«å°é£ã§ããã ãã§ãªããDevToolsã§äœæ¥ãããã¹ãŠã®ãšã³ãžãã¢ããã®ãããªç°å¢ã§ã®äœæ¥æ¹æ³ãç¥ãå¿ èŠãããããšãæå³ããŸãã圌ãã¯åžžã«èªåèªèº«ã«ããã®ã³ãŒãã§äœãèµ·ãã£ãŠããã®
module.json
ããããã¯JSã§ãããã©ãããã°å€æŽãå ããããšãã§ããã®ãããšèªåããå¿
èŠããããŸãã
ååã®ãã¬ãŒãã³ã°ã«é¢ãã移è¡ã®æœåšçãªã³ã¹ãã¯ãäºæ³ãããé«ãã£ããã³ã¹ããåæããçµæããã®èšèªã®ã¢ãžã¥ãŒã«ã«åãæ¿ãã䟡å€ã¯ãŸã ãããšããçµè«ã«éããŸããããããã£ãŠãç§ãã¡ã®äž»ãªç®æšã¯æ¬¡ã®ãšããã§ãã
- æšæºã¢ãžã¥ãŒã«ãå¯èœãªéãæçšã§ããããšã確èªããŠãã ããã
- ããŒã¹äžã®æ¢åã®ã¢ãžã¥ãŒã«ãšã®çµ±åã
module.json
å®å šã§ããããŠãŒã¶ãŒã«æªåœ±é¿ïŒååž°ãšã©ãŒããŠãŒã¶ãŒã®ãã©ã¹ãã¬ãŒã·ã§ã³ïŒãåŒãèµ·ãããªãããšã確èªããŠãã ããã - DevTools移è¡ã¬ã€ããæäŸããŸããäž»ã«ãå¶çºçãªãã¹ãé²ãããã«ããã»ã¹ã«çµã¿èŸŒãŸãããã§ãã¯ãšãã©ã³ã¹ãä»ããŠã
ã¹ãã¬ããã·ãŒããã³ã³ããŒãžã§ã³ãæè¡åµå
ç®æšã¯æ確ã§ãããããããå¶éã
module.json
åé¿ããã®ã¯å°é£ã§ããã䜿çšå¯èœãªãœãªã¥ãŒã·ã§ã³ãæãä»ããŸã§ã«ãæ°åã®å埩ããããã¿ã€ããããã³ã¢ãŒããã¯ãã£ã®å€æŽãå¿
èŠã§ãããæçµçã«ã移è¡æŠç¥ã䜿çšããŠãããžã§ã¯ãããã¥ã¡ã³ããäœæããŸããããã®ææžã¯ãæéã®æåã®èŠç©ãããäžããŸããïŒ2-4é±éã
移è¡ã®æãéäžçãªéšåã¯4ãæããããæåããæåŸãŸã§7ãæãçµéããŸããããã ããå ã®èšç»ã¯æã®è©Šç·Žã«èããŠããŸãããé å
scripts
module.json
ã«ãªã¹ããããŠãããã¹ãŠã®ãã¡ã€ã«modules
ãåçèšèªã€ã³ããŒãã«ãã£ãŠããŒãããå¿
èŠãããäžæ¹ã§ãé
åã«ãªã¹ããããŠãããã¡ã€ã«ã䜿çšããå€ãæ¹æ³ã§ãã¹ãŠã®ãã¡ã€ã«ãããŒãããããã«DevToolsã©ã³ã¿ã€ã ã«æãããã£ãã®ã§ããã¢ã¬ã€å
ã«ãããã¹ãŠã®ãã¡ã€ã«ã¯ãES6ãšã®éã§modules
é£æºã§ããŸãã
ããã«ã2ã€ã®ãã§ãŒãºã§ç§»è¡ããããšèããŸãããæçµçã«ãæåŸã®ãã§ãŒãºããšã¯ã¹ããŒããšã€ã³ããŒãã®2ã€ã®ãµããã§ãŒãºã«åå²ããŸããã¢ãžã¥ãŒã«ãšãã§ãŒãºã¯ã倧ããªã¹ãã¬ããã·ãŒãã§è¿œè·¡ãããŸãããimport
export
ãã¡ãã®ç§»è¡ããŒãã«ã®æç²ã
ãšã¯ã¹ããŒããã§ãŒãº
æåã®ã¹ãããã¯ãã¢ãžã¥ãŒã«/ãã¡ã€ã«éã§å ±æããå¿ èŠããããã¹ãŠã®ãšã³ãã£ãã£ã®ãšã¯ã¹ããŒãã¹ããŒãã¡ã³ããè¿œå ããããšã§ãããå€æã¯ããã©ã«ãããšã«ã¹ã¯ãªãããå®è¡ããããšã§èªååãããŸããã
module.json
ãã®ãããªãšã³ãã£ãã£ããããšããŸãããïŒ
Module.File1.exported = function() {
console.log('exported');
Module.File1.localFunctionInFile();
};
Module.File1.localFunctionInFile = function() {
console.log('Local');
};
ããã§ã¯
Module
ãã¢ãžã¥ãŒã«ã®ååã§ããFile1
- ãã¡ã€ã«åãã³ãŒãããªãŒã§ã¯ã次ã®ããã«ãªããŸãfront_end/module/file1.JS
ã
äžèšã®ã³ãŒãã¯ããã«å€æãããŸãïŒ
export function exported() {
console.log('exported');
Module.File1.localFunctionInFile();
}
export function localFunctionInFile() {
console.log('Local');
}
/** Legacy export object */
Module.File1 = {
exported,
localFunctionInFile,
};
åœåã¯ããã®æ®µéã§ã€ã³ããŒãã1ã€ã®ãã¡ã€ã«ã«æžãæããäºå®ã§ãããäŸãã°ãäžèšã®äŸã§ã¯ãæã ã¯æžãçŽãã§ããã
Module.File1.localFunctionInFile
ã«localFunctionInFile
ããã ãã2ã€ã®å€æãèªååããæ¹ãç°¡åã§ãå®å
šã§ããããšãããããŸããããããã£ãŠãããã¹ãŠã®ãšã³ãã£ãã£ã1ã€ã®ãã¡ã€ã«ã«è»¢éãããããšã¯ã2çªç®ã®ã€ã³ããŒããµããã§ãŒãºã«ãªããŸãã
ããŒã¯ãŒããè¿œå ãããš
export
ãã¡ã€ã«ããã¹ã¯ãªããããããã¢ãžã¥ãŒã«ãã«å€ãããããããã«å¿ããŠDevToolsã€ã³ãã©ã¹ãã©ã¯ãã£ã®å€ããæŽæ°ããå¿
èŠããããŸããããã¬ãŒã ã¯ãŒã¯ã«ã¯ãåçã€ã³ããŒãã©ã³ã¿ã€ã ãšãã¢ãžã¥ãŒã«ã¢ãŒãã§å®è¡ããããã®ESLintãªã©ã®ããŒã«ãå«ãŸããŠããŸããã
åä»ãªã®ã¯ããã¹ãããéå³å¯ãã¢ãŒãã§å®è¡ãããããšã§ããJavaScriptã¢ãžã¥ãŒã«ã¯ããã¡ã€ã«ãå³å¯ã¢ãŒãã§å®è¡ãããããšãæå³ããŸããããã¯ãã¹ãã«åœ±é¿ããŸããããããå€æããããã«ããã¹ãã®éèªææ°ãå«ããéå³å¯ã¢ãŒãã«äŸåããŠãããã¹ããªãã¬ãŒã¿ãååšããŠããŸã
with
ã
æçµçã«ãæåã®ãã©ã«ããŒã®æŽæ°ïŒãšã¯ã¹ããŒãã®è¿œå ïŒã«ã¯çŽ1é±éãããããªããŒããæ°åè©Šè¡ããŸããã
ã€ã³ããŒããã§ãŒãº
ãã¹ãŠã®ãšã³ãã£ãã£ãexportã¹ããŒãã¡ã³ãã䜿çšããŠãšã¯ã¹ããŒããããåŸãã¬ã¬ã·ãŒã®ããã«ã°ããŒãã«ã¹ã³ãŒãã®ãŸãŸã§ãESã€ã³ããŒãã䜿çšããã«ã¯ããã¹ãŠã®ãšã³ãã£ãã£åç §ãè€æ°ã®ãã¡ã€ã«ã«ããå Žåã¯æŽæ°ããå¿ èŠããããŸãããæçµçãªç®æšã¯ãã°ããŒãã«ã¹ã³ãŒããã¯ãªã¢ããããšã«ãããæéåãã®ãšã¯ã¹ããŒãããã¹ãŠåé€ããããšã§ããå€æã¯ããã©ã«ãããšã«ã¹ã¯ãªãããå®è¡ããããšã§èªååãããŸããã
ããšãã°ã次ã®ãšã³ãã£ãã£
module.json
ïŒ
Module.File1.exported();
AnotherModule.AnotherFile.alsoExported();
SameModule.AnotherFile.moduleScoped();
ã«å€æïŒ
import * as Module from '../module/Module.js';
import * as AnotherModule from '../another_module/AnotherModule.js';
import {moduleScoped} from './AnotherFile.js';
Module.File1.exported();
AnotherModule.AnotherFile.alsoExported();
moduleScoped();
ãã ãããã®ã¢ãããŒãã«ã¯æ³šæç¹ããããŸãã
- ãã¹ãŠã®ãšã³ãã£ãã£ãååãšããŠåœåãããããã§ã¯ãããŸãã
Module.File.symbolName
ãäžéšã®ãšã³ãã£ãã£ã«ã¯ååãä»ããããŠããModele.File
ãããŸãã¯Module.CompletelyDifferentName
ãäžäžèŽã¯ãå€ãã°ããŒãã«ãªããžã§ã¯ãããæ°ããã€ã³ããŒãããããªããžã§ã¯ããžã®å éšãããã³ã°ãäœæããå¿ èŠãããããšãæå³ããŸããã -
moduleScoped
. ,Events
, ,Events
. , , ,import
Events
. - , . , . , , . , , ( DevTools). , , .
JavaScript
2019幎9æã®éå§ãã6ãæåŸã®2020幎2æã«ãæåŸã®ã¯ãªãŒã³ã¢ãããui /ãã©ã«ããŒã§å®è¡ãããŸããããã®ããã移è¡ã¯éå ¬åŒã«çµäºããŸãããã»ãããèœã¡çãããã2020幎3æ5æ¥ã«æ£åŒã«ç§»è¡å®äºã®ããŒã¯ãä»ããŸããã
çŸåšãDevToolsã¯JavaScriptã¢ãžã¥ãŒã«ã§ã®ã¿æ©èœããŸãã
module.js
ã¬ã¬ã·ãŒãã¹ããŸãã¯ã¢ãŒããã¯ãã®ããŒã«ã®ä»ã®éšåãšã®çµ±åã®ããã«ãäžéšã®ãšã³ãã£ãã£ãïŒã¬ã¬ã·ãŒãã¡ã€ã«ã®ïŒã°ããŒãã«ã¹ã³ãŒãã«é
眮ããŠããŸãããããã¯æéã®çµéãšãšãã«åé€ãããŸãããéçºã劚ãããã®ãšã¯èŠãªãããŸãããJavaScriptã¢ãžã¥ãŒã«ã®ã¹ã¿ã€ã«ã¬ã€ãããããŸãã
çµ±èšåŠ
ãã®ç§»è¡ã«é¢ä¿ããCLïŒãã§ã³ãžãªã¹ã-GitHubãã«ãªã¯ãšã¹ããšåæ§ã«Gerritã§äœ¿çšãããçšèªïŒã®æ°ã®æ§ãããªèŠç©ããã¯çŽ250 CLã§ãããã»ãšãã©ã2人ã®ãšã³ãžãã¢ã«ãã£ãŠè¡ãããŸããè¡ãããå€æŽã®ãµã€ãºã«é¢ããæçµçãªçµ±èšã¯ãããŸããããå€æŽãããè¡ã®æ§ãããªèŠç©ããïŒåCLã®æ¿å ¥ãšåé€ã®çµ¶å¯Ÿå·®ã®åèšïŒã¯çŽ30,000è¡ã§ãããããã¯ãã¹ãŠã®DevToolsããã³ããšã³ãã³ãŒãã®çŽ20ïŒ ã§ãã
ãšã¯ã¹ããŒããããæåã®ãã¡ã€ã«ã¯ã2019幎12æã®å®å®çãªãªãŒã¹ã§ãªãªãŒã¹ãããChrome79ã§ãµããŒããããŠããŸããã€ã³ããŒãã«åãæ¿ããæåŸã®å€æŽã¯ã2020幎5æã®å®å®çãªãªãŒã¹ã§ãªãªãŒã¹ãããChrome83ã§ãã
å®å®ããChromeã§ã®ç§»è¡ã«ãã1ã€ã®ãªã°ã¬ãã·ã§ã³ãèªèããŠããŸããç¡é¢ä¿ãªããã©ã«ãã®ãšã¯ã¹ããŒããåå ã§ãã³ãã³ãããŒã®ã³ãŒãã¹ããããã®èªåè£å®ãæ©èœããªããªããŸãããä»ã«ãããã€ãã®ãªã°ã¬ãã·ã§ã³ããããŸããããèªåãã¹ãã±ãŒã¹ãšChromeCanaryãŠãŒã¶ãŒããå ±åãããŠããŸããChromeã®å®å®ãããªãªãŒã¹ã«å ¥ãåã«ããã°ãä¿®æ£ããŸããããã㧠ç»é²ãããšãã¹ããŒãªãŒå šäœãèŠãããšãã§ããŸãããã¹ãŠã§ã¯ãããŸããããã»ãšãã©ã®CLã¯ãã®ãšã©ãŒã«é¢é£ããŠããŸãã
ç§ãã¡ã¯äœãåŠã³ãŸãããïŒ
- . , JavaScript ( ) , DevTools . , , , .
- â , . , , . , , , .
- (, ) . -. , Python Rollup.
- (~20% ), . , , . , .
- , . . , , , . , , â . , , .
, Level Up , - SkillFactory:
- Java- (18 )
- JavaScript (12 )
E
- Data Science (12 )
- - (8 )
- Machine Learning (12 )
- «Machine Learning Pro + Deep Learning» (20 )
- « Machine Learning Data Science» (20 )
- «Python -» (9 )
- DevOps (12 )
- (9 )
- UX- (9 )
- Web- (7 )