第1回から第4回までの連載ではコーディング、テスト、基盤構築・デプロイの自動化についてそれぞれ解説してきました。
4つの自動化領域
No | 対象領域 | 内容 |
---|---|---|
1 | コーディングの自動化 | 複雑・多様なロジックの自動生成 |
2 | テストの自動化 | 試験項目の自動生成と自動実行 |
3 | ビルド・リリースの自動化 | ビルドやテスト環境へのリリースの自動化 |
4 | システム基盤構築の自動化 | システム基盤の自動インストール・設定 |
各領域で自動化開発の技術が発展する一方で、これらの自動化要素を集約したようなLow- Code Platform(ローコードプラットフォーム。以下、LCP)と呼ばれるものが登場し、従来のソフトウェア開発のスタイルを大きく変える動きが現れています(連載第1回「次のトレンドは」参照)。
今回はLCPの機能的な特徴と、LCPがもたらすソフトウェア開発の変化にフォーカスし解説します。
Low-Code Platfromとは
LCPは、自動化技術によりコーディング量を極限まで減らし、高生産性を実現するためのプラットフォームです。
LCPでは、GUI操作により、視覚的に画面、データ、ロジックといったアプリケーションを設計(モデリング)します。また、クラウドやDevOps環境を前提としており、定義したモデルから瞬時にソースコードを生成、ビルドし、クラウド環境へデプロイすることができます。
これにより、業務要件の妥当性や実装との整合性などを動作可能なアプリケーションで容易に確認ができます。近年さまざまなLCP製品が登場しています(下表)。
代表的なLow-Code platformの製品
No | 製品名 | 概要 |
---|---|---|
1 | OutSystems | LCPを代表するツールの1つ。 ビジネスプロセス、UI、ロジック、データモデルなどのモデリングに加え、プロジェクト管理や分析など、他の多くのサービスを提供する。幅広いDevOpsスタックもサポートしている。 世界中に大規模な顧客基盤を保持している。 https://www.outsystems.com/ |
2 | Mendix | クラウドネイティブのアーキテクチャを採用するLCP。 モデリングによるアプリケーション設計に加え、専門知識を備えた開発者が補完して拡張するための統合開発環境を提供しており、Docker / Kubernetesといったコンテナアーキテクチャもサポートしている。 SAP、IBMとパートナであり、販売チャネルの強みをもつ。 https://www.mendix.com/ |
3 | Appian | BPMとユースケース管理機能に強みを持つLCP。 プロセス中心 / データ中心の両方のアプローチでの開発機能を提供する。 意思決定管理、アプリケーションライフサイクル管理などを備えaPaaSとBPMの統合機能の提供を実現している。 多数のシステムインテグレーターと協力して事業を強化している。 https://www.appian.com/ |
4 | ServiceNow | ITサービス管理(ITSM)ソリューションを起源とするLCP。 Low-Codeだけではなく、No-Codeも謳っており、それぞれ個別のGUI開発環境を提供している。作業フローやシステム統合機能に加え、自動テストフレームワークとセキュリティテストなどの機能も備えている。 チャットボット、AI、モバイルなどの高度な機能拡張の方針を出している。 https://www.servicenow.co.jp/ |
5 | Salesforce | クラウドコンピューティングのパイオニアでもあり、CRMパッケージを起源とするLCP。 SalesforceのApp Store(AppExchange)には、3000以上のサードパーティアプリケーションサービスがある。 https://www.salesforce.com/ |
Low-Code Platformの特徴
LCPの製品は前述のようにさまざまですが、以下のような共通する特徴があります。
- 視覚的なモデリング
- 開発・テスト・運用環境へのデプロイと監視
- シームレスな開発の実現
- 構成管理、コミュニケーションのサポート
- マーケットプレイス
1. 視覚的なモデリング
LCPの大きな特徴はGUI操作により、特定の言語知識に依存せずにアプリケーションの設計を進められる点です。
例えば画面を設計する場合、必要な画面部品(テキストフィールドやチェックボックスなど)をレイアウト領域にドラッグ&ドロップしていくことで画面を設計することができます。同様にロジックの設計も、処理の部品(画面項目の入力チェックやデータベースアクセスなど)を選択し、それらをフロー図形式で繋ぎ合わせて進められます。
LCPを用いた画面編集の例(OutSystems) |
2. 各環境(開発・テスト・運用)へのデプロイと監視
作成したモデルをベースに、ソースコードなどのアプリケーションの実行体を自動生成し、それを任意の環境にデプロイするまでをワンストップでできます。
さらに、デプロイ後のアプリケーション実行状況についても監視、レポートする機能を備えるなど、システムのライフサイクル全体をサポートするものがほとんどです。
3. シームレスな開発の実現
従来の開発自動化ツールでは、画面を設計するためのツール、処理を設計するためのツールがそれぞれ独立して存在していたり、Webアプリケーションとモバイルアプリケーションを個別に設計したりする必要がありました。
LCPでは、画面やロジックなどの設計機能がクラウド上の開発プラットフォームにてシームレスに連携します。この点は大きな特徴です。さらに、Webアプリケーションやモバイルアプリケーションだけでなく、IoTデバイスとの連携や外部APIとの連携も含んだ多様な開発を実現します。
4. 構成管理、コミュニケーションサポート
LCPは開発機能だけでなく、管理機能も充実しています。バージョン管理や差分レポートなどの構成管理機能はもちろん、開発者間、あるいは開発者とエンドユーザ間のコミュニケーションを円滑にするためのバックログ管理やチャット機能まで備えている製品もあります。
5. マーケットプレイス
LCPではマーケットプレイスと呼ばれる部品群を共有する場が設けられています。業務テンプレートや機能部品を取り入れられるだけでなく、開発した資産をアップロードして他の開発者に提供することも可能です。
近年ではアプリケーションの実行体だけではなく、テストケースやGUIのテストコードを生成するような機能を備えるツールも登録されています。
このようにLCPでは業務や機能の設計だけでなく、開発者とエンドユーザの断裂を防ぐ基盤や、機能部品を共有する仕組みも提供することで円滑なアプリケーション開発を実現しています。
LCPを用いた開発 |
Low-Code Platformの真の狙い
LCPの効果を一言で表すならば、アプリケーション開発の生産性とアジリティ(俊敏性)の向上となるでしょう。しかしながら、それは表面的な部分に過ぎません。LCPの真の効果を知るには、近年アプリケーション開発でLCPの採用が急増している背景にも注目する必要があります。
ビジネススピードの加速に伴い、顧客ごとにカスタマイズされたアプリケーションを高速で開発する需要は一層高まっています。しかしながら、従来のコーディング中心の開発手法では、その需要に追従することが難しくなってきています。ここで注意すべきは、単純に手作業によるコーディングでは実装速度が遅いという点だけではありません。
近年、アプリケーション開発のニーズが増えたことで、ソフトウェア開発者が不足してきています。そのためIT部門主導ではなく、ビジネス部門主導でアプリケーションを開発し、新しいビジネスをより短い期間で始めようとする動きが盛んになっています。つまり、SIerなどにすべての開発を外注するスタイルから、ユーザ企業自身が中心となって開発するスタイルへと考え方が変わりつつあります。
LCPはその変革を後押しし、アプリケーション開発にビジネス部門も加われるようにし、これまで検討が進まずに後回しになっていたビジネス上の課題を消化したり、デリバリの期間を数ヶ月から数週間に短縮したりすることができるようになります。
LCPの本来の価値は、ITとビジネスを一体化させ、よりすばやく反復的に共同開発することだと言えます。
Low-Code platformによる開発主体の変化 |
Low-Code Platformの課題
上述のようにメリットだけを挙げるとLCPは夢のようなツールに見えてきますが、実際にはどのようなアプリケーション開発でも使えるというわけではなく、適用の向き不向きを事前に見極める必要があります。
1. 要件とのFit & Gapと必要スキルの見極め
まず、LCPはLow-Code(コーディング量が少ない)であり、ある程度はコードを記述する必要がある点に注意しなければなりません。前提として、Webアプリケーションの基本構成の理解や業務や機能をロジカルに記述する能力が必要となります。
さらに、少し複雑な実装をしようとすると、LCPが備えるGUI機能だけでは対応できず、SQLやJavaScript、CSSといった専門知識を要するコーディング作業が必要となります。
LCP基本機能での実装ができない領域が大きくなれば、LCPを使うメリットは薄れてしまいます。LCPの採用においては、基本機能で実装できる領域とそうでない領域を見極め、その比率に応じた開発者のスキルを踏まえて要員計画を策定する必要があります。
2. プロセスの整備と有識者の獲得
上記の課題と関連しますが、LCPを利用するにあたり、LCPでできることとできないことの見極め、あるいは、LCPを使ってアプリケーションの開発を進めるためのプロセスの策定について、LCPに精通した有識者が必要です。
LCPは製品であるがゆえ、ブラックボックスな部分も存在します。開発が自立できるようになるまでには、LCPベンダなどからサポートを受けつつトラブルシューティングなどを行っていく必要があります。
3. 特定LCP製品への依存
LCPはモデルの定義からアプリケーションを生成しますが、Javaや.NETなどの実装が隠蔽されている製品もあります。つまり、アプリケーションを改修する際には必ずLCP製品を使わなければなりません。
そのため、維持保守フェーズもLCP製品に依存することとなり、アプリケーションを拡張・更改する際の開発手法や実装方式の選択肢が狭められる場合があります。
Low-Code Platformの今後
LCPは上述のように、Fit & Gapの見通しの良さという観点から、現時点では比較的小規模な開発向きという意見もあります。しかしながら、LCPの各製品は充実した設計機能による高い表現力に加え、大人数での開発を見越したバージョン管理機能やマージ機能などを拡充させており、大規模なアプリケーション開発向けにスケールアップしつつあります。
また、LCPを用いることで、従来開発者が試行錯誤してきたアーキテクチャや処理方式の設計が不要になり、より機能部分の検討に注力できると言えます。どう作るかではなく、何を作るかに注力できるため、よりビジネスの現場の近くで活用されていくと考えられます。
これまで業務アプリケーションの開発を外注してきた企業が、LCPを用いて内製化する動きも活発化していくでしょう。
連載を振り返って
本連載では5回にわたり、ソフトウェア開発の自動化技術について紹介してきました。自動化技術の進化により、複雑な作業が簡略化され、エンジニアではなくビジネスの現場にいる方が簡単に業務アプリケーションを作成できる時代もそう遠くないと言えます。
ここで紹介した内容が、皆さまの一助となれば幸いです。
著者紹介
萩原 淳(HAGIWARA Jun) - NTTデータ 課長代理
2012年頃までは「要求工学」を中心にシステム開発の上流工程の方法論やツール研究とその実践適用の業務を担当。その後、「高速開発ツール」の開発やLow-Code Platform市場の調査など、ソフトウェア開発の自動化に関する研究に従事する。
近年は上流の知見を交え、システム開発の上流シフトをテーマに研究開発に取り組む。2児のパパ。