OutSystems Aggregate とは? ~機能概要・特長とSQLとの使い分けポイントを解説~(vol.21)

  • 公開日:2023年12月07日(木)

OutSystemsには「Aggregate」という、画面の表示やビジネスロジック内で使用するデータを取得できるツールが存在します。
一般的なシステム開発におけるデータ取得は「SQL」によって行われますが、「SQL」の習得は難易度が高く、複雑になりやすいことが課題として挙げられます。もちろん、OutSystemsでも「SQL」を使用できますが、より洗練されたGUI上でデータ取得を定義できるようにした「Aggregate」を活用することで、開発効率を向上させることが可能となります。
本ブログ記事では、「Aggregate」の特長や、どのように「SQL」と使い分けるのが適切かを解説します。

OutSystemsのデータ取得機能「Aggregate」の特長

「Aggregate」とは、OutSystemsでアプリケーション開発をする際に使用できる機能の一部であり、画面表示やビジネスロジック上の処理で、データベース内のレコードを取得する必要がある場合に使用するツールです。
本章では、「Aggregate」の主要な特長を5つ解説します。

 

  1. 習熟しやすい
    「Aggregate」は、一般的な「SQL」を使用した開発と比べ、簡単にデータ取得ロジックを作成できるようになっています。
    一般的な開発では「SQL」という言語を使用して、「SELECT XX FROM YY WHERE…」といったような形でデータ操作内容を記述しなければなりません。Javaなどのプログラミング言語とも異なる独自の文法の習得が必要であり、使われるRDBMS(Relational DataBase Management System)製品によって細かい文法が異なることもあるため、アプリケーション開発における最初の障壁となることの多い技術要素です。
    一方 「Aggregate」は、データベースの構造の基本的な理解は必要になるものの、ビジュアル化された画面上で、複数のエンティティとの結合や、取得結果を絞り込む条件の追加、表示順序の指定などを簡単に定義することが可能です。

  2. 取得結果のリアルタイムプレビュー
    「Aggregate」を作成している間、現在の定義による実際のデータ取得結果を、リアルタイムにプレビュー表示することが可能です。
    エンティティを結合すると表示される列が増える様子や、絞り込み条件を追加することで取得結果のレコード数が変化する様子も随時確認できるため、開発者は自分が作成している「Aggregate」が正しいかどうか常に確認して開発を進めることができます。

  3. クエリの最適化
    「Aggregate」で取得した結果のうち、アプリケーションの機能に使われていないアトリビュート(列)があった場合は、そのアトリビュートの値を取得しないようにします。必要なアトリビュートのみを取得することで処理が高速化するため、ユーザーエクスペリエンスの向上に貢献できます。
  4. 自然言語でのAggregate生成
    現状は英語のみの対応となりますが、取得したいデータをその条件などと共に自然言語で記述すると、内容を解析して「Aggregate」の定義を自動で作成してくれます。複雑な定義を出力する目的には向いていませんが、「Aggregate」の定義の開始時や、「Aggregate」の定義内容の理解を促進するための学習材料として活用することが可能です。

  5. RDBMS製品の差を吸収
    「Aggregate」はビジュアル化されたツールでデータ取得を定義しますが、その裏では定義内容に基づくクエリを自動生成しています。この際、SQL Server / Oracle / MySQL など、OutSystemsが対応しているRDBMS製品の違いを判別し、それぞれに適したクエリを作成してくれるため、開発者はRDBMS製品を知る必要がなく、アプリケーション開発に専念することが可能です。

このように、「Aggregate」には、OutSystems上でデータ取得を効率的に開発することのできる様々な機能が備わっています。
「Aggregate」が実現できるのはデータ取得のみですが、OutSystemsでは、エンティティを作成した際に、「Create」 「Update」 「Delete」 といったエンティティを操作できる「Data Action」が自動生成されます。
つまり、OutSystemsでは、データ操作の全て(データの取得/作成/更新/削除)を、SQL文法を意識せずに実装することができるのです。

OutSystemsにおける「Aggregate」と「SQL」の使い分けポイントとは?

前章では、「Aggregate」によるデータ取得の様々な機能と「Data Action」について解説しました。しかし、OutSystemsには「SQL」というツールが存在しており、一般的なSQL文を記述することでデータ操作ロジックも作成することができます。「SQL」ツールが存在する理由は、「Aggregate」や「Data Action」が非対応のユースケースに対応するためです。
そこで本章では、「Aggregate」や「Data Action」と「SQL」と使い分けるポイントについて解説します。

