既にニュースをご覧いただいて、ご存知な方もいるかもしれませんが、Idera(Embarcaderoの親会社)は先日、IPアドレスのジオロケーションからe-mailや電話番号の確認、金融情報から天気やフライトの追跡といった多数のREST APIマイクロサービスを提供するapilayer社を買収しました。同社の製品リストは https://apilayer.com/ で見ることができ、各製品には独自のWebサイトがあります。一般ユーザー向けにREST呼び出し数が限定された無償なアカウントも提供されており、それにサインインできます。
このブログ記事では、利用可能なサービスについては説明しませんが、RAD Studioからこのサービスを利用する方法にフォーカスし、 今回は無償でオープンなREST countries APIと、特別なジオロケーションサービスの1つを使用した例を紹介いたします。
REST Countries APIの使用
まずapilayerサービスを探索するための手始めとして、REST Countries APIを試したいと思います。このサービスは、https://github.com/apilayer/restcountriesでドキュメントとして提供され、シンプルかつ全て無償で利用可能です。このサービスをRAD Studioで付属しているRESTデバッガを使用し、クエリ実行を試してみました。名前のエンドポイントを使用し、オプションでパラメータを渡しています(パラメータ値は「united」)
RESTデバッガでデータが正しく表示されたら、REST デバッガの[コンポーネントのコピー(Copy Components)] ボタンを押すと、アプリケーションの構築に必要なRESTクライアントライブラリコンポーネント(TRESTClient、TRESTRequest、TRESTResponse)がクリップボードにコピーされます。 そしてDelphiもしくはC++Builderで(VCLまたはFMX)アプリケーションのプロジェクトを作成し、コピーしたコンポーネントをデータモジュール(またはフォーム)に貼り付け(ペースト)をします。今回はDelphiのVCLアプリケーションでの例を示します。
ここでの例は、フォームにPanelを配置し、その上にEditとButtonとDBGrid(DataSourceと併せて)を配置してコンポーネント同士の関連付けを行い、設計時にRESTRequestを実行してデータのプレビューを取得しました。
以下は、フィルタリングを行う簡単なコード例です。
[crayon-676891f999da6195354104/]但し、一点だけ変更する必要があり、RESTResponseDataSetAdapter1コンポーネントのTypesModeプロパティをJSONOnlyに変更しました。その理由は、一部のデータ分析が誤ってタイムゾーン関連のテキストを日付に変換しようとして例外が発生したためです。
Position Stack APIを使用した逆ジオコーディング
次にPosition Stack APIを試したいと思います。このサービスを利用するには基本的に有償となりますが、限定的に無償利用可能な機能もあるため、今回はそれを使用します。
このサービスでは、直接・逆ジオコーディングやマッピングサービスなどを提供しています。ここでは、住所を指定して緯度、経度、その他のローカル情報をRESTデバッガで読み取るという単純な「順方向」のジオコーディングを行ってみました。表形式の結果を得るために、data要素を使用してJSONルートを設定する必要がありました。
このサービスを利用するには、APIの開発者キーにサインアップして、リクエストの追加パラメータとしてそれを入力する必要があります。(最終的なアプリケーションでは、プレーンな文字列をキーに使用するのではなく、そのキーをエンコードすることをお勧めします。)
そして上記で行ったRESTデバッガで[コンポーネントのコピー]ボタンを押して、RAD Studioアプリケーションにコンポーネントをコピーし、ジオコーディングFMXアプリを作成します。ライブバインディングを利用することで設計時に都市の緯度と経度のデータを表示できます。(この例では、都市の緯度と経度に加えて、米国内の同じ名前の別の都市も表示されています)
まとめ
デスクトップとモバイルの両方のアプリケーション開発にマイクロサービスAPIを活用することで、革新的な機能の構築と展開を大幅にスピードアップし、同時にスケーラブルなインフラストラクチャにそれらを配置できます。今後は、より多くのapilayerサービスを活用することを視野に入れて、将来的にこれらのサービスを提供できるプロジェクトを検討していきます。