Slide 1

Slide 1 text

෼ࢄΞϓϦέʔγϣϯ ΞʔΩςΫνϟ /BPZB*UP ,BJ[FO1MBUGPSN *OD  %FWFMPQFS4VNNJU"VUVNO

Slide 2

Slide 2 text

ґཔ •  ʮ8FCςΫϊϩδʔͷ࠷લઢɺಛʹେྔͷτϥϑΟοΫ ͱσʔλͷ࠷લઢͰઓ͏։ൃऀͱΠϯϑϥΤϯδχΞͷ ͨΊͷςΫϊϩδʔϚοϓΛఏ͍ࣔͯͩ͘͠͞ʯ •  ʮૄ݁߹Ͱڧਟͳ8FCγεςϜΛ࡞Γɺ·ͨӡ༻ɺ %FW0QTɺεέʔϧΞ΢τ্͍ͤͯ͘͞Ͱԡ͓͑ͯ͘͞ ΂͖τϐοΫΛڍ͍͛ͯͩ͘͞ʯ

Slide 3

Slide 3 text

େྔτϥϑΟοΫͱσʔλ •  ͔ͭͯ͸-".1Ͱ3%#ʹೖΕͯɺॲཧ͖͠Εͣʹۤ ͠ΜͰ͍ͨ –  ෳࡶͳόονΛྲྀ͢ͱ*0͕٧·Δ –  ಉظॲཧͷ8FCΞϓϦέʔγϣϯͰ͸ϦΞϧλΠϜʹσʔλΛ ը໘ʹ൓ө͢ΔͷʹҰۤ࿑

Slide 4

Slide 4 text

ࡢࠓ •  όον –  )BEPPQ΍#JH2VFSZతͳ΋ͷʹ೚ͤΔ –  ͜ΕͰ೰Ήػձ͸গͳ͘ͳͬͨ  •  όονͰ͸ͳ͍ॲཧ ετϦʔϜ  –  ·ͩྗۀͰ৐Γ੾͍ͬͯΔˡ͍·͜͜ –  ,BJ[FO1MBUGPSNͰ͸ •  "#ςετͷMPHΛड͚औͬͯܭࢉ͢ΔαʔόʔFUD –  ඞવతʹ෼ࢄγεςϜʹ –  ͜ͷล͜Ε͔ΒͲ͏ͳ͍ͬͯ͘ΜͩΖ͏  σʔλॲཧج൫΍ෛՙ෼ࢄʹͭ ͍ͯ͸ॾઌഐ͕ޠΔͱࢥ͏ͷͰɺ ΞϓϦέʔγϣϯɾΞʔΩςΫ νϟʹ͍ͭͯ

Slide 5

Slide 5 text

3FBMUJNF8FC

Slide 6

Slide 6 text

ϦΞϧλΠϜ8FC •  ͦ͏ݴΘΕͯ͸΍೥ –  ͋·Γฉ͔ͳ͘ͳͬͨ –  ഇΕͨΘ͚Ͱ͸ͳ͘ 5XJUUFS΍'BDFCPPL͕ୡ੒͠ɺࡢࠓ͸ ίϞσΟςΟʹ •  Ͱ΋ɺ·͚ͩͬ͜͏ྗۀͰ࡞͍ͬͯΔ –  Ұ෦ʹ1VC4VCͷϛυϧ΢ΣΞΛೖΕͯŋŋŋ –  ཪͰ͸1PMMJOHͯ͠ϦΞϧλΠϜʹݟ͔͚ͤͯŋŋŋ –  ಉظͳ+40/PWFS)551Ͱŋŋŋ

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

