9æã2gis.ruã«æ°ããæ©èœãç»å ŽããŸãããããã¯ãçµç¹ãšéä¿¡ããããã®b2cã¡ãã»ã³ãžã£ãŒã§ãã 補åãŸãã¯ãµãŒãã¹ãæ€çŽ¢ããå Žåããã£ããã¯éåžžã«äŸ¿å©ã§ããäžåºŠã«è€æ°ã®äŒç€Ÿã«æžã蟌ãããšãã§ããããããã®çå®çªé»è©±ã®å£°ãèãããããªãã¬ãŒã¿ãŒãç®çã®è£œåã®äŸ¡æ Œãæ®é«ã決å®ãããŸã§åŸ æ©ãããããå¿ èŠã¯ãããŸããã äŒç€ŸãéžæããäŒç€Ÿã«ãŒãã®ã¡ãã»ãŒãžã¢ã€ã³ã³ãã¯ãªãã¯ãããšããã£ãããéããŸãã
ã¡ãã»ã³ãžã£ãŒãäœãã«ã¯ããã£ãããã©ã®ããã«æ©èœããããWhatsAppãTelegramã®ãããªãå 貎ããå éšã§äœãæã£ãŠããããå°ãææ¡ããå¿ èŠããããŸããã çµå±ã®ãšããããã¹ãŠãããã»ã©æãããã§ã¯ãããŸããã
ãªã2GISã¡ãã»ã³ãžã£ãŒãªã®ã
ãããããã¡ãã»ã³ãžã£ãŒããã§ã¯ãªããã©ã®ããã«ããŠãã®ã¢ã€ãã¢ã«å°éããã®ãããå§ãã䟡å€ããããŸãã 以åã¯ãã£ã¬ã¯ããªã«äŒç€Ÿã®ã¡ãŒã«ã衚瀺ããŠããŸããã 次ã«ããã£ã¬ã¯ããªããçŽæ¥äŒç€Ÿãšã®é£çµ¡ãã©ãŒã ãè¿œå ããŸããã æžããããå°ãªãã§ãããæåã®ãã§ãŒã³ã®é·ãã¯å¹³å2ã10ã¡ãã»ãŒãžã§ãã ã€ãŸããã¡ãã»ã³ãžã£ãŒã¯ãäŒç€Ÿã«æçŽãéãæ¢åã®èœåã®è«ççãªçºå±ã§ãã
ä»ã©ã®ããã«æ©èœããŸãã
ããã«è¯ãããšã«ã質åãããŠã¿ãŠãã ãã ã ããã·ãã«ã¹ã¯ã«ããŸããã¢ã¹ã¯ã¯ã®18:00ã«ã¯ããã§ã«22:00ã«ãªã£ãŠããŸãã
ã¯ã€ãã¯ã¬ãã¥ãŒïŒèªè»¢è»ãéžæãã
ãŸããquickblox.comãbackendless.comãsendbird.comãªã©ã®BaaSïŒãµãŒãã¹ãšããŠã®ããã¯ãšã³ãïŒã«æ³šç®ããŸããã ãããã¯ãã¹ãŠãæšæºã®ãã£ããæ©èœãã¢ãã€ã«ãŸãã¯Webã¢ããªã±ãŒã·ã§ã³ã«è¿œå ããããã®ããŒã«ãæäŸããŸãã
æ¢åã®BaaSãœãªã¥ãŒã·ã§ã³ã«åºã¥ãã¡ã€ã³ïŒäŒç€Ÿãžã®é»åã¡ãŒã«éç¥ã®éä¿¡ïŒããã³ããé«åºŠãªã·ããªãªã®å®è£ ã«ã¯ãWebhookãä»ããçµ±åã®ããã®ç¬èªã®ããã¯ãšã³ãã®éçºãšããã³ããŒAPIãšã®çµ±åã®ããã®ç¹å¥ãªåªåãå¿ èŠã§ãã ãã®ãããBaaSã¯ç§ãã¡ã«é©ããŠããŸããã§ããã ããã«ãæ©èœãå®å šã«å¶åŸ¡ããããšãã€ãŸãããµãŒãããŒãã£ã®ãœãªã¥ãŒã·ã§ã³ã«äŸåããªãããšãæãã§ããŸããã æçµçã«ãç§ãã¡ã¯ãšã³ãžãã¢ã§ãããæ°ããçµéšãåŸãããã«å®éšããããšã«ããŸããã
ãããŠãã¡ãã»ãŒãžãé ä¿¡ããæ¹æ³ã¯ïŒ
ã¡ãã»ã³ãžã£ãŒã®ããã¯ãšã³ããäœæããã«ã¯ãæåã«äžé£ã®è³ªåã«å¯ŸåŠããå¿ èŠããããŸããã¡ãã»ãŒãžãã¯ã©ã€ã¢ã³ããããµãŒããŒã«è»¢éããŠæ»ãæ¹æ³ãã¡ãã»ãŒãžãä¿åããå Žæãå€æ°ã®åææ¥ç¶ã«å¯ŸåŠããæ¹æ³ããµãŒãã¹ãã¹ã±ãŒãªã³ã°ããæ¹æ³ã§ãã Googleã¯ãæ¯èŒã®ããã«ã¡ãã»ãŒãžãã¿ãã¬ããã«é ä¿¡ããæ¹æ³ãéããŠèããŸããã
ããŒãã«
ç³ãèš³ãããŸããããHabra Editorã§ããŒãã«ãçŸããäœæã§ããŸããã§ããã
æ¹æ³ | 説æ | 茞é | ãããã³ã« | ãã©ãŠã¶ã®ãµããŒã |
Websocket | ã¯ã©ã€ã¢ã³ãã¯ã WebSockets APIã䜿çšããŠãµãŒããŒãžã®æ°žç¶çãªæ¥ç¶ãéããŸãã | Websockets API | TCPïŒæ¥ç¶ãéãã«ã¯HTTPãã³ãã·ã§ã€ã¯ãå¿ èŠïŒ | caniuse.com/#feat=websockets |
ã¹ããªãŒãã³ã° | ã¯ã©ã€ã¢ã³ãã¯ãµãŒããŒãžã®æ°žç¶çãªæ¥ç¶ãéããŸãã | XMLHttpRequestïŒãã«ãããŒããªã³ããŒãïŒãXMLHttpRequestïŒonprogressïŒãiframeã¿ã° | HTTP | caniuse.com/#feat=streaming |
ãµãŒããŒéä¿¡ã€ãã³ã | ã¯ã©ã€ã¢ã³ãã¯ã Server Sent Events APIã䜿çšããŠãµãŒããŒãžã®æ°žç¶çãªæ¥ç¶ãéããŸãã | APIãµãŒããŒéä¿¡ã€ãã³ã | HTTP | IEã§ã¯ãµããŒããããŠããŸããã caniuse.com /ïŒfeat = eventsource |
ããŒãªã³ã° | ã¯ã©ã€ã¢ã³ãã¯å®æçã«ãµãŒããŒãããŒãªã³ã°ããŠæ°ããã¡ãã»ãŒãžãæ¢ããŸãã | å©çšå¯èœãªãã® | HTTP | |
é·ãããŒãªã³ã° | ã¯ã©ã€ã¢ã³ãã¯ããµãŒããŒãžã®é·æéæå¹ãªæ¥ç¶ãéããŸãããµãŒããŒã¯ãæ°ããã¡ãã»ãŒãžãŸãã¯ã¿ã€ã ã¢ãŠããæéåãã«ãªããŸã§éããŸããã æ¥ç¶ãéããçŽåŸã«ãã¯ã©ã€ã¢ã³ãã¯æ°ããæ¥ç¶ãéããŸãã | XMLHttpRequest
ã¹ã¯ãªããã¿ã° | HTTP | |
ãã©ãŠã¶ãã©ã°ã€ã³ïŒJava / FlashïŒ | ã¯ã©ã€ã¢ã³ãã¯ããã©ãŠã¶ãã©ã°ã€ã³APIïŒJavaãŸãã¯FlashïŒã䜿çšããŠãµãŒããŒãžã®æ°žç¶çãªæ¥ç¶ãéããŸãã | ãã©ã°ã€ã³API | TCP / UDP |
ææ°ã®ãã£ããã¢ããªã±ãŒã·ã§ã³ã®ã»ãšãã©ã¯ããã³ã°ããŒãªã³ã°ãŸãã¯Webãœã±ããã®2ã€ã®æ¹æ³ã®ããããã䜿çšããŸãã Websocketã«ã¯ãé·ãããŒãªã³ã°ïŒå šäºéæ¥ç¶ãåæ¥ç¶æã®äžèŠãªãã©ãã£ãã¯ã®æ¬ åŠïŒãããå€ãã®å©ç¹ãããããã©ãŠã¶ãŒããã³ãªãŒãã³ãœãŒã¹ã©ã€ãã©ãªã§åºããµããŒããããŠãããããã¿ã¹ã¯ã«æé©ãªéžæè¢ã®ããã§ãã ãŸããçæããããŸãããã©ãŠã¶ããšã®å®è£ ã®éãããµãŒããŒäžã®ããè€éãªããžãã¯ã
ããŒã¿ãéä¿¡ããããã®æãäžè¬çãªãªãŒãã³æ±çšãããã³ã«ã¯XMPPã§ãã
ãã©ã¹åŽ | ãã€ãã¹é¢ |
IETFãªãŒãã³ã¹ã¿ã³ããŒã | éä¿¡ãããæ å ±ã®åé·æ§ |
å€æ°ã®ãªãŒãã³ãœãŒã¹å®è£ | XML |
ã«ã¹ã¿ãã€ãºã®å¹ åºãå¯èœæ§ | ããã¯ç§ãã¡ã®ã¿ã¹ã¯ã®è©³çŽ°ãæŽç·Žããå¿ èŠããããŸãã |
å倧ãªäœ¿è
ã®æŠèŠ
ã¡ãã»ã³ãžã£ãŒ | é éæ¹æ³ | ãããã³ã« | ãµãŒã㌠| ã¹ãã¬ãŒãžã·ã¹ãã | |
Websocket | XMPPããå§ããŸãããã瀟å ãããã³ã«ã«åãæ¿ããŸãã | ãµãŒããŒã€ã³ãã©ã¹ãã©ã¯ãã£å šäœãErlang + FreeBSã§æ§ç¯ãããŠããããã1ã€ã®ãµãŒããŒã§æ倧2kkã®TCPæ¥ç¶ãç¶æã§ããŸãã ç§ãã¡ã¯ejabberdãéå§ããŸããããåŸã§èªåçšã«å€§å¹ ã«å€æŽããŸããã ã€ãŠãºã©ã€ã | ãµãŒããŒã«ã¡ãã»ãŒãžå±¥æŽãä¿åããªãã§ãã ãããã¯ã©ã€ã¢ã³ããmnesiaãã¡ãã»ãŒãžãåä¿¡ãããšããµãŒããŒããã¡ãã»ãŒãžãåé€ãããŸãã | ||
è¡ | WebããŒãžã§ã³ãªããChromeã¢ããªã®ã¿ | ã¢ãã€ã«ã¯ã©ã€ã¢ã³ãã®ThçŽ | JavaãC ++ãNginx | ãŠãŒã¶ãŒããŒã¹ã®ççºçãªæé·ã®åŸãã³ãŒã«ãããŒã¿ãHbaseã«ç§»è¡ããåŸã3ã€ã®Redisã€ã³ã¹ã¿ã³ã¹ã®ã¯ã©ã¹ã¿ãŒã§éå§ããŸããïŒã¡ãã»ãŒãžå±¥æŽãšãŠãŒã¶ãŒ/ã°ã«ãŒã/é£çµ¡å å€æŽå±¥æŽãããã¯ã¢ãããšåæçšã®MySQL | |
Viber | WebããŒãžã§ã³ãªã | 瀟å | AWSã§ãã¹ããããŠããC ++ | C ++ã§èšè¿°ãããèªå·±èšè¿°åã®ã¡ã¢ãªå ãªããžããªããå§ããMongoããã³Redisã«ãã£ãã·ã¥ãšããŠåãæ¿ããŸããã Mongoã¯ããã©ãŒãã³ã¹ã®ããã«æ©èœãããæçµçã«Couchbaseã«ç§»è¡ããŸãã | |
Facebookã¡ãã»ã³ãžã£ãŒ | é·ãããŒãªã³ã° | 瀟å ã®JSONããŒã¹ã®WebãThrift for mobile applications | Erlang-ã¡ãã»ãŒãžãã¥ãŒã C ++-ãã¬ãŒã³ã¹æ
å ±ãµãŒãã¹ãã¡ãã»ãŒãžå±¥æŽãªããžããªã PHPã¯ããã³ã°ããŒãªã³ã°ãé€ããã¹ãŠã®ãŠãŒã¶ãŒãªã¯ãšã¹ããåŠçããããã³ããšã³ãã§ãã ãµãŒãã¹ã¯Thriftãä»ããŠçžäºã«éä¿¡ããŸã
| MySQLãHBaseã®ãã¥ãŒ | |
ããã¿ | Websocket | 瀟å ã®JSONããŒã¹ | Javaã¡ãã»ãŒãžã³ã°ãµãŒããŒãAWSã§ãã¹ããããã³ã¢ã¢ããª/ APIã®LAMP | RedisãMySqlãApache Solr |
ãã ããããŸããŸãªã倧ãã¡ãã»ã³ãžã£ãŒã®ãœãªã¥ãŒã·ã§ã³ãæ€èšããçµæãXMPPã䜿çšããåäžã®éèŠãªãµã¯ã»ã¹ã¹ããŒãªãŒã¯ããã®åŸã®æ¹è¯ãšã«ã¹ã¿ãã€ãºãªãã§ã¯èŠã€ãããŸããã§ããã çèããäžã§ãã¿ã¹ã¯ã®è©³çŽ°ãæåã«èæ ®ããåçŽãªJSONããŒã¹ã®ãããã³ã«ãéçºããããšã«ããŸããã
æè¡ã¹ã¿ãã¯
æŽå²çã«ãäž»ãªããã¯ãšã³ããµãŒãã¹ã§ããAPI 2GISã¯PHP5ã§èšè¿°ãããŠããŸããã 2幎åãç§ãã¡ã¯PHPãé¢ããScala and Goã«ç§»è¡ããããšã«ããŸããã Goã䜿çšãããšãããªãè€éãªäžŠè¡ããã°ã©ã ãéåžžã«ç°¡åã«äœæã§ããŸãã ããã¯ãã¡ãã»ã³ãžã£ãŒãå®è£ ããããã®äž»èŠãªãã¯ãããžãŒãšããŠéžæããéã«æ±ºå®çãªèŠå ã«ãªããŸããã ãããŠãGoã§ã®éçºçµéšã¯ãã§ã«ãããŸããã
ãããã£ãŠãããã¯ãšã³ãã¯Goã§èšè¿°ãããããã³ããšã³ãã¯React + Reduxã§èšè¿°ãããŸãã ã¡ãã»ãŒãžã³ã°ã·ã¹ãã ãšããŠRabbitMQãéžæããŸããã ããŒã¿ã¹ãã¬ãŒãžã«ã¯ãRedisãšPostgeSQLã䜿çšããŸãã ã¢ããªã±ãŒã·ã§ã³ãDockerã³ã³ãããŒã«ããã¯ããGitlab-CIãä»ããŠDeisãã©ãããã©ãŒã ã«ãããã€ããŸãã
äžã§èšã£ãããã«ãWebãœã±ããã䜿çšãããã£ãã®ã§ãããå®è£ ã«é¢ããŠã¯ããœãªã¥ãŒã·ã§ã³ãå°ãèãçŽããŸããã å®éã仮説ïŒæªåé«ãMVPïŒããã¹ãããããã«ãã§ããã ãæ©ãæ©èœããªãªãŒã¹ãããã£ãã®ã§ãã é«éåããããã«ãããžãã¯ãWebãœã±ããã䜿çšããŠã¯ã©ã€ã¢ã³ããããµãŒããŒã«éä¿¡ããããšãšãæãåçŽãªREST APIãå察æ¹åã«éä¿¡ããããšã«åå²ããŸããã
éç¥ã¯ã©ãã§ããïŒ
çªç¶ãéç¥ã¯å®è£ ãæãå°é£ã§ããããšãå€æããŸããã ãã¹ãŠãåçŽã§ããããã«æãããŸããé»è©±ã«ããã·ã¥ãéä¿¡ããã¡ãŒã«ã«æçŽãéãããã©ãŠã¶ã«éç¥ã衚瀺ããŸãã ããããç§ãã¡ã®ã¿ã¹ã¯ã¯ããã¹ãŠã®éç¥ãã§ããã ãæ©ãèªãŸããåæã«ã¹ãã ã¹ããªãŒã ã«ãªããªãããã«ããããšã§ããã
ã«ã¹ã±ãŒãéç¥ã·ã¹ãã ãšåŒã°ãããœãªã¥ãŒã·ã§ã³ããããŸãã ããšãã°ã3ã€ã®äž»ãªãã£ãã«ããããŸãã2gis.ruã®éç¥ãæçŽãé»è©±ãžã®ããã·ã¥ã§ãã
ãã®å Žåãéç¥ã·ã¹ãã ã¯æ¬¡ã®åœ¢åŒãåããŸãã
-ãŠãŒã¶ãŒããªã³ã©ã€ã³ã§ãããã©ããã確èªããŸãâããã§ããå Žåããã©ãŠã¶ã§éç¥ãéä¿¡ããŸãã
-ãŠãŒã¶ãŒããªã³ã©ã€ã³ã§ãªãå Žåã¯ãé»è©±ãæ¥ç¶ãããŠãããã©ããã確èªããŸãâæ¥ç¶ãããŠããå Žåã¯ãæºåž¯é»è©±ã«ããã·ã¥ãéä¿¡ãããã©ãŠã¶ãŒã®ãã€ã¢ãã°ã«éç¥ã衚瀺ããæçŽãéä¿¡ããŸããã
-ãããããŸããããªãã£ãå Žåãç§ãã¡ã¯æçŽãéããŸãã
-éç¥ãäŒç€Ÿã«é¢ãããã®ã§ããå Žåã¯ããã°ããã®éåå¿ã芳å¯ãããã©ãŠã¶ãŒã§éç¥ããŠããã·ã¥ããåŸã«å¿çããªãå Žåã¯ããšã«ããé»åã¡ãŒã«ãéä¿¡ããŸãã
å®éããã®ã·ããªãªããããã·ã¥éç¥ãéä¿¡ããŠããããã§ã¯ãããŸããããããã«ãã®æ¹æ³ãåŠç¿ããŸãã
èšç»
è¿ãå°æ¥-ã¡ãã»ã³ãžã£ãŒæ©èœã2GISã¢ãã€ã«ã¢ããªã±ãŒã·ã§ã³ã«è¿œå ããäž»ãªæ©èœïŒã¡ãã»ãŒãžã«æ·»ä»ãã¡ã€ã«ãæ·»ä»ããæ©èœããã©ãŠã¶ãŒããã·ã¥ïŒãå®äºããé«åºŠãªéä¿¡ã·ããªãªïŒããšãã°ãè€æ°ã®äŒæ¥ãžã®èŠæ±ãªã©ïŒãå®è£ ããŸãã
ãããŸã§ã®ãšãããäŒæ¥ã¯ã¡ãã»ã³ãžã£ãŒã«æ £ããŠããããå šå¡ãã¡ãã»ãŒãžã«ãã°ããå¿çããããã§ã¯ãããŸããã ããããããã¹ããä»ãã人ãšäŒæ¥ã®çžäºäœçšã«ã¯å€§ããªæªæ¥ããããšä¿¡ããŠããŸãã