Elixirをとりまく環境を調べてみました（2016年11月）

## 環境構築系の状況
### [Ansible Galaxy](https://galaxy.ansible.com/)
* 24 roles
* [HashNuke.elixir-stack](https://galaxy.ansible.com/HashNuke/elixir-stack/)がよく使われているようです（128 Downloads）

### [Atlas](https://atlas.hashicorp.com/boxes/search)
* 11 Vagrant Boxes
* Ubuntuベースなら[pgrunwald/elixir-phoenix-ubuntu-trusty64](https://atlas.hashicorp.com/pgrunwald/boxes/elixir-phoenix-ubuntu-trusty64)（900 Downloads）
* CentOSベースなら[pgrunwald/elixir-phoenix-centos7](https://atlas.hashicorp.com/pgrunwald/boxes/elixir-phoenix-centos7)（225 Downloads）
* がよく使われているようです

### [Chef Supermarket](https://supermarket.chef.io/)
* [elixir-cookbook](https://supermarket.chef.io/cookbooks/elixir)のみでした

### [Docker Hub](https://hub.docker.com/)
* 455 images
* [Official Image](https://hub.docker.com/_/elixir/)がある（100K+ Pulls）

---

## エディタの言語サポート状況
* Emacsは対応精度が結構高いらしいです。
* Atom, Sublime, Vimもよく対応できているそうです。
* JetBrainsは少し動作が不安定みたいなことが書いてありました。

|                     | Atom | Emacs | JetBrains | Notepad++ | Sublime | TextMate | Vim | VSCode |
|---------------------|------|-------|-----------|-----------|---------|----------|-----|--------|
| Syntax Highlighting | ✓    | ✓     | ✓         | ✓         | ✓       | ✓        | ✓   | ✓      |
| Snippets            | ✓    | ✓     | ✓         |           | ✓       |          | ✓   | ✓      |
| Code Completion     | ✓    | ✓     | ✓         |           | ✓       |          | ✓   | ✓      |
| Go To Definition    | ✓    | ✓     | ✓         |           | ✓       |          | ✓   |        |
| Go To Documentation | ✓    | ✓     |           |           |         |          | ✓   |        |
| Mix Integration     | ✓    | ✓     | ✓         |           |         |          | ✓   |        |
| IEx Integration     | ✓    | ✓     | ✓         |           |         |          | ✓   |        |
| Linter              | ✓    |       |           |           | ✓       |          |     |        |
| Phoenix Support     | ✓    | ✓     |           |           |         |          |     |        |

---

## 静的コード解析ツールの状況
### Dialyzer
* 標準で入っているツール
* Erlang用の静的型解析ツールなので、コンパイルしないと使えない

### [Credo](https://github.com/rrrene/credo)
* オープンソースのツール
* プロジェクトに依存を追加して使うようです
* [Credo's Elixir Style Guide](https://github.com/rrrene/elixir-style-guide)に準拠
* [The Elixir Style Guide](https://github.com/levionessa/elixir_style_guide)に準拠するstrictモード
* 1,411 GitHub Stars

### [Dogma](https://github.com/lpil/dogma)
* オープンソースのツール
* プロジェクトに依存を追加して使うようです
* [The Elixir Style Guide](https://github.com/levionessa/elixir_style_guide)に準拠
* 色々調整したい場合はCredoを推奨しているようです
* 311 GitHub Stars

### [codebeat](https://codebeat.co/)
* SaaS
* Elixir対応予定っぽいです
* GitHub、Bitbucket連携機能があり、Publicプロジェクトであれば無料

---

## テスティングツールの状況
### ExUnit
* 標準で入っているテスティングフレームワーク

### BDD系
#### [ESpec](https://github.com/antonmi/espec)
* BDD フレームワーク
* RSpecインスパイア
* 305 Stars
* Phoenix用ESpecもありました
	* [ESpec.Phoenix](https://github.com/antonmi/espec_phoenix)
	* 72 Stars

#### [WhiteBread](https://github.com/meadsteve/white-bread)
* BDD フレームワーク
* Cucumberインスパイア
* 95 Stars

#### [Pavlov](https://github.com/sproutapp/pavlov)
* BDD フレームワーク
* モッキング対応
* 117 Stars

### Webテスト系
#### [Hound](https://github.com/HashNuke/hound)
* ブラウザオートメーションツール
* Selenium(Firefox, Chrome), ChromeDriver, PhantomJSに対応
* 636 Stars

#### [Wallaby](https://github.com/keathley/wallaby)
* ウェブアプリケーションテストフレームワーク
* PhantomJSに対応
* Ecto連携
* 284 Stars

#### [TucoTuco](https://github.com/stuart/tuco_tuco)
* ウェブアプリケーションテストフレームワーク
* Capybaraインスパイア
* PhantomJS, Firefox, ChromeDriver, Selenium Remote WebDriverに対応
* 51 Stars

#### [efrisby](https://github.com/FabioBatSilva/efrisby)
* REST APIテスティングフレームワーク
* Frisby.jsインスパイア
* Erlang製
* 13 Stars

### その他
#### [ExMachina](https://github.com/thoughtbot/ex_machina)
* Fixture Replacementツール
* Ecto連携
* factory_girl開発者
* 509 Stars

#### [Meck](https://github.com/eproxus/meck)
* Erlang製モッキングツール
* ESpec, Pavlovはこれを組み込んでいるそうです
* 486 Stars

#### [Faker](https://github.com/igas/faker)
* Fakerツール
* 189 Stars

#### [ShouldI](https://github.com/batate/shouldi)
* shouldaインスパイア
* 120 Stars

#### [Power Assert](https://github.com/ma2gedev/power_assert_ex)
* power-assertインスパイア
* 73 Stars

---

## まとめ
* Elixir実行環境を作ることと、コードを書くことについては整っていると感じました。
* 静的コード解析ツールはCredoがいい感じっぽいので、プルリクと組み合わせてコードレビューさせてみたいと思います。
* テスト系は人気ライブラリに倣ったツールが色々あるようです。
* 次は実際に使ってみたいと思います。

---

## 参考
* [Good IDE for Elixir - Stack Overflow](http://stackoverflow.com/questions/32185859/good-ide-for-elixir)
* [Which code editor (or IDE) do you use? - Elixir Chat - Elixir Forum](https://elixirforum.com/t/which-code-editor-or-ide-do-you-use/78)
* [Best text editor to development in Elixir? : elixir - Reddit](https://www.reddit.com/r/elixir/comments/3unrex/best_text_editor_to_development_in_elixir/)
* [Awesome Elixir - GitHub](https://github.com/h4cc/awesome-elixir)