18
Elixir ハハハハ [Elixir ハハ ] 2017/03/11 Powered by teratail&tokyo.ex

Elixirハンズオン-2017-03-11

Embed Size (px)

Citation preview

Page 1: Elixirハンズオン-2017-03-11

Elixirハンズオン[Elixir概要 ]

2017/03/11Powered by teratail&tokyo.ex

Page 2: Elixirハンズオン-2017-03-11

Agenda

• イベントの趣旨• Elixir とは• Erlang との関係• OTP とは• Elixir アプリの考え方• 基本シンタックス• 基本モジュール• ライブラリ

Page 3: Elixirハンズオン-2017-03-11

イベントの趣旨• ハンズオンのゴール– Elixir のアプリ作成の流れを体験する– Web アプリの作成を体験する

• ハンズオンでやること– Elixir アプリのプロジェクト作成– cowboy ベースの web アプリの作成– Erlang のモジュールを Elixir から利用する

• ハンズオンでやらないこと– 詳細な文法、マクロ

Page 4: Elixirハンズオン-2017-03-11

Elixir とは• Erlang の VM 上で動くプログラミング言語• 関数型言語• コンパイラ型言語• プロジェクト管理ツール (mix) がバンドル– プロジェクト管理、ライブラリの取得、 etc– DEMO

• REPL(iex) がバンドル– DEMO

Page 5: Elixirハンズオン-2017-03-11

Erlang との関係• Erlang のライブラリ、モジュールが利用できる– :erlang_module.erlang_func(…)– DEMO

• Erlang の開発ツール– :observer.start– DEMO

Page 6: Elixirハンズオン-2017-03-11

OTP とは• Open Telecom Platform• 並行プログラミングをする際に利用されるフレームワーク・開発環境・ライブラリ集• 汎用的な処理のパターン ( ビヘイビア ) を提供– Application ビヘイビア ( アプリ管理– Supervisor ビヘイビア ( 死活監視 / 再起動– GenServer ビヘイビア ( 汎用サーバー– Etc

• Elixir も OTP がバンドルされている

Page 7: Elixirハンズオン-2017-03-11

Elixir アプリの考え方• ある程度の規模のアプリは、 OTP を前提に構築される• ディレクトリ構成はほぼ規約で決まっている• 基本パターン– 1) mix でプロジェクト作成– 2) Application ビヘイビア ( テンプレートを修正– 3) Supervisor ビヘイビア ( テンプレートを修正– 4) ロジック ( モジュール ) を追加していく– 5) iex –S mix で動作確認

Page 8: Elixirハンズオン-2017-03-11

基本シンタックス ( 型 )

Page 9: Elixirハンズオン-2017-03-11

基本シンタックス ( モジュール )

Page 10: Elixirハンズオン-2017-03-11

基本シンタックス ( パイプ )

Page 11: Elixirハンズオン-2017-03-11

基本シンタックス ( パターンマッチ 1)

Page 12: Elixirハンズオン-2017-03-11

基本シンタックス ( パターンマッチ 2)

Page 13: Elixirハンズオン-2017-03-11

基本モジュール• ドキュメント– http://elixir-lang.org/docs.html– https://hexdocs.pm/elixir/Kernel.html

• iex の「 h < モジュール > 」でドキュメント表示

Page 14: Elixirハンズオン-2017-03-11

基本モジュール (IO)

Page 15: Elixirハンズオン-2017-03-11

基本モジュール (Enum)

Page 16: Elixirハンズオン-2017-03-11

ライブラリ• Hex.pm(https://hex.pm) がホスティング• Git(github) からも取得可能• 手順– 1) mix.exs の deps に対象ライブラリを記述– 2) mix deps.get で取得• deps ディレクトリに配置される

– 3) mix deps.compile でコンパイル• _build ディレクトリに配置される

– 4) iex を起動すると自動でコンパイルされる

Page 17: Elixirハンズオン-2017-03-11

ライブラリ (erlang)

• Erlang のライブラリの呼び出し– Erlang のモジュールはアトムで参照可能– 例えば「 erlang_mod 」という名前の Erlang モジュールは、「 :erlang_mod 」で参照できる

• mix.exs の設定は、 Erlang のライブラリも指定できる• Erlang のライブラリ・モジュールは、 iex 内から h でドキュメント参照できない

Page 18: Elixirハンズオン-2017-03-11

それではハンズオンへテキスト:https://github.com/ohr486/elixir_handson_demo/wiki