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
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
大学の自販機を一覧できる地図サイトを作ってみた.pdf
eniehack
0
270
いまさら始める(vimmerのための)Emacs
eniehack
1
340
Other Decks in Technology
See All in Technology
Why is RC4 still being used?
tamaiyutaro
0
280
CVE-2026-20833_脆弱性対応とAES 化について
jukishiya
0
350
プライバシー保護の理論と実践
lycorptech_jp
PRO
1
230
AI時代における最適なQA組織の作り方
ymty
3
350
最近評価が難しくなった
maroon8021
0
200
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
1
330
MySQL & MySQL HeatWave Report - June 2026
freshdaz
0
300
フルAIで個人開発して学んだあれこれ / yuruai vol.1
isaoshimizu
0
170
感情と身体を置き去りにしない、エンジニアの生きのこり方 ──いまから、ここから「自分の状態」を扱うという選択
saorimurooka
1
470
AWS Summit Japan 2026の振り返りと2027へ向けて / AWS Summit Japan 2026 Recap and Prospects for 2027
kaminashi
1
190
背中から、背中へ /paying forward to community
naitosatoshi
0
210
Hatena Engineer Seminar 37 jj1uzh
jj1uzh
0
420
Featured
See All Featured
A Tale of Four Properties
chriscoyier
163
24k
The Invisible Side of Design
smashingmag
301
52k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
220
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.1k
Building an army of robots
kneath
306
46k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
180
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
230
Become a Pro
speakerdeck
PRO
31
6k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
400
Test your architecture with Archunit
thirion
1
2.3k
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