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
490
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
2k
JavaScript-Free Soft-Realtime Browsing
niku
0
820
hideo-at-sapporo-chuork01-hideo-at-sapporo-chuork01.pdf
niku
0
57
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
137
6.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
500
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Code Reviewing Like a Champion
maltzj
521
39k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
173
51k
Automating Front-end Workflow
addyosmani
1366
200k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The World Runs on Bad Software
bkeepers
PRO
66
11k
Reflections from 52 weeks, 52 projects
jeffersonlam
348
20k
A designer walks into a library…
pauljervisheath
205
24k
Why Our Code Smells
bkeepers
PRO
335
57k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.5k
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