ローコード開発ツールの適用基準を考える
こんにちは、システムエンジニアのようへいです。
最近、OutSystemsやMagic、Wagby、Power Appsといったローコード開発ツールの提案場面を社内・社外問わずよく見かけます。
ローコード開発(low-code development)というのは、専用の開発ツールを使って、できる限りコードを書かずに短期間でソフトウェアを開発する手法です。
従来の全てのコードを書いていくスクラッチ開発と比べ、うまくハマれば大きく工期、費用を削減できるものです。
開発者もエンドユーザーも願ったりかなったりのツールのように考えられますが、どうもそうじゃない(ような気がしています)。
失敗プロジェクトが目立つというかなんというか・・・・。
この記事では、ローコード開発がどういう場面の案件に有効か、失敗する理由は何かについて考えていきます。
ローコード開発ツールとは?
プログラミング経験がない人でもアプリケーションを簡単に開発できるツールのことです。
簡単な内容であれば、マウスをポチポチするだけでサクっとアプリが作れてしまいます。
ローコード開発ツールの主なメリットは以下の通りです:
プログラミング能力がなくてもアプリ開発ができる。
プログラムを書かずに視覚的な操作でアプリケーションを構築できる。
作った定義に従ってコードが自動生成されるので、コードの品質が安定している。
修正が容易で保守性が高い。
開発コストを大幅に削減できる。
ツールによっては、ツールにバージョン管理機能が備わっているので、Gitなどのバージョン管理ツールを導入しなくて済む。
ローコード開発ツールを使えば、ベンダーやIT部門に依頼しなくてもユーザー部門で必要なアプリを素早く開発することが可能になります。
協力相手を少なく、そして素早く開発できるので、開発費用の削減に貢献できます。
また、アジャイルな開発ができるので、ビジネスニーズに迅速に対応できるというメリットがあります。
まずは小さく作り、ニーズに応じて徐々に成長させていく。
そんな開発スタイルがユーザー部門の中で行えます。
ただし、デメリットもあります。
高度な処理や複雑なアプリケーションの開発には向いていない。
開発ツールで実現できることがシステム化の限界点。セキュリティ面の配慮が甘くなりがち。
開発者のスキル向上につながりにくい。
なぜなら、ツールの操作スキルは上がっても、プログラミングスキルにはならない。ある程度の操作習熟が必要で、教育コストがかかる。
一応、エンドユーザーでも開発できると言われていますが、複雑なことを実現にはエンジニアの専門知識が必要です。
つまり、
開発ツールの操作を覚えれば、簡単なアプリは専門知識無く、誰でも素早く簡単に構築することができます。
ただし、実現できる要望の範囲は開発ツールで実現できることに限られます。
また、高度な要望は、カスタマイズという形で実現することが可能ですが、これにはプログラミングスキルが必要になります。
スクラッチ開発との比較
開発方法の違い
ローコード開発は、GUIベースのツールを使ってアプリケーションを視覚的に構築し、それに従ってプログラムが自動生成されます。
スクラッチ開発は、プログラムを全て手書きで記述する開発手法です。
開発工期の違い
ローコードはプログラムの手書きが無い分開発スピードが速く、開発者の生産性が高いです。
スクラッチ開発は、プログラムを全て手書きする分、開発に時間がかかります。
開発スキルの違い
ローコードは、システム知識が少ない人でも開発できるのが特徴です。
スクラッチ開発はより高度なプログラミングスキルやデータベース、システムデザインスキルなど、幅広い専門知識が必要です。
要件実現性の違い
ローコードは実現できる要件が、その開発ツールで対応している機能に限定されています。
つまり、実現できることが限られています。
カスタマイズをすれば、高度な要件も実現可能ですが、開発ツールによりカスタマイズの可否、やりやすさは変わります。
スクラッチ開発はプログラムを手書きするという特性から、高い実現性があります。
実現できない要件は無いくらいです。
稼働環境の違い
ローコードはクラウドベースで稼働します。
スクラッチ開発はクラウド、オンプレミスでの稼働が選択できます。
近年は、スクラッチ開発でもクラウド上での稼働が多い傾向にあります。
稼働費用の違い
要件によるので一概にこうだとは言い切れない部分がありますが、ローコード開発はスクラッチ開発よりも工期が短い分、開発費用を抑えやすいです。
ローコード開発ツールが有用な場面
そんな特性のあるローコード開発ツール。
さて、どんなシステム開発と相性が良いでしょうか?
エンジニアからエンドユーザーへの提案には、以下の条件が揃えば提案できると思います。
開発スピードが重要で、シンプルな業務要件の場合
工期が数ヶ月しか与えらないが、いたってシンプルな業務要件の場合、ローコード開発ツールが真価を発揮する可能性が高いと言えます。
業務要件がシンプルな場合、ローコード開発ツールでも十分実現できる可能性が高いです。
ローコード開発ツールだけで開発が可能であれば、工期も大幅に短縮可能で、スクラッチ開発では厳しい工期でも開発を進めることができます。
開発コストの大幅な削減が必要な場合
エンドユーザー側のシステム開発のミッションに「開発予算低減」があるならば、ローコード開発ツールを提案する価値があります。
うたい文句はこんな感じ。
ローコード開発なら予算低減化は図れます。
ただし、できることは開発ツールの実現範囲に限られる可能性はあります。
ローコード開発ツールの失敗事例とその原因
ローコード開発ツールは良さそうなツールに見えますが、開発条件が合わないとプロジェクトが失敗するリスクが高いです。
どんな失敗があるのか、何個か例を挙げてみます。
要件が実現できない
致命的な失敗です。
ローコード開発ツールは手軽に開発できる分、複雑なビジネスロジックを実装するのが難しい場合があります。
提案前に、十分な要件分析とツールの制限を理解することが重要です。
開発中に、実は標準機能では実現できず、カスタマイズが必要でした。ということがないようにしましょう。
マストな要件が実現できなかった場合、開発中止という最悪な結果に繋がります。
カスタマイズで開発費用がかさむ
標準機能で実装する場合はコスト削減は実現できますが、カスタマイズを加えることで、一気に開発費用が増大する傾向にあります。
カスタマイズのやりにくさも相まって、結果、スクラッチ開発の方がトータルコストが安かった、という場合もあります。
ローコード開発ツールでできることと要件についてFitGap分析を行い、カスタマイズするシステム機能についてはしっかりとカスタマイズ費用を計上し、トータルの開発費用を合意することが大切です。
カスタマイズも見込んだ見積もりが出せなければ、赤字プロジェクトになる可能性があります。
ローコード開発技術者の体制を組んでいない
ローコード開発を軽視すると痛い目にあいます。
ローコード開発ツールには、独特の考え方やスキルが必要です。
誰でも作れるというものの、それは学習ができている前提です。
カスタマイズをする場合、更に深い知識が必要です。
こういう前提を無視し、ローコード開発だから誰でもできるはず、という思いで取り入れてしまうと、納期には間に合いません。
人材育成を計画に入れるか、事前に養成しておくことが必要です。
まとめ
失敗理由をまとめます。
ローコードツールの能力や制限を十分理解していなかった
要件を不十分に分析し、ツールが対応できない複雑な要件が含まれていた
ローコードの開発/カスタマイズが難しく、思ったよりコストがかかった
チーム内にローコードツールの経験が不足していた
さいごに
ローコード開発ツールは生産性を大きく上げ、工期・コストの削減に大いに役立ちます。
その反面、実現できることに制限があったり、ツールの理解不足により受注者側が損する場合もあります。
ローコード開発ツールをしっかり活用するには、
ツールを理解すること
要件とFitGap分析をすること
カスタマイズするポイントを洗い出し、費用計上すること
ローコード開発技術者を体制に組んでいること
が必須条件となります。