ローコードとノーコードとプロコード
さて今回はシステム業界を席巻中の「ローコードとノーコード」について私見を述べさせて頂きます
一般的に難易度はプロコード>ローコード>ノーコードという順番となり、実現の自由度もこの順番になります
ノーコードは「SalesForce」や「Kintone」が最近よくCMで観ますね(WBC侍JAPAN優勝おめでとう!)
プログラミング未経験者であっても(主に自身の業務について)システムを構築できる、ここには間違いはありませんしシステムベンダーもそこを推します
この部分については私も同意見です
が、企業の悩みの種であるシステム導入がノーコードを導入すればすべて解決かと言うとそう簡単な話でもありません
別にこれは「うまい話には必ず裏がある」などと言う事ではなく、システム構築には「コードを書けるかどうかより大事なスキルがある」という事です
まず「データの正規化」です
詳しい説明は省略致しますが例えば社員台帳を作成しようとしたとしましょう
普通は社員台帳というテーブルを作りますよね、そこに更に「資格」を管理したいとなった場合どうするでしょうか
正規化を意識しなかった場合社員台帳に項目を追加します
プロは資格管理用のテーブルを用意しリレーションさせます
なぜかと言うと社員台帳と資格台帳ではレコードの単位が異なるからです
一般的に社員台帳の単位(キーとも言います)は「社員番号」、資格台帳の単位は「社員番号」「資格の種類」になると思います
システム構築のためにノーコードを導入し社内SEが居なかった場合このような設計になる可能性があるので注意が必要となり、後々の改修や拡張の時に大きな改修をしなければならなくなります
次に問題となるのが「システム構築の統制です」
一人で構築している場合は退職や長期離脱時の引継ぎやドキュメント作成、複数人で作成している場合は作成時のルールなどの徹底が必要となります
「そんなの当たり前だろ」と思われるかも知れませんが、これが意外とできません。なぜなら「構築を優先する意思決定者」が存在するからです
元々ノーコードと言うのは「素人でもシステム構築ができる」というのが謳い文句です、そこは間違いがありませんがプロコードと違いシステム構築時から利用料金が発生します。
「素人でも構築できる」=「簡単なはず」ならばすぐ使えるようなものができるはずだ、と考えてしまうのではないでしょうか?
そこで後回しにされやすい「ルール」や「ドキュメント作成」が統制されないというのが意外と多いのです
その状態でシステムのノウハウが継承されなかった場合どうなるか・・・?
システムベンダーに泣きつく事になります、実際システムベンダーも従来のプロコードの構築よりノーコードのサポートの方が利益が出るのかそちらにシフトしつつあるように見えます
最後は「ベンダーロックイン」です
「素人でもシステム構築ができる」とは裏を返せば「作りたいものを自分たちで作れる」という事です。前述の無統制状態で作った場合機能が重複したものや業務が変わり不要になったもの、合わなくなったものが出てきます
作った(中身を理解している)人が居るなら大した問題になりませんが、継承されなかった場合不要なものがどんどん積み重なっていきます
「そんなの整理すればいいだろ」と思われるかも知れませんがそれは往々にしてできません、なぜなら「削除していいか分からない」からです
ノーコードは作った物に対して課金される物もありますので無駄なコストもかかりますし、いざノーコードより良い物が出てきた場合移管もままなりません
するとどうなるか・・・?
またまたシステムベンダーに泣きつく事になります、止めたくても止められないのが「ベンダーロックイン」です
最後に
リスク的な事ばかり書きましたが最初に申し上げた通り「素人がシステム構築できる」は正しいです、ただあくまでツールですので「入れて終わり」ではありません、そこをきちんと理解した上で導入を決めて頂きたいと思います
システムを絵に例えると「このツールを使えばだれでも絵が描けます」ということ「絵を描く」のと「上手な絵を描く」は別のスキルという事です
ご参考になれば幸いです
【今回の単語の説明】
・プロコード : 昔からあるプログラミング言語(c言語とかVisualBasicとかPythonなど)を指します、プログラムやアプリは大体プロコードで書かれています
・ローコード : プロコード程ではないけど補足程度にコードを記述する物を指すようです、実はプロコードも画面のデザインなどは部品を配置しその「動き」をコードで記述するためプロコードとローコードの境目は非常に曖昧な気がしています、どちらかと言うとプロコードを使ってた人の負荷を軽減するのが目的と認識しています
・ノーコード : 全くコードを書かないというのが直訳ですが、「どこまでがコードなのか?」という境界線がこれまた曖昧なので、定義的には「プログラマーでなくてもシステム構築ができます」という定義だと理解しています、後述しますがこれについては異論はありません
・テーブル : 項目の集合体を指します、履歴書がテーブル、氏名などが項目です
・リレーション : テーブル同士を結び付ける事です、結び付けるためには「キー」と呼ばれる共通の項目が必要となります。本文の事例だと「社員番号」がキーになります
・レコード : データの事(1件のこと)を指します