モジュールタイプ(module type)の違いについて調べる[Outsystems]

Outsystems、勉強したさはあるんですけど公式の文献は英語ばかりな上に、書いてあることがむちゃくちゃ分かりづらいんですよね。
そんな愚痴はさておき、今日はモジュールタイプについて勉強していこうと思います。

こちらについても案の定、検索しても分かりやすいサイトは出てこず……。
というわけで今回は実際にそれぞれのモジュールを作成して見比べてみようと思います。

前提条件

『Reactive Web App』にモジュールを追加します。
ほかのアプリケーションタイプを選択した場合、違う動作になる可能性があります。

そもそもモジュールタイプって何種類あるの?

Reactive Web Appの場合、選べる種類は5種類です!

  • Reactive Web App
  • Blank
  • Service
  • Library
  • Extension

の5種類ですね。
この5種類のモジュールを作っていきます。

モジュールタイプ全5種類のご紹介

Reactive Web App

Reactive Web Appは名前の通り、Reactive Web Appの核となるモジュールタイプです。
サーバーアクションもクライアントアクションも作れます。

今回はこの『Reactive Web App』を基準として比較していきます。

Blank

BlankはReactive Web Appと同じ機能が使えるモジュールになります。
Reactive Web Appと見比べたんですけどテーマやcssなどは何も触らずモジュールを量産していたせいで違いがよく分かりませんでした。

Reactive Web Appと違うのが「テーマを引き継ぐかどうか」らしいです。
Blankの場合、テーマを引き継ぎません

・Set the default module Theme, if you have several Themes in your module.
・Create a blank Theme without any styles, so elements use only the CSS you create.
・Create a new Theme based on the default Theme, if you want add styles to the existing Theme.

Outsystems公式サイトより引用

こちらについては日本語版のページもありましたが、「blank」など英語表記となっている部分まで翻訳されているせいで難解になってしまっているので英語版を読むことをオススメします。

Service

Serviceは画面(Interface)などクライアント側で動作するものを作成できない代わりに「サービスアクション」という機能が使うことができます

サービスアクションとサーバーアクションの違いについてはコチラの記事に簡単にまとめています。

サーバーアクションとサービスアクションって何が違うの?
mikan-tech.info

Library

Libraryは少し見ただけでProcessesのタブがないことが分かります。
しかし、その他にも地味に大きな違いが……。

こちらLibraryのサーバーアクションなんですが、Reactive Web Appと明確な違いがあります。
それがコチラ。

「Aggregate」と「SQL」がサーバーアクションの中に存在しないことです!
Libraryはよりブラックボックス的というか、値の上書きができる箇所を減らしたい思想のモジュールらしくSQLなどのアクションが減っています。

Libraryの設計思想や制限などの詳細については公式サイトに記載があります。

Extension

ExtensionはOutSystems Integration Studio上で動くモジュールになります。
作成するとIntegration Studioが立ち上がるのはこのモジュールタイプだけです。

Extensionを作成して何ができるかというと、.NETで開発ができます。
Outsystemsの既存の関数では実現が難しい!という時などに。

参考資料

一応Outsystemsのコミュニティで「どう違うの?」と質問されているのも見つけたので貼っておきます。例のごとく英語です。

https://www.outsystems.com/forums/discussion/59131/module-type-distinction/