英単語の日本語訳をプログラム内やターミナル内で取得する
はじめに
自分用の英語学習アプリケーションをつくってみたいな、と考えることがあります。そのためには任意の英単語の日本語訳を取得できることが必要なので、今回はそれを実現してみることにしてみました。
Glosbeというオンライン辞書のAPIを利用し、プログラム内で英単語の日本語訳を取得・表示できるようにします。また、その応用として「ターミナルで瞬時に英単語を翻訳するコマンド」をつくってみることにします。
本記事でできるようになること
- プログラム内で、任意の英単語の日本語訳を取得できるようになる
- ターミナル(端末)を開いているとき、"dict hoge"と入力するだけで"hoge"の日本語訳を表示させることができるようになる(下図)
なお、Pythonを実行できる環境が整っていることを前提とします。
任意の英単語の日本語訳を取得する方法
概要
Glosbe APIを利用します。glosbe.com
詳細は上のリンクを参照していただければいいのですが、簡単にいえば、下記にアクセスすると"test"の翻訳情報がJSONという形式で得られるというものです。"test"の部分を他の単語に変えればその単語の翻訳情報が得られます。
https://glosbe.com/gapi/translate?from=en&dest=ja&format=json&phrase=test&pretty=true
プログラム中で上記URLにアクセスし、得られたJSONのデータを取り出すことによって和訳を取得します。
Pythonによる実装
以下のようになります。コマンドライン引数として受け取った英単語の和訳を表示するプログラムです。
#! /usr/bin/python # -*- coding: utf-8 -*- import urllib2, json, sys # 英単語を受け取って、日本語訳を並べた文字列を返す関数 def translate(phrase): # Glosbe API により、引数に与えられた単語の翻訳を取得 # set URL from_lang = "en"# English dest_lang = "ja"# Japanese url = "https://glosbe.com/gapi/translate?from=" \ + from_lang + "&dest=" + dest_lang \ + "&format=json&phrase=" + phrase + "&pretty=true" response = urllib2.urlopen(url) json_data = response.read() json_dict = json.loads(json_data) return_txt = "" # これを返り値にする tuc = json_dict["tuc"]# tuc: list for i in range(len(tuc)): if u"phrase" in tuc[i].keys(): return_txt += tuc[i]["phrase"]["text"] + "\n" return return_txt # Main関数 if __name__ == '__main__': # コマンドライン引数を取得 (sysをimportしておく必要あり) argvs = sys.argv argc = len(argvs) if argc == 2: # 使用法が守られていた場合、コマンドライン引数の値をphraseに代入 phrase = argvs[1] else: # 使い方を教える print "Usage: python translate.py 'word'" phrase = "" if phrase: phrase_jp = translate(phrase) if phrase_jp:# 翻訳が見つかった場合 print phrase_jp else:# 翻訳が見つからなかった場合 print "Not Found. "
「ターミナルで瞬時に英単語を翻訳するコマンド」をつくる
上記のPythonファイルを好きな場所に保存します。以下ではデスクトップにtranslate.pyという名で保存したものとして説明します。
筆者はLinux(Ubuntu 12.04)で実行していますが、Macでもたぶん同じだったと思います(未検証)。Windowsは知りません。
■ ~/.bashrcというファイルを開き(例えば、ターミナルで"emacs -nw ~/.bashrc")、その末尾に以下の行を追加します。
alias dict="~/Desktop/translate.py "
""の中は保存した場所・ファイル名に応じて変更してください(以下も同じ)。
■ ターミナルで以下のように入力します。
$ source ~/.bashrc
この時点で、ターミナルで"dict"と入力したときに"~/Desktop/translate.py"を実行してくれるようになります。
■ ターミナルで以下のように入力し、パーミッションを変更しておきます。
$ sudo chmod +x ~/Desktop/translate.py
「ターミナルで瞬時に英単語を翻訳するコマンド」を実行する
以上の手続きを終えたら、ターミナルを開き、以下のように入力してみます。
$ dict test
すると、以下のように"test"という単語の和訳が表示されるはずです。testを他の英単語に変えても同様です。やったね!
$ dict test
テスト
試験
試練
実験
試す
テストする
検査
考査
試し
試煉
試錬
験
験し
こうさ
しけん
しれん
する
ためし
学力検査
検定
試みる
おわりに
ここで紹介したプログラムを応用すれば、例えば
- どこかから頻出英単語のリストを取得してきて、本記事と同様のプログラムによってその和訳と対応付け、My単語帳をつくる
- 「英文ニュースを取得してきて、任意の単語をクリックすると和訳が表示される便利なHTMLファイルを吐き出す」ようなプログラムをつくる
などといったものができると思います。
また、後半で紹介したdictコマンドを作成しておけば、ブラウザや辞書を開くまでもなく英単語の意味を調べることができますね。ブラウザよりもターミナルを開いていることが多いという人がどれだけいるかは謎ですが……
また、本記事ではGlosbe APIの一部しか利用していません。和訳以外にも英英辞典の記述などが得られたりするので、いろいろ試してみてください。