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
introduction-of-elixir-at-rubysapporo-28
Search
niku
November 04, 2013
1
480
introduction-of-elixir-at-rubysapporo-28
Ruby勉強会@札幌-28 で発表した elixir-lang の資料です.
niku
November 04, 2013
Tweet
Share
More Decks by niku
See All by niku
Protocol Buffers implementation with using Elixir
niku
1
1.9k
JavaScript-Free Soft-Realtime Browsing
niku
0
790
hideo-at-sapporo-chuork01-hideo-at-sapporo-chuork01.pdf
niku
0
56
Featured
See All Featured
A Philosophy of Restraint
colly
203
16k
Producing Creativity
orderedlist
PRO
341
39k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
65k
Six Lessons from altMBA
skipperchong
27
3.5k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Building Applications with DynamoDB
mza
90
6.1k
KATA
mclloyd
29
14k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Transcript
Elixir�触ってみた� @�Ruby札幌28 ヽ(´・⾁・`)ノ
本⼈いわく http://elixir-lang.org/ に書いてある�Elixir�による自⼰紹 介
全部が式 �������������������������� ����������������������������������������������� ������� ���������������������� ��������������������������������� ������������� ������� ������������������������������������������ �����������
��������������������������� ���������������������� ������������������� ����������� ���
全部が式(2) module�は沢⼭の式からなりた っている. module�の内容をプログラムで 書ける メタプログラミングできる
メタプログラミングとDSL DSL�を簡単に作れる(ExUnitの例) ��������������������� ����������������� ������������������������������� ��������������������� ����� ���
protocol�によるポリモーフ ィズム ファイルにも配列にも使えるEnum モジュール ������������������������������������������������� ������ ��������������������������������� ����������������������������������������������������������������������� ������������������������������
protocol�によるポリモーフ ィズム(2) 自作モジュールでも�Enum�を使 いたい Enum�は�Enumerable�という� protocol�があれば使える MyModule�向けに� Enumerable�を実装する
protocol�によるポリモーフ ィズム(3) ������������������������������������ �������������������������������������� ������������ ����� ������������������������������������ ������������ ����� ���������������������������
������������ ����� ���
⼀級市⺠としてのドキュメン ト ⾔語レベルでドキュメント化を サポートしている. ⾊んなツールで簡単にドキュメントを 使える. マークアップ記法として� Markdown�を使える.
⼀級市⺠としてのドキュメン ト(2) ��������������������� ���������������� ��������������������������������������������������� ����� �������������� �������������� ����������� �����
���
⼀級市⺠としてのドキュメン ト(3) ���������������������� ������������������ ���������� ������������������������������������������������� ������������������������ ������������� �����
パターンマッチング まとまっているものをバラバラに して扱いやすくする ������������������������������������� ����������������������� ����������������� ���������� ������������������������������������������������������� ����������������������� ������������
����� ������������ ���������� ����������� ��
パターンマッチング(2) ガード節�(when)�と混ぜると意図 が伝わりやすくなる ������������������������������������������������������ ������������������������� ��� ���������������������������������������� ���������������������������� ��� ������
����������������������������� ���������������������������������������������
隅から隅まで�Erlang ��������������������������� ������������������������������������������� �������������������������� バイトコードレベルで互換 変換が容易 Elixir�から�Erlang�の関数はコス ト�0�で実⾏できる
本⼈いわく,のまとめ 全部が式 メタプログラミングとDSL protocol�によるポリモーフィズ ム ⼀級市⺠としてのドキュメント パターンマッチ 隅から隅まで�Erlang
触ってみたくなった? インストール⽅法は http://elixir-lang.org/ getting̲started/1.html の�1.1�Installation�に書いてある. Erlang�R16B�以降 Elixir が必要.
触ってみたくなった?(Mac) ������������������� で両⽅インストールできる.
触ってみたくなった? (Windows) Erlang:�http:// www.erlang.org/ download.html Elixir:�https://github.com/ elixir-lang/elixir/releases/ それぞれのコンパイル済�zip�をダ ウンロードして解凍して使うのが 簡単でおすすめ�(�らしい�)
モダンなプログラミング⾔語 最近のプログラミング⾔語が備え ている特徴 Elixir�も備えている
パッケージ管理 mix�::�Ruby�の�Rake�と�Bundler� を合わせたようなもの mix�new:�プロジェクトを作る mix�test:�テストを実⾏する mix�compile:�コンパイルする mix�–help�で詳しくみられる
ライブラリ管理�(みあたらず) rubygems�を操作する�gem�の ようなコマンドはまだ⾒つけら れない rubygems�相当のライブラリ置 き場は�http://expm.co�という のがある
REPL iex�::�Ruby�の�irb�のようなもの �������������� ������ ������������� � ������������������ ������������� ����������� ��������������������������������������������������������
��������������������������������������������������������� ������������������������������������� �������������������������������������������� ������������������������ ������������������ ������������� ����������� ����������� ��������������� �����
ユニットテスト ExUnit�::�Ruby�の�Test::Unit�みた いなもの ��������������������� ����������������� ������������������������������� ��������������������� ����� ���
モダンなプログラミング環境 のまとめ パッケージ管理 ライブラリ管理(みあたらず) REPL ユニットテスト
Elixir�らしそうなところ 個⼈的におおっ! となったところ
マクロ Elixir�の内容は全て�3�要素のタプ ルで表されている atom�か,同じ形式のタプル メタデータのリスト.ノードの 番号とか⾏番号などを保持する 呼び出す関数の引数のリストか� atom ほとんどの構⽂がマクロで作られ
マクロ(2) ������������� � ����������������������� ����������������������������������������������� ���������������������������� �������������������������������� ����������������������� ����������� �����������
����������������������� ��� ���������������������������� �
マクロ(3) ���������������������������� ��������������������������������������������� ������������������������������������������������������������ ������������� ����������� ������� ��� ����������������������� ���
������������������������������������������������ ��� ������������������������������������������������� ����� ���
並列 並列があたりまえ. 簡単に作れるようになっている. spawn�:�違うプロセスを作る x�<-�y�:�プロセス�x�に�y�という 内容を送る receive�:�送られた内容を取得す る
並列(2) �������������������������� ������������ ������������������� ����������������������������������������� ����������� ������������ ������������������ ���������������������������� ������������������������������������������������
����������� ����������������������� ���
並列(3) https://gist.github.com/ niku/7301933 普通の�MacBook�で�100�万プロ セス⽣成�16�秒で動くんだぜー ������������������������������������������������������������������ �������������������������������
OTP OTPとは何か? http://www.ymotongpoo.com/ works/lyse-ja/ ja/16̲what̲is̲otp.html 大抵のプロセスでは,共通の処 理がある パターンを⾒極めて,共通ライ ブラリにまとめたもの
OTP(2) OTP�の便利なところ(⼀部) ワーカープロセスの監視/再起動 が�組み込まれている ダウンタイム�ゼロ�のリリース, デプロイ
Elixir�らしそうなところのま とめ マクロ�(Elixirすごい) 並列�(Elixirが使っている ErlangVMすごい) OTP�(Elixirが使っているErlang のライブラリすごい)
思考の転換 プログラマの思考はプログラ ミング⾔語に影響される http://gihyo.jp/news/ report/01/rubykaigi2013/0001 “まつもとゆきひろさん,Rubyに 影響を与えた⾔語とRuby開発初期 を語る。�〜�RubyKaigi�2013�基 調講演�1⽇目”
想像してみてほしい もし並列処理が簡単に書けるな ら もし無制限に並列処理できるな ら どんな考え⽅をするだろう? Elixir�を使って試してみようぜ.
参考にしている本/サイト http://elixir-lang.org/ getting̲started/ http:// www.ymotongpoo.com/ works/lyse-ja/index.html http://pragprog.com/book/ elixir/programming-elixir