目次
はじめに
当社はかねてより、超高速開発のソリューションとしてローコード開発基盤「OutSystems」の導入支援およびアプリケーション開発に力を入れてきました。
OutSystems以外にも、ローコード開発基盤は数多く提供されています。その中でも、モデル駆動型の開発手法をはじめ、OutSystemsと共通項が多いとされるのが「Mendix」です。
今回はOutSystems(OutSystems 11)を用いたアプリケーション開発経験がある方向けに、簡単なWebアプリケーションの作成を通して、OutSystems 11と比べて、Mendixの開発基盤の機能や操作感にどのような違いがあるか、ご紹介したいと思います。
Mendixとは
Mendixは、モバイルアプリケーションとWebアプリケーションを大規模に構築し、継続的に改善できるようにする高生産性アプリケーションプラットフォームです。
モデル駆動型開発環境を提供し、拡張性の高いビジュアルモデリングスイートを通じてユーザーインターフェイス、データ、ロジックの開発を視覚的に行うことができます。
さらに詳しいMendixの情報は、Mendix公式サイト「Platform Evaluation Guide」を参照ください。
Mendix サンプルアプリケーション概要
今回Mendixで作成するサンプルアプリケーションは、従業員の登録及び一覧での参照・検索機能を有するWebアプリケーションです。
仕様は次の通りとします。
1.画面構成
2.データモデル
3.機能
- 従業員が一覧で確認できる。
- 一覧の各項目でソートができる。
- 一覧でページングができる。
- 指定した条件で一覧の表示内容をフィルターできる。
- 一覧の内容をExcelに出力できる。
- 詳細画面で保存ボタンを押すと入力チェックを行い、チェックでエラーがある場合はエラーメッセージを表示し、エラーがない場合は入力内容をDBに保存する。
4.Mendix 開発環境
Mendixの体験用無償環境を利用してアプリケーションの構築を行います。
- Public Mendix Cloud
- Studio pro (v 8.10.2)
なお、筆者がOutSystems 11で上記仕様のアプリケーションを作成したところ、1時間程度で作成できました。おそらく熟練のOutSystems技術者の方は、もっと早く作成できるのではないでしょうか。
Mendix サンプルアプリケーションの作成
それでは、さっそくMendixでWebアプリケーションを作ります。
Webアプリケーションの構築には、「データモデリング」「ユーザーインターフェイスの設計」「ロジックの設計」「デプロイ」という4つの工程を踏みます。
本記事ではOutSystems 11とMendixの比較に主眼を置くため、各工程の詳しい作業手順の説明は省略します。Mendixでのアプリケーションの作成方法を詳細に知りたい場合は公式のオンラインラーニングコースを活用してください。
1.データモデリング
概要
MendixにおけるデータモデルはDomain modelとして表現されます。
Domain modelは、アプリケーションドメインの情報を抽象的な方法で記述するデータモデルで、EntityとEntity同士の関連付けであるAssociationで構成されます。(Domain modelの詳細は公式リファレンスを参照してください)
下の図は従業員管理アプリで作成したDomain modelです。見た目はER図に似ていますね。
Entityをクリックするとプロパティのダイアログボックスが表示され、ここでEntityへのAttributeの追加をはじめ、様々な設定を行うことができます。
OutSystems 11との比較
Attributeに設定できるデータタイプの種類はOutSystems 11とMendixで異なります。しかし、文字列型、数値型、論理型、バイナリ型等の基本的なデータ型を備えている点や、各Attributeにデフォルト値やMax Lengthの設定を行える点は共通しています。
またEntity同士の関連の表現については、OutSystems 11のように外部キーをAttributeとして持たせるか、MendixのようにAssociationを定義するかという違いはあるものの、いずれもデータモデル上でEntity同士の多重度を表現でき、かつ削除規則の設定ができます。
一方、MendixがOutSystems 11と異なる点には、次のようなものが挙げられます。
- 値をデータベースに格納するかデータ参照時に都度値を計算するか、Attribute単位にプロパティで設定可能
- 必須制約やユニーク制約の他に、正規表現のマッチや値の上限・下限値を、Attributeの制約として設定可能(カスタムロジックの作成なしにプロパティの設定のみで可能)
2.ユーザーインターフェイスの設計
概要
Mendixのアプリケーションにおける基本的なユーザーインターフェイス(以下UI)はPageと呼ばれます。
Widgetと呼ばれるUIの構成要素(データを表示するためのコンテナやボタン、ドロップダウンやインプットボックス等の各種データ入力フィールド)をPageに配置してレスポンシブな画面を設計できます。(Pageの詳細は公式リファレンスを参照ください)
下の図はStudio ProでPageの設計をしているときの画面です。Page内(図中赤枠部分)にToolBox(図中青枠)のWidgetを配置してUIを設計していきます。
今回従業員一覧画面を作成するために、「Data grid」のWidgetを利用しました(下図赤枠部分)。EmployeeのEntityをWidgetにマッピングし、検索条件や各種ボタンの設定をWidgetに行った状態が下の図です。
OutSystems 11との比較
Widgetを組み合わせてUIを視覚的に設計する点や、予め基礎的なwidgetが配置されたテンプレートを用いて画面の作成を行える点は、MendixにおけるPageの設計とOutSystemsにおけるWeb Screenの設計で共通します。
異なる点としては、Mendixでは、Widget自体に基本的な機能を実現するためのロジック(データ取得・検索・保存の処理や、一覧のソート、ページング処理等)が備わっている点が挙げられます。つまりData Widgetにデータモデルをマッピングすればデータの取得ロジックを作成することなくデータを表示ができ、保存ボタンのWidgetを用いれば、保存ロジックの作成なしにデータの保存ができるというわけです。
今回のサンプルアプリケーション作成でも、仕様として上述した機能1~5の実現にあたり、ロジックの作成はしていません。Data grid Widgetの持つ機能のみを使って実現しています。
3.ロジックの設計
概要
MendixにおけるアプリケーションのロジックはMicroflowとして表現されます。ボタンを押したときの標準動作を拡張・変更する必要がある場合などはMicroflowでカスタムロジックを作成します。
下の図はStudio ProでMicroflowを設計しているときの画面です。Start EventとEnd Eventを結ぶ矢印の上にToolBox(図中赤枠部分)内のMicroflow構成要素を配置することでMicroflowを設計していきます。
(Microflowの詳しい説明は公式リファレンスを参照してください)
下の図は、設計中の従業員登録・編集画面において保存ボタン押下する際の、入力チェック処理のMicroflowです。完成したMicroflowはフローチャートのような見た目になります。
OutSystems 11との比較
プログラムの処理をフローチャートとして視覚的に設計できるという点では、MendixのMicroflowの設計とOutSystemsのLogicの設計は似ています。
異なる点としては、フローチャートの構成要素や表記方法が挙げられます。これらはMendixとOutSystemsでかなり異なっており、OutSystemsでLogicの開発経験がある人でも、MendixのMicroflowの設計に慣れるまでに多少時間がかかるかもしれません。
4.デプロイ
概要
Mendixの体験用無償環境の場合は、Studio proからワンクリックでクラウドサーバーにデプロイ可能です。
(※無料アプリとライセンスアプリではデプロイ手順が異なります。ライセンスを取得したアプリのデプロイの手順は公式ドキュメント「ライセンスされたアプリをMendix Cloudにデプロイする」を参照してください)
Studio Proで「Run」をクリックしデプロイを実行後、隣の「View」をクリックするとデプロイされたアプリを確認できます。
OutSystems 11との比較
開発ツール上から簡単にアプリのデプロイを行える点は、OutSystems 11とMendixで共通しています。
両者が異なる点として、Mendixはローカル環境でのアプリケーションの実行が可能な点が挙げられます。
OutSystems 11 とMendix比較結果まとめ
アプリケーションを作成しながらOutSystemsとMendixをざっくり比較してきましたが、最後に改めてOutSystems 11とMendixの比較結果を表にまとめます。
工程 | 共通点 | Mendixに特有な機能、またはOutSystems 11との相違点 |
---|---|---|
データモデリング | ・文字列型、数値型、論理型、バイナリ型等の基本的なデータ型を備えている ・各Attributeにデフォルト値やMax Lengthの設定を行うことができる ・Entity同士の多重度を表現できる ・関連のあるEntity同士の削除規則を定義できる |
・値をデータベースに格納するかデータ参照時に都度値を計算するかをAttribute単位にプロパティで設定できる ・必須制約やユニーク制約の他に、正規表現のマッチや、値の上限・下限値をAttributeの制約として設定できる |
UI設計 | ・Widgetを組み合わせてUIを視覚的に設計する ・予め基礎的なWidgetが配置されたテンプレートを用いて画面の作成を行うことができる |
・Widget自体に基本的な機能を実現するロジックが備わっている |
ロジック設計 | ・プログラムの処理をフローチャートとして視覚的に設計できる | ・フローチャートの表記法が異なる |
デプロイ | ・開発ツール上から簡単にアプリのデプロイを行える | ・ローカル環境でのアプリケーションの実行が可能 |
所感
今回作成したようなシンプルな機能のアプリの作成では、Mendixの機能に不足は感じませんでした。しかし、もう少し高度な要件がある場合、例えば複雑な条件でEntityを結合してデータを取得する必要があったり、画面のレイアウトを細かく調整する必要があったりする場合は、MendixよりもOutSystemsでの開発が適していると感じました。
またデータモデリングにしろUIやロジックの設計にしろ、Mendixのアプリケーション開発では、各種設計の過程でとにかく多くの設定画面、設定項目と向き合う必要があります。直観的な操作で設計を行うことのできるOutSystemsと比べると、設定画面を開いてはポチポチ項目を設定をして閉じ、また別の設定画面を開いては項目を設定して閉じ…という作業をひたすら繰り返すMendixの設計は、かなり煩雑に感じるかもしれません。
筆者個人の主観としては、MendixよりもOutSystemsの方が活用できる場面が多く、また操作性も優れていると感じました。そして同時に、特定の場面においては、Mendixが十分な有用性を発揮することもよく理解できました。将来有望なローコード開発基盤の一つとして、今後もMendixの動向に注目していきたいです。
執筆者プロフィール

- tdi 次世代システム開発部
-
ここ2年ほどOutsystemsを使用したプロジェクトに参画しエンジニアとして開発に従事してきました。
いろいろなローコード開発ツールに興味があります。
この執筆者の最新記事
ローコード開発2020.09.11ローコード開発基盤OutSystemsとMendixを比べてみた