
Erlangは1986年にスウェーデンのEricsson社で開発された関数型プログラミング言語である。設計者のJoe Armstrongらは、当時急増する電話交換機のソフトウェアを、無停止で並行処理できる仕組みとして構想した。軽量プロセスとメッセージパッシングを言語仕様に組み込み、ホットコードスワップによる稼働中アップデートを可能にする独特の思想は、現代のチャットサーバーや金融取引基盤にも継承され、稼働率99.9999999%という伝説的な可用性を支えている。
この記事の目次
- Ericssonが直面した交換機ソフトの危機
- 軽量プロセスとメッセージパッシング
- 稼働中の差し替えを支えるホットコードスワップ
- ElixirとBEAM VMに広がる現代の影響
- まとめ
Ericssonが直面した交換機ソフトの危機

1980年代半ば、Ericssonは電話交換機AXEシリーズの制御ソフトウェアが肥大化し、C言語やPL/Iでは保守不能になる危機に直面していた。回線数が急増するなかで複数の通話を同時に処理し、しかも一部の障害が全体に波及しない設計が求められた。Joe ArmstrongとRobert Virding、Mike Williamsの3名は、Prolog上での実験を経て1986年に新言語の設計に着手し、デンマーク人数学者Agner Krarup Erlangの名前を冠した。
Erlangは1987年に最初の実装が動作し、1995年のAXD301交換機プロジェクトで本格採用される。このAXD301は170万行のErlangコードで構成され、9つの9 つまり99.9999999%の可用性を達成したという報告が後に語り草となった。Ericssonは1998年にErlangをオープンソース化し、社外の開発者コミュニティに開かれた言語へと脱皮させた。
軽量プロセスとメッセージパッシング

Erlangの最大の特徴は、OSスレッドとは無関係に動作する軽量プロセスにある。1つのVM内で数十万から数百万の軽量プロセスを同時に立ち上げることが可能で、各プロセスはメモリ空間を共有せず、メッセージのやり取りだけで通信する。これはアクターモデルに分類され、共有メモリ起因のロック競合やデッドロックを構造的に排除する。
プロセス間の障害分離も徹底されている。あるプロセスが異常終了しても他のプロセスは影響を受けず、リンクされた監視プロセスが再起動戦略に従って復旧させる「Let it crash」哲学は、防御的プログラミングとは正反対のアプローチである。OTPと呼ばれる標準ライブラリ群は、こうした並行・耐障害設計のパターンをsupervisorやgen_serverといった抽象として提供している。
稼働中の差し替えを支えるホットコードスワップ

電話交換機は止められない設備の代表例だが、Erlangはこの要請に応えるためホットコードスワップという仕組みを言語レベルで備えている。実行中のVMに新しいモジュールをロードし、既存プロセスが次の関数呼び出しに到達した時点で新コードに切り替わるため、サービスを停止せずアップデートを反映できる。
この仕組みはWhatsAppでも活用された。2014年にFacebookへ約190億ドルで買収された同サービスは、当時450人規模のサーバーチームがErlangとFreeBSDで4億5千万人以上のメッセージングを支えていたことで知られる。一般的なWebアプリでは無停止デプロイのために二重構成やローリングアップデートを組むが、Erlangはランタイム単体でその要件を満たせる稀有な存在である。
ElixirとBEAM VMに広がる現代の影響

Erlangの実行基盤であるBEAM VMは、近年Erlang以外の言語のホストとしても注目を集めている。代表例が2011年にJosé Valimが発表したElixirで、Ruby風の親しみやすい構文を持ちながらErlangの並行性とOTPの恩恵をそのまま受けられる設計になっている。Phoenix FrameworkによるリアルタイムWeb開発で人気を博し、Erlangコミュニティのすそ野を大きく広げた。
金融分野ではGoldman Sachsの一部システム、ゲーム分野では『League of Legends』のチャットサーバーがErlang/Elixirで構築されている。CPUコア数が増え続けるマルチコア時代において、共有メモリを前提としないErlangの設計哲学は再評価が進んでおり、登場から40年近く経ったいまも独自の地位を保ち続けている。
まとめ
Erlangは1986年のEricssonにおける交換機ソフト危機から生まれ、軽量プロセス、メッセージパッシング、ホットコードスワップという三本柱で「止まらないシステム」を支えてきた。WhatsAppやLoL、後継のElixirへの影響を通じて、関数型・並行処理の重要なルーツとして現代のソフトウェア設計にも生き続けている。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント