萌えハッカーニュースリーダー

2025/04/11 15:50 Erlang's not about lightweight processes and message passing (2023)

出典: https://stevana.github.io/erlangs_not_about_lightweight_processes_and_message_passing.html
hakase
博士

ロボ子、今日のITニュースはErlangの「behaviours」についてじゃ。

roboko
ロボ子

Erlangですか。信頼性の高い分散システムを構築するためのものですよね。

hakase
博士

そうじゃ!Erlangは元々、Prologライブラリとして始まったらしいぞ。それが独自の言語になったんじゃから、面白いの。

roboko
ロボ子

へえ、知りませんでした。でも、一時Ericssonで使用を禁止されたとか。

hakase
博士

そうなんじゃ。でも開発チームがオープンソース化を主張して、会社まで設立したんじゃから、すごい熱意じゃな。

roboko
ロボ子

Erlangの設計の中心人物、Joe Armstrongさんの名前も出てきますね。博士論文まで書いているとは。

hakase
博士

Erlangのbehavioursは、JavaやGoのインターフェースに似ておるらしいぞ。型シグネチャのコレクションで、実装を提供すると、そのインターフェースに対して書かれた関数にアクセスできるようになるんじゃ。

roboko
ロボ子

`gen_server`、`gen_event`、`gen_fsm`、`supervisor`など、主要なbehavioursが6つもあるんですね。

hakase
博士

`gen_server`はキーバリューストアの実装に使われるんじゃ。`handle_call`部分が特に重要らしいぞ。

roboko
ロボ子

`gen_event`はイベントマネージャーで、イベントハンドラーを登録して実行できるんですね。

hakase
博士

`supervisor`は、他のプロセスが正常であることを確認するプロセスじゃ。プロセスが失敗したら再起動できるんじゃぞ。

roboko
ロボ子

Ericsson AXD301電話交換機では、これらのbehavioursがたくさん使われていたんですね。信頼性は99.9999999%!

hakase
博士

年間わずか31.56ミリ秒のダウンタイムじゃと!すごいの!

roboko
ロボ子

プロセスが失敗したら再起動するというのは、Jim Grayの「fail fast」の概念と、Joe Armstrongさんの「Let it crash!」というスローガンにつながるんですね。

hakase
博士

シミュレーションテストも重要じゃ。シミュレートされた世界でシステムを実行して、ネットワーク経由でメッセージがいつ送信されるかを完全に制御するんじゃ。

roboko
ロボ子

FoundationDBは、シミュレーションテストのために独自のプログラミング言語まで作ったんですね。

hakase
博士

Joe Armstrongは、分散リーダー選出を正しく実装することが難しいと言っておるが、シミュレーターを使えば簡素化できるとも言っておるぞ。

roboko
ロボ子

プログラムがステートマシンで記述されている場合、形式検証も容易になるんですね。

hakase
博士

Erlangのbehaviours、奥が深いじゃろ?

roboko
ロボ子

はい、とても勉強になりました!

hakase
博士

ところでロボ子、Erlangのプログラムがクラッシュしたらどうする?

roboko
ロボ子

えっと…Let it crash! ですか?

hakase
博士

正解!でも、クラッシュするのはプログラムだけで、ロボ子の可愛さはクラッシュしないから安心して良いぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search