MapForceを使ったGroupon APIの処理 - 第2部
このシリーズの第1部では、Altova MapForceをGroupon APIに接続する方法について説明しました。まず、APIに問い合わせてGrouponの各部門の一覧を取得し、その一覧を使って、各部門の現在のすべてのキャンペーンに関するAPIクエリを作成しました。今回は、作成した/dealsクエリを実行し、その結果から最も興味深いデータを抽出します。以前に作成した/dealsクエリの一覧は以下のようになります
![]()
すべての問い合わせを処理するために、このリストを動的なファイル入力として、新しいマッピングコンポーネントに接続することができます。以前、新しいコンポーネントが必要になった際、API/部門に関する問い合わせをマッピングに追加し、MapForceにXMLスキーマを自動的に作成させました。今回も、同様にAPI/取引に関する問い合わせをXML入力ファイルとして追加することができます。ただし、わずかな問題点があります。GrouponのAPIに関するオンラインドキュメントでは、実行できる問い合わせについて明確に説明されていますが、返される情報については曖昧です。現在実施中のすべての取引について、数十件の問い合わせをAPIに送信する前に、返ってくるデータについてもう少し詳しく知っておく必要があるでしょう。
条件交渉しましょう
ヨギ・ベラが言ったように、ただ観察するだけでも多くのことがわかります。まずは、〇〇(具体的なツールやプラットフォーム名)で「deals」というキーワードで検索してみましょう XMLSpy. これにより、大量のデータを処理する前に、ある特定の部門に対するクエリの応答を確認することができます。XMLSpyの「ファイル」/「開く」メニューには、以前の投稿でMapForceで使用したのと同じ「URLに切り替え」オプションが含まれています。もし、広大な都市圏をカバーするある部門(例えば、ダラス)に対する/deals APIクエリを実行すると、十分な数の取引データが得られる可能性があり、それらを用いてデータセット全体の特性を推測することができます。XMLSpyは、/deals APIクエリに対する応答を、ローカルファイルを開くのと同じように、テキスト表示で開きます
![]()
予想通り、特定の部門に関する全ての取引データを要求した結果、大量のデータが得られました。このデータの構造を効率的に分析するためには、XMLSpyのDTD/スキーマメニューオプションを使用して、XMLファイルから.xsdファイルを生成する方法が有効です。以下に、ダラスに関する/dealsクエリに対する応答に基づいて生成された.xsdファイルの一部を表示します
![]()
さらに深く掘り下げてみましょう。ヨギのアドバイスに従い、まるでデジャヴのように、XMLスキーマの要素を一つ一つ確認していくと、いくつかの興味深い異常が見つかります。例えば、同じく「redemptionLocation」という名前の要素ですが、定義が異なるものが二つ存在します。最初の要素には、子要素が順番に並んでいます
![]()
そして、2番目のものは、単純な文字列として定義されます
![]()
ダラスに関するXMLデータに戻り、"redemptionLocation" を検索すると、以下のような例が表示されます
![]()
そして:
![]()
そして:
![]()
これは非常に興味深い点です。なぜなら、redemptionLocation = "online" と指定することで、特定の店舗への訪問を必要とせず、どこからでも利用できるお得な情報のみを表示するように設定できるからです。もし、すべての部門に対して /deals API を実行し、オンラインで利用できるすべての情報をリスト化したらどうでしょうか?それはまさに究極のグルーポンと言えるでしょう!
必要な情報のみを要求する グルーポン /deals API のクエリには、オプションのパラメータ "&show=" があり、これによりユーザーは返されるデータを制限できます。このパラメータを使用することで、不要なデータを API の応答から除外し、帯域幅を節約し、データ変換にかかる処理時間を短縮できます。また、グルーポンウェブページのリンクなど、最も興味深い情報のみを含めることで、最終的な結果を簡素化することも可能です。生成されたダラススキーマから不要な要素を取り除いた後、オンラインでの特典に関する要約の最終的なバージョンは以下のようになります
![]()
MapForceのマッピングに、簡略化されたXMLスキーマに含まれる要素のみを取得するための "&show=" パラメータを追加した場合、クエリは以下のようになります
![]()
今、修正された.xsdファイルをマッピングに配置し、APIや取引に関するクエリの一覧を動的な入力として接続することができます。以前にクエリの一覧を収集するために使用していたテキストファイルは削除する必要はありません。将来のデバッグ作業で役立つ可能性があるため、そのままにしておくと良いでしょう。
![]()
これらの変更により、データマッピングの入力側の作業が完了します。
データ変換の出力内容の定義
XMLSpyに戻り、入力XMLスキーマに対してさらにいくつかの修正を加えることで、出力用の新しいバージョンを設計することができます
![]()
不要なレスポンス要素は削除し、出力に含める予定のない「redemptionLocation」要素も取り除きました。また、出力ファイルが常に変化するデータのスナップショットであるため、タイムスタンプを示す「date」要素を追加しました。
この.xsdファイルをXMLSpyに保存した後、それをMapForceのマッピングに組み込むことができます。以下に、マッピングの出力側の一部を示します。出力コンポーネントは一部接続されています。上部のフィルターは、"redemptionLocation"要素を読み込み、オンラインでのみ利用可能な特典を選択します。また、"now"関数は現在の日付を挿入します
![]()
出力XMLスキーマにおける最後の修正は、いくつかの要素のデータ型をdateTime、Boolean、およびintegerから文字列型に変更したものです。これにより、より詳細なテキストを記述できるようになりました。以下に、出力コンポーネントとの最終的な関連付けを含む、マッピングの完全な定義を示します
![]()
さて、いよいよ本題に入ります
「出力」ボタンをクリックすると、MapForceは、組み込みの実行エンジンを使用して、マッピング全体を最初から最後まで処理します。以下に、その手順の概要を示します
/divisionsコマンドを実行して、現在の部門リストを取得してください- すべての部門に対する "/deals" クエリのリストを作成するために、文字列を連結します
/dealsクエリを実行して、入力コンポーネントで使用するための動的なデータを作成します- オンラインでの割引情報をフィルタリングし、その結果に基づいて出力コンポーネントを生成します。その後、残りのマッピング関数を実行し、すべての割引情報が処理された後にタイムスタンプを追加します
MapForceは、これらのすべての処理をわずか数秒で完了し、以下のような一連の取引情報を含む出力ファイルを作成します
![]()
このシリーズの第3回では、作成したマッピングのXML出力を、ウェブブラウザやモバイルデバイスで美しく表示できるよう、自動的にHTMLに変換するスタイルシートを設計します。それでは、また球場で会いましょう、ヨギ!
XMLSpyとMapForceは、特別価格で提供されているAltova MissionKitにセットで含まれています。MissionKitを使って、ウェブAPIからデータを変換するがいかに簡単であるか、ぜひご自身で体験してみてください 30日間の無料トライアルをダウンロード!
編集後記: 弊社のGroupon APIから取得したデータを活用したオリジナルシリーズは、3つのパートで構成されており、以下のリンクをクリックして各パートをご覧ください。パート1: Altova MapForce を使用した Groupon API の処理 複数のURLからデータを収集することで、動的な入力を作成する方法について説明します。 MapForceを使ったGroupon APIの処理 - 第2部 APIから取得したデータをどのようにフィルタリングし、必要な情報のみを抽出するために、出力形式をどのように定義したかを説明します。 Groupon APIの利用方法 - 第3部 この機能は、出力結果をデスクトップ環境とモバイルデバイスの両方で最適化された単一のHTMLドキュメントとして整形する方法について説明し、繰り返し実行を自動化するための方法についても解説しています。