Slide 1

Slide 1 text

Ϟμϯ8FCγεςϜ։ൃ /BPZB*UP ,BJ[FO1MBUGPSN *OD 2$PO50,:0

Slide 2

Slide 2 text

,BJ[FO1MBUGPSN͔Βདྷ·ͨ͠

Slide 3

Slide 3 text

ຊۀ͸Ე૊৫ϚωδϝϯτͰ͢ ϚΠφϏͰϚωδϝϯ τஊٛ࿈ࡌத

Slide 4

Slide 4 text

ຊ೔ͷ࿩ͷྲྀΕ •  ࡢࠓݸਓతʹؾʹͳͬͨΞʔΩςΫνϟɾ ύϥμΠϜ •  ͦΕΒ֓؍ΛݟͭͭʮϞμϯ8FCγες Ϝʯͷ܏޲Λߟ࡯ ڞ௨ͨ͠Կ͔͕ݟ͍ͩͤ Δ͔ɺ൱͔

Slide 5

Slide 5 text

Ϟμϯʮεέʔϥϒϧʯ΁ͷཁ੥ •  Ϋϥ΢υωΠςΟϒ – յΕ΍͘͢ɺ'BJMVSF͠΍͘͢ɺԣʹεέʔ ϧ

Slide 6

Slide 6 text

Πϯϑϥ •  *OGSBTUSVDUVSFBT$PEF –  $IFG "OTJCMF •  *NNVUBCMF*OGSBTUSVDUVSF •  ίϯςφܕΫϥ΢υ –  %PDLFS •  એݴతͳγεςϜ؅ཧπʔϧ –  5FSSBGPSN 3PBEXPSLFS

Slide 7

Slide 7 text

ΞϓϦέʔγϣϯ •  .JDSPTFSWJDFT •  3FBDU •  'VODUJPOBM3FBDUJWF1SPHSBNNJOH

Slide 8

Slide 8 text

݁࿦ͱͯ͠Կ͕ݴ͍͍͔ͨ •  ࡢࠓͷΞʔΩςΫνϟ΍ύϥμΠϜͷഎޙʹ͋ ΔςʔϚ͸ʮঢ়ଶʯ΍ʮґଘؔ܎ʯͱͲ͏ઓ͏ ͔ ͕ɺଟ͍ •  ྑ͍ύϥμΠϜɺΞʔΩςΫνϟ͸ͦ͜ʹճ౴ Λ͍࣋ͬͯΔ Ϟμϯͱ͍͏͔ɺܭࢉػ ͷྺ࢙͕ͣͬͱͦ͏͍͏ ΋ͷ͔΋

Slide 9

Slide 9 text

*OGSBTUSVDUVSFBT$PEF

Slide 10

Slide 10 text

*OGSBTUSVDUVSFBT$PEF •  ϓϩϏδϣχϯάϑϨʔϜϫʔΫ – $IFG – 1VQQFU – "OTJCMF

Slide 11

Slide 11 text

αʔόʔͷʮঢ়ଶʯ ґଘؔ܎ •  ͋Δ೔ೲ඼͞Εͨ3BJMTαʔόʔ –  9݄9೔ʹ%/4ΩϟογϡΛઃఆͨ͠ –  :݄:೔ʹϓϩηε਺Λνϡʔχϯάͨ͠ –  ;݄;೔ʹSVCZͷόʔδϣϯΛ্͛ͨ –  ŋŋŋ ͍Ζ͍Ζ܁Γฦ͠ •  ͜ͷαʔόʔʹ൒೥ৼΓʹΞϓϦΛσϓϩΠ –  Ռͨͯ͠σϓϩΠ͸ਖ਼͘͠ऴΘΔͷ͔

Slide 12

Slide 12 text

$IFG αʔόʔͷ͋Δ΂͖ঢ়ଶ Λએݴతʹهड़͢Δ

Slide 13

Slide 13 text

ঢ়ଶ͕ίʔυʹͳΕ͹͋Δ΂͖ঢ়ଶ΁ ͷऩଋ͸ࣗಈԽͰ͖Δ

Slide 14

Slide 14 text

ঢ়ଶΛهड़͢Δ •  ϓϩϏδϣχϯά'8ΛͲ͏ݟΔ͔ – ηοτΞοϓͷࣗಈԽ ŋŋŋ͜Ε͸ݶఆత – ຊ࣭ŋŋŋঢ়ଶͷ એݴతͳ هड़ ͦΕ·Ͱهड़͞Ε͍ͯͳ ͍͕ͨΊʹϓϩάϥϜ͔ ΒऔΓѻ͏͜ͱ͕Ͱ͖ͳ ͔ͬͨ΋ͷ

Slide 15

Slide 15 text

Ͳ͔ͬͰݟͨͧ •  #VOEMFS – εΫϦϓτݴޠʹ͓͚ΔϥΠϒϥϦͷґଘؔ ܎໰୊ ͋Δ͋Δ

Slide 16

Slide 16 text

#VOEMFSҎલ •  HFNJOTUBMMGPPCBS – άϩʔόϧͳྖҬʹΠϯετʔϧ – ΞϓϦέʔγϣϯͷಈ࡞ʹඞཁͳHFN͕Կ ͔໌ࣔతʹ͸෼͔Βͳ͍ – HFN͕૿͑Δ㱺ϑΝΠϧγεςϜΛίϐʔ ͢ΔҎ֎ͷํ๏Ͱ؀ڥΛ࠶ݱ͢Δͷ͕ࠔ೉ʹ

Slide 17

Slide 17 text

#VOEMFS

Slide 18

Slide 18 text

#VOEMFSޙ •  ঢ়ଶͷ એݴతͳ هड़ – ඞཁͳHFNΛ(FNpMFʹએݴ – ಉ͡ߏ੒Λ࠶ݱՄೳʹ •  ϕετϓϥΫςΟε – /PEFͷOQN 1FSMͷDQBOpMF

Slide 19

Slide 19 text

΋ͱ͍ɺ*OGSBTUSVDUVSFBT$PEF •  ͜Ε·Ͱҙࣝ͞Εͯ͜ͳ͔ͬͨʮঢ়ଶʯ΍ʮґଘؔ܎ʯ Λهड़͢Δ •  ႈ౳ੑ ΂͖ͱ͏ੑ –  ͋Δૢ࡞Λճߦͬͯ΋ෳ਺ճߦͬͯ΋݁Ռ͕ಉ͡Ͱ͋Δ͜ ͱ 8JLJQFEJB –  ಉ͡ߏ੒ͷϊʔυΛ͍ͭͰ΋࠶ੜ࢈Ͱ͖Δ ݁ՌɺյΕ΍͘͢ɺԣʹ εέʔϧ͢Δ؀ڥʹద߹

Slide 20

Slide 20 text

αʔόʔ؅ཧNFFUT(JU •  αʔόʔͷঢ়ଶ͕͢΂ͯίʔυͰهड़Ͱ͖ ͨͳΒɺ(JUͰ؅ཧ͢Ε͹ྑ͍

Slide 21

Slide 21 text

ΠϯϑϥNFFUT(JUIVC Πϯϑϥ΋QVMMSFRVFTUɺίʔυϨϏϡʔ

Slide 22

Slide 22 text

ΠϯϑϥΛςετŋŋŋ4FSWFSTQFD

Slide 23

Slide 23 text

NBTUFSʹมߋ QVMMSFRVFTU͕ NFSHF͞ΕΔ $JSDMF$*͕ͦΕ Λݕ஌ͯ͠ɺίʔυ Λ(JU)VC͔Βऔಘ &$ʹରͯ͠ $JSDMF$*͔Β$IFG ద༻ มߋ͕൓ө͞Ε Δ Πϯϑϥ΋$*Λى఺ʹσϦόϦʔ

Slide 24

Slide 24 text

3PBEXPSLFS hosted_zone  "winebarrel.jp."  do      rrset  "winebarrel.jp.",  "A"  do          ttl  300          resource_records(              "127.0.0.1",              "127.0.0.2"          )      end        rrset  "winebarrel.jp.",  "MX"  do          ttl  300          resource_records(              "10  mx.winebarrel.jp",              "10  mx2.winebarrel.jp"          )      end   end $  roadwork -­‐-­‐apply   %/4ϨίʔυΛએݴతʹ هड़

Slide 25

Slide 25 text

5FSSBGPSN resource  "aws_instance"  "dev001_foobar_net"  {          ami                          =  "ami-­‐xxxxxxxx"          instance_type      =  "t2.micro"          key_name                =  "xxxxxxxxxxxxxxxx"          security_groups  =  ["sg-­‐xxxxxxxx"]          subnet_id              =  "subnet-­‐xxxxxxxx"          tags  {                  Name        =  "dev001.foobar.net"                  Role        =  "common"                  Service  =  "operator"                  Env          =  "dev"          }   } $  terraform apply   Πϯϑϥ Πϯελϯε΍ ωοτϫʔΫ ߏ੒Λએݴ తʹهड़

Slide 26

Slide 26 text

NBTUFSʹมߋ QVMMSFRVFTU͕ NFSHF͞ΕΔ $JSDMF$*͕ͦΕ Λݕ஌ͯ͠ɺίʔυ Λ(JU)VC͔Βऔಘ "84ʹରͯ͠ $JSDMF$*͔Β SPBEXPSLFS΍ UFSSBGPSNΛద༻ มߋ͕൓ө͞Ε Δ (JU)VCͰ؅ཧ͠$*Ͱద༻

Slide 27

Slide 27 text

એݴతͳγεςϜ؅ཧπʔϧ •  5FSSBGPSN΍3PBEXPSLFSŋŋŋϓϩϏδϣ χϯά'8ͱൃ૝͸ಉ͡ –  ঢ়ଶΛએݴతʹهड़ –  ݁ՌɺϓϩάϥϚϒϧ͔ͭಉҰͷϫʔΫϑϩʔʹ

Slide 28

Slide 28 text

ঢ়ଶΛ͏·͘ѻ͏ •  ঢ়ଶΛ͏·͘ѻ͏ͱ༷ʑͳԸܙ – ࠶ݱՄೳੑ ϙʔλϏϦςΟ – ςελϏϦςΟ – Ϋϥ΢υ΁ͷద߹ – ΑΓϓϩάϥϚϒϧʹ ͬ͘͟Γݴ͏ͱ ʮεέʔϥϒϧʯ

Slide 29

Slide 29 text

*NNVUBCMF *OGSBTUSVDUVSF

Slide 30

Slide 30 text

ঢ়ଶΛ؅ཧ͠ͳ͍ •  ϓϩϏδϣχϯά'8͸ঢ়ଶΛద੾ʹهड़͢Δ ͜ͱΛ໨ࢦͨ͠ –  ·ͣ·͢੒ޭͨ͠ •  ͦ΋ͦ΋ঢ়ଶΛ؅ཧ͠ͳ͍ͱ͍͏ߟ͑ํ͸ͳ͍ ͷ͔ –  㱺*NNVUBCMF

Slide 31

Slide 31 text

*NNVUBCMF*OGSBTUSVDUVSF •  %JTQPTBCMF$PNQPOFOUT •  ෆมͳɺঢ়ଶΛ࣋ͨͳ͍ɺഇغՄೳͳ

Slide 32

Slide 32 text

*NNVUBCMFͱ͍͏ߟ͑ํ •  ϓϩάϥϛϯάͰ΋ѻΘΕΔ֓೦ – ʮ*NNVUBCMFͳσʔλߏ଄ʯ –  جຊతʹ ྑ͍࡞๏ ؔ਺ܕϓϩάϥϛϯά ʹ͓͚Δࢀরಁ໌ʹ΋ ܨ͕Δߟ͑ํ

Slide 33

Slide 33 text

#MVF(SFFO%FQMPZNFOU

Slide 34

Slide 34 text

)FSPLV )FSPLV͸HJUQVTI͢Δຖɺ৽͍͠؀ڥ ίϯςφ Λ࡞Γɺݹ͍؀ڥΛغͯΔ

Slide 35

Slide 35 text

5SBWJT$* 5SBWJT$*΋ςετΛ࣮ߦ͢ΔͨͼɺίϯςφΛ࡞ΓऴΘͬͨΒغͯΔ

Slide 36

Slide 36 text

*NNVUBCMFΛ੍໿ʹ •  มߋŋŋŋغͯͯ৽͍͠΋ͷΛ༻ҙ͢Δ – ݁ՌతʹɺΑΓغͯ΍͘͢ɺΑΓ࠶ݱ͠΍͢ ͍γεςϜʹ յΕ΍͘͢ɺԣʹεέʔ ϧ͢Δ؀ڥʹΑΓద߹

Slide 37

Slide 37 text

*NNVUBCMFʙΛࢧ͑Δٕज़ ίϯςφ

Slide 38

Slide 38 text

%PDLFS

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

https://speakerdeck.com/jbeda/containers-at-scale

Slide 41

Slide 41 text

*NNVUBCMF૚ ʮΞϓϦέʔγϣϯίʔ υʯ͕Քಇ͢Δ৔ॴ

Slide 42

Slide 42 text

ύλʔϯ •  ϞμϯΠϯϑϥʹ͓͚Δঢ়ଶͷѻ͍ – ঢ়ଶΛهड़͠؅ཧՄೳʹ͢Δ – ෆมΛલఏʹɺঢ়ଶΛ؅ཧ͠ͳ͍ •  มߋŋŋŋݹ͍෺͸ഁغɺ৽͍͠΋ͷΛ༻ҙ ಘΒΕΔ΋ͷ εέʔϥϏϦςΟ

Slide 43

Slide 43 text

.JDSPTFSWJDFT

Slide 44

Slide 44 text

.JDSPTFSWJDFT •  Ұ࿈ͷখ͞ͳαʔϏεͰͭͷΞϓϦέʔγϣ ϯΛ։ൃ͢Δख๏ –  ಠཱͨ͠খ͞ͳίϯϙʔωϯτ͕)551"1*Ͱ௨৴ –  㲈40"ɺͨͩ͠6/*9ͷσβΠϯʹ͍ۙ

Slide 45

Slide 45 text

source:  Scaling  with  Microservices  and  Ver6cal  Decomposi6on     h:p://dev.o:o.de/2014/07/29/scaling-­‐with-­‐microservices-­‐and-­‐ver6cal-­‐decomposi6on/

Slide 46

Slide 46 text

ͳͥ.JDSPTFSWJDFT •  ϞϊϦγοΫͰ௕͘΍ͬͯΔͱͭΒ͍ –  UZQP௚͢ͷʹશମϏϧυσϓϩΠ –  ͋ͦ͜มߋͨ͠Β༧૝֎ͷͱ͜Ζ͕յΕͨ –  "1*͚ͩεέʔϧ͍ͤͨ͞ͷʹશ෦ల։ •  ಠཱͨ͠։ൃɾσϓϩΠαΠΫϧΛ֫ಘ͍ͨ͠ –  ૄ݁߹ –  ૊৫ͷಠཱੑΛߴΊΔ See  Also:  "Microservices"を読んだ   h:p://deeeet.com/wri6ng/2014/09/10/microservices/  

Slide 47

Slide 47 text

.JDSPTFSWJDFTͷΞϓϩʔν •  ӨڹൣғΛہॴԽ͢Δ – 㲈ঢ়ଶΛؔ܎͋Δ෦෼͚ͩʹӅṭ͢Δ ͜Ε΋ܧଓతʹอक͍ͯ͠ ͘γεςϜʹ͓͚Δʮঢ় ଶʯͷऔΓѻ͍΁ͷઓུͱ ݴ͑Δ

Slide 48

Slide 48 text

.JDSPTFSWJFTͱ*NNVUBCMF *OGSBTUSVDUVSF •  .JDSPTFSWJFTԽʹΑͬͯͻͱͭͷγεςϜ͸୯Ұͷ໾ ׂͷίϯϙʔωϯτʹ •  %PDLFSͳͲͷίϯςφΤϯδϯ΋୯Ұͷ໾ׂͷίϯ ϙʔωϯτ͕ڠௐಈ࡞͢ΔઃܭΛલఏ –  º'BUͳ%PDLFSΠϝʔδ –  ˓Ұͭͷ໾ׂΛ୲͏%PDLFSΠϝʔδ .JDSPTFSWJDFTʹΑΓঢ়ଶ ͷӨڹൣғΛہॴԽ͠ɺͦ ͷΠϯϑϥ͸ෆมͳ΋ͷͱ ͠ɺಠཱੑΛߴΊΔ

Slide 49

Slide 49 text

ಘΒΕΔ΋ͷ •  ίϯϙʔωϯτͷಠཱੑ – ։ൃαΠΫϧ – σϓϩΠαΠΫϧ – ͦΕ͚ͩͰεέʔϦϯά ΍͸Γ ʮεέʔϥϒϧʯ

Slide 50

Slide 50 text

3FBDU

Slide 51

Slide 51 text

3FBDU

Slide 52

Slide 52 text

3FBDUKT •  'BDFCPPL •  ೥ࠒʹൃද •  +BWB4DSJQUͷ7JFXϥΠϒϥϦ •  ೥ࠒ͔Β࿩୊ʹ

Slide 53

Slide 53 text

K2VFSZ ໋ྩతͳ%0.ૢ ࡞ίʔυ܈

Slide 54

Slide 54 text

%0.ૢ࡞ •  %0.ૢ࡞ͷ೉͠͞ – %0.͕ঢ়ଶΛ͍࣋ͬͯΔ – άϩʔόϧ – ඇಉظ •  ໋ྩతͳίʔυ ͍ͭɺͲ͔͜Βॻ͖ ׵͑ΒΕΔ͔Θ͔Β ͳ͍ঢ়ଶΛؒҧ͍ͳ ͘؅ཧ͠ͳ͚Ε͹ͳ Βͳ͍

Slide 55

Slide 55 text

3FBDU σʔλϞσϧͷ ঢ়ଶʹมߋΛ௨ ஌ એݴతʹఆٛ͞ Εͨ%0.ߏ଄͕ Α͠ͳʹ࠶ඳը

Slide 56

Slide 56 text

એݴత •  ໋ྩత –  $16ʹର͢Δ໋ྩͷखଓ͖Λॻ͘ –  ίϚϯυΛ༩͑Δ •  એݴత –  ࣮ݱ͍ͨ͜͠ͱͦͷ΋ͷΛهड़͢Δ –  ͋Δ΂͖ঢ়ଶΛఆٛɺؔ܎ੑͷهड़FUD see  also:  宣言的プログラミングの「宣言的」って?   h:p://d.hatena.ne.jp/sh-­‐2/20091006/1254847253 ΍΍ᐆດ͔ͭ૬ର తͳݴ༿Ͱ͸͋Δ ΋ͷͷ

Slide 57

Slide 57 text

3FBDU໋ྩతˠએݴత •  ໋ྩతͰ͋ͬͨ7JFXͷ૊Έཱͯ %0.ૢ࡞ Λɺ એݴతͳύϥμΠϜʹ •  ʮσʔλϞσϧʹมߋ͕͋ͬͨΒ%0.Λؙ͝ ͱߋ৽ʯ –  αʔόʔαΠυ೴ –  ඇޮ཰ͳ෦෼͸7JSUVBM%0.͕ղܾ ϑϩϯτΤϯυ6*։ൃΛɺ αʔόʔαΠυͱಉ͡෋ ߽తϓϩάϥϛϯάελ Πϧʹ໭͢

Slide 58

Slide 58 text

7JSUVBM%0. •  3FBDUͷόοΫΤϯυʹ͋Δ %0.ߏ଄Λந৅Խͨ͠σʔλ ߏ଄ •  σʔλϞσϧͷঢ়ଶมԽʹ߹Θ ͤͯ7JSUVBM%0.ͷલޙͷ EJ⒎Λࢉग़ •  ੜ%0.࠶ඳըΛࠩ෼ͷ͋ͬͨ Օॴ͚ͩߦ͏ source:  React’s  diff  algorithm   h:p://calendar.perfplanet.com/2013/diff/  

Slide 59

Slide 59 text

3FBDU͕ୡ੒ͨ͜͠ͱ •  6*։ൃʹ͓͚Δঢ়ଶ؅ཧ͔Βͷղ์ •  ൃ໌ – 7JSUVBM%0. – εςʔτϨείϯϙʔωϯτΛ࣮ݱ͢Δσʔ λϑϩʔ

Slide 60

Slide 60 text

'MVY

Slide 61

Slide 61 text

'MVY •  3FBDU͸7JFX͚ͩ •  'MVY͸Ϟσϧ 4UPSF ΛؚΊͨΞϓϦέʔ γϣϯશମͷΞʔΩςΫνϟ –  ॲཧͷهड़৔ॴΛఆΊΔ –  σʔλϑϩʔΛఆΊΔ •  Πϕϯτͷґଘؔ܎ͷෳࡶੑΛղফ –  Πϕϯτ΍σʔλϑϩʔͷํ޲ΛҰํ௨ߦʹ͢Δ

Slide 62

Slide 62 text

3FBDU/BUJWF •  3FBDUͱಉ͡࡞๏ͰJ04"OESPJE΋ •  -FBSO0ODF 8SJUF"OZXIFSF

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

'31 'VODUJPOBM3FBDUJWF 1SPHSBNNJOH

Slide 65

Slide 65 text

ϦΞΫςΟϒϓϩάϥϛϯά •  ΋ͱ΋ͱ͸ҎԼͷΑ͏ͳ֓೦ –  σʔλͷྲྀΕΛ௨ͯ͡มߋΛ఻ൖ –  σʔλͷྲྀΕʹ൓Ԡ –  㱺ΠϕϯτۦಈɺΦϒβʔόʔɺ"DUPSɺ'VUVSF •  ޿ٛͷɺڱٛͷŋŋŋ͕͋Δ –  ֦େղऍ͠Α͏ͱ͢ΔͱͲ͜·Ͱ΋͍͚Δ ཁ஫ҙ –  ݸਓతʹ͸'31ͷจ຺Ҏ֎Ͱ͸͋·Γݴٴ͠ͳ͍Α ͏ʹ͍ͯ͠Δ

Slide 66

Slide 66 text

ʮ3FBDUJWFͬΆ͍ʯͱ͸ •  σʔλϑϩʔΛએݴతʹѻ͏ – σʔλͷؔ܎ੑΛએݴతʹද͍ͯ͠Δ͔ source:  Reac6ve  Programming  in  JavaScript   h:p://ahomu.github.io/s/150221-­‐frontrend_conference/#39

Slide 67

Slide 67 text

'VODUJPOBM3FBDUJWF 1SPHSBNNJOH •  ؔ਺ܕϦΞΫςΟϒ •  )BTLFMMˠ$-*/2ˠ3Y •  ͦͷޙ – 3Y+BWB – 3FBDUJWF$PDPB – 3Y+4 #BDPOKT – 

Slide 68

Slide 68 text

ྫ ͱԡ͢ͱ Λԡ͢ͱ

Slide 69

Slide 69 text

໋ྩతʹॻ͘ •  Χ΢ϯλม਺Λ༻ҙ •  ॳظ஋Λඳը •  Ϙλϯ͕ԡ͞ΕͨΒΧ΢ϯλΛͯ͠࠶ඳ ը •  Ϙλϯ͕ԡ͞ΕͨΒΧ΢ϯλΛͯ͠࠶ඳը

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

σʔλϑϩʔʹண໨͢Δ + + + + ·ͣɺϘλϯͷΫϦοΫΠϕϯτΛ࣌ܥྻʹԊͬͯྲྀΕͯ͘ΔϦετ ετϦʔϜޙड़ ͱߟ͑Δɻ Πϕϯτ͸ετϦʔϜΛྲྀΕΔ஋ͱΈͳͤΔ

Slide 72

Slide 72 text

+ + + + ϚΠφεϘλϯ΋ಉ༷ʹߟ͑Δ -­‐ -­‐

Slide 73

Slide 73 text

+ + + + ϘλϯΠϕϯτ͸ɺ͢Δ͜ͱɻ Ώ͑ʹͱ͍͏஋ʹม׵ 5SBOTGPSN ͯ͠ΈΔ 1 1 1 1

Slide 74

Slide 74 text

ϘλϯΠϕϯτ͸ɺ͢Δ͜ͱɻ Ώ͑ʹͱ͍͏஋ʹม׵ 5SBOTGPSN ͯ͠ΈΔ -­‐ -­‐ -­‐1 -­‐1

Slide 75

Slide 75 text

1 1 1 1 -­‐1 -­‐1 1 1 1 1 -­‐1 -­‐1 ;ͨͭͷΠϕϯτ͸ඇಉظʹࠞͬͯ͟ಧ͘΋ͷͰ͋Δ Ώ͑ʹೋͭͷετϦʔϜΛϚʔδ͢Δ

Slide 76

Slide 76 text

1 1 1 1 -­‐1 -­‐1 1 1 2 0 1 2 Ϛʔδ͞ΕͨετϦʔϜΛɺҰͭલͷ஋ͱͷࢉज़݁Ռʹม׵

Slide 77

Slide 77 text

1 1 2 0 1 2 ஋͕มԽ͢Δຖʹը໘Λ࠶ඳը ෭࡞༻

Slide 78

Slide 78 text

'31XJUI#BDPOKT

Slide 79

Slide 79 text

+ + + + Bacon.fromEvent(plusButton,  'click')

Slide 80

Slide 80 text

+ + + + -­‐ -­‐ Bacon.fromEvent(minusButton,  'click')

Slide 81

Slide 81 text

+ + + + 1 1 1 1 plusClickStream.map(1)

Slide 82

Slide 82 text

-­‐ -­‐ -­‐1 -­‐1 minusClickStream.map(-­‐1)

Slide 83

Slide 83 text

1 1 1 1 -­‐1 -­‐1 1 1 1 1 -­‐1 -­‐1 plusStream.merge(minusStream)

Slide 84

Slide 84 text

1 1 1 1 -­‐1 -­‐1 1 1 2 0 1 2 bothStream.scan(0,  (x  +  y)  =>  x  +  y)

Slide 85

Slide 85 text

1 1 2 0 1 2 counterBus.onValue(  /*  ը໘ඳը  */)

Slide 86

Slide 86 text

ͳΜ͔ͩΘ͔ͬͨΑ͏ͳ Θ͔Βͳ͍Α͏ͳŋŋŋ

Slide 87

Slide 87 text

ࠓճͷจ຺Ͱݴ͑͹ ண໨͢΂͖͸ʮετϦʔϜʯ

Slide 88

Slide 88 text

source:  Reac6ve  Programming  in  JavaScript   h:p://ahomu.github.io/s/150221-­‐frontrend_conference/#39

Slide 89

Slide 89 text

ඇಉظσʔλετϦʔϜ •  શͯͷσʔλϑϩʔΛετϦʔϜͱͯ͠ѻ͏ –  ୯Ұͷ஋΋ɺෳ਺ͷ஋΋ɺ1SPNJTF΋ •  ετϦʔϜΛϦετͱΈͳ͢ •  Ϧετૢ࡞㱺ؔ਺ܕͷΠσΟΦϜͰૢ࡞Ͱ͖Δ •  ؔ਺ܕ –  એݴత –  ୈڃߴ֊ؔ਺ –  ࢀরಁ໌͔ͭ෭࡞༻Λආ͚Δ ہॴԽ͢Δ

Slide 90

Slide 90 text

ࢥߟͷྲྀΕ •  ʮ࣌ؒͱڞʹมԽ͢Δ஋ͷσʔλܕ͕ཉ͍͠ʯ •  㱺ετϦʔϜΛಋೖ •  㱺Πϕϯτ΍ඇಉظॲཧ·ͰετϦʔϜʹ –  ʮ͋Εɺશ෦ετϦʔϜͰѻ͑Δ͡Όͳ͍ ʯ •  㱺શͯΛ౷Ұ͞ΕͨετϦʔϜͱ͍͏ΠϯλϑΣʔεͰ •  㱺ϦετΏ͑ʹؔ਺ܕͷΠσΟΦϜɺύϥμΠϜ –  ʮϦετૢ࡞Ͱ͢ΔͳΒؔ਺ܕ͕Ԡ༻Ͱ͖Δ͡Όͳ͍ʯ •  㱺෭࡞༻Λආ͚ͨએݴతͳهड़ •  㱺ࢀরಁ໌ঢ়ଶ؅ཧ͔Βͷղ์

Slide 91

Slide 91 text

"OESPJE΍J04Ͱ΋3FBDUJWF •  3Y+BWB΍3FBDUJWF$PDPBͷྲྀߦ •  ͨͩ͠ɺ'31Λਖ਼໘͔Βಋೖ͢ΔͷͰ͸ͳ͘ศརͳϥ ΠϒϥϦͱͯ͠ݶఆతʹಋೖ͢Δͱ͜Ζ͔Β࢝ΊΔྫΛ Α͘Έ͔͚Δ –  ศརͳίϨΫγϣϯૢ࡞ϥΠϒϥϦͱͯ͠ –  .77.ͷσʔλόΠϯσΟϯά࣮૷ͱͯ͠

Slide 92

Slide 92 text

·ͱΊ

Slide 93

Slide 93 text

τϨʔυΦϑ ྫ •  *OGSBTUSVDUVSFBT$PEFֶशίετ •  *NNVUBCMF*OGSBTUSVDUVSF؀ڥߏஙίετ •  .JDSPTFSWJDFTϞϊϦγοΫΑΓܥશମͷෳࡶੑ͸૿ ͢ •  3FBDUKTίʔυྔ૿͑Δ •  '31ֶशίετ

Slide 94

Slide 94 text

εέʔϥϒϧŋŋŋঢ়ଶΛͲ͏ѻ͏͔ •  എܠ –  ࣌୅ͷཁ੥ •  Ϋϥ΢υωΠςΟϒ •  ඇಉظͳΞϓϦέʔγϣϯ •  ࣌ؒͱڞʹԿ͔ͱෳࡶԽ͠΍͍͢8FCγεςϜ •  ࢧ഑తͳϑΝΫλʔঢ়ଶͷѻ͍ –  Ӆṭ –  એݴతʹهड़ –  *NNVUBCMF େن໛τϥϑΟοΫ ͔ͩΒɺͱ͍͏࿩ͩ ͚Ͱͳ͘ͳ͖ͬͯͯ Δ

Slide 95

Slide 95 text

·ͱΊ •  ۙ೥ݸਓతʹண໨ͨ͠τϨϯυΛΈͨ –  *OGSBTUSVDUVSFBT$PEF –  *NNVUBCMF*OGSBTUSVDUVSF –  .JDSPTFSWJDFT –  3FBDU –  3FBDUJWF1SPHSBNNJOH •  ෳࡶੑ΁ͷରࡦͱͯ͠ͷঢ়ଶ؅ཧख๏ʹύλʔ ϯ͕ݟ͍ͩͤΔ

Slide 96

Slide 96 text

13࠾༻ͯ͠·͢ ʮ,BJ[FO࠾༻ʯͰݕࡧɻڵ ຯ͋Δ͚ͩͰ΋Մɻͦͷ৔ ߹͸8BOEUFEMZͰ