狠狠撸

狠狠撸Share a Scribd company logo
Crystal
Ruby 風シンタックスな静的言語の紹介
水音ぴね
目次
?? Crystal とは ?
?? Crystal と Ruby の相違点
?? Crystal の使い所とは ?
?? Crystal の開発進捗
Crystal とは ?
ヒトコトで言うと …?
3	
 ?
u??Ruby の表現力
u??C の速度
を兼ね備えた言語
と
Crystal 詳細
?? Ruby に酷似した syntax
?? 静的型付け / コンパイラ言語
–?LLVM ベース
?? 非常に高速
?? C 言語資源の再利用性を重視
4	
 ?
Ruby	
 ?の復習	
 ?
5	
 ?
?? 動的型付け
?? インタプリタ / JIT コンパイラで動作
?? Ruby on Rails がとても有名
–?ORM のチューニングが大変なことで有名
?? Pascal / Delphi 系 シンタックス
Ruby	
 ?syntax	
 ?
require ‘sinatra’
get ‘/’ do
name = if params[:name]
params[:name]
else
‘anonymous’
end
” Hello world, #{name}?”
end
6	
 ?
# 制御構文に括弧はない	
# メソッド呼び出しのカッコを省略できる	
# end 地獄
Crystal	
 ?syntax	
 ?
app	
 ?=	
 ?App.new	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?
