こんにちは。CData Software Japanリードエンジニアの杉本です。
以前、以下の記事でノーコード開発ツール Unifinity と CData API Serverを組み合わせたアプリ開発方法を紹介したのですが
https://www.cdata.com/jp/blog/2019-09-10-112411
Unifinity 4.0 ではこのAPI連携が大幅に強化され、「OData」エンドポイントがサポートされました! このサポートにより、さらにスムーズにAPI連携アプリの開発が可能になりました。
www.unifinity.co.jp
今回は特別にUnifinity様から先行版のトライアルを頂くことができたので、最新版のUnifinityを使って、OData連携を試してみたいと思います。
Unifinity とは?
「Unifinity」はノーコードでモバイルアプリ開発を実現するプラットフォームサービスです。
iOS / Android / Windows のマルチOSで活用可能です。
www.unifinity.co.jp
Unifinity Studio という専用のツールで、UIをベースにアプリ画面をデザインしたり、DB・APIなどと連動した処理・ロジックを作成することができます。
ODataとは?
さていきなり「OData」という単語が飛び出しましたが、みなさんは「OData」ってご存知ですか?
ODataは、 Microsoft が 2007年に開発した、データモデルの記述、およびそれらのモデルに従ったデータの編集および照会をサポートするプロトコルです。
docs.oasis-open.org
私なりの解釈も交えて端的に表現すれば「表形式データの“編集”および“照会”に特化したREST ful なプロトコル」と言えるでしょう。
通常であれば、各APIがそれぞれバラバラな仕様でサポートしているクエリパラメータの方式やURI構成が仕様として決まっていたり
APIの仕様・構造をプログラムから確認することができる、Metadata Endpointをサポートしていることが大きな特徴のプロトコルです。
エンタープライズ向けでは結構メジャーなAPIであり、Dynamics 365やSalesforce・SAP S/4 HanaなどがこのODataプロトコルでAPIの提供をサポートしています。
OData のサポートは何が嬉しいのか?
ちなみに、表面的な機能だけ読み取ると、ODataは一般的なREST Ful APIとさして変わるものではありません。
APIを通じてデータを取得したり、更新したり、削除したり、といったことは様々なAPIでサポートされている機能です。
では、ODataであることは何が嬉しいのでしょう?
ここで少し立ち返りたいのが、「API=簡単に連携できる」という誤解です。
APIがあるからといって、そのAPIを活用できるようにするまでには、様々な開発するべき要素がそんざいします。データ構造をアプリ側で整えたり、適切なクエリ方法を調整したり、APIにデータをマッピングしたり、処理ロジックを書いたりしなければいけません。
しかしながら、ODataでは「このAPIはどのようなデータ構造か?」「どのような処理ロジックが利用できるのか?」といった情報がすべてMetadata エンドポイントを通じて取得できるようになっています。
それにより、ユーザーが一つ一つロジックやデータ構造を定義することなく、プログラムが自動でそれらの構造・処理を生成して、利用できるようになります。
ちなみに、既存のODataでは無いAPIは、この機能を活かすことができないのか? と言うとそういうわけではありません。
APIのプロトコルをODataに変換する仕組みを持つ、CData Connectを利用することで、この課題を解決することができますので、今回はこのCData Connect と Unifinityを組み合わせてkintone 連携アプリを作成してみたいと思います。
CData Connect とは?
CData Connect は、SaaS ベースで提供されるデータハブサービスです。Salesforce、NetSuite、Dynamics、Marketo、kintone など多様なSaaS にBI、アナリティクス、iPaaS、ノーコード開発プラットフォームからアクセスするための仮想エンドポイントです。連携方法が異なるSaaS をMySQL、SQL Server、OData の3種類のインターフェースに仮想化することで、データ連携をシンプルに実現します。
"SQL as a Service" といっていいかもしれません。
www.cdata.com
今回は CData Connectが持つ3つのインターフェースのうちの一つである「OData」を使って、kintone の API を仮想的にODataとして公開しなおし、Unifinityから柔軟に利用できるようにします。
手順
それでは早速アプリを作ってみましょう。
CData Connect でkintone をOData エンドポイントを構成
まず、OData によるAPI連携を実現するために、CData Connect (旧CloudHub) のアカウントを取得します。CData Connect はSaaS ですので、アカウントを取得したらインストールやホスティングなどなく、ブラウザからログインすることですぐに使用開始です。
早速ブラウザからCData Connect にログインします。「DATABASE」タブから仮想データベースを設定していきます。まずは接続するデータソースのアイコンをクリックします。
データソース接続画面が開くので、データソース毎の認証情報を入力します。kintone の場合はURL、User、Password を入力することでkintone データにアクセスすることができます。
次に「ENDPOINTS」タブで、このデータをどのインターフェースのエンドポイントして公開するかを選択します。デフォルトで、OData、MySQL wire protocol、TDS(SQL Server) wire Protocol がすべて有効になっています。
必要があればアクセスを許可する信頼されたIP アドレスを指定することも可能です。
今回はOData エンドポイントとしてkintone データを公開しますので、「ODATA」
タブから公開するデータを選択します。先ほど接続時に作成したKintone を公開するので、データベースとして選択します。
kintone のアプリが一覧で表示されますので、利用するアプリにチェックを入れて選択します。
テーブル(アプリ)を選択したら、次はテーブルに含まれるカラム(フィールド)をどこまで公開するかをチェックします。またOData でアクセスできる処理をGET、POST、PUT、DELETE にチェックを入れることで指定します。
また、必要となるカラムを予め絞っておきましょう。
「API」タブでOData エンドポイントが生成されていることを確認します。CData Connect がOData エンドポイントのドキュメントを自動生成してくれます。
最後に公開したデータにアクセスできるユーザーとトークンを作成します。「USERS」タブからユーザーを作成するとトークンが生成されます。
このようにノーコードでkintone をOData エンドポイントとして公開できました。
Unifinity で ODataエンドポイントを読み取る
API側の準備ができたので、続いて Unifinity側でこのODataエンドポイントを読み取って、アプリを作成してみましょう。
まず、Unifinity Studioを立ち上げて、プロジェクトを作成します。
新しくプロジェクを作成したら、まずはデータモデルとなるDBの情報を定義しましょう。
通常であれば、一つ一つテーブル構造とフィールド構造を構成しなければいけませんが、OData連携を行うことで簡単に構成できます。
「DB」タブに移動して、「OData連携」用のアイコンをクリックします。
この画面で接続先となるODataから連携先を設定します。
先程構成したCData ConnectのODataエンドポイント(https://XXXX/XXXX/api.rsc/)とユーザーのTokenを指定し、「ODataから連携先一覧を取得する」をクリックします。
クリック後、OData連携先名の一覧が出てくるので、先程構成したテーブルを選択して「選択した連携先からテーブルを生成する」をクリックします。
いくつか確認ダイアログが表示されるので、すべて「はい」をクリックします。
その後、以下のようにUnifinityにDB構造が定義されます。kintoneのデータも正常に取得できていることが確認できますね。
また、CData Connectからデータを読込・書込・更新・削除するためのロジックも自動的に生成されて、アプリで自由に扱うことができます。
一覧画面を作成
では、簡単ですが一覧画面を表示するアプリを作成してみましょう。
アプリを作成する前に事前準備として、連携用のエンドポイントとトークンをロジックに指定しておきます。
「処理」→「ユーザー設定ロジック」を選択して、「エンドポイント」と「トークン」の処理名にそれぞれOData接続用の情報を入力します。
入力が完了したら、画面を作成します。
一覧表示は「表」を配置することで作成できます。
表を配置したら、バインド先の要素として先程生成されたテーブルを選択します。
また、合わせてデータを最新化するための読み込みボタンも配置して、実行処理から「読込ロジック」を呼び出すようにしておきましょう。このように自動生成されたロジックは簡単にUIから呼び出して利用できます。
カラーリングも調整して、以下のような画面ができました。
それでは早速アプリを実際に動かしてみます。「アプリを実行する」→「開発環境でそのまま実行」をクリックします。
すると、以下のようにデータが一覧表示されたアプリ画面が表示されました。読み込みボタンをクリックすることで、最新のデータも取得できます。
入力画面の作成
同様に書込用ロジックを利用することで、簡単に入力画面も作成できます。
例えば以下のようにテキストボックスをそれぞれ配置して、ワークテーブルに繋げます。
各テキストボックスはそれぞれワークテーブルのフィールドに関連付けましょう。
あとは作成用のボタンを配置して「書き込みロジック」を呼び出せば、データの作成を行うことができます。
おわりに
同じような手順でデータを更新したり、削除したりも実施できます。
また、今回はkintoneを接続先のリソースとしましたが、外にも様々なリソースを OData インターフェースとして扱うことができます。
www.cdata.com
Unifinity と併せて、是非色々と活用してみてください。
関連コンテンツ