Slide 1

Slide 1 text

上から見るか下から見るか

Slide 2

Slide 2 text

自己紹介 TwitterID = hayabusa333 |> heart = [カーネル, GC, Erlang, Elixir] |> jobs = 株式会社ドリコム |> position = [Joel教,翔鶴瑞鶴仲良し姉妹同 盟,Elixir雑魚勢]

Slide 3

Slide 3 text

上から見るか下から見るか

Slide 4

Slide 4 text

Enum / Keyword / List / Map / MapSet / Range / Stream / File / IO / Path / Port / System / Agent / Application / Config / DynamicSupervisor / GenServer / Node / Process / Registry / Supervisor / Task

Slide 5

Slide 5 text

機能ごとに見るのであれば それぞれのソースコードを見 ていけば良いかと

Slide 6

Slide 6 text

ではElixirの上から見ていくに は?

Slide 7

Slide 7 text

. ├── Makefile ├── bin # 実行ファイル ├── lib │ ├── eex │ ├── elixir │ │ ├── Emakefile # Erlang用のMakefile │ │ ├── ebin │ │ ├── generate_app.escript # elixir.app.srcを作成する用のテンプレート │ │ ├── lib # カーネル/モジュール │ │ ├── mix.exs │ │ ├── src # コンパイラ │ │ ├── test │ ├── ex_unit │ ├── iex │ ├── logger │ └── mix

Slide 8

Slide 8 text

{application, elixir, [{description, "elixir"}, {vsn, '$will-be-replaced'}, {modules, '$will-be-replaced'}, {registered, [elixir_sup, elixir_config, elixir_code_server]}, {applications, [kernel,stdlib,compiler]}, {mod, {elixir,[]}}, {env, [{check_endianness, true}, {ansi_enabled, false}, {time_zone_database, 'Elixir.Calendar.UTCOnlyTimeZoneDatabase'}]} ]}.

Slide 9

Slide 9 text

registered:アプリケーション内に登録された名前のリスト applications:Elixirが依存しているアプリケーションのリスト mod:アプリケーションビヘイビアを使って、アプリケーションの コールバックを定義 env:アプリケーションの設定用に使用されるキーと値のリスト

Slide 10

Slide 10 text

default: compile compile: erlang $(APP) elixir erlang: $(PARSER) $(Q) if [ ! -f $(APP) ]; then $(call CHECK_ERLANG_RELEASE); fi $(Q) cd lib/elixir && mkdir -p ebin && erl -make $(APP): lib/elixir/src/elixir.app.src lib/elixir/ebin VERSION $(GENERATE_APP) $(Q) $(GENERATE_APP) $< $@ $(VERSION)

Slide 11

Slide 11 text

まとめ ・基本的にはElixirはElixirのコードで記載されている ・Elixirを読むのには、Erlangの力もいる場合もある ・Erlangに関してはErlangのドキュメントを読むのが良い ・本が欲しければすごいErlangゆかいに学ぼう!を読もう ・基本的にはネット上に情報がないつらみ

Slide 12

Slide 12 text

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