Erlang/OTP でよく使うライブラリ

製品を開発する際に必要になるプロトコル系のライブラリは全て自作しているので、それ以外に利用しているライブラリの紹介をしていきたい。

これから Erlang で自社製品を作って行こうという人に参考になれば。

otp

Erlang/OTP の本体。Apache License 2.0 で公開されている。中に色々なライブラリがあるのでせっかくなので紹介。

1 年に 1 回メジャーバージョンアップする。次のリリースは 6 月で、21.0 がでる。楽しみ。

rebar3

otp 公式のビルドツールになった rebar3 。本当に便利だしよくできている。これを使わない理由は特に無い。

ドキュメントも丁寧に書かれていて良い。

lager

Erlang のログ機能があまりにもしょぼいので、今はなき Basho が開発したログライブラリ。これ1つで事足りるくらい他機能だし、使いやすい。

自社から社員がコントリビュートしたりもしている。

gproc

Erlang のプロセスに atom 以外で名前がつけられるようになるライブラリ。結局同じようなものを誰もが作ってしまうのであれば信頼できるライブラリを使うのが良い。

master は Apache License 2.0 に切り替わった。

ranch

gen_tcp や ssl を使いやすくしてくれる TCP/TLS 向けの便利ライブラリ。後述する cowboy や gun はこれを利用している。

とっつきやすい上に、とにかくコードが読みやすいのが良い。メンテナンスも文句なし。

cowboy

Erlang のウェブサーバといえばこれ。信頼と実績の cowboy 。使いやすさも文句ない上に、改善も淡々とされている。最近では HTTP/2 に対応した。

ちなみに自社がスポンサーになっていたりする。https://ninenines.eu/

uuid

otp に標準で入っていないのはなぜなんだ。ということで最低限の機能がきっちりと作られてるライブラリを選択。

長く使っているが困ったことはないので、オススメしたい。

jsone

今回唯一のメイドインジャパン。JSON のエンコーダ・デコーダ実装。ピュア Erlang 実装なのがポイント。

シンプルな API 、あれできないのかな?と思ったら全てオプションへ。

使わない理由がない。

hackney

HTTP クライアントはいくつかあるが、まともに使えるのは殆ど無い。結局 hackney を選んでしまう。

HTTP/2 や WebSocket には非対応。そのあたりは後述する gun を利用するとよい。

reacon

Erlang を仕事で使っていて、知らない人はいないライブラリの1つ。

binary のメモリーリークを探したり、エラートレースしたり、crushdump の解析をしたり、入っていてよかった recon 。

gun

cowboy の作者が開発している HTTP クライアント。HTTP/2 や WebSocket にも対応。完全非同期が前提での実装なので単純に HTTP リクエストを投げつけるだけなら hackney の方が楽。

主にテスト用途で使うのがオススメ。

proper

Quick Check 実装の1つ。テストのときだけ使うライブラリなのでパッケージ自体には含める必要はない。GPLv3 だけどそこは安心してほしい。

開発もその前提で GPLv3 にしているとのこと。シンプルだし使いやすいのでオススメ。

luerl

Erlang VM 上で Lua を動かすという恐ろしいライブラリ。残念なのは Lua 5.2 なところ。Lua 5.3 対応は当面なさそうなので、fork して使っている。

Written by

Erlang/OTP / 時雨堂 / WebRTC / E2EE

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store