Mendix のローコード開発プラットフォームで Elasticsearch のデータを使ったアプリを構築
Siemens 社が開発した Mendix は、Web およびモバイルアプリケーションを迅速に開発、テスト、デプロイするためのローコードプラットフォームです。デジタルトランスフォーメーションの推進とビジネスのアジリティ向上を実現します。CData JDBC Driver for Elasticsearch と組み合わせることで、Mendix Studio Pro を使って Elasticsearch のデータを活用したさまざまなアプリケーションを作成できます。
CData JDBC ドライバーは、 最適化されたデータ処理機能を組み込み、リアルタイムElasticsearch のデータと連携する際に、比類のないパフォーマンスを発揮します。複雑な SQL クエリを Elasticsearch に発行すると、ドライバーはフィルタや集計などのサポートされている SQL 操作を直接 Elasticsearch にプッシュし、サポートされていない操作(多くの場合、SQL 関数や JOIN 操作)は組み込みの SQL エンジンを使用してクライアントサイドで処理します。組み込みの動的メタデータクエリ機能により、ネイティブのデータ型を使用して Elasticsearch のデータを操作・分析できます。
この記事では、Mendix が提供する JDBC インターフェースと CData JDBC Driver for Elasticsearch を組み合わせて、Elasticsearch のデータを活用したアプリケーションを Mendix で簡単に作成する方法を紹介します。
Elasticsearch データ連携について
CData を使用すれば、Elasticsearch のライブデータへのアクセスと統合がこれまでになく簡単になります。お客様は CData の接続機能を以下の目的で利用しています:
- SQL エンドポイントと REST エンドポイントの両方にアクセスでき、接続を最適化し、Elasticsearch データの読み書きに関してより多くのオプションを提供します。
- v2.2 以降およびオープンソース Elasticsearch サブスクリプションを含む、ほぼすべての Elasticsearch インスタンスに接続できます。
- SCORE() 関数を明示的に要求することなく、常にクエリ結果の関連性スコアを受け取ることができます。これにより、サードパーティツールからのアクセスが簡素化され、クエリ結果のテキスト関連性のランキングを簡単に確認できます。
- 複数のインデックスを検索でき、クライアントマシンではなく Elasticsearch がクエリと結果の管理・処理を担当します。
ユーザーは、Crystal Reports、Power BI、Excel などの分析ツールと Elasticsearch データを統合し、当社のツールを活用して、Elasticsearch を含むすべてのデータソースへの単一のフェデレートアクセスレイヤーを実現しています。
CData の Elasticsearch ソリューションの詳細については、ナレッジベース記事をご覧ください:CData Elasticsearch Driver Features & Differentiators
はじめに
Mendix 環境の準備
このセクションでは、先ほど紹介した Mendix Studio Pro を使用して、Elasticsearch のデータを使ったアプリを開発する方法を説明します。事前に Mendix Studio Pro をインストールしておいてください。
CData JDBC Driver for Elasticsearch のインストール
まず、Mendix と同じマシンに CData JDBC Driver for Elasticsearch をインストールします。JDBC ドライバーは以下のパスにインストールされます。
C:\Program Files\CData\CData JDBC Driver for Elasticsearch 20xx\lib\cdata.jdbc.elasticsearch.jar
アプリケーションの作成
それでは、アプリの作成を始めましょう。まず、Database Connector が利用可能なアプリを作成します。
- Mendix Studio Pro を起動し、「Create New App」をクリックします。
- 「Blank Web App」オプションを選択します。
- 「Use this starting point」をクリックして続行します。
- 任意の名前でアプリを作成します。また、後で参照するために「Disk location」の情報をメモしておきましょう。
- これで新しいアプリが作成されました。
アプリケーションに Database Connector を追加
次に、作成したアプリに Database Connector モジュールを追加します。
- 右上の Marketplace ボタンをクリックします。
- Marketplace の検索セクションで Database Connector を検索し、選択します。
- Download をクリックして、最新の Database Connector をダウンロードします。
- Import Module ウィンドウで、Action として Add as a new module を選択します。
- アプリ画面に Database Connector が表示されれば、次のステップに進む準備が整いました。
Mendix Studio Pro への JDBC ドライバーの追加
この Database Connector で CData JDBC ドライバーを使用するには、JDBC ドライバーの JAR ファイルをプロジェクトに追加する必要があります。
- 先ほどメモした Mendix プロジェクトフォルダ内に「userlib」というフォルダがあります。そのフォルダに「cdata.jdbc.elasticsearch.jar」と「cdata.jdbc.elasticsearch.lic」の2つのファイルを配置します。
- これで、Database Connector で CData JDBC ドライバーを使用できるようになりました。
データモデルの作成
それでは、アプリを作成していきましょう。まず、Database Connector からデータを読み込み、一覧画面に表示するためのデータモデルを定義します。データを読み込む前に、データモデルを作成しておきます。
- MyFirstModule の「Domain model」に Entity を追加します。
- Entity 名とフィールド定義を入力します。
- DBeaver などのツールを使用して、CData JDBC ドライバー経由でテーブル定義情報を確認すると、データの設定を簡単に行えます。
- Entity を定義します。
JDBC URL 用の定数を作成
次に、Database Connector で使用する JDBC URL の定数を作成します。
- MyFirstModule に「Constant」を追加します。
- Add Constant ウィンドウで定数に名前を付けます。
Elasticsearch に接続するための JDBC URL を生成します。jdbc:elasticsearch: で始まり、セミコロンで区切られた一連の接続文字列プロパティを続けます。
Elasticsearch 接続プロパティの取得・設定方法
接続するには、Server およびPort 接続プロパティを設定します。 認証には、User とPassword プロパティ、PKI (public key infrastructure)、またはその両方を設定します。 PKI を使用するには、SSLClientCert、SSLClientCertType、SSLClientCertSubject、およびSSLClientCertPassword プロパティを設定します。
CData 製品は、認証とTLS/SSL 暗号化にX-Pack Security を使用しています。TLS/SSL で接続するには、Server 値に'https://' を接頭します。Note: PKI を 使用するためには、TLS/SSL およびクライアント認証はX-Pack 上で有効化されていなければなりません。
接続されると、X-Pack では、設定したリルムをベースにユーザー認証およびロールの許可が実施されます。
組み込みの接続文字列デザイナー
JDBC URL の構成には、Elasticsearch JDBC ドライバーに組み込まれている接続文字列デザイナーが便利です。JAR ファイルをダブルクリックするか、コマンドラインから JAR ファイルを実行してください。
java -jar cdata.jdbc.elasticsearch.jar
接続プロパティに値を入力し、接続文字列をクリップボードにコピーします。
一般的な JDBC URL は以下のとおりです。
jdbc:elasticsearch:Server=127.0.0.1;Port=9200;User=admin;Password=123456;
- 前のステップでコピーした接続文字列を Default value セクションに入力し、OK をクリックします。
Elasticsearch のデータを取得するマイクロフローの作成
作成した Entity に基づいて、Database Connector からデータを取得するマイクロフローを作成しましょう。
- MyFirstModule から「Add microflow」をクリックします。
- 任意の名前でマイクロフローを作成します。
- まず、先ほど定義した Entity 用のオブジェクトを作成します。マイクロフローに「Create Object」アクションを追加します。
- Create Object ウィンドウで、Entity の「Select」ボタンをクリックします。
- 先ほど定義した Entity を選択します。
- 任意の Object name を入力し、OK をクリックします。
- 次に、Database Connector からデータを取得するために、マイクロフローに Execute Query アクションを追加します。
- Execute Query ウィンドウで各入力項目を定義します。
- 「jdbc url」には、先ほど定義した定数を指定します。
- SQL には、Elasticsearch からデータを取得するクエリを記述します。
- 今回は Username と Password は不要なので、「empty」に設定し、前のフローで作成したオブジェクトを Result object として割り当てます。List Name セクションには任意の名前を指定します。
- 最後に、マイクロフローの出力を定義します。
- End Event をダブルクリックして開き、Type ドロップダウンから「List」を選択し、先ほど定義した Entity とリンクします。次に、Execute Query の出力結果を Return value として設定します。
- これで、Elasticsearch からデータを取得するマイクロフローが完成しました。
一覧画面の作成とマイクロフローへのリンク
最後に、マイクロフローから取得した結果を表示する画面を作成しましょう。
- Toolbox メニュー内の「Home_web」をダブルクリックして開きます。
- Data containers セクションから Data grid テンプレートをドラッグ&ドロップして一覧画面に配置します。
- Data grid を配置したら、ダブルクリックして Edit Data Grid 設定画面を表示します。
- Data source タブに移動し、データソースタイプを Microflow とリンクします。
- 先ほど作成したマイクロフローを選択します。
- OK をクリックします。
- OK をクリックすると、カラムの自動検出を促すメッセージが表示されます。「Yes」をクリックして続行します。
- 次に、各 Data grid 用のコントローラーを生成するかどうかを確認するメッセージが表示されます。今回は各ロジックを設定しないので、「No」をクリックします。
- 以下のようなシンプルな Data grid 画面が作成されます。
動作確認
それでは、正しく動作するか確認しましょう。
- 「Publish」ボタンをクリックして、作成したアプリを準備します。完了したら、「View App」をクリックしてアプリを開きます。
- 以下のような Elasticsearch のデータの一覧が表示されれば成功です!Elasticsearch の API を意識することなく、ローコードで Elasticsearch と連携したアプリを作成できました。
今すぐ始めましょう
CData JDBC Driver for Elasticsearch の 30日間無料トライアル をダウンロードして、Mendix で Elasticsearch のデータに接続するアプリを簡単に作成してみてください。
ご質問がございましたら、サポートチーム までお気軽にお問い合わせください。