次のようなケースでは、「Aggregate」や「Data Action」ではなく、「SQL」を使用した方がよいでしょう。

  1. 「Aggregate」に機能的な制約がある場合
    「Aggregate」はSQL文における「副問合せ」に対応していません。
    しかし、アプリケーションを開発する上で副問合せが求められるケースは存在するため、そのような場合には「SQL」ツールを利用してデータ取得を定義します。
  2. 「Data Action」に機能的な制約がある場合
    「Data Action」は、そのエンティティのレコードの取得/作成/更新/削除を行うことができますが、これらのActionは単一のレコードしか処理することができません。
    ですが、実際にアプリケーション開発をしていると、「条件に合致するレコードをまとめて更新したい」というケースが発生することも考えられます。このようなケースではSQL文一つで対象のレコードをまとめて処理することのできる「SQL」ツールの方が適しているといえます。

このような制約に対応するため、「SQL」ツールが存在しています。これを踏まえると、一般的なシステム開発の経験がある方であれば、「AggregateやData Actionは使用せずにSQL文を書いた方が楽なのでは?」と考える方もいらっしゃるでしょう。この2つはどのように使い分ければ良いでしょうか。

これらのツールの使い方として、まずは「Aggregate」や「Data Action」を使用することが推奨されます。前章で挙げた様々な開発効率化機能によって、多くのケースで「SQL」ツールよりも開発効率やパフォーマンスに優れているからです。
それに加え、「Aggregate」は、その定義内容をいつでも「SQL」ツールでの定義内容に変換することが出来ます。アプリケーション開発を進めていくうちに「Aggregate」では対応していないデータ取得が必要になったタイミングで「SQL」ツールに変換すれば、いつでも拡張することが可能です。逆に、「SQL」から「Aggregate」に変換することは出来ませんので、開発を開始する時点では「Aggregate」で定義しておくのが良いでしょう。


*「Aggregate」の「Executed SQL」から、RDBMSに対して実行されたSQL文を確認できます。ポップアップ下部のボタンから「SQL」ツールへの変換が可能です。


*「SQL」ツールが生成されます。それまで定義していた「Aggregate」もDisable状態で残ります。

まずは「Aggregate」や「Data Action」で実装を行い、仕様上の課題が発生したタイミングで「SQL」ツールの使用を検討するのが良いでしょう。「SQL」ツールの長所と短所を理解し、最適な場面を見極めて使用することが、OutSystemsでのアプリケーション開発をより効果的に進めるために欠かせないスキルとなります。

まとめ

さてここまで、「Aggregate」の特長と「SQL」ツールとの使い分けについて解説して参りました。OutSystemsでのデータ操作は簡単に実装できるだけでなく、複雑な要件にも対応できるカバー範囲の広さがあることをご理解いただけたかと思います。
しかし、そのような高度な機能を兼ね備えている製品では、開発者が適切な実装を理解し実践できなければなりません。開発自由度の高さは、環境が無法地帯になりやすいリスクも兼ね備えています。
これを防ぐためには、OutSystemsの導入時からその中心となって利活用を推進するCoE(Center of Excellence)のような存在が不可欠となります。CoEチームがいれば、OutSystemsの開発ルールを定義したり、様々なアプリで使える共通部品を開発したりと、個々のアプリケーションに囚われない横断的な視点から環境を管理することが可能になります。

弊社ではOutSystemsの活用をお客様の社内で推進するための組織としてCoEチームの組成を推奨しております。CoEチームの有用性や組成方法についてご興味のある方は、是非、弊社までお問い合わせください。

弊社電通総研は、ローコード開発プラットフォーム:OutSystemsの導入/活用を支援する様々なサービスメニューをご用意しております。
ローコード開発のはじめの一歩を、電通総研と一緒に踏み出してみませんか?

電通総研のOutSystems関連サービスページ:https://itsol.dentsusoken.com/outsystems/service/

本ブログは、2023年12月1日時点の情報をもとに作成しています。
OutSystemsに関する詳しいお問い合わせは、弊社Webサイトからお問い合わせください。
https://itsol.dentsusoken.com/outsystems/inquiry/