念ã®ãããGitHubãæ倧ã®ãœãããŠã§ã¢éçºãã©ãããã©ãŒã ã®1ã€ã§ãããå€ãã®äººæ°ã®ãããªãŒãã³ãœãŒã¹ãããžã§ã¯ãã®æ¬æ å°ã§ããããšãå¿ããŸããã Explore GitHubããŒãžã§ã¯ã人æ°ãé«ãŸã£ãŠãããããžã§ã¯ãã奜ããªäººã賌èªããŠãããããžã§ã¯ããããã³æ¹åãããã°ã©ãã³ã°èšèªããšã«ã°ã«ãŒãåããã人æ°ã®ãããããžã§ã¯ãã«é¢ããæ
å ±ãèŠã€ããããšãã§ããŸãã
ããªããèŠã€ããããªãã®ã¯ãããªãã®æŽ»åã«åºã¥ãããããžã§ã¯ãã®å人çãªæšèŠã§ãã ãŠãŒã¶ãŒã¯æ¯æ¥ããŸããŸãªãããžã§ã¯ãã«èšå€§ãªæ°ã®æãä»ããŠããããã®æ
å ±ã䜿çšããŠæšå¥šäºé
ãç°¡åã«äœæã§ãããããããã¯ããé©ãã¹ãããšã§ãã
ãã®èšäºã§ã¯ãã¢ã€ãã¢ããå®è£
ãŸã§GitHubã®æšå¥šã·ã¹ãã ãæ§ç¯ããçµéšãå
±æããŸãã
ã¢ã€ãã¢
åGitHubãŠãŒã¶ãŒã¯ã奜ããªãããžã§ã¯ãã«ã¹ã¿ãŒãä»ããããšãã§ããŸãã åãŠãŒã¶ãŒãã©ã®ãªããžããªãè©äŸ¡ãããã«ã€ããŠã®æ
å ±ããããããåæ§ã®ãŠãŒã¶ãŒãèŠã€ããŠããŸã èŠãããšããªããããããªãã䌌ã趣å³ã®ãŠãŒã¶ãŒããã§ã«æ°ã«å
¥ã£ãŠãããããžã§ã¯ãã«æ³šæãæãããšããå§ãããŸãã ã¹ããŒã ã¯å察æ¹åã«æ©èœããŸãããŠãŒã¶ãŒããã§ã«æ°ã«å
¥ã£ãŠãããããžã§ã¯ãã«äŒŒããããžã§ã¯ããèŠã€ããŠã圌ã«æšå¥šããããšãã§ããŸãã
èšãæãããšãã¢ã€ãã¢ã¯æ¬¡ã®ããã«å®åŒåã§ããŸãïŒãŠãŒã¶ãŒãšèšå®ããã¹ã¿ãŒã«é¢ããããŒã¿ãååŸãããã®ããŒã¿ã«å調ãã£ã«ã¿ãªã³ã°ã¡ãœãããé©çšãããã¹ãŠãWebã¢ããªã±ãŒã·ã§ã³ã«ã©ããããŸãã
ããŒã¿åé
GHTorrentã¯ããããªãã¯GitHub APIã䜿çšããŠååŸããããŒã¿ãåéããæ¯æã®MySQLãã³ããèæ
®ããŠããŒã¿ãžã®ã¢ã¯ã»ã¹ãæäŸããçŽ æŽããããããžã§ã¯ãã§ãã ãããã®ãã³ãã¯GHTorrentãµã€ãã®ããŠã³ããŒãã»ã¯ã·ã§ã³ã«ãããŸãã
åãã³ãå
ã«ã¯ãããŒã¿ããŒã¹ã¹ããŒãã®èª¬æãå«ãSQLãã¡ã€ã«ãšãããŒãã«ã®ããŒã¿ãå«ãããã€ãã®CSVãã¡ã€ã«ããããŸãã åã®ã»ã¯ã·ã§ã³ã§è¿°ã¹ãããã«ãç§ãã¡ã®ã¢ãããŒãã¯å調ãã£ã«ã¿ãªã³ã°ã«åºã¥ããŠããŸãã ãã®ã¢ãããŒãã¯ããŠãŒã¶ãŒãšãã®å¥œã¿ã«é¢ããæ
å ±ããŸãã¯GitHubã®èŠ³ç¹ããèšãæãããšããŠãŒã¶ãŒãããŸããŸãªãããžã§ã¯ãã«èšå®ãããŠãŒã¶ãŒãšã¹ã¿ãŒã«é¢ããæ
å ±ãå¿
èŠã§ããããšãæå³ããŸãã
幞ããªããšã«ãäžèšã®ãã³ãã«ã¯ã次ã®ãã¡ã€ã«ã«å¿
èŠãªæ
å ±ããã¹ãŠå«ãŸããŠããŸãã
watchers.csv
ã¯ããªããžããªãšãããã«æãä»ãããŠãŒã¶ãŒã®ãªã¹ããå«ãŸããŠããŸãusers.csv
ã¯ãgithubã®ãŠãŒã¶ãŒIDãã¢ãšãŠãŒã¶ãŒåãå«ãŸããŠããŸãprojects.csv
ã¯ã projects.csv
ã«å¯ŸããŠåãããšãè¡ããŸãã
ããŒã¿ããã詳ããèŠãŠã¿ãŸãããã 以äžã¯watchers.csv
ãã¡ã€ã«ã®å§ãŸãã§ãïŒäŸ¿å®äžãååãè¿œå ãããŠããŸãïŒïŒ
id = 1ã®ãããžã§ã¯ãã¯ãid = 1ã2ã4ã6ã7ã...ã®ãŠãŒã¶ãŒã«å¥œãããŠããããšãããããŸããã¿ã€ã ã¹ã¿ã³ãã®ããåã¯å¿
èŠãããŸããã
è¯ãã¹ã¿ãŒãã§ãããã¢ãã«ã®æ§ç¯ã«ç§»ãåã«ãããŒã¿ããã詳现ã«èª¿ã¹ãŠãå Žåã«ãã£ãŠã¯ã¯ãªãŒã³ã«ããããšããå§ãããŸãã
ããŒã¿ãã€ãã³ã°
ããã«æãæµ®ãã¶èå³æ·±ã質åã¯ããåãŠãŒã¶ãŒãå¹³åããŠäœåã®æãå¹³åããŸãããïŒãã§ããç°ãªãæ°ã®æãä»ãããŠãŒã¶ãŒã®æ°ã瀺ããã¹ãã°ã©ã ã以äžã«ç€ºããŸãã
ããŒã...ããã¯éåžžã«æçã«èŠããŸããã 倧å€æ°ã®ãŠãŒã¶ãŒã¯éåžžã«å°æ°ã®æãè©äŸ¡ããŠããããã«èŠããŸãããäžéšã®ãŠãŒã¶ãŒã¯20äžãè¶
ãããšè©äŸ¡ããŠããŸãïŒãããïŒïŒã 以äžã®ããŒã¿ã®èŠèŠåã«ãããä»®å®ã確èªãããŸãã
ãã¹ãŠãåæããŸãããŠãŒã¶ãŒã®1人ã20äžå以äžã®æãä»ããŸããã ãŸãã倧éã®æŸåºãèŠãããŸã-ãŠãŒã¶ãŒã¯25,000以äžã§ãã ç¶è¡ããåã«ããã®ãŠãŒã¶ãŒã20äžã®æãæã€ãŠãŒã¶ãŒã確èªããŸãããã ããã¯ããŒã 4148ã®ããŒããŒãŠãŒã¶ãŒã«äŒããŸãããã ãã®èšäºã®å·çæç¹ã§ãããŒãžã¯404çªç®ã®ãšã©ãŒãè¿ããŸãã æäžãããæã®æ°ã®éã¡ããªã¹ãã¯ã 46,000åã®æãæã€ã話ãããšããååã®StarTheWorldãæã€ãŠãŒã¶ãŒã§ãïŒããŒãžã404çªç®ã®ãšã©ãŒãè¿ããŸãïŒã
ããã§ãå€æ°ãææ°ååžã«åŸãããšãæããã«ãªããŸããïŒãã©ã¡ãŒã¿ãŒãèŠã€ããããšã¯èå³æ·±ãã¿ã¹ã¯ã«ãªãå¯èœæ§ããããŸãïŒã éèŠãªèŠ³å¯çµæã¯ããŠãŒã¶ãŒã®çŽåæ°ã5ãããžã§ã¯ãæªæºãšè©äŸ¡ããããšã§ãã ãã®èŠ³å¯ã¯ãã¢ããªã³ã°ãéå§ãããšãã«åœ¹ç«ã¡ãŸãã
ãªããžããªãèŠãŠãæã®æ°ã®ååžãèŠãŠã¿ãŸãããã
ãŠãŒã¶ãŒã®å Žåãšåæ§ã«ã1ã€ã®éåžžã«é¡èãªãµãŒãžããããŸã-20äžä»¥äžã®æãæã€freeCodeCampãããžã§ã¯ãã§ãïŒ
察æ°å€æåŸã®ãªããžããªå
ã®ã©ã³ãã ãªæ°ã®æã®ââãã¹ãã°ã©ã ã以äžã«ç€ºããåã³ææ°ååžãåŠçããŠããããããæ¥éäžããŠããããšã瀺ããŠããŸãã ã芧ã®ãšããããªããžããªã®ããäžéšã«10å以äžã®æãä»ããŠããŸãã
ããŒã¿ã®ååŠç
ã©ã®ãããªããŒã¿æäœãè¡ãå¿
èŠãããããç解ããã«ã¯ã䜿çšããå調ãã£ã«ã¿ãªã³ã°ã¡ãœããããã詳ãã調ã¹ãå¿
èŠããããŸãã
ã»ãšãã©ã®å調ãã£ã«ã¿ãªã³ã°ã¢ã«ãŽãªãºã ã¯ãè¡åã®å æ°å解ã«åºã¥ããŠããããŠãŒã¶ãŒã®å¥œã¿ã®è¡åãå æ°å解ããŸãã å æ°å解ã®éçšã§ã補åã®é ãããç¹æ§ãšãããã«å¯ŸãããŠãŒã¶ãŒã®åå¿ããããŸãã ãŠãŒã¶ãŒããŸã è©äŸ¡ããŠããªã補åã®ãã©ã¡ãŒã¿ãŒãç¥ã£ãŠããã°ã奜ã¿ã«åºã¥ããŠãŠãŒã¶ãŒã®åå¿ãäºæž¬ã§ããŸãã
ãã®å Žåããµã€ãºmxn
ãããªãã¯ã¹ããããŸããåè¡ã¯ãŠãŒã¶ãŒãè¡šããååã¯ãªããžããªãè¡šããŸãã i
çªç®ã®ãŠãŒã¶ãŒãj
çªç®ã®ãªããžããªã«ã¹ã¿ãŒãèšå®ããå Žåã r_ij
ã¯1ã«çãããªããŸãã
ãããªãã¯ã¹R
ã¯ã watchers.csv
ãã¡ã€ã«ã䜿çšããŠç°¡åã«äœæã§ããŸãã ãã ããã»ãšãã©ã®ãŠãŒã¶ãŒãæãéåžžã«å°ãªãè©äŸ¡ããããšãæãåºããŠãã ããïŒ ããããªæ
å ±ã§ãŠãŒã¶ãŒã®å¥œã¿ã«é¢ããã©ã®ãããªæ
å ±ãèŠã€ããããšãã§ããŸããïŒ å®éãã©ãããããŸããã 奜ããªãã®ã1ã€ã ãç¥ã£ãŠã誰ãã®å¥œã¿ã«ã€ããŠæšæž¬ããããšã¯éåžžã«å°é£ã§ãã
åæã«ãã1ã€æãã®ãŠãŒã¶ãŒã¯ã¢ãã«ã®äºæž¬åã«å€§ããªåœ±é¿ãäžããé床ã®ãã€ãºãçºçãããå¯èœæ§ããããŸãã ãããã£ãŠãæ
å ±ãã»ãšãã©ãªããŠãŒã¶ãŒãé€å€ããããšã«ããŸããã å®éšã§ã¯ãæã®æ°ã30æªæºã®ãŠãŒã¶ãŒãé€å€ãããšè¯ãçµæãåŸãããããšã瀺ãããŠããŸãã é€å€ãŠãŒã¶ãŒã®å Žåãæšå¥šäºé
ã¯ãããžã§ã¯ãã®äººæ°åºŠã«åºã¥ããŠãããè¯ãçµæãåŸãããŸãã
ã¢ãã«ã®æå¹æ§ã®è©äŸ¡
ããã§ãã¢ãã«ã®ããã©ãŒãã³ã¹ãè©äŸ¡ããéèŠãªåé¡ã«ã€ããŠèª¬æããŸãã 次ã®ææšã䜿çšããŸããã
- 粟床ãšãªã³ãŒã«
- äºä¹å¹³åå¹³æ¹æ ¹èª€å·®ïŒRMSEïŒ
ãããŠãã粟床-å®å
šæ§ããšããã¡ããªãã¯ã¯ãç§ãã¡ã®å Žåã«ã¯ããŸã圹ã«ç«ããªããšããçµè«ã«éããŸããã
ããããå§ããåã«ãå¹æãè©äŸ¡ããå¥ã®ç°¡åã§å¹æçãªæ¹æ³-èªåèªèº«ã®ããã®æšå¥šäºé
ãæ§ç¯ããããããã©ãã»ã©è¯ããã䞻芳çã«è©äŸ¡ããããš-ã«èšåããããšã¯çã«ããªã£ãŠããŸãã ãã¡ãããããã¯å士è«æã§èšåãããæ¹æ³ã§ã¯ãããŸããããåæ段éã§ééããé¿ããã®ã«åœ¹ç«ã¡ãŸãã ããšãã°ãããŒã¿ã®å®å
šãªã»ããã䜿çšããŠèªåèªèº«ã®æšå¥šäºé
ãäœæãããšãåãåã£ãæšå¥šäºé
ãå®å
šã«é¢é£ããŠããããã§ã¯ãªãããšãããããŸããã å°æ°ã®æãæã€ãŠãŒã¶ãŒãåé€ãããšãé¢é£æ§ã倧å¹
ã«åäžããŸããã
åã³ãæ£ç¢ºæ§-æ£ç¢ºæ§ãã®ã¡ããªãã¯ã«æ»ããŸãããã ç°¡åã«èšãã°ã2ã€ã®å¯èœãªçµæã®ãã¡ã®1ã€ãäºæž¬ããã¢ãã«ã®ç²ŸåºŠã¯ãäºæž¬ã®ç·æ°ã«å¯Ÿããçã«è¯å®çãªäºæž¬ã®æ°ã®æ¯çã§ãã ãã®å®çŸ©ã¯åŒãšããŠæžãããšãã§ããŸãïŒ
ãããã£ãŠã粟床ãšã¯ãè©Šè¡åæ°ã®åèšã«å¯Ÿããã¿ãŒã²ããã®ãããæ°ã§ãã
å®å
šæ§ãšã¯ããã¹ãŠã®ããŒã¿ã§ã®çã«ããžãã£ããªäºæž¬ã®æ°ãšããžãã£ããªäŸã®æ°ã®æ¯çã§ãã
ç§ãã¡ã®ã¿ã¹ã¯ã«é¢ããŠã¯ã粟床ã¯ããŠãŒã¶ãŒãæãèšå®ããã¬ã³ã¡ã³ããŒã·ã§ã³ã®ãªããžããªã®æ¯çãšããŠå®çŸ©ã§ããŸãã æ®å¿µãªããããã®ã¡ããªãã¯ã¯ããŠãŒã¶ãŒãæ¢ã«è©äŸ¡ãããã®ã§ã¯ãªãããŠãŒã¶ãŒãæãè©äŸ¡ããå¯èœæ§ã®ãããã®ãäºæž¬ããããšãç®çãšããŠãããããããŸãæå³ããããŸããã äžéšã®ãããžã§ã¯ãã«ã¯ããŠãŒã¶ãŒãæ°ã«å
¥ã£ã次ã®ãããžã§ã¯ãã®åœ¹å²ã®åè£ãšãªãäžé£ã®ãã©ã¡ãŒã¿ãŒãããããŠãŒã¶ãŒããããããŸã è©äŸ¡ããŠããªãå¯äžã®çç±ã¯ã圌ããŸã ããããèŠãŠããªãããšã§ãã
ãã®ã¡ããªãã¯ãå€æŽããŠæçšã«ããããšãã§ããŸãããŠãŒã¶ãŒã次ã«è©äŸ¡ããæšå¥šãããžã§ã¯ãã®æ°ã枬å®ããçºè¡ãããæšå¥šã®æ°ã§å²ããšãããæ£ç¢ºãªç²ŸåºŠã®å€ãåŸãããŸãã ãã ããçŸæç¹ã§ã¯ãã£ãŒãããã¯ãåéããŠããªãããã粟床ã¯äœ¿çšãããææšã§ã¯ãããŸããã
ã¿ã¹ã¯ã«é©çšãããå®å
šæ§ãšã¯ããŠãŒã¶ãŒãæãèšå®ããæšå¥šäºé
ã®ãªããžããªã®æ°ãšããŠãŒã¶ãŒãè©äŸ¡ãããã¹ãŠã®ãªããžããªã®æ°ã®æ¯çã§ãã 粟床ã®å Žåãšåæ§ã«ããã®ã¡ããªãã¯ã¯ããŸãæšå¥šãããŸãããããã¯ãæšå¥šäºé
ã®ãªããžããªã®æ°ãåºå®ãããŠããïŒçŸæç¹ã§ã¯100ïŒãããªãã®æ°ã®ãããžã§ã¯ããè©äŸ¡ãããŠãŒã¶ãŒã®ç²ŸåºŠã®å€ããŒãã«è¿ãããã§ãã
äžèšã®èããèæ
®ããŠãã¢ãã«ã®æå¹æ§ãè©äŸ¡ããããã®äž»èŠãªææšãšããŠæšæºåå·®ã䜿çšããããšã決å®ãããŸããã åé¡ã«é¢ããŠã¯ãã¡ããªãã¯ã¯æ¬¡ã®ããã«èšè¿°ã§ããŸãã
èšãæãããšããããžã§ã¯ãã®ãŠãŒã¶ãŒè©äŸ¡ïŒ0ããã³1ïŒãšããªããžããªã«å¯ŸããŠ1ã«è¿ãäºæž¬è©äŸ¡ãšã®éã®æšæºèª€å·®ã枬å®ããŸããããã¯ãã¢ãã«ã«åŸã£ãŠãŠãŒã¶ãŒãè©äŸ¡ããŸãã wã¯ãã¹ãŠã®r_ij = 0
ã«å¯ŸããŠ0ã§ããããšã«æ³šæããŠãã ããã
ãã¹ãŠããŸãšãã-ã¢ããªã³ã°
ãã§ã«è¿°ã¹ãããã«ãæšå¥šã·ã¹ãã ã¯è¡åã®å æ°å解ã«åºã¥ããŠãããããæ£ç¢ºã«ã¯äº€äºæå°äºä¹ïŒALSïŒã¢ã«ãŽãªãºã ã«åºã¥ããŠããŸãã ç§ãã¡ã®å®éšã«ããã°ãè¡åå æ°å解ã¢ã«ãŽãªãºã ãæ©èœããããšã¯æ³šç®ã«å€ããŸãïŒSVDãNNMFïŒã
ALSå®è£
ã¯ãå€ãã®æ©æ¢°åŠç¿ãœãããŠã§ã¢ããã±ãŒãžã§å©çšã§ããŸãïŒããšãã°ã Apache Sparkã®å®è£
ãåç
§ïŒã ã¢ã«ãŽãªãºã ã¯ããµã€ãºmxnã®å
ã®è¡åãããµã€ãºmxk
ãšnxk
2ã€ã®è¡åã®ç©ã«å解ããããšãnxk
ã
ãã©ã¡ãŒã¿k
ã¯ãæ€çŽ¢ããããšããŠãããé ãããããããžã§ã¯ããã©ã¡ãŒã¿ã®æ°ã決å®ããŸãã k
ã®å€ã¯ãã¢ãã«ã®å¹çã«åœ±é¿ããŸãã k
ã®å€ã¯ãçžäºæ€èšŒã䜿çšããŠéžæããå¿
èŠããããŸãã 次ã®ã°ã©ãã¯ããã¹ãããŒã¿ã»ããã®k
å€ã«å¯ŸããRMSEå€ã®äŸåæ§ã瀺ããŠããŸãã å€k=12
ã¯æè¯ã®éžæã®ããã«èŠãããããæçµã¢ãã«ã«äœ¿çšãããŸããã
çµæã®ã¢ã¯ã·ã§ã³ã·ãŒã±ã³ã¹ããŸãšããŠèŠãŠã¿ãŸãããã
watchers.csv
ãã¡ã€ã«ããããŒã¿ãããŒããã30ãããžã§ã¯ãæªæºãšè©äŸ¡ãããã¹ãŠã®ãŠãŒã¶ãŒãåé€ããŸãã- ããŒã¿ããã¬ãŒãã³ã°ã»ãããšãã¹ãã»ããã«åå²ããŸãã
- RMSEãšãã¹ãããŒã¿ã䜿çšããŠãã©ã¡ãŒã¿ãŒ
k
ãéžæããŸãã - å åæ°=
k
ALSã䜿çšããŠããžã§ã€ã³ãããŒã¿ã»ããã§ã¢ãã«ããã¬ãŒãã³ã°ããŸãã
ç§ãã¡ã«åã£ãã¢ãã«ãã§ããããããããšã³ããŠãŒã¶ãŒãå©çšã§ããããã«ããæ¹æ³ã«ã€ããŠè°è«ãå§ããããšãã§ããŸãã èšãæããã°ããã®åšãã«Webã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããæ¹æ³ã
ããã¯ãšã³ã
ããã¯ãšã³ãã§ã§ããããšã®ãªã¹ãã¯æ¬¡ã®ãšããã§ãã
- ãŠãŒã¶ãŒåãååŸããããã®GitHubèªèšŒ
- ãããã¯ããŒã Xã®ãŠãŒã¶ãŒã«100件ã®æšå¥šäºé
ããã ããããªã©ã®ãªã¯ãšã¹ããéä¿¡ããããã®REST API
- æŽæ°ã®ãŠãŒã¶ãŒãµãã¹ã¯ãªãã·ã§ã³ã«é¢ããæ
å ±ã®åé
ãã¹ãŠãçŽ æ©ãç°¡åã«ãããã£ãã®ã§ãéžæã¯DjangoãDjango RESTãã¬ãŒã ã¯ãŒã¯ãReactã®ãã¯ãããžãŒã«äŸåããŠããŸããã
ãªã¯ãšã¹ããæ£ããåŠçããã«ã¯ãGHTorrentã§åä¿¡ããããŒã¿ãä¿åããå¿
èŠããããŸãã äž»ãªçç±ã¯ãGHTorrentãGitHubã®ãŠãŒã¶ãŒIDãšäžèŽããªãç¬èªã®ãŠãŒã¶ãŒIDã䜿çšããŠããããã§ãã ãããã£ãŠã user id <-> user GitHub name
ãã¢ãä¿åããå¿
èŠãããuser id <-> user GitHub name
ã ãªããžããªã«ã€ããŠãåãããšãèšããŸãã
ãŠãŒã¶ãŒãšãªããžããªã®æ°ã¯éåžžã«å€ãïŒãããã2,000äžä»¶ãš6,400äžä»¶ïŒãã€ã³ãã©ã¹ãã©ã¯ãã£ã«å€é¡ã®è²»çšããããããªãã£ããããMongoDBã§å§çž®ã䜿çšãããæ°ãããã¿ã€ãã®ã¹ãã¬ãŒãžãè©Šãããšã«ããŸãã ã
ãã®ãããMongoDBã«ã¯users
ãšprojects
2ã€ã®ã³ã¬ã¯ã·ã§ã³ãããprojects
ã
users
ã³ã¬ã¯ã·ã§ã³ã®ããã¥ã¡ã³ãã¯æ¬¡ã®ãšããã§ãã
{ "_id": 325598, "login": "yurtaev" }
login
ãã£ãŒã«ãã«ãã£ãŠã€ã³ããã¯ã¹ä»ããããã¯ãšãªåŠçãé«éåããŸãã
projects
ã³ã¬ã¯ã·ã§ã³ã®ãµã³ãã«ããã¥ã¡ã³ãã以äžã«ç€ºããŸãã
{ "_id": 32415, "name": "FreeCodeCamp/FreeCodeCamp", "description": "The https://freeCodeCamp.org open source codebase and curriculum. Learn to code and help nonprofits." }
ã芧ã®ãšãããzlibå§çž®ã«ããããã£ã¹ã¯é åã®äœ¿çšçã2åã«ãªããŸãã å§çž®ã®äœ¿çšã«é¢ããæžå¿µã®1ã€ã¯ã¯ãšãªã®åŠçé床ã§ããããå®éšã§ã¯æéãçµ±èšèª€å·®å
ã§å€åããããšã瀺ãããŠããŸãã å§çž®ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ã«é¢ãã詳现ã¯ã ãã¡ããã芧ãã ãã ã
èŠçŽãããšãMongoDBã§ã®å§çž®ã¯ããã£ã¹ã¯é åã®äœ¿çšéã®ç¹ã§å€§å¹
ã«åäžãããšèšããŸãã ãã1ã€ã®å©ç¹ã¯ãã¹ã±ãŒãªã³ã°ã®åçŽãã§ããããã¯ããªããžããªãšãŠãŒã¶ãŒã«é¢ããããŒã¿éã1ã€ã®ãµãŒããŒã«é
眮ãããªããªã£ããšãã«éåžžã«åœ¹ç«ã¡ãŸãã
åäœäžã®ã¢ãã«
ã¢ãã«ã䜿çšããã«ã¯ã2ã€ã®ã¢ãããŒãããããŸãã
- åãŠãŒã¶ãŒã®æšå¥šäºé
ã®äºåçæãšããŒã¿ããŒã¹ãžã®ä¿åã
- ãªã¯ãšã¹ãã«å¿ããæšå¥šäºé
ã®çæã
æåã®ã¢ãããŒãã®å©ç¹ã¯ãã¢ãã«ããããã«ããã¯ãã«ãªããªãããšã§ãïŒçŸæç¹ã§ã¯ãã¢ãã«ã¯1ç§éã«æšå¥šããšã«30ã300ã®ãªã¯ãšã¹ããåŠçã§ããŸãïŒã äž»ãªæ¬ ç¹ã¯ãä¿åããå¿
èŠãããããŒã¿ã®éã§ãã 2,000äžäººã®ãŠãŒã¶ãŒãããŸãã ãŠãŒã¶ãŒããšã«100件ã®æšå¥šäºé
ãä¿æãããšã20åãšã³ããªã«ãªããŸãïŒ ã¡ãªã¿ã«ããããã®2,000äžäººã®ãŠãŒã¶ãŒã®ã»ãšãã©ã¯ãµãŒãã¹ã䜿çšããŸãããã€ãŸããã»ãšãã©ã®ããŒã¿ã¯ãã®ããã«ä¿åãããŸãã æåŸã«ãªããŸããããæšå¥šäºé
ã®äœæã«ã¯æéãããããŸãã
2çªç®ã®ã¢ãããŒãã®é·æãšçæ-æåã®ã¢ãããŒãã®é·æãšçæãåæ ããŠããŸãã ãããããªã³ããã³ãã§æšå¥šäºé
ãäœæããã®ã奜ããªã®ã¯æè»æ§ã§ãã 2çªç®ã®ã¢ãããŒãã§ã¯ãå¿
èŠãªæ°ã®æšå¥šäºé
ãè¿ãããšãã§ããã¢ãã«ãç°¡åã«çœ®ãæããããšãã§ããŸãã
ãã¹ãŠã®é·æãšçæãæ€èšããåŸã2çªç®ã®ãªãã·ã§ã³ãéžæããŸããã ã¢ãã«ã¯dockerã³ã³ãããŒã«ããã±ãŒãžåãããRPCåŒã³åºãã䜿çšããŠæšå¥šäºé
ãè¿ããŸãã
ããã³ããšã³ã
é¢çœããªããã®ã¯ãããŸããïŒ React ã Reactã¢ããªã®äœæãããã³ã»ãã³ãã£ãã¯UI ã å¯äžã®ããªãã¯-React Snapshotã䜿çšããŠãã¡ã€ã³ããŒãžã®éçããŒãžã§ã³ãäºåçæããæ€çŽ¢ãšã³ãžã³ã«ããã€ã³ããã¯ã¹äœæãæ¹åããŸããã
䟿å©ãªãªã³ã¯
GitHubãŠãŒã¶ãŒã®å Žåã GHRecommender Webãµã€ãã§æšå¥šäºé
ãååŸã§ããŸãã è©äŸ¡ãããªããžããªã30æªæºã®å Žåãæã人æ°ã®ãããããžã§ã¯ããæšå¥šäºé
ãšããŠåãåãããããšã«æ³šæããŠãã ããã
GHRecommenderã®ãœãŒã¹ã¯ãã¡ãããå
¥æã§ããŸã ã
textããã¹ããšãããžã§ã¯ãavliã®å
±èè