OutSystemsのList型を効果的に活用する方法とは? 基礎から便利なTipsまで解説(Vol.37)

  • 公開日:
  • 最終更新日:

List型」とはOutSystemsで配列を扱うデータ型です。「List型」を指定した際には、そのリスト内のデータ型も指定する必要があります。
List型はデータの管理や表示において非常に重要な役割を果たします。List型を効果的に活用することで、動的なサイズ変更や順序の入れ替え等のデータ操作が簡単に行えるようになります。
このブログでは、OutSystemsにおけるList型の基本から応用までを詳しく解説します。まず、List型の基本的な知識と定義方法について紹介、続いて、追加・削除といったList型を編集するためのアクションの使い方を説明します。そして最後に、List型をさらに便利に活用するためのTipsをご紹介します。
OutSystemsは、ローコード開発プラットフォームの代表格です。プロコードをほとんど書かずに、視覚的・直感的な操作で迅速かつ効率的にアプリケーションを開発できます。

OutSystemsにおける「List」型の基本と応用:「List」型の基本と定義方法

一般的なプログラミングにおいてList型とは、同じデータ型の要素を順序付けて格納するデータ構造で、データのコレクションを管理するために使用されます。要素が順序付けられているためインデックスを使用してアクセスでき、サイズは動的に変更可能で、追加や削除が容易です。
これらの利点からList型は、ユーザー情報や商品情報、タスク管理などのさまざまな場面で使用されます。

OutSystemsにおいても、このList型を利用して開発を行うことが出来ます。
OutSystemsでListを利用する際は、変数のデータ型(Data Type)から「List…」を選択し、表示されるポップアップ内でList形式にしたいデータ型を指定します。指定するデータ型は、Text型などの基本データ型はもちろん、EntityやStructureで定義した構造体を指定することも出来ます。

List型では、以下のプロパティを利用することができます。

  • Current: Listが現在フォーカスしている要素
  • CurrentRowNumber: Listが現在フォーカスしている要素のインデックス(List全体の何番目に位置するか)
  • Length: List内の要素数
  • Empty: List内が空である場合はTrue、要素が入っている場合はFalseとなるBoolean

ListではList内の特定の要素をCurrentで指定します。CurrentはList WidgetやTable Widgetなどの画面部品やForEachロジックなどの繰り返し処理において、その繰り返し中で現在フォーカスしている要素のことを示します。

OutSystemsにおける「List」型の基本と応用:「List」型を編集するには?

List型のデータ操作には、OutSystemsに標準にあるアクションを用います。

これらのアクションはClient ActionServer Action方に存在しています。

この章では、これらの中で特によく使われるアクションをいくつかピックアップして紹介します。

ListAppend

Input Parameter
・List(データ型:Generic Record List)
・Element(データ型:Generic Record)

指定した要素をリストの末尾に追加するアクションです。Listには要素を追加したいリストを、Elementに追加対象の要素を指定します。

ListFilter

Input Parameter
・SourceList(データ型:Generic Record List)
・Condition(データ型:Boolean)
【Output Parameter】
・FilteredList(データ型:Generic Record List)

入力した条件を用いてリストをフィルタリングするアクションです。SourceListにはフィルタリング対象のリスト、Conditionには条件式を指定します。
条件式で検索された結果のリストがFilteredListで返されます。

ListIndexOf

Input Parameter
・List(データ型:Generic Record List)
・Condition(データ型:Boolean
【Output Parameter】
・Position(データ型:Integer

リスト内を条件式で検索し、要素のインデックスを返すアクションです。検索された結果が複数ある場合は、最初の要素のインデックスが返されます。
List
には検索対象のリスト、Conditionには条件式を指定します。検索された要素のインデックスがPositionで返されます。

ListRemove

Input Parameter
・List(データ型:Generic Record List)
・Position(データ型:Integer)

リストから指定したインデックスの要素を削除するアクションです。Listには削除する要素が存在するリスト、Positionには削除する要素のインデックスを指定します。
このアクションはインデックスを指定する必要があるため、前述のListIndexOfなどを利用し、対象のインデックスを取得する必要があります。

ListSort

InputParameter
・List(データ型:Generic Record List)
・By(データ型:Generic Type)
・Ascending(データ型:Boolean)

リストを並び替えするアクションです。Listには並び替え対象のリスト、Byには並び替えの基準を指定します。AscendingTrueを指定すると昇順、Falseを指定すると降順に並び替えされます。(デフォルトは昇順です)

 

OutSystemsにおける「List」型の基本と応用:「List」型を利用するときの便利なTipsの紹介

ここまで、OutSystemsでのListを用いた開発の基本を解説してきました。基本的には、前章で紹介したアクションを用いることで、多くのユースケースに対応することが出来ます。
ここからは、さらに開発を効率化し、より高度な操作を行うためのTipsをいくつか紹介します。

  • インデックスを直接指定してListからデータを取り出す
    JavaやC++などのプログラミング言語では、リスト型はインデックスを用いて要素を指定して取得することが出来ます。
    OutSystems
    でも同様にインデックスを用いてリストの要素を取得することが可能です。

    以下のSampleListでインデックスが2の要素のNameを取得するには、このように記述します。
    記述方法は「【変数名】[インデックス].<Attribute名>とします。
    例のように直接インデックスを指定することはもちろん、2章で紹介した「ListIndexOf」で取得したインデックスを指定することも可能です。

    ただし、インデックスを多く用いると、パフォーマンスが落ちる原因となるので注意が必要です。(パフォーマンスのベストプラクティス-クエリ

  • テキストを分割してListへ変換する
    Input Parameter
    ・Text(データ型:Text)
    ・Delimiters(データ型:Text
    Output Parameter】
    ・List(データ型:Text Record List

    Listに関連する関数の中で、よく使用されるのがString_Splitです。この関数は「aaaa,bbbb,cccc」のように共通の文字(Delimiters)で区切られたTextListへと変換します。
    他システムなどと連携する際には、区切られたText型で返ってくることがあるため、こちらの関数を利用して、OutSystemsで利用しやすい型にします。

まとめ

今回のブログでは、OutSystemsでのList型を用いた開発の基本について解説しました。

まず、List型の基本的な定義と特徴について説明しました。List型は、同じデータ型の要素を順序付けて格納するデータ構造であり、データの追加や削除が容易で、動的なデータ管理が可能です。
次に、OutSystemsに標準で用意されているList型の基本操作(追加、削除、アクセス、検索など)について説明しました。これらのアクションを適宜利用することで開発を効率化することが出来ます。
最後に、より高度な操作を行うためのTipsもいくつか紹介しました。これにより、OutSystemsでのリストを用いた開発がさらにスムーズに行えるようになるでしょう。

このブログがOutSystemsでのリスト型の理解を深め、実践的なスキルを身につけるための一助となれば幸いです。ぜひ、日々の開発にお役立てください。

また、弊社では、OutSystemsユーザー企業の活用推進をご支援するため、OutSystems開発者向けのトレーニングサービスを始めとした各種支援を行っております。 トレーニングに加え、OutSystemsに関する知識・ノウハウを集約し、お客様の組織内での開発・運用サポートするCoE支援サービスや、システム要件やプロジェクト特性に応じた最適な開発方法をご提案し、アプリケーション構築を行う受託開発サービスもご提供しております。ご興味のある方は、是非、電通総研までお問い合わせください。

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

OutSystemsに関する詳しいお問い合わせは、弊社Webサイトからお問い合わせください。
https://itsol.dentsusoken.com/outsystems/inquiry/

<筆者>

氏名:野田頭凌冬(のだがしら りょうと)
経歴:2023年、株式会社電通総研入社
2023年よりOutSystems開発者として複数の案件に参画し、
OutSystemsを用いたアプリケーション開発や内製開発者の育成を支援 

保持資格
Tech LeadOutSystems 11
Expert DeveloperOutSystems 11
Architecture SpecialistODC