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
670
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
Preferred Networks (PFN) とLLM Post-Training チームの紹介 / 第4回 関東Kaggler会 スポンサーセッション
pfn
PRO
1
170
RAID6 を楔形文字で組んで現代人を怖がらせましょう(実装編)
mimifuwa
0
300
夢の印税生活 / Life on Royalties
tmtms
0
280
ドキュメントはAIの味方!スタートアップのアジャイルを加速するADR
kawauso
3
340
「守る」から「進化させる」セキュリティへ ~AWS re:Inforce 2025参加報告~ / AWS re:Inforce 2025 Participation Report
yuj1osm
1
110
kintone開発チームの紹介
cybozuinsideout
PRO
0
73k
モダンフロントエンド 開発研修
recruitengineers
PRO
2
240
認知戦の理解と、市民としての対抗策
hogehuga
0
310
小さなチーム 大きな仕事 - 個人開発でAIをフル活用する
himaratsu
0
120
LLM時代の検索とコンテキストエンジニアリング
shibuiwilliam
2
1.1k
実践アプリケーション設計 ③ドメイン駆動設計
recruitengineers
PRO
1
150
人を動かすことについて考える
ichimichi
2
320
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
Become a Pro
speakerdeck
PRO
29
5.5k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
The Language of Interfaces
destraynor
160
25k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Balancing Empowerment & Direction
lara
2
590
Typedesign – Prime Four
hannesfritz
42
2.8k
Faster Mobile Websites
deanohume
309
31k
Designing for humans not robots
tammielis
253
25k
Documentation Writing (for coders)
carmenintech
73
5k
Automating Front-end Workflow
addyosmani
1370
200k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
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もイケる
ありがとう ございました