SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
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.

Más contenido relacionado

Destacado

Rubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみるRubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみる5t111111
 
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Tsunenori Oohara
 
RubyConf Brazil 2010 - Mirah
RubyConf Brazil 2010 - MirahRubyConf Brazil 2010 - Mirah
RubyConf Brazil 2010 - MirahCharles 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 PindahNick 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 browserForrest 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_hopeForrest Chang
 
Elixirと他言語の比較的紹介 ver.2
Elixirと他言語の比較的紹介ver.2Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介 ver.2Tsunenori Oohara
 
Golang, make and robotics #gocon
Golang, make and robotics #goconGolang, make and robotics #gocon
Golang, make and robotics #goconHideyuki TAKEI
 
Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるMasakazu Muraoka
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12matsuo 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 herokuKyosuke Kameda
 

Destacado (20)

Rubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみるRubyの拡張をCrystalで書いてみる
Rubyの拡張をCrystalで書いてみる
 
Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄Elixirについて私が知ってる二、三の事柄
Elixirについて私が知ってる二、三の事柄
 
Lin 通信
Lin 通信Lin 通信
Lin 通信
 
RubyConf Brazil 2010 - Mirah
RubyConf Brazil 2010 - MirahRubyConf Brazil 2010 - Mirah
RubyConf Brazil 2010 - Mirah
 
Rejectkaigi 2010
Rejectkaigi 2010Rejectkaigi 2010
Rejectkaigi 2010
 
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
 
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
 
Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能Elixir v1.3 で入るかもしれない機能
Elixir v1.3 で入るかもしれない機能
 
Opal chapter 4_a_new_hope
Opal chapter 4_a_new_hopeOpal chapter 4_a_new_hope
Opal chapter 4_a_new_hope
 
Elixirと他言語の比較的紹介 ver.2
Elixirと他言語の比較的紹介ver.2Elixirと他言語の比較的紹介ver.2
Elixirと他言語の比較的紹介 ver.2
 
Go+revel
Go+revelGo+revel
Go+revel
 
Golang, make and robotics #gocon
Golang, make and robotics #goconGolang, make and robotics #gocon
Golang, make and robotics #gocon
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 
Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみる
 
Goを知る
Goを知るGoを知る
Goを知る
 
Github第8章
Github第8章Github第8章
Github第8章
 
HighBatch
HighBatchHighBatch
HighBatch
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12
 
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)
 
alphawing meets heroku
alphawing meets herokualphawing meets heroku
alphawing meets heroku
 

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

20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料慎平 仁藤
 
RubyからC#を扱う
RubyからC#を扱うRubyからC#を扱う
RubyからC#を扱う107steps
 
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流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 CorporationsKoichiro Ohba
 
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon phpdo_aki
 
Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Kanako Kobayashi
 

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

20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料20150228_渋谷Webエンジニア朝会LT資料
20150228_渋谷Webエンジニア朝会LT資料
 
RubyからC#を扱う
RubyからC#を扱うRubyからC#を扱う
RubyからC#を扱う
 
Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流Rubyとプログラミング言語の潮流
Rubyとプログラミング言語の潮流
 
Ruby と C# をつなぐ
Ruby と C# をつなぐRuby と C# をつなぐ
Ruby と C# をつなぐ
 
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
 
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon php
 
Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計
 

Último

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 

Último (11)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

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.