
こんにちは。CData Software Japan マーケ担当の杉本です。
Shopify API をご利用中の皆様はおそらくご存知だと思いますが、Shopify が昨年末にREST API のレガシー化を発表しました。
https://shopify.dev/docs/api/admin-rest/usage/versioning

今回はこのShopify REST Admin API のレガシー化に伴って、CData Driver ってどうなるの? どういう風に使えばいいの? についてお話したいと思います。
REST Admin API のレガシー化について
まず改めてこのREST Admin API とはなんぞや? について確認しておきましょう。
Shopify の注文や商品といった管理データにアクセスが可能なAPI は現在「REST Admin API」と「GraphQL Admin API」の2種類があります。
REST Admin API は古くから提供されていたため今でも多くのユーザーが利用していますが、GraphQL Admin API がリリースされてからはこちらをメインとして利用するようShopify から推奨されていました。
https://shopify.dev/docs/api/admin-graphql

そして昨年2024年10月1日をもってREST Admin API はレガシーAPI というステータスとなり、現時点ではユーザーはREST Admin API を引き続き使用することができるものの、マイグレーションが推奨される状況になりました。
念の為ですが、今のところ廃止の日程などは明確に決まっていませんし、REST Admin API はこのBlog 記事を書いている現在も利用は可能です。
GraphQL を利用する上でのポイント
それではGraphQL 側の話しを進めていきましょう。
ちなみに、GraphQL はFacebook が提唱した新しいAPI 規格で、現在はGraphQL Foundation が推進しています。
https://graphql.org/
通常REST API はHTTP の特性を軸として実装されていますが、GraphQL では独自のクエリ言語を用いて、階層構造的にデータの取得を行います。

私の解釈としては、Facebook のUI のように複数のリソースが画面に散りばめられているようなデータの取得、表現をしたい場合に、真価を発揮するAPI 仕様かなと思います。リソース毎に取得するようなREST API の仕様とは随分異なりますよね。
そんなGraphQL API ですが、CData Shopify ドライバーでは以前よりREST Admin API だけでなく、GraphQL Admin API のサポートも行っており、引き続きどちらも利用が可能です。
https://cdn.cdata.com/help/FOK/jp/jdbc/pg_datamodel.htm

とはいえ、REST Admin API のレガシー化が発表されたことを踏まえて、Driver のV24.3 アップデートでデフォルトで利用するAPI をGraphQL に変更しています。
なおGraphQL Admin API を利用する場合、通常はGraphQL の仕様やデータ構造、API クエリコストを意識したデータアクセスが必要になります。
しかしCData で提供するShopify ドライバーを介することで、Tableau やPower BI などを使っているBI ユーザーなどが使いやすいような表形式のデータモデルに自動で変換されます。
例えばOrders テーブル、以下の画像はREST Admin API で取得する際のデータモデルですが

GraphQL Admin API も同じようにテーブル構造で取得できます。ただ、テーブルの数や項目などが、GraphQL 側での提供方法と違いがあるため、そこは確認や注意が必要ですね。

また、このGraphQL の仕組みの中で最も難しい仕様はおそらくAPI Limit・クエリコストではないでしょうか?
GraphQL は取得したいフィールドに基づきクエリコストが変わります。また、リクエストベースのものと実際の取得結果に基づいたコストにギャップが発生する場合もあり、それも計算が大変ですね。
https://shopify.dev/docs/api/usage/rate-limits#graphql-admin-api-rate-limits

しかしながら、CData Shopify Driver では内部で大量のデータ取得に最適化されたBulk API を自動的に利用する機能が提供されていることから、GraphQL 特有のクエリコストのルールも意識せずにデータ活用に繋げることが可能となっています。
https://cdn.cdata.com/help/FOK/jp/jdbc/pg_performanceingraphql.htm

それでは実際に最新のCData Shopify Driver を使ってGraphQL からデータを取得してみましょう!
Shopify Driver のダウンロード
まずCData WebSite からShopify Driver をダウンロードしましょう。以下のURL からトライアルが入手できます。
https://www.cdata.com/jp/download/download.aspx?sku=FOBK-A&type=demo

接続設定
インストールが完了したら以下のような接続設定画面が表示されるので、Shopify のAPI 接続情報を使って、コネクションを確立します。詳しい接続設定やAccess Token などの取得方法は以下のヘルプを参照してみてください。
Schema は前述の通り、デフォルトでGraphQL を利用するようになっています。
https://cdn.cdata.com/help/FOK/jp/jdbc/pg_connectionj.htm#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AB%E3%82%88%E3%82%8B%E6%8E%A5%E7%B6%9A

接続設定が完了後、「接続テスト」をクリックして、API との疎通確認をしておきます。

ちなみにBI ツールなどからShopify Driver を利用する場合は、前述の通りクエリコストに注意しなければいけません。そのため、クエリコストをあまり意識せずに利用できるBulk API を利用するのが良いでしょう。Bulk API は詳細タブにある「Use Bulk API」をTrue にすることで有効化できます。

クエリのテスト
コネクタには接続テストを行う画面が付属しているので、あらかじめここでどんなデータが取得できるかテストしておくと良いでしょう。
取得できる項目などもこちらから確認できます。

クエリタブでは実際にSQL を発行して、データ取得結果が確認できます。

Power BI からShopify のデータにアクセスしてみる
最後にPower BI から接続を試してみます。Power BI Desktop を立ち上げて「データを取得」をクリック

インストールした「CData Shopify」コネクタを選択します。

Data Source Name に先ほど構成した接続情報の名前を入力します。

次に認証方法の設定が出てきますが、すでに接続構成は済んでいるのでここで特別な指定は必要ありません。匿名で接続してOKです。

これだけで、Power BI からShopify へのGraphQL を利用したデータアクセスが可能になります!
以下のように注文データが取得できることがわかります。

データのロードが完了すると、内部でGraphQL を使っていることを一切意識せずに、データ活用の準備が整ったことがわりますね。

おわりに
このようにCData Driver を利用することで、内部の実装の変更やAPI の仕様を意識せずに、Shopify のデータを好みのBI ツールやExcel などから利用できます。
もしその他技術的に気になることなどがあれば、お気軽にテクニカルサポートまでお問い合わせください。
https://www.cdata.com/jp/support/submit.aspx
関連コンテンツ