Top Banner
Crystal Ruby 風シンタックスな静的言語の紹介 水音ぴね
15

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

Aug 08, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Ruby 風シンタックスな静的言語 Crystal の紹介

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

水音ぴね

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

目次

•  Crystal とは ?

•  Crystal と Ruby の相違点

•  Crystal の使い所とは ?

•  Crystal の開発進捗

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

Crystal とは ?

ヒトコトで言うと …?

3  

u  Ruby の表現力

u  C の速度

を兼ね備えた言語

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

Crystal 詳細

•  Ruby に酷似した syntax

•  静的型付け / コンパイラ言語– LLVM ベース

•  非常に高速

•  C 言語資源の再利用性を重視4  

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

Ruby  の復習  

5  

•  動的型付け

•  インタプリタ / JIT コンパイラで動作

•  Ruby on Rails がとても有名– ORM のチューニングが大変なことで有名

•  Pascal / Delphi 系 シンタックス

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

Ruby  syntax  require ‘sinatra’

get ‘/’ do name = if params[:name] params[:name] else ‘anonymous’ end ” Hello world, #{name} ” end 6  

# 制御構文に括弧はない

# メソッド呼び出しのカッコを省略できる

# end 地獄

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

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 使える!

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

Crystal  syntax  ≒ Ruby  syntax  

8  

•  ほとんど同じだって Matz も言ってる!!

出展: https://twitter.com/yukihiro_matz/status/610842781091672064

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

Crystal と Ruby の相違点

9  

Ruby 比較項目 Crystal

遅い 実行速度 早い

可能(FFI / Extension) C との連携 容易

(それを前提に設計)

中央管理(rubygems.org)

ライブラリリポジトリ

分散(git)

Bundler 依存モジュール管理 コンパイラに内蔵

安定フェーズ(v2.2.x) 安定性 開発フェーズ

(v0.7.x)

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

Crystal  の使い所  

10  

•  速度が求められる場所

•  C / C++ からの段階的移植

•  Ruby エンジニアが多い環境での新規採用

•  クロスプラットフォームで高速な CLI ツール(現状の Golang の領域)

もちろん、安定版という条件ですが

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

11  

Crystal の開発進捗について

※ 『 のんのんびより りぴーと 』 は 7月6日 スタート!

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

•  最新版: v0.7.3 (2015/06/07)•  セルフホスティングコンパイラ

–  ある仕様 FIX & 安定動作するフェーズ

•  安定した開発

12  

[Crystal 進捗] 全般

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

•  Linux– 公式サポート: Debian / Ubuntu / RHEL / CentOS

•  Mac OS X– Homebrew tap を提供

•  Windows– 未サポート– GitHub に Issue はある ... 13  

[Crystal 進捗] 対応環境

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

•  コンパイラに内蔵–  Golang と同じかんじ

•  依存関係は Projectfile に記述–  Cpanfile, Gemfile と同じかんじ

•  分散型 リポジトリ–  GitHub を直接参照 / Golang と(ry

14  

[Crystal 進捗] パッケージマネージャ

Ruby ... gem, Bundler Perl ... cpanm, Carton

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

Fin.