iPhoneからDPT-RP1に直接PDFを送る

DPT-RP1の問題点

DPT-RP1というのはSONYから発売されているデジタルペーパーです。液晶ではなく電子ペーパーを使った端末で、PDFファイルを読むにも目が疲れないし、ペンを使うときもペン先が滑らない優れものです。しかしながら、PDFファイルを端末に取り込むためには、SONY公式から出てるDigital Paper AppというWindows&Mac専用のソフトを使う以外に方法がないという欠点があります。
特にスマホから送れないのは大変惜しいところです。現状、スマホで面白そうなPDFファイルを見つけても、それをDPT-RP1で読むためには、一回PCを経由しなければなりません。

さて、前置きはここまでにして、今回はこの問題を解決するためにiPhoneからDPT-RP1に「直接」PDFを送る方法を紹介します。本稿ではiOS 10で動作を確認していますが、おそらくそれ以降のバージョンでも大丈夫かと思います。

iPhone上でのPython環境の準備

PythonistaとStaSh

今回はPythonを用いてiPhone・DPT-RP1間のやり取りを行うので、iPhoneでPythonを動かすためのアプリ、"Pythonista3"をインストールします。有料ですが、Pythonユーザーには価格以上の価値があるアプリだと思います。

次に、このPythonista上で動くシェル環境である"StaSh"をインストールします。Pythonista上のPythonコンソールで

import requests as r; exec(r.get('http://bit.ly/get-stash').text)

を入力し、アプリを再起動します。その後、launch_stash.pyを開き、実行するとコンソール画面がタブ表示になり、StaShが動き始めます。

依存パッケージのインストール

次にいくつかのパッケージを追加します。StaShからpipコマンドで追加もできるのですが、setuptools関係でインストールがうまくいかないことも多いので、今回はエラーが起きなかったものはpipでインストールし、その後、必要な分だけを手作業でsite-packagesディレクトリに移していくという方針でいきます。StaSh自体がやや不安定で、エラーが出る場合がありますが、その都度アプリを再起動して再実行すると上手くいきます。今回は~/Documentsを作業ディレクトリとして使ってますが、どこでも大丈夫です。

まずpip

$ pip install httpsig
$ pip install pbkdf2
$ pip install pycrypto

をインストールします。pip install httpsig pbkdf2 pycryptoのように一気にインストールしたいところですが、StaShではこれはできません。

次に、urllib3をインストールします。StaShから

$ cd ~/Documents
$ git clone git://github.com/shazow/urllib3.git
$ cp urllib3/urllib3 site-packages/urllib3

でインストールします。

続いて、パッケージdptrp1をインストールします。このパッケージによって前述のDigital Paper Appを用いることなく、DPT-RP1と通信できるようになります。GitHubで活発に開発が続いていることもあり、もしかすると将来的にはこの方法では使えなくなる…かもしれませんが。今回は記事執筆時点での最新バージョン0.1.0を使用しています。こちらもStaShを用いてインストールします。

$ cd ~/Documents
$ git clone https://github.com/janten/dpt-rp1-py.git
$ cp dpt-rp1-py/dptrp1 site-packages/dptrp1

これで実行環境は準備できました。

実行スクリプトの準備

StaShで、iOSからDPT-RP1にファイルを送るためのスクリプトをダウンロードします。

$ cd ~/Documents
$ git clone https://github.com/ki-chi/dptrp1-uploader-for-iOS.git

これをPythonistaの"Share Extension Shortcuts"というものに設定します。これを設定することで、iPhoneの各アプリからPDFを転送できるようになります。具体的にはPythonistaの設定画面から"Share Extension Shortcuts"を選び、以下のように設定すればOKです。"Send to DPT-RP1"の文字列やアイコンはお好みで。この設定が終わったら、一回iPhoneを再起動した方がいいかもしれません。

PDFを転送する

まずDPT-RP1をスリープから解除して、iPhoneと同じLANに接続するか、iPhoneのテザリングネットワークに接続します。ちなみにテザリングネットワーク経由でやると(なぜか)転送時間が長くなります。

残念ながら、DPT-RP1単体ではWiFiネットワークへの新規接続ができないので、LANへの接続設定やテザリングネットワークへの接続設定等はUSB接続したPCのDigital Paper Appで行う必要があります。

ここではSafariを例にしますが、DropboxやGoodReader等のPDFを扱うアプリでも可能なはずです。
Safariで任意のPDFファイルを開き、画面_上部_の「その他…」を選び、メニューの"Run Pythonista Script"を選択します。(この項目が存在しないときは一番右の「その他」からいけるはず)
この中に先程作った"Send to DPT-RP1"があるはずなので、こちらを選択します。

初回起動時にはDPT-RP1とのペアリングが要求されるため、DPT-RP1の画面に表示されているPINコードをiPhoneから打ち込みます。転送中、いくつかInSecureWarningが出ますが、無視します。
最後にファイル名と"Uploaded."が表示されればアップロード完了です。PDFファイルはDPT-RP1のReceivedディレクトリに保存されます。

注意事項

現時点で判明している注意事項は以下です。

このスクリプトについては、何かあればIssueなりTwitterなり、お気軽にご連絡ください。

参考サイト