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.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
760
ECSとALBで始めるblue/greenデプロイメント
zephiransas
2
350
DynamoDB関連のアップデート紹介 #reinvent2018
zephiransas
0
880
CloudGarageでGitBucketサーバをたててみた
zephiransas
0
540
プログラマが知っておくといいかもしれないCSSのハナシ
zephiransas
1
1.1k
ラクして学ぶ英語(LT版)
zephiransas
0
220
使ってみようLombok
zephiransas
0
280
Modern Web Development with ninjaframework
zephiransas
0
3.2k
Other Decks in Technology
See All in Technology
AIに狂うスタートアップが、あえて「人との協働」に全振りした新卒エンジニア研修 / New Graduate Engineer Training at a Startup Accelerating AI Adoption
ohnoeight
0
200
[potatotips #96] Give Your AI Agent the Flutter Playbook
korodroid
0
160
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
AWS Blocks が楽しい #ゆるWeb札幌
tacck
PRO
0
140
ソフトウェアサプライチェーンの構造的リスクとコンテナ環境の保護
kyohmizu
5
900
安全性・開発速度・ユーザー体験の あいだで考える 事業会社のプロダクトセキュリティ
mixi_engineers
PRO
0
100
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
9.4k
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
590
関東Kaggler会発表資料
takoi
1
290
AI時代のアウトプット――変わったこと、変わらないこと / Devsumi 2026 Kansai #devsumi
jnchito
0
540
国家プロジェクトを支える「さくらONE」 大規模LLM開発におけるGPU障害を乗り越えるクラスター運用戦略
gpuunite_official
0
270
AI画像認識を活用したゲーム内決済処理検証の自動化
gree_tech
PRO
0
420
Featured
See All Featured
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
490
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
250
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
390
GitHub's CSS Performance
jonrohan
1033
470k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Building the Perfect Custom Keyboard
takai
2
850
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
250
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
30 Presentation Tips
portentint
PRO
1
380
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もイケる
ありがとう ございました