2018年1月28日日曜日

Automatorを使ってMacでKindleをプリンター代わりに使う

普段、論文は紙に印刷して読むのですが、家でも会社でも印刷物が溢れていたり、同じのを何回も印刷してよろしくない。 かねてよりKindleをプリンター代わりに使えないかと思っていたのですが、実はプログラミングなしでそれができることを知ったので、備忘録的に紹介します。

この手の話になると、他の代替手段が登場するのですが、個人的に中途半端に全部ダメでした。

  • 通常のタブレットはちょっと重すぎる。普段ノートPCを持ち歩くので、ここにタブレットが加わるのはちょっと嫌だし、片手で持てない。私はカバンを肩からかけない派だ
  • 小型のタブレット(iPad mini相当)だといくらかマシ。と思って、NEXUSを買ったのですが、PDFビュワーは余白を切ってくれない。論文はわりと周囲の余白が大きくて、結果的に画面が小さくなし、片手で持ちながら拡大縮小するのは大変だ。タブレットは原則両手操作前提のUIになっているように感じる
  • 大型のスマートフォン(iPhone+相当)を利用している人もいる。しかし、大きいスマートフォンはその他のアプリを片手で使うのが辛い
  • 通常のスマートフォンで通常の本(Kindleアプリ)は行ける。しかし、論文になると2 columnなら行けるが、NIPSなどの1 columnは横にしてもちょっとしんどい

この点、Kindleの場合、

  • 何といってもサイズのわりに軽い
  • 片手で操作できる(ように設計されている)。特に物理ボタンがあると尚良い
  • PDFの余白を切って表示してくれるので、サイズ以上に大きく見える
  • もちろん充電のもちが良い

反応が悪いですが、読んでいるうちはそれほど気にならない。 この高解像度時代に、解像度が低い問題はあるので(特に私が持っているのは解像度の低い旧版)、最新版の300dpiでどれくらい改善されるのかは気になります。 ちなみに、最終的に解像度が足りないので横にして読んでいます。あれ、それならNEXUSで良かった?

さて、問題はどうやってKindleに論文を送るのか。USBケーブルを指してどうこうとか、アプリで開いてどうこうみたいなのは、圧倒的に紙の印刷にユーザビリティーで負けるので、印刷くらい手軽に送りたい。 AmazonはSend-to-kindleアプリというものを配布しているのですが、どうもJPのアカウントには対応していないらしくて、ログインできませんでした。 一方で、特定のKindleに向かって送信してくれるメールアドレスが付与されていて、そこに添付ファイルとして送信すると、そのままKindleがダウンロードしてくれる仕組みが提供されています。 ・・・ということで、メールを送るプリンタードライバーを作ろう!と思ったら、そんなことをしなくてもAutomatorとメールアプリとMendeleyで解決しました。

Automator

AutomatorはMacに標準搭載されている、ワークフロー構築アプリです。 これしたら、あれして、これする、みたいなのを書いておくと実行する、シェルスクリプトのGUI版みたいなものです。 Automatorには、"プリントプラグイン"というものがあって、これを作るとプリントダイアログから対象のPDFに対して処理を実行できるようになります。

Mendeley

Mendeleyはフリーの論文管理ツールです。 あまり論文管理はしないのですが、MendeleyはPDFファイルを勝手に論文タイトルにリネームするという便利機能があります。 昔、PDF2TEXT的なコマンドでテキスト化して、最初のそれっぽい行を自動で取ってきて、リネームするツールを作って使っていたのですが、いらなくなりました。

どうするのか

まず、Automatorで"プリントプラグイン"を作成します。ここに、"新規メールメッセージ"を追加して、宛先はsend-to-kindleのメールアドレス。件名が空だとメールアプリが警告を出すので適当に入れておきます(下の絵ではautokindleという件名にしてあります)。続けて"送信メッセージを送信"コマンドを追加します。これでプリントプラグインに渡されたPDFを添付したメールを作成して自動送信する、事ができるようになります。下のような感じになればOKです。これでジョブを名前をつけて保存します。

事前にメールアプリでアカウントの登録をする必要があります。 私は普段、Web経由でしかメールを使わないので、適当な別アカウントを印刷専用で使うことにしています。

実際に使う時は、常時Mendelyを起動させた状態で、特定の論文ディレクトリを監視対象にしてリネームさせます。これはPreferencesのFile Organizerの画面で設定できます(バージョンで違うかもしれません)。 印刷したい論文をブラウザで見つけたら、そのディレクトリに保存→Mendeleyが自動でリネーム→印刷→Automatorで作ったプリントジョブに投げる、でKindleに自動送信されます。 下の画面のように、印刷ダイアログで左下のドロップダウンを開くと、先程Automatorで作ったジョブ(下の画面だと、"autokindle")が現れるのでこれを選択するとジョブが実行されます。 私は今までは、全く同じフローで印刷ダイアログからOKボタンを押して印刷していたので、ほとんどユーザビリティーは変わりませんでした。 Mendeleyは単にファイル名のためだけなので、気にしないなら無くてもいいです。

さて今回意外とびっくりだったのが、Automatorでいろんなことができそうだということでした。 実は当初は、watchdogでファイルシステムを監視して、Gmail経由で送り、送ったらファイルを削除するスクリプトを書いていました。 そうしたら、Automatorの存在を知って、監視はいらなくなるし、そもそもメールアプリで十分だし、でスクリプトなんていらないということになりました。 もっと他の用途でも使ってみたいですね。

0 件のコメント:

コメントを投稿