Upload
tsunenori-oohara
View
352
Download
0
Embed Size (px)
Citation preview
Elixirハンズオン[Elixir概要 ]
2017/03/11Powered by teratail&tokyo.ex
Agenda
• イベントの趣旨• Elixir とは• Erlang との関係• OTP とは• Elixir アプリの考え方• 基本シンタックス• 基本モジュール• ライブラリ
イベントの趣旨• ハンズオンのゴール– Elixir のアプリ作成の流れを体験する– Web アプリの作成を体験する
• ハンズオンでやること– Elixir アプリのプロジェクト作成– cowboy ベースの web アプリの作成– Erlang のモジュールを Elixir から利用する
• ハンズオンでやらないこと– 詳細な文法、マクロ
Elixir とは• Erlang の VM 上で動くプログラミング言語• 関数型言語• コンパイラ型言語• プロジェクト管理ツール (mix) がバンドル– プロジェクト管理、ライブラリの取得、 etc– DEMO
• REPL(iex) がバンドル– DEMO
Erlang との関係• Erlang のライブラリ、モジュールが利用できる– :erlang_module.erlang_func(…)– DEMO
• Erlang の開発ツール– :observer.start– DEMO
OTP とは• Open Telecom Platform• 並行プログラミングをする際に利用されるフレームワーク・開発環境・ライブラリ集• 汎用的な処理のパターン ( ビヘイビア ) を提供– Application ビヘイビア ( アプリ管理– Supervisor ビヘイビア ( 死活監視 / 再起動– GenServer ビヘイビア ( 汎用サーバー– Etc
• Elixir も OTP がバンドルされている
Elixir アプリの考え方• ある程度の規模のアプリは、 OTP を前提に構築される• ディレクトリ構成はほぼ規約で決まっている• 基本パターン– 1) mix でプロジェクト作成– 2) Application ビヘイビア ( テンプレートを修正– 3) Supervisor ビヘイビア ( テンプレートを修正– 4) ロジック ( モジュール ) を追加していく– 5) iex –S mix で動作確認
基本シンタックス ( 型 )
基本シンタックス ( モジュール )
基本シンタックス ( パイプ )
基本シンタックス ( パターンマッチ 1)
基本シンタックス ( パターンマッチ 2)
基本モジュール• ドキュメント– http://elixir-lang.org/docs.html– https://hexdocs.pm/elixir/Kernel.html
• iex の「 h < モジュール > 」でドキュメント表示
基本モジュール (IO)
基本モジュール (Enum)
ライブラリ• Hex.pm(https://hex.pm) がホスティング• Git(github) からも取得可能• 手順– 1) mix.exs の deps に対象ライブラリを記述– 2) mix deps.get で取得• deps ディレクトリに配置される
– 3) mix deps.compile でコンパイル• _build ディレクトリに配置される
– 4) iex を起動すると自動でコンパイルされる
ライブラリ (erlang)
• Erlang のライブラリの呼び出し– Erlang のモジュールはアトムで参照可能– 例えば「 erlang_mod 」という名前の Erlang モジュールは、「 :erlang_mod 」で参照できる
• mix.exs の設定は、 Erlang のライブラリも指定できる• Erlang のライブラリ・モジュールは、 iex 内から h でドキュメント参照できない
それではハンズオンへテキスト:https://github.com/ohr486/elixir_handson_demo/wiki