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
800
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Crystal で実際のウェブサービスは作れるのか?
『 東京 Crystal 勉強会 #3 in 恵比寿 』 の発表資料
http://crystal.connpass.com/event/22754/
Pine Mizune
January 22, 2016
More Decks by Pine Mizune
See All by Pine Mizune
多言語対応と絵文字ジェネレーター / i18n of Emoji Generator
pine
0
890
C++ 製グラフィックライブラリ Skia の紹介 / Introduction to the graphics library Skia written by C++
pine
0
2k
asyncio + aiohttp で作るウェブサービス / How to develop a web service with asyncio and aiohttp
pine
0
700
Lerna による明示的疎結合アーキテクチャ
pine
1
680
CircleCI 2.0 x JavaScript
pine
3
580
Perl 卒業式
pine
0
380
Android Studio の気になる warnings を抑制する方法まとめ
pine
0
530
Emoji Generator meets Browser Extensions
pine
1
3k
近年の OSS 開発における CI 選択のベストプラクティス
pine
3
4.5k
Other Decks in Programming
See All in Programming
Press start. Python's next generation.
willingc
PRO
3
120
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
160
「人を評価する AI」の設計と実装
ryoyanara
0
240
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
250
Hono + Inertia + React で LP を構築した話
oukayuka
2
150
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
480
Flow は今どうなっているか
mizdra
PRO
0
700
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
240
ソフトウェアラスタライザ
fadis
1
630
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
1
1.9k
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
350
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.8k
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.4k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
ラッコキーワード サービス紹介資料
rakko
1
4.5M
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
340
Site-Speed That Sticks
csswizardry
13
1.5k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
250
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Skip the Path - Find Your Career Trail
mkilby
1
190
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
The SEO identity crisis: Don't let AI make you average
varn
0
540
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