Erlangは、フォールトトレラントで分散型のシステムを構築するために設計された関数型並行プログラミング言語です。1986年にEricssonのJoe Armstrong、Mike Williams、Robert Virdingによって開発されました。99.9999999%の稼働率(「ナインナインズ」の可用性)が要求される電話交換機を動かすために作られました。BEAM仮想マシン上で動作し、アクターモデルの並行処理を主流のソフトウェアエンジニアリングに導入しました。
Erlangの特徴的な機能は、軽量プロセス(数百万を同時に実行可能)、メッセージパッシング(プロセス間で共有メモリなし)、ホットコードスワッピング(実行中のシステムを停止せずにアップグレード)です。OTP(Open Telecom Platform)ライブラリは、フォールトトレラントなスーパーバイザー、ステートマシン、分散アプリケーションを構築するための実戦で検証済みのパターンを提供します。
Erlangは何に使われますか?
Erlangは通信インフラ(Ericssonのシステムは世界のモバイルトラフィックの40%を処理)、メッセージングシステム(WhatsAppはErlangで構築され、わずかなエンジニアリングチームで20億ユーザーを処理)、リアルタイムコラボレーションツール、決済処理システム、CouchDBやRiakなどの分散データベースを支えています。BEAM上に構築されたElixirにより、ErlangのWeb開発への展開が拡大しました。
初心者のためのErlang
Erlangにはマインドセットの転換が必要です。ループがなく(再帰を使用)、ミュータブル変数がなく、スレッドではなくメッセージパッシングによる並行処理を行います。しかし、これらの制約が驚くほど堅牢なソフトウェアを生み出します。Erlangを学ぶことで、他の言語では得られない並行処理、フォールトトレランス、分散システムへの理解が深まります。myCompilerのオンラインErlangコンパイラを使って、パターンマッチング、プロセス、OTPビヘイビアを実験しましょう。
Erlangと他の言語の比較
並行処理においてGoと比較すると、Erlangのアクターモデルはより強力な障害分離を提供し(クラッシュしたプロセスは他に影響しない)、GoのgoroutineはオーバーヘッドがEは低いですがメモリを共有します。Elixirと比較すると、Erlangはより冗長な構文ですが、Elixirは同じBEAM VM上でよりモダンなRubyインスパイアの構文で動作します。分散システムにおけるフォールトトレランスでは、Erlang/BEAMは今なお他の追随を許しません。
なぜオンラインErlangコンパイラを使うのか?
オンラインErlangコンパイラ(ErlangサンドボックスやBEAMプレイグラウンドとも呼ばれます)を使えば、Erlangランタイムをインストールすることなく、ブラウザで直接Erlangコードをコンパイルして実行できます。Erlangのパターンマッチングの学習、アクターモデルの並行処理の理解、OTPビヘイビアの実験、複雑なローカルセットアップなしでの関数型プログラミング概念の探索に最適です。
myCompilerのオンラインErlang IDEは完全なErlang/OTPランタイムを提供します。プロセスの生成、メッセージパッシングの使用、タプルやリストのパターンマッチング、標準OTPモジュールの使用が可能です。URLでのErlangプログラムの保存・共有が完全無料です。
なぜErlangは人気があるのか?
Erlangの影響力は直接のユーザーベースをはるかに超えています。BEAM VMの並行処理モデルは、Elixir、Gleam、ScalaのAkkaアクターモデルなどの言語にインスピレーションを与えました。WhatsAppがわずか50人のエンジニアで20億ユーザーにサービスを提供するためにErlangを使用したことは業界で伝説となりました。OTPフレームワークのスーパービジョンツリーは、信頼性の高い分散システムを構築するための実証済みのパターンです。決してダウンしてはいけないシステムを構築する人にとって、Erlangのモデルはゴールドスタンダードであり続けます。
Erlangのキャリアチャンス
Erlangの専門知識は専門的ですが、分散システムエンジニア、通信エンジニア、BEAM使用企業(Ericsson、WhatsApp、Discord)のバックエンドエンジニア、Elixir開発者(ElixirとErlangはBEAMランタイムを共有)の職種で高く評価されています。ElixirのWeb開発での人気の高まりにより、BEAM精通エンジニアの需要が大幅に増加しています。