3FBDUJWF4ZTUFN •  4DBMBͷ1MBZ"LLB౳ͷ5ZQFTBGF͕ࣾఏҊ͢ΔϞ μϯͳ8FC ౳ͷ γεςϜํࣜ –  5ZQFTBGF3FBUJWF1MBUGPSN •  1MBZ"LLB4MJDL4QBSLͳͲΛ࢖ͬͯϦΞϧλΠϜͳγεςϜ Λମܥཱͬͨख๏ͰߏஙͰ͖Δ  •  3FBDUJWF.BOJGFTUPΛຬͨ͢ –  IUUQXXXSFBDUJWFNBOJGFTUPPSH –  ˞ͳ͓ɺ͜ͷจॻʹؔͯ͠͸3FBDUJWFͱ͍͏ݴ༿ͷ࢖͍ํʹ͍ͭͯ൷൑͕͋ΔͷͰ஫ҙ •  QPLBSJN͞Μͷ3FBDUJWF.BOJGFTUPʹؔ͢Δҹ৅IUUQUPHFUUFSDPNMJ

Slide 9

Slide 9 text

3FBDUJWF.BOJGFTUP •  ࡢࠓͷ෼ࢄΞϓϦέʔγϣϯ͕ٻΊΔੑ࣭ •  ϝοηʔδύογϯάɺϊϯϒϩοΩϯάɺ4IBSFE/PUIJOHɺૄ݁߹Ͱ࣮ݱ͠Α͏ͱ ͍͏͜ͱΛఏҊ

Slide 10

Slide 10 text

h"ps://speakerdeck.com/okapies/reac1ve-streams-ru-men-number-jjug

Slide 11

Slide 11 text

3FBDUJWF4ZTUFNͷ࣮ࡍ •  શͯͷίϯϙʔωϯτ͕ඇಉظΠϯλϑΣʔεΛ࣋ͭ –  8FCϑϨʔϜϫʔΫ 1MBZ ɺϝοηʔδج൫ "LLB ɺσʔλ 4MJDL 4QBSL  –  'VUVSFͰந৅Խ –  ૬ޓ઀ଓ͸3FBDUJWF4USFBNTʹै͏ •  3FBDUJWF4USFBNT –  ͢΂͕ͯඇಉظˠྲྀྔ੍ޚ͕ඞཁ •  σʔλΛྲྀ͠·͘Δͱܾյͯ͠͠·͏ –  +7.ॲཧܥʹ͓͚Δ1VC4VC ྲྀྔ੍ޚ CBDLQSFTTVSF ͷ "1*࢓༷ͷඪ४Խ •  ϛυϧ΢ΣΞ޲͚ͷ"1*Ͱ͋ΓɺϢʔβʔ͸ҙࣝ͠ͳ͍

Slide 12

Slide 12 text

h"p://www.slideshare.net/rolandkuhn/akka-streams-and-h"p

Slide 13

Slide 13 text

h"p://www.slideshare.net/rolandkuhn/akka-streams-and-h"p όοΫΤϯυͷσʔλϑ ϩʔΛετϦʔϜͱͯ͠ ѻ͏Α͏ந৅Խ

Slide 14

Slide 14 text

ߟ࡯ •  ྗۀˠମܥͩͬͨख๏ͱ࣮૷Ͱ࡞Δ –  ϑϩϯτ͔ΒόοΫΤϯυ·Ͱ௨͠ͰϊϯϒϩοΩϯ άલఏͷϛυϧ΢ΣΞ܈ –  ඇಉظετϦʔϜͱ͍͏ϓϩάϥϛϯάϞσϧͱ"1* ඪ४ʹΑΔ૬ޓ઀ଓੑ ϦΞΫςΟϒ͔Ͳ͏ ͔͸͓͖ͯ͞ŋŋŋ

Slide 15

Slide 15 text

ͪͳΈʹ •  5ZQFTBGF3FBDUJWF1MBUGPSNͷϝοηʔδج൫ͷ "LLB͸&SMBOH051ͷΠϯεύΠΞ –  &SMBOH051΋3FBDUJWF.BOJGFTUPΛຬͨ͢Α –  &SMBOH051ͱ͍͑͹&MJYJS –  ࠓ೔͸&MJYJSͷ࿩͸͠·ͤΜ 

Slide 16

Slide 16 text

.JDSPTFSWJDFT •  େن໛γεςϜΛ #PVOEFE$POUFYU Ͱ෼ׂ ౷࣏͢Δख๏ –  γεςϜΛ૊৫తʹಠཱͯ͠։ൃ͢ΔͨΊʹ෼ׂ –  ໾ׂͷҟͳΔαϒγεςϜΛૄ݁߹ʹ͢ΔͨΊ෼ׂ

Slide 17

Slide 17 text

h"ps://speakerdeck.com/okapies/reac1ve-streams-ru-men-number-jjug

Slide 18

Slide 18 text

.JDSPTFSWJDFTͷ࣮ࡍ •  ʮ.JDSPTFSJWFTʯʹ͸௨৴खஈͷఆٛ͸ͳ͍ –  ͦ΋ͦ΋ɺ୯ʹݱ৅ ʹ໊෇͚͚ͨͩ͠ –  +40/PWFS)551ͳ"1*Ͱಉظ௨৴͢Δ͚ͩͰ΋ .JDSPTFSWJDFTͱݴ͍ுΕΔ 

Slide 19

Slide 19 text

ͱ͸͍͑ŋŋŋ •  ϓϩάϥϛϯάϞσϧͷ՝୊ –  ʮͬͨࣽ͝ʯγεςϜ͸͠ΜͲ͍ –  Կͷந৅Խٕ๏΋࣋ͨͣ+40/"1*͚ͩͰ͸ෳࡶ౓͸૿͢Ұํ •  Πϯϑϥͷ՝୊ –  ௨৴ʹ͋ͨͬͯߟྀ͢΂͖ཁ͍݅Ζ͍Ζŋŋŋ •  ϦτϥΠ •  ো֐ݕ஌ •  ෛՙ෼ࢄ ϩʔυόϥϯε  •  ϑΣΠϧΦʔόʔ •  ϑϩʔ੍ޚ CBDLQSFTTVSF 

Slide 20

Slide 20 text

.JDSPTFSWJDFTϑϨʔϜϫʔΫ •  ϓϩάϥϛϯάϞσϧ ந৅Խ ͱΠϯϑϥΛఏ ڙ͢Δ࣮૷ –  'JOBHMF 5XJUUFS  –  $PMPTTVT 5VNCMS 

Slide 21

Slide 21 text

'JOBHMF •  5XJUUFS •  4DBMBͷ31$ϑϨʔϜϫʔΫ •  ;ͨͭͷଆ໘ –   ϓϩάϥϛϯάϞσϧ •  :PVS4FSWFSBTB'VODUJPOͱ'VUVSFʹΑΔαʔϏεɺ ௨৴ͷந৅Խ –   31$ͷͨΊͷΠϯϑϥ •  ো֐ݕ஌ɺϩʔυόϥϯεŋŋŋ

Slide 22

Slide 22 text

h"p://www.slideshare.net/raffikrikorian/real1me-systems-at-twi"er

Slide 23

Slide 23 text

h"p://www.slideshare.net/raffikrikorian/real1me-systems-at-twi"er

Slide 24

Slide 24 text

:PVS4FSWFSBTB'VODUJPO •  4FSWFS͸3FRΛड͚औΓ3FQΛ'VUVSFͰฦؔ͢਺ͱͯ͠ந৅Խ͞ΕΔ •  ෳ਺ͷαʔϏεݺͼग़͠Λؔ਺ݺͼग़͠ͷܨ͕Γͱͯ͠هड़Ͱ͖Δ class Service[-Req, +Rep] extends (Req => Future[Rep]) val service = new Service[httpx.Request, httpx.Response] { def apply(req: httpx.Request): Future[httpx.Response] = Future.value(httpx.Response(req.version, httpx.Status.Ok)) } val server = Httpx.serve(":8080", service) Await.ready(server)

Slide 25

Slide 25 text

