コンテンツにスキップ

Node.js

Node.jsとは

Node.jsはJavaScriptをブラウザの外で実行するための実行環境である。

元々JavaScriptはWebブラウザ上で動作する言語だったが、Node.jsの登場によってサーバーやデスクトップアプリケーション、組み込み機器などでも利用できるようになった。

Asterでは主にAC(操作パネル)の開発やWebサーバーの構築に利用する。


特徴

JavaScriptでサーバー開発ができる

通常のWebサイトではJavaScriptはブラウザ上で実行されるが、Node.jsを利用することでサーバー側の処理もJavaScriptで実装できる。

これにより、フロントエンドとバックエンドを同じ言語で開発できる。


非同期処理が得意

Node.jsはイベント駆動型アーキテクチャを採用している。

そのため、

  • 通信処理

  • ファイル読み込み

  • データベースアクセス

などの待ち時間が発生する処理を効率良く実行できる。

特にWebサーバーや通信ゲートウェイとして高い性能を発揮する。


軽量で高速

Node.jsは比較的メモリ消費が少なく、Raspberry Piのような小型コンピュータでも快適に動作する。

AsterのACで採用しているRaspberry Piとの相性も良い。


NPMについて

Node.jsにはNPM(Node Package Manager)が付属している。

NPMはライブラリ管理システムであり、必要な機能を簡単に追加できる。

例

npm install express

このコマンドを実行すると、ExpressというWebサーバーフレームワークをインストールできる。

余談だがいつもnpmで使っているのでNPMって大文字で書かれると理解するまでに時間がかかる。


よく利用されるライブラリ

Express

Webサーバーを簡単に構築できるフレームワーク。

Socket.IO

ブラウザとサーバー間でリアルタイム通信を行うためのライブラリ。

SerialPort

UARTやUSBシリアル通信を扱うライブラリ。

STM32との通信などで利用できる。

ws

軽量なWebSocketライブラリ。

リアルタイム通信を実装する際に利用される。


package.json

Node.jsプロジェクトの設定ファイル。

使用するライブラリやプロジェクト情報が記録される。

また、開発環境を他のPCへ移行する際にも利用される重要なファイルである。


Raspberry Piでの利用

Node.jsはRaspberry Pi上でも動作する。

Asterでは以下の用途で利用する予定である。

  • WebUIの配信

  • ALEOとのUART通信

  • 状態監視

  • ログ保存

  • APIサーバー

構成例

操作者
   ↓
WebUI
   ↓
Node.js
   ↓ UART
ALEO(STM32)

メリット

  • JavaScriptのみで開発可能

  • Webとの親和性が高い

  • Raspberry Piで動作する

  • ライブラリが豊富

  • 開発速度が速い


デメリット

  • リアルタイム制御には向かない

  • 高負荷な数値計算は苦手

  • ハードウェア制御はマイコンの方が適している


Asterでの役割

AsterではNode.jsをAC(操作パネル)の中核として利用する。

Node.jsはWebUIとALEOの仲介役として動作し、

  • Webページの配信

  • UART通信

  • 状態管理

  • API提供

を担当する。

一方で、

  • モータ制御

  • センサ取得

  • 安全制御

などのリアルタイム性が求められる処理はALEO(STM32)が担当する。

そのため、AsterにおけるNode.jsは「制御装置」ではなく「通信・管理サーバー」としての役割を持つ。