muumoo.jp


ニュース記事検索


過去ログ 2007年05月09日 - ニュース過去ログ

ニュース過去ログ

2007/05/09 管理人日記 英語←→日本語の翻訳APIとして使えるYahoo Pipesを作った (管理人日記)

URLで渡してJSONで取得できる翻訳APIが欲しくて、軽く探したけど見つからない気がしたので、自分で作った。

EJ, JE translation API

わかると思うけど、EJが英語→日本語、JEが日本語→英語です。

翻訳したい言葉を入力すると、翻訳されます。結果はRSS, JSON, JSONPのうちの好きな形式で取得できます。単語でも文章でもOKですが、QUERY_STRINGで渡すので、あまり極端に長い文章は多分途中で切れてしまうと思います。

ただ、こんな風にページを開いて言葉を入力して使うのではAPIとは言えません。

実際には、プログラムの中からAPIとして呼び出すわけです。

翻訳結果をRSSで取得

http://pipes.yahoo.com/poolmmjp/ej_translation_api?_render=rss&text=(翻訳したい言葉)

http://pipes.yahoo.com/poolmmjp/je_translation_api?_render=rss&text=(翻訳したい言葉)

翻訳結果をRSSで取得したいならば、こんなURLを作ってリクエストを投げます。前者が英→日、後者が日→英です。

返されるRSSは、itemを1つだけ持つRSS 2.0で、そのitemのtitleに翻訳前、descriptionに翻訳後の言葉が入っています。

翻訳結果をJSONで取得

http://pipes.yahoo.com/poolmmjp/ej_translation_api?_render=json&text=(翻訳したい言葉)

http://pipes.yahoo.com/poolmmjp/je_translation_api?_render=json&text=(翻訳したい言葉)

JSONで取得するには、こんなURLになります。返されるJSONは、日本語部分が\uエンコードされているので注意してください。

検索結果をJSONPで取得

Yahoo! Pipesはかなり良くできていて、結果JSONPで取得することもできます。これで、cgi等のサーバ側のプログラムを使わずに翻訳機能を持ったWebページが作れるわけです。

JSONPで取得するには、JSONのときのURLに

_callback=hoge

を付け足すことで、hogeを呼び出すようなJSONPが返ります。

JSONPで作ってみた

JSONPならすぐ作れるので、さっそくやってみた。以下はJavaScriptがそれなりに使える環境で動作します。テキストボックスに英語を入れて、「英→日」ボタンを押し、しばらく待つと翻訳された結果が表示されます。

どんなもんでしょうか。この翻訳アプリのソースはこの記事のhtmlソース見ればOK。

仕組み

Yahoo! Pipesです。ソースは以下。

ひとつはText→URL Builder→Fetch Feed→BabelFish→Regex。もうひとつはText→Regex。合流してPipe Outputへ。

ただし、入力された言葉はあくまでテキストなので、これをRSSに変換する必要があります。そうじゃないとYahoo! Pipesで扱えない。

そこで、以下のようなAPIを作った。

http://api.muumoo.jp/texttorss/(好きな言葉)

好きな言葉を渡すと、ムリヤリRSSをでっち上げるAPIです。Yahoo! Pipesで作ったといいつつ自作のプログラムも中で使うなんて、ちょっと反則技?別に目的が達成できればいいよね。このAPI、今後もいろいろ役に立つかも知れない(既に誰か作ってるかも知れないけど)。

入力された言葉をいったんこのAPIに投げてRSSに変換し、そのRSSをBabelFishで翻訳します。

翻訳後、タイトルだけをRegexで翻訳前に戻してPipe Output。

これを何に使うか

単にサクラエディタの翻訳マクロを作りたかった。そのために、URLで投げてJSONで受け取れる翻訳APIが欲しかった。

今日はもう疲れたので翻訳マクロは作らなくていいや。本末転倒だけど。

2007.12.29 追記

新しいYahoo! Pipesの機能を使うように変更しました。上記の仕組みは旧仕様のものです。新しい仕組みについては2007年12月29日の日記を参照。

この記事のURI:
http://muumoo.jp/news/2007/05/09/0translationapi.html
関連記事 最新の関連記事
関連記事 直後の関連記事
関連記事 直前の関連記事


Copyright© 2002-2007 muumoo.jp All Rights Reserved.