Slide 1

Slide 1 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp 1. About CData Software Amazon Marketplace API Update 対応が めちゃくちゃ大変だった件 #burikaigi 2022/01/29 CData Software Japan Kazuya Sugimoto

Slide 2

Slide 2 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp CData Software Japan の API holic 担当 年100種類以上のAPIを見たり触ったりしています。 Twitter:@sugimomoto Facebook:sugimomoto Blog:http://kageura.hatenadiary.jp/ About Speaker 朝5時起きでブリを買ってきました

Slide 3

Slide 3 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp 1. About CData Software 本日のお話

Slide 4

Slide 4 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp 業界最多級のデータソース Drivers for NoSQL, Big Data, & SaaS Connectivity CRMおよびマーケティング自動化 会計システム コラボレーションおよびERP オンプレミスおよびクラウドDB ドキュメントおよびファイル形式 ソーシャルネットワーキング ネットワーキングおよび認証 電子商取引 その他

Slide 5

Slide 5 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp API アップデートへの追従がチョー大変

Slide 6

Slide 6 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp その中でもとりわけエグかった 「Amazon Marketplace API Update 」 その対応で得た知見をシェア

Slide 7

Slide 7 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp 1. About CData Software Amazon Marketplace API とは?

Slide 8

Slide 8 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp Amazon Marketplace の 在庫・注文・商品・レポートなどが管理できるAPI

Slide 9

Slide 9 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp 1. About CData Software どんなAPI Updateだったの?

Slide 10

Slide 10 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp API Update の変更ポイント 1.APIデザイン 2.フォーマット 3.認証・認可 4.スケジュール

Slide 11

Slide 11 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp APIデザインが大幅刷新 RPCライクなものからRESTベースに POST /Orders/2013-09- 01/?AWSAccessKeyId=AKIAIKW5JHOTOOWSF43A&Ac tion=ListOrders&LastUpdatedAfter=1969-12- 31T15%3A00%3A00Z&MWSAuthToken=amzn.mws.X XX&MarketplaceId.Id.1=A1VC38T7YXB528&SellerId=A 1WD8M4EQL9XVH&Signature=XXXXX&SignatureMeth od=HmacSHA256&SignatureVersion=2&Timestamp= 2020-10-02T00%3A27%3A20Z&Version=2013-09-01 HTTP/1.1 Host: mws.amazonservices.jp Accept: application/xml Content-Type: application/xml GET /orders/v0/orders?MarketplaceIds=A1VC38T7YXB5 28&CreatedAfter=2021-08-09 HTTP/1.1 Host: sellingpartnerapi-fe.amazon.com Accept: application/json Authorization:****** x-amz-access-token: XXXXX x-amz-date: 20210809T073105Z x-amz-security-token: XXXXX MWS API Selling Partner API

Slide 12

