kidlemailを使ってコマンドラインからKindleへファイルを送る
Kindle向けの電子書籍を執筆していると、度々Kindleによる実機確認をしたいものです。Kindleによる実機確認は、MOBIファイルをKindleに転送するだけで、パーソナルドキュメントとして、すぐに閲覧できます。そして、転送方法は次の2種類が用意されています。
- Send to Kindle(主にメールの添付ファイルで送付)
- USB接続
この2つの中だと、私としては、ケーブルを接続しなくて済むSend to Kindleをよく利用していたのですが、段々、何度もメールを送信するのが億劫になってきてため、これを効率よく行なえる方法がないか調べたところ、便利な方法が見つかったので、紹介したいと思います。
コマンドライン(CLI)で使える kindlemail
最初、コマンドラインでメールを送信するスクリプトを作成しようと考えていたのですが、よく調べたところ、kindlemailという何とも目的にマッチしていそうなRuby Gemを発見したので、これを導入することにしました。
kindlemailの導入
それでは早速、kindlemailの導入方法を解説していきます。
kindlemailのインストール
kindlemailはGemパッケージとして提供されているため、gem install kindlemail
を実行するだけでインストールできます。
$ gem install kindlemail Fetching: thread_safe-0.3.4.gem (100%) Successfully installed thread_safe-0.3.4 Fetching: minitest-5.4.2.gem (100%) Successfully installed minitest-5.4.2 (中略) Done installing documentation for activesupport, gmail-mailer, gmail_xoauth, i18n, kindlemail, mail, mime-types, minitest, oauth, polyglot, thread_safe, treetop, trollop, tzinfo after 40 seconds 14 gems installed
GmailのOAuthトークンを作成する
サードパーティのソフトウェアからGmailを利用してメールを送信する場合、OAuthトークンを取得する必要があります。
kindlemailのREADMEには、google-mail-xoauth-toolsというpythonスクリプトを利用する方法が紹介されていますので、これを利用してみたいと思います。
google-mail-xoauth-toolsのYou can download xoauth.py
のリンクからダウンロードして、ターミナルからxoauth.pyを実行します。--user引数には、あなたのメールアドレスを指定しましょう。
$ python xoauth.py --generate_oauth_token --user=learning.adult.entertainment@gmail.com oauth_token_secret: xxxxxxxxxxxxxxxxxxxxxxxx oauth_token: yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy oauth_callback_confirmed: true To authorize token, visit this url and follow the directions to generate a verification code: https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy Enter verification code: ここに確認コードを入力
すると、To authorize token, visit this url and follow the directions to generate a verification code:
という行が出力されますので、1度ターミナルでの作業を中断して、次の行に表示されているURL(https://www.google.com/accounts/OAuthAuthorizeToken?oauth_token=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
の部分)を開きます。
--user引数のメールアドレスに間違えがなく、あなたのGoogleアカウントに正しくログインされていれば、上記のページが表示されますので『アクセスを許可』のボタンを押して、アプリケーションを承認します。
無事に承認が完了すると、確認コード(zzzzzzzzzzzzzzzzzzzzzzzz
の部分)が表示されます。
確認コードをコピーして、再びターミナルに戻りEnter verification code:
の後ろに貼り付けて、エンターを実行します。
問題なく確認コードが入力されていれば、次のようにoauth_tokeとoauth_toke_secretが表示されます。
Enter verification code: zzzzzzzzzzzzzzzzzzzzzzzz oauth_token: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa oauth_token_secret: bbbbbbbbbbbbbbbbbbbbbbbb
こちらのトークンは次のkindlemailのセットアップで利用するので、無くさないようにしましょう。
kindlemailのセットアップ
GmailのOAuthトークンを取得できたら、次はkindlemailのセットアップに移ります。こちらも全てターミナルでの作業になります。
まずは、kindlemail --setup
コマンドを実行します。すると、まずはSend-to-Kindle Eメールアドレスの入力を求められますので、入力してエンターを実行します。
$ kindlemail --setup kindlemail 0.2.8. Written by djhworld. https://github.com/djhworld/kindlemail ------------------------------------------------------------------------------- kindlemail setup This will overwrite any settings you have set previously ------------------------------------------------------------------------------- Kindle address to set as your default address> ここにSend-to-Kindleのアドレスを入力
Send-to-Kindle Eメールアドレスを入力すると、続いてはOAuthトークンと秘密トークン、そしてあなたのメールアドレス(パーソナル・ドキュメントの承認済みEメールアドレス)を入力して、それぞれエンターを実行しましょう。
Kindle address to set as your default address> Send-to-Kindleのアドレス Setting up kindle credentials...Complete! ------------------------------------------------------------------------------- Gmail Authentication Settings To get a valid anonymous token, use the instructions located here http://code.google.com/p/google-mail-xoauth-tools/wiki/XoauthDotPyRunThrough ------------------------------------------------------------------------------- OAUTH Token> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa OAUTH Token Secret> bbbbbbbbbbbbbbbbbbbbbbbb Your gmail address> learning.adult.entartainment@gmail.com Setting up email credentials...Complete! kindlemail setup complete
kindlemail setup completeというテキストが表示されれば、セットアップ完了となるのですが、1点、このセットアップにはバグが存在するため、手動で修正する必要があります。
kindlemailの設定修正
早速、kindlemailを実行すると、次のようなエラーが表示されます。
$ kindlemail learning-fuzoku-sample.mobi kindlemail 0.2.8. Written by djhworld. https://github.com/djhworld/kindlemail Error occured: - Error parsing /Users/akinomurasame/.kindlemail/.email_conf
kindlemail --setup
の設定は、~/.kindlemail/
ディレクトリ内にYAMLファイルとして保存されているのですが、~/.kindlemail/.email_conf
ファイルに書かれている、最後に入力したあなたのメールアドレスのラベルの後ろのコロンが抜けているため、これを修正する必要があります。
# 修正前 email learning.adult.entartainment@gmail.com # ← emailの後ろのコロンが抜けている # 修正後 email: learning.adult.entartainment@gmail.com # ← セミコロンを入力して保存
こちらは、PRが出ているのですが、まだ取り込まれていないようです。
さて、これでkindlemailの導入は完了が完了しました。
kindlemailを利用する
kindlemailの利用はとても簡単です。kinldemail
コマンドに送りたいファイルを与えてあげるだけ、Kindleにファイルを送信してくれます。
$ kindlemail learning-fuzoku-sample.mobi kindlemail 0.2.8. Written by djhworld. https://github.com/djhworld/kindlemail Preparing learning-fuzoku-sample.mobi to be sent to learning.adult.entartainment@gmail.com Adding attachment: /Users/akinomurasame/.kindlemail/.staging/b4474884a324c80933f265e6a0c9e123_988325.mobi (2584.3994 kb) Sending message....sent! learning-fuzoku-sample.mobi was successfully sent to Send-to-Kindleのアドレス
なお、kindlemailは送信したファイルを管理してくれています。
$ kindlemail --show-history kindlemail 0.2.8. Written by djhworld. https://github.com/djhworld/kindlemail *** History of files sent using kindlemail (use the -d option to clear the history) *** Send-to-Kindleのアドレス ---------------------------------------------------------------------------------------------------- => learning-fuzoku-sample.mobi was sent on Thu 06 Nov 15:04:37 ----------------------------------------------------------------------------------------------------
このため、1度送信したものと同じ名前のファイルを送ろうとすると、エラーになります。そこで、同じ名前のファイルを送る場合は、--force
オプションを利用します。
$ kindlemail learning-fuzoku-sample.mobi kindlemail 0.2.8. Written by djhworld. https://github.com/djhworld/kindlemail This file was sent to Send-to-Kindleのアドレス on 2014-11-06 15:04:37 +0900 This file has already been sent to Send-to-Kindleのアドレス. Use the --force (-f) option if you want to resend it (--forceオプションがないと失敗する) $ kindlemail learning-fuzoku-sample.mobi -f kindlemail 0.2.8. Written by djhworld. https://github.com/djhworld/kindlemail Preparing learning-fuzoku-sample.mobi to be sent to Send-to-Kindleのアドレス Adding attachment: /Users/akinomurasame/.kindlemail/.staging/b4474884a324c80933f265e6a0c9e123_124893.mobi (2584.3994 kb) Sending message....sent! learning-fuzoku-sample.mobi was successfully sent to Send-to-Kindleのアドレス (--forceオプションを付けると無事に送信されます) $ kindlemail --show-history kindlemail 0.2.8. Written by djhworld. https://github.com/djhworld/kindlemail *** History of files sent using kindlemail (use the -d option to clear the history) *** Send-to-Kindleのアドレス ---------------------------------------------------------------------------------------------------- => learning-fuzoku-sample.mobi was sent on Thu 06 Nov 15:12:21 ---------------------------------------------------------------------------------------------------- (履歴が書き変わります)
まとめ
kindlemailを導入することで、コマンドラインから簡単にKindleへファイルを送ることができるようになり、実機確認がとても容易に行なえるようになりました。
私は、校正段階ではrakeコマンドを使って、Re:VIEWとkindlegenによってMOBIをビルドするのと同時に、kindleにファイルを送って、移動時間を使って実機確認を行なっていました。
こういったノウハウについても、引き続き紹介していきたいと思いますので、どうぞ宜しくお願いします。

Fuzoku実践入門: 裏打ちされた知識で正々堂々とデビューする
- 作者: 村雨秋乃
- 発売日: 2014/11/01
- メディア: Kindle版
- この商品を含むブログを見る