ノーコードとローコードの境界

株式会社ビープラウド様が主催するIT勉強会「BP Study」の「NoCode/LowCode開発」に登壇させていただくことになりました!佐藤さん、お声がけいただき、ありがとうございます。

bpstudy.connpass.com

私は第2部「ローコード開発を活かすために心がけていること」で話をします。その前後でノーコードやiPasSについてのお話もあるので、この機会に私が最近考えている「ローコードとノーコードの境界」について整理してみました。

ノーコードとローコードの境界はあいまいになりつつある

直感的には「ノーコード」という単語から、プログラムを書かないことを期待しますが、実際には製品によって大きな違いがあります。アイコンを並べるだけでアプリケーションがつくれるものは、その組み合わせで実現できるものがすべてです。アイコン = 機能が増えるとノーコードといっても学習コストが増大します。一方、Java や C といった汎用プログラミング言語は使わないものの、計算式を記述できるようにするために関数を提供したり、あるいは独自言語を提供するアプローチもあります。こうなるとプログラムを書かない、というイメージを覆してしまいますが、業務システムであれば計算式を書くことは当然のように求められます。よってノーコードといってもシステム化対象領域が「業務システム」に寄ってくれば、少しずつプログラミングのスキルが求められてくることは避けられません。

では業務システムではない、ノーコードが活かせる分野は何でしょう。Webページや EC サイト作成、スマートフォンのUIプロトタイプ開発などが考えられますが、これらについても少し慣れてくると、やはり「処理」を書きたくなるのではないかと思います。つまり私の中では、ノーコード = まったくプログラムを書かない、というほど原理主義で捉えなくてもよい(捉えることは現実的に無理がある)というものです。

一方「ローコード」はどうかというと、Wikipedia によると「モデル駆動設計」「自動コード生成」「ビジュアル・プログラミング」という原則があることがわかります。これらのキーワードからわかることは、これまで汎用プログラミング言語でアプリケーションを開発していた方を想定した、開発と保守工数の削減が意図されています。ただ、これらは実際には「ノーコード」を実現するための要素技術にもなっています。

以上から、ノーコードは「プログラミング知識のない方向け」で、ローコードは「プログラミング経験のある方向け」という説明は、一見わかりやすいのですが、実際のところはそう単純でもありません。例えば Wagby はローコード開発ツールと説明していますが、プログラミング知識がない = Java などを知らない方でも本格的な業務システムを開発した事例が数多くあります。この点からみても、ノーコードとの違いを説明することは難しいです。では別の視点で、両者の違いを説明できるかを考えてみました。

ノーコードはクラウドネイティブが前提、ローコードもクラウド対応へ

ノーコードはクラウド環境での提供が一般的になっています。システム運用の現場では、適切なデータのバックアップやサーバの負荷対策、そしてセキュリティパッチ適用などで忙しいですが、クラウドベースであるため、これらの手間から解放されるのは大きなメリットです。反面、既存システムとの連携が難しい、既存データベースの再利用ができないといった制約もありますが、これから開発するシステムであればメリットが勝るといえます。

その流れを受け、ローコードも開発ツールからプラットフォームへ変わらざるをえないでしょう。もちろん開発用PCにインストールする従来方式は残り続けるでしょうが、これから伸びる市場はクラウド型になると考えています。そうなると対象データベースも最初からクラウドで提供されているもの - AWSのAuroraといったRDBや、または NoSQL DB - に限定されます。これらのフルマネージドなデータベースを使って基幹システムをパブリッククラウドで運用することが可能になっている現在、クラウドという視点でも両者の境目はなくなっていきます。

ノーコードは Web とスマートフォンが前提、ローコードも PC 一辺倒からの脱却へ

個人的には2025年あたりには基幹システムもスマートフォンで操作することが普通になると予想しています。ノーコードは自身の機能強化によってスマートフォンだけでなく PC でもリッチな画面を実現できるようになり、一方でローコードは PC と同じ機能をタブレットやスマートフォンで実現できるようになるでしょう。ここでも両者の境目はなくなっていきます。

ノーコードでも業務ロジックに対応、ローコードもビジュアルプログラミングへ

ノーコードへの機能追加によって、業務ロジックの実現が進むことでしょう。一方でローコードも最初からクラウドベースで提供され、ビジュアルプログラミング環境が提供されると、もはや見た目にはノーコードとの違いは、わからなくなります。

最後に残る違い

ノーコードはローコードに近づき、ローコードはノーコードの良いところを取り込むという流れから、両者の違いがなくなると、最終的には「プログラミングの知識のない方でも、本格的なシステム開発に携わる」ことができるようになります。では最後に残る違いは何でしょうか。それはカスタマイズ性になると考えています。

ローコードはその出発点がエンジニア目線であるため、その製品がカバーしていない領域・機能をカスタマイズによって埋めることができる拡張ポイントが用意されています。一方、ノーコードはあえてその拡張ポイントを用意しないことで、拡張性を犠牲にしつつも簡単さをアピールしてきました。

今後、ローコードがクラウドやスマートフォンを取り込んでいく過程で、求められる拡張性は何でしょうか。私の考えでは「クラウドプラットフォームのカスタマイズ性」と「よく知られている OSS ベースの UI ライブラリの採用」です。前者は具体的には AWS のどのサービスを使っているかなどの仕様を明らかにしつつ、ユーザの要求に応じて構成変更を受け入れられるようにすることです。後者は例えば React のようなライブラリを採用することで、その技術を使えるエンジニアがカスタマイズできる余地を残すことです。

まとめますと、ノーコードは上記のようなカスタマイズ性を提供しないが、ローコードはそれができるという違いが残る、しかし機能面でいえば両者は限りなく近づいていく、というのがこれからのトレンドになる、という予測です。

(このブログは2021年1月時点で知りうる技術情報に基づいた、私の個人的見解です。)