app.route	
 ?“/”,	
 ?do	
 ?|req|	
 ?
	
 ?	
 ?	
 ?	
 ?name	
 ?=	
 ?if	
 ?req.get.has_key?	
 ?“name”	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?req.get[“name”]	
 ?
	
 ?	
 ?	
 ?	
 ?else	
 ?
	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?	
 ?“anonymous”	
 ?
	
 ?	
 ?	
 ?	
 ?end	
 ?
	
 ?	
 ?	
 ?	
 ?ok("Hello	
 ?world,	
 ?#{name}")	
 ?
end	
 ?
	
 ?	
 ?	
 ?
app.run(ENV[“PORT”].to_i)	
 ? 7	
 ?
# 入らなかったので require 省略してます	
# end 地獄は健在	
# Hash の key が無いと exception
# (Ruby よりちょっと厳しい)	
# to_i 使える!
Crystal	
 ?syntax	
 ?≒ Ruby	
 ?syntax	
 ?
8	
 ?
?? ほとんど同じだって Matz も言ってる!!
出展: https://twitter.com/yukihiro_matz/status/610842781091672064
Crystal と Ruby の相違点
9	
 ?
Ruby 比較項目 Crystal
遅い 実行速度 早い
可能
(FFI / Extension)
C との連携
容易
(それを前提に設計)
中央管理
(rubygems.org)
ライブラリ
リポジトリ
分散
(git)
Bundler 依存モジュール管理 コンパイラに内蔵
安定フェーズ
(v2.2.x)
安定性
開発フェーズ
(v0.7.x)
Crystal	
 ?の使い所	
 ?
10	
 ?
?? 速度が求められる場所
?? C / C++ からの段階的移植
?? Ruby エンジニアが多い環境での新規採用
?? クロスプラットフォームで高速な CLI ツール
(現状の Golang の領域)
もちろん、安定版という条件ですが
11	
 ?
Crystal の開発進捗について
※ 『 のんのんびより りぴーと 』 は 7月6日 スタート!
?? 最新版: v0.7.3 (2015/06/07)
?? セルフホスティングコンパイラ
–? ある仕様 FIX & 安定動作するフェーズ
?? 安定した開発
12	
 ?
[Crystal 進捗] 全般
?? Linux
–?公式サポート: Debian / Ubuntu / RHEL / CentOS
?? Mac OS X
–?Homebrew tap を提供
?? Windows
–?未サポート
–?GitHub に Issue はある ...
13	
 ?
[Crystal 進捗] 対応環境
?? コンパイラに内蔵
–? Golang と同じかんじ
?? 依存関係は Projectfile に記述
–? Cpanfile, Gemfile と同じかんじ
?? 分散型 リポジトリ
–? GitHub を直接参照 / Golang と(ry
14	
 ?
[Crystal 進捗] パッケージマネージャ
Ruby ... gem, Bundler
Perl ... cpanm, Carton
Fin.

More Related Content

Viewers also liked (20)

搁耻产测の拡张を颁谤测蝉迟补濒で书いてみる
搁耻产测の拡张を颁谤测蝉迟补濒で书いてみる搁耻产测の拡张を颁谤测蝉迟补濒で书いてみる
搁耻产测の拡张を颁谤测蝉迟补濒で书いてみる
5t111111
?
贰濒颈虫颈谤について私が知ってる二、叁の事柄
贰濒颈虫颈谤について私が知ってる二、叁の事柄贰濒颈虫颈谤について私が知ってる二、叁の事柄
贰濒颈虫颈谤について私が知ってる二、叁の事柄
Tsunenori Oohara
?
RubyConf Brazil 2010 - Mirah
RubyConf Brazil 2010 - MirahRubyConf Brazil 2010 - Mirah
RubyConf Brazil 2010 - Mirah
Charles Nutter
?
Rejectkaigi 2010
Rejectkaigi 2010Rejectkaigi 2010
Rejectkaigi 2010
John Woodell
?
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and Pindah
Nick Plante
?
Opal - Ruby Style!! Ruby in the browser
Opal - Ruby Style!!  Ruby in the browserOpal - Ruby Style!!  Ruby in the browser
Opal - Ruby Style!! Ruby in the browser
Forrest Chang
?
Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能
hayabusa333
?
Opal chapter 4_a_new_hope
Opal chapter 4_a_new_hopeOpal chapter 4_a_new_hope
Opal chapter 4_a_new_hope
Forrest Chang
?
Elixirと他言語の比較的紹介 ver.2
Elixirと他言語の比較的紹介ver.2Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介 ver.2
Tsunenori Oohara
?
骋辞+谤别惫别濒
骋辞+谤别惫别濒骋辞+谤别惫别濒
骋辞+谤别惫别濒
Amuro Nishizawa
?
Golang, make and robotics #gocon
Golang, make and robotics #goconGolang, make and robotics #gocon
Golang, make and robotics #gocon
Hideyuki TAKEI
?
Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみる
Masakazu Muraoka
?
骋辞を知る
骋辞を知る骋辞を知る
骋辞を知る
Hirokazu Fukami
?
骋颈迟丑耻产第8章
骋颈迟丑耻产第8章骋颈迟丑耻产第8章
骋颈迟丑耻产第8章
Yuto Suzuki
?
HighBatch
HighBatchHighBatch
HighBatch
Nobuhito Sato
?
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12
matsuo kenji
?
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
deris0126
?
alphawing meets heroku
alphawing meets herokualphawing meets heroku
alphawing meets heroku
Kyosuke Kameda
?
搁耻产测の拡张を颁谤测蝉迟补濒で书いてみる
搁耻产测の拡张を颁谤测蝉迟补濒で书いてみる搁耻产测の拡张を颁谤测蝉迟补濒で书いてみる
搁耻产测の拡张を颁谤测蝉迟补濒で书いてみる
5t111111
?
贰濒颈虫颈谤について私が知ってる二、叁の事柄
贰濒颈虫颈谤について私が知ってる二、叁の事柄贰濒颈虫颈谤について私が知ってる二、叁の事柄
贰濒颈虫颈谤について私が知ってる二、叁の事柄
Tsunenori Oohara
?
RubyConf Brazil 2010 - Mirah
RubyConf Brazil 2010 - MirahRubyConf Brazil 2010 - Mirah
RubyConf Brazil 2010 - Mirah
Charles Nutter
?
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and Pindah
Nick Plante
?
Opal - Ruby Style!! Ruby in the browser
Opal - Ruby Style!!  Ruby in the browserOpal - Ruby Style!!  Ruby in the browser
Opal - Ruby Style!! Ruby in the browser
Forrest Chang
?
Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能
hayabusa333
?
Opal chapter 4_a_new_hope
Opal chapter 4_a_new_hopeOpal chapter 4_a_new_hope
Opal chapter 4_a_new_hope
Forrest Chang
?
Elixirと他言語の比較的紹介 ver.2
Elixirと他言語の比較的紹介ver.2Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介 ver.2
Tsunenori Oohara
?
Golang, make and robotics #gocon
Golang, make and robotics #goconGolang, make and robotics #gocon
Golang, make and robotics #gocon
Hideyuki TAKEI
?
Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみる
Masakazu Muraoka
?
骋颈迟丑耻产第8章
骋颈迟丑耻产第8章骋颈迟丑耻产第8章
骋颈迟丑耻产第8章
Yuto Suzuki
?
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
deris0126
?

Similar to Ruby 風シンタックスな静的言語 Crystal の紹介 (7)

20150228冲渋谷奥别产エンジニア朝会尝罢资料
20150228冲渋谷奥别产エンジニア朝会尝罢资料20150228冲渋谷奥别产エンジニア朝会尝罢资料
20150228冲渋谷奥别产エンジニア朝会尝罢资料
慎平 仁藤
?
搁耻产测から颁#を扱う
搁耻产测から颁#を扱う搁耻产测から颁#を扱う
搁耻产测から颁#を扱う
107steps
?
?搁耻产测とプログラミング言语の潮流
?搁耻产测とプログラミング言语の潮流?搁耻产测とプログラミング言语の潮流
?搁耻产测とプログラミング言语の潮流
Kazuhiko Kato
?
Ruby と C# をつなぐ
Ruby と C# をつなぐRuby と C# をつなぐ
Ruby と C# をつなぐ
107steps
?
The Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in CorporationsThe Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in Corporations
Koichiro Ohba
?
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon php
do_aki
?
搁补颈濒蝉から学ふ?搁贰厂罢蹿耻濒な耻谤颈设计
搁补颈濒蝉から学ふ?搁贰厂罢蹿耻濒な耻谤颈设计搁补颈濒蝉から学ふ?搁贰厂罢蹿耻濒な耻谤颈设计
搁补颈濒蝉から学ふ?搁贰厂罢蹿耻濒な耻谤颈设计
Kanako Kobayashi
?
20150228冲渋谷奥别产エンジニア朝会尝罢资料
20150228冲渋谷奥别产エンジニア朝会尝罢资料20150228冲渋谷奥别产エンジニア朝会尝罢资料
20150228冲渋谷奥别产エンジニア朝会尝罢资料
慎平 仁藤
?
搁耻产测から颁#を扱う
搁耻产测から颁#を扱う搁耻产测から颁#を扱う
搁耻产测から颁#を扱う
107steps
?
?搁耻产测とプログラミング言语の潮流
?搁耻产测とプログラミング言语の潮流?搁耻产测とプログラミング言语の潮流
?搁耻产测とプログラミング言语の潮流
Kazuhiko Kato
?
Ruby と C# をつなぐ
Ruby と C# をつなぐRuby と C# をつなぐ
Ruby と C# をつなぐ
107steps
?
The Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in CorporationsThe Essence of Using Ruby on Rails in Corporations
The Essence of Using Ruby on Rails in Corporations
Koichiro Ohba
?
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon php
do_aki
?
搁补颈濒蝉から学ふ?搁贰厂罢蹿耻濒な耻谤颈设计
搁补颈濒蝉から学ふ?搁贰厂罢蹿耻濒な耻谤颈设计搁补颈濒蝉から学ふ?搁贰厂罢蹿耻濒な耻谤颈设计
搁补颈濒蝉から学ふ?搁贰厂罢蹿耻濒な耻谤颈设计
Kanako Kobayashi
?

Recently uploaded (6)

2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
翔栄 杉田
?
惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)
惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)
惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)
馮 富久
?
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
sugiuralab
?
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
info819904
?
松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)
松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)
松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)
Matsushita Laboratory
?
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージカスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
info819904
?
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
2019飞冲东京大学大学院茂木研究室冲学生研究员杉田翔栄冲搁罢贰最终発表会スライト?.辫诲蹿
翔栄 杉田
?
惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)
惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)
惭测厂蚕尝30周年&ユーザ会25周年记念イベント冯発表资料(2025年3月25日开催)
馮 富久
?
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
自由に移动する复数の?々に异なる映像を提?するテ?ィスフ?レイシステムについての基础検讨
sugiuralab
?
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
量子リザバソフトウェア冲时系列データ(农业?核融合?需要予测)効果検証冲导入による成果
info819904
?
松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)
松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)
松下光范「街歩き型ストーリーリーダーの実施」,もうひとつの十叁未来会议(有识者编)
Matsushita Laboratory
?
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージカスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
カスタム厂尝惭「贬补尘蝉迟别谤」冲軽量でセキュアな専用言语モデル冲础滨エージェント冲チャットボット冲マッチングアプリ构筑のコアパッケージ
info819904
?

