WEBサービスって何?その2

■ WEBサービスって何?その2 ■

こんにちは。tanzan です。

Google のページランクに変動がありましたね。僕の管理するサイトでは上昇・下降両方が見られますが、通算すると、上昇したサイトの方が多かったです。

下降したサイトはコンテンツが薄くて結構納得できる、「さすが Google。よく見てますね。」という感じなのですが、上昇したサイトの中には、ページ数が非常に少ないところもあり、「え?このサイト、評価を上げちゃっていいの?」と思うことも。

1ページしかない、カラフル・カタツムリのサイトにもページランクが付きましたし。基準は何でしょうねえ。

まあ、上げてくれる分にはもちろん文句はないのですが。

■ アフィリエイト・ニュース・ピックアップ

「おしえるまなべる」プロモーションの終了

「おしえるまなべる」というのは、リクルートが運営するサイトで、「教えられることがある人」「習いたいことがある人」の双方が登録してマッチングを行う、というサービスです。

ValueCommerce でアフィリエイトを行っていましたが、6月1日でプロモーションが終了になるそうです。

僕は複数のサイトで提携し、月に数件ですが、コンスタントに成果が出ていたので、終了するのは残念です。

終了はいたしかたないのですが、解せないのは ValueCommerce の担当者からの連絡です。5月の初めに「お宅のサイトで提携して欲しい」と直メールで依頼が来ていたのです。

それから1ヶ月もたたない間にプロモーションが終了。もし、担当者も寝耳に水状態であったならばしかたありません。マーチャントが自社の都合でプロモーションを急に取りやめることは珍しくありません。

しかし、担当者が終了を知っていた上で提携の依頼を打診してきていたとしたら、馬鹿にした話です。提携手続きや、広告の取得、そしてサイトへの掲載という手間をかけたらすぐに終了。稼ぐ時間は最初からありません。

僕が想像しているシナリオはこうです。マーチャントから提携するアフィリエイター数が少ないか、成果数が少ないことを指摘され、「なんとか成果を上げなければ」と考えた ValueCommerce の担当者が、慌てて、ある程度成果を出しているアフィリエイターに広告掲載を打診した。でも時既に遅し、でプロモーションを打ち切られてしまった。

まあ、担当者としてはそれ以外にアイデアも、考えられる手段もないでしょうから良いでしょう。でも、「パートナー」と呼び、協力を求めるのであれば、挨拶の一言くらいあっても良いのでは?

■ WEBサービスって何?その2

前回はWEBサービス(API)の基本的仕組みについて書きました。今回は実際にWEBサービスを呼び出す方法から入りましょう。

「呼び出す」実際には、各サービスのプログラムに、キーワードや他の条件、そしてユーザーIDなどの情報を定められた方法で渡し、「該当するデータを送ってちょ!」と通信することです。

こうした方法のことを、プロトコルなどとも呼びますが、代表的なものはRESTというもので、僕はもっぱらこれを使っています。

RESTというのは、Representational State Transfer の略ですが、僕自身も意味はよくわかりませんから、皆さんも覚える必要は全然ありません。

実際の使い方は、ホームページのアドレス(URI)に必要な情報を埋め込んで渡すものです。以下を見てください。

http://esearch.rakuten.co.jp/rms/sd/esearch/vc?sv=2&sitem=i-pod

これは楽天市場で i-pod を検索した時に表示されるホームページのアドレスです。僕らは「検索した結果このアドレスが表示される」と思いがちですが、そうではありません。

このアドレスを表示させるから、検索結果がブラウザーに表示されるのです。試しに上のアドレスをクリックしてみてください。誰がやっても楽天市場で i-pod を検索した結果が表示されるはずです。

これは実際には何をしているかと言うと、http://esearch.rakuten.co.jp/ という名前を付けられたサーバーの中にある、rms/sd/esearch/vc というプログラムに、sv=2 と sitem=i-pod という二つの情報を渡しているのです。

プログラムはこの二つの情報を元に、商品情報をHTML文の中に埋め込んで返して来ます。ブラウザーがそれを受取って「ああ、これはHTML文だ」と解釈し、ホームページとして表示します。楽天市場の検索結果表示はWEBサービスではありませんから、RESTとは呼びませんが、WEBサービスの呼び出し方もよく似ています。

次を見てください。これは楽天の提供するWEBサービスの呼び出しです。

http://api.rakuten.co.jp/rws/2.0/rest?developerId=XXXXXXXXXXXXXXXX&operation=ItemSearch&version=2009-04-15&keyword=i-pod

今度はサーバーの名前が http://api.rakuten.co.jp/ です。そしてプログラムの名前が rws/2.0/rest。そこに developerID というユーザー固有のID、operation という「何を調べるか」の指定、そして keyword はもちろん検索キーワードの指定です。

基本的に、楽天市場のサイトで検索をかけるのと同じような構造になっていることがわかると思います。

大雑把に言えば、このように、アドレスの中に情報を埋め込んでWEBサービスのサーバーに渡す方法をRESTと呼びます。自分が送ろうとしている情報がアドレスとして見えますから、非常にわかりやすいのです。そのため僕はもっぱらこの方法を使っています。

しかし、WEBサービスのサーバーを呼び出して返ってくるのはHTML文ではありません。一般的にはXML文です。HTML文もXML文も基本的にはテキスト、つまりは文字情報です。

構造も良く似ていてHTML文は
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
のような構文で始まるテキストファイルです。最初の行はまずこれが、どのようなルールで作られた文章であるかを示し、そして2行目の<html>が情報の始まりを示しています。

一方のXML文は
<?xml version=”1.0” ?>
<ItemLookupResponse>
というように始まっています。最初の行でこれがやはりどのようなルールの文であるかを(xmlであることを)示し、2行目ではどのようなデータであるかを記述しています。これもテキストファイルです。

インターネット・エクスプローラなどのブラウザーの多くは、html 文はホームページに構成しなおして見せてくれますが、xml文は階層を整理してくれる程度で、ほとんどそのまま表示します。

html文の場合、「どのように見せるか」はルールがあって、どのブラウザーであっても、ほとんど同じように見せる義務があります。一方xml文の場合には、どのように文を構成するかというルールはあっても、ブラウザーでどのように表示するかについてのルールはありません。

つまり、xml文は「情報を整理して送る」ために特化したフォーマットなのです。

そのため、プログラミング言語に用意された仕組みを使うと、比較的容易に必要なデータを選び出すことができます。逆にhtml文は、ブラウザーで表示させないと、どこにどのような情報が入っているのか非常にわかりにくものです。

でも、WEBサービスで取得してきた商品情報をアフィリエイト広告として見せるには?

情報をhtml文にして、訪問者のブラウザーに送り込まなければなりません。xml文は単なる生データで、どこにどのように表示するか、という情報は含んでいないからです。

大雑把に書くと、WEBサービスを利用するためには、次のようなステップをプログラムで実現する必要があります。

検索キーワードなどをホームページアドレスのような形にまとめる

WEBサービスのプログラムを呼び出す

送られてきたxml文の情報を解析して必要な情報を取り出す

商品名や画像のURLにアフィリエイトリンクを作るなどの処理をする

ブラウザーで見れるように、HTML文に埋め込む

これだけできれば、WEBサービスを利用するプログラムが完成するわけです。