スタートアップにオススメしたい!「Node-RED」で簡単Webアプリ開発

こんにちは!

小学校でもプログラミングと言われる時代になってきた昨今、新規サービスを作り出していくうえで、ソフトウェア開発も重要なポジションを占めるようになりました。オープンソースも一般的となりソフトウェア開発のコストは一昔前からすれば格段に安くなりました。私もソフトウェアエンジニア歴も10年を優に超し、今までの経験を交えながら「Node-RED」についてmemoをしていきたいと思います

なぜスタートアップにオススメなの?

OSSでコミュニティやLibraryなどから情報を得やすい。という”よくある話”はいったん横に置いて、オススメのポイントを整理すると以下の3点
 1)簡単に開発できる割に小規模運用やPoCレベルなら十分運用できる
 2)フローを繋ぎ直すことが中心なので、ビジネスに合わせてピボットしやすい
 3)
ビジネスを加速させるために大規模な開発を行う場合に、運用フローや設計資料として説明しやすい

今回は、スマホのアプリやIoTなどのbackend serverがあって処理が必要なWebアプリの開発のケース。
ビジネスの内容次第では、他のツールやサービス使った方が良いことも多いです。ビジネスの特性を含めて判断材料の一つとして捉えてください。

もう少し詳しく説明してみる?

Question-1
なぜ「簡単に開発できる割に小規模運用やPoCレベルなら十分運用できる」???

Node-REDの中身はnode.jsという技術が利用されています。
特徴としては、非同期処理が得意で、軽量で軽いこと。
・サーバやPCから比較すれば、はるかに非力なRaspberry Piでも動作する
・イベントドリブン(イベントを受け取ったら動作する)で動作するプログラミングがしやすいのでIoTと相性が良い。
・一昔まえに話題になった、C10K問題は発生しない
逆に、学習とか分析とか大規模な重い処理をするような仕事は向かない。
重たい処理はPhtyonとかRuby on RailsとかGolangとかbluemixのwatson先生とかにお願いすべきで、大規模に処理するbackend serverへのつなぎには使えるがbackend serverの代替はできない
ビジネス要件的にbackend serverが非力でも成り立つシステムで活躍しやすいです

Question-2
なぜ「フローを繋ぎ直すことが中心なので、ビジネスに合わせてピボットしやすい」???

先に「スタートアップ」と「スモールビジネス」について自分の理解を述べておきたい

スタートアップ ・・・ 不確かな市場で当たればデカいビジネスを生み出す
スモールビジネス ・・・市場があり、年数をかけて成長させるビジネス
つまり、「ホームラン狙ってフルスイングして点数を稼ぐ」か、「ヒット量産してコツコツ点数を稼ぐ」か、という違い

打席数(=経営体力)の中で、配給を見定めながらスイングすることになる。
スタートアップの場合、ホームランを狙うため、芯でボールを捉える事が必要になる。打率が上がらない(=ユーザセグメントの違い)場合、筋トレ(=マーケティング戦略)より、バッティングフォームを変える方(=ピボット)方が、多いのではないかと思う

スモールビジネスの場合、そこそこの打率成績(=市場を理解している)で、ヒットを狙う(=シェアを徐々に拡大する)ことが目的のため、バッティングフォームの修正ではなく、スイングの調整(=微調整)で済む。

前置きが長くなってしまったが、スタートアップとスモールビジネスはそもそも考え方が違うので、事前に用意しておくシステムやインフラが違う。
スタートアップは打席数を稼ぐため、柔軟な仕組みであるほうが良い
大抵のスタートアップは打てなければトーナメント敗退(=事業撤退)だ。
スモールビジネスは、ペナントレースで最後に勝てば良いので、メンバーの入れ替えを頻繁に行う(=小規模システムから拡大する)より、主軸のメンバーの調子を上げる方が望ましい(=大規模な開発を見据えて設計)

繰り返しになるが、Node-REDは大規模開発なbackend処理には向かない
(大規模開発は予算もあるので、部分採用はあっても、本質は別の言語を選定した方が無難
Node-REDはjavascriptで対応できるので、求められるスキルは限定的なため、人的リソースの代替が効きやすく、取り合えず動くものは作れるという点からもスタートアップ向き。

Question-3
なぜ「ビジネスを加速させるために大規模な開発を行う場合に、運用フローや設計資料として説明しやすい」???

規模拡大に合わせて、徐々にいろいろとボトルネックが見つかってきます。
改修を行う際にドキュメントはソースコードだ!。。。ありますよね^^;

ソースコード読むのですが、仕組みはわかりますが、運用フローまで理解できないことが多いです。
なぜなら、実装についてのコメントが中心ですし、コードを読んでもミクロ視点になるので、マクロ視点の運用フローを正確にイメージできる方は稀だからです。

その点Node-REDはフローで形成されているため、マクロな視点から理解するため、概念を追うことは難しくなく、うまく設計&コメントされていれば非エンジニアの方でも処理が想像できるレベルです。
きれいなフローはそのままRFPとして引き渡すことができるため、外部発注時のコストを下げることも可能です
昨今少なくなりましたが、オフショア発注など自然言語を介さないで説明できるというのは、強みですよ!
ビジネス視点から見ても一考の価値はあるのではないでしょうか?

ここまで引っ張りましたが、「Node-RED」とは結局なんなの?

Node-REDはフローベースドプログラミング(flow-based programming)ツールであり、 IBM Emerging Technology Servicesチームによって元は開発され、 現在ではJS Foundationのひとつになっています。
引用:Node-RED日本ユーザ会

簡単に言えば、「ノードを繋いでフローを作り、デプロイしたら動くアプリケーション」で、きれいに構築されていれば「プログラマでなくとも視覚的に理解しやすい」と理解しています。
概念に興味がでたら、引用元を参考にしてみてください。

Node-REDがなぜ視覚的に理解しやすいのか?参考にyoutubeの動画張っておきますね。

ということで、今回はここまで。
次回は構築編で行きたいなーーーーっと。

この記事が気に入ったらサポートをしてみませんか?