LoginSignup
57
66

More than 1 year has passed since last update.

「ほん訳コンニャク」 を使ってみよう。

Last updated at Posted at 2020-08-28
※この記事では『「ほん訳コンニャク」 を食べて 論文を読もう』で紹介している Translation-Gummy(ほん訳コンニャク)の導入方法を解説しています。「Translation-Gummy(ほん訳コンニャク)?何それ美味しいの??🤔」という方は、上記の記事を覗いてみてください🙇‍♂️
こういったことができます gummy-journal

はじめに

 「英語論文のURL(or PDF)を投げれば日本語翻訳付きのPDFを生成する」という機能のウケが良かったようで、想像以上の数の方々に Qiita記事Tweet を見ていただいたり、GithubPyPI から実際にインストールして使っていただけているようです。ありがとうございます🙇‍♂️

 お陰様で、エンジニア以外の方々の耳にも情報が届いたらしく、「今までプログラミングや Python を触ったことがないのだけど、これを機に触ってみたいと考えていて…〇〇について教えていただけませんか?」といった嬉しい声もいくつかいただきました。

 非常にありがたいお言葉ですし、開発者としての責任もあるので、微力ながらお力添えをしたいと思い、この記事を書くに至りました。ここでは、「インストールしてURLからPDFを生成する」までの流れを解説したいと思います。(エラーが出る箇所や不明な点ありましたら、コメントDM 等で指摘していただけると幸いです。)

※ これ以降 $ の後に出てくる文字はコマンドと呼ばれる命令文であり、ターミナル(Mac) /コマンドプロンプト(Windows) 上で実行するものになります。

# "#"で始まる行は説明文です。
# ex.)
$ python3 -c 'print("Hello World!")'
>> Hello World!

Python

 Pythonの環境構築・セットアップに関しては、非常にたくさんの解説記事が出ているため、ここでは参考記事[^1]を挙げるだけにさせていただきます。なお、「Mac/Linuxの場合、システムデフォルトでPythonが入っている[^1]」ので、面倒な方は特別なことはせず、デフォルトのPythonを使っていただいても構いません。

[^1]: 『Pythonを書き始める前に見るべきTips』> Pythonのセットアップ > Pythonの導入

Translation-Gummy

 導入方法は Github に書いてあるので、そちらに従って wkhtmltopdf, webdriver, Translation-Gummy(Python package)をインストールしていきます。

依存ツール

wkhtmltopdf

 論文の内容を取得、翻訳した後PDFを生成する過程で、「HTMLでレイアウト→PDFを生成」ということをしているのですが、それに必要なのが wkhtmltopdf になります。このダウンロードサイトから、自分のPCのOS/Distributionにあったものをダウンロードしてください。

 なお、コマンドでインストールする場合、以下のコマンドでインストールできるかと思います。

# Debian/Ubuntuの方:
$ sudo apt-get install wkhtmltopdf
# macOSの方:
$ brew install Caskroom/cask/wkhtmltopdf

 いずれの方法でインストールしたとしても、以下のコマンドで google.pdf が作成できればセットアップは完了です。

$ wkhtmltopdf http://google.com google.pdf


google.pdf

google.pdf

webdriver

 chrome driverを使う場合は、この記事[^2]が参考になるかと思います。なお、その場合、以下のコードが通ればセットアップは完了です。

[^2]: 『Python + Selenium で Chrome の自動操作を一通り』> ChromeDriver のインストール

$ pip3 install selenium
$ python3
>>> from selenium import webdriver
>>> driver = webdriver.Chrome()
>>> driver.get("https://www.python.org")
>>> driver.save_screenshot('screenshot.png')
True # Trueと出れば、セットアップは完了です。


screenshot.png

screenshot.png

PyPI

$ pip3 install Translation-Gummy

 このコマンドだけで、Translation-Gummy を動かすのに必要な Python Package は全てインストールされます。なので、これだけで大丈夫です。

PDF生成

Python 実行

 ここまでで、「英語論文のURL(or PDF)を投げれば日本語翻訳付きのPDFを生成する」という当初の目的は達成されます。

