https://qiita.com/kaonash/items/d3678d5635e9d1e57ccf

https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png

ずっとJava一筋で生きてきた僕が、最近Elixirに興味を持って色々触っています。 そんな中、色々なところで「OTPが強力」「OTPイケてる」みたいに言われていて、OTPってなんなんだろうとちょっと調べてみたんですが、結局わかったようなわからないような気持ちにしかなれませんでした。 ので、僕自身の理解向上と、そして僕みたいな迷える初心者さんたちのために一度ちゃんと調べたうえでまとめてみようと思いました。 まだまだ浅い理解で書いているので誤った記述もあるかもしれませんが、その際はご指摘いただければ幸いです。 また、具体的な活用方法など詳細については詳しい方々に譲るとして、今回はあくまで概略をざっくり書いていきます。

記事執筆にあたり、下記記事とすごいE本、『Programming Elixir』、あと公式サイトなどを参考にさせていただきました。[翻訳] ElixirにおけるOTPの紹介Elixir の OTP (GenServer 編)

OTPとは「Erlangのライブラリ集」、さらに言えば「それらを用いた並行プログラミングをしていくためのフレームワーク/デザインパターン」のようです。 正確な表現ではないかもしれませんが、そのように理解するのが個人的に一番しっくりきました。 厳密にはErlangコンパイラやErlangで書かれたリアルタイムデータベースであるMnesiaなどなども含んでいる(このへんが理解を難しくしているような気がする)のですが、通常OTPという時は前者の意味で言うのが一般的なようなので、ここではもうその前提で進めます。

ちなみにOTPはOpen Telecom Platformの略で、もともとは電話交換機のシステム構築のために作られたためこのような名前になったものの、現在では名称そのまま、より広い用途で使われるようになったという経緯があるらしい。 ・・・ので、名称から意味を類推しようとするとドツボにはまる(経験者談)。

Behavior(ビヘイビア)

OTPではOTP内のモジュールを使った便利な定番パターンのことを「ビヘイビア」という名前で定義していて、これらを使うことでElixir(本来はその派生元であるErlang)の並行処理や堅牢なプロセス監視を簡単に実現することができます。

これらについては参照元にも詳しく書いてあるのでサクッと流します。

以上、本当に簡単になってしまいましたが今回はこの辺りで。