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
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
For a Future-Friendly Web
brad_frost
183
10k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
440
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
230
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
580
HDC tutorial
michielstock
2
870
Optimizing for Happiness
mojombo
378
71k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
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