小規模EC事業者向けにAmazon・楽天・Yahoo!の在庫を自動で同期する方法をお伝えします。大きくわけて二つ考え方があります。一つは在庫連携システムを使うこと。もう一つは自作することです。
目次
- 在庫連携を厳しくする場合
- ゆるい在庫管理でOKの場合
- 自分で自動化する場合
- ChatGPTに作らせよう
- タスクスケジューラで設定しよう
在庫連携を厳しくする場合
取り扱い商品に一点物が多いとか、すぐ売り切れる商品が多いとか、実店舗と在庫共有をしている場合などは厳しく在庫連携をする必要があります。この場合はネクストエンジンやクロスモール、TEMPOSTARなどの在庫連携システムを使うのが手っ取り早いです。こういった定番のツールを未使用の場合は、さっさと導入することがおすすめします。悩んでいる間に在庫はどんどんずれていきます。
ゆるい在庫連携でOKの場合
取り扱い商品の種類がさほど多くもなく、在庫が豊富な場合は、そこまで厳しく在庫連携をする必要がないというネットショップもあるでしょう。そういう店舗なら一日に一回Amazon・楽天・Yahoo!などの在庫を同期すれば十分でしょう。こんな場合の在庫連携を手作業でしている方もいると思います。
手作業の場合
手作業で同期するのは、たとえ一日に一回でも大変です。楽天はRMSにログインし、商品CSVをダウンロードし、同様にAmazon、Yahooなどの他のモールの在庫もダウンロードします。商品IDで在庫を付き合わせ、その日の販売数を差し引いてマスターを作り、それをまた各モールにアップします。こんな作業を毎日していては間違いも発生します。なにより作業者の負担が大きすぎます。
自分で自動化する場合
自動化する場合は二つ方法があります。一つはRPAといってブラウザで操作する手作業の手順をそのままプログラムにやらせる方法です。もう一つはAPIといって、モールのデータに直接アクセスし更新する方法です。
RPAのメリット、デメリット
RPAはブラウザの操作をプログラムにやらせるというものです。プログラムは人と違って融通が利かないため、例えばRMSにいつも違うお知らせなどが表示された場合、エラーで止まる場合があります。これがデメリットです。一方メリットは、人がブラウザで操作するのと同じようなものなので、API利用料金が発生しません。
APIのメリット、デメリット
APIの利用には追加費用が発生する場合があります。楽天の、yahoo、Amazonに関してはかかりませんが、ネクストエンジンやBOSSなどは追加費用が発生します。これがデメリットです。一方メリットは、RPAよりずっと安定して動かすことができます。楽天などの在庫を取得、更新するだけなら費用は発生しないので、APIをどんどん活用しましょう。
ChatGPTを使おう
自分で作るといってプログラムの知識がないとAPIを利用できないと思うでしょうが、今どきはChatGPTなどを使えば簡単なコードを書いてくれます。試しにChatGPTに「楽天APIでskuを指定して在庫を取得するサンプルコードをpythonで書いて」とプロンプトを入力してみましょう。そうすると以下のようなコードが出てきました。これを手元のパソコンで動かすだけで楽天の在庫取得ができてしまいます。
※楽天APIの利用申請が必要です。
import requests
import json
SERVICE_SECRET = "YOUR_SERVICE_SECRET"
LICENSE_KEY = "YOUR_LICENSE_KEY"
SHOP_URL = "https://api.rms.rakuten.co.jp/es/1.0/inventory/get"
# 取得したいSKU情報
payload = {
"itemInventoryGetRequest": {
"itemUrl": "example-item-001", # 商品URL(itemUrl)
"itemManageNumber": "10001", # 商品管理番号
"rakutenSku": "SKU-001" # SKU名
}
}
headers = {
"Content-Type": "application/json; charset=utf-8",
"Authorization": f"ESA {SERVICE_SECRET}:{LICENSE_KEY}"
}
def get_inventory():
try:
response = requests.post(SHOP_URL, headers=headers, json=payload)
response.raise_for_status()
data = response.json()
print(json.dumps(data, indent=2, ensure_ascii=False))
# 在庫数だけ取得する例
stock_quantity = data["itemInventoryGetResult"]["inventory"]["inventoryItem"]["inventoryCount"]
print("在庫数:", stock_quantity)
except Exception as e:
print("Error:", e)
if __name__ == "__main__":
get_inventory()
同じように、「楽天のAPIでSKUを指定して在庫を更新したい。」とプロンプトを入力すれば、サンプルのコードが出てきます。Amazon、Yahooも同様です。なおAmazonのAPI利用は楽天より少し面倒です。まず大口契約が必須です。そして申請方法が分からない方はセラーセントラルでアプリ申請をしてSP-APIでEC業務を自動化しようを参照してみてください。
タスクスケジューラで設定しよう
あなたがWindowsを使っているなら、ChatGPTに作ったコードをタスクスケジューラで動かせば、簡単な在庫連携システムの完成です。これで手作業で在庫連携する必要はありません。
以下にタスクスケジューラの設定例を紹介します。「タスクの作成」の「操作」にPythonと作ったソースコードを指定します。Pathはお使いの環境にあわせて修正してください。
プログラム
C:\Users\user_name\AppData\Local\Programs\Python\Python313\python.exe
引数の追加
C:\Users\user_name\Desktop\app\hogehoge.py
ChatGPTなどAIが進化した恩恵を存分に活用して、ストレスのないEC運用をしましょう。




