Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby 風シンタックスな静的言語 Crystal の紹介
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Pine Mizune
June 23, 2015
Programming
310
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ruby 風シンタックスな静的言語 Crystal の紹介
社内新卒技術勉強会の資料
Pine Mizune
June 23, 2015
More Decks by Pine Mizune
See All by Pine Mizune
多言語対応と絵文字ジェネレーター / i18n of Emoji Generator
pine
0
870
C++ 製グラフィックライブラリ Skia の紹介 / Introduction to the graphics library Skia written by C++
pine
0
2k
asyncio + aiohttp で作るウェブサービス / How to develop a web service with asyncio and aiohttp
pine
0
690
Lerna による明示的疎結合アーキテクチャ
pine
1
680
CircleCI 2.0 x JavaScript
pine
3
570
Perl 卒業式
pine
0
370
Android Studio の気になる warnings を抑制する方法まとめ
pine
0
520
Emoji Generator meets Browser Extensions
pine
1
3k
近年の OSS 開発における CI 選択のベストプラクティス
pine
3
4.5k
Other Decks in Programming
See All in Programming
JavaDoc 再入門
nagise
1
370
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
290
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.3k
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.4k
Webフレームワークの ベンチマークについて
yusukebe
0
170
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
270
Inside Stream API
skrb
1
740
ふつうのFeature Flag実践入門
irof
8
4k
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
190
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
260
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
790
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
250
Featured
See All Featured
We Are The Robots
honzajavorek
0
250
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Evolving SEO for Evolving Search Engines
ryanjones
0
220
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
170
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
320
Are puppies a ranking factor?
jonoalderson
1
3.6k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
WENDY [Excerpt]
tessaabrams
11
38k
The Invisible Side of Design
smashingmag
302
52k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
210
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.