Haskell勉強会

関数型プログラミングの学習日記

Erlang/Elixirのパッケージマネージャー「Hex」

Erlang/Elixirで、RubyGemsRuby言語用のパッケージ管理システム)に相当するツールが用意されていました。

それが、「Hex」というパッケージ管理システムです。

 

Hex

hex.pm

 

github.com

 

f:id:hamamuratakuo:20180309125154p:plain

 

Hexの使い方など、参考情報。

 

qiita.com

 

Hex は Elixir, Erlang 向けのパッケージ管理ツールです。ruby で言うところの rubygems、node.js で言うところの npm です。

登録されているライブラリは https://hex.pm/ から探すことができます。

 

dev.classmethod.jp

 

良いライブラリのある言語にはそれを支える優秀なパッケージマネージャが必ずあります。RubyRubyGems, PealのCPAN, NodeJSのnpmなどです。

Elixir/ErlangにもHexというパッケージマネージャーがあります。

 

niku.name

 

Elixir のビルドツール mix が利用するパッケージマネージャーに hex.pm というものがある. hex.pm を Erlang から利用するときは,この rebar3 の利用が推奨されているようだ.

 

elixirschool.com

 

Erlang パッケージ

以前のレッスンで Mix と依存関係の管理を扱いましたが、 Erlang ライブラリを組み込むのも同様の方法で動作します。

万が一 Erlang ライブラリが Hex に上がっていない(プッシュされていない)場合には、代わりに git リポジトリを参照することができます:

 

employment.en-japan.com

 

Elixirのエコシステムと開発の流れ

Elixirによるアプリケーション開発を続けていると、 次のような作業を定常的に行うことになります。

  • 利用するライブラリの管理
  • 雛形アプリの作成
  • アプリのコンパイル・起動・停止

Elixirでは、これらのタスクを実行するためのツールとして、mixと呼ばれるコマンドが用意されています。 mixコマンドはElixirのインストール時に利用可能になるので、すでに皆さんの手元でも実行できるはずです。

 

mixを使ったライブラリ管理

Elixirのライブラリを新しくインストールして使いたい場合、どうすればよいでしょうか? PerlCPANが、RubyRubygemsが、node.jsにはnpmがあるように、ElixirにはHexというライブラリ管理の仕組みがあります。

 

Elixirでhex.pmにホスティングされたライブラリを利用するには、Hexが必要です。 Hexは、ElixirとErlang向けのパッケージ管理ツールであり、mixを使ってインストールできます。


以下のようにmix local.hexを実行すると、Hexをインストールするかどうか[Yn]で聞かれるので、 Yとしてインストールしてください。

 

$ mix local.hex
Are you sure you want to install archive "https://repo.hex.pm/installs/1.4.0/hex-0.16.0.ez"? [Yn] Y
* creating /path/to/your/home/.mix/archives/hex-0.16.0
$

 

これでhexコマンドが利用できるようになりますが、Elixirでは実際のライブラリ取得やコンパイルといった操作で、Hexを直接は使いません。


代わりに、後述するmix deps.getやmix deps.compileといったmixのタスクを使います。 Hexは、これらのmixのライブラリ操作タスクで、内部的に利用されています。

 

  • mixコマンド
  • Hexパッケージ管理システム

 

これらを活用すれば、Elixirでライブラリーを利用できるんですね。

 

 

プログラミングElixir

プログラミングElixir