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
opendata meets DOI?
eniehack
0
4
大学の自販機を一覧できる地図サイトを作ってみた.pdf
eniehack
0
300
いまさら始める(vimmerのための)Emacs
eniehack
1
350
Other Decks in Technology
See All in Technology
Driving AI Adoption Using In-House GPUs to Serve Qwen
po3rin
2
430
Azure Cost Management の FOCUS コストデータを迷わず読むための“3つの軸”
tetsuyaooooo
0
140
Kiro Crewしか勝たん!?
miu_crescent
PRO
0
170
設計の世代交代を乗り越える、14年続くAndroidアプリの開発戦略
sansantech
PRO
1
110
Sony-DroidKaigi2026
sony
1
310
Beyond the Hype: Practical AI for Your Oracle Database with MCP
thatjeffsmith
1
220
深夜のクラウド懺悔室 1:29:300 or 1:0:0
kazzpapa3
0
110
APIセキュリティを組織で実現するには~注力する点と設計・実装に入れたい対策~
riiimparm
3
920
V8コントリビュート超入門
riyaamemiya
0
130
20260903 Tokyo Jazug Night #62 | Azure エンジニアよ、 その環境は本当にセキュアか?
olivia_0707
1
610
When Does a Local Qwen Start to Break
morshoto
0
160
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
280
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
1
490
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.3k
4 Signs Your Business is Dying
shpigford
187
23k
Chasing Engaging Ingredients in Design
codingconduct
0
300
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
510
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
640
YesSQL, Process and Tooling at Scale
rocio
174
15k
Done Done
chrislema
186
16k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Designing Experiences People Love
moore
143
24k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
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