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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Takafumi Yoshida
December 05, 2015
Technology
1.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
あなたとCrystal、いますぐダウンロード
合同勉強会2015
Takafumi Yoshida
December 05, 2015
More Decks by Takafumi Yoshida
See All by Takafumi Yoshida
ECSとSQSでスケーラブルなバッチを作った
zephiransas
2
1.4k
DynamoDB Step Zero to One
zephiransas
0
750
ECSとALBで始めるblue/greenデプロイメント
zephiransas
2
350
DynamoDB関連のアップデート紹介 #reinvent2018
zephiransas
0
860
CloudGarageでGitBucketサーバをたててみた
zephiransas
0
540
プログラマが知っておくといいかもしれないCSSのハナシ
zephiransas
1
1.1k
ラクして学ぶ英語(LT版)
zephiransas
0
210
使ってみようLombok
zephiransas
0
280
Modern Web Development with ninjaframework
zephiransas
0
3.2k
Other Decks in Technology
See All in Technology
AGENTS.mdとSkillsで始めるAIエージェント活用
sonoda_mj
3
210
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
590
2026.06.13_AI時代に事業会社が「SIer出身エンジニア」を求める理由 / Why Businesses Seek Engineers with a System Integrator Background in the AI Era
jumtech
0
1.1k
やさしいA2A入門
minorun365
PRO
12
1.8k
RSA暗号を手計算したくなること、ありますよね?? (20260615_orestudy6_rsa)
thousanda
0
380
EventBridge Connection
_kensh
5
710
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
140
Snowflakeと仲良くなる第一歩
coco_se
4
460
AIのReact習熟度を測る
uhyo
2
480
Kiroで書いた 設計書 が AI レビューの 採点基準 になる
ezaki
0
100
失敗を資産に変えるClaude Code
shinyasaita
0
640
エラーバジェットのアラートのタイミングを考える.pdf
kairim0
0
140
Featured
See All Featured
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
Technical Leadership for Architectural Decision Making
baasie
3
410
Building Applications with DynamoDB
mza
96
7.1k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
780
Design in an AI World
tapps
1
240
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
940
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
Unsuck your backbone
ammeep
672
58k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
240
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もイケる
ありがとう ございました