NoCodeはシステム開発を変えるか
はじめに
もし貴方がエンジニアなら「NoCode」という単語をどこかで目にしたことがあるはずだ。
2020年はAWSの「Honeycode」リリースやGoogleの「Appsheet」買収など、海外のNoCode界隈では大きな動きがあり、まだ盛り上がりを見せていない日本でさえ「NoCode」という単語を目にする機会が徐々に増えてきたという印象だ。
とは言えエンジニアからすればNoCodeなどという「得体のしれないもの」は所詮コードが書けない非エンジニアがもてはやす「おもちゃレベルのもの」をイメージするのではないだろうか(かく言う私もその一人だった)。
確かにNoCodeはコードを書く場合に比べ、出来ることが圧倒的に少ない。
コードを書きさえすれば自由にカスタマイズ出来ることが「当たり前」なエンジニアから見るとNoCodeは融通が効かず、何とも頼りなく見える。
しかしNoCodeはそれを補って余りある利点を備えており、今後エンジニアであってもNoCodeを採用せざるを得ない状況になると考えている。
私は、
今後5年以内に開発案件の半数はNoCodeで実装される
と本気で思っている。
そんな馬鹿なと思われるかも知れないが、海外では既にNoCodeで実装されたサービスが続々とリリースされており、日本でもNoCodeで実装したサービスが買収されるなど新しい動きが徐々に出始めている。
今後、NoCodeは確実に開発の現場に浸透し「使って当たり前」という状況になっていくはずだ。
では、そもそもNoCodeとは一体どんなもので何がそんなに優れているだろうか。
もし貴方がエンジニアでNoCodeに関わりが無いのであれば、是非一読いただきたい。
私と同じ様に衝撃を受けNoCodeにどっぷりとハマるきっかけになるかも知れない。
NoCodeとは何か
NoCodeとはその名の通りコードを書かずにアプリケーションやHPを作成できるサービスである。
Webサービスの形式で提供され、開発者はブラウザ上で開発することが出来る。
NoCodeサービスには
- フロント〜バックの開発で必要なもの一式を提供しているもの
- サービス間の連携処理を提供しているもの
- 特定の領域のみを提供しているもの
に大きく分けられる。
【フロント〜バックの開発で必要なもの一式を提供しているもの】
良く聞くNoCodeサービスの多くがこれに該当するサービスである。
代表的なものを以下に挙げる。
Bubbleは
- UIはコンポーネントを画面上にDrag&Dropし、挙動を画面上で設定する。
- DB定義やデータ投入も画面上から項目選択・入力の形式で実施。
- ボタンクリック時などのアクションはWorkflow形式にて画面上から詳細に設定可能
- 外部APIの呼び出しだけでなく、APIを作成し外部に公開することも可能
- いわゆる「Jobスケジュール」は外部サービス(Integromatなど)と連携することで実現可能
などWebアプリケーション開発に必要な機能を一通り揃える。
BubbleのHPではBubbleで開発・リリースされたサービスが掲載されている。
個人開発されたものも含めればかなりの数になるはずだ。
AdaloはUIが非常に分かり易く、直感的に操作できるのが特徴。
Bubbleはその高機能性によりNoCodeサービスの中では学習コストが高めであるが(それでもプログラミング学習よりは遥かに簡単に習得できる)、Adaloは習得も容易。
AdaloはBubbleと同様にUI上からの設定でアプリ開発が出来るサービスであるが、
- ネイティブのスマホアプリが開発出来る
- 外部APIは呼び出せるが、APIの公開は出来ない
- Bubbleの様にJobをスケジュール実行することは難しい
などの違いがある。
【サービス間の連携処理を提供しているもの】
IntegromatとはWebサービス同士を繋ぎ、連携させることができるサービス。
例えば
- 特定のGmailアカウントに送信されたメールの一覧をGoogleSpreadsheetに転記
- メールの添付ファイルをDropboxに自動保存
- APIを特定の時間にコールし取得したデータをJSON形式で保存
等、各サービスを連携させることが出来、しかも時間を指定しての実行やトリガー実行が可能だ。
また、これまでシステム開発の現場で各「基盤」として実装されてきた様な処理も簡単に実装することができる。もちろんこれら処理は全て画面上から設定することが出来、コードを書く必要は一切ない。
類似のサービスとしてZapierなどがある。
【特定の領域のみを提供しているもの】
WebflowはHPをコードを書くことなく作成できるサービスだ。
美しいtemplateが多数提供され簡単にHPを実装できる。
またCMS機能も提供されている。
類似のサービスとしてWixや日本のペライチが挙げられる。
さて、NoCodeで開発を行う場合は通常上記サービスを複数組み合わせて実装することになるだろう。例えばネイティブのスマホアプリを開発するとしてNoCodeサービスのAdaloを採用したとしよう。事前にバックエンド側でデータ取得・加工し準備しておきたいとの要件がある場合、残念ながらAdaloのみでは実装が難しい。Backend専用のNoCodeサービスBusyworkや前述のBubbleを使って実装し、JOBのスケジュール実行はIntegromatを利用してデータを準備、AdaloからAPIコールしてデータを表示という使い方になると思う。
この様な使い方はエンジニアなら特に違和感は無いはずだ。フロントにはフロント側の基盤があり、使われる複数の開発言語があり、バックにはバックの基盤および開発言語がある。
同じ様にNoCodeでも複数のサービスを組み合わせて、一つのシステムを形作っていくわけだ。
NoCodeの凄さとは?
ではNoCodeの何が凄いのだろうか。
それは 生産性が桁違いに高い ということである。
以下、実例を挙げて説明したい。
例えば 「Userテーブルに格納されているデータを一覧表示する」 ことを考えてみよう。
NoCodeサービスである「Adalo」を使う場合、
- Listコンポーネントを画面にDrag&Dropする
- Datasourceとして、Userテーブルを指定する
- List上の各表示項目にUserテーブルの項目をマッピングする
で完了だ。
NoCodeだけに全て画面上からクリックして設定するだけである。
画面上の項目を細かくカスタマイズしなければ、この 作業は1分ほどで完了する。 もし細かくカスタマイズしたとしても、大抵3分とかからないだろう。
これをプログラミングする場合はどうだろうか。
RailsでもDjangoでも良いが、Webアプリのフレームワークをイメージすれば画面周りの開発やDBからのデータ取得、ルーティングなど一通りの作業をすれば2〜3時間程度はかかることが想定されるだろう。もちろん開発に精通したエンジニアならもっと早く出来るかもしれない。そうであったとしても、たったの1分で完了するなんてことは絶対に不可能なはずだ。
この作業はNoCode(この場合はAdalo)に精通しているから1分で出来るのではない。多少の前後はあるにせよ操作を理解してしまえば、誰が行っても同様に1分以内で可能な作業なのだ。
データの表示だけではない。
小テーブルの詳細表示やデータ登録・更新・削除などのいわゆるCRUD処理、データ検索やAPIコールなども画面上の簡単な設定で完了してしまう。
とにかく圧倒的なスピードで開発を行うことができるのだ。
体感としてはこれまでのシステム開発スピードの少なくとも10倍は早いと感じている。
(Rubyが「Javaの10倍の生産性」などと言われたが、更に10倍という感じだろうか)
アプリを修正する場合もコンパイルなど必要なくすぐに実行可能なため「すぐ直して、すぐに実行して確認する」といったことも出来る。客先などでディスカッションしながら開発といったことが簡単に実施できるため、新規事業を作りたいスタートアップやアジャイル開発を行う現場では特に重宝するのではないだろうか。
また開発生産性が高いということは「コストを安く抑えられる」に繋げることが出来る。
この点についてもスタートアップには大きな利点となる。「MVP作成→市場調査→MVP修正」のサイクルうち、大きなウェイトを占めるであろう開発のスピードを上げられればそれだけコストを抑えられスタートアップが生き残る可能性は高まるだろう。
生産性の高さの理由は「コンポーネント」にある。
用途に応じて部品化された「コンポーネント」は既に呼び出せば良い状態になっており、必要最低限に「引数」を指定してあげれば良いというわけだ。
このコンポーネントはNoCodeサービスプロバイダーがテストを実施済みのもの(であるはず)なので、コンポーネントに対しては単体テストを細かく実施する必要も無い。
コンポーネント化により必要最低限の操作で済むということは、習得が容易である という利点に繋がる。
そう、NoCodeは圧倒的に習得が容易なのだ。
NoCodeサービスは「Web上でのGUI操作」で設定を行う。
そのためプログラミングを習得するのに必要な「記法を覚える」「ライブラリの使い方を理解する」などが必要なくなる。
選択するNoCodeサービスにもよるが、初めてNoCodeを使う場合でも2週間あれば十分開発がスタートできるレベルになる。勿論システム開発経験があれば、更に早く習得できるはずだ。
これは良いエンジニアの確保が難しくなってきている昨今の状況を鑑みるに非常に大きな利点である。
日本ではエンジニアスクールの話題を度々目にする。未経験者からエンジニアになる方も今まで以上に多くなっているかと思うが、それでも全世界の人口に占めるシステム開発技術者の割合はたったの0.3%と言われている。
仮に自社にエンジニアが居なかったとしても、空きリソースを活用して2週間ほどでNoCodeの開発者を育成することが出来るのであれば、これまでシステム開発に無縁だった中小企業でも十分その恩恵にあずかることが出来る可能性があるということだ。
もしNoCodeがどの様なものか広く認知される様になれば、これまでシステム化に無縁だった層にもシステム化による業務効率化が広まるきっかけになるかも知れない。
最後に
これまでNoCodeの利点をあげてきたが、NoCodeサービスはまだ発展途上であり課題もまだまだある。例えばアプリの処理パフォーマンスが問題になる場合、通常の開発であればコードレベルまでチューニングが可能であるがNoCodeでは難しいであろう。
また大規模開発(特に情報系システム)にありがちな大量データ処理(1日に数億件のデータをバッチ処理する)などはどこまで対応できるのか事例等の情報が無いため正直良く分からず、リスクを考えればNoCodeで実装しようとはとても思えないだろう。
それでもNoCodeの圧倒的な生産性などの利点はとても無視できるものではなく、扱うデータ量が少ないスタートアップや中小企業を中心に利用が進んでいくものと思われる。
今後開発事例の蓄積が進み徐々にエンタープライズ向けのニーズが高まっていけば、自ずとサービス自体もより進化していくのではないだろうか。
NoCodeは
- 開発のスピードが格段にあがる
- 開発コストが劇的に下がる
- システム開発の裾野が大きく拡がる可能性がある
ことから、これまでのシステム開発というものを様々な面から根本的に変えるほどのインパクトがあると考えている。
もし貴方がエンジニアであれば、今後の本格的な普及前にNoCodeがどんなものか確認しておくのも良いかも知れない。
Discussion