1.ã¯ããã«
ãã®ããŒãã§ã¯ããµã€ã蚪åè ã®ã¢ã¯ãã£ããã£ãåæããããã®ã·ã¹ãã ã§ã®åé¡åã®å®çšçãªã¢ããªã±ãŒã·ã§ã³ã®ããã€ãã®åŽé¢ã«ã€ããŠèª¬æããŸãã æ©æ¢°åŠç¿ã¿ã¹ã¯ã®ã³ãŒãäŸã瀺ããŸããããã¯ãã€ã³ã¿ãŒãããäžã®çµ±èšã®ã°ããŒãã«ãªåæãšã倧èŠæš¡ãªããŒã¿ã«ã§ã®è¡åèŠå ã®åé¡ã«é¢ããããŒã«ã«ãªåé¡ã®äž¡æ¹ã«ç©æ¥µçã«äœ¿çšãããŠããŸãã
2.確çè«ã®ããã€ãã®æ¹æ³
äž»ãªåé¡ã¯ã確ççããã»ã¹ïŒãµã€ã蚪åè ã®ã¢ã¯ãã£ããã£ïŒã§ã¯ãäºåã«ã©ã³ãã å€æ°ã®å€ã決å®ããããšãã§ããªããšããäºå®ã§ãã ãã ããåå€ã®ç¢ºçãæšå®ã§ããŸãã ããã«ãæ©æ¢°åŠç¿ã®æ¹æ³ã䜿çšãããšããã®å€æ°ãŸãã¯ãã®ã©ã³ãã å€æ°ãæå³ãæã€çç±ãç解ããããšãã§ããŸãã
éåžžã«éãè¡šçŸãããèŠåæ§ãæã€ç¢ºççããã»ã¹ããããŸããããšãã°ããªãã¶ãŒããŒã¯æ°åã®è©Šè¡ãèšé²ããŸããã 芳枬ã®é·ãæéå šäœã«ããã£ãŠãã©ã³ãã å€æ°ãçããååžãæã€4ã€ã®å¯èœãªå€ããåããªãããšãæããã«ãªã£ããšããŸãã ãããã®å€ã®1ã€ã®éããã¹ãŠã®æ°ã®çŽ4åã«ãªããšä»®å®ããããšã¯è«ççã§ãã éããŸãåæ§ã§ãã1ã€ã®ã°ã«ãŒãã®å€ã®æ°ã«4ãæãããšããã¹ãŠã®ãªããžã§ã¯ãã®ããããã®æ°ãåŸãããŸãã
åæ§ã«ãïŒã¢ã³ãã«ã«ãæ³ã«åŸã£ãŠïŒè€éãªå³åœ¢ã®è¿äŒŒé åãç¹å®ã§ããŸãããã®ç¹ã®ãããæ°ãã©ã³ãã ãªç¹ã®ç·æ°ãããã³è€éãªå³åœ¢ãå æ¥ãã空éã®é åãããã£ãŠããå Žåã è€éãªå³ã®ãããæ°ããã€ã³ãã®ç·æ°ã§é€ç®ãããšãããã¯ç©ºéå ã®å³ãå ããããããã®éšåã«ãªããšçŽæçã«æããããŸãã ããã«ããã€ã³ãããã®è€éãªæ°åã«é¥ãå¯èœæ§ããããŸãã
ç°¡åãªäŸãèããŠã¿ãŸãããã 巚倧ãªãã¥ãŒã¹ããŒã¿ã«ã«4ã€ã®äž»èŠãªãããã¯ããããŸãã äžéšã®ãŠãŒã¶ãŒã¯ããµã€ãã«ã¢ã¯ã»ã¹ããŠããããã¯ã®ãã¡ã®1ã€ã ããå³å¯ã«èŠãŠããŸãã ãããã®éã®ååžã¯çãããã€ãŸã ã¯ã©ã¹ã¿ãŒã®1ã€ã®ãããã¯ã衚瀺ããã確çã ããããæ°ãããã€ã³ãã®æ£ç¢ºãªäœçœ®ã¯äºåã«ããã£ãŠãããããããã®ã¯ã©ã¹ã¿ãŒã®1ã€ã«è¡šç€ºãããããšãããã£ãŠããã ãã§ãïŒéå¿ã¯å€§ããªç·è²ã®ç¹ãšããŠè¡šç€ºãããŸãïŒã

