2006/01/11

少しばかりAjaxな辞書ツール作った。

英辞郎に飛ばすBookmarkletとかあるけども、あまりページを遷移したくないなぁ、という風に前から思っていた。

だって、何かの文章を読んでいるときに、一つわからない単語があって、Bookmarkletで訳を見るまではいいけども、その前の文章に戻ってきた際(戻るのもウザイ)、どこを読んでいたかわからなくなることがよくある。なので、ページの中に訳が出てきたらいいなぁ、なんて思ってみる。

Google Toolbarのマウスオーバー辞書ってのもあるんだけど、なんかひっかからないのが多くてちょっと嫌。イメージでは、こんな感じなんだけどなぁ。で、何かないかなぁ、と考えていたが、調べてもないので、ブログをやり始めた頃に考えていたものを自分で作ってみることにした。

仕組みは簡単なので、誰でも簡単に作ることができると思うけど、なんで無いのかなぁ。ドイツ語と英語のやつはあったのに。ということでおうちでプログラミング。まぁ、作るのめんどくせーな、と思ってたけども、少しだけやる気になってみた。まぁ、perlのお勉強ですわ。

で、作ったものが、Ajaxな英和/和英辞書。
って、別にAjaxでなくても、ボタンでポチットな、でよかったのだが。prototype.jsでも使ってみるか、と思っていてせっかくだったので、Ajaxな動きを取り入れてみた。

辞書ファイルは、EDICTを使用した。xyzzyでは、私も使っているけどもいい辞書ですね。そして、その辞書の検索には、私の学部時代の師匠が作った検索システムDiqtを使用させていただいた。で、それを学校の研究室のサーバにインストールをした。Diqtサーバは、そのまんま。XML RPCサーバにしてもいいかな、と思ったけどもとりあえず、自分のためだけのツールということでいじることは辞めた。気が向いたらするかも。

で、処理としては、JavaScriptで網掛け部分を取得し、マウスアップしたら網掛け部分をパラメータとしてリクエストを飛ばす。そのリクエストを受け取るサーバ(Diqtサーバのクライアント)は、受け取ったパラメータを加工して、DiqtサーバにHTTPリクエストを投げる。Diqtサーバからのレスポンスを、また少し加工して、JavaScriptのリクエストに対するレスポンスとして返す。そして、そのレスポンスを表示したい場所に入れる、と。

これで、網掛けに選択した言葉を瞬時に同じページに出力することができた。Ajaxの使用用途でこれは、間違ってないかな。あまり鬱陶しいインタフェースは使ってないし。ただ、リクエスト飛ばしすぎになってしまうのではないか、とちょっと思ってみる。

で、早速、このツールを自分のブログに当てはめてみる。どこでもいいが、選択すると、もし選択した単語に対応する訳があれば、それを右のメニューのDYNAMIC DIQTの下に出力する。半角英数を選択すれば、訳は日本語で。日本語を選択すれば、訳は英語が出るようにした。まぁ、悪くないね。もう少し整理したら、簡単なやり方とサンプルを MY WORKに置こうかな。

つか、なんで、Diqtサーバが別の環境を使っているかというと、今のレンタルサーバでは、容量50Mだし、Cで書かれたCGIスクリプトとか動かないだろうから。別にサーバに余裕があって、いろいろインストールできるのだったら、同じサーバでもいいか。

うーん。でも、こんなもの作りなんてすぐ終わっちゃうよね。もう少し規模の大きめなものを作りたいなぁ。
まぁ、CPANのLWP, TokeParserの使い方を勉強したから、これはこれでいいか。

つか、絵を描かないと、文章だけじゃ何を言っているかわからんかな。

ボタンでポチットなでも、Ajaxか。そのイベントをトリガーとして、ページの一部をサーバから受け取った値で書き換える訳だから。と、次の朝、読んでて思う。

やっぱり他人の文章に対して辞書をダイナミックに使いたい。

先日、選択部分を辞書に飛ばし、ページの一部を書き換えるスクリプトを書いたわけだ…

トラックバック by GANCHIKU.com — 2006/01/14

Leave a comment

Bloglines feedburner