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