Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Crystal で実際のウェブサービスは作れるのか?
Search
Pine Mizune
January 22, 2016
Programming
0
760
Crystal で実際のウェブサービスは作れるのか?
『 東京 Crystal 勉強会 #3 in 恵比寿 』 の発表資料
http://crystal.connpass.com/event/22754/
Pine Mizune
January 22, 2016
Tweet
Share
More Decks by Pine Mizune
See All by Pine Mizune
多言語対応と絵文字ジェネレーター / i18n of Emoji Generator
pine
0
720
C++ 製グラフィックライブラリ Skia の紹介 / Introduction to the graphics library Skia written by C++
pine
0
1.5k
asyncio + aiohttp で作るウェブサービス / How to develop a web service with asyncio and aiohttp
pine
0
630
Lerna による明示的疎結合アーキテクチャ
pine
1
610
CircleCI 2.0 x JavaScript
pine
3
520
Perl 卒業式
pine
0
310
Android Studio の気になる warnings を抑制する方法まとめ
pine
0
470
Emoji Generator meets Browser Extensions
pine
1
2.9k
近年の OSS 開発における CI 選択のベストプラクティス
pine
3
4.5k
Other Decks in Programming
See All in Programming
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.1k
Jakarta EE meets AI
ivargrimstad
0
540
最新TCAキャッチアップ
0si43
0
140
見せてあげますよ、「本物のLaravel批判」ってやつを。
77web
7
7.7k
【Kaigi on Rails 2024】YOUTRUST スポンサーLT
krpk1900
1
330
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
9
3.3k
ヤプリ新卒SREの オンボーディング
masaki12
0
130
What’s New in Compose Multiplatform - A Live Tour (droidcon London 2024)
zsmb
1
470
Creating a Free Video Ad Network on the Edge
mizoguchicoji
0
120
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で Gemma 2 × vLLM を動かす。
kohecchi
5
920
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
330
TypeScriptでライブラリとの依存を限定的にする方法
tutinoko
2
670
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Speed Design
sergeychernyshev
25
620
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Building Applications with DynamoDB
mza
90
6.1k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
A Philosophy of Restraint
colly
203
16k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
860
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Producing Creativity
orderedlist
PRO
341
39k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
31
2.7k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Transcript
$SZTUBMͰ࣮ࡍͷ8FC4FSWJDF ࡞ΕΔͷ͔ 'SJ !QJOF
ϓϩϑΟʔϧ • *%)/!QJOF • $SZTUBM+1ӡӦ • DSFOW $SZTUBM7FSTJPO.BOBHFS ࡞ऀ •
झຯͰ࠷͔ۙ͘+BWB4DSJQU$SZTUBM • .PCJMF'BDUPSZ *OD
͡Ίʹ • Πϯετʔϧํ๏ DSFOWCSFXBQUZVNQBDNBOFUD • ެࣜυΩϡϝϯτͷຊޠ༁͕͋Γ·͢ IUUQKBDSZTUBMMBOHPSHEPDT $SZTUBMΛ৮ͬͨ͜ͱແ͍ํ ͜ͷػձʹੋඇΠϯετʔϧΛ
࣍ • $SZTUBMͱ • $SZTUBMपΓͷۙگ • ࣮ࡍʹαʔϏεΛ։ൃͯ͠Έͯ – ࡞ͨ͠αʔϏεʹ͍ͭͯ
– ࣮༻ʹ͑͏Δͷ͔ – ॴײ • ·ͱΊ
$SZTUBMͱ ˓ߴ͍දݱྗ ˓ߴ͍ੜ࢈ੑ º͍ ಉ࣮࣌ݱ Λඪ $ݴޠ 3VCZ ˓ඇৗʹߴ
ºදݱྗ͕͍͠ ºੜ࢈ੑ͕͍
$SZTUBMͱ • 3VCZ෩ͷγϯλοΫε • ܕਪϕʔεͷ੩తݴޠ • ߴͳωΠςΟϒίʔυΛग़ྗ • ΞϧθϯνϯͷManas
Tech 社を中心に OSS で開発 • ࠷৽൛W ݱࡏ
$SZTUBMपΓͷۙگ • Wʹ͚ίϯύΠϥશ໘ॻ͖͠ • ίϯύΠϧͷվળ • ϚΫϩɾܕγεςϜશൠͷमਖ਼ • σϑΝΫτΛࢦͨ͠8"'ͷग़ݱ •
,FNBM JOTQJSFECZ4JOBUSB • 'SPTU JOTQJSFECZ3BJMT
࣮ࡍʹ$SZTUBMͰ αʔϏεΛϦϦʔεͨ͠ αʔϏεհ࣮༻ੑײ
$SZTUBMͰ࡞ͨ͠αʔϏε ґଘϥΠϒϥϦΛՄࢹԽ͢Δ8FC4FSWJDF IUUQTIBSETSPDLT ü όʔδϣϯ͕ݹ͘ͳ͍ͬͯͳ͍͔Ұཡදࣔ ü
શମͷঢ়ଶΛόοδʹͯ͠ϦϙδτϦʹදࣔ ˞ྨࣅαʔϏε
4IBSET3PDLTγεςϜߏ "1*4FSWFS +PC8PSLFS 8PSLFS5BTL 4UBUJD'JMFT GPS+PC2VFVF GPS"OBMZ[FE%BUB 4FSWFS$POPIB
4IBSET3PDLT$SZTUBM֎ͷٕज़બ • ϑϩϯτΤϯυ ü 41"ߏ ü ϑϨʔϜϫʔΫ7VF 1VSFDTT ü ݴޠɾπʔϧ-JWF4DSJQU
-&44 +BEF HVMQ 8FCQBDL • +PC8PSLFS ü (PW ü ύοέʔδཧHPN ü ϥΠϒϥϦHPXPSLFS
࣮༻໘Ͱಛච͢Δ߲ • ґଘཧ4IBSET • 8FCϑϨʔϜϫʔΫ,FNBM • σʔλϕʔε – .Z42-DSZTUBMNZTRM –
3FEJTDSZTUBMSFEJT • δϣϒΩϡʔ • σϓϩΠπʔϧ
ґଘཧTIBSET 4IBSET • ݴޠඪ४ͷύοέʔδϚωʔδϟ • :".-ܗࣜͰTIBSEZNMʹఆٛ • ࠶ؼతʹґଘղܾ •
ґଘύοέʔδ(JUͰμϯϩʔυ • ཱͬͨෆ۩߹ͳ҆͘ఆಈ࡞ "VUIPS ZTCBEEBEFO <$SZTUBM$PMMBCPSBUPS>
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 <
[email protected]
> license: MIT TIBSEZNM ґଘఆٛ • ϥΠϒϥϦ໊ • ϦϙδτϦ • όʔδϣϯ
,FNBM • *OTQJSFECZ4JOBUSB • γϯϓϧɾര – ࠷খߏϨεϙϯε࣌ؒЖT • 3PVUJOH8FC4PDLFU+40/αϙʔτ
• 03.4FTTJPOαϙʔτؚ·ͣ "VUIPS TEPHSVZPM ϑϨʔϜϫʔΫ,FNBM
require "kemal" # Dispatcher get "/" do "Hello World!" end
# WebSocket ws "/socket" do |socket| socket.send "Hello from Kemal!" end ,FNBM ˞ެࣜαΠτIUUQLFNBMDSDPN
σʔλϕʔε.Z42- DSZTUBMNZTRM • MJCNZTRMDMJFOUϥούʔ • جຊతͳΫΤϦ࣮ߦ͕Մೳ • /BNFEQMBDFIPMEFSαϙʔτ •
03.Ͱͳ͍ • ଟͷόάܕ҆શͰͳͭ͘Β͍ "VUIPS XBUFSMJOL
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ͷ࣮ࡍͷίʔυ
σʔλϕʔε3FEJT DSZTUBMSFEJT • 1VSF$SZTUBM • ര – DSZTUBMSFEJT ίϚϯυඵ
– SFEJTSC ίϚϯυඵ • ͕ඇৗʹߴ͍ "VUIPS TUFGBOXJMMF
require "redis" redis = Redis.new redis.set("foo", "bar") redis.get("foo") redis.rpush("list", "1",
"2", "3") redis.lrange("list", 0, 2) DSZTUBMSFEJT
δϣϒΩϡʔ • 3VCZͰݴ͏3FTRVF4JEFLJR • $SZTUBMͰͷ࣮ແ͍ • 4IBSET3PDLTͰHPXPSLFSΛ༻ ü (PͰͷ3FTRVFޓ࣮ ü
3FTRVFൺഒ4JEFLJRൺഒૣ͍ • HPXPSLFS͔Β$-*ܦ༝Ͱ$SZTUBMݺͼग़͠
σϓϩΠπʔϧ • $SZTUBMͰͷ࣮ແ͍ • ݱࡏଞݴޠͷπʔϧΛ͏ͷ͕٢ ü ྫ$BQJTUSBOP • 4IBSET3PDLT ü
ݱঢ়$*͔Β44) #BTI4DSJQU ü $SZTUBMͷσϑΝΫτͪ
·ͱΊ ݱঢ়ͷ$SZTUBMͷ࣮༻ੑ
·ͱΊ p 1PTJUJWF ü ݴޠɾύοέʔδཧ҆৺ͯ͑͠Δ ü ࣮༻తʹ͑Δஈ֊͕ݟ͖͑ͯͨ p /FHBUJWF ü ࡉ͔ͳϥΠϒϥϦͷ՝
ü ͔Ώ͍ॴʹख͕ಧ࣮͘ɾػೳ͜Ε͔Β ü $SZTUBMͰ࣮ࡍʹӡ༻͞ΕΔ͔൱͔͕ݤ
։ൃࢿۚʹ͝ڠྗΛ IUUQTTBMUCPVOUZTPVSDFDPNUFBNTDSZTUBMMBOH
pO