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

Crystal で実際のウェブサービスは作れるのか?

Crystal で実際のウェブサービスは作れるのか?

『 東京 Crystal 勉強会 #3 in 恵比寿 』 の発表資料
http://crystal.connpass.com/event/22754/

842aaadff6e13fbf372c9b17b49b031c?s=128

Pine Mizune

January 22, 2016
Tweet

More Decks by Pine Mizune

Other Decks in Programming

Transcript

  1. $SZTUBMͰ࣮ࡍͷ8FC4FSWJDF ͸࡞ΕΔͷ͔  'SJ  !QJOF

  2. ϓϩϑΟʔϧ •  *%)/!QJOF •  $SZTUBM+1ӡӦ •  DSFOW $SZTUBM7FSTJPO.BOBHFS ࡞ऀ • 

    झຯͰ࠷͔ۙ͘+BWB4DSJQU$SZTUBM •  .PCJMF'BDUPSZ *OD
  3. ͸͡Ίʹ •  Πϯετʔϧํ๏ DSFOWCSFXBQUZVNQBDNBOFUD  •  ެࣜυΩϡϝϯτͷ೔ຊޠ຋༁͕͋Γ·͢ IUUQKBDSZTUBMMBOHPSHEPDT $SZTUBMΛ৮ͬͨ͜ͱແ͍ํ͸ ͜ͷػձʹੋඇΠϯετʔϧΛ

    
  4. ໨࣍ •  $SZTUBMͱ͸  •  $SZTUBMपΓͷۙگ •  ࣮ࡍʹαʔϏεΛ։ൃͯ͠Έͯ –  ࡞੒ͨ͠αʔϏεʹ͍ͭͯ

    –  ࣮༻ʹ଱͑͏Δͷ͔ –  ॴײ •  ·ͱΊ
  5. $SZTUBMͱ͸  ˓ߴ͍දݱྗ ˓ߴ͍ੜ࢈ੑ º஗͍ ಉ࣮࣌ݱ Λ໨ඪ $ݴޠ 3VCZ ˓ඇৗʹߴ଎

    ºදݱྗ͕๡͍͠ ºੜ࢈ੑ͕௿͍
  6. $SZTUBMͱ͸  •  3VCZ෩ͷγϯλοΫε •  ܕਪ࿦ϕʔεͷ੩తݴޠ •  ߴ଎ͳωΠςΟϒίʔυΛग़ྗ •  ΞϧθϯνϯͷManas

    Tech 社を中心に OSS で開発 •  ࠷৽൛W ݱࡏ 
  7. $SZTUBMपΓͷۙگ •  Wʹ޲͚ίϯύΠϥશ໘ॻ͖௚͠ •  ίϯύΠϧ଎౓ͷվળ •  ϚΫϩɾܕγεςϜશൠͷमਖ਼ •  σϑΝΫτΛ໨ࢦͨ͠8"'ͷग़ݱ • 

    ,FNBM JOTQJSFECZ4JOBUSB  •  'SPTU JOTQJSFECZ3BJMT 
  8. ࣮ࡍʹ$SZTUBMͰ αʔϏεΛϦϦʔεͨ͠࿩ αʔϏε঺հ࣮༻ੑײ૝

  9. $SZTUBMͰ࡞੒ͨ͠αʔϏε ґଘϥΠϒϥϦΛՄࢹԽ͢Δ8FC4FSWJDF   IUUQTIBSETSPDLT   ü  όʔδϣϯ͕ݹ͘ͳ͍ͬͯͳ͍͔Ұཡදࣔ ü 

    શମͷঢ়ଶΛόοδʹͯ͠ϦϙδτϦʹදࣔ ˞ྨࣅαʔϏε
  10. 4IBSET3PDLTγεςϜߏ੒ "1*4FSWFS +PC8PSLFS 8PSLFS5BTL 4UBUJD'JMFT GPS+PC2VFVF GPS"OBMZ[FE%BUB 4FSWFS$POPIB

  11. 4IBSET3PDLT$SZTUBM֎ͷٕज़બ୒ •  ϑϩϯτΤϯυ ü  41"ߏ੒ ü  ϑϨʔϜϫʔΫ7VF 1VSFDTT ü  ݴޠɾπʔϧ-JWF4DSJQU

    -&44 +BEF HVMQ 8FCQBDL  •  +PC8PSLFS ü  (PW ü  ύοέʔδ؅ཧHPN ü  ϥΠϒϥϦHPXPSLFS
  12. ࣮༻໘Ͱಛච͢Δ߲໨ •  ґଘ؅ཧ4IBSET •  8FCϑϨʔϜϫʔΫ,FNBM •  σʔλϕʔε –  .Z42-DSZTUBMNZTRM – 

    3FEJTDSZTUBMSFEJT •  δϣϒΩϡʔ •  σϓϩΠπʔϧ
  13. ґଘ؅ཧTIBSET 4IBSET  •  ݴޠඪ४ͷύοέʔδϚωʔδϟ •  :".-ܗࣜͰTIBSEZNMʹఆٛ •  ࠶ؼతʹґଘղܾ • 

    ґଘύοέʔδ͸(JUͰμ΢ϯϩʔυ •  ໨ཱͬͨෆ۩߹ͳ҆͘ఆಈ࡞ "VUIPS ZTCBEEBEFO <$SZTUBM$PMMBCPSBUPS>
  14. name: sharock_api version: 0.1.0 dependencies: kemal: github: sdogruyol/kemal version: ~>

    0.7.0 mysql: github: waterlink/crystal-mysql version: ~> 0.4.0 redis: github: stefanwille/crystal-redis version: ~> 1.2.1 pool: github: ysbaddaden/pool version: ~> 0.2.0 resque_client: github: pine613/crystal-resque-client version: 0.1.0 sharock_resolver: github: shardsrocks/sharock-resolver branch: master authors: - Pine Mizune <pinemz@gmail.com> license: MIT TIBSEZNM ґଘఆٛ •  ϥΠϒϥϦ໊ •  ϦϙδτϦ •  όʔδϣϯ
  15. ,FNBM  •  *OTQJSFECZ4JOBUSB •  γϯϓϧɾര଎ –  ࠷খߏ੒Ϩεϙϯε࣌ؒЖT •  3PVUJOH8FC4PDLFU+40/αϙʔτ

    •  03.4FTTJPOαϙʔτؚ·ͣ "VUIPS TEPHSVZPM ϑϨʔϜϫʔΫ,FNBM
  16. require "kemal" # Dispatcher get "/" do "Hello World!" end

    # WebSocket ws "/socket" do |socket| socket.send "Hello from Kemal!" end ,FNBM ˞ެࣜαΠτIUUQLFNBMDSDPN
  17. σʔλϕʔε.Z42- DSZTUBMNZTRM  •  MJCNZTRMDMJFOUϥούʔ •  جຊతͳΫΤϦ࣮ߦ͕Մೳ •  /BNFEQMBDFIPMEFSαϙʔτ • 

    03.Ͱ͸ͳ͍ •  ଟ਺ͷόάܕ҆શͰͳͭ͘Β͍ "VUIPS XBUFSMJOL
  18. DSZTUBMNZTRM def find_one_latest_version(package_id) params = { “package_id” => package_id }

    inflate_one ::MySQL::Query .new(%{ SELECT * FROM `package_deps` WHERE `package_id` = :package_id ORDER BY `version` DESC LIMIT 1 }, params) .run(@conn) end ˞4IBSET3PDLTͷ࣮ࡍͷίʔυ
  19. σʔλϕʔε3FEJT DSZTUBMSFEJT  •  1VSF$SZTUBM •  ര଎ –  DSZTUBMSFEJT ίϚϯυඵ

    –  SFEJTSC ίϚϯυඵ •  ׬੒౓͕ඇৗʹߴ͍ "VUIPS TUFGBOXJMMF
  20. require "redis" redis = Redis.new redis.set("foo", "bar") redis.get("foo") redis.rpush("list", "1",

    "2", "3") redis.lrange("list", 0, 2) DSZTUBMSFEJT
  21. δϣϒΩϡʔ •  3VCZͰݴ͏3FTRVF4JEFLJR •  $SZTUBMͰͷ࣮૷͸ແ͍ •  4IBSET3PDLTͰ͸HPXPSLFSΛ࢖༻ ü  (PͰͷ3FTRVFޓ׵࣮૷ ü 

    3FTRVFൺഒ4JEFLJRൺഒૣ͍ •  HPXPSLFS͔Β$-*ܦ༝Ͱ$SZTUBMݺͼग़͠
  22. σϓϩΠπʔϧ •  $SZTUBMͰͷ࣮૷͸ແ͍ •  ݱࡏ͸ଞݴޠͷπʔϧΛ࢖͏ͷ͕٢ ü  ྫ$BQJTUSBOP •  4IBSET3PDLT ü 

    ݱঢ়$*͔Β44) #BTI4DSJQU ü  $SZTUBMͷσϑΝΫτ଴ͪ
  23. ·ͱΊ ݱঢ়ͷ$SZTUBMͷ࣮༻ੑ

  24. ·ͱΊ p 1PTJUJWF ü  ݴޠɾύοέʔδ؅ཧ͸҆৺ͯ͠࢖͑Δ ü  ࣮༻తʹ࢖͑Δஈ֊͕ݟ͖͑ͯͨ  p /FHBUJWF ü  ࡉ͔ͳϥΠϒϥϦͷ׬੒౓͸՝୊

    ü  ͔Ώ͍ॴʹख͕ಧ࣮͘૷ɾػೳ͸͜Ε͔Β ü  $SZTUBMͰ࣮ࡍʹӡ༻͞ΕΔ͔൱͔͕ݤ
  25. ։ൃࢿۚʹ͝ڠྗΛ IUUQTTBMUCPVOUZTPVSDFDPNUFBNTDSZTUBMMBOH

  26. pO