1. Juliaèšèªã«ã€ããŠ
Juliaãšã¯ããã€ããã©ãŒãã³ã¹ãªæ°å€èšç®ãç®çãšããé«æ°Žæºãªåçããã°ã©ãã³ã°èšèªã§ãã倧èŠæš¡ã§é£è§£ãªæ°å€èšç®ãããŒã¿è§£æã®èª²é¡ãå¹ççã«åŠçã§ããããèšèšãããŠããŸãã
Juliaã¯ãã®æ§èœã®é«ããšãPythonãRèšèªã®ãããªæè»æ§ãå ŒãåããŠãããããç§åŠèšç®ãããŒã¿ãµã€ãšã³ã¹ã®äžçã§éå®ãããŠããŸãã
ãã®èšäºã§ã¯ãJuliaèšèªã®ç¹åŸŽãæŽå²ãçšéããããŠJuliaã®ã©ã€ãã©ãªã«ã€ããŠè©³ãã解説ããŸãã
1.1 Juliaèšèªã®ç¹åŸŽ
Juliaã®ç¹åŸŽãšããŠã¯ã以äžã®4ã€ãæããããŸãã
ãŸã1ã€ç®ã«ãJuliaã¯ãã€ããã©ãŒãã³ã¹ãªåŠçèœåãæäŸããŸããé«ã¬ãã«ãªæœè±¡åãå¯èœãªäžæ¹ã§ãCèšèªã«å¹æµããé床ã§åŠçãå®è¡ã§ããããã倧èŠæš¡ãªèšç®åŠçãé£ãªãè¡ããŸãã
2ã€ç®ã«ãJuliaã¯è±å¯ãªæšæºã©ã€ãã©ãªãåããŠããŸãããããã®ã©ã€ãã©ãªçŸ€ã¯JuliaèªäœãæäŸããŠãããå€éšããããŠã³ããŒããããããå¿ èŠããããŸããã
1.2 Juliaã®æŽå²
Juliaã®æŽå²ã¯ã2012幎ã«å§ãŸããŸããMITã®4人ã®ãšã³ãžãã¢ã«ãã£ãŠèšèšãéçºãããJuliaã¯ããã®å¹çãšäŸ¿å©ãããããã«ç§åŠæè¡èšç®ã®äžçã§æ³šç®ã济ã³ãŸããã
ç¹ã«æé©ååé¡ãæ©æ¢°åŠç¿ãªã©ã®åéã§ã¯ãJuliaã®é«ãããã©ãŒãã³ã¹ãšå¹çæ§ãè©äŸ¡ãããŠããŸããéçºããããããªæéã§ãJuliaã¯å šäžçã®ç 究è ãæè¡è ããåºãåãå ¥ãããã掻çšãããŠããŸãã
以éãJuliaã¯ãã®éçºãç¶ããŠãããçŸåšã§ã¯ããŸããŸãªããŒãžã§ã³ã¢ãããè¡ãããããé«æ§èœã§ã䜿ããããèšèªãžãšé²åãéããŠããŸãã
1.3 Juliaèšèªã®çšé
Juliaã®çšéã¯éåžžã«åºç¯ã§ãæ°å€è§£æã察話çãªããŒã¿æ¢çŽ¢ãåæ£äžŠè¡èšç®ã倧èŠæš¡ããŒã¿åŠçãªã©ãæ§ã ãªå Žé¢ã§æŽ»èºããŸãã
ç¹ã«ããŒã¿åæãæ©æ¢°åŠç¿ã®ãããªããŒã¿å¯åºŠã®é«ãé åã§ã¯ãJuliaã®é«éãªåŠçèœåãšæè»æ§ãå ããŸãããŸããç©çã·ãã¥ã¬ãŒã·ã§ã³ããã£ãã³ã·ã£ã«ã¢ããªã³ã°ãªã©ã®é åã§ããã䜿ãããŠããŸãã
Juliaã®åºç¯ãªçšéæ§ã¯ããã®ãŠããŒã¯ãªèšèšææ³ã«ãããã®ã§ããã®èšèšææ³ãJuliaã®å€§ããªé åçãªèŠçŽ ãšãªã£ãŠããŸãã
1.4 Juliaèšèªã®åŠç¿ãªãœãŒã¹
JuliaèšèªãåŠã¶ããã®ãªãœãŒã¹ã¯ãããããããŸããå ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ã¯éåžžã«å å®ããŠãããåå¿è ããäžçŽè ãŸã§å¹ åºãå 容ãã«ããŒããŠããŸãã
ãŸããã€ã³ã¿ãŒãããäžã«ã¯Juliaã«é¢ãããã¥ãŒããªã¢ã«ãããã°èšäºãå€æ°ååšããŸãããããã®ãªãœãŒã¹ã掻çšããããšã§ãJuliaã®åºæ¬çãªææ³ããé«åºŠãªæ©èœãŸã§ãèªåã®ããŒã¹ã§æ·±ãåŠã¶ããšãã§ããŸãã
ããã«ããªã³ã©ã€ã³åŠç¿ãã©ãããã©ãŒã ã§ã¯Juliaã®ã³ãŒã¹ãæäŸãããŠããŸããå°é家ã«ããæå°ã®ããšãå®è·µçãªãããžã§ã¯ããéããŠJuliaã®ã¹ãã«ã磚ãããšãã§ããŸãã
2. Juliaã©ã€ãã©ãªã«ã€ããŠ
Juliaã®ã©ã€ãã©ãªãšã¯ãJuliaèšèªããã䜿ãããããããé«æ©èœã«ããããã«éçºè ãã¡ãæäŸããŠããããã°ã©ã ã®äžéšã§ãããããã®ã©ã€ãã©ãªã¯ããŒã¿åæãããžã¥ã¢ã©ã€ãŒãŒã·ã§ã³ãæ©æ¢°åŠç¿ããµãŒããŒç®¡çãªã©ãæ§ã ãªé åã«å¯Ÿå¿ããŠããããããããç°ãªãæ©èœãç¹æ§ãæã£ãŠããŸãã
ãã®èšäºã§ã¯ãJuliaã§çšããããã©ã€ãã©ãªã®çš®é¡ã䜿ãæ¹ãããã«ã¯ãã䜿ãããã©ã€ãã©ãªã«ã€ããŠè©³ãã説æããŸããå ·äœçã«ã¯ããŸãã©ã€ãã©ãªãäœã§ãããã説æãã次ã«Juliaã§çšããããã©ã€ãã©ãªã®çš®é¡ã«ã€ããŠè§£èª¬ããŸãããã®åŸãJuliaã®ã©ã€ãã©ãªãã©ã®ããã«å©çšãããããããŠæããã䜿ãããJuliaã®ã©ã€ãã©ãªã«ã€ããŠèª¬æããŸãã
ããã§ã¯ãJuliaã®ã©ã€ãã©ãªã«ã€ããŠè©³ããèŠãŠãããŸãããã
2.1 ã©ã€ãã©ãªãšã¯
ã©ã€ãã©ãªãšã¯ãããã°ã©ãã³ã°èšèªã«ãããäžé£ã®ã³ãŒãã®ãŸãšãŸãã§ãããç¹å®ã®æ©èœãæäŸãã圹å²ãæãããŸããã©ã€ãã©ãªã¯ãéçºè ãåæ§ã®ã¿ã¹ã¯ãåå©çšå¯èœãªåœ¢ã§ç°¡åã«è¡ãããšãã§ããããã«ããããã«äœãããŠããŸãã
ã©ã€ãã©ãªã®å©çšã«ããããã°ã©ããŒã¯ãç¹å®ã®åé¡è§£æ±ºã®ããã«ã³ãŒããäžããæžãããšãªããæ©èœã容æã«è¿œå ããããšãã§ããŸããçµã¿èŸŒã¿ã©ã€ãã©ãªãå€éšã©ã€ãã©ãªãªã©æ§ã ãªçš®é¡ã®ã©ã€ãã©ãªãååšããŸããããã®å šãŠãäœæ¥ãå¹çåããããã«å©çšãããŸãã
å ·äœçã«ã¯ãã©ã€ãã©ãªã¯ç¹å®ã®åé¡ã解決ããããã®é¢æ°ãã¯ã©ã¹ãå®æ°ãªã©ã®éåã§ãããããã°ã©ã å šäœã®äžéšãšããŠã€ã³ããŒãããŠäœ¿çšããŸãã
2.2 Juliaã§çšããããã©ã€ãã©ãªã®çš®é¡
Juliaã§ã¯ãæ§ã ãªçš®é¡ã®ã©ã€ãã©ãªãçšããããŸãããããã¯ããŒã¿ãµã€ãšã³ã¹ãæ©æ¢°åŠç¿ãçµ±èšåŠãã°ã©ãã£ã¯ã¹ããããã¯ãŒã¯ããŠã§ãéçºãªã©ãããŸããŸãªåéã§äœ¿çšã§ããŸãã
äŸãã°ãæ©æ¢°åŠç¿ã©ã€ãã©ãªã®äžã€ã«ãFlux.jlãããããŸãããŸããããŒã¿åæã§ã¯ãDataFrames.jlããç»ååŠçã§ã¯ãImages.jlããªã©ããã䜿ãããŸãã
ãããã®ã©ã€ãã©ãªã¯ãã³ãã¥ããã£ã«ãã£ãŠéçºã»ç®¡çãããŠãããéçºè ãèªç±ã«äœ¿ãããšãå¯èœã§ãã
2.3 Juliaã©ã€ãã©ãªã®å©çšæ¹æ³
Juliaã®ã©ã€ãã©ãªãå©çšããã«ã¯ããusingãã³ãã³ãã䜿ã£ãŠã©ã€ãã©ãªãåŒã³åºããŸããäŸãã°ããusing DataFramesããå®è¡ãããšãDataFramesã©ã€ãã©ãªãå©çšå¯èœã«ãªããŸãã
æ°ããªã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããã«ã¯ããPkg.addãã³ãã³ãã䜿ã£ãŠããã±ãŒãžãè¿œå ããŸããäŸãã°ããPkg.add(“DataFrames”)ããå®è¡ãããšãDataFramesã©ã€ãã©ãªãã¯ã©ãŠãããããŠã³ããŒããããŠã€ã³ã¹ããŒã«ãããŸãã
䟿å©ãªç¹ã¯ããããã®æäœãå šãŠJuliaã®ã³ãŒãäžã§è¡ããããšã§ããã€ãŸããJuliaã®ç°å¢èšå®ã管çãããã°ã©ãã³ã°ãšåãæèŠã§è¡ãããšãã§ããŸãã
2.4 ãã䜿ãããJuliaã©ã€ãã©ãª
Juliaã§ãã䜿ãããã©ã€ãã©ãªãšããŠã¯ãäžèšã®ãFlux.jlãããDataFrames.jlãããImages.jlãã®ä»ã«ãããPlots.jlãããDifferentialEquations.jlããªã©ããããŸãã
ãPlots.jlãã¯ããŒã¿ã®å¯èŠåãè¡ãããã®åŒ·åãªã©ã€ãã©ãªã§ãç°¡åãªã³ãŒãã§çŸããã°ã©ããæãããšãå¯èœã§ããäžæ¹ããDifferentialEquations.jlãã¯åŸ®åæ¹çšåŒã解ãããã®ã©ã€ãã©ãªã§ãç§åŠèšç®ãå·¥åŠãéèãªã©å¹ åºãé åã§å©çšã§ããŸãã
ãããã®ã©ã€ãã©ãªã䜿ãããšã§ãJuliaã®æ©èœã匷åããããé«åºŠãªã¿ã¹ã¯ãå¹ççã«å®è¡ããããšãå¯èœã«ãªããŸãã
3. ããããã®Juliaã©ã€ãã©ãª
Juliaã¯å€æ©èœæ§ãšé«éæ§ãäž¡ç«ããããã°ã©ãã³ã°èšèªã§ãããã®ãããæ§ã ãªãžã£ã³ã«ã®ã©ã€ãã©ãªãå¹ åºãæäŸãããŠãããããªãã®ããã°ã©ãã³ã°ã©ã€ããããè±ãã«ããŸããããã§ã¯ãç¹ã«ããããã®Juliaã©ã€ãã©ãªã4ã€ã®ã«ããŽãªãŒã«åããŠçŽ¹ä»ããŠãããŸãã
3.1 ããŒã¿åæã«åœ¹ç«ã€ã©ã€ãã©ãª
DataFrames.jlã¯ãJuliaã«ãããæšæºçãªããŒã¿åæã©ã€ãã©ãªã§ãã衚圢åŒã®ããŒã¿ãå¹çè¯ãæäœããããã®å€ãã®é¢æ°ãæäŸãããŠããŸãã
ç¶ããŠãPlots.jlã¯ããŒã¿ãèŠèŠçã«è¡šçŸããããã®åŒ·åãªã©ã€ãã©ãªã§ããå€çš®å€æ§ãªã°ã©ããæãããšãå¯èœã§ãããŒã¿åæã®çµæãèŠãããè¡šçŸããã®ã«åœ¹ç«ã¡ãŸãã
ããã«ãStatsModels.jlã¯çµ±èšã¢ããªã³ã°ãè¡ãããã®ã©ã€ãã©ãªã§ããäžè¬åç·åœ¢ã¢ãã«ãæ··åå¹æã¢ãã«ãªã©ãæ§ã ãªçµ±èšã¢ãã«ãæ±ãããšãã§ããŸãã
3.2 ãã·ã³ã©ãŒãã³ã°ã«åœ¹ç«ã€ã©ã€ãã©ãª
Juliaã®äžã§ã泚ç®ãããŠããåéããã·ã³ã©ãŒãã³ã°ã§ããã®äžå¿ãšãªãã®ãFlux.jlã§ãããã®ã©ã€ãã©ãªã¯èªç¶èšèªåŠç(NLP)ãçæã¢ãã«ãªã©ãå¹ åºãé åã§å©çšã§ããŸãã
MLJ.jlã¯Juliaã®ãã·ã³ã©ãŒãã³ã°ã©ã€ãã©ãªã®äžã§ã¢ãã«éžæãçµæã®è©äŸ¡ã容æã«è¡ããããæ¯æŽããŸããéåžžã«æè»æ§ãé«ããæ¡åŒµæ§ãåªããŠããŸãã
ããã«ãScikitLearn.jlã¯Scikit-learnã®JuliaããŒãžã§ã³ã§ãåé¡ãååž°ãã¯ã©ã¹ã¿ãªã³ã°ãªã©ã®ãã·ã³ã©ãŒãã³ã°ã¿ã¹ã¯ã«å¯Ÿå¿ããŠããŸãã
3.3 ã°ã©ãã£ãã¯ã¹ã«åœ¹ç«ã€ã©ã€ãã©ãª
ã°ã©ãã£ãã¯ã¹ã«é¢ããŠãJuliaã«ã¯éåžžã«åªããã©ã€ãã©ãªãæã£ãŠããŸããMakie.jlã¯ã2Dãš3Dã®ã°ã©ãã£ãã¯ã¹ãçæããã®ã«éåžžã«äŸ¿å©ãªã©ã€ãã©ãªã§ãã
ä»ã«ãPlots.jlã¯ããŒã¿ã®èŠèŠåãããéã«äœ¿çšããããšãå€ãã©ã€ãã©ãªã§ãããŒãžã§ã³ãOSã«ããã䜿ãããšãåºæ¥ãŸãã
ããã«ãGadfly.jlã¯ggplot2ã®ãããªææ³ãæã€ããããã©ã€ãã©ãªã§ãæ§ã ãªããããã¿ã€ãããµããŒãããŠããŸãã
3.4 ã¢ããªã±ãŒã·ã§ã³éçºã«åœ¹ç«ã€ã©ã€ãã©ãª
ã¢ããªã±ãŒã·ã§ã³éçºã«ã¯Genie.jlãããããã§ãããã®ã©ã€ãã©ãªã¯ãé«éãªWebã¢ããªã±ãŒã·ã§ã³ãšãã€ã¯ããµãŒãã¹ã®éçºããµããŒãããŠããŸãã
ãã®ã»ããJuliaã§ã®ãã¹ã¯ãããã¢ããªã±ãŒã·ã§ã³éçºã«ã¯Gtk.jlã䟿å©ã§ããGtk.jlã¯GTK+ã®Juliaãã€ã³ãã£ã³ã°ã§ãGUIã¢ããªã±ãŒã·ã§ã³ãäœæããéã«å¿ èŠãªã©ã€ãã©ãªãããŒã«ãæäŸããŠããŸãã
ãŸããJuliaDB.jlã¯Juliaã§å€§èŠæš¡ãªããŒã¿ãåŠçããããã®ã©ã€ãã©ãªã§ããåæ£åŠçããµããŒãããããŒã¿ãã¬ãŒã ãšããŠå©çšããããšãã§ããŸãã
4. Juliaã©ã€ãã©ãªã®å®è·µçãªå©çš
ããã§ã¯Juliaèšèªã®ã©ã€ãã©ãªã®åãæ±ãã«ã€ããŠèŠãŠãããŸããããæ¬é ç®ã§ã¯ããŒã¿åæããã·ã³ã©ãŒãã³ã°ãã°ã©ãã£ãã¯ã¹ãã¢ããªã±ãŒã·ã§ã³éçºãšãã£ãæ§ã ãªåéã«ãããŠæçšãªã©ã€ãã©ãªã®åãæ±ãæ¹æ³ã瀺ããŸããããããéããŠãããªãã®ã¹ãã«ã»ãããå å®ããããšãšãã«ãã³ãŒãã®å¹çåãšçç£æ§ã®åäžã«è²¢ç®ããŸãã
ããããã®ã©ã€ãã©ãªã®å ·äœçãªäœ¿ãæ¹ã«ã€ããŠèª¬æããåã«ãäžè¬çãªJuliaã®ã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«æ¹æ³ãšäœ¿çšæ¹æ³ã«ã€ããŠèª¬æããŸããã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«ã¯ãJuliaã®ããã±ãŒãžç®¡çã·ã¹ãã ã䜿çšããŸãããã®äžã§ãæãåºæ¬çãªã©ã€ãã©ãªã®ç®¡çæ¹æ³ã¯ããPkg.add(“ã©ã€ãã©ãªå”)ããšããã³ãã³ããå®è¡ããããšã§ãã
ãªããè©Šãããã®ã©ã€ãã©ãªã䜿çšããŠã¿ãéã«ã¯ãå¿ ãç°å¢ãå£ããªãããã«ãæ°ããªãããžã§ã¯ãç°å¢ãäœæããŠè¡ãããšãéå±ããŸããå ·äœçãªæé ã¯ããPkg.generate(“æ°ãããžã§ã¯ãå”)ããšããã³ãã³ããå®è¡ããŠãããžã§ã¯ããäœæãããã®åŸäœæãããã£ã¬ã¯ããªã«ç§»åãããPkg.activate(“.”)ããšããã³ãã³ãã§äœæãããããžã§ã¯ããæå¹åããŸãã
4.1 ããŒã¿åæã«äœ¿çšããã©ã€ãã©ãªã®äœ¿ãæ¹
Juliaã«ã¯ããŒã¿åæäœæ¥ãå¹çåããããã®ã©ã€ãã©ãªãè±å¯ã«ãããŸãããDataFrames.jlãã¯ãã®äžã®äžã€ã§ãããŒã¿æäœãšåæã®çºã®ãã¯ãã«ãªããŒã«éã§ãããã®ã©ã€ãã©ãªã䜿çšããããšã§ãå¹ççãªããŒã¿æ§æãæäœããããŠåæãå¯èœã«ãªããŸãã䜿ãæ¹ã¯ç®åã§ããusing DataFramesããå®è¡ããã ãã§å©çšéå§ã§ããŸãã
ãŸãããPlots.jlãã¯ã°ã©ãã£ãã¯ãçæããããããŒã¿ã®èŠèŠåãè¡ãããã®ã©ã€ãã©ãªã§ãããã®ã©ã€ãã©ãªã䜿çšããããšã§ãããŒã¿ã®èŠèŠåãç°¡åã«ãªããŸãã䜿ãæ¹ã¯ããusing Plotsããå®è¡ããã ãã§ãéåžžã«ã·ã³ãã«ã§ãã
ããã«ããStatsBase.jlãã¯çµ±èšåæçšã®ã©ã€ãã©ãªã§ãããã®ã©ã€ãã©ãªãçšããããšã§ãå¿ èŠãªçµ±èšçãªæäœãè¡ããŸãã䜿ãæ¹ã¯ããusing StatsBaseãã§ã©ã€ãã©ãªãèªã¿èŸŒã¿ããã®åŸå¿ èŠãªé¢æ°ãåŒã³åºãã ãã§ãã
4.2 ãã·ã³ã©ãŒãã³ã°ã«äœ¿çšããã©ã€ãã©ãªã®äœ¿ãæ¹
Juliaã§ãã·ã³ã©ãŒãã³ã°ã䜿çšããå ŽåããScikitLearn.jlãããFlux.jlããªã©ãããããã§ãããScikitLearn.jlãã¯Pythonã®æåãªæ©æ¢°åŠç¿ã©ã€ãã©ãªãscikit-learnãã®Juliaçã§ãåºç¯å²ã®æ©æ¢°åŠç¿ã®ã¢ã«ãŽãªãºã ãæäŸããŠããŸãã
äžæ¹ããFlux.jlãã¯ããé«åºŠãªãã£ãŒãã©ãŒãã³ã°ã«åãçµãããã®ã©ã€ãã©ãªã§ãJuliaã§æžãããŠãããããæ瞟åªç§ã§ãããªããç°¡ææ§ãæã¡åãããŠããŸããããããã®ã©ã€ãã©ãªã¯ããusing ã©ã€ãã©ãªåããå®è¡ããã ãã§å©çšéå§ã§ããŸãã
ãããã®ã©ã€ãã©ãªã䜿çšããã°ãJuliaã§ã®æ©æ¢°åŠç¿ã¢ããªã³ã°ãç®æãã¹ãæ¹åæ§ãèŠã€ããã¢ãã«ã®ç²ŸåºŠãåäžãããããšãå¯èœãšãªããŸãã
4.3 ã°ã©ãã£ãã¯ã¹ã«äœ¿çšããã©ã€ãã©ãªã®äœ¿ãæ¹
Juliaã§ã°ã©ãã£ãã¯ã¹ãçæããããã«ã¯ããPlots.jlãããMakie.jlããªã©ã®ã©ã€ãã©ãªãæé©ã§ãããPlots.jlãã¯åè¿°ã®éããã°ã©ãã£ãã¯ãç°¡åã«çæããããšãã§ããŸãã
äžæ¹ããMakie.jlãã¯3Dã°ã©ãã£ãã¯ã¹ããªã¢ã«ã¿ã€ã ã®ã€ã³ã¿ã©ã¯ãã£ããªããžã¥ã¢ã©ã€ãŒãŒã·ã§ã³ãçæããããã®é«åºŠãªã©ã€ãã©ãªã§ãããMakie.jlãã䜿ãããšã§ãåçãªèŠèŠè¡šçŸãããŒã¿ã®èŠèŠç解æãå¯èœã«ãªããŸãã
ãããã®ã©ã€ãã©ãªã¯ããusing ã©ã€ãã©ãªåããå®è¡ããã ãã§å©çšéå§ã§ããŸããã°ã©ãã£ãã¯ã¹ãçæããããã«ã¯ããã®ãããªã©ã€ãã©ãªã®å©çšãäžå¯æ¬ ã§ãããããŒã¿åæããã·ã³ã©ãŒãã³ã°ã®çµæã®èŠèŠåã«ã倧ãã«åœ¹ç«ã¡ãŸãã
4.4 ã¢ããªã±ãŒã·ã§ã³éçºã«äœ¿çšããã©ã€ãã©ãªã®äœ¿ãæ¹
Juliaã«ã¯ã¢ããªã±ãŒã·ã§ã³éçºã容æã«ããããã®ã©ã€ãã©ãªããããŸãããJuliaWebAPI.jlãã¯RESTful APIãäœæããããã®ã©ã€ãã©ãªã§ããMux.jlãã¯WebãµãŒããŒãšã«ãŒãã£ã³ã°ã®æ©èœãæäŸããŸãã
ãŸããããŒã¿ããŒã¹ãšã®æ¥ç¶ãå©ãããSQLite.jlãããMySQL.jlãããPostgreSQL.jlããªã©ã®ã©ã€ãã©ãªããããŸããããããçšããããšã§ãJuliaããçŽæ¥ããŒã¿ããŒã¹ã«ã¢ã¯ã»ã¹ããããŒã¿æäœãå¯èœã«ãªããŸãã
ãããã®ã©ã€ãã©ãªã¯ããusing ã©ã€ãã©ãªåããå®è¡ããã ãã§å©çšéå§ã§ããŸããã¢ããªã±ãŒã·ã§ã³éçºã«ãããããŸããŸãªäœæ¥ãç°¡åã«ããé«åºŠã«æ©èœçãªã¢ããªã±ãŒã·ã§ã³ã®éçºãå¯èœã«ããŸãã
5. Juliaã©ã€ãã©ãªã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
Juliaã®ã©ã€ãã©ãªã¯éåžžã«äŸ¿å©ã§ãã¯ãã«ã ããããããããŸã䜿ãããªãããã«ã¯ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ã¹ãã«ãå¿ èŠãšãããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãäžè¬çãªãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®æ¹æ³ã瀺ããŸãã
ã€ã³ã¹ããŒã«åé¡ã䜿çšäžã«èµ·ããåé¡ãäºææ§åé¡ãã¢ããããŒãæ¹æ³ãªã©ãJuliaã®ã©ã€ãã©ãªã§ããããåé¡ãããããèŠãŠãããŸãããã
次ããã¯ããããã®åé¡ãšããã«å¯Ÿãã解決çã詳现ã«èŠãŠãããŸãããã
5.1 ã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«ã«èµ·ããå¯èœæ§ã®ããåé¡
Juliaã®ã©ã€ãã©ãªãã€ã³ã¹ããŒã«ããéãäŸåé¢ä¿ã®åé¡ãããŒãžã§ã³ã®äžäžèŽãªã©ãäž»ãªåå ã§ãã©ãã«ãèµ·ããããšããããŸãã
ãããã®åé¡ã«å¯ŸåŠããããã«ã¯ãPkgã¢ãžã¥ãŒã«ã䜿ã£ãŠãäŸåé¢ä¿ã確èªããå¿ èŠãªããŒãžã§ã³ãæå®ããŠã€ã³ã¹ããŒã«ããããšãåºæ¬çãªè§£æ±ºçãšãªããŸãã
ãŸãã詳现ãªãšã©ãŒã¡ãã»ãŒãžãèŠãããã«ã¯ã詳现ãªãã°åºåãæå¹ã«ããããšã圹ç«ã¡ãŸãã
5.2 ã©ã€ãã©ãªã®äœ¿çšäžã«çºçããå žåçãªåé¡
ã©ã€ãã©ãªã䜿çšäžã«ããçºçããåé¡ã«ã¯ãé¢æ°ã®äžæ£ãªäœ¿çšãã¡ã¢ãªäžè¶³ãªã©ããããŸãã
ãããã¯ãJuliaã®å ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ãèŠãŠãé¢æ°ã®æ£ãã䜿çšæ³ã確èªããããå¿ èŠãªãªãœãŒã¹ã確ä¿ãããŠããã確èªããããšã§è§£æ±ºã§ããŸãã
ãŸããéœåºŠäœ¿çšåŸã®ã¡ã¢ãªè§£æŸãååã«è¡ãããŠããªãå Žåã«ã¯ãGC.gc()é¢æ°ãå©çšããŠæåã§ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãè¡ãããšã解決çã®äžã€ã§ãã
5.3 ã©ã€ãã©ãªã®äºææ§åé¡
ããã©ã€ãã©ãªãä»ã®ã©ã€ãã©ãªãšäºææ§ãæããªãå Žåãåäœãäžå®å®ã«ãªããŸãã¯ãšã©ãŒãçºçããå¯èœæ§ããããŸãã
ãããã®åé¡ã«å¯ŸããŠã¯ãäºææ§åé¡ãä¿®æ£ããããŒãžã§ã³ããªãªãŒã¹ããããŸã§ã®éãäºææ§ã®ããããŒãžã§ã³ã䜿çšããããšãæå¹ãªè§£æ±ºçãšãªããŸãã
å ·äœçã«ã¯ãJuliaã®Pkgã¢ãžã¥ãŒã«ã䜿çšããŠç¹å®ã®ããŒãžã§ã³ãã€ã³ã¹ããŒã«ããããšãã§ããŸãã
5.4 ã©ã€ãã©ãªã®ã¢ããããŒãæ¹æ³
Juliaã®ã©ã€ãã©ãªãææ°ã®ç¶æ ã«ä¿ã€ããã«ã¯ãå®æçãªã¢ããããŒããå¿ èŠã§ãã
Juliaã®Pkgã¢ãžã¥ãŒã«ã䜿ã£ãŠãã€ã³ã¹ããŒã«æžã¿ã®ã©ã€ãã©ãªãç°¡åã«ã¢ããããŒãããããšãã§ããŸããå ·äœçã«ã¯ãPkg.update()ãå®è¡ããããšã§ãææããŠããå šãŠã®ããã±ãŒãžãææ°ããŒãžã§ã³ã«æŽæ°ã§ããŸãã
ãã ããã©ã€ãã©ãªãæŽæ°ããéã«ã¯åè¿°ããäºææ§åé¡ã«æ³šæããªããã°ãªããŸããããã®ãããããçšåºŠã®æ éããæ±ããããŸãã
6. ãŸãšãïŒJuliaã©ã€ãã©ãªã®äœ¿ãããªãè¡
Juliaã¯é«éã§çŽæçã«ç解ã§ããããã°ã©ãã³ã°èšèªã§ãã©ã€ãã©ãªã®è±å¯ãããã®ç¹åŸŽã®äžã€ã§ããããã§ã¯ãJuliaã®ã©ã€ãã©ãªã䜿ãããªãæ¹æ³ã«ã€ããŠè©³ãã解説ããŸãã
é©åãªã©ã€ãã©ãªãèŠã€ããç解ãã掻çšããããšã¯ãJuliaã§ã®éçºäœæ¥ãå¹ççãã€å¹æçã«é²ããããã®éèŠãªã¹ãã«ã§ãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãJuliaã®ã©ã€ãã©ãªéžã³ã®ãã€ã³ããå¹ççãªæŽ»çšæ¹æ³ãç¶ç¶çãªåŠç¿æ¹æ³ããããŠãããªãåŠç¿ãªãœãŒã¹ã«ã€ããŠèª¬æããŸãã
6.1 ã©ã€ãã©ãªéžã³ã®ãã€ã³ã
ãŸãæåã«ãJuliaã§é©åãªã©ã€ãã©ãªãéžã¶ããã®ãã€ã³ãã«ã€ããŠèª¬æããŸããçšéããµããŒããæŽæ°é »åºŠãäž»èŠãªåºæºãšãªããŸãã
ç¹å®ã®ã¿ã¹ã¯ãå¹ççã«è¡ãããã«ã¯ãããããµããŒããç¶ããŠããŠã掻çºã«æŽæ°ãããŠããã©ã€ãã©ãªãéžã¶ããšãéèŠã§ãã
ãŸãããµããŒãæ å ±ãæŽæ°å±¥æŽã¯éçºè ãæäŸããããã¥ã¡ã³ããŒã·ã§ã³ãã確èªããããšãã§ããŸãã
6.2 ã©ã€ãã©ãªã®å¹ççãªæŽ»çšæ¹æ³
次ã«ãJuliaã®ã©ã€ãã©ãªãå¹ççã«æŽ»çšããããã®æ¹æ³ã«ã€ããŠè§£èª¬ããŸããããã¥ã¡ã³ããŒã·ã§ã³ã®æŽ»çšãšãµã³ãã«ã³ãŒãã®å©çšãéµãšãªããŸãã
ã©ã€ãã©ãªã®ããã¥ã¡ã³ããŒã·ã§ã³ã¯ããã®ã©ã€ãã©ãªã®å šäœåãã€ããããã®ãã®ã§ããããã«ãã£ãŠãã©ã€ãã©ãªã®æ©èœãšäœ¿çšæ¹æ³ãæ·±ãç解ã§ããŸãã
ãŸãããµã³ãã«ã³ãŒããå©çšããããšã§ãèªåã®ãããžã§ã¯ãã«ã©ã€ãã©ãªãã©ã®ããã«çµã¿èŸŒãã°ããã®ããåŠã¶ããšãã§ããŸãã
6.3 ç¶ç¶çãªåŠç¿æ¹æ³
ãããŠãJuliaã®ã©ã€ãã©ãªã«é¢ããç¥èãç¶ç¶çã«æ·±ããããã®æ¹æ³ã«ã€ããŠèª¬æããŸããå ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ãã³ãã¥ããã£ãžã®åå ãå®æçãªã¢ããããŒãã®ãã§ãã¯ãæå¹ã§ãã
æ°ããã©ã€ãã©ãªã®ãªãªãŒã¹ãã¢ããããŒãã¯æ¥ã è¡ãããŠããŸããå ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ãã¹ããŒãã¡ã³ããããããã®ãªãªãŒã¹ããŒããå®æçã«ãã§ãã¯ããããšãæšå¥šãããŸãã
ããã«ãJuliaã®ã³ãã¥ããã£ã«åå ããŠäº€æµããããšã¯ãåŠç¿ãæ·±ããäžã§å€§å€æçšã§ããã³ãã¥ããã£ã§ã¯ãä»ã®éçºè ãšçµéšãå ±æããæ°ããªæŽå¯ãåŸãããŸãã
6.4 Juliaã©ã€ãã©ãªã«é¢ãããããªãåŠç¿ãªãœãŒã¹
æåŸã«ãJuliaã®ã©ã€ãã©ãªã«é¢ãããããªãåŠç¿ãªãœãŒã¹ã«ã€ããŠèª¬æããŸããå ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ããã¥ãŒããªã¢ã«ãããã°ãªã©ããããŸãã
Juliaã®å ¬åŒããã¥ã¡ã³ããŒã·ã§ã³ã¯ãæãä¿¡é Œã§ããæ å ±æºã§ããåã©ã€ãã©ãªã®è©³çŽ°ãªæ å ±ã確èªã§ããŸãã
ããã«ããªã³ã©ã€ã³ã§å©çšã§ãããã¥ãŒããªã¢ã«ãããã°æçš¿ããæ°ããªã©ã€ãã©ãªã®äœ¿ãæ¹ãåŠã¶ã®ã«åœ¹ç«ã¡ãŸãããããã¯ãä»ã®éçºè ãå®éã«ã©ã€ãã©ãªã䜿ã£ãŠäœãéæãããã«ã€ããŠã®è²ŽéãªæŽå¯ãæäŸããŸãã