あったらしくるえるはてなくしょん

id:kskmeuk あったらしく

いろいろあって解説出来ずすみませんが、happ.meの翻訳と為替機能について

happ.me - ¥£$, Happy Amazon Price Please Me, 世界のAmazonをまとめて検索 の話題です。

解説するぜとか言って、全然してなくて、ほんとすいますいません。その、個人的にいろいろあるのと、実は次に作るものを決めたりしていたら、こちらが後回しになりました。それで、ちょっと次にしなけりゃならないことが出来たので、そちらを優先します。フルクト村のノエルさんとか、ほんとすいません。

さくらのVPS の設定とか、Django の設定とか、あと Amazon の PAAPI とかの問合せとかは、そんなにたいしたことでもないし、説明がもっと巧みな人がいるので、まあ、そちらをご覧下さい。Django の Document を邦訳してくれたひととか、本当に有り難いです。最高です。かっこいいです。

でも、翻訳のところだけちょっと面白いので書きます。

Amazon PAAPI と 翻訳

翻訳の種明かしですけど、実は Google の Translate API を叩いています。

もともと自分用に、攻殻機動隊のDVDを英国のAmazonで買うとリージョン2だけど映像方式がPALなので、MacやPCや
XBox 360では再生出来て、国内のPS3とか普通の機器では再生出来なくて、でも安いらっしいってなったときに、どうやら、日本作品のDVDなら概ね安いということがわかりました。ちなみにアニメが真っ先に…でしょうが、北野武の映画のDVDとかも安いです。

で、攻殻機動隊は、Ghost in the shell で、すぐわかるから、OKだけど、その他の作品は果たして… となったときに、代わりにドラえも〜んみたいな感じでやってくれたらいいですよね。

私はなんとなく、Google は 4次元ポケットのようなものだと思っていて、ファンクショナルなところは本当にすごくて、想像力の組み合わせである機能を実現すると、本当にとんでもないクオリティで出てくる。だけど、ソーシャルはちょっと苦手みたいなところがあると思っています。

それで、Google の Translate API ですが、使うのは結構簡単で、http://code.google.com/intl/ja-JP/apis/language/translate/v2/getting_started.html 詳しくはこちらにあります。で、長文とか投げたり、英語を日本語にすると、とても愉快な天然芸人みたいなリアクションが返ってきますが(笑)、決め打ちみたいなタイトルだと、恐らくそれようの辞書をもっているのか、かなりきちんと返ってきます。

そうじゃなかったら、紅の豚で検索したときに、

翻訳結果: 紅の豚 »» Porco Rosso
-- happ.me - ¥£$, Happy Amazon Price Please Me, 世界のAmazonをまとめて検索

こうはならないよね。

なので、まあ恩田陸さんを翻訳すると愉快に陸を land とかで返して来てくれた訳です。

お手軽な使い方

Google Translate APIJSON で返してくれるのですが、このサイトの場合はある程度、要素も決まっているし、一度どうしても、Amazon を 3カ国見に行かなければならないので、AJAXしたほうが体感遅いような感じになるかなというし、キャッシュとか集計とかできるならしようとかがあったのと、なによりJavaScript の技術不足…orzとかもあって、それで、一度サーバ間でレスポンスをとっています。

あと、Google API の Translate API は文字数でAPI制限があるので、それも節約したかったので。

で、詳しくは割愛しますが、

https://www.googleapis.com/language/translate/v2?key=(あなたのKey)&q=(urlquoteした元キーワード)&source=(元の言語:日本語ならjaを指定)&target=(翻訳先の言語:英語ならenを指定)

上記でアクセスすれば大丈夫です。Google アカウントで有効にして、Key取得してくださいね。

なので、付属モジュールだけを使ったMacでもそのまま動く簡単なデモを書くとですね、仮にtrans.py とでもしますと、

# -*- coding: utf-8 -*-
import urllib,urllib2
import json

def create_url(text):
    source = "ja"
    target = "en"
    url_base = 'https://www.googleapis.com/language/translate/v2?key=(あなたのkey)'
    return url_base + "&q="+urllib.quote_plus(text.encode('utf8'))+"&source="+source+"&target="+target+""

opener = urllib2.build_opener()
result = opener.open(create_url(u"紅の豚")).read()
trans = json.loads(result)
translatedText = trans["data"]["translations"][0]["translatedText"]

print translatedText

これで、

$python trans.py
Porco Rosso

とか、返ってくる訳ですね。なので、引数をとったりなんかしたりすると、めでたしめでたしみたいになります。

simplejson がなくても、json が同梱されたりするあたりが、時代の趨勢を物語ってますね。これは、こないだ、清水川さんのツイートで見かけるまでまじで知らなかった、あたしって、ほんとバカ…

それで、

  1. 入力された日本語キーワード=>そのまま、Amazon.co.jp に問合せ
  2. 翻訳された英語キーワード=>Amazon.co.uk Amazon.com に問合せ

という、横串がさせるわけだったのですね。

日本語も、英語も、あるんだよ みたいな感じです。あ、ちなみに魔まマみてないのに、タイトルだけネタにしてすいません。魔法少女よりうちのこどものほうがかわいいです。

で、この翻訳とAmazon への問合せっぷりが、まほつかいにりゅうけんみたいで、結構好きだったんです。

ついでに為替

為替の方も、1日に回数制限があるのですが、Currency converter | Xurrency っていうサイトがあって、アクセス制限があるのですが、http://xurrency.com/api/gbp/jpy/1 とかやると、1ポンドが何円みたいなのをJSONで愉快に返してくれます。

APIにも対応した通貨換算サイト『Xurrency』 | 100SHIKI
2007年の百式 田口さんの記事に助けられるとは、思いませんでした。この助言くれたのも田口さんだったんですけどね…w*1

と、そんなわけで、円に対して一時のポンド安は一服しましたが、ドル安はもうすこし続きそうですね。ドル安はいいんだけど、Amazon.com 発送がアレなのがねぇ…とかはありますが。

というわけで、世界は広いし、日本でちまちま書いたコードがGoogle さんと Amazon さんの力を借りて世界一周して、価格比較出来るとか面白い世の中だと思っています。

では、よい買い物で良い人生を