Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モダンWebシステム開発

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

 モダンWebシステム開発

Qcon Tokyo2015 での発表スライド

Avatar for Naoya Ito

Naoya Ito

April 21, 2015
Tweet

More Decks by Naoya Ito

Other Decks in Technology

Transcript

  1. Πϯϑϥ •  *OGSBTUSVDUVSFBT$PEF –  $IFG "OTJCMF •  *NNVUBCMF*OGSBTUSVDUVSF •  ίϯςφܕΫϥ΢υ

    –  %PDLFS •  એݴతͳγεςϜ؅ཧπʔϧ –  5FSSBGPSN 3PBEXPSLFS
  2. αʔόʔͷʮঢ়ଶʯ ґଘؔ܎  •  ͋Δ೔ೲ඼͞Εͨ3BJMTαʔόʔ –  9݄9೔ʹ%/4ΩϟογϡΛઃఆͨ͠ –  :݄:೔ʹϓϩηε਺Λνϡʔχϯάͨ͠ – 

    ;݄;೔ʹSVCZͷόʔδϣϯΛ্͛ͨ –  ŋŋŋ ͍Ζ͍Ζ܁Γฦ͠  •  ͜ͷαʔόʔʹ൒೥ৼΓʹΞϓϦΛσϓϩΠ –  Ռͨͯ͠σϓϩΠ͸ਖ਼͘͠ऴΘΔͷ͔
  3. 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ϨίʔυΛએݴతʹ هड़
  4. 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   Πϯϑϥ Πϯελϯε΍ ωοτϫʔΫ ߏ੒Λએݴ తʹهड़
  5. ͳͥ.JDSPTFSWJDFT  •  ϞϊϦγοΫͰ௕͘΍ͬͯΔͱͭΒ͍ –  UZQP௚͢ͷʹશମϏϧυσϓϩΠ –  ͋ͦ͜มߋͨ͠Β༧૝֎ͷͱ͜Ζ͕յΕͨ –  "1*͚ͩεέʔϧ͍ͤͨ͞ͷʹશ෦ల։

    •  ಠཱͨ͠։ൃɾσϓϩΠαΠΫϧΛ֫ಘ͍ͨ͠ –  ૄ݁߹ –  ૊৫ͷಠཱੑΛߴΊΔ See  Also:  "Microservices"を読んだ   h:p://deeeet.com/wri6ng/2014/09/10/microservices/  
  6. એݴత  •  ໋ྩత –  $16ʹର͢Δ໋ྩͷखଓ͖Λॻ͘ –  ίϚϯυΛ༩͑Δ •  એݴత

    –  ࣮ݱ͍ͨ͜͠ͱͦͷ΋ͷΛهड़͢Δ –  ͋Δ΂͖ঢ়ଶΛఆٛɺؔ܎ੑͷهड़FUD see  also:  宣言的プログラミングの「宣言的」って?   h:p://d.hatena.ne.jp/sh-­‐2/20091006/1254847253 ΍΍ᐆດ͔ͭ૬ର తͳݴ༿Ͱ͸͋Δ ΋ͷͷ
  7. 3FBDU໋ྩతˠએݴత •  ໋ྩతͰ͋ͬͨ7JFXͷ૊Έཱͯ %0.ૢ࡞ Λɺ એݴతͳύϥμΠϜʹ •  ʮσʔλϞσϧʹมߋ͕͋ͬͨΒ%0.Λؙ͝ ͱߋ৽ʯ – 

    αʔόʔαΠυ೴ –  ඇޮ཰ͳ෦෼͸7JSUVBM%0.͕ղܾ ϑϩϯτΤϯυ6*։ൃΛɺ αʔόʔαΠυͱಉ͡෋ ߽తϓϩάϥϛϯάελ Πϧʹ໭͢
  8. 7JSUVBM%0. •  3FBDUͷόοΫΤϯυʹ͋Δ %0.ߏ଄Λந৅Խͨ͠σʔλ ߏ଄ •  σʔλϞσϧͷঢ়ଶมԽʹ߹Θ ͤͯ7JSUVBM%0.ͷલޙͷ EJ⒎Λࢉग़ • 

    ੜ%0.࠶ඳըΛࠩ෼ͷ͋ͬͨ Օॴ͚ͩߦ͏ source:  React’s  diff  algorithm   h:p://calendar.perfplanet.com/2013/diff/  
  9. 'MVY •  3FBDU͸7JFX͚ͩ •  'MVY͸Ϟσϧ 4UPSF ΛؚΊͨΞϓϦέʔ γϣϯશମͷΞʔΩςΫνϟ –  ॲཧͷهड़৔ॴΛఆΊΔ

    –  σʔλϑϩʔΛఆΊΔ •  Πϕϯτͷґଘؔ܎ͷෳࡶੑΛղফ –  Πϕϯτ΍σʔλϑϩʔͷํ޲ΛҰํ௨ߦʹ͢Δ
  10. ϦΞΫςΟϒϓϩάϥϛϯά •  ΋ͱ΋ͱ͸ҎԼͷΑ͏ͳ֓೦ –  σʔλͷྲྀΕΛ௨ͯ͡มߋΛ఻ൖ –  σʔλͷྲྀΕʹ൓Ԡ –  㱺ΠϕϯτۦಈɺΦϒβʔόʔɺ"DUPSɺ'VUVSF • 

    ޿ٛͷɺڱٛͷŋŋŋ͕͋Δ –  ֦େղऍ͠Α͏ͱ͢ΔͱͲ͜·Ͱ΋͍͚Δ ཁ஫ҙ  –  ݸਓతʹ͸'31ͷจ຺Ҏ֎Ͱ͸͋·Γݴٴ͠ͳ͍Α ͏ʹ͍ͯ͠Δ
  11. 1 1 1 1 -­‐1 -­‐1 1 1 1 1

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

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

    -­‐1 -­‐1 plusStream.merge(minusStream)
  14. 1 1 1 1 -­‐1 -­‐1 1 1 2 0

    1 2 bothStream.scan(0,  (x  +  y)  =>  x  +  y)
  15. ࢥߟͷྲྀΕ •  ʮ࣌ؒͱڞʹมԽ͢Δ஋ͷσʔλܕ͕ཉ͍͠ʯ •  㱺ετϦʔϜΛಋೖ •  㱺Πϕϯτ΍ඇಉظॲཧ·ͰετϦʔϜʹ –  ʮ͋Εɺશ෦ετϦʔϜͰѻ͑Δ͡Όͳ͍ ʯ

    •  㱺શͯΛ౷Ұ͞ΕͨετϦʔϜͱ͍͏ΠϯλϑΣʔεͰ •  㱺ϦετΏ͑ʹؔ਺ܕͷΠσΟΦϜɺύϥμΠϜ –  ʮϦετૢ࡞Ͱ͢ΔͳΒؔ਺ܕ͕Ԡ༻Ͱ͖Δ͡Όͳ͍ʯ •  㱺෭࡞༻Λආ͚ͨએݴతͳهड़ •  㱺ࢀরಁ໌ঢ়ଶ؅ཧ͔Βͷղ์
  16. εέʔϥϒϧŋŋŋঢ়ଶΛͲ͏ѻ͏͔ •  എܠ –  ࣌୅ͷཁ੥ •  Ϋϥ΢υωΠςΟϒ •  ඇಉظͳΞϓϦέʔγϣϯ • 

    ࣌ؒͱڞʹԿ͔ͱෳࡶԽ͠΍͍͢8FCγεςϜ •  ࢧ഑తͳϑΝΫλʔঢ়ଶͷѻ͍ –  Ӆṭ –  એݴతʹهड़ –  *NNVUBCMF େن໛τϥϑΟοΫ ͔ͩΒɺͱ͍͏࿩ͩ ͚Ͱͳ͘ͳ͖ͬͯͯ Δ
  17. ·ͱΊ •  ۙ೥ݸਓతʹண໨ͨ͠τϨϯυΛΈͨ –  *OGSBTUSVDUVSFBT$PEF –  *NNVUBCMF*OGSBTUSVDUVSF –  .JDSPTFSWJDFT – 

    3FBDU –  3FBDUJWF1SPHSBNNJOH •  ෳࡶੑ΁ͷରࡦͱͯ͠ͷঢ়ଶ؅ཧख๏ʹύλʔ ϯ͕ݟ͍ͩͤΔ