Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

ϓϩϑΟʔϧ •  *%)/!QJOF •  $SZTUBM+1ӡӦ •  DSFOW $SZTUBM7FSTJPO.BOBHFS ࡞ऀ •  झຯͰ࠷͔ۙ͘+BWB4DSJQU$SZTUBM •  .PCJMF'BDUPSZ *OD

Slide 3

Slide 3 text

͸͡Ίʹ •  Πϯετʔϧํ๏ DSFOWCSFXBQUZVNQBDNBOFUD •  ެࣜυΩϡϝϯτͷ೔ຊޠ຋༁͕͋Γ·͢ IUUQKBDSZTUBMMBOHPSHEPDT $SZTUBMΛ৮ͬͨ͜ͱແ͍ํ͸ ͜ͷػձʹੋඇΠϯετʔϧΛ

Slide 4

Slide 4 text

໨࣍ •  $SZTUBMͱ͸ •  $SZTUBMपΓͷۙگ •  ࣮ࡍʹαʔϏεΛ։ൃͯ͠Έͯ –  ࡞੒ͨ͠αʔϏεʹ͍ͭͯ –  ࣮༻ʹ଱͑͏Δͷ͔ –  ॴײ •  ·ͱΊ

Slide 5

Slide 5 text

$SZTUBMͱ͸ ˓ߴ͍දݱྗ ˓ߴ͍ੜ࢈ੑ º஗͍ ಉ࣮࣌ݱ Λ໨ඪ $ݴޠ 3VCZ ˓ඇৗʹߴ଎ ºදݱྗ͕๡͍͠ ºੜ࢈ੑ͕௿͍

Slide 6

Slide 6 text

$SZTUBMͱ͸ •  3VCZ෩ͷγϯλοΫε •  ܕਪ࿦ϕʔεͷ੩తݴޠ •  ߴ଎ͳωΠςΟϒίʔυΛग़ྗ •  ΞϧθϯνϯͷManas Tech 社を中心に OSS で開発 •  ࠷৽൛W ݱࡏ

Slide 7

Slide 7 text

$SZTUBMपΓͷۙگ •  Wʹ޲͚ίϯύΠϥશ໘ॻ͖௚͠ •  ίϯύΠϧ଎౓ͷվળ •  ϚΫϩɾܕγεςϜશൠͷमਖ਼ •  σϑΝΫτΛ໨ࢦͨ͠8"'ͷग़ݱ •  ,FNBM JOTQJSFECZ4JOBUSB •  'SPTU JOTQJSFECZ3BJMT

Slide 8

Slide 8 text

࣮ࡍʹ$SZTUBMͰ αʔϏεΛϦϦʔεͨ͠࿩ αʔϏε঺հ࣮༻ੑײ૝

Slide 9

Slide 9 text

$SZTUBMͰ࡞੒ͨ͠αʔϏε ґଘϥΠϒϥϦΛՄࢹԽ͢Δ8FC4FSWJDF IUUQTIBSETSPDLT ü  όʔδϣϯ͕ݹ͘ͳ͍ͬͯͳ͍͔Ұཡදࣔ ü  શମͷঢ়ଶΛόοδʹͯ͠ϦϙδτϦʹදࣔ ˞ྨࣅαʔϏε

Slide 10

Slide 10 text

4IBSET3PDLTγεςϜߏ੒ "1*4FSWFS +PC8PSLFS 8PSLFS5BTL 4UBUJD'JMFT GPS+PC2VFVF GPS"OBMZ[FE%BUB 4FSWFS$POPIB

Slide 11

Slide 11 text

4IBSET3PDLT$SZTUBM֎ͷٕज़બ୒ •  ϑϩϯτΤϯυ ü  41"ߏ੒ ü  ϑϨʔϜϫʔΫ7VF 1VSFDTT ü  ݴޠɾπʔϧ-JWF4DSJQU -&44 +BEF HVMQ 8FCQBDL •  +PC8PSLFS ü  (PW ü  ύοέʔδ؅ཧHPN ü  ϥΠϒϥϦHPXPSLFS

Slide 12

Slide 12 text

࣮༻໘Ͱಛච͢Δ߲໨ •  ґଘ؅ཧ4IBSET •  8FCϑϨʔϜϫʔΫ,FNBM •  σʔλϕʔε –  .Z42-DSZTUBMNZTRM –  3FEJTDSZTUBMSFEJT •  δϣϒΩϡʔ •  σϓϩΠπʔϧ

Slide 13

Slide 13 text

ґଘ؅ཧTIBSET 4IBSET •  ݴޠඪ४ͷύοέʔδϚωʔδϟ •  :".-ܗࣜͰTIBSEZNMʹఆٛ •  ࠶ؼతʹґଘղܾ •  ґଘύοέʔδ͸(JUͰμ΢ϯϩʔυ •  ໨ཱͬͨෆ۩߹ͳ҆͘ఆಈ࡞ "VUIPS ZTCBEEBEFO <$SZTUBM$PMMBCPSBUPS>

Slide 14

Slide 14 text

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 license: MIT TIBSEZNM ґଘఆٛ •  ϥΠϒϥϦ໊ •  ϦϙδτϦ •  όʔδϣϯ

Slide 15

Slide 15 text

,FNBM •  *OTQJSFECZ4JOBUSB •  γϯϓϧɾര଎ –  ࠷খߏ੒Ϩεϙϯε࣌ؒЖT •  3PVUJOH8FC4PDLFU+40/αϙʔτ •  03.4FTTJPOαϙʔτؚ·ͣ "VUIPS TEPHSVZPM ϑϨʔϜϫʔΫ,FNBM

Slide 16

Slide 16 text

require "kemal" # Dispatcher get "/" do "Hello World!" end # WebSocket ws "/socket" do |socket| socket.send "Hello from Kemal!" end ,FNBM ˞ެࣜαΠτIUUQLFNBMDSDPN

Slide 17

Slide 17 text

σʔλϕʔε.Z42- DSZTUBMNZTRM •  MJCNZTRMDMJFOUϥούʔ •  جຊతͳΫΤϦ࣮ߦ͕Մೳ •  /BNFEQMBDFIPMEFSαϙʔτ •  03.Ͱ͸ͳ͍ •  ଟ਺ͷόάܕ҆શͰͳͭ͘Β͍ "VUIPS XBUFSMJOL

Slide 18

Slide 18 text

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ͷ࣮ࡍͷίʔυ

Slide 19

Slide 19 text

σʔλϕʔε3FEJT DSZTUBMSFEJT •  1VSF$SZTUBM •  ര଎ –  DSZTUBMSFEJT ίϚϯυඵ –  SFEJTSC ίϚϯυඵ •  ׬੒౓͕ඇৗʹߴ͍ "VUIPS TUFGBOXJMMF

Slide 20

Slide 20 text

require "redis" redis = Redis.new redis.set("foo", "bar") redis.get("foo") redis.rpush("list", "1", "2", "3") redis.lrange("list", 0, 2) DSZTUBMSFEJT

Slide 21

Slide 21 text

δϣϒΩϡʔ •  3VCZͰݴ͏3FTRVF4JEFLJR •  $SZTUBMͰͷ࣮૷͸ແ͍ •  4IBSET3PDLTͰ͸HPXPSLFSΛ࢖༻ ü  (PͰͷ3FTRVFޓ׵࣮૷ ü  3FTRVFൺഒ4JEFLJRൺഒૣ͍ •  HPXPSLFS͔Β$-*ܦ༝Ͱ$SZTUBMݺͼग़͠

Slide 22

Slide 22 text

σϓϩΠπʔϧ •  $SZTUBMͰͷ࣮૷͸ແ͍ •  ݱࡏ͸ଞݴޠͷπʔϧΛ࢖͏ͷ͕٢ ü  ྫ$BQJTUSBOP •  4IBSET3PDLT ü  ݱঢ়$*͔Β44)#BTI4DSJQU ü  $SZTUBMͷσϑΝΫτ଴ͪ

Slide 23

Slide 23 text

·ͱΊ ݱঢ়ͷ$SZTUBMͷ࣮༻ੑ

Slide 24

Slide 24 text

·ͱΊ p 1PTJUJWF ü  ݴޠɾύοέʔδ؅ཧ͸҆৺ͯ͠࢖͑Δ ü  ࣮༻తʹ࢖͑Δஈ֊͕ݟ͖͑ͯͨ p /FHBUJWF ü  ࡉ͔ͳϥΠϒϥϦͷ׬੒౓͸՝୊ ü  ͔Ώ͍ॴʹख͕ಧ࣮͘૷ɾػೳ͸͜Ε͔Β ü  $SZTUBMͰ࣮ࡍʹӡ༻͞ΕΔ͔൱͔͕ݤ

Slide 25

Slide 25 text

։ൃࢿۚʹ͝ڠྗΛ IUUQTTBMUCPVOUZTPVSDFDPNUFBNTDSZTUBMMBOH

Slide 26

Slide 26 text

pO