1.Low-Code Platformとソフトウェア開発内製化
ソフトウェア開発内製化とは、従来ソフトウェア開発を外部に委託していた企業において、ソフトウェア開発を自社で行うようにすることです。近年、新規構築するソフトウェアは内製開発するなどで内製化を取り入れる企業が増えています。この背景には、DXが急激に加速しているなどのVUCA時代であることが挙げられます。何が起こるかの予測が難しい世の中においては変化に素早く対応する必要があり、ソフトウェア開発には高いアジリティが求められるのです。内製開発ではステークホルダー間のコミュニケーションや意思決定を自社内で完結できるため、開発のスピードアップに伴うアジリティの向上が期待できます。
ではソフトウェア開発内製化を推進するために、各企業においてはどのようなことを検討する必要があるでしょうか?さまざまありますが、本稿では次の2点の検討事項に焦点をあてます。
- 高いアジリティを実現できる開発手法の選定
- IT人財の確保
アジリティの向上を期待して内製化を推進しているにもかかわらず、開発手法に問題があって開発速度が低下するようなことがあってはなりません。また、IT人財は高度なスキルが求められます。高いプログラミングスキルがあるといったIT技術力だけではなく、問題や課題を正確に把握し、解決策をソフトウェア設計まで落とし込む力やステークホルダーを巻き込んでソフトウェア開発を推進するプロジェクトマネジメント力も必要です。ソフトウェア開発内製化というDXの取り組みを推進することから、IT人財よりもDX人財と呼んでもよいでしょう。
これらの検討事項の解決策としまして、Low-Code Platform(以下、LCP)を用いたソフトウェア開発内製化が注目を浴びています。LCPとはソフトウェア開発ライフサイクル全般をサポートするプラットフォームで、アプリケーションを視覚的に開発できるようになります。それでは、LCPが上記の2点の検討事項に対してどのような価値を提供するかを説明します。
(1)高いアジリティを実現できる開発手法の選定
ソフトウェア開発では、「開発環境を用意する」、「本番運用環境を用意する」、「設計書を元にソースコードを書く」、「ソースコードを実行可能なアプリケーションに変換する」、「アプリケーションを開発・本番運用環境で実行する」、「アプリケーションを監視する」、などのことを実施します。LCPはこれらを実行する機能を提供しますので、ソフトウェア開発ライフサイクルの一連の流れをLCPだけで実現できます。そして、LCPが提供する各機能は自動化されており、アジリティを高めることができるのです。
図1:LCPの機能と構成要素
(2)IT人財の確保
従来の開発ではプログラミング言語やフレームワーク、クラウドサービスなどさまざまな技術を組み合わせる必要がありました。しかしLCPを採用すると、採用したLCP製品のことだけを学べば最低限のソフトウェア開発できるようになります。そのためさまざまな技術や、それらを組み合わせる方法を学ぶことと比較すると、習熟難易度が下がります。近年の需要高騰に伴い高度なスキルを持ったIT人財の確保は難しくなっていますが、習熟が比較的容易であるLCPを活用したDXを推進できる人財を育成することで、IT人財を確保しやすくなるでしょう。
2.内製開発の落とし穴3選と解決方法
前章ではソフトウェア開発内製化に取り組む企業において、2点の検討事項に対してLCPが解決策になり得ることを説明しました。ただし、残念ながら簡単には「LCPを用いてソフトウェア開発内製化に取り組み、確保したIT人財で高いアジリティを実現できた」とはなりません。LCPは便利である反面、各LCP製品の特徴を正しく理解し、適切に利用する必要があります。本章では内製開発で陥りがちなポイント3点を紹介します。また、LCPの製品ごとに方法は異なりますが、本稿ではOutSystems(※1)を例に解決方法についても説明します。
(1)ITガバナンスについて
LCPではアプリケーションを簡単に作成できますが、その反面でアプリケーションの管理が行き届かなくなる可能性があります。次の事例を見てみましょう。
表1:ITガバナンスに関する事例
事例1 | 各メンバーが個人的な検証目的でアプリケーションを作成しました。そのアプリケーションは検証が終了したら削除する想定でしたが、削除を忘れて放置してしまいました。各メンバーがこれを繰り返し、用途が不明なアプリケーションで溢れかえって環境メンテナンスの工数が増えてしまいました。 |
---|---|
事例2 | 秘匿性の高い情報を扱うことから、会社の中で特定の部署のメンバーのみ開発可能なアプリケーションがありました。しかし、他の部署の参照不可を想定していたメンバーも閲覧できるような形で開発をしていました。 |
これらの事例はLCPを利用する際の管理が行き届いていないために発生したものであり、LCPを利用するためのルールの制定や、役割に応じた適切な権限付与が重要です。
OutSystemsにはITガバナンスを効かせるための機能が提供されています。例えば、開発者の役割に応じて7段階の権限レベルを付与(※2)できます。また、特定のアプリケーションは特定のメンバーのみ開発可能とするような権限の付与も可能です。利用ケースに応じて適切にOutSystemsの設定変更をするようにしましょう。
(2)非機能面の品質について
従来の開発ではアプリケーションリリースまでに、求められている品質を作り込む、品質が作り込まれているかをテストで確認する、の2段階で品質保証をしていました。この品質保証のプロセスはアプリケーションの重要度によって粒度は異なりますが、なくなることはありません。内製開発においては品質の中でも非機能面について、落とし穴にならないように注意が必要です。次の事例を見てみましょう。
表2:非機能面の品質に関する事例
事例3 | セキュリティ上の理由で特定の人のみ利用可能としたいアプリケーションを開発しました。しかし、アプリケーション実装の問題で想定外の人まで利用できるようになっていました。 |
---|---|
事例4 | 性能目標について、アプリケーション実装の問題で実現できず、リファクタリングが必要になりました。 |
これらの事例は非機能面での高い品質が求められるにもかかわらず、セキュリティや性能について考慮せずに実装したために発生したものです。
OutSystemsではセキュリティやパフォーマンスを実現するための仕組み(※3)が提供されています。しかし、実装方法を誤るとリスクを生じる可能性はあります。そこで、OutSystemsでは品質の高いアプリケーションを作るためのノウハウをベストプラクティス(※4)として公開しています。高い品質が求められるアプリケーションを開発する場合はベストプラクティスを理解したメンバーの元での実施が望ましいでしょう。
(3)短期間で完全に内製化できるようになるのは難しい
これまでの説明で「LCPは便利だけど、覚えることが多そうだ」と思われた方もいるかもしれません。LCPにはソフトウェア開発をするためにさまざまな機能が提供されています。
例えばOutSystemsでは、Webアプリケーションに加えてモバイル向けアプリケーションも作成できます。OutSystems以外のシステムとの連携も可能です。他にも多数の機能があります。ただし、OutSystemsを始めてすぐに全ての機能を使おうとすると、成果が出るまでに時間がかかる可能性があります。内製化で最初に作るアプリケーションはOutSystemsの基本的な機能だけで実装可能なユースケースを選定して、開発実績を作り、徐々に難しいアプリケーションに挑戦するようにしましょう。内製化を定着させるためには、中長期目線での内製化ロードマップを描き、段階的に進めていくことが望ましいです。
図2:内製化ロードマップのイメージ
https://success.outsystems.com/ja-JP/documentation/best_practices
3.NTTデータのOutSystemsに関する取り組み
NTTデータはServiceNowやSalesforce、Microsoft、Pegasystemsなど、さまざまなLow-Code関連製品を扱っている企業のパートナーです。本稿で例に挙げましたOutSystemsについてもNTTデータはグローバル各リージョンでパートナー企業(※5)であり、日本でもOutSystemsサブスクリプションの販売からシステム開発、内製化支援まで行っております。前章で紹介しました(1)~(3)の落とし穴に対しては次のようなサービスを提供しております。
(1)ITガバナンスについて
- 各企業のルールにあわせたOutSystems環境の利用ルール策定支援
- 利用ルールに応じたOutSystems環境の管理支援
(2)非機能面の品質について
- OutSystemsプロフェッショナルによる技術支援(実装レビュー/テクニカルQA)
(3)短期間で完全に内製化できるようになるのは難しい
- 内製化戦略策定支援
- 育成計画策定支援
- 研修
- マンツーマンコーチング
NTTデータはこれらのサービスを通じて、お客さまのソフトウェア開発内製化によるDX実現をサポートしていきます。NTTデータのサービスや、OutSystemsなどのLow-Code関連製品にご興味のある方は、下部の「お問い合わせ」ボタンよりご連絡ください。