Rabbit Slide Show

# Elixir 触ってみた @ Ruby 札幌 28

Description

[Ruby勉強会@札幌-28](http://ruby-sapporo.org/news/2013/10/18/workshop-28.html) で発表した [elixir-lang](http://elixir-lang.org/) の資料です. ## 作者向け ### 表示 rake ### 公開 rake publish ## 閲覧者向け ### インストール gem install rabbit-slide-niku-introduction-of-the-elixir-lang-at-ruby-sapporo-28 ### 表示 rabbit rabbit-slide-niku-introduction-of-the-elixir-lang-at-ruby-sapporo-28.gem

Text

Page: 1

Elixir 触ってみた 
@ Ruby札幌28
ヽ(´・⾁・`)ノ

Page: 2

本⼈いわく
http://elixir-lang.org/
に書いてある Elixir による自⼰紹
介

Page: 3

全部が式
                          
                                               
       
                      
                                 
             
       
                                          
           
                           
                      
                   
           
   

Page: 4

全部が式(2)
module は沢⼭の式からなりた
っている.
module の内容をプログラムで
書ける
メタプログラミングできる

Page: 5

メタプログラミングとDSL
DSL を簡単に作れる(ExUnitの例)
                     
                 
                               
                     
     
   

Page: 6

protocol によるポリモーフ
ィズム
ファイルにも配列にも使えるEnum
モジュール
                                                 
      
                                 
                                                                       
                              

Page: 7

protocol によるポリモーフ
ィズム(2)
自作モジュールでも Enum を使
いたい
Enum は Enumerable という 
protocol があれば使える
MyModule 向けに 
Enumerable を実装する

Page: 8

protocol によるポリモーフ
ィズム(3)
                                    
                                      
            
     
                                    
            
     
                           
            
     
   

Page: 9

⼀級市⺠としてのドキュメン
ト
⾔語レベルでドキュメント化を
サポートしている.
⾊んなツールで簡単にドキュメントを
使える.
マークアップ記法として 
Markdown を使える.

Page: 10

⼀級市⺠としてのドキュメン
ト(2)
                     
                
                                                   
     
              
              
           
     
   

Page: 11

⼀級市⺠としてのドキュメン
ト(3)
                      
                  
          
                                                 
                        
             
     

Page: 12

パターンマッチング
まとまっているものをバラバラに
して扱いやすくする
                                     
                       
                 
          
                                                       
                       
            
     
            
          
           
  

Page: 13

パターンマッチング(2)
ガード節 (when) と混ぜると意図
が伝わりやすくなる
                                                      
                         
   
                                        
                            
   
      
                             
                                             

Page: 14

隅から隅まで Erlang
                           
                                           
                          
バイトコードレベルで互換
変換が容易
Elixir から Erlang の関数はコス
ト 0 で実⾏できる

Page: 15

本⼈いわく,のまとめ
全部が式
メタプログラミングとDSL
protocol によるポリモーフィズ
ム
⼀級市⺠としてのドキュメント
パターンマッチ
隅から隅まで Erlang

Page: 16

触ってみたくなった?
インストール⽅法は
http://elixir-lang.org/
getting̲started/1.html
の 1.1 Installation に書いてある.
Erlang R16B 以降
Elixir
が必要.

Page: 17

触ってみたくなった?(Mac)
                   
で両⽅インストールできる.

Page: 18

触ってみたくなった?
(Windows)
Erlang: http://
www.erlang.org/
download.html
Elixir: https://github.com/
elixir-lang/elixir/releases/
それぞれのコンパイル済 zip をダ
ウンロードして解凍して使うのが
簡単でおすすめ ( らしい )

Page: 19

モダンなプログラミング⾔語
最近のプログラミング⾔語が備え
ている特徴
Elixir も備えている

Page: 20

パッケージ管理
mix :: Ruby の Rake と Bundler 
を合わせたようなもの
mix new: プロジェクトを作る
mix test: テストを実⾏する
mix compile: コンパイルする
mix –help で詳しくみられる

Page: 21

ライブラリ管理 (みあたらず)
rubygems を操作する gem の
ようなコマンドはまだ⾒つけら
れない
rubygems 相当のライブラリ置
き場は http://expm.co という
のがある

Page: 22

REPL
iex :: Ruby の irb のようなもの
              
      
             
 
                  
             
           
                                                        
                                                         
                                     
                                            
                        
                  
             
           
           
               
     

Page: 23

ユニットテスト
ExUnit :: Ruby の Test::Unit みた
いなもの
                     
                 
                               
                     
     
   

Page: 24

モダンなプログラミング環境
のまとめ
パッケージ管理
ライブラリ管理(みあたらず)
REPL
ユニットテスト

Page: 25

Elixir らしそうなところ
個⼈的におおっ!
となったところ

Page: 26

マクロ
Elixir の内容は全て 3 要素のタプ
ルで表されている
atom か,同じ形式のタプル
メタデータのリスト.ノードの
番号とか⾏番号などを保持する
呼び出す関数の引数のリストか 
atom
ほとんどの構⽂がマクロで作られ

Page: 27

マクロ(2)
             
 
                       
                                               
                            
                                
                       
           
           
                       
   
                            
 

Page: 28

マクロ(3)
                            
                                             
                                                            
             
           
       
   
                       
   
                                                
   
                                                 
     
   

Page: 29

並列
並列があたりまえ.
簡単に作れるようになっている.
spawn : 違うプロセスを作る
x <- y : プロセス x に y という
内容を送る
receive : 送られた内容を取得す
る

Page: 30

並列(2)
                          
            
                   
                                         
           
            
                  
                            
                                                
           
                       
   

Page: 31

並列(3)
https://gist.github.com/
niku/7301933
普通の MacBook で 100 万プロ
セス⽣成 16 秒で動くんだぜー
                                                                  
                               

Page: 32

OTP
OTPとは何か?
http://www.ymotongpoo.com/
works/lyse-ja/
ja/16̲what̲is̲otp.html
大抵のプロセスでは,共通の処
理がある
パターンを⾒極めて,共通ライ
ブラリにまとめたもの

Page: 33

OTP(2)
OTP の便利なところ(⼀部)
ワーカープロセスの監視/再起動
が 組み込まれている
ダウンタイム ゼロ のリリース,
デプロイ

Page: 34

Elixir らしそうなところのま
とめ
マクロ (Elixirすごい)
並列 (Elixirが使っている
ErlangVMすごい)
OTP (Elixirが使っているErlang
のライブラリすごい)

Page: 35

思考の転換
プログラマの思考はプログラ
ミング⾔語に影響される
http://gihyo.jp/news/
report/01/rubykaigi2013/0001
“まつもとゆきひろさん,Rubyに
影響を与えた⾔語とRuby開発初期
を語る。 〜 RubyKaigi 2013 基
調講演 1⽇目”

Page: 36

想像してみてほしい
もし並列処理が簡単に書けるな
ら
もし無制限に並列処理できるな
ら
どんな考え⽅をするだろう?
Elixir を使って試してみようぜ.

Page: 37

参考にしている本/サイト
http://elixir-lang.org/
getting̲started/
http://
www.ymotongpoo.com/
works/lyse-ja/index.html
http://pragprog.com/book/
elixir/programming-elixir

Other slides