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
ディレクトリに保存されます。
注意事項
現時点で判明している注意事項は以下です。
- Safariの画面_下部_のメニューから"Run Pythonista Script"を選ぶとPDFがうまくPythonistaに渡されない。
- 基本的にDPT-RP1はネットワークのレスポンスが悪いため、ペアリング時にエラーが出ることがある。何回か試せば繋がる。
- 送ろうとしているPDFファイルと同名のファイルが既にDPT-RP1のReceivedディレクトリに存在するとエラーとなり送れない。
このスクリプトについては、何かあればIssueなりTwitterなり、お気軽にご連絡ください。