ruby 風シンタックスな静的言語 crystal の紹介
TRANSCRIPT
CrystalRuby 風シンタックスな静的言語の紹介
水音ぴね
目次
• 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.