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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
130
Why is RC4 still being used?
tamaiyutaro
0
280
スタートアップにおけるアジャイルの実践について #shibuyagile
murabayashi
3
2k
AWS Blocks を触ってみた/first-tach-aws-blocks
fossamagna
2
140
グローバルチームと挑むプロダクト開発
sansantech
PRO
1
150
飲食店もAIで。レジ締めやハンディシステムをつくってる話 / Using AI for restaurant management
vtryo
0
230
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
490
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
160
作る力から、見極める力へ — AI時代に広がるエンジニアの価値と役割
rince
0
410
きのこカンファレンス2026_肩書きを外したとき私は誰か
yamasatimi
1
130
cccccc
moznion
0
1.7k
小さいから、全部わかる。— 常駐AI "xangi" のすすめ
sugupoko
0
250
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
200
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
220
Scaling GitHub
holman
464
140k
Balancing Empowerment & Direction
lara
6
1.2k
First, design no harm
axbom
PRO
2
1.2k
What's in a price? How to price your products and services
michaelherold
247
13k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
180
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Docker and Python
trallard
47
3.9k
BBQ
matthewcrist
89
10k
30 Presentation Tips
portentint
PRO
1
340
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
340
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