Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Crystalはいいぞ
Search
eniehack
March 27, 2021
Technology
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Crystalはいいぞ
#nitgclt 2021.03.27 登壇
eniehack
March 27, 2021
More Decks by eniehack
See All by eniehack
opendata meets DOI?
eniehack
0
22
大学の自販機を一覧できる地図サイトを作ってみた.pdf
eniehack
0
310
いまさら始める(vimmerのための)Emacs
eniehack
1
350
Other Decks in Technology
See All in Technology
20260915deck.gl-raster を使ってみた
rena1208
0
150
個別開発で終わらせない。 現場の課題をプロダクトの強さに変える StockmarkのFDE
ktkrhr
0
350
AIエージェントを安全で速い現場監督にする:Jev・Obsidian・メタハーネス
x5gtrn
PRO
0
140
Azure Serverless 2026:Production-ready な AI エージェント基盤 / Azure Serverless 2026: Production-Ready AI Agent Platform
miyake
2
660
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
1.7k
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
3
3.3k
1人アドミンな私はAWSアカウント申請をSlackで完結したい!
ysuzuki
0
100
ScotSecure West 2026 - Glasgow
raybugg
0
200
2026-09-26 Platform Engineering Kaigi 2026 インフラとアプリの境界線と委譲の設計 / Drawing the Infra and App Line
masasuzu
0
450
AI coding 整合正規方法
philipz
0
570
CI/CDではもう遅い - 人とAIが迂回しないDevSecOps Verify基盤の再設計 -
kintotechdev
1
400
AI感のないAWS構成図をAIエージェントに描かせたい!
sagochiko
2
480
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
Design in an AI World
tapps
1
340
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
520
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Transcript
Crystalはいいぞ Nakaya March 27, 2021
Outline Crystal はいいぞ 1
Crystalはいいぞ
自己紹介 • Nakaya です 2
自己紹介 • Nakaya です • 4E 2
自己紹介 • Nakaya です • 4E • Web 系やってます 2
自己紹介 • Nakaya です • 4E • Web 系やってます •
好きな言語は Ruby 2
自己紹介 • Nakaya です • 4E • Web 系やってます •
好きな言語は Ruby • 好きなエディタは vim と emacs 2
自己紹介 • Nakaya です • 4E • Web 系やってます •
好きな言語は Ruby • 好きなエディタは vim と emacs • 最近は Crystal 言語、Lisp、ShellScript にお熱 2
最近 Crystal v1.0.0 がリリース 3
最近 Crystal v1.0.0 がリリース • アツい 3
Ruby っぽく書ける静的型付け言語 • 型推論もあるよ 4
Ruby っぽく書ける静的型付け言語 • 型推論もあるよ • 強力な型システム 4
Ruby っぽく書ける静的型付け言語 • 型推論もあるよ • 強力な型システム • Union 4
Ruby っぽく書ける静的型付け言語 • 型推論もあるよ • 強力な型システム • Union • Enum
4
Ruby っぽく書ける静的型付け言語 • 型推論もあるよ • 強力な型システム • Union • Enum
• Null 安全 4
C っぽさもある • Pointer 5
C っぽさもある • Pointer • StaticArray • immutable な Array
5
C っぽさもある • Pointer • StaticArray • immutable な Array
• Bytes Slice(UInt8) 5
C っぽさもある • Pointer • StaticArray • immutable な Array
• Bytes Slice(UInt8) • C のライブラリをバインディングが簡単に書ける 5
並列処理 • Golang の Goroutine に影響を受けた Channel 6
並列処理 • Golang の Goroutine に影響を受けた Channel channel = Channel(Nil).new
spawn do puts "Before send" channel.send(nil) puts "After send" end puts "Before receive" channel.receive puts "After receive" 6
マクロが強い • コンパイル前にソースコードからソースコードを生成 する 7
マクロが強い • コンパイル前にソースコードからソースコードを生成 する macro encoding_test(no, payload) it "vector_test.json -
encoding test No.{{no}}" do data = json["testGroups"][0]["tests"][{{no}}] config = TestConfiguration.new key: data["key"].as_ config.nonce = data["nonce"].as_s.hexbytes branca = Branca::Token.new branca.timestamp = data["timestamp"].as_i64.to_u64 token = branca.encode {{payload}}, config 7
標準ライブラリが豊富 • RSpec っぽく書ける spec 8
標準ライブラリが豊富 • RSpec っぽく書ける spec • JSON/XML/YAML 8
標準ライブラリが豊富 • RSpec っぽく書ける spec • JSON/XML/YAML • HTTP/TCP/UDP 8
LLVM をバックエンド 9
LLVM をバックエンド • Rust と同じ 9
LLVM をバックエンド • Rust と同じ • 効率的なバイナリが生成可能である 9
サポート環境 • MasOS 10
サポート環境 • MasOS • Linux 10
サポート環境 • MasOS • Linux • WSL 10
サポート環境 • MasOS • Linux • WSL • 現時点で Windows、WASM
は未サポート 10
ライブラリがそこそこある • Discord Bot 11
ライブラリがそこそこある • Discord Bot • Web Framework Web Framework Kemal
• Ruby の Sinatra っぽく書ける 11
ライブラリがそこそこある • Discord Bot • Web Framework Web Framework Kemal
• Ruby の Sinatra っぽく書ける require "kemal" get "/" do "Hello Kemal!" end Kemal.run 11
何が作れるの? 12
何が作れるの? Web Application • invidious - プライバシーを考慮した YouTube フロント エンド
12
何が作れるの? Web Application • invidious - プライバシーを考慮した YouTube フロント エンド
言語 • Mint - Web Frontend 系関数型言語 12
何が作れるの? Web Application • invidious - プライバシーを考慮した YouTube フロント エンド
言語 • Mint - Web Frontend 系関数型言語 GUI や Game まで • SFML - マルチメディアが簡単に扱えるライブラリ • OpenGL 系 12
何が作れるの? Web Application • invidious - プライバシーを考慮した YouTube フロント エンド
言語 • Mint - Web Frontend 系関数型言語 GUI や Game まで • SFML - マルチメディアが簡単に扱えるライブラリ • OpenGL 系 OS もある • lilith - POSIX 準拠 OS 12
参考になるサイト • Crystal-jp の『introducing CRYSTAL Programming Language』 13
参考になるサイト • Crystal-jp の『introducing CRYSTAL Programming Language』 • Crystal 公式ドキュメント
13
参考になるサイト • Crystal-jp の『introducing CRYSTAL Programming Language』 • Crystal 公式ドキュメント
• Crystal 公式 API リファレンス 13
ご静聴ありがとうございました 14