各社がウェブサービス(API)で商品データを公開しています。
最近はXMLの他にJSONPデータも増えています。
JSONPデータは、Javascriptから非同期通信で呼び出せるため、ブログパーツなどに利用すると便利です。当方が公開しているブログパーツも、JSONP&Javascriptで組んでいます。
ただ、ちょっと引っかかる事があります。
UserID守秘義務
ウェブサービスからデーターを呼び出す際には、UserIDやTOKENなどといった、なんらかの識別IDをクエリにぶら下げる必要があります。
これらの多くは守秘義務が課せられています。第三者に利用された場合は、責任はユーザー本人にあるとされています。
しかし、Javascriptコード&ファイルを完全に隠すことはできません。色々調べてみましたが、かなり難しいようです。
ウェブサービスを利用して、JSONPファイルをJavascriptから呼び出す場合は、UserIDが第三者に見えてしまう可能性があるわけです。
当方のブログパーツにも、ブログパーツのコード内にUserIDは書き込まれています。ただし、見ただけで読めないようになっています。
しかし、ある程度の知識がある人であれば、解読することは可能です。
JSONPを配布している以上は
JSONPデータとは、Javascriptから利用することで有用性が発揮されます。ていうか、それ以外の利用価値ってあるのかな?
ところが、UserIDの守秘義務があります。これを完全に守ろうとすると、JavascriptによるJSONPデータの利用は実質的に不可能ということになります。
ちょっと矛盾していますよね。
「第三者に悪用されたら、守秘義務違反でUseIDは無効しますよ。それでも良ければJSONPデータは利用してもいいよ。」
と聞こえてしまいます。
JSONPを配布している以上は、有効利用も悪用もひっくるめて、ウェブサービス側が全て面倒を見る覚悟が必要だと思います。
対策はあるのか?
楽天ウェブサービスのフォーラムで、同様な議論を見つけました。楽天側から「JSONP利用とID守秘義務については、規約の内容を検討する」との発言がありました。
バリューコマースやリンクシェアなどは、TOKEN(トークン)の守秘義務については、記載が見つけられませんでした。
なぜかというと、これらのAPIについては、他人のTOKENを踏み台にしてまで利用するメリットがないからです。
吐き出されるデーターは、TOKENと紐付けされているユーザーが提携しているマーチャントの商品データーで、リンクは元ユーザーのアフィリエイトリンクになっています。
そんなデーターを入手したところで、使い道がないんですよね。
この例から考えると、対策は、「UserIDとアフィリエイトIDを紐付けしておくこと」だと思います。
楽天市場はディベロッパーIDとアフィリエイトIDを何故か別々に発行しています。一つにまとめてしまえば問題はほぼ解決すると思います。
JSONP配布の覚悟
先日Amazonがウェブサービスの規約と仕様を変更しました。今後はIDに守秘義務が求められ、呼び出しクエリに署名をつける必要があります。
XSLTプロセッサでデータをhtmlに変換したものをiframeで呼び出したり、JSONPに変換したりと、サーバーサイドから利用しやすいAPIだっただけに、残念です。
Javascriptで表示されてしまうと、被リンク効果が期待できないことと、クライアントサイドから直接呼び出される負荷の大きさのとの兼ね合いが取れなくなってきたのかもしれません。
サーバーサイドであれば、スピードアップ&安定化のために、自前でキャッシュが普通で、負荷が利用側にも分散されます。
それに対して、クライアントサイトのスクリプトは、キャッシュができませんから、全ての負荷をウェブサービス側が負うことになります。
JSONPデータを配布するということは、それなりのサーバー負荷を背負う覚悟が必要ということでしょうね。
コメント