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
770
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
780
C++ 製グラフィックライブラリ Skia の紹介 / Introduction to the graphics library Skia written by C++
pine
0
1.7k
asyncio + aiohttp で作るウェブサービス / How to develop a web service with asyncio and aiohttp
pine
0
660
Lerna による明示的疎結合アーキテクチャ
pine
1
630
CircleCI 2.0 x JavaScript
pine
3
540
Perl 卒業式
pine
0
330
Android Studio の気になる warnings を抑制する方法まとめ
pine
0
490
Emoji Generator meets Browser Extensions
pine
1
2.9k
近年の OSS 開発における CI 選択のベストプラクティス
pine
3
4.5k
Other Decks in Programming
See All in Programming
Cline指示通りに動かない? AI小説エージェントで学ぶ指示書の書き方と自動アップデートの仕組み
kamomeashizawa
1
570
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
1
560
Datadog RUM 本番導入までの道
shinter61
1
310
Claude Codeの使い方
ttnyt8701
1
130
つよそうにふるまい、つよい成果を出すのなら、つよいのかもしれない
irof
1
300
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
oukayuka
2
830
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
4
880
プロダクト志向ってなんなんだろうね
righttouch
PRO
0
140
20250628_非エンジニアがバイブコーディングしてみた
ponponmikankan
0
290
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
520
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
3
300
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
240
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Typedesign – Prime Four
hannesfritz
42
2.7k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Bash Introduction
62gerente
614
210k
Automating Front-end Workflow
addyosmani
1370
200k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Site-Speed That Sticks
csswizardry
10
650
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
Practical Orchestrator
shlominoach
188
11k
Rails Girls Zürich Keynote
gr2m
94
14k
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