Slide 12 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp レスポンスフォーマットが XMLからJSONに変更 2018-08- 17T14:59:59Z StandardOrder 2018-08- 15T09:59:55.270Z { "payload": { "Orders": [ { "NumberOfItemsUnshipped": 0, "BuyerInfo": {}, "IsReplacementOrder": "false", "IsSoldByAB": false, "AmazonOrderId": "503-9993250-1405404", "LatestShipDate": "2018-08-17T14:59:59Z", "EarliestShipDate": "2018-08-15T15:00:00Z MWS API Selling Partner API

Slide 13

Slide 13 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp 認証・認可方法が 独自認証から独特な OAuth 2.0?に クライアント ユーザー リソース 1. AWS IAMで AssumeRole を実施 2. Amazon marketplace APIへのア クセス権を付与したAWS AccessKey・SecretKeyを取得 3. 認可URLを生成 4. 認証・認可処理をリクエスト・ Codeを取得 5. Codeと引き換えにAccess Token を取得 6. Access TokenとAccessKey・ SecretKeyを元にAWS Signature を生成して、リクエストを実施

Slide 14

Slide 14 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp API仕様が大幅変更にも関わらず 旧バージョンAPI終了予定が半年後 https://sellercentral.amazon.co.jp/forums/t/topic/73349 ※現在は2022年7月に延期

Slide 15

Slide 15 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp 1. About CData Software 対応として工夫した点

Slide 16

Slide 16 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp デザインディスカッションする前に 必要なAPIをすべて試す ・開発チームに共有するために自分が実装 できる粒度でAPIを一通り試しておく ・Postman Collectionで必要なAPIリ クエスト・設定・検証方法を共有 ・検証した知見をドキュメント化して共有・つ いでに Blog にしてマーケティングコンテンツ に。開発チームもHappy https://www.cdatablog.jp/entry/amazonspapihowto01

Slide 17

Slide 17 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp データモデルを極力変えない MWS API SP-API Column Name Type Column Name Type OrderItemId VARCHAR OrderItemId VARCHAR AmazonOrderId VARCHAR AmazonOrderId VARCHAR ASIN VARCHAR ASIN VARCHAR SellerSKU VARCHAR SellerSKU VARCHAR BuyerCustomizedInfoCustomizedURL VARCHAR BuyerCustomizedInfoCustomizedURL VARCHAR Title VARCHAR Title VARCHAR QuantityOrdered INT QuantityOrdered INT QuantityShipped INT QuantityShipped INT GrantedPointsNumber INT GrantedPointsNumber INT GrantedPointsMonetaryValueAmount DECIMAL GrantedPointsMonetaryValueAmount DECIMAL GrantedPointsMonetaryValueCurrencyCode VARCHAR GrantedPointsMonetaryValueCurrencyCode VARCHAR NumberOfItems INT NumberOfItems INT ItemPriceAmount DECIMAL ItemPriceAmount DECIMAL ItemPriceCurrencyCode VARCHAR ItemPriceCurrencyCode VARCHAR ShippingPriceAmount DECIMAL ShippingPriceAmount DECIMAL ShippingPriceCurrencyCode VARCHAR ShippingPriceCurrencyCode VARCHAR GiftWrapPriceAmount VARCHAR GiftWrapPriceAmount VARCHAR GiftWrapPriceCurrencyCode VARCHAR GiftWrapPriceCurrencyCode VARCHAR TaxCollectionName VARCHAR #N/A #N/A TaxCollectionValue VARCHAR #N/A #N/A ItemTaxAmount DECIMAL ItemTaxAmount DECIMAL ・内部の実装は異なるが、インターフェース レベルでは同じ仕様を保てるようにする ・移行のしやすさ、ビジネスロジックサイドへ の影響を最小化 ・新しいAPIで存在しない項目、追加され た項目は致し方ないが

Slide 18

Slide 18 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp 前のデータモデル・ロジックも残す ・API順次廃止とはいえ、まだ未リリースの APIもあったため、スムーズな切り替えのた めデータモデル・ロジックを残存 (メンテナンスコストの観点から最初は反 発があった)

Slide 19

Slide 19 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp 1. About CData Software まとめ

Slide 20

Slide 20 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp そんなこんなありながら、無事リリースしました https://www.cdatablog.jp/entry/amazonmarketplacespapiupdate

Slide 21

Slide 21 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp 不安定かつ多様な「API」と共存している

Slide 22

Slide 22 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp 不安定かつ多様なAPIと 連携しなければいけないのが実情 もし、この不安定さが直接的に ビジネスロジックに影響したら? APIへの追従・機能追加がアプリの スケールを阻害する可能性がある

Slide 23

Slide 23 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp API Update 前提でビジネスと アーキテクチャを考えておくこと 疎結合・インターフェースを意識 ビジネスロジックへの影響を最小化するポイント こういうアップデートもあるんだということを ぜひ心に留めておいてください

Slide 24

Slide 24 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp 1. About CData Software 最後に

Slide 25

Slide 25 text

© 2022 CData Software Japan, LLC | www.cdata.com/jp CData Software Japan では 業務拡大につき新しいメンバーを絶賛募集中! https://www.wantedly.com/companies/cdata2/projects ・テクニカルサポートエンジニア ・製品開発エンジニア ・インサイドセールス ・ローカライゼーション etc