関連するソリューション
システム開発
先端技術部
テクニカルスペシャリスト 黒住 好忠
こんにちは。テクニカルスペシャリストの黒住です。
最近では「ローコード開発」の注目度が急上昇しており、数年後には「アプリケーション開発の半数以上がローコード開発になる」という衝撃的な予測結果も出ていたりします。
Googleトレンドで調べてみても、2020年度を過ぎたあたりから「ローコード開発」の検索トレンドが大きく伸びており、その注目度が見て取れると思います。
そこで今回は、そもそも「ローコード開発」とは何なのか・・・?という内容から始まり、ローコード開発を使う前に知っておきたい「ローコード開発の落とし穴」について紹介したいと思います。
ローコード開発って何?
まずは「ローコード開発」とは何なのかについて、お話ししましょう。
ローコード開発を一言で簡単に説明すると「最低限のコーディングでアプリケーションを開発できる」ものになります。通常であれば、アプリケーション開発に大量のコーディングが必要になるのですが、ローコード開発を採用すれば「コーディング量を大幅に減らす」ことができます。
少ないコードで開発できるので「Low-Code:ローコード」と呼ばれているのです。簡単ですね。
ローコード開発の特徴
「最低限のコードで開発できる」ことがローコード開発の大きな特徴なのですが、実はそれ以外にも「多くのローコード製品が併せ持っている特徴」がいくつかあります。これらの特徴も、ローコードを語る上では非常に重要な要素になるので、ご紹介しましょう。
既存部品を組み合わせて開発できる
ローコード製品の多くは、利用頻度の高い機能が「既に完成した部品として提供」してあります。そのため、レゴブロックを組み合わせていくような感じで、用意されている部品を組み合わせていくだけでアプリケーションを作成できます。
もちろん、提供されている部品だけでは「一部の機能が実現できない」ケースも出てくるため、その場合は「足りない部品を自分で作る」ような作業も必要になります。
分かりやすい画面操作で開発できる
これまでの開発であれば、プログラミングの知識がある人しか理解できない、コーディング作業が開発の中心になっていましたが、ローコード開発では「誰でも見て分かりやすい画面操作」で作業できるケースが多くなっています。
ブラウザを使ってインターネットを見るような感覚で、画面上に表示された部品を、マウスを使ってドラッグ&ドロップで組み合わせたり、必要な情報を画面上から設定したりすることが可能なので、アプリケーション開発のハードルを下げることができます。
ローコード開発の何がうれしいの?
ローコード開発の特徴として「最低限のコード」、「既存部品の組合せ」、「分かりやすい画面」の3つをお伝えしましたが、では、「ローコード開発」を取り入れると、何がうれしいのでしょうか?
ここでは「ローコード開発」を採用することで得られるメリットについて、ご紹介したいと思います。
早い・安い・高品質!
ズバリ、ローコード開発を採用すると、これまでと比べて「素早く、低コストで、高品質」なアプリケーション開発が可能になります。
ローコード開発では「最低限のコード」で「既存部品を組合せ」た開発が行えるので、開発期間の短縮や、コストの削減が可能になります。また、既存部品は十分にテストされた状態で提供されており、セキュリティに対する対策も行われているため、高品質で堅牢なセキュリティを担保したアプリケーションが作りやすくなっています。
昨今ではDX推進の流れもあり、変化への迅速な対応も求められていることから、素早く対応できる「ローコード開発」に、より一層の注目が集まっているというわけですね。
ローコード開発の落とし穴!
このように、非常に魅力的に見えるローコード開発ですが、実は「大きな落とし穴」があります。
そのことを知らずにローコード開発に手を出してしまうと、取り返しの付かない、重大な問題を引き起こしてしまうかもしれません。
そこで、ローコード開発を行うにあたり「特に注意しておきたい落とし穴」についてお伝えします。
落とし穴!やりたいことが実現できなかった!
アプリケーションを開発すると言うことは、何か「やりたいこと」があって、それを実現するためにアプリケーションを作成しているはずです。
しかし、ローコード開発では「やりたいことを実現できない」可能性があります。どんなに早く、低コストで開発できたとしても、本来やりたいことが実現できないようであれば、何の意味もありません。
ローコード開発は「最低限のコードで、既存部品を組み合わせて開発」できる反面、その仕組みを実現するために「色々な制約」が存在しており、何でも実現できるわけではないのです。つまり、最初から用意されている部品や機能を組み合わせて開発する場合は良いのですが、それ以上のことを実現しようとすると、そもそも「提供されている機能では実現できない」というケースが出てきます。
特に実際の業務で使うような大規模なシステムになってくると、必ずと言っていいほど「ローコード製品の標準機能だけでは実現できない」要件が出てきます。
落とし穴!データの収拾が付かなくなった!
ほとんどの会社にとって、最も大切な資産の一つは「情報」、つまりデータではないでしょうか。
アプリケーションであれば外部から調達してくることも可能かもしれませんが、企業活動によって蓄積してきたデータは、そこでしか手に入らない非常に重要なものになります。
そのような大切なデータが、「ローコード開発で壊れる可能性がある」としたら、どうでしょうか。
ローコード開発では、誰でも比較的簡単にデータの定義が「できてしまう」のですが、実際、「きちんと適切に」データを管理するためには、データ設計やデータモデリングの知識が必要不可欠になります。
簡単にデータ定義ができるからと言って、なんとなくデータ定義を行ってしまうと、蓄積していくデータが煩雑になり、拡張性の低下やパフォーマンスの悪化、最悪のケースとして、データ不整合による「何が正しい情報なのか判断できない状態」、つまりデータが壊れている状態が発生してしまうのです。
しかも、厄介な事に「データに関する問題点は、作った直後ではなく、後になって発覚する」場合が多いと言うことです。つまり、気づいたときには、既に手遅れ・・・という事になります。
どうすれば、落とし穴を回避できるの?
では、どうすればローコード開発で、「やりたいことを実現」して、「データもきちんと管理」できるのでしょうか。
結論を先に言ってしまうと、ローコード開発を成功させるためには「ローコード開発の専門知識が必須」になるという事です。ローコード製品の宣伝では「誰でも簡単に開発できる」とか「簡単に使えて内製化もできます」・・・というキーワードも見かけるのですが、ローコード開発を「正しく適切に」使うためには、それなりの専門知識が必要になるのです。
ローコード開発に必要な専門知識
もう少し具体的に言うと、ローコード開発には、以下2つ、あるいは3つの専門知識が必要になります。
- ローコード製品に関する知識
- 場合によってはプログラミングに関する知識
- データ設計・データモデリングに関する知識
まずは、利用するローコード製品に特化した知識です。利用するローコード製品で「できること/できないこと」をきちんと把握しておく必要があります。また、製品によって、効率よく開発するための「お作法」のようなものが存在するので、実際の開発をする上では、製品ごとの「癖」のような部分も押さえておいた方が良いでしょう。
そして、ローコード開発で「実現できない」要件が出てきたときの対応として、通常は「諦める」しかないのですが、もしプログラミングの知識があれば「足りない機能だけをスクラッチ開発して組み合わせる」という事が可能になります。実際の業務システムでは、ローコード製品の機能だけでは実現できない要件が発生するケースも多いため、ローコードの恩恵を受けつつ、ローコードでは実現できない部分もカバーするためには、プログラミングの知識も必要になってきます。
最後に、データ設計・データモデリングに関する知識です。この知識は、データを適切に管理し続けるために必要な知識ですが、専門性が求められる分野であり、スキル習得までのハードルも高くなります。
ローコード開発のアウトソースもお勧め
このように、実際のローコード開発を想定した場合、それなりの専門知識が必要になることが分かっていただけたかと思います。
しかし、専門知識を習得するためには、多くの時間が必要になります。ローコード製品の知識だけであれば、習得は比較的容易かもしれませんが、プログラミングやデータ設計・データモデリングとなると、数年レベルでの学習や経験が必要になります。
もし、専門知識の習得無しで「今すぐにでも、ローコード開発を行いたい」と思われている場合、「ローコード開発のアウトソース」をお勧めします。
きちんとしたローコード開発経験のある会社にアウトソースすれば、前提となる専門知識なしで、すぐにでも「ローコード開発のメリットを享受」できます。さらに、スクラッチ開発も行える会社であれば、「ローコード開発だけでは実現できない部分も、スクラッチ開発で柔軟に対応」できるため、ローコード開発とスクラッチ開発のメリットを組み合わせたハイブリッドの開発が可能になります。
もちろん、データ設計やデータモデリングもしっかり行われるため、将来にわたって、安定的に利用できる健全なシステムが構築できます。
少し宣伝させてください・・・
実は、弊社「インフォメーション・ディベロプメント」は、ローコード開発においても、スクラッチ開発においても、多くの経験と実績があります。そして、ローコード製品のドキュメントには書かれていないような、製品独自の「お作法」に関する知見もあります。もちろん、データ設計やデータモデリングに関しても、数多くのプロフェッショナルが揃っています。
また、アプリケーション開発だけではなく、システムを動かすインフラ周りから、運用に至るまで、業務システムに必要な幅広い領域をカバーしているので、さまざまなニーズにお答えできると思います。
もし、ローコード開発を取り入れてみたいな・・・と思っていたり、システム開発に関するお悩み等々ございましたら、是非、お気軽に声をかけていただければと思います。
弊社お勧め、WebPerformer
さて、話を戻しまして、最後にローコード開発に使う「具体的な製品」についても触れておきたいと思います。
ローコード開発を行うための製品は、国内外を含め数多く存在しています。それぞれの製品ごとに特徴があり、適している分野や、メリット/デメリットも異なります。
そんな中で、我々が「日本企業の業務システム開発向け」にお勧めしているのが、キャノンITソリューションズ様で開発している「WebPerformer(ウェブパフォーマー)」という製品です。
ここが凄いよ、WebPerformer
WebPerformerには数多くの機能や特徴が存在するのですが、その中でも「企業のシステム開発」向けに優れている点をいくつか紹介したいと思います。
裏側はJavaで動いている
ローコード製品の中には独自の開発言語を使っていたり、ブラックボックスに包まれていて何で動いているのか分からないケースもあるのですが、WebPerformerはJavaで動いています。
日本の業務システムの多くはJavaで開発されているので、既存システムとの親和性も高いというメリットがあります。(もちろん、Java以外で開発されたシステムとも連携可能です)
また、Javaは要員の確保が容易にできるという点でも、他の言語と比べて優れています。
WebPerformerの機能だけでは実現できない要件があったとしても、多くの人が知っている言語を使って、機能の拡張が可能になります。
サポート体制が充実している
WebPerformerは日本企業のキャノンITソリューションズ様で作成されているため、サポート体制がしっかりしています。
この点は、あまりメリットに感じないかもしれませんが、業務システムにおいては非常に重要なポイントになります。実際のローコード開発を行っていると、「どうしても分からない技術的な問題」が時々発生します。
このような場合でも、迅速にしっかりとした連携ができるという点は、大きなメリットになります。
プラットフォームに依存しない
WebPerformerを使って開発したシステムは、プラットフォームに依存しません。つまり、自社サーバのオンプレミス環境であっても、AWSやAzureなどのクラウド上であっても「どんな場所でも動く」という事です。
※ただし、動作環境で利用するソフトウェア等の組合せは無限大に近いため、事前に検証済みの環境以外では「公式な動作保証」は得られないので、少し注意が必要です。
企業のシステムでは、扱うデータの機密性なども多種多様で、場合によっては「外部には公開せず閉じた環境で使いたい」とか、「プライベートクラウドで動かしたい」とか、「パブリッククラウドに載せたい」など、それぞれの事情に応じた要望が存在します。
ローコード製品の中には「開発も実行も、全てクラウド上の決められた環境でしか動かない」というケースも多いのですが、WebPerformderの場合は、どこでも動かすことが可能です!
更に、実際には起こりえないとは思いますが、キャノンITソリューションズ様や、WebPerformer自体が無くなったとしても、WebPerformerを使って作ったシステムは「その後もずっと動かし続けることができる」のです。
これは、企業のシステムが特定のベンダーに依存しない、つまりベンダーロックを避けられるという点でも大きなメリットになります。
最後に
今回は「ローコード開発」についてお伝えしてきましたが、いかがでしたでしょうか。
これから更に増えていくと思われる「ローコード開発」について、その特徴や、裏側に潜む落とし穴について、何か1つでもお役に立てる情報があれば幸いです。
正しい知識を持って、正しくローコード開発を活用すれば、大きなメリットを享受できるようになります。これからのシステム開発を考える上では、ぜひローコード開発も候補に入れて検討してみてくださいね。
それでは、また次回のコラムでお会いしましょう。
当サイトの内容、テキスト、画像等の転載・転記・使用する場合は問い合わせよりご連絡下さい。
エバンジェリストによるコラムやIDグループからのお知らせなどを
メルマガでお届けしています。