Elixir入門 23: つぎのステップ
Tags: elixir, webdev, tutorial, programming
Published: 2019-02-26 04:11:36

---
title: Elixir入門 23: つぎのステップ
published: true
description: Elixir公式サイトの許諾を得て「Where to go next」の解説にもとづき、加筆補正を加えて、Elixirについてのこれからの学習項目をご紹介します。
tags: #elixir, #webdev, #tutorial, #programming
---

本稿はElixir公式サイトの許諾を得て「[Where to go next](https://elixir-lang.org/getting-started/where-to-go-next.html)」の解説にもとづき、加筆補正を加えて、Elixirについてのこれからの学習項目をご紹介します。


# はじめてのElixirプロジェクト
プロジェクトのひな形を簡単につくるため、ElixirにはMixというビルドツールが入っています。コマンドラインツールから`mix new`コマンドにプロジェクトのパスを指定するだけで、その名前のひな形に加えて設定やテストのファイルなどがつくられます(図001)。

```terminal
$ mix new example
* creating README.md
* creating .formatter.exs
* creating .gitignore
* creating mix.exs
* creating config
* creating config/config.exs
* creating lib
* creating lib/example.ex
* creating test
* creating test/test_helper.exs
* creating test/example_test.exs

Your Mix project was created successfully.
You can use "mix" to compile it, test it, and more:

    cd example
    mix test

Run "mix help" for more commands.
```

#### 図001■Mixでつくられたプロジェクトファイル
![elixir_23_001.png](https://thepracticaldev.s3.amazonaws.com/i/3z40eotdwwjbeenfd5ld.png)

「[Mix and OTP](https://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html)」は、Mixを使ったアプリケーションのつくり方について説明しています。このガイドの日本語解説は「MixとOTP」として、本ブログで連載いたします(「[Elixirステップアップのチュートリアルを連載開始(MixとOTPもくじ)](https://dev.to/gumi/elixirmixotp-ci5)」参照)。


# メタプログラミング
Elixirはメタプログラミングできるので、拡張やカスタマイズがしやすいプログラミング言語です。Elixirのメタプログラミングには、多くの場合マクロが用いられます。とくに、DSLを書くのにマクロはとても便利です。マクロの基本的な仕組みや書き方、さらにマクロでDSLをどのようにつくるのかについては「[Meta-programming in Elixir](https://elixir-lang.org/getting-started/meta/quote-and-unquote.html)」をお読みください。


# コミュニティとその他の情報源
「[Learning resources](https://elixir-lang.org/learning.html)」には、つぎのような書籍やスクリーンキャスト、その他の学習素材が紹介されています。

1. [Books](https://elixir-lang.org/learning.html#books)
2. [Video/Interactive Resources](https://elixir-lang.org/learning.html#videointeractive-resources)
3. [Other Resources](https://elixir-lang.org/learning.html#other-resources)
4. [Screencasts](https://elixir-lang.org/learning.html#screencasts)
5. [In-depth Resources](https://elixir-lang.org/learning.html#in-depth-resources)

また、[Elixirのソースコード](https://github.com/elixir-lang/elixir)もGitHubで開いて見られます。おもに`lib`ディレクトリに納められたコードの多くはElixirで書かれたものです。併せて「[Documentation](https://elixir-lang.org/docs.html)」もご参照ください。


# Erlangのプログラミング
ElixirはErlangの仮想マシン(VM)の上で動きます。Elixirの開発者は、やがてErlangライブラリのインタフェースが使いたくなるでしょう。以下に掲げるのはErlangの基礎から応用までを解説するオンラインのドキュメントです。

- 「[Erlang/Elixir Syntax: A Crash Course](https://elixir-lang.org/crash-course.html)」: 
Erlangの構文を簡単に紹介します。コード例にはErlangと併せて、同じ機能のElixirのコードが添えられています。Erlangの文法を知るだけでなく、Elixirのおさらいにもなるでしょう。
- 「[Concurrent Programming](http://www.erlang.org/course/concurrent_programming.html)」: 
Erlang公式サイトのチュートリアルです。Erlangのプリミティブや並列プログラミングについて図入りで手早く学べます。
- 「[Learn You Some Erlang for Great Good!](http://learnyousomeerlang.com/)」: 
Erlangの紹介から、設計思想、標準ライブラリ、ベストプラクティスなどについての優れた解説です。前出「Erlang/Elixir Syntax: A Crash Course」を読んだあとでしたら、おもに構文について説明しているはじめの数章はとばしてもよいでしょう。「[Hitchhiker’s Guide to Concurrency](http://learnyousomeerlang.com/the-hitchhikers-guide-to-concurrency)」の章まで読み進めれば、Erlangが楽しくなるはずです。「[Learn you some Erlang for great good!
日本語訳](https://www.ymotongpoo.com/works/lyse-ja/)」が公開されています。


#### Elixir入門もくじ
- [Elixir入門 01: コードを書いて試してみる](https://dev.to/gumi/elixir-01--2585)
- [Elixir入門 02: 型の基本](https://dev.to/gumi/elixir-02--30n1)
- [Elixir入門 03: 演算子の基本](https://dev.to/gumi/elixir-03--33im)
- [Elixir入門 04: パターンマッチング](https://dev.to/gumi/elixir-04--1346)
- [Elixir入門 05: 条件 - case/cond/if](https://dev.to/gumi/elixir-05----casecondif-60o)
- [Elixir入門 06: バイナリと文字列および文字リスト](https://dev.to/gumi/elixir-06--35na)
- [Elixir入門 07: キーワードリストとマップ](https://dev.to/gumi/elixir-07--39hi)
- [Elixir入門 08: モジュールと関数](https://dev.to/gumi/elixir-08--1c4c)
- [Elixir入門 09: 再帰](https://dev.to/gumi/elixir-09--1a0p)
- [Elixir入門 10: EnumとStream](https://dev.to/gumi/elixir-10-enumstream-4fpb)
- [Elixir入門 11: プロセス](https://dev.to/gumi/elixir-11--2mia)
- [Elixir入門 12: 入出力とファイルシステム](https://dev.to/gumi/elixir-12--4og6)
- [Elixir入門 13: aliasとrequireおよびimport](https://dev.to/gumi/elixir-13-aliasrequireimport-55c1)
- [Elixir入門 14: モジュールの属性](https://dev.to/gumi/elixir-14--3511)
- [Elixir入門 15: 構造体](https://dev.to/gumi/elixir-15--4f43)
- [Elixir入門 16: プロトコル](https://dev.to/gumi/elixir-16--lif)
- [Elixir入門 17: 内包表記](https://dev.to/gumi/elixir-17--5gci)
- [Elixir入門 18: シギル](https://dev.to/gumi/elixir-18--5791)
- [Elixir入門 19: tryとcatchおよびrescue](https://dev.to/gumi/elixir-19-trycatchrescue-50i8)
- [Elixir入門 20: 型の仕様とビヘイビア](https://dev.to/gumi/elixir-20--j50)
- [Elixir入門 21: デバッグ](https://dev.to/gumi/elixir-21--21a1)
- [Elixir入門 22: Erlangライブラリ](https://dev.to/gumi/elixir-22-erlang-2492)
- Elixir入門 23: つぎのステップ

##### 番外
- [Elixir入門: Plugを使うには](https://dev.to/gumi/elixir-plug-40lb)