Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
introduction-of-elixir-at-rubysapporo-28
Search
niku
November 04, 2013
570
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
introduction-of-elixir-at-rubysapporo-28
Ruby勉強会@札幌-28 で発表した elixir-lang の資料です.
niku
November 04, 2013
More Decks by niku
See All by niku
Protocol Buffers implementation with using Elixir
niku
1
2.2k
JavaScript-Free Soft-Realtime Browsing
niku
0
1k
hideo-at-sapporo-chuork01-hideo-at-sapporo-chuork01.pdf
niku
0
80
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
529
40k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
500
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.3k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Automating Front-end Workflow
addyosmani
1370
210k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
550
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
320
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
620
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.6k
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