22
Elixir v1.3 ででで ( ででで ) で

Elixir v1.3 で入るかもしれない機能

Embed Size (px)

Citation preview

Page 1: Elixir v1.3 で入るかもしれない機能

Elixir v1.3 で入る ( かもな )機能

Page 2: Elixir v1.3 で入るかもしれない機能

自己紹介name = 橘田隼一|> TwitterID = hayabusa333|> heart = [ カーネル , GC, Erlang, Elixir]|> jobs = 派遣ウェッブプログラマ|> position = [Joel 教 , 翔鶴瑞鶴仲良し姉妹同盟 ]

Page 3: Elixir v1.3 で入るかもしれない機能

Elixir と Phoenix の薄い本を出しました(ページ数:240 )電子書籍版を BOOTH で販売中https://hayabusa333.booth.pm/items/186705

自己紹介 ( 宣伝 )

Page 4: Elixir v1.3 で入るかもしれない機能

本日のお話Elixir v1.3 で入ってくるであろう機能 (3 月 19 日時点 ) の一部の機能を紹介していきます

Page 5: Elixir v1.3 で入るかもしれない機能

目次• Calendar/Date/Time/NaiveDateTime/

DateTime 型の定義の追加• —logger-otp-reports と — logger-sasl-

reports オプションの追加• with 句に else が追加• mix app.tree と mix deps.tree• mix escript

Page 6: Elixir v1.3 で入るかもしれない機能

Calendar/Date/Time/NaiveDateTimeDateTime 型の定義の追加Elixir に上記の型の内部定義について追加されました。例:Calendar の year は integer 型とかCalendar/Date/Time/NaiveDateTimeDateTime 型の定義の追加

Page 7: Elixir v1.3 で入るかもしれない機能

Calendar/Date/Time/NaiveDateTimeDateTime 型の定義の追加今回の型定義が入ることによりElixir にて時刻系の型は、ライブラリごとに違っていたものが統一されることになるようです

Page 8: Elixir v1.3 で入るかもしれない機能

—logger-otp-reports と — logger-sasl-reports オプションの追加elixir —logger-otp-reports trueelixir —ligger-sasl-reports trueなど、 elixir コマンドにオプションとして渡すことにより、 OTP やSASL のレポートを出すようになりました

Page 9: Elixir v1.3 で入るかもしれない機能

—logger-otp-reports と — logger-sasl-reports オプションの追加こちらの修正については、erl -boot start_sasl で取得できるレポートを出せるように Elixirから Erlang 側の呼び出しのオプション追加となります

Page 10: Elixir v1.3 で入るかもしれない機能

with 句に else が追加with 句にて、今まではwith ( 式 ), ( 式 ), do: ( 結果判定 )のような形でしたがwith ( 式 ), ( 式 ), do: ( 結果判定 ), else: ( 結果判定 ) のような形での記載ができるようになりました

Page 11: Elixir v1.3 で入るかもしれない機能

Elixir v1.2 例iex(1)> with {:ok, contents} <- File.read("my_hoge.ex"),...(1)> {res, binding} <- Code.eval_string(contents),...(1)> do: {:ok, res}, else: {:error, _}** (CompileError) iex:1: undefined function with/3

Page 12: Elixir v1.3 で入るかもしれない機能

Elixir v1.3 例iex(1)> with {:ok, contents} <- File.read("my_hoge.ex"),...(1)> {res, binding} <- Code.eval_string(contents),...(1)> do: {:ok, res}, else: {:error, :enoent}** (FunctionClauseError) no function clause matching in :elixir_with.expand_else/2 (elixir) src/elixir_with.erl:58: :elixir_with.expand_else({:error, :enoent}, %Macro.Env{aliases: [], context: nil, context_modules: [], export_vars: nil, file: "iex", function: nil, functions: [{IEx.Helpers, [c: 1, c: 2, cd: 1, clear: 0, flush: 0, h: 0, i:

Page 13: Elixir v1.3 で入るかもしれない機能

with 句に else が追加申し訳ありません。正常に動くコードの記載まで確認できませんでした。

Page 14: Elixir v1.3 で入るかもしれない機能

mix app.tree と mix deps.tree

新規に追加された タスクとして mix app.treemix deps.treeの 2 つが追加されました

Page 15: Elixir v1.3 で入るかもしれない機能

mix app.tree 実行例

Page 16: Elixir v1.3 で入るかもしれない機能

mix deps.tree 実行例

Page 17: Elixir v1.3 で入るかもしれない機能

mix escriptmix escriptmix escript.buildmix escript.installmix escript.uninstallの 4 つのタスクが増えています。

Page 18: Elixir v1.3 で入るかもしれない機能

mix escriptmix escript.install (PATH/URL)mix escript.uninstallは ~/.mix/escript の配下に escript を保存するようになっています

Page 19: Elixir v1.3 で入るかもしれない機能

mix escriptmix escriptmix escript.buildにて保存している escript から環境を構築することが可能となっているようです。

Page 20: Elixir v1.3 で入るかもしれない機能

他には• コンパイル時のモジュールの欠落のエラーメッセージ改善• File.copy/3 にて IO デバイスのサポート追加• %module{key: “value”} = struct のような構造体のパターンマッチが実行できるようになりました。• Process.sleep/1 のような time を指定して、プロセスを sleep できるようになりました。• Unicode 8.0.0 へと更新• テスト毎に属性をクリーンアップできるように

ExUnit.Case.register_attribute が追加• MIX_DEBUG=1 が設定されている場合に Mix.Error をスタックトレースに表示するようになりました。

Page 21: Elixir v1.3 で入るかもしれない機能

まとめElixir v1.3 の更新内容だけでも、けっこう多い ( 非推奨機能とかは今日は話してない )

他の更新内容は、ハードリカーエンジニアのブログにて公開しています

Page 22: Elixir v1.3 で入るかもしれない機能

ご静聴ありがとうございました