ããã«ã¡ã¯ã ãã®èšäºã§ã¯ããšãŒããããé§ãå·¡ããŸããã€ãŸãããªã¢ã¯ãã£ãããã°ã©ãã³ã°ã®æå³ã説æããã¢ã¯ã¿ãŒããªã¢ã¯ãã£ããããŒã玹ä»ããæåŸã«ãªã¢ã¯ãã£ããããŒã䜿çšããŠãå€ãOperaãšãã®ç²Ÿç¥çãªåŸç¶è
ã§ããVivaldiã®ããã«ãããŠã¹ãžã§ã¹ãã£ãŒãèªèããŸãã
ç®æšã¯ããªã¢ã¯ãã£ãããã°ã©ãã³ã°ã®åºæ¬æŠå¿µã玹ä»ãããã¹ãŠãäžèŠãããšæããã»ã©è€éã§æããªãããšã瀺ãããšã§ãã
åºæãªã¢ã¯ãã£ãããã°ã©ãã³ã°ãšã¯äœã§ããïŒ
ãã®è³ªåã«çããããã«ã
ãµã€ãã«ç®ãåã
ãŸã ã ãªã¢ã¯ãã£ãã¢ããªã±ãŒã·ã§ã³ãæºãããªããã°ãªããªã4ã€ã®äž»èŠãªåºæºã瀺ãçŸããç»åããããŸãã

