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
Takafumi Yoshida
December 05, 2015
Technology
1
1.7k
あなたとCrystal、いますぐダウンロード
合同勉強会2015
Takafumi Yoshida
December 05, 2015
Tweet
Share
More Decks by Takafumi Yoshida
See All by Takafumi Yoshida
ECSとSQSでスケーラブルなバッチを作った
zephiransas
2
1.3k
DynamoDB Step Zero to One
zephiransas
0
690
ECSとALBで始めるblue/greenデプロイメント
zephiransas
2
320
DynamoDB関連のアップデート紹介 #reinvent2018
zephiransas
0
780
CloudGarageでGitBucketサーバをたててみた
zephiransas
0
520
プログラマが知っておくといいかもしれないCSSのハナシ
zephiransas
1
1.1k
ラクして学ぶ英語(LT版)
zephiransas
0
200
使ってみようLombok
zephiransas
0
260
Modern Web Development with ninjaframework
zephiransas
0
3.1k
Other Decks in Technology
See All in Technology
AIツールでどこまでデザインを忠実に実装できるのか
oikon48
6
3.2k
Large Vision Language Modelを用いた 文書画像データ化作業自動化の検証、運用 / shibuya_AI
sansan_randd
0
130
LLM時代にデータエンジニアの役割はどう変わるか?
ikkimiyazaki
6
1.2k
能登半島地震で見えた災害対応の課題と組織変革の重要性
ditccsugii
0
470
空間を設計する力を考える / 20251004 Naoki Takahashi
shift_evolve
PRO
4
460
Reflections of AI: A Trilogy in Four Parts (GOTO; Copenhagen 2025)
ondfisk
0
110
能登半島災害現場エンジニアクロストーク 【JAWS FESTA 2025 in 金沢】
ditccsugii
0
430
【Kaigi on Rails 事後勉強会LT】MeはどうしてGirlsに? 私とRubyを繋いだRail(s)
joyfrommasara
0
230
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
3
5.5k
Adminaで実現するISMS/SOC2運用の効率化 〜 アカウント管理編 〜
shonansurvivors
4
440
AWS 잘하는 개발자 되기 - AWS 시작하기: 클라우드 개념부터 IAM까지
kimjaewook
0
130
スタートアップにおけるこれからの「データ整備」
shomaekawa
2
350
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Visualization
eitanlees
149
16k
Done Done
chrislema
185
16k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
860
We Have a Design System, Now What?
morganepeng
53
7.8k
How to Ace a Technical Interview
jacobian
280
24k
The Invisible Side of Design
smashingmag
302
51k
Scaling GitHub
holman
463
140k
KATA
mclloyd
32
15k
Designing for humans not robots
tammielis
254
26k
Transcript
あなたとCrystal, 今すぐダウンロー ド 岡山Javaユーザ会/吉田貴文(@zephiransas)
java.com
質問は #gbdaitokai
よろしく お願いします
Rubyを書いてて こんなことないですか? • もっと速く実行したい • 最近のRubyは早いけど・・・ • 部分的でいいので、型が欲しい • メソッド引数、etc…
そんなときには Crystal
Crystalの特徴
Crystalの特徴 • Rubyによく似た文法 • 完全互換ではない • Rubyと違い、型を指定することもできる • 静的型付言語として考えたほうが幸せになれる •
コンパイルして実行可能バイナリが生成される • 高速に実行できる
Crystal情報源 • 公式 - http://crystal-lang.org/ • 日本語訳 - http://ja.crystal-lang.org/ •
ドキュメントがほぼ全て翻訳されてる
Crystal日本語情報まとめ http://qiita.com/pine613/items/7407e56771b504bed82f
Rubyっぽいのに 型がある?
メソッド定義(1) def greet(name : String) "Hello, #{name}" end puts
greet(“Kotori”) puts greet(123) 引数の型を指定 コンパイルエラーになる
メソッド定義(2) def hoge : String "hoge" end def fuga
: String 123 end 戻り値の型を指定 コンパイルエラーになる
複合型の指定 array = Array(Int32).new array << 1 array <<
2 array << "hoge" エラーになる
複合型の指定 array = Array(Int32 | String).new # alias IntString
= Int32 | String # array = Array(IntString).new array << 1 array << 2 array << "hoge" OK 複合型を指定
Crystalは はやい?
RubyからGoの関数をつかう → はやい http://qiita.com/etmnk/items/2801cd09c6ec4439c8fd
Crystalで書く → はやい http://qiita.com/etmnk/items/2801cd09c6ec4439c8fd
竹内関数 def tarai(x, y, z) return y if x
<= y tarai( tarai(x - 1, y, z), tarai(y - 1, z, x), tarai(z - 1, x, y) ) end puts tarai(13, 10, 0)
Rubyの場合 $ ruby -v ruby 2.2.3p173 (2015-08-18 revision 51636)
$ time ruby tarai.rb 13 real 0m8.899s user 0m8.818s sys 0m0.052s 約9秒
Crystalの場合 $ crystal -v Crystal 0.9.0 [be93828] $ crystal
build tarai.rb --release $ time ./tarai 13 real 0m0.352s user 0m0.348s sys 0m0.003s 0.3秒 最適化ビルド 約30倍
Crystalで書く → はやい
Javaの場合 public class Tarai { public static int tarai(int
x, int y, int z) { if(x <= y) return y; return tarai(tarai(x - 1, y, z), tarai(y - 1, z, x), tarai(z - 1, x, y)); } public static void main(String[] args) { System.out.println(tarai(13, 10, 0)); } }
Javaの場合 $ java -version java version "1.8.0_65" Java(TM) SE
Runtime Environment (build 1.8.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode) $ time java Tarai 13 real 0m0.336s user 0m0.316s sys 0m0.026s 0.3秒 ほぼCrystalと同じ
Crystalで書く → はやい Javaで書く → はやい
まとめ • RubyistならすぐCrystalも使える • 型チェックもあるよ • Crystal書く → はやい • Go vs
Crystal • セミコロン書いても死なない人はJavaもイケる
ありがとう ございました