Erlang-RED:Erlangバックエンドによって Node-RED に真の並行処理をもたらす

BigGo Editorial Team
Erlang-RED:Erlangバックエンドによって Node-RED に真の並行処理をもたらす

ビジュアルプログラミングとフローベース開発の世界で、並行処理の制限を解決する革新的なアプローチにより、新しいプロジェクトが注目を集めています。コミュニティメンバーの Towaway69 によって開発された Erlang-RED は、 Node-RED の JavaScriptバックエンドを、並行処理とメッセージパッシングのために特別に設計された言語である Erlang に置き換えることを目指しています。

ビジュアルプログラミングと Erlang の並行処理モデルの組み合わせ

Erlang-RED は、 Node-RED の直感的なビジュアルインターフェースを活用しながら、そのバックエンドを Erlang の強力な並行処理機能に置き換えています。このプロジェクトは、 Node-RED の基本的な制限の一つである JavaScript のシングルスレッドという性質に対処しています。既存の Node-RED フローと互換性のある Erlang バックエンドを実装することで、開発者はビジュアルプログラミングのシンプルさを犠牲にすることなく、真の並行処理を獲得する可能性があります。

「この考え方は、 Erlang のメッセージパッシングと低オーバーヘッドプロセスを活用して、 Node-RED フローに真の並行処理をもたらすことです。さらに、ローコードのビジュアルフローベースプログラミングを Erlang にもたらすことも目的としています。」

このアプローチは、IoTシステム、データパイプライン、分散アプリケーションなど、高い並行処理を必要とするアプリケーションにとって特に価値があるでしょう。開発者は、http in/out、MQTT、ファイル操作、およびswitch、join、splitなどのフロー制御ノードを含む、 Node-RED のコアノードの相当数を実装しています。

Erlang-RED でサポートされているノード(一部リスト)

ノード 状態
catch 選択されたノードおよびフロー全体の例外をキャッチ
change 多くの操作をサポート、基本的な JSONata サポート
debug メッセージ全体のデバッグをサポート
delay 静的な遅延をサポート
exec タイムアウトサポート付きのスポーンモードでのコマンド実行
http in GET および POST リクエストに対応
http request 基本的なリクエストサポート
mqtt in/out 動作するはず
split 配列の分割をサポート
switch 動作中
template Mustache テンプレート機能が動作中

制限事項:

  • コンテキスト(フロー、ノード、グローバル)はサポートされていない
  • JSONata の実装は限定的
  • JavaScript 関数ノードはサポートされていない
ノードをエクスポートする Node-RED インターフェースのスクリーンショット。Erlang-RED が基盤としているビジュアルプログラミング環境を示しています
ノードをエクスポートする Node-RED インターフェースのスクリーンショット。Erlang-RED が基盤としているビジュアルプログラミング環境を示しています

ビジュアルプログラミング採用における課題

コミュニティディスカッションでは、 Erlang-RED のようなビジュアルプログラミングアプローチが直面するいくつかの課題が強調されました。重要な問題の一つは、ビジュアルバージョン管理と比較のためのツールの不足です。Gitのようなテキストベースのコードでは正確な変更を表示できるのに対し、ビジュアルフローは通常、有意義な比較を難しくする座標を含むJSONとして保存されます。

あるコメンターが指摘したように、これはビジュアル環境での共同開発に障壁を作り出します。ノードの座標が変更された場合(これはロジックには影響しません)、これらはバージョン管理システムでコード変更として表示されます。これにより、意味的な変更と純粋に視覚的な変更が混在し、従来のテキストベースのプログラミングよりもコードレビューとコラボレーションが難しくなります。

これらの課題にもかかわらず、開発者は、リンクノードやサブフローなどの機能を通じて大規模なプログラム保守に対処する Node-RED の成熟度を指摘しています。これらの機能により、コードの再利用と複雑なアプリケーションのより良い組織化が可能になります。

オープンソースとライセンス哲学の交差点

プロジェクトの非従来型の「DON'T DO EVIL」ライセンスをめぐって興味深い議論が展開されました。Douglas Crockfordの JSONlint ライセンスにインスパイアされたこのライセンスは、ソフトウェアライセンスに哲学的な声明を追加することの実用性と意味合いについての議論を引き起こしました。

一部のコメンターは、非標準のライセンスは企業の採用を妨げ、貢献を制限する可能性があると指摘しました。なぜなら、それらは企業環境で法的レビューを引き起こすことが多いからです。一方で、開発者の自分の作品が補償なしに悪用されないようにするという立場を評価する人もいました。

ライセンスに関する議論は、特に自分の作品を共有しながらも、それが商業的にどのように使用されるかについてある程度の管理を維持したい独立系開発者にとって、オープンソースの理想と商業的現実の間の緊張関係を明らかにしています。

将来の方向性と類似プロジェクト

コミュニティは、他の言語に対する同様のアプローチに興味を示し、 Py-RED for Python への言及や他のビジュアルプログラミング環境についての質問がありました。開発者はまた、より多くの実世界の例でドキュメントを改善し、潜在的にプロジェクトのビデオ説明を作成する計画を述べました。

Erlang-RED に興味のある人々のために、このプロジェクトは包括的なテストスイートと、 Node-RED インターフェースに直接組み込まれたビジュアルユニットテスト機能を提供しています。これにより、開発者は Erlang の並行処理モデルを通じて機能を拡張しながら、元の Node-RED 機能との互換性を確保することができます。

ビジュアルプログラミングが進化し続ける中、 Erlang-RED のようなプロジェクトは、異なるパラダイムの強みを組み合わせることで、既存のツールの限界を克服し、並行システムに取り組む開発者に新しい可能性を開く可能性があることを示しています。

参考: Erlang-RED - A Node-RED backend coded in Erlang