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
280
いまさら始める(vimmerのための)Emacs
eniehack
1
340
Other Decks in Technology
See All in Technology
Digitization部 紹介資料
sansan33
PRO
2
7.7k
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
580
生成 AI の基礎 〜 サンプル実装で学ぶ基本原理
enakai00
7
4.4k
猫付きpingコマンドを自作
uyuki234
0
230
まちスペース®とデジタルツインと「まちづくり」
hiro_ogi
0
110
事業価値と Engineering 2026年度版
recruitengineers
PRO
49
23k
QAエンジニア起点で進める、SmartHRにおける信頼性向上について
kaomi_wombat
1
140
カートの信頼性を担保するWireMockを使ったe2eテスト
ykagano
0
250
え?フロントエンドエンジニアの ワイがインフラも!?
puku0x
1
550
攻撃と防御で学ぶAI時代のプロダクトセキュリティ演習
recruitengineers
PRO
9
2.7k
FORENSIA: ローカルLLMフォレンジックハーネス
sumeshi
2
380
つくって納得、つかって実感! 大規模言語モデルことはじめ ver2.0
recruitengineers
PRO
4
1.6k
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
460
4 Signs Your Business is Dying
shpigford
187
22k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Skip the Path - Find Your Career Trail
mkilby
1
180
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
370
Building Adaptive Systems
keathley
44
3.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Exploring anti-patterns in Rails
aemeredith
3
460
Rails Girls Zürich Keynote
gr2m
96
14k
Un-Boring Meetings
codingconduct
0
380
Darren the Foodie - Storyboard
khoart
PRO
3
3.6k
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