Macでコマンドラインから電子書籍をKindleへ転送する方法


ePub Advent Calendar 2015 - Qiitaの21日目に飛び入り参加しました。

(というか、書きたいネタがたまたま合致したので参加しました。)

はじめに

KindleにEPUBファイルを落として読みたい。

  • EPUBファイルをMOBIファイルに変換すれば、Kindleで読めるようになります。
  • 変換したMOBIファイルはSend-to-Kindleサービス(メール送信)でKindleに送れる

GUIのメールクライアントを使うのが面倒なので、すべてコマンドラインで済ませたい。

そのための手順を紹介します。

対象読者

  • Mac(またはUnix-like OS)におけるコマンドラインの基本的な使い方が分かる方
  • コマンドライン上でエディタ(Vim, Emacs, nanoなど)を使用できる方
    • vimと書いているところは、適当に置き換えてください
  • 「PATHを通す」の意味が分かる方

準備

MOBIファイルへ変換するツール kindlegen を入れる

下記URLからkindlegen(適切なOSのもの)をダウンロード。

パッケージを解凍し、PATHの通っているディレクトリにkindlegen本体を移動します。

(Gmailで2段階認証を使っている場合)Gmailでアプリパスワードを生成しておく

  • ログインとセキュリティ https://myaccount.google.com/security
    • アプリパスワードをクリック、指示に従ってパスワードを取得します(後で使う)

CUIのメールクライアント(postfix)をセットアップする

基本的には下記に従う(パスワードはさきほど生成したものを使う)。

このままだと大容量の添付ファイルを送れないので、送信可能容量を1GBまで増やします。

  • sudo vi /etc/postfix/main.cf

    message_size_limit = 10240000

    message_size_limit = 1073741824

CUIで添付ファイルを楽に送るツール mutt を入れる

  • Mac: brew install mutt

  • 設定: vim ~/.muttrc

    set send_charset="utf-8:iso-2022-jp"
    set realname="Your Name"

設定は最低限のみなので、本格的に使いたい人はググってください。

(おまけ)postfixをデーモンとして常に起動するようにする

Mac OS X 10.11 El CapitanからSystem Integrity Protection(SIP; rootless) という機能により、一部のシステムディレクトリが管理者権限付きでも操作できなくなりました。

そのため、SIPで保護されているディレクトリから設定ファイルをコピーして編集します。

手順

  • 設定ファイルを編集可能ディレクトリにコピー

    sudo cp /System/Library/LaunchDaemons/org.postfix.master.plist /Library/LaunchDaemons/
    
  • org.postfix.master.plist を編集

    sudo vim /Library/LaunchDaemons/org.postfix.master.plist
    
  • <dict>...</dict>の間に次を挿入(似たような設定が並んでいるので、末尾に追記します)

    <key>RunAtLoad</key>
    <true/>
    
  • launchdに設定を読み込ませる

    sudo launchctl unload /Library/LaunchDaemons/org.postfix.master.plist
    sudo launchctl load -w /Library/LaunchDaemons/org.postfix.master.plist
    

本番

EPUBをMOBIに変換

EPUBファイルのあるディレクトリに移動。

kindlegen foo.epub

KindleにMOBIファイルを転送する

件名不要、本文不要、添付ファイルのみ送る。

mutt -s "" -a foo.mobi -- [email protected] < /dev/null

おまけ: 上記を一気にやってくれるシェルスクリプト

gistに置いたのでご自由にお使いください。

以上。