Node-RED で工場シミュレーターを操作してみた #1 環境構築編

# はじめに

こんにちは。
[KCCS デジタルソリューション Advent Calendar 2023](https://qiita.com/advent-calendar/2023/kccs-digital-solution) 15 日目担当の福留（@kccs_kazuo_fukudome）です。

今回の記事は、IT 技術者が工場機器やセンサーなどの（OT）について気軽に触れてみる環境はないだろうか？そういうお悩みを解決する一助として、Node-RED で工場シミュレーター（GRFICS）を操作するという事を 2 回に分けてご紹介したいと思います。1 回目の今回は、環境構築編となります。

## 連載記事一覧

- Node-REDで工場シミュレーターを操作してみた #1 環境構築編 <font color="darkorange">★本記事★</font>
- [Node-REDで工場シミュレーターを操作してみた #2 Node-RED フロー作成編](https://qiita.com/kccs_kazuo_fukudome/items/3c76b2c300c89251a178)

## GRFICS とは

GRFICS は、IoT システムのセキュリティ教育用に作られた工場シミュレーターのようで、GitHub で公開されています。GRFICS で検索すると、ハッキングとか工場爆破とか、物騒なキーワードがたくさん出てきます。ただ、実際に触ってわかったのですが、非常に良くできているシミュレーターです。単純なセキュリティ教育素材としてでなく、IT 技術者が OT のことを理解するのにも良いものだと、私自身は感じました。

## 工場シミュレーターの環境構築

今回利用した、GRFICS のバージョンは V2 です。現在 V3 まで出ているようですが、V2 で環境構築を実施します。
[GRFICS V2](https://github.com/Fortiphyd/GRFICSv2) の GitHub には、インストール方法や IoT システムのセキュリティ教育の動画リンクもあります。セキュリティ教育についても学習したいという人は、ひととおり体験してみても良いと思います。

GRFICS V2 のページにも記載されていますが、GRFICS は Oracle の VirtualBox が必要となります。まず、VirtualBox をダウンロードしてインストールしてください。

次に、VirtualBox のネットワーク設定をします。"ツール" -> "作成" を押します。
![image1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/5ed208b4-8d8d-1451-156b-b97526a510f0.png)

次に、作成したネットワークを選び、192.168.95.111 のアダプターと、DHCP サーバーを次のように作成します。
![image2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/bb5e8802-a73d-d5a1-fc8d-48ceb8109a5c.png)
![image3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/aa0be751-2dbc-023a-d3bb-3d102e2eaa1f.png)

次に、工場シミュレーターである Simulation VM をダウンロードします。
Simulation VM は、 [GRFICS V2](https://github.com/Fortiphyd/GRFICSv2) のページの中ほどに、ダウンロードリンクがあります。

![image4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/0e554fcf-0b84-c50c-7526-d8c0f2fe650c.png)

次に、"ファイル（F）" -> "仮想アプライアンスのインポート（I）" から、ダウンロードしたファイルを選択し、Simulation VM（ChemicalPlant）を作成します。

![image5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/92e5d0b5-eda7-0de5-ff46-94414951a9f3.png)

最後に、起動ボタンを押し、Simulation VM を起動します。VM が完全起動したら、ブラウザから http://192.168.95.10 にアクセスし、仮想工場が表示できたら設定完了です。

![image6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/b5dc702e-d943-c290-7e32-90d35d89970f.png)

## Node-RED（Ubuntu）の環境構築

続いて、Node-RED の環境を構築します。 今回は、Ubuntu で作成しましたが、お好みのディストリビューションを利用して頂いても問題ありません。

まず、[公式 HP](https://ubuntu.com/download/desktop) から Ubuntu OS のディスクイメージをダウンロードします。

仮想マシン（M）→ 新規（N）から、ダウンロードした Ubuntu OS のディスクイメージを選択し、仮想マシンを作成します。
![image7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/465dccf3-bc3c-7d66-e4b0-cc3107541c9a.png)

Ubuntu の仮想マシンができたら、Node-RED のインストールを実施します。ただし、Ubuntu で terminal を実行しても起動しない場合もあります。その場合、次の Qiita 記事などに記述されているように、文字コードの設定変更をしてください。
https://qiita.com/towamz/items/2052f08e9e1af4068a56

terminal が起動できるようになったら、前回の[私の記事](https://qiita.com/kccs_kazuo_fukudome/items/5ca37ae9aaa461a44afb#%E5%9F%BA%E6%9C%AC%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88)を参考に Node-RED をインストールします。

:::note info
2023 年 12 月 現在では、Node.js の推奨バージョンが 18 以上となっています。また、sudo コマンドを利用するには、別途設定が必要となります。そのため、su コマンドで root ユーザーにスイッチして、コマンドを実行してください。
:::

Node-RED のインストールが完了したら、セットアップした仮想マシンのネットワークアダプターの割り当てを "NAT"（デフォルト設定）から "ホストオンリーアダプター" に変更してください。
![image9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/2bd843cf-0dc6-204f-ad2d-acd79a0678c7.png)

ネットワークアダプターの変更後に Node-RED を起動し、ブラウザで接続確認できたら環境構築は完了です。
※Node-RED にアクセスする IP アドレスについては、terminal で ip コマンドを利用して確認してください。
![image10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/9d126152-5d48-e3a6-f066-e352b40d22b1.png)

## 次回予告とお知らせ

次回は、今回作成した Node-RED 環境から、工場シミュレーターを操作する Node-RED フローについて紹介します。
明日以降も弊社メンバーの記事が投稿されます。[カレンダー](https://qiita.com/advent-calendar/2023/kccs-digital-solution)を購読していただけたら嬉しいです。また、[<img width = 13 src = https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852633/ab0b59a4-92f2-a678-ffd4-9b383922b55f.png>](https://x.com/kccs_digital) でも、Qiita 投稿に関する情報や各種セミナー情報をお届けしております！情報収集や学びの場を求める方々にぜひフォローしていただき、最新情報を手に入れてください！！🙌📚