CData Software Blog

クラウド連携のCData Software の技術ブログです。

ノーコード開発ツール Unifinity で kintone 連携アプリを作成:CData Connect

f:id:sugimomoto:20210428171624p:plain

こんにちは。CData Software Japanリードエンジニアの杉本です。

以前、以下の記事でノーコード開発ツール Unifinity と CData API Serverを組み合わせたアプリ開発方法を紹介したのですが

www.cdatablog.jp

Unifinity 4.0 ではこのAPI連携が大幅に強化され、「OData」エンドポイントがサポートされました! このサポートにより、さらにスムーズにAPI連携アプリの開発が可能になりました。

www.unifinity.co.jp

f:id:sugimomoto:20210428171139p:plain

今回は特別にUnifinity様から先行版のトライアルを頂くことができたので、最新版のUnifinityを使って、OData連携を試してみたいと思います。

Unifinity とは?

「Unifinity」はノーコードでモバイルアプリ開発を実現するプラットフォームサービスです。

iOS / Android / Windows のマルチOSで活用可能です。

www.unifinity.co.jp

f:id:sugimomoto:20210428171146p:plain

Unifinity Studio という専用のツールで、UIをベースにアプリ画面をデザインしたり、DB・APIなどと連動した処理・ロジックを作成することができます。

f:id:sugimomoto:20190906162453p:plain

ODataとは?

さていきなり「OData」という単語が飛び出しましたが、みなさんは「OData」ってご存知ですか?

ODataは、 Microsoft が 2007年に開発した、データモデルの記述、およびそれらのモデルに従ったデータの編集および照会をサポートするプロトコルです。

docs.oasis-open.org

私なりの解釈も交えて端的に表現すれば「表形式データの“編集”および“照会”に特化したREST ful なプロトコル」と言えるでしょう。

通常であれば、各APIがそれぞれバラバラな仕様でサポートしているクエリパラメータの方式やURI構成が仕様として決まっていたり

f:id:sugimomoto:20210428171213p:plain

APIの仕様・構造をプログラムから確認することができる、Metadata Endpointをサポートしていることが大きな特徴のプロトコルです。

f:id:sugimomoto:20210428171219p:plain

エンタープライズ向けでは結構メジャーなAPIであり、Dynamics 365やSalesforce・SAP S/4 HanaなどがこのODataプロトコルAPIの提供をサポートしています。

f:id:sugimomoto:20210428171226p:plain

OData のサポートは何が嬉しいのか?

ちなみに、表面的な機能だけ読み取ると、ODataは一般的なREST Ful APIとさして変わるものではありません。

APIを通じてデータを取得したり、更新したり、削除したり、といったことは様々なAPIでサポートされている機能です。

では、ODataであることは何が嬉しいのでしょう?

f:id:sugimomoto:20210428171232p:plain

ここで少し立ち返りたいのが、「API=簡単に連携できる」という誤解です。

APIがあるからといって、そのAPIを活用できるようにするまでには、様々な開発するべき要素がそんざいします。データ構造をアプリ側で整えたり、適切なクエリ方法を調整したり、APIにデータをマッピングしたり、処理ロジックを書いたりしなければいけません。

f:id:sugimomoto:20210428171238p:plain

しかしながら、ODataでは「このAPIはどのようなデータ構造か?」「どのような処理ロジックが利用できるのか?」といった情報がすべてMetadata エンドポイントを通じて取得できるようになっています。

それにより、ユーザーが一つ一つロジックやデータ構造を定義することなく、プログラムが自動でそれらの構造・処理を生成して、利用できるようになります。

f:id:sugimomoto:20210428171244p:plain

ちなみに、既存のODataでは無いAPIは、この機能を活かすことができないのか? と言うとそういうわけではありません。

APIプロトコルをODataに変換する仕組みを持つ、CData Connectを利用することで、この課題を解決することができますので、今回はこのCData Connect と Unifinityを組み合わせてkintone 連携アプリを作成してみたいと思います。

CData Connect とは?

CData Connect は、SaaS ベースで提供されるデータハブサービスです。Salesforce、NetSuite、Dynamics、Marketo、kintone など多様なSaaS にBI、アナリティクス、iPaaS、ノーコード開発プラットフォームからアクセスするための仮想エンドポイントです。連携方法が異なるSaaSMySQLSQL Server、OData の3種類のインターフェースに仮想化することで、データ連携をシンプルに実現します。

"SQL as a Service" といっていいかもしれません。

www.cdata.com

f:id:sugimomoto:20210425233620p:plain

今回は CData Connectが持つ3つのインターフェースのうちの一つである「OData」を使って、kintone の API を仮想的にODataとして公開しなおし、Unifinityから柔軟に利用できるようにします。

手順

それでは早速アプリを作ってみましょう。

CData Connect でkintone をOData エンドポイントを構成

まず、OData によるAPI連携を実現するために、CData Connect (旧CloudHub) のアカウントを取得します。CData Connect はSaaS ですので、アカウントを取得したらインストールやホスティングなどなく、ブラウザからログインすることですぐに使用開始です。

早速ブラウザからCData Connect にログインします。「DATABASE」タブから仮想データベースを設定していきます。まずは接続するデータソースのアイコンをクリックします。

f:id:cdatasoftware:20201014212512p:plain

データソース接続画面が開くので、データソース毎の認証情報を入力します。kintone の場合はURL、User、Password を入力することでkintone データにアクセスすることができます。

f:id:cdatasoftware:20201014212847p:plain

次に「ENDPOINTS」タブで、このデータをどのインターフェースのエンドポイントして公開するかを選択します。デフォルトで、OData、MySQL wire protocol、TDS(SQL Server) wire Protocol がすべて有効になっています。

必要があればアクセスを許可する信頼されたIP アドレスを指定することも可能です。

f:id:cdatasoftware:20201014212922p:plain

今回はOData エンドポイントとしてkintone データを公開しますので、「ODATA」 タブから公開するデータを選択します。先ほど接続時に作成したKintone を公開するので、データベースとして選択します。

f:id:sugimomoto:20210428171302p:plain

kintone のアプリが一覧で表示されますので、利用するアプリにチェックを入れて選択します。

f:id:sugimomoto:20210428171309p:plain

テーブル(アプリ)を選択したら、次はテーブルに含まれるカラム(フィールド)をどこまで公開するかをチェックします。またOData でアクセスできる処理をGET、POST、PUT、DELETE にチェックを入れることで指定します。

また、必要となるカラムを予め絞っておきましょう。

f:id:sugimomoto:20210428171315p:plain

API」タブでOData エンドポイントが生成されていることを確認します。CData Connect がOData エンドポイントのドキュメントを自動生成してくれます。

f:id:sugimomoto:20210428171321p:plain

最後に公開したデータにアクセスできるユーザーとトークンを作成します。「USERS」タブからユーザーを作成するとトークンが生成されます。

f:id:cdatasoftware:20201014212650p:plain

このようにノーコードでkintone をOData エンドポイントとして公開できました。

Unifinity で ODataエンドポイントを読み取る

API側の準備ができたので、続いて Unifinity側でこのODataエンドポイントを読み取って、アプリを作成してみましょう。

まず、Unifinity Studioを立ち上げて、プロジェクトを作成します。

f:id:sugimomoto:20210428171328p:plain

新しくプロジェクを作成したら、まずはデータモデルとなるDBの情報を定義しましょう。

通常であれば、一つ一つテーブル構造とフィールド構造を構成しなければいけませんが、OData連携を行うことで簡単に構成できます。

f:id:sugimomoto:20210428171337p:plain

「DB」タブに移動して、「OData連携」用のアイコンをクリックします。

f:id:sugimomoto:20210428171343p:plain

この画面で接続先となるODataから連携先を設定します。

先程構成したCData ConnectのODataエンドポイント(https://XXXX/XXXX/api.rsc/)とユーザーのTokenを指定し、「ODataから連携先一覧を取得する」をクリックします。

f:id:sugimomoto:20210428171348p:plain

クリック後、OData連携先名の一覧が出てくるので、先程構成したテーブルを選択して「選択した連携先からテーブルを生成する」をクリックします。

f:id:sugimomoto:20210428171354p:plain

いくつか確認ダイアログが表示されるので、すべて「はい」をクリックします。

f:id:sugimomoto:20210428171400p:plain

f:id:sugimomoto:20210428171419p:plain

その後、以下のようにUnifinityにDB構造が定義されます。kintoneのデータも正常に取得できていることが確認できますね。

f:id:sugimomoto:20210428171424p:plain

また、CData Connectからデータを読込・書込・更新・削除するためのロジックも自動的に生成されて、アプリで自由に扱うことができます。

f:id:sugimomoto:20210428171429p:plain

一覧画面を作成

では、簡単ですが一覧画面を表示するアプリを作成してみましょう。

アプリを作成する前に事前準備として、連携用のエンドポイントとトークンをロジックに指定しておきます。

「処理」→「ユーザー設定ロジック」を選択して、「エンドポイント」と「トークン」の処理名にそれぞれOData接続用の情報を入力します。

f:id:sugimomoto:20210428171435p:plain

入力が完了したら、画面を作成します。

f:id:sugimomoto:20210428171443p:plain

一覧表示は「表」を配置することで作成できます。

f:id:sugimomoto:20210428171448p:plain

表を配置したら、バインド先の要素として先程生成されたテーブルを選択します。

f:id:sugimomoto:20210428171454p:plain

また、合わせてデータを最新化するための読み込みボタンも配置して、実行処理から「読込ロジック」を呼び出すようにしておきましょう。このように自動生成されたロジックは簡単にUIから呼び出して利用できます。

f:id:sugimomoto:20210428171500p:plain

カラーリングも調整して、以下のような画面ができました。

f:id:sugimomoto:20210428171507p:plain

それでは早速アプリを実際に動かしてみます。「アプリを実行する」→「開発環境でそのまま実行」をクリックします。

f:id:sugimomoto:20210428171516p:plain

すると、以下のようにデータが一覧表示されたアプリ画面が表示されました。読み込みボタンをクリックすることで、最新のデータも取得できます。

f:id:sugimomoto:20210428171522p:plain

入力画面の作成

同様に書込用ロジックを利用することで、簡単に入力画面も作成できます。

例えば以下のようにテキストボックスをそれぞれ配置して、ワークテーブルに繋げます。

f:id:sugimomoto:20210428171530p:plain

各テキストボックスはそれぞれワークテーブルのフィールドに関連付けましょう。

f:id:sugimomoto:20210428171538p:plain

あとは作成用のボタンを配置して「書き込みロジック」を呼び出せば、データの作成を行うことができます。

f:id:sugimomoto:20210428171546p:plain

おわりに

同じような手順でデータを更新したり、削除したりも実施できます。

また、今回はkintoneを接続先のリソースとしましたが、外にも様々なリソースを OData インターフェースとして扱うことができます。

www.cdata.com

f:id:sugimomoto:20210324152403p:plain

Unifinity と併せて、是非色々と活用してみてください。