ã¢ããªã±ãŒã·ã§ã³ã¯é«éã§ããã©ãŒã«ããã¬ã©ã³ãã§ãããæ¡åŒµæ§ã«åªããŠããå¿
èŠããããŸãã
ãç§ãã¡ã¯ãã¹ãŠã®åãšãã¹ãŠã®æªã®ããã«ãã®ããã«èŠããŸãããïŒ
ãããã®èšèãæå³ãããã®ïŒ
- å¿çæ§
ã¢ããªã±ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã«0.5ç§ã§çµæãæäŸããå¿
èŠããããŸãã ãã§ã€ã«ãã¡ãŒã¹ãã®åçãããã«èµ·å ããå¯èœæ§ããããŸããã€ãŸããäœãåé¡ãçºçããå Žåããç³ãèš³ãããŸããããåé¡ãçºçããŸããã 倩æ°ã海蟺ã§åŸ
ã€ãããåŸã§å詊è¡ããŠãã ããã æäœãé·ãå Žåãé²è¡ç¶æ³ããŒããŠãŒã¶ãŒã«è¡šç€ºããŸãã éåžžã«é·ãå Žå-ãããªãã®ãªã¯ãšã¹ãã¯ã2042幎3æ18æ¥ã«å®è¡ãããŸãã éç¥ãéµéããŸããã - ã¹ã±ãŒã©ããªãã£ã¯ãè² è·ãããã£ããšãã«å¿çæ§ãæäŸããæ¹æ³ã§ãã æ¯èŒçæåãããµãŒãã¹ã®ã©ã€ããµã€ã¯ã«ãæ³åããŠãã ããã
- èµ·å-èŠæ±ãããŒã¯å°ããããµãŒãã¹ã¯1ã€ã®ã³ã¢ãæã€ä»®æ³ãã·ã³ã§å®è¡ãããŸãã
- ãªã¯ãšã¹ãã®ãããŒãå¢å ããŸã-ã«ãŒãã«ãä»®æ³ãã·ã³ã«è¿œå ããããªã¯ãšã¹ãã¯è€æ°ã®ã¹ã¬ããã§åŠçãããŸãã
- ããã«è² è·ãããããŸã-ãããåŠçã«æ¥ç¶ããŸã-ããŒã¿ããŒã¹ãšããŒããã©ã€ããžã®èŠæ±ã¯ã°ã«ãŒãåãããŸãã
- ããã«å€ãã®è² è·-ããå€ãã®ãµãŒããŒãäžããŠãã¯ã©ã¹ã¿ãŒã§äœæ¥ãæäŸããå¿
èŠããããŸãã
çæ³çã«ã¯ãã·ã¹ãã èªäœãè² è·ã«å¿ããŠæ¡å€§ãŸãã¯çž®å°ããå¿
èŠããããŸãã
- èé害æ§
ç§ãã¡ã¯äžå®å
šãªäžçã«äœãã§ããããã¹ãŠãèµ·ããããšãåãå
¥ããŸãã ã·ã¹ãã ã§äœãåé¡ãçºçããå Žåããšã©ãŒåŠçãšååŸ©æ¹æ³ãæäŸããå¿
èŠããããŸã - ãããŠæåŸã«ãã¢ãŒããã¯ãã£ãã¡ãã»ãŒãžé§ååã¡ãã»ãŒãžã³ã°ã«åºã¥ããŠããã·ã¹ãã ã䜿çšããŠãããããã¹ãŠãéæããããã«æåŸ
ãããŠããŸãã
ç¶è¡ããåã«ãã€ãã³ãé§ååã·ã¹ãã ãšã¡ãã»ãŒãžé§ååã·ã¹ãã ã®éãã«ã€ããŠè©³ãã説æããŸãã
ã€ãã³ãé§ååïŒ- ã€ãã³ã-ã·ã¹ãã ã¯ãç¹å®ã®ç¶æ
ã«å°éããããšãå ±åããŸãã
- ã€ãã³ãã«ã¯å€ãã®ãµãã¹ã¯ã©ã€ããŒãããå¯èœæ§ããããŸãã
- éåžžãã€ãã³ãã®ãã§ãŒã³ã¯çããã€ãã³ããã³ãã©ãŒã¯ïŒç©ççã«ãã³ãŒãçã«ãïŒãœãŒã¹ã«è¿æ¥ããŠããŸãã
- éåžžãã€ãã³ããœãŒã¹ãšãã®ãã³ãã©ãŒã«ã¯å
±éã®ç¶æ
ããããŸãïŒç©ççã«ã¯ãæ
å ±äº€æã«åãRAMã䜿çšããŸãïŒã
ã€ãã³ãé§ååãšã¯å¯Ÿç
§çã«ãã¡ãã»ãŒãžé§ååã·ã¹ãã ã§ã¯ïŒ- åã¡ãã»ãŒãžã«ã¯1人ã®åä¿¡è
ããããŸããã
- ã¡ãã»ãŒãžã¯äžå€ã§ããåä¿¡ããã¡ãã»ãŒãžã®å
容ã倿Žããããšã¯ã§ããŸããããã®ãããéä¿¡è
ã¯ãããèªèããŠæ
å ±ãèªãããšãã§ããŸãã
- ã·ã¹ãã ã®èŠçŽ ã¯ãã¡ãã»ãŒãžã®åä¿¡ã«å¿çããïŒãŸãã¯å¿çããªãïŒãããã·ã¹ãã ã®ä»ã®èŠçŽ ã«ã¡ãã»ãŒãžãéä¿¡ã§ããŸãã
ããã¯ãã¹ãŠç§ãã¡ã«æäŸããŠããŸã
俳åªã¢ãã«
éçºã®ãã€ã«ã¹ããŒã³ïŒ
- 俳åªã®æåã®èšåã¯1973幎ã®ç§åŠè«æ-Carl HewittãPeter Bishopãããã³Richard Steigerãã人工ç¥èœã®ããã®æ®éçãªã¢ãžã¥ã©ãŒACTOR圢åŒã
- 1986-ã¢ãŒã©ã³ãç»å Žã ãšãªã¯ãœã³ã¯ããã©ãŒã«ããã¬ã©ã³ã¹ãšãšã©ãŒã®ãªãäŒæãæäŸããéä¿¡æ©åšçšã®èšèªãå¿
èŠãšããŠããŸããã ãã®èšäºã®ã³ã³ããã¹ãã§ã¯ãäž»ãªæ©èœã¯æ¬¡ã®ãšããã§ãã
- ãã¹ãŠãããã»ã¹ã§ã
- ã¡ãã»ãŒãžã¯ã³ãã¥ãã±ãŒã·ã§ã³ã®å¯äžã®æ¹æ³ã§ãïŒErlangã¯é¢æ°åèšèªã§ããããã®äžã®ã¡ãã»ãŒãžã¯å€æŽã§ããŸããïŒã
- ..
- 2004-Scalaèšèªã®æåã®ããŒãžã§ã³ã ãã®ç¹åŸŽïŒ
- JVMãæèŒã
- æ©èœç
- ãã«ãã¹ã¬ããã®å Žåãã¢ã¯ã¿ãŒã¢ãã«ãéžæãããŠããŸãã
- 2009-ã¢ã¯ã¿ãŒã®å®è£
ã¯å¥ã®ã©ã€ãã©ãªã«å²ãåœãŠãããŸãã-Akka
- 2014-Akka.net-.Netã«ç§»æ€ãããŸããã
俳åªã¯äœãã§ããŸããïŒ
ã¢ã¯ã¿ãŒã¯åããªããžã§ã¯ãã§ãããæ¬¡ã®ãšããã§ãã
- éåžžã®ãªããžã§ã¯ããšã¯ç°ãªããã¢ã¯ã¿ãŒã¯äºãã®ã¡ãœãããåŒã³åºãããšã¯ã§ããŸããã
- ã¢ã¯ã¿ãŒã¯ãäžå€ã¡ãã»ãŒãžãä»ããŠã®ã¿æ
å ±ãéä¿¡ã§ããŸã ã
- ã¡ãã»ãŒãžãåä¿¡ãããšã俳åªã¯
- æ°ããã¢ã¯ã¿ãŒãäœæããŸãïŒéå±€ã®äžäœã«ãªããŸãïŒã
- ä»ã®ã¢ã¯ã¿ãŒã«ã¡ãã»ãŒãžãéä¿¡ãã
- éå±€å
ããã³ä»¥äžã®ã¢ã¯ã¿ãŒã忢ããŸãã
äŸãèããŠã¿ãŸãããã

ã¢ã¯ã¿ãŒAã¯ãã¢ã¯ã¿ãŒBã«ã¡ãã»ãŒãžãéä¿¡ããããšèããŠããŸãã圌ãæã£ãŠããã®ã¯ãActorRefïŒã¢ãã¬ã¹ïŒã ãã§ãã ã¢ã¯ã¿ãŒBã¯ã©ãã§ãããŸããŸããã
ã¢ã¯ã¿ãŒAã¯ãã·ã¹ãã ïŒActorSystemïŒãä»ããŠæåBãéä¿¡ããŸãã ã·ã¹ãã ã¯ãã¢ã¯ã¿ãŒBã®ã¡ãŒã«ããã¯ã¹ã«ã¬ã¿ãŒãå
¥ããã¢ã¯ã¿ãŒBãããŠã§ã€ã¯ã¢ãããããŸããã¢ã¯ã¿ãŒBã¯ãã¡ãŒã«ããã¯ã¹ããã¬ã¿ãŒãåãåããäœããå®è¡ããŸãã
å¥ã®ãªããžã§ã¯ãã§ã¡ãœãããåŒã³åºãããšã«æ¯ã¹ãŠãããã¯äžå¿
èŠã«è€éã«èŠããŸãããã¢ã¯ã¿ãŒãç¹å®ã®åºæ¿ã«åå¿ããŠäœããããããã«èšç·Žããã人ã ãšæ³åãããšãã¢ã¯ã¿ãŒã®ã¢ãã«ã¯çŸå®ã®äžçã«å®å
šã«é©åããŸãã
ç¶ãšæ¯åãæ³åããŠãã ããïŒ

ç¶èŠªã¯æ¯åã®SMSkuã«ãéšå±ã®æé€ããéããèªåã®ããšãç¶ããŸãã æ¯åã¯SMSkuãèªã¿ãã¯ãªãŒãã³ã°ãéå§ããŸãã äžæ¹ãç¶ã¯ããŒã«ãŒãããŠããŸãã æ¯åã¯æé€ãçµäºããSMSãå®äºããéä¿¡ããŸãã ç°¡åããã§ããã
ããã§ãç¶ãšæ¯åã¯ä¿³åªã§ã¯ãªããäºãã®ã¡ãœãããåŒã£åŒµãæ®éã®ãªããžã§ã¯ãã§ãããšæ³åããŠãã ããã ç¶èŠªã¯ãéšå±ãæé€ãããæ¹æ³ã®ããã«æ¯åãåŒã£åŒµããæ¯åãæé€ãçµããŠç¶èŠªã«ã³ã³ãããŒã«ãæ»ããŸã§åŸ
ã€ãããšã远ããŸãã çŸæç¹ã§ã¯ãç¶èŠªã¯ããŒã«ãŒããã¬ã€ã§ããŸããã ãã®ã³ã³ããã¹ãã§ã¯ãã¢ã¯ã¿ãŒã¢ãã«ãããé
åçã«ãªãã€ã€ãããŸãã
ã§ã¯ãã«ç§»ããŸããã
Akka.NET
以äžã«æžãããŠããããšã¯ãã¹ãŠãJVMã®å
ã®Akkaã«åœãŠã¯ãŸããŸãããç§ã«ãšã£ãŠã¯ãCïŒã¯Javaãããè¿ããããAkka.NETãäŸãšããŠäœ¿çšããŸãã
Akkaã®å©ç¹ã¯äœã§ããïŒ
- ã¡ãã»ãŒãžã³ã°ãä»ãããã«ãã¹ã¬ããã ããããçš®é¡ã®ããã¯ãã»ããã©ããã¥ãŒããã¯ã¹ãããã³å
±æã¡ã¢ãªã䜿çšããåŸæ¥ã®ãã«ãã¹ã¬ããã«ç¹æã®ãã®ä»ã®é
åã«æ©ãŸãããå¿
èŠã¯ãããããŸããã
- ã·ã¹ãã ãšãã®ã³ã³ããŒãã³ãéã®ééçãªéä¿¡ã è€éãªãããã¯ãŒã¯ã³ãŒããå¿é
ããå¿
èŠã¯ãããŸãã-ã·ã¹ãã èªäœãã¡ãã»ãŒãžã®å®å
ãèŠã€ããŠãã¡ãã»ãŒãžã®é
ä¿¡ãä¿èšŒããŸãïŒããã§UDPãšTCPã«ã€ããŠã®ãžã§ãŒã¯ãæ¿å
¥ã§ããŸãïŒã
- èªåçã«ã¹ã±ãŒã«ã¢ãããŸãã¯ã¹ã±ãŒã«ããŠã³ã§ããæè»ãªã¢ãŒããã¯ãã£ã ããšãã°ãè² è·ãããããšãã·ã¹ãã ã¯è¿œå ã®ã¯ã©ã¹ã¿ãŒããŒããçºçãããè² è·ãåçã«åæ£ã§ããŸãã
ããããã¹ã±ãŒãªã³ã°ã®ãããã¯ã¯éåžžã«åºç¯å²ã§ãããå¥ã®åºçç©ã«å€ããŸãã ãããã£ãŠããã¹ãŠã®ãããžã§ã¯ãã§åœ¹ç«ã€æ©èœã«ã€ããŠã®ã¿è©³ãã説æããŸãã
ãšã©ãŒåŠç
ã¢ã¯ã¿ãŒã«ã¯éå±€ããããããªãŒãšããŠè¡šãããšãã§ããŸãã å俳åªã¯èŠªãæã¡ããåäŸããæã€ããšãã§ããŸãã
Akka.NETããã¥ã¡ã³ã Copyright 2013-2018 Akka.NETãããžã§ã¯ãåã¢ã¯ã¿ãŒã«å¯ŸããŠãç£ç£æŠç¥ãèšå®ã§ããŸãããåäŸãã«äœãåé¡ãçºçããå Žåã®å¯ŸåŠæ¹æ³ã§ãã ããšãã°ãåé¡ã®ãã俳åªããæã¡è² ããããåãã¿ã€ãã®æ°ãã俳åªãäœæããåãä»äºã圌ã«ä»»ããŸãã
ããšãã°ãAkka.net CRUDã§ã¢ããªã±ãŒã·ã§ã³ãäœæããŸããããã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããããžãã¹ããžãã¯ãã®å±€ãã¢ã¯ã¿ãŒã«å®è£
ãããŠããŸãã ãã®ãããžã§ã¯ãã®ç®çã¯ãã¹ã±ãŒã©ãã«ã§ãªãã·ã¹ãã ã§ã¢ã¯ã¿ãŒã䜿çšããå¿
èŠããããã©ãããã€ãŸãã圹è
ãçæŽ»ãæ¹åããã®ããçã¿ãå¢ãã®ãã調ã¹ãããšã§ããã
Akkaã®çµã¿èŸŒã¿ãšã©ãŒåŠçãã©ã®ããã«åœ¹ç«ã€ãïŒ
- ãã¹ãŠãæ£åžžã§ãã¢ããªã±ãŒã·ã§ã³ãæ©èœãã
- ãªããžããªã«äœããèµ·ãããŸãããã5åã®ãã¡1åã ãçµæãåºãŸã
- ç§ã¯ãç£ç£æŠç¥ããæ¯ç§10å詊è¡ãã«èšå®ããŸããã
- ã¢ããªã±ãŒã·ã§ã³ã¯ïŒãã£ããã§ã¯ãããïŒåã³åäœããåé¡ãäœã§ããããçè§£ããæéããããŸãã
ãããããã®ãããªãšã©ãŒåŠçãèªåã§æžããŠã¿ããããªã誰ãããã¹ãããã®ãïŒã å
¬æ£ãªçºèšã§ãããé害ç¹ãå°ãªãå Žåã®ã¿ã§ãã
ãããŠãå°ãã®ã³ãŒãã ããããIoCã³ã³ãããŒå
ã®ã¢ã¯ã¿ãŒã·ã¹ãã ã®åæåã®æ§åã§ãã
public Container() { system = ActorSystem.Create("MySystem"); var echo = system.ActorOf<EchoActor>("Echo");
EchoActorã¯ãéä¿¡è
ã«å€ãè¿ãæãåçŽãªã¢ã¯ã¿ãŒã§ãã
public class EchoActor : ReceiveActor { public EchoActor() { Receive<bool>(flag => { Sender.Tell(flag); }); } }
ã¢ã¯ã¿ãŒããéåžžã®ãã³ãŒãã«æ¥ç¶ããã«ã¯ãAskã³ãã³ãã䜿çšããŸãã
public async Task<ActionResult> Index() { ViewBag.Type = typeof(Model); var res = await CrudActorRef.Ask<IEnumerable<Model>>(DataMessage.GetAll<Model>(), maxDelay); return View(res); }
åèš
俳åªãšã¹ããããŒãç§ã¯èšãããšãã§ããŸãïŒ
- ã¹ã±ãŒã©ããªãã£ãå¿
èŠãªå Žåã¯ãããããèŠãŠãã ããã
- è€éãªããžãã¹ããžãã¯ã®å Žåã¯ã次ã®çç±ã§äœ¿çšããªãæ¹ãè¯ã
- å¥åŠãªäŸåæ§æ³šå
¥ã å¿
èŠãªäŸåé¢ä¿ã§ã¢ã¯ã¿ãŒãåæåããã«ã¯ããŸãPropsãªããžã§ã¯ããäœæãããããActorSystemã«æž¡ããŠç®çã®ã¿ã€ãã®ã¢ã¯ã¿ãŒãäœæããå¿
èŠããããŸãã IoCã³ã³ãããŒïŒCastle WindsorãAutofacãªã©ïŒã䜿çšããŠå°éå
·ãäœæããã«ã¯ãæ¢è£œã®ã©ãããŒ-DependencyResolversããããŸãã ããããIoCã³ã³ãããŒãäŸåé¢ä¿ã®æå¹æéãå¶åŸ¡ããããšããŠããŠããã°ããããŠã·ã¹ãã ãéãã«èœã¡ããšããäºå®ã«çŽé¢ããŸããã
*ããããããªããžã§ã¯ãã«äŸåé¢ä¿ã泚å
¥ãã代ããã«ããã®äŸåé¢ä¿ãåã¢ã¯ã¿ãŒãšããŠé
眮ããå¿
èŠããããŸãã - ã¿ã€ãã³ã°ã®åé¡ã ActorRefã¯ããããåç
§ããã¢ã¯ã¿ãŒã®ã¿ã€ãã«ã€ããŠäœãç¥ããŸããã ã€ãŸããã³ã³ãã€ã«æã«ã¯ãã¢ã¯ã¿ãŒããã®ã¿ã€ãã®ã¡ãã»ãŒãžãåŠçã§ãããã©ããã¯ããããŸããã
ããŒã2ïŒãžã§ããã¹ããªãŒã
次ã«ãããäžè¬çã§äŸ¿å©ãªãããã¯ã§ãããžã§ãããããŒã«ç§»ããŸãããã ããã»ã¹ã§ã¢ã¯ã¿ãŒãšäŒãããšãã§ããªãå Žåãããã³ããšã³ããšããã¯ãšã³ãã®äž¡æ¹ã§Rxã¹ããªãŒã ã確å®ã«åœ¹ç«ã¡ãŸãã ãããã®å®è£
ã¯ãã»ãšãã©ãã¹ãŠã®ææ°ã®ããã°ã©ãã³ã°èšèªã§è¡ãããŠããŸãã 仿¥ã§ã¯ããã¯ãšã³ãã®ããã°ã©ãã§ããJavaScriptã§äœããããªããã°ãªããªãããšããããããRxJã®äŸãæããŸãã
Rxã¹ããªãŒã ã¯ããã¹ãŠã®äžè¬çãªããã°ã©ãã³ã°èšèªã§äœ¿çšã§ããŸããCC BY-NC 4.0ã§ã©ã€ã»ã³ã¹ãããŠããAndre Staltzã® ã äžè¶³ããŠãããªã¢ã¯ãã£ãããã°ã©ãã³ã°ã®æŠèŠ ããžã§ããã¹ããªãŒã ãšã¯äœãã説æããããã«ããã«ã³ã¬ã¯ã·ã§ã³ãšããã·ã¥ã³ã¬ã¯ã·ã§ã³ããå§ããŸãã
| åäžã®æ»ãå€ | è€æ°ã®æ»ãå€ |
---|
åŒã åæ ã€ã³ã¿ã©ã¯ãã£ã | T | IEnumerable <T> |
ããã·ã¥ éåæ ãªã¢ã¯ãã£ã | ã¿ã¹ã¯<T> | IObservable <T> |
ãã«ã³ã¬ã¯ã·ã§ã³ã¯ãããã°ã©ãã³ã°ã§ç§ãã¡ãæ
£ããŠãããã®ã§ãã æãé¡èãªäŸã¯é
åã§ãã
const arr = [1,2,3,4,5];
ãã§ã«ããŒã¿ãããã圌èªèº«ã¯ãã®ããŒã¿ã倿ŽããŸãããããªã¯ãšã¹ãã«å¿ããŠæäŸã§ããŸãã
arr.forEach(console.log);
ãŸããããŒã¿ãåŠçããåã«ãäœããã®æ¹æ³ã§ããŒã¿ãåŠçã§ããŸãã
arr.map(i => i+1).map(I => âmy number is â+i).forEach(console.log);
ããã§ãæåã¯ã³ã¬ã¯ã·ã§ã³ã«ããŒã¿ããªãããšãæ³åããŠã¿ãŸãããããããŒã¿ã衚瀺ãããããšã¯ééããªãéç¥ãããŸãïŒããã·ã¥ïŒã åæã«ãå¿
èŠãªå€æããã®ã³ã¬ã¯ã·ã§ã³ã«é©çšã§ããŸãã
äŸïŒ
source.map(i => i+1).map(I => âmy number is â+i).forEach(console.log);
ãœãŒã¹ã«1ãªã©ã®å€ã衚瀺ããããšãconsole.logã¯ãmy number is 1ããåºåããŸãã
ä»çµã¿ïŒ
æ°ãããšã³ãã£ãã£ã衚瀺ãããŸã-ä»¶åïŒãŸãã¯èŠ³æž¬å¯èœïŒïŒ
const observable = Rx.Observable.create(function (observer) { observer.next(1); observer.next(2); observer.next(3); setTimeout(() => { observer.next(4); observer.complete(); }, 1000); });
ããã¯ãç¶æ
ã®å€åã«é¢ããéç¥ãéä¿¡ããããã·ã¥ã³ã¬ã¯ã·ã§ã³ã§ãã
ãã®å Žåã4ç§åŸã«1ã2ã3ã®æ°åãããã«è¡šç€ºãããã³ã¬ã¯ã·ã§ã³ã¯ãå®äºãããŸãã ããã¯ãã®ãããªç¹å¥ãªã¿ã€ãã®ã€ãã³ãã§ãã
2çªç®ã®ãšã³ãã£ãã£ã¯Observerã§ãã 圌ã¯ãµããžã§ã¯ãã€ãã³ãã«ãµãã¹ã¯ã©ã€ãããåä¿¡ããããŒã¿ã§äœããããããšãã§ããŸãã äŸïŒ
observable.subscribe(x => console.log(x)); observable.subscribe({ next: x => console.log('got value ' + x), error: err => console.error('something wrong occurred: ' + err), complete: () => console.log('done'), }); observable .map(x => 'This is ' + x) .subscribe(x => console.log(x));
1ã€ã®ãµããžã§ã¯ããå€ãã®ãµãã¹ã¯ã©ã€ããŒãæã€ããšãã§ããããšãããããŸãã
ç°¡åã«èŠããŸããããªããããå¿
èŠãªã®ãã¯ãŸã æç¢ºã§ã¯ãããŸããã ãªã¢ã¯ãã£ããããŒã䜿çšããéã«ç¥ã£ãŠããå¿
èŠã®ããå®çŸ©ãããã«2ã€ç€ºãããã®åŸãå®éã«ããããã©ã®ããã«æ©èœããã©ã®ãããªç¶æ³ã§ãã®æœåšèœåãæå€§éã«çºæ®ããããã瀺ããŸãã
å·ãã芳枬å¯èœé
- 誰ãããµãã¹ã¯ã©ã€ããããšãã«ã€ãã³ãã«ã€ããŠéç¥ããŸãã
- ãµãã¹ã¯ãªãã·ã§ã³ã®æéã«é¢ä¿ãªããããŒã¿ã¹ããªãŒã å
šäœãåãµãã¹ã¯ã©ã€ããŒã«å床éä¿¡ãããŸãã
- ããŒã¿ã¯ããµãã¹ã¯ã©ã€ããŒããšã«ã³ããŒãããŸãã
ããã¯ã©ãããæå³ã§ããïŒäŒç€ŸïŒè¢«éšè
ïŒãã®ããã®é
åžãæé
ããããšã«ãããšããŸãããã ååŸæ¥å¡ïŒãªãã¶ãŒããŒïŒã¯ä»äºã«æ¥ãŠãã®ããã®ã³ããŒãåãåããŸãã 誰ãåãæ®ãããŠããŸããã
ããããªãã¶ãŒããã«
- ãµãã¹ã¯ã©ã€ãã®ååšã«é¢ä¿ãªããã€ãã³ãã«ã€ããŠéç¥ããããšããŸãã ã€ãã³ãã®æç¹ã§ãµãã¹ã¯ã©ã€ããŒãããªãã£ãå ŽåãããŒã¿ã¯å€±ãããŸãã
äŸïŒæãåŸæ¥å¡åãã®ãããã±ãŒããäŒç€Ÿã«æã¡èŸŒãŸããŸãã 圌ããé£ããŠæ¥ããããšããã¹ãŠã®ã²ã°ãã¯åãã§é£ãã§ãæé£ã®ããã«ãã€ãäœããŸãã ããããåŸã«æ¥ããã¯ããŠã¯ãã¯ããã€ãååŸããŸããã
ã©ã®ãããªç¶æ³ã§ãžã§ããã¹ããªãŒã ã䜿çšããŸããïŒ
æéã®çµéãšãšãã«é
ä¿¡ãããããŒã¿ã¹ããªãŒã ãããå Žåã ããšãã°ããŠãŒã¶ãŒå
¥åã ãŸãã¯ãä»»æã®ãµãŒãã¹ããã®ãã°ã ãããžã§ã¯ãã®1ã€ã§ãNç§ã§ã€ãã³ããåéããããã¯å
šäœãåæã«èšé²ããèªå·±èšè¿°åã®ãã¬ãŒãèŠãŸããã ããããªãŒã³ãŒããããŒãžãå æããŸããã Rxã¹ããªãŒã ã䜿çšãããå Žåãã¯ããã«ç°¡åã«ãªããŸãã
RxJs Reference / Observable ãCC BY 4.0ã®äžã§ã©ã€ã»ã³ã¹ãããããã¥ã¡ã³ã ã
ïŒãªã¢ã¯ãã£ããããŒã䜿çšããããŸããŸãªæäœã®å®è¡å
容ã説æããå€ãã®äŸãšåçããããŸãïŒ source.bufferTime(2000).subsribe(doThings);
ãããŠæåŸã«ã䜿çšäŸã
Rxã¹ããªãŒã ã§ã®ããŠã¹ãžã§ã¹ãã£ãŒã®èªè
å€ãOperaãŸãã¯ãã®ç²Ÿç¥çãªåŸç¶è
ã§ããVivaldiã«ã¯ãããŠã¹ãžã§ã¹ãã£ãŒã䜿çšãããã©ãŠã¶ã³ã³ãããŒã«ããããŸããã
Gif-Vivaldiã§ã®ããŠã¹ãžã§ã¹ãã£ãŒ ã€ãŸããããŠã¹ã®äžäžãå·Šå³ã®åããããã³ãããã®çµã¿åãããèªèããå¿
èŠããããŸãã ããã¯Rxã¹ããªãŒã ãªãã§èšè¿°ã§ããŸãããã³ãŒãã¯è€éã§ç¶æãå°é£ã§ãã
ãããŠãRxã¹ããªãŒã ã§ã®è¡šç€ºã¯æ¬¡ã®ãšããã§ãã
æåŸããå§ããŸã-å
ã®ã·ãŒã±ã³ã¹ã§æ€çŽ¢ããããŒã¿ãšåœ¢åŒãèšå®ããŸãã
ãããã¯åäœãã¯ãã«ãšãã®çµã¿åããã§ãã
次ã«ãããŠã¹ã€ãã³ããRxã¹ããªãŒã ã«å€æããå¿
èŠããããŸãã ãã¹ãŠã®Rxã©ã€ãã©ãªã«ã¯ãæšæºã€ãã³ããObservableã«å€æããããã®çµã¿èŸŒã¿ããŒã«ããããŸãã
const mouseMoves = Rx.Observable.fromEvent(canvas, 'mousemove'), mouseDowns = Rx.Observable.fromEvent(canvas, 'mousedown'), mouseUps = Rx.Observable.fromEvent(canvas, 'mouseup');
次ã«ãããŠã¹ã®åº§æšã2ã§ã°ã«ãŒãåãããããã®å·®ãèŠã€ããŠãããŠã¹ãªãã»ãããååŸããŸãã
const mouseDiffs = mouseMoves .map(getOffset) .pairwise() .map(pair => { return { x: pair[1].x-pair[0].x, y: pair[1].y-pair[0].y } });
ã€ãã³ããmousedownããšãmouseupãã䜿çšããŠãããã®åããã°ã«ãŒãåããŸãã
const mouseGestures = mouseDiffs .bufferToggle(mouseDowns, x => mouseUps) .map(concat);
concat颿°ã¯ãçãããåããåãåããæ¹åãããããæã£ãŠããåããã°ã«ãŒãåããŸãã
function concat(values) {
X軞ãŸãã¯Yè»žã«æ²¿ã£ãåããçãããå ŽåããŒãã«ãªã»ãããããŸãã ãããŠãåŸãããå€äœåº§æšãã笊å·ã®ã¿ãæ®ããŸãã ãããã£ãŠãæ¢ããŠããåäœãã¯ãã«ãååŸãããŸãã
const normalizedMouseGestures = mouseGestures.map(arr => arr.map(v => { const dist = Math.hypot(vx, vy);
çµæïŒ
gestures.map(gesture => normalizedMouseGestures.mergeMap( moves => Rx.Observable.from(moves) .sequenceEqual(gesture.sequence, comparer) ).filter(x => x).mapTo(gesture.name) ).mergeAll().subscribe(gestureName => actions[gestureName]());
sequenceEqualã䜿çšãããšãåä¿¡ããåããå
ã®åããšæ¯èŒããäžèŽããå Žåã¯ç¹å®ã®ã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸãã
â
ããã§ãžã§ã¹ãã£ãŒã§éã¶ããšãã§ããŸããžã§ã¹ãã£èªèã«å ããŠãHTMLãã£ã³ãã¹ã«ã¯åæããã³æ£èŠåãããããŠã¹ã®åãã®äž¡æ¹ã®æç»ããããŸãã ã³ãŒãã®å¯èªæ§ã¯ããã«åœ±é¿ãããŸããã
ããã«ãã1ã€ã®å©ç¹ããããŸããRxã¹ããªãŒã ã䜿çšããŠèšè¿°ãããæ©èœã¯ãç°¡åã«è¿œå ããã³æ¡åŒµã§ããŸãã
ãŸãšã
- Rxã¹ããªãŒã ãå«ãã©ã€ãã©ãªã¯ãã»ãŒãã¹ãŠã®ããã°ã©ãã³ã°èšèªã§äœ¿çšã§ããŸãã
- æéå
ã«æ¡åŒµãããã€ãã³ãã¹ããªãŒã ãããå ŽåïŒãŠãŒã¶ãŒå
¥åãªã©ïŒãRxã¹ããªãŒã ã䜿çšããå¿
èŠããããŸãã
- Rxã¹ããªãŒã ã䜿çšããŠèšè¿°ãããæ©èœã¯ãç°¡åã«è£è¶³ããã³æ¡åŒµã§ããŸãã
- éå€§ãªæ¬ é¥ã¯èŠã€ãããŸããã§ããã