IBM Cloud 環境の無料枠内でサクサク動く Node-RED 環境を10分で手に入れる

Node-RED がだんだん理解できてきた気がするので、以前に投稿した以下の2つのネタをベースに、

* [Node-RED で遊んでみる第一歩: Web ページを表示してみる](https://qiita.com/yamachan360/items/e3c552c1d2e83e5bf602)
* [IBM Cloud (旧 Bluemix) で従量課金(PAYG)アカウントにアップグレードしたら少し得した気がする件](https://qiita.com/yamachan360/items/edd67ce0e7af8cce66fe)

IBM Cloud 環境で「いろいろ遊ぶのに好都合な Node-RED 環境」をサクッと構築してみたいとおもいます。我が身(財布)での実験も兼ねて！

【2020年5月20日 追記】[IBM Cloud Foundry Public プラン変更のお知らせ](https://www.ibm.com/blogs/solutions/jp-ja/plan-updates-for-ibm-cloud-foundry-public/?fbclid=IwAR2cFg63Vh1kwWXIFw4q46Ul8RLIs90p_wFuO8I54sThjrrniXB7ZgzcvSU) によると無料枠が削除もしく削減されたようです。請求情報を確認し、また不要なアプリ・メモリ設定は見直しましょう！まずは [IBM Cloudのアカウント種別と課金状況の確認方法](https://www.ibm.com/blogs/solutions/jp-ja/cloud-foundry-public-2020051902/) ページを参照してください。

# 最初はアカウントの準備

まずは [IBM Cloud アカウント](https://console.bluemix.net/registration/free) でログオンします。

アカウントが無い場合には、メアドを入力して新規作成してください。そして今回の投稿では、そのまま従量課金(PAYG)アカウントにアップグレードすることをお勧めします。このほうが同じ無料の枠内でも、より快適な環境が利用できると思われるからです。

そして [ダッシュボード](https://console.bluemix.net/dashboard/apps) を開き、過去に作成したアプリやサービスがあったら、とりあえず全部削除してしましょう。今回は無料枠で利用できる環境を、めいっぱい Node-RED 環境で利用しつくす、がコンセプトだからです。それ以外の利用があると上限を超えてしまうかもしれません。

# 次はアプリの作成

[簡単な始め方](https://qiita.com/yamachan360/items/e3c552c1d2e83e5bf602#%E7%B0%A1%E5%8D%98%E3%81%AA%E5%A7%8B%E3%82%81%E6%96%B9) を参考に、「スターターキット」にある「Node-RED Starter」を作成します。

アプリ名とホスト名だけ入力して、「作成」すれば Node-RED 環境が構築されます。この簡単さが嬉しいですよね！

ただ今回は、ちゃんとプランの部分も確認しておきましょう。Cloudant DB が無料の **Lite** プランなのを確認し、またSDK for Node.js の **デフォルト** プランの内容もよく確認しておきます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/30ad5418-5cdd-18e8-4ca3-1480c1702cb1.png)
なおアプリ名は自由ですが、将来誰かに公開することも考え、ホスト名はきちんと考えて付けましょう。まあ短くて良さげな名前はわりと取られていますけれどもw
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/29c7361b-9865-78ce-8d3b-129449eed76e.png)

# ダッシュボードで確認

無事にアプリが作成されたら、ダッシュボードで状況を確認しましょう。

以下の赤枠の2箇所が確認ポイントで、作成した Node-RED のメモリー量が **512MB** 以下で、Cloudant サービスが **Lite** プランなことを確認します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/08136e30-c552-04cf-3fc6-de8e75b117a3.png)
Cloudant なのですが、Cloud Factory サービスと単にサービス、二か所にリストされているのが謎ですよね。どうやらこれらは同じもののようで、片方は別名のようです。[このへん](https://console.bluemix.net/docs/resources/instance_migration.html#migrate) に詳細が説明されています。

# リソースグループへのマイグレーション

Cloudant の Cloud Factory サービスのほうに、謎のアイコンが表示されていることに気がつきました。これ実施すれば、二重表示は無くなるのかも？ですね。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/3bb28dd0-5490-c67f-9a98-ba494febb71e.png)
早速、クリックして「リソース・グループへのマイグレーション」とやらを実行してみます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/cd553405-233f-6af3-78f5-a8e85f3b8f09.png)
あっさり簡単にマイグレーションは完了。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/fc963f1d-6b5c-eab4-2272-033ee2463abc.png)
しかしダッシュボードでの重複表示は変わらず。アイコンが変わっただけでした…
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/b436f038-8249-afd1-c5c8-269f0b337d04.png)
ええ、ご親切にどうも…
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/73fc623d-4501-61b9-07a6-7a264961c7c6.png)
まあ「リソース・グループ」は新しい機能で、[権限管理も容易になるそう](https://console.bluemix.net/docs/resources/instance_migration.html#migrate) ですから、まあ良いことをしたと思いましょう… (でも特にお勧めはしません)

# メモリー量を増やして快適に

さて今回作成したアプリですが、SDK for Node.js の **デフォルト** プランの内容を再確認してみましょう。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/1bf16934-d8fd-566a-b223-b64d236c6c80.png)
無料で30日間、そして「375GB 時間無料」という言葉が気になりますね。375GBを月の最大日数 31日 で割り、更に 24時間 で割ると、答えは 「0.504GB 時間」になります。これは「516MB 時間」です。つまりは **516MB** を超えないメモリ量でアプリを稼働するのは無料の枠内、となりますね。