# ">>>" 以降をコピペしてください。
$ python3
>>> from gummy import TranslationGummy
# 1つでも[success]と出ていればセットアップ成功です。
>>> gummy = TranslationGummy(gateway="useless", translator="deepl")
# "DRIVER_TYPE: None" と出た場合、webdriverの設定にミスがあることを意味しています。
>>> pdfpath = gummy.toPDF(url="https://www.nature.com/articles/ncb0800_500", path="sample.pdf", delete_html=True)
# PDFを生成するまでのログが出ます。出力が多いと感じた場合、一つ前で
# gummy = TranslationGummy(gateway="useless", translator="deepl", verbose=False, translator_verbose=False)
# とすれば、出力される情報が少なくなります。
>>> print(pdfpath)
sample.pdf

コマンド実行

 しかし、毎回Pythonを実行して、上記のコードをコピーするのは面倒ですよね…。ということで、ターミナル(Mac) /コマンドプロンプト(Windows) 上から直接実行できるようになっています!

$ gummy-journal "https://www.nature.com/articles/ncb0800_500" 

だけ覚えれば大丈夫です!🙌

【任意】 Gateway と 環境変数


Gateway と 環境変数のセットアップ方法

 現在対応しているGatewayサービスは、こちら (gummy.gateways.UTokyoGateWay) だけなのですが、自身のGatewayサービスを間に挟むことで、有料ジャーナルからも全文取得することができるようになります。

 この時、以下のように毎回 <USERNAME><PASSWORD> を入力するのは面倒です。

>>> gummy = TranslationGummy(gateway="utokyo", translator="deepl")
# 以下のように、<USERNAME> と <PASSWORD> を入力する必要があります。
>>> pdfpath = gummy.toPDF(url="URL", username="<USERNAME>", password="<PASSWORD>")

 そこで、環境変数に値を保存できるようにしています。(セキュリティ的にあまり推奨された手段ではありませんが…)とはいえ、PC全体の環境変数に書き込んでしまうと、他のシステムで問題が起きる可能性もあるので、Translation-Gummy 用の環境変数ファイルを用意します。(import gummy 時に自動的に作成されています。)

$ python3
>>> from gummy.utils import where_is_envfile, show_environ,  write_environ

# 環境変数が書き込まれているファイルがある場所を示します。
>>> where_is_envfile()
'/Users/iwasakishuto/.gummy/.env'

# 上記のファイルに、値を書き込みます。
>>> write_environ(
...    TRANSLATION_GUMMY_GATEWAY_UTOKYO_USERNAME="<USERNAME>",
...    TRANSLATION_GUMMY_GATEWAY_UTOKYO_PASSWORD="<PASSWORD>",
>>> )

# 実際に書き込まれたか、確認します。
>>> show_environ()
TRANSLATION_GUMMY_GATEWAY_UTOKYO_USERNAME = "<USERNAME>"
TRANSLATION_GUMMY_GATEWAY_UTOKYO_PASSWORD = "<PASSWORD>"

 これで、以降は以下のように と を入力せず、Gatewayサービスを利用できるようになります。

>>> gummy = TranslationGummy(gateway="utokyo", translator="deepl")
# 以下のように、<USERNAME> と <PASSWORD> を入力する必要がありません!!
>>> pdfpath = gummy.toPDF(url="URL")

 ※環境変数の命名規則ですが、以下のように設定しています。

>>> ENV_VARNAMES = "TRANSLATION_GUMMY_{1}_GATEWAY_{2}"
# 1 = Uppercase of class name without 'GateWay'
# 2 = varnames, which is also the key of `gatewaykeywargs`


おわりに

  • 〇〇についてもう少し詳しく書いて欲しい。
  • ここに書いてあることをやったのに動かない!!
  • 使ってみたけど、読みたいジャーナルがサポートされてない!! (現在サポートしているジャーナルは ここ から確認できます。)

などなどありましたら、コメントDM 等で指摘していただけると幸いです。

57
66
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
66