アマゾンの問題(mt-aws導入)

2004年9月29日

このエントリは、今さらながらのmt-aws導入覚書です。Movable Type でAmazon.co.jpウェブサービスのタグが使えるようになるのです。何かのお役に立てればと記しておきます。えぇお役立ちサイトですから。使用例はこちらです。

MTのバージョンは2.661です。日本語化のパッチ(バッチ?)を当ててます。文字コードはUTF-8です。趣味は読書です。本題に入ります。

書評サイトなどで、本の画像が表示されているの、見かけませんか。私は見かけます。そして気になっていました。どうやるんだろうと。

いつかびわさんから教えてもらったG-Toolsでできるに違いないと、長いことブックマークに寝かせてあったサイトへいってみたのですが、自分で好きなようにレイアウトしたくば、XML?の知識が必要とわかり、いずれ、いずれまた戻ってくるぞとひとまずは撤退。

さくさくっと、MTのタグを書くような感じで、投稿したら自動的に、アマゾンにピピッとリンクするようなんはないんかしらと、グーグルしたればありました。すごい。MTには何でもある。見つかったのはAmazonのウェブサービスをMovableTypeでタグを書いて利用するためのプラグインです。何て言うか、神様仏様ですね。こちらです。こんなすばらしいものが一年以上も前からこの世に存在するのです。麗しいことです。

では、導入までの道のりを。簡単には動きませんでした。グーグルしまくりました。で、やっとのことで動くようになりました。理屈はよくわかりません。動いてくれればいい、たくましく動いてくれれば。

というわけで、つまづいたところをかいつまんで書きます。その際参考になったサイト様は(参考)からリンクしております。敬称略です。

Amazon.co.jp のサイトからウェブサービス のデベロッパー・トークンを取得(意味はよく分かってませんが、アマゾンに対して、ウエブサービス使わせてもらいますよ、という宣言のようなものかしら)し、
simple amazon logさんからaws.plをダウンロードして、readmeのとおりにインストールしました。パーミッションは644で。だがしかし、だがしかしMTでインデックスをリビルドしようとするとエラーになる。なぜだ。モジュールが足りないのだ。

aws.plのreadmeによれば、LWP::UserAgent, XML::Simple, Jcodeの各モジュールが必要とのこと。おそらく、UserAgentとJcodeは入ってます。mt-check.cgiを実行すれば分かります(参考、は失念していまいました)。mt-check.cgiはmt.cgiと同じディレクトリにあるはずです。

Simpleはないのかな?確かに、extlib/XML/にはなさそう。なので、ここから入手、そしてインストール(参考: ready for the blue)。

モジュール入ったが動かない。エラーになる。何のエラーかすらわからない。なぜだ。なぜ動かない。aws.plに修正が必要だ。

すみません。理屈は本当にわかりません。分かりませんが、修正が必要なのです。aws.plの148行目あたりを以下のように修正します(参考:のまのしわざ)。

(修正前)

$res .= sprintf($out);
if ($q{lastn}>0) { $q{lastn}–; }
last if ($q{lastn} == 0);
}
if ($charset ne ‘utf8’) { $res = Jcode->new($res, ‘utf8’)->$charset(); }
sprintf($res);

(修正後)

#$res .= sprintf($out);
$res .= $out;
if ($q{lastn}>0) { $q{lastn}–; }
last if ($q{lastn} == 0);
}
#if ($charset ne ‘utf8’) { $res = Jcode->new($res, ‘utf8’)->$charset(); }
$res = Jcode->new($res, ‘utf8’)->$charset();
#sprintf($res);
return $res;

これでも、これでもまだ動きません。何となればさらなる修正が待っているからです。アマゾンの仕様変更が原因らしいですが例によって理屈はわかりません。理屈なんぞは知りません。理屈じゃないんだ!愛なんだ!

で、aws.plの93行目あたりを以下のように修正します(参考:weblog @ masahiko.org)。

修正前

my $url = ‘http://xml.amazon.com/onca/xml3?’;

修正後

my $url = ‘http://xml.amazon.co.jp/onca/xml3?’;

あらゆるサイトをグーグル訪問した結果、だいたいは以上の修正で動いておられるのです。でも、うちでは、動かない。なぜか、うちでは、動かない。なんでさ!マックだから?ハリンだから?ブログじゃなくてウログだから?

そうではありませんでした。aws.plのreadmeにあった、記述例が違っていたようです。デベロッパー・トークンを入れるところが、例だと「dev-t="developer-token"」となっているのですが、正当は「dev_token="developer-token"」なのです(参考:ホンの愉しみ)。

これでようやく、これでようやく動くようになりました。長かった。本当に長かった。挫折があった。葛藤があった。屈託があった。誰にも負けない情熱があった。そしてドラマがあった。

といいますか、今回の過程は、最後の参考サイトであるホンの愉しみ様がすでに辿っておられました。しかも、一年以上も前に…。

しかし、これでは終わりません。実は、まだまだ問題は残ります。残存しているのです。が、続きは次回のエントリで。

コメント / トラックバック 2 件

  1. びわ より:

    G-Tools、便利なようでいてやっぱりめんどくさくて私も遠のいてます。
    プラグインいいなあ!
    でも…修正がややこしすぎて私には無理そうなのでやめておこう…。

  2. ハリン より:

    修正自体はコピーペーストでいけるのでさほどややこしくもないですよ。
    本文中にも書いてますが、
    なぜこういう修正が必要なのかはさっぱりわかってません。

    プラグインをダウンロードしたりインストールしたり、
    パーミッションを設定したりが、
    ひとつずつやってけばどうということはないのですが、
    いろいろやらねばならないと考えると、
    やはりちょっと面倒くさいですよね。

コメントをどうぞ