9日目の記事として投稿しています。顧客管理用のアプリを抽象化したAPIを作成してみようと思います。APIの処理を実装するおわりにそもそもなぜ抽象化したAPIを作成するのか?この記事で実際にできあがるものは、シンプルなAPI一つです。0.0.0.0:8081/api/customers/1」のようなHTTPリクエストで取得できるようにする、というものです。https://qiita.com/mitch_oka/items/63d6323782c27e02fba6)となりますが、MuleSoftは単純なAPI作成のサービスではなく、企業のビジネスモデルをAPIという側面から全体整理し開発者・エンドユーザーへのエクスペリエンスを高めるためのトータルソリューションです。それは、RDBで構成されたデータをAPI化するといった単純なものではなく、すでに企業内に存在する各種SaaSやPaaSのAPIも含めて、APIファシリティを整え、オーケストレーションし、監視・管理を行います。そのアーキテクチャを端的にわかりやすく示しているのが、MuleSoftが推奨している以下の3レイヤーの考え方でしょう。https://www.MuleSoft.com/resources/api/leveraging-digital-transformation-rightすべての企業データは現在様々なサービス・DB(RDB・NoSQL問わず)管理され、フロントエンドはそれらの情報単一のデータソースではなく、複合的なデータソースから、特定のビジネスシナリオを元に要求します。観点で大きくコストが発生します。顧客のデータを取得したいのに、取得したいデータの実体は、SalesforceとMarketoとSAPに存在していた、そしてそれら一つ一つの仕様の違うAPIリクエストロジックを書いていたら・・・、と考えると、なかなか怖いことがイメージできるのではないでしょうか。APIsレイヤーでフロントエンドの要求するAPIの処理を束ねます。これにより、様々な媒体・チャネルから要求されるAPIのエクスペリエンスを高めようというのが、MuleSoftのコンセプトであると考えられます。レイヤーの拡張性を高めるために、数々のコネクターを提供しています。SalesforceやBox、Marketoなど、50種類ほどの提供されています。顧客情報が管理されていて、それらをデータソースとして使えないと厳しいといった場合もあると思います。カバーしてしまうというのが今回のお話です。APIを作ってみたいと思います。Studioに準じます。アカウントも用意しておいてください。今回作成するAPIは、以下のRAMLで定義されたシンプルなAPIです。アプリを検索し、レスポンスを返します。以下のURLからトライアルがダウンロード可能となっています。https://www.cdata.com/drivers/kintone/mule/ZIPファイルがダウンロードできるので、任意のフォルダへ解凍してください。コマンドから実行することで、アクティベーションできます。使って、API定義を作成します。「https://gist.github.com/sugimomoto/d4b9dbee5955767166ef2d55adbb6212」のRAML定義を貼り付けて、ExchangeにPublishすれば準備完了です。Studioを立ち上げてプロジェクトを作成します。定義をExhcnageからインポートします。APIを検索すると、先程Exchangeに登録したAPI定義が表示されるので、これを追加します。使えるようにセットアップします。「KintoneMuleSoftConnector\connectors」フォルダから「cdata-kintone-connector-19.0.7216-mule-plugin.jar」を参照して、インストールします。あとはProjectの「pom.xml」を開いて、以下のXMLを追加(バージョンはHelpに記載されているものを使用してください)すれば設定完了です。Connectorの各モジュールがパレットに表示されます。APIの内部処理を作っていきましょう。ListnerでAPIをコールできるように設定を行います。今回はローカルだけで試すので、ProtocolはHTTP、Hostは「0.0.0.0」、Portは「8081」を設定しました。データ取得処理を記述します。「Select」モジュールを以下のように配置します。接続情報を入力します。最低限必要な情報は以下の3種類です。クリックし、接続で切れいればOKです。データを取得する部分を記述します。APIをRDBに仮想化し、SQLでデータの操作を可能にします。InputParameterでURLパラメータから渡ってきて、事前に変数に格納されているcustomerIdを定義します。:Id;」を書きます。API仕様を意識することなく、データの取得処理を記述できます。あとは、取得したデータを最終的なレスポンスのJSONにマッピングします。Messageにて、渡ってきたPayloadの最初のレコードを変数に格納し、kintoneの各カラムをマッピングします。MuleSoftが海外のプラットフォームなので若干心配だったんですが、日本語カラムも問題なく利用できるのがいいですね。customer."メールアドレス"}それでは、APIを実行してみましょう。「Run」ボタンをクリック後、APIが実行状態になるのを待ちます。0.0.0.0:8081/api/customers/1」を投げます。レコードを検索し、顧客情報が取得できました。顧客登録し、Salesforceに問い合わせ情報を入力する、みたいなことも可能になります。企業内の様々なAPIの構築、統合、管理に活用してみてください。(翻訳)Twitter@sugimomotoさんのツイートはてなブログをはじめよう!sugimomotoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。