Ruby 風シンタックスな静的言語 Crystal の紹介

  • 2. 目次 ?? Crystal とは ? ?? Crystal と Ruby の相違点 ?? Crystal の使い所とは ? ?? Crystal の開発進捗
  • 3. Crystal とは ? ヒトコトで言うと …? 3 ? u??Ruby の表現力 u??C の速度 を兼ね備えた言語 と
  • 4. Crystal 詳細 ?? Ruby に酷似した syntax ?? 静的型付け / コンパイラ言語 –?LLVM ベース ?? 非常に高速 ?? C 言語資源の再利用性を重視 4 ?
  • 5. Ruby ?の復習 ? 5 ? ?? 動的型付け ?? インタプリタ / JIT コンパイラで動作 ?? Ruby on Rails がとても有名 –?ORM のチューニングが大変なことで有名 ?? Pascal / Delphi 系 シンタックス
  • 6. Ruby ?syntax ? require ‘sinatra’ get ‘/’ do name = if params[:name] params[:name] else ‘anonymous’ end ” Hello world, #{name}?” end 6 ? # 制御構文に括弧はない # メソッド呼び出しのカッコを省略できる # end 地獄
  • 7. Crystal ?syntax ? app ?= ?App.new ? ? ? ? ? ? app.route ?“/”, ?do ?|req| ? ? ? ? ?name ?= ?if ?req.get.has_key? ?“name” ? ? ? ? ? ? ? ? ?req.get[“name”] ? ? ? ? ?else ? ? ? ? ? ? ? ? ?“anonymous” ? ? ? ? ?end ? ? ? ? ?ok("Hello ?world, ?#{name}") ? end ? ? ? ? app.run(ENV[“PORT”].to_i) ? 7 ? # 入らなかったので require 省略してます # end 地獄は健在 # Hash の key が無いと exception # (Ruby よりちょっと厳しい) # to_i 使える!
  • 8. Crystal ?syntax ?≒ Ruby ?syntax ? 8 ? ?? ほとんど同じだって Matz も言ってる!! 出展: https://twitter.com/yukihiro_matz/status/610842781091672064
  • 9. Crystal と Ruby の相違点 9 ? Ruby 比較項目 Crystal 遅い 実行速度 早い 可能 (FFI / Extension) C との連携 容易 (それを前提に設計) 中央管理 (rubygems.org) ライブラリ リポジトリ 分散 (git) Bundler 依存モジュール管理 コンパイラに内蔵 安定フェーズ (v2.2.x) 安定性 開発フェーズ (v0.7.x)
  • 10. Crystal ?の使い所 ? 10 ? ?? 速度が求められる場所 ?? C / C++ からの段階的移植 ?? Ruby エンジニアが多い環境での新規採用 ?? クロスプラットフォームで高速な CLI ツール (現状の Golang の領域) もちろん、安定版という条件ですが
  • 11. 11 ? Crystal の開発進捗について ※ 『 のんのんびより りぴーと 』 は 7月6日 スタート!
  • 12. ?? 最新版: v0.7.3 (2015/06/07) ?? セルフホスティングコンパイラ –? ある仕様 FIX & 安定動作するフェーズ ?? 安定した開発 12 ? [Crystal 進捗] 全般
  • 13. ?? Linux –?公式サポート: Debian / Ubuntu / RHEL / CentOS ?? Mac OS X –?Homebrew tap を提供 ?? Windows –?未サポート –?GitHub に Issue はある ... 13 ? [Crystal 進捗] 対応環境
  • 14. ?? コンパイラに内蔵 –? Golang と同じかんじ ?? 依存関係は Projectfile に記述 –? Cpanfile, Gemfile と同じかんじ ?? 分散型 リポジトリ –? GitHub を直接参照 / Golang と(ry 14 ? [Crystal 進捗] パッケージマネージャ Ruby ... gem, Bundler Perl ... cpanm, Carton
  • 15. Fin.