Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

社内新卒技術勉強会の資料

842aaadff6e13fbf372c9b17b49b031c?s=128

Pine Mizune

June 23, 2015
Tweet

More Decks by Pine Mizune

Other Decks in Programming

Transcript

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

  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.