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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
niku
November 04, 2013
560
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
78
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
41k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Speed Design
sergeychernyshev
33
2.1k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
690
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Statistics for Hackers
jakevdp
799
230k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
570
Unsuck your backbone
ammeep
672
58k
The SEO Collaboration Effect
kristinabergwall1
1
550
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
930
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
270
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