これは [あれ、ちょっとお得かも？](https://qiita.com/yamachan360/items/edd67ce0e7af8cce66fe#%E3%81%82%E3%82%8C%E3%81%A1%E3%82%87%E3%81%A3%E3%81%A8%E3%81%8A%E5%BE%97%E3%81%8B%E3%82%82) で発見した、以下の事実と符合します。

> ライト・アカウントでは利用できるメモリ容量の上限が 256MB だけど、従量課金(PAYG)アカウントで Node.js のサービス価格を計算してみると、なんと 512MB までは月額料金が無料(FREE)と表示される 

この投稿で、従量課金(PAYG)アカウントにアップグレードすることをお勧めした理由がコレです。初期設定の 256MB はメモリー量としてはあまり多くなく、Node-RED を快適にサクサク利用するには少し不足気味に思えます。なので無料枠の範囲内で、最大の値を設定しておきましょう！

ダッシュボードからNode-RED アプリを開き、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/08f402dc-294f-31a2-c398-2921315d1542.png)
メモリー量を 512MB に変更して「保存」します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/a9ab23bb-5727-7b8b-9cca-781d0c0cbd9e.png)
以下のような警告が出ますが、そのまま「閉じる」をクリック。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/c897f84e-6d4c-c27c-0409-bcb1614639d6.png)
アプリが自動的に再起動して、512MB のメモリ設定で Node-RED アプリが利用可能になります。

# 後は使うだけ

再起動が終わり、ステータスが実行中になったら、「アプリ URL にアクセス」メニューから Node-RED アプリにアクセスして使い始めましょう！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/0d76f302-275f-12ff-ff33-0351ef283088.png)

# availability-monitoring？

設定など変えていたら、いつの間にかダッシュボード上でアプリに対してサービスが追加されていた件。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/93980303-fe5c-d776-4a88-d9542cf3f981.png)
アプリの状態を監視してくれるサービスのようですね。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/8614fe08-c1d7-6d2c-2d81-4db0d13d88a5.png)
まあ無料の **Lite** プランなので、とりあえず気にしないことにしますw

# 無料枠についての実情

計算上は無料枠の範囲に収まるハズなのですが、サービスの詳細を見るたび
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/b52d9bb1-75dc-09b9-d239-4e195504279c.png)
みたいに金額が増えていくのは、やっぱ慣れないし、少し怖いですね。

私が今回の投稿のアプリ設定を実施したのが2018年の10月31日です。2018年の11月はずっとこの設定でアプリを動かし続ける予定ですので、11月の請求状況などがわかったら、この章に追記しますね。

アカウントのアップグレードに不安のある方は、それを待ってもらっても良いかもしれません。

## 【追記】請求情報について

というわけで1ヶ月以上を運用していますが、11月の請求は来ていません。12月16日現在もダッシュボードでは以下のように金額が表示されていますが…
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/77e358e0-ded8-6e84-95bd-3c3981660a25.png)
請求情報の見積ページを開くと0円表示になっています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/bf6cdc74-f41e-9436-4276-a043bd1e1988.png)
というわけで、512MBでサクサク動く Node-RED 環境、無料枠の範囲で今後も使っていけそうですね！

## 【更に追記】請求情報について

512MBでサクサク動く Node-RED 環境ですが、2019年8月の今も稼働したままです。そしてIBM Cloud からの請求は1度も来ていない、と記憶しています。大丈夫そうですね！

## 【2020年5月20日 追記】無料枠の削減について

[IBM Cloud Foundry Public プラン変更のお知らせ](https://www.ibm.com/blogs/solutions/jp-ja/plan-updates-for-ibm-cloud-foundry-public/?fbclid=IwAR2cFg63Vh1kwWXIFw4q46Ul8RLIs90p_wFuO8I54sThjrrniXB7ZgzcvSU) によると無料枠が削除もしく削減されたようです。請求情報を確認し、また不要なアプリ・メモリ設定は見直しましょう！まずは [IBM Cloudのアカウント種別と課金状況の確認方法](https://www.ibm.com/blogs/solutions/jp-ja/cloud-foundry-public-2020051902/) ページを参照してください。

# Cloudant サービスの役割

ところで今回の Node-RED アプリにおいて、Cloudant サービスはどんな役割を果たしているのでしょうか？せっかくですので、Cloudant サービスにある
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/d7a8d0b3-9104-29c7-cfd9-8f81969a5e98.png)
から中身をざっと見てみましょう。Node-REDを起動した直後の状態ですと
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/275a443a-5fce-7d56-d84c-a1e84f012517.png)
と、利用サイズも小さく、文書数も2しか無いのがわかります。その中身は
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/0b80f848-9bb4-e7c3-bfa1-346815ff5fef.png)
となっています。

**_design/library** 文書のほうは短い関数定義が2つあるだけ、です。サイズも小さいですし、これはまた別の機会に探ることにします。

**node-red/settings** 文書ですが、これは Node-RED の設定ファイルのうち .config.json ファイルとほぼ同じ内容が入っているようです。Windowsでローカルに動かしている場合の以下のファイルが該当。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/a642ee91-9b39-0e96-d600-17d2831b13df.png)
これら設定情報が Cloudant DB に格納されているわけですね。これくらいなら、普通に Node-RED を操作するぶんには、Cloudant サービスの Lite プランの範疇で十分に収まりそうです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/193519/71143f61-4d5a-7fd3-7c1a-2fc890d5947f.png)
サービスの再始動などでローカルに保存したファイルが消える(pushした状態に巻き戻る)ことも多いCFのクラウド環境です。設定情報などを Cloudant サービスで保持することで、情報の永続化を実現しているようです。このへん、ちょっと興味がありますので、また別途、詳しく調べたいとおもいます！

# 何か変だな？と思ったら

[Support - Bluemix Dev](https://developer.ibm.com/bluemix/support/#status) から各サービスの稼働状況を確認すると良い模様。

# というわけで

いろいろ記述したらこのページは長くなってしまいましたが、まとめると、

* IBM Cloud アカウントを作成し、従量課金(PAYG)アカウントにアップグレード
* 「スターターキット」にある「Node-RED Starter」を作成 (名前の指定のみ)
* メモリー量を 512MB に増やす

と3ステップで、10分もあれば自由にサクサク使える自分だけの Node-RED 環境を手に入れることができそうです。

私自身もこの環境でいろいろ試したいと思っていますので、何か気がついたことがあれば追記していきます。皆で Node-RED 環境で遊びまくって、いろいろ楽しいアプリやサービスを作成してみてください！

ではでは。