君たちは永遠にそいつらより若い

技術と音楽と日々のこと。

Google spreadsheet でたくさんの単語を一括翻訳しながら英語を勉強する話



ボキャブラリー不足…!

日頃、社員のみんなと英語で会話していて、ある程度聞き取れていてもボキャブラリーの不足により知らない単語の部分が「ぺらぺーらぺーら」と聴こえてしまいます。やはりボキャブラリーが不足していると思い知る日々…!

そのように思い知ってから、会話していて、ドキュメントを読んでいて、小説を読んでいて、分からなかった単語を spreadsheet にまとめて、復習するようにしています。ただ、実施にあたって一点問題がありました。

手作業で翻訳すんのめんどくせー!

んですよ。というのも「英語→日本語→脳内イメージ」ではなくて、「英語→脳内イメージ」ができるようにしたいという目論見があるので、一語に対して、以下のような項目を用意しようとしていたのです。

  • わかんなかった単語
  • わかんなかった文脈
  • 英英辞書での要約
  • 英英辞書への詳細リンク
  • 日本語訳(どうしても思い出せないとき用)

一列やってみて、「あ、めんどくさ。もうやめたい^^」と思いました。めんどくさいことは、人の手でやるべきではないですね。

自動的に複数単語をまとめて翻訳

しましょうー。

f:id:kuteken:20150118032347p:plain

まず、APIで取ってきたいものをリスティングし、それぞれイーカンジのAPIを探します。検討した結果以下がよさそうでした。

英英辞書での要約

spreadsheetのimportxml関数で直接インポートしたいので、登録がいらなくて、無料で、GETで叩けて、xmlでデータが出力できるAPIを選びたい。しかし、Google Dictionary APIGoogle Translate API に代替わりして有料化してしまったので、辞書のAPIは Glosbe を使うことにします。

Glosbe のデータインポートは以下のような式でやっています。xmlデータにIDが無いので XPath の通し方が強引になっていてつらい。

=importxml("https://glosbe.com/gapi/translate?from=en&dest=eng&format=xml&phrase="&B2&"&pretty=true", "string(//string[text()='meanings']/following-sibling::list/map/entry/string[2])")

英英辞書への詳細リンク

これは簡単。URL繋げてるだけ。

="http://dictionary.cambridge.org/dictionary/british/"&B2

日本語訳

これは、感動しました。素晴らしいことに spreadsheet には、GOOGLETRANSLATE関数があるので、言語ペアを指定してあげるだけです。

=GOOGLETRANSLATE(B2, "en", "ja")

完成!

それでは、出来たものがこちらになります。B列に単語を入れると、Loading と表示された後に関連セルが翻訳で埋まります。

Bulk translation - Google スプレッドシート

上記ファイルは編集できないようにしているので、使いたい場合は「ファイル->コピーを作成」でコピーして、お手元でご利用ください。


なにかしらコードを書くかと思っていたけど、spreadsheet 関数で完結してしまいました。ふぁー、これで翻訳にかける時間が100分の1くらいになって幸せになれるはずです。

日々の積み上げは裏切らないはず。みなさんも良い英語ライフを。