'JOBHMFʹΑΔந৅Խ •  4FSWJDF'JMUFSͳͲͷந৅ԽʹΑΓϓϩάϥϚ͸31$ Λؔ਺ݺͼग़͠ͱͯ͠هड़ –  ඇಉظॲཧ͸'VUVSFͰ –  αʔόʔ΋ൺֱత༰қʹॻ͚Δ –  ҟͳΔαʔϏεݺͼग़͠Λಉ͡ΠϯλϑΣʔεͰ •  'JOBHMFͰॻ͔Εͨ௨৴͸ɺো֐ݕ஌΍ྲྀྔ੍ޚͳͲͷ ΠϯϑϥػೳΛ࣋ͭ .JDSPTFSWJDFTͰࢄΒ͹ Δ͜ͱͷෳࡶੑΛ཈͑ࠐ Ή

Slide 26

Slide 26 text

Θ͔Δ͜ͱ •  ैདྷͷํ๏Ͱ͸େن໛ͳετϦʔϜɺେ͖ͳ෼ࢄγ εςϜΛεϚʔτʹ͸ѻ͑ͳ͍ •  ૄ݁߹Խʹ൐͍ίϯϙʔωϯτؒͷ௨৴ͷந৅Խ͕ ՝୊ʹ •  ࣮૷Λ൐ͬͨ৽͍͠Ξϓϩʔν –  ந৅ϨΠϠΛඃͤͯϓϩάϥϛϯάϞσϧͱΠϯϑϥΛఏ ڙ •  5ZQFTBGF3FBDUJWF1MBUGPSN •  'JOBHMF$PMPTTVT –  ܥશମΛͲ͏ઃܭɾ࣮૷͢Δ͔ΛఏҊ  ͜ͷล͕τϨϯυ͔

Slide 27

Slide 27 text

܏޲ •  ෼ࢄγεςϜΞʔΩςΫνϟʹମܥతͳΞϓϩʔν •  ྗۀͰݸผ࠷దʹ࡞ΔϑΣʔζ͔ΒɺܥશମΛͲ͏ઃ ܭɾ࣮૷͢Δ͔ߟ͑ΔϑΣʔζʹ •  ྫ3FBDUJWF4ZTUFNTɺ.JDSPTFSWJDFTϑϨʔϜϫʔΫ –  ෼ࢄγεςϜΛ͜ͷखͷϛυϧ΢ΣΞɺϑϨʔϜϫʔΫΛ࢖ͬͯ ߏங͢Δࣄྫ͸૿͍͑ͯ͘ͱਪଌ͠·͢ •  ༨ஊͦΕʹͯ͠΋෼ࢄ31$ϑϨʔϜϫʔΫͱ͔40" తͳ΋ͷ .JDSPTFSWJDFT ͱ͔ŋŋŋʙ೥ӽ͠ʹ ΢Σϒʹ΋σϑΝΫτ͕  

Slide 28

Slide 28 text

ॾ஫ҙ •  ͨͩͷ܏޲Ͱ͋ͬͯɺʮͬͪ͜ͷํ޲ʹਐΊʯͱ͍͏࿩ Ͱ͸͋Γ·ͤΜ –  $PPLQBEͷΑ͏ʹϞϊϦγοΫͳ3BJMTγεςϜͰ૬౰ͳن໛ ·Ͱ੒௕͍ͯ͠Δ༏Εͨࣄྫ΋͋Γ·͢ •  ʮϦΞΫςΟϒʯʹ͸ॾઆ͋ΔͷͰ֤ࣗͰௐ΂·͠ΐ͏ •  4DBMBͷ࿩͕ଟ͍ͷ͸ɺ͜ͷखͷ࿩୊ͷൃ঵͕4DBMBͰ ͋Δ͜ͱ͕ଟ͍ͷ͕ཧ༝Ͱ͢ɻ 4DBMBΛਪ͍ͯ͠ΔΘ͚ Ͱ͸͋Γ·ͤΜ 

Slide 29

Slide 29 text

༨ஊ JVM BEAM Erlang / Elixir Scala OTP Akka etc. Frameworks Frameworks Reac1ve Manifesto 的な ものの基盤

Slide 30

Slide 30 text

5IBOLT