Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Ruby 風シンタックスな静的言語 Crystal の紹介
Pine Mizune
June 23, 2015
Programming
0
230
Ruby 風シンタックスな静的言語 Crystal の紹介
社内新卒技術勉強会の資料
Pine Mizune
June 23, 2015
Tweet
Share
More Decks by Pine Mizune
See All by Pine Mizune
多言語対応と絵文字ジェネレーター / i18n of Emoji Generator
pine
0
380
C++ 製グラフィックライブラリ Skia の紹介 / Introduction to the graphics library Skia written by C++
pine
0
820
asyncio + aiohttp で作るウェブサービス / How to develop a web service with asyncio and aiohttp
pine
0
420
Lerna による明示的疎結合アーキテクチャ
pine
1
520
CircleCI 2.0 x JavaScript
pine
3
460
Perl 卒業式
pine
0
270
Android Studio の気になる warnings を抑制する方法まとめ
pine
0
380
Emoji Generator meets Browser Extensions
pine
1
2.7k
近年の OSS 開発における CI 選択のベストプラクティス
pine
3
4.4k
Other Decks in Programming
See All in Programming
WindowsコンテナDojo:第2回 Windowsコンテナアプリのビルド、公開、デプロイ
oniak3ibm
PRO
0
150
Learning DDD輪読会#4 / Learning DDD Book Club #4
suzushin54
1
150
近況PHP / PHP in now a days
uzulla
4
1.9k
CLI構築のススメ
nyankotaro
1
220
Micro Frontends with Module Federation: Beyond the Basics @codecrafts2022
manfredsteyer
PRO
0
120
【Qiita Night】新卒エンジニアによるSwift6与太予想
eiji127
0
180
Milestoner
bkuhlmann
1
200
Jakarta EE 10 is Coming Your Way
ivargrimstad
0
3k
プログラミングを勉強したいと言われたら
yuba_4
0
420
The future of trust stores in Python
sethmlarson
0
180
テスト設計技法をなぜ&どのように使うのか体験しよう!
imtnd
0
490
Airflow1=>Airflow2へのupgrade 事例紹介
reizist
0
120
Featured
See All Featured
What's new in Ruby 2.0
geeforr
336
30k
Scaling GitHub
holman
451
140k
Designing the Hi-DPI Web
ddemaree
272
32k
Ruby is Unlike a Banana
tanoku
91
9.2k
Building Adaptive Systems
keathley
25
1.1k
Design by the Numbers
sachag
271
17k
Statistics for Hackers
jakevdp
781
210k
Building Applications with DynamoDB
mza
83
4.6k
It's Worth the Effort
3n
172
25k
Typedesign – Prime Four
hannesfritz
33
1.3k
How STYLIGHT went responsive
nonsquared
85
3.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
4
450
Transcript
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.