ååšããªããããã¯ã衚瀺ããããšã¯äžå¯èœã§ãïŒååšããªããããã¯ã衚瀺ããã«ã¯ã©ãããã°ããã§ããïŒã ãã®ç¢ºçã¯ãŒãã§ãã ã©ã®ãã€ã³ãããã®ã¹ããŒã¹ã«ã®ã¿å±ããŸãã ç¹å®ã®ã¯ã©ã¹ã¿ãŒã«å ¥ã確çã¯1/4ã§ãã å°ãªããšã1ã€ã®ã¯ã©ã¹ã¿ãŒã«è©²åœãã確çã¯1ïŒãã¹ãŠã®ã€ãã³ãã®ç¢ºçã®åèšïŒã«çãããªããŸããããã¯ããã€ã³ããå¿ ç¶çã«ãããã®ããããã«è©²åœããããã§ãã ãã€ã³ããé£ç¶ããŠ1ã€ã®ã¯ã©ã¹ã¿ãŒã«æ°åå ¥ã確çã¯ããããã®ã€ãã³ãã®ç¢ºçã®ç©ã«çãããªããŸãã ããã¯ãå®éšçããã³æ£åŒã«æ¬¡ã®ããã«èšè¿°ãããŠããŸãã

ããããæ£èŠååžã®å Žåããããã«ç°ãªãäºæž¬æŠè¡ã䜿çšãããŸãã å¹³åå€ãç¹å®ããå¿
èŠããããŸãã ãããæãå¯èœæ§ãé«ãããšã 以äžã¯ãç確çååžãšæ£èŠååžã®2ã€ã®èŠèŠè¡šç€ºã§ãã

åºããã®åŒ·ããç解ããã«ã¯ãåæ£ïŒãŸãã¯æšæºåå·®ãšåŒã°ããã®ãªã·ã£æåã·ã°ãã§ç€ºãããå¹³æ¹æ ¹ïŒãèå¥ããå¿
èŠããããŸãã é¢æ£ç¢ºçå€æ°ã®å€ãäºæž¬ããã«ã¯ãããã¯éåžžã«éèŠãªææšã§ããããã¯ãã»ãšãã©ã®å€ïŒæ£èŠååžã®å ŽåïŒãã·ã°ãå
ã«ããããã§ãã
èšãæãããšãæ£èŠååžã®äžã§ç®è¡å¹³åãæåŸ ãããå ŽåïŒæ°åŠçãªæåŸ ã«çããïŒã蚱容誀差ïŒäžæ£ç¢ºãŸãã¯èª€å·®ïŒãå°ãªããšãçŽ1ã·ã°ãã«ãªãå Žåãã»ãšãã©ã®å ŽåïŒçŽ68ïŒ ïŒã«æ£åžžã«æšæž¬ãããŸãã åæ£ã®ã¬ãã«ãç°ãªãã©ã³ãã å€æ°ãèŠèŠçã«è¡šç€ºããŸããæåã¯åæ£ãå°ããããã®åŸæããã«å¢å ããŸãã èŠèŠã®å©äŸ¿æ§ã®ããã«ãæ°åŠçæåŸ ãå¢å ããŸãã

é¢æ£ç¢ºçå€æ°ã«ã€ããŠè©±ããŠããã®ã§ãæ°åŠçæåŸ
å€åŒã®ä»£ããã«ç®è¡å¹³åå€ã®åŒã䜿çšããããšã¯èš±å®¹ãããŸãã äžèšã®çç±ã«ããã以äžã«ç€ºãåŒã䜿çšããŠã2ä¹å€ãšãã®ç¢ºçã®ç©ãèšç®ããªãããã«ããŠããããããã®ç©ã®åèšãã2ä¹æ°åŠçæåŸ
å€ãæžç®ã§ããŸãã æ£èŠååžé¢æ°ãšããã«å¿
èŠãªå€æ°ïŒãããã®èšç®åŒïŒã瀺ããŸãã

ãããããã¹ãŠãåžžã«äºæž¬ã§ãããšã¯éããŸããã åœç¶ãã©ã³ãã å€æ°ã®ç¢ºçã¯ããŸããŸã§ãã ãã¹ãŠã®ããã»ã¹ãã¬ãŠã¹ååžãŸãã¯ç確çååžã«ãªãããã§ã¯ãããŸããã å€ãã®å Žåãæéã®çµéã«äŒŽã確çã®å€åãèšé²ããããšãå¯èœã§ãã äžéšã®ã¡ããªã¯ã¹ã¯äºæž¬äžå¯èœãªæ¹æ³ã§å€ãå€æŽã§ããŸãããããã¯æããã«ç¢ºçã«åœ±é¿ããŸãã 2ã€ã®ã¡ããªãã¯ãäžåçã«æé·ããæé·åŸã«å ã®å€ã«æ»ã£ãå Žåã®å€ã®å€åã®äŸïŒ

ãã®çµæãå€ãã®ããã»ã¹ã§ãçµæïŒãã€ã³ãã®å€èŠ³ïŒãåçã«åæ£ãããªãå ŽåããããŸãã æããã«ã次ã®äŸã§ã¯ãã¯ã©ãŠãã空éã«åäžã«åæ£ããŠåŒã³åºãããšã¯ã§ããŸããã æ確ã«ããããã«ããã®èŒªéãåŒçšããŸãã

ååžãç°ãªã倧éã®ããŒã¿ã®åæã§ã¯ãæ©æ¢°åŠç¿ã圹ç«ã¡ãŸãã å芳枬ã«ã¯å€§ããªç¹åŸŽãã¯ãã«ããããŸãã ããšãã°ãæ¥æ§åŒåžåšãŠã€ã«ã¹ææçã®èšºæã§ã¯ãäœæž©ãªã©ã®ææšããã䜿çšãããŸãã é©åãªæ©åšã§å®¢èŠ³çã«æž¬å®ããããšã¯éåžžã«ç°¡åã§ãã æããã«ã2ã€ã®ã°ã«ãŒãã®äººã
ïŒå¥åº·ããã³æ¥æ§åŒåžåšãŠã€ã«ã¹ææçïŒã®äœæž©ã®èšè¿°çµ±èšãèŠãã°ããã®ææšã®éããç解ããã®ã¯éåžžã«ç°¡åã§ãã ãã¡ãããä»ã®å€ãã®çŸæ£ã§ã¯çºç±ã®çç¶ãçºçããïŒãŸãã¯ååšããªãïŒå¯èœæ§ãããããã枬å®åºæºã ãã§ã¯ååã§ã¯ãããŸããã ãããã£ãŠãææšã®èšå€§ãªãªã¹ãïŒäºæž¬åã®ãã¯ãã«ïŒã客芳çã«æž¬å®ããå¿
èŠããããŸãã åãã¯ã¿ãŒã«ã¯ãå¥åº·ãŸãã¯ç
æ°ã®ã©ãã«ãå¿
èŠã§ãã ããã¯ããããã説æããæ©æ¢°åŠç¿æ¹æ³ã®ããŒã¿æºåã®äžè¬çãªååã§ãã
3.äºå調æ»
åæã®æºå段éã§ã¯ãããŒã¿ã»ã³ã¿ãŒå ã®ãµãŒããŒã®é¢äžãå¿ ãããå¿ èŠã§ã¯ãªããããããŒã«ã«ã³ã³ãã¥ãŒã¿ãŒã§å®è¡ãããŸãã æãäžè¬çãªããŒã¿åæããŒã«ã®1ã€ã¯ãRããã³Pythonããã°ã©ãã³ã°èšèªïŒJupyterãPandasãNumPyãããã³SciPyãšçµã¿åããããã®ïŒã§ãã ãã§ã«å®è£ ãããŠããè±å¯ãªæ°åŠé¢æ°ã®ã»ãããšãæ å ±ãèŠèŠåããããŒã«ããããŸãã
äºå調æ»ã®æ®µéã§ãåé¡ã«å¿ èŠãªæ å ±ãåéããå¿ èŠããããŸãã ããã¯åžžã«ç¹åŸŽãã¯ãã«ã§ãã æ°å€ïŒéåžžã¯DoubleããŒã¿åïŒã ãã®æ®µéã§ã¯ãå€ãååŸããããšãäžå¯èœãªå Žåã«åéããã³ã¢ã¯ã·ã§ã³ã®æ¹æ³ãéžæãããŸãïŒæ¬ æå€ãç®è¡å¹³åãŸãã¯äžå€®å€ã«çœ®ãæããããšã蚱容ãããå ŽåããããŸãïŒã
ã¡ããªãã¯ïŒäºæž¬åïŒã¯ãçŸè±¡ã®ãã®éšåã®æ¬è³ªã客芳çã«åæ ããæ°å€ã§ãªããã°ãªããŸããã ãã®ãããªæž¬å®åºæºã¯æž¬å®å¯èœã§ããã枬å®å€èªäœã¯åçŸå¯èœã§ãïŒåäœäžã®æž¬å®ããã€ã¹ã䜿çšããã°èª°ã§ãå®éšãç¹°ãè¿ããåãææšãååŸã§ããŸãïŒã çŽæçã«ã¯ãç°ãªãã°ã«ãŒãã®ã¡ããªãã¯ã®å€ã®å·®ã倧ããã»ã©ãåé¡ã容æã«ãªããšäºæ³ãããŸãã æãçæ³çãªã±ãŒã¹ã§ã¯ããããã¯äº€å·®ããŸããïŒäžæ¹ã®æ倧å€ãä»æ¹ã®æå°å€ããæããã«å°ããïŒã
ãã®æç¹ã§è¿œå ã®ãã§ãã¯ãå¿ èŠã«ãªãå ŽåããããŸãã éåžžã«å€ãã®ãµãŒãããŒãã£ã®ã©ã€ãã©ãªãšãœãããŠã§ã¢è£œåã䜿çšããŠå®è£ ãããŠããŸãã ã€ã³ããŒããããã¢ãžã¥ãŒã«ã®æ°ãç¹ã«äžç®ã§ç°ãªãå®å ïŒMystemãSeleniumãªã©ïŒãèŠãã®ã楜ããå ŽåããããŸãã 仮説ã確èªãŸãã¯åè«ããããŸããŸãªå®éšãå®è¡ã§ããããšã¯è«ççã§ãã ã°ã«ãŒãã«åããŠæ¡ä»¶ã泚ææ·±ãç£èŠããããã«å¿ããŠã¡ããªãã¯ãå€åããããšãæåŸ ããŸãã
è¡åèŠå ãåæããããã®ã·ã¹ãã ã®è©³çŽ°ã«ã€ããŠè©±ãå Žåããããã®äœæ¥ã®ããžãã¯ã¯ãåéãããããŒã¿ããã§ã«ã¯ãªãŒã³åããã³æ€èšŒãããŠããããšãæå³ããŸãã çæ³çã«ã¯ãã¢ããªã±ãŒã·ã§ã³èªäœãããŒã¿åéã®å質ãæ åœããå¿ èŠããããŸãã ããŒã¯ããããã ãã«æ®ããŸãïŒåãã¯ãã«ã¯ããããå±ããã¯ã©ã¹ãããŒã¯ããŸãïŒã ã¢ããªã±ãŒã·ã§ã³ããã§ã«ããŒã¿ãããŒã¯ã¢ããããŠããå¯èœæ§ããããŸãïŒããšãã°ãããŒã¿ããŒã¹ã«ã¬ã³ãŒãã«ãªãã¬ã³ãŒããæ¢ã«ãããŸãïŒè£œåãè³Œå ¥ãããã©ããïŒã ãã¡ãããããã¯ããã®ã€ãã³ãã®å¯èœæ§ãããã«äºæž¬ããããæãéèŠãªäºæž¬å åãç¹å®ãããããããã«å¿ èŠã§ãã
å€ãã®å ŽåãããŒã¿ã¯CSVãŸãã¯libsvm圢åŒã®éåžžã®ããã¹ããã¡ã€ã«ã«ä¿åãããŸãã ããã«ãããRãšPythonïŒPandasãNumPyïŒã䜿çšããŠããããç°¡åã«åŠçã§ããŸãã å Žåã«ãã£ãŠã¯ãããŒã¿ããŒã¹ã«é 眮ããå¿ èŠããããŸãã ãŸããå Žåã«ãã£ãŠã¯ãåæ£ã³ã³ãã¥ãŒãã£ã³ã°ãå¿ èŠã«ãªãããšããããŸãã 巚倧ãªããŒã¿ã«ãã°ããŒãã«ãªçµ±èšã·ã¹ãã ã§ã¯ãéåžžã«å€§ããªãããªãã¯ã¹ãååŸãããŸãã ããã«ãããéåžžã«åºãããŒãã«ïŒå€æ°ã®å±æ§ãæã€å€æ°ã®ã¿ãã«ïŒã«èšå€§ãªæ°ã®ãªãã¶ããŒã·ã§ã³ãä¿åããã·ã¹ãã ãéžæããåé¡ãçããŸãã
æãããåŠçé床ãéåžžã«éãç¹æ®ãªåæãœãªã¥ãŒã·ã§ã³ã«æ³šæãæãããšã¯çã«ããªã£ãŠããŸãã ClickHouseïŒåæããŒã¿ããŒã¹ç®¡çã·ã¹ãã ïŒãªã©ã®ãã¯ãããžãŒã䜿çšãããšãããã€ãã®éèŠãªææšãäºåã«åæããããŒã¿èªäœãæºåã§ããŸãã ãããŠä»ãç§ãã¡ã¯é«ãããã©ãŒãã³ã¹ã ãã§ãªããçµ±èšãæäœããããã®å€ãã®äŸ¿å©ãªæ©èœã ãã§ãªããè¿œå æ©èœãããšãã°ããŒã¿ãšã¯ã¹ããŒã圢åŒïŒJSONãšXMLãå«ãïŒãŸãã¯get-requestïŒ httpïŒ // localhostïŒ8123 /ïŒquery = Q ïŒãQã®ä»£ããã«æ¬¡ã®SQLã¹ããŒãã¡ã³ãããããŸãã
SELECT page, COUNT() AS views, uniqCombined(uuid) AS users FROM example.page_views GROUP BY page FORMAT CSVWithNames;
ããŒã¿ã®æºåãšæ€èšŒã¯éåžžã«æ·±å»ãªããã»ã¹ã§ããã圌ãã¯ããã«éåžžã«æ³šæãæã£ãŠããŸãã ããã€ãã®èª¿æ»ãè¡ã£ãåŸãæ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã®éžæãšãäžèšã®ããŒã«ã®éžæã«é¢ãããã詳现ãªåæãå§ãŸããŸãã æé©ãªåé¡ã¢ã«ãŽãªãºã ãéžæãã段éã§ããåæããŒã¿ã®æ€èšŒãšæ°ããäºæž¬å€æ°ãèŠã€ããè©Šã¿ã¯ç¶ç¶ãããŸãã ãããã«ãããå€ãã®ãåé¡ã®é©ç°ãã¯ãããã€ãã®èŠéãããŸãã¯ãã€ãºã®å€ãäºæž¬åã«ãã£ãŠç°¡åã«èª¬æãããŸãã å Žåã«ãã£ãŠã¯ãåé¡åã®é åãäœæãã察å¿ãããã©ã¡ãŒã¿ãŒã䜿çšããŠååé¡åã®æ£ããæäœãåæããããšãã§ããŸãã
import pylab import pandas as pd import numpy as np import xgboost as xgb import matplotlib.pyplot as plt from sklearn.cluster import KMeans from mpl_toolkits.mplot3d import Axes3D from sklearn.linear_model import SGDClassifier from sklearn.neural_network import MLPClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.ensemble import GradientBoostingClassifier from sklearn.linear_model import LogisticRegression from sklearn.tree import DecisionTreeClassifier from sklearn.svm import SVC from sklearn.metrics import accuracy_score from IPython.core.display import display, HTML # # # classifiers = [ LogisticRegression(max_iter=200, penalty="l2"), SGDClassifier(loss="hinge", penalty="l2"), MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(3, 4)), RandomForestClassifier(n_estimators=60, max_depth=5), GradientBoostingClassifier(n_estimators=180, learning_rate=1.0, max_depth=4), DecisionTreeClassifier(), SVC(), ] # # # result = [] for classifier in classifiers: classifier.fit(features, classes) report = accuracy_score(testClasses, classifier.predict(testFeatures)) result.append({'class' : classifier.__class__.__name__, 'accuracy' : report}) display(HTML('<h2>Result</h2>')) display(pd.DataFrame(result)) # # # model = xgb.XGBClassifier() model.fit(features, classes) pylab.rcParams['figure.figsize'] = 3, 3 plt.style.use('ggplot') pd.Series(model.feature_importances_).plot(kind='bar') plt.title('Feature Importances') plt.show()

ã芧ã®ãšãããåºæ¬çãªåé¡ã¢ã«ãŽãªãºã ã¯äººæ°ã®ããã©ã€ãã©ãªã«æ¢ã«å®è£ ãããŠãããããã»ãã®æ°è¡ã®ã³ãŒãã§éåžžã«ç°¡åãã€è¿ éã«äœ¿çšã§ããŸãã ããã«ãäžéšã®ã¢ãã«ã§ã¯ãé©åãªåé¡åïŒRandomForestClassifierãGradientBoostingClassifierãXGBClassifierãªã©ïŒã䜿çšããŠäºæž¬åã®æææ°Žæºã®ãã£ãŒããèŠããšéåžžã«äŸ¿å©ã§ãã ã¯ã©ã¹ã¿ãŒåæãªã©ãä»ã®ã¿ã€ãã®ããŒã¿åæãšèŠèŠåãå®è¡ãããšéåžžã«äŸ¿å©ã§ãã
import pylab import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.cluster import KMeans from mpl_toolkits.mplot3d import Axes3D centroids = KMeans(n_clusters=4, random_state=0).fit(features).cluster_centers_ ax = Axes3D(pylab.figure()) ax.scatter(features[:, 0], features[:, 1], features[:, 2], c='blue', marker='p', s=8) ax.scatter(centroids[:, 0], centroids[:, 1], centroids[:, 2], c='g', marker='o', s=80) plt.show()
4.å®æããã¢ãã«ã®äœæ
å¿ èŠãªãã©ã¡ãŒã¿ãŒãåããé©åãªã¢ã«ãŽãªãºã ãããŒã«ã«ã·ã¹ãã ã§éžæãããåŸãåæ£ã³ã³ãã¥ãŒãã£ã³ã°ã®æºåãéå§ãããŸãããã®ã¿ã¹ã¯ã¯ãã€ãã³ãã®ã¯ã©ã¹ãäºåã«äºæž¬ããããšã§ãã ããã¯ããã€ããªåé¡ïŒã€ãã³ããçºçãããã©ããïŒã ãã§ãªãããã«ãã¯ã©ã¹åé¡ã«ããªããŸãã Apache Sparkã¯ããã®ãããªåæ£ã³ã³ãã¥ãŒãã£ã³ã°ã¿ã¹ã¯ã«ãã䜿çšãããŸãïŒããŒãžã§ã³2.0.2ã®Scalaã«äŸã瀺ããŸãïŒã ãã¡ãããæåã®ãã¹ãå®è¡ã§ã¯ãæ°ããããŒã¿ã§éžæãããœãªã¥ãŒã·ã§ã³ã®éåžžã«åŸ¹åºçãªãã§ãã¯ãå¿ èŠã§ãã
import org.apache.spark.ml.classification.MultilayerPerceptronClassifier import org.apache.spark.ml.evaluation.MulticlassClassificationEvaluator val train = spark.read.format("libsvm").load(file) val test = spark.read.format("libsvm").load(fileTest) val trainer = new MultilayerPerceptronClassifier().setLayers(Array[Int](3, 5, 4, 4)).setBlockSize(128).setSeed(1234L).setMaxIter(100) val result = trainer.fit(train).transform(test) val predictionAndLabels = result.select("prediction", "label") val evaluator = new MulticlassClassificationEvaluator() evaluator.setMetricName("accuracy").evaluate(predictionAndLabels)
æ€èšŒããã³èª¿æŽããã»ã¹ã®æåŸã«ãæ©æ¢°åŠç¿ã¢ã«ãŽãªãºã ã®æçµããŒãžã§ã³ãäœæ¥ãéå§ããŸãã èšå€§ãªéã®ããŒã¿ãããŒã¯ãããŠãŒã¶ãŒãã¬ã³ããªãŒãªã€ã³ã¿ãŒãã§ãŒã¹ã§çµæã衚瀺ããŸãã èŠèŠåã¯å¥ã®ã¢ããªã±ãŒã·ã§ã³ãæ åœããŸãïŒå€ãã®å Žåãããã¯Webã¢ããªã±ãŒã·ã§ã³ãŸãã¯ããŒã¿ã«ã®äžéšã§ãïŒã ååãšããŠãã¢ããªã±ãŒã·ã§ã³ã¯åæã·ã¹ãã ã«ã€ããŠäœãç¥ãããããŒã¿ããŒã¹ãžã®ã€ã³ããŒããŸãã¯APIãä»ããŠã®ã¿æ¥ç¶ãããŸãã ç§ã®å人çãªçµéšã§ã¯ãããã¯ãšã³ãçšã®æåãªãã¯ãããžãŒã¹ã¿ãã¯ïŒPHP7ãYii 2ãLaravelãMySQLãRedisãMemcachedãRabbitMQïŒãšãèŠèŠçãªãã¬ãŒã³ããŒã·ã§ã³çšã®ã©ã€ãã©ãªã»ããïŒããšãã°ãChart.jsãªã©ïŒã¯éåžžãå¥ã®è¡šç€ºã¢ããªã±ãŒã·ã§ã³ã«äœ¿çšãããŸãã
ãã®ããã«ãè¡åå åã®åæã·ã¹ãã ãäœæããåºæ¬çãªã¹ããããèŠãŸããã ä»ã®ããŒã¿ã»ãããåé¡ããã·ã¹ãã ã¯ãåæ§ã®åçã§æ©èœããŸãã æãåºæ¬çãªæé ã¯ãé©åãªã¡ããªã¯ã¹ãé©åãªåœ¢åŒã§åéãïŒããã¯ã¿ãŒã«ãããã€ããããšåŒã°ããïŒãé©åãªãã©ã¡ãŒã¿ãŒã䜿çšããŠé©åãªã¢ã«ãŽãªãºã ãéžæããããšã§ãã ãã¡ãããåé¡åšã®æ£ããåäœãæ€èšŒããããšã¯éèŠã§ãã
ç§ã¯ãã®æ©äŒã«ïŒä»æ¥ã®æ¥ä»ã§ïŒãæ¥å¹Žã®æ°å¹Žãåãã£ãŠèŠªæãªãèªè ã«ç¥çŠãã人çã®ããããåéã§å¹žããšæåããç¥ãããŸãã