『7回目の出直し🌻』

好きなことを自分のペースで、のんびり更新

楽天ウェブサービスのAPI移行にいち早く対応したのでメモしておきます

楽天WebServiceの仕様変更の件、そういえば年末くらいにメール来てましたね。忘れてましたが、正式に動き出したようです。

楽天WebServiceで使ってるのは、ブログの最下部にあるランキングのブログパーツです。見るたびにデータが自動で変わる便利なやつです。

さて、やりますかー!

[重要][お知らせ] 2026-02-10 楽天ウェブサービスのAPI移行に関するご案内 の全文はこちら。

変更点とやること

今回の変更点は大きくは2つです。

変更点
  • APIのURLとパスが変更になった(全員影響あり)
  • アプリケーションの認証方式が変わった(全員影響あり)
  • 一部のエンドポイントが終了になった(古いバージョンを使っている人だけ影響あり)
やること
  • 楽天ウェブサービスでアプリケーション登録をやりなおす
  • プログラムから接続しているAPIのURLを変更する
  • accessKeyのパラメータも送るようにプログラムを修正する
  • (IPアドレスの登録が発生する!)

読んだ感じではプログラムの修正は軽微です。

期限:2026年5月13日がリミットです

アプリケーションの設定内容の確認

まずは、楽天WebServiceページで自分のアプリケーションの登録状況を見てみます。
https://webservice.rakuten.co.jp/app/list

たいていの人は新アプリ登録前なので、旧アプリ(オレンジ色)のものしか出てこないはずですね。僕は新アプリ登録をやってみたので、グレーのものが出ています。

旧アプリ

新アプリ

気が付くこと

新旧の2つを見比べて、気が付くことがあります

1.有効期限が設定されている

新アプリ、旧アプリともに有効期限が設定されています。
旧アプリの有効期限は気にしなくてもよいですが、新アプリにも有効期限が設定されているのが嫌ですね。

2026年2月11日に作ったので、2027年2月11日までになっています。1年ですね

2.有効期限の延長ボタンがある

アプリの設定に有効期限の延長ボタンがありますね。
公式からはアナウンスが無いですが、年に1回、延長ボタンを押すことになりそうですね。めんどくさ

3.アプリケーションシークレットがアクセスキーに変わっている

これはアナウンスどおりですね。APIに付けるパラメータを accessKeyに変わるので、この値をプログラムに仕込みます。

アプリケーションの再登録の手順

ということで、アプリケーション登録をやっていきましょう。

登録フォームを開く

まずは、アプリリストにある新規登録ボタンを押します。

フォームに必要事項を入力する

アプリ登録フォームが出てきます。過去のもとといくつか違いがありますね。

基本情報

項目 入力する値
アプリケーション名 わかりやすいものを適当に入れる
アプリケーションURL 自分のブログのURLなど。何を入れても動作に関係なさそう
アプリケーションタイプ (変更点1)
新しく増えた項目です。後述します
アプリケーションの説明 あとで自分が分かるような説明を書いておくとよい。空白でもよい
利用情報

項目 入力する値
データ利用目的 自分の利用目的を簡単に説明します。楽天の商品を紹介するサービスを作るとか、楽天の商品分析のため、などですね
予想QPS 1秒間に最大何回アクセスするかを書きます。とりあえず5にしておきます
APIアクセススコープ (変更点2)
このAPIでアクセスする可能性があるサービスを選択しておく。楽天市場とブックスくらいだと思います

アプリケーションタイプについて

今回の大きな変更点です。
新形式ではアプリケーションのタイプを宣言する必要が出てきました。

選択肢は2択になっていて、Webアプリケーションバックエンドサービスかどちらかを選びます。選び方によって次の入力が変わってきます。

どちらか分からない場合は、たいていはバックエンドサービスです。

Webアプリケーションの場合

ウェブアプリを選択した場合は、許可されたWebサイトの入力欄が出てきます。

許可されたWebサイト

この設定は、applicationIdaccessKey が一致したとしても、ここで指定したウェブページからのアクセス以外は許可をしないという設定です。

許可してないところからのアクセスは 403 のエラーになります。エラーメッセージを見るとリファラーでチェックしているようです。

{
  "errors": {
    "errorCode": 403,
    "errorMessage": "REQUEST_CONTEXT_BODY_HTTP_REFERRER_MISSING"
  }
}

僕が4年前くらいに作った「楽天ランキングのブログパーツは」、ブラウザ上でJavaScriptを実行し、楽天WebServiceから情報を拾っているのでこっちのタイプになります。

開発期間中は「APIのURLを直叩き」したり、「localhostから接続」したりするので、リファラーチェックは邪魔ですね。

開発中はバックエンドサービスとして登録したアプリケーションIDとアクセスキーを使い、本番にアップするときはWebアプリケーションとして登録したアプリケーションIDとアクセスキーを付け替えるほうがよさそうです。

バックエンドサービスの場合

バックエンドアプリの場合、接続元のIPアドレスを宣言するようになりました。

許可されたIPアドレス

アプリケーションIDやアクセスキーを知っていても、指定したIPアドレスからしか通信が成立しなくなります。こちらも認証情報を悪用されないためのものですね。いままでの仕様から一番変更のあるところで、一番悩ましいところです。

楽天WebServiceの画面でIPアドレスを登録すると即時に反映されます。時差はないので設定してエラーになった場合には、何かしら設定内容が誤っているので、見直しましょう。

登録外のIPから接続するとエラーがでます。

{
  "errors": {
    "errorCode": 403,
    "errorMessage": "CLIENT_IP_NOT_ALLOWED"
  }
} 

問題は、どのIPアドレスを登録するか?というところですね。少しややこしい話になります。

どのIPアドレスを登録するのか?

自分で開発する場合

APIを使ったプログラムを自分のPCで開発している場合、APIへの接続は自分の家のネット回線から行われます。 確認くん などを使って家のIPアドレスを調べて登録しましょう。
ただ、固定IPのオプションに入っていない限り、家のインターネット回線のIPアドレスは変わることがあります。もし、開発中に自分のIPアドレスが変わってしまったのであれば、変わるたびに設定しなおす必要があります。

開発が終わり、レンタルサーバーやクラウドサービスなどの固定の環境に配置して実行する場合、家のIPアドレスだけでは足りていません。レンタルサーバーのIPアドレスを追加で登録しましょう。

GAS(Google Spread Sheet)を使う場合

次にGoogle Spread SheetからAPIを利用するときは何を登録すればよいか?
自分のPCとブラウザで開発をしているので、家のIPアドレスを登録するのかと思いますが、これは間違いです。

必要なのは、APIに誰が(どこから)アクセスするか?という接続元のIPです。 GASの場合、スクリプトの実行ボタンを押してプログラムが動くのは、Googleのサーバー上です。

つまり、Googleのサーバー→楽天WebService とつながるので、楽天WebServiceに登録するIPアドレスはGoogleのIPアドレスです。

GoogleのIPアドレスは、
https://support.google.com/a/answer/10026322?hl=ja で公開されています。

(2026年2月時点)許可IPアドレスは9行までしか登録できません。GASを含めたクラウドサービス系のIPは9行以上あるので、全てを登録することがきません。9個の登録で確実に通るIPにするのは無理ですね。これは困る人出てきそう

プログラムを変更する

アプリケーションの登録とIPアドレスの設定などが終わったら、プログラムが利用しているAPIの接続先とパラメータを変更です。 案内どおりにやれば大丈夫だと思いますが、念のため例を書いておきますね (下のURLはサンプルなのでクリックしても検索は成功しません)

いままで(2026年5月13日まで有効)

https://app.rakuten.co.jp/services/api/IchibaItem/Search/20220601?formatVersion=2&format=json&itemCode=soukaidrink:10015045&applicationId=000

今後

https://openapi.rakuten.co.jp/ichibams/api/IchibaItem/Search/20220601?formatVersion=2&format=json&itemCode=soukaidrink:10015045&applicationId=a-b-c-d-e&accessKey=xxx

変更箇所は、
app.rakuten.co.jp/services/api/IchibaItem/Search/

openapi.rakuten.co.jp/ichibams/api/IchibaItem/Search/

に変更すること。パラメータに accessKey を追加します。

20220601以降はいまのところ変更はありませんので、そのまま使えます。

ちなみに、上の例のアクセスキーだけを自分のものに変更しブラウザのアドレスバーに入れて実行してもエラーになります。 ブラウザのアドレスバーで実行するとバックエンドサービスの扱いになるので、自分のPCのIPアドレスを追加しないといけません。

廃止バージョンか確認する

今回のシステム移行で古いバージョンのAPIが使えなくなります。
最近使い始めた人は、最新バージョン(といっても3年前のバージョン)を使っていると思うので廃止による影響はないと思います。

僕の作ったブログパーツは「ランキングAPIの20170628」を使っていたので、バージョンアップが必要でした。よく確認しておきましょう

対応方法は、後ろの数値を変更するだけです。
古いAPIと最新のAPIで取得できるデータに差がある場合には、プログラムの書き換えが必要になる可能性もあります。

商品検索系:
IchibaItem/Search/20120723
IchibaItem/Search/20121201
IchibaItem/Search/20130424
IchibaItem/Search/20130801
IchibaItem/Search/20130805
IchibaItem/Search/20140222
IchibaItem/Search/20141127
IchibaItem/Search/20150212
IchibaItem/Search/20151216
IchibaItem/Search/20170706

👉 20220601に変更しましょう

ジャンル検索系:
IchibaGenre/Search/20120723
IchibaGenre/Search/20140222

👉 20170711に変更しましょう

タグ検索:
IchibaTag/Search/20131122

👉 20140222に変更しましょう

楽天プロダクト:
Product/Search/20140305
Product/Search/20170426
ProductPriceInfo/Search/20140611
ProductPriceInfo/Search/20170515

👉 20250801に変更しましょう

楽天ランキング:
IchibaItem/Ranking/20120927
IchibaItem/Ranking/20121101
IchibaItem/Ranking/20170628

👉 20220601に変更しましょう

最後にまとめ

楽天ウェブサービスの仕様変更に対応する方法をまとめました。 IPアドレス登録が増えたので、苦戦するひとも出るかもしれませんね。

2021年に作った自動更新機能付きのブログのランキングパーツが影響がありました。もう直しましたので大丈夫です。

楽天のリアルタイム売れてるランキング

ランキング更新日: