みなさんこんにちは、OutSystems Lead Community Manager, Developer AdvocateのTaijiです。
今回はNode-REDアドベントカレンダー2021向けに、ローコードツールという視点でのNode-REDとOutSystemsの比較をしてみたいと思います。
ローコードツールの定義
まずは、ローコードツールとは何を指すのかを定義しておきます。これは人によっては定義のしかたが異なる場合もありますので、こういうカテゴライズもあるんだな、という感じで捉えていただければと思います。
分かりやすく箇条書きで以下に定義してみます。
プロコード
コーディングをしてアプリケーションを開発します。共通部品やライブラリはもちろん存在しますし、それを活用することも可能です。自分で実装したい内容をコーディングするため、実装方法や実現したい機能が柔軟に決められます。一方で当然逐一コーディングをするので、生産性は他の2つに比べて劣りますし、そこにヒューマンエラーが差し込まれる可能性も高いです。
プログラミングスキル(コーディングスキル)がある人にとっては一番開発しやすいものかもしれません。
ローコード
極力コーディングをしなくてもアプリケーションが開発できるように考えられた開発ツール、または開発そのもののことを指します。画面はドラッグドロップで、ビジネスロジックなどのバックエンド処理はフローベースで、それぞれいわゆるビジュアルプログラミングで開発が可能です。
また、既存のパーツでは実装が難しい内容などは、可能な範囲で拡張コードを書くことができるものが多いです。
プロコードに比較して生産性は高いですが、基本既存パーツの組み合わせで開発を行うので柔軟性はやや低いです。細かい処理制御を実装する場合プロパティ値設定が膨大になり、結果としてコーディングするステップ数に近くなることもあります。
ノーコード
コーディングの概念を一切排除した開発ツールです。ビジュアルプログラミングツールとも言えますが、プログラミングの要素は低く、基本的には既存パーツの組み合わせとプロパティ設定のみでアプリを実現します。
プログラミングの知識が一切なくても開発が可能で、すぐにアプリを実装することが可能です。
当然ですが、拡張性や柔軟性は非常に低く、予め決められた目的での使い方しかできないものがほとんどです。裏を返せばヒューマンエラーが差し込まれる可能性はほぼ無く、安心して使えます。
Node-REDの特徴
Node-REDはもともとはIoT向けにデータをチャンク(塊)単位でハンドリングし、適宜処理を行うことに特化して作られたツールです。そのため、バックエンド処理、データハンドリング処理の効率は非常に高いです。
また、予め用意されたノード(定義、実装済みの処理のパーツ)のカテゴライズがとても分かりやすく、どの用途にどのノードを利用すれば自分が実装したいことが実現できるかが直感的に分かります。(例えばMQTT通信したい場合はMQTTノードを使う、など)
Node-REDそのものはNode.jsで作られた、ブラウザベースの開発ツール(兼実行環境)です。そのため、Node.jsで実装できることはNode-REDではだいたい実装できます。(FunctionノードというNode.jsを直書きできるノードを使えばある意味何でもできますが、それはローコードの趣旨から外れるので一旦おいておきます)
つまり、サーバーサイド処理はお手の物なわけですが、UI・画面の実装はやや不得意かもしれません。HTMLやCSSを書くことが出来るノード(Templateノードなど)を使って簡易的な画面であればすぐに作れますが、凝った画面を作ろうと思うと、コーディングするのと同じくらいの労力が必要です。
個人的には、Node-REDの得意分野は、IoTであればエッジデバイス上でのデータハンドリング処理やクラウドサイドでのデータ加工処理、可視化処理準備あたりだと思っています。
また、簡易的なWebサービス(REST APIなど)を実装するのも得意ですね。HTTPノードを使ってGET、POSTなどメソッドごとの待受URLをかんたんに生成することが出来るので、あとはAPIとして提供したい処理をNode-REDで作ってしまえばOKです。
OutSystemsの特徴
OutSysytemsはローコード開発ツールの中ではフルスタックに分類されるツールです。Webアプリとモバイルアプリ開発に特化し、フロントエンドから、バックエンドまでコーディングレスで開発ができ、データベースの作成や外部システムとの連携も非常にかんたんに行うことができます。
そんなOutSystemsですが、初めての方がすぐにかんたんに使いこなせるかと言うと、それはちょっとむずかしいかもしれません。Node-REDがとても直感的で、初めての方でもなんとなく操作できてしまうのに対して、OutSystemsは独自のキーワードや、必要なお作法など、知らないと開発するのが難しい側面があります。また、データモデルを作成しそのエンティティ(OutSystemsで言うところのDBのテーブルにあたります)からCRUDの処理をベースにUIを生成したりする機能などもあり、ある程度ソフトウェア開発の知識が求められるのは否めません。
Node-REDほどの気軽さは無いのですが、その分フルスタックに画面からバックエンドから、外部との連携まで一気通貫で作成出来てしまい、モバイルアプリに関してはPWA対応や、OutSystems開発ツール(Service Studio)からストアへのアプリ公開が出来たりと、エンタープライズ開発の大部分をカバーできたりもするポテンシャルを持っています。
比較一覧
Mediumではテーブルや表を使えないようなので、別途スプレッドシートにまとめたものを画像化して以下に貼っておきます。
見づらい場合はクリックして拡大してください!
まとめ
一口にローコードやノーコードと言ってもいろいろな種類、性質のものがあるので、必ずしも各ツール同士が競合製品とは限りません。
また、ある製品や技術のファン度合いが強くなりすぎると、肩肘張って他のツールを使いたがらない傾向が見られることもあります。(私もそうでした)
ですが、それぞれにそれぞれの良さがあり、目的はどのツールを使うかでは無く作りたいアプリケーションを効率よく高品質に開発することのはずなので、一度客観的に色々なツールを触ってみると面白いと思います。
よくOutSystemsの競合で挙げられるkintoneも、先日がっつり使って開発してみましたが、なるほどよく出来ています。これは、ある特定のユースケースにおいては非常に強いと思いました。そんな感じで、是非いろいろなツールを試してみて、願わくばそれがNode-REDの魅力を再確認するきっかけになると良いなと思います。
ではでは!