良質なキーボード、軽さ、たたずまい。これにLinuxの取り合わせが醸す作業環境としての素晴らしさは、家電店店頭に置いてある状態からはおよそ想像できないでしょう。分かりやすいメリットの一例として、今回はDropboxによる双方向の自動ファイル同期を取り上げます。Linuxが動作するようになって以来、Dropboxによる双方向の自動ファイル同期ができないものかと試行錯誤していたのですが、Synchronator.pyというPythonスクリプトがDM200上で使え、それで実現できました。https://github.com/markhamilton1/SynchronatorSynchronator.pyは、本来iOS上で動作するPython開発環境であるPythonista向けに作られたスクリプト。Linux版は提供されていないDropbox公式もLinuxに対応した版を出してしていますが、対応はx86のみ。DropboxDM200のARMに対応したものは出ていません。Pythonの実装なのかと勘違いしますが、このインストーラがプロプラなx86バイナリをダウンロードしてくるようになっています。Pi界隈では恐らくQEMUベースの有料x86バイナリ実行環境を使う習わしとなっているようです。Dropboxの双方向自動ファイル同期があると素晴しいSynchronator.pyをDM200で使うとどんな感じ?Synchronator.pyは、双方向ファイル同期が可能です。DM200で更新したものをサーバ側へ反映することサーバ側で更新されたものをDM200側に反映することそのどちらもが可能です。更新の検知は自動で行なわれ、更新したファイルを指定するなどの手動の操作は不要です。同期はSynchronator.pyを起動したときのみに単発で行なわれ、Synchronator.pyがシステムに常駐してファイル更新を常時監視するわけではありません。同期対象のディレクトリはSynchronator.py実行時の引数で決定されます。引数省略時の同期対象はホームディレクトリ(/home/dm200/)にあるDocumentsディレクトリになります。/home/dm200/Documents/Mac側では、Dropboxディレクトリ内、アプリディレクトリ内のSynchronator用のディレクトリが対になります。/Users/ユーザー名/Dropbox/アプリ/Synchronator-hitoriblog/つまり、引数なしでの実行では下記のディレクトリの間で同期が実行されるわけです。「/home/dm200/Documents/」(DM200)←→「/Users/ユーザー名/Dropbox/アプリ/Synchronator-hitoriblog/」(Mac)Mac側の同期ディレクトリは、Dropboxで設定したアプリケーション名に依存します。アプリケーション名は他のユーザーと同じ名前が使えないため、「/Users/ユーザー名/Dropbox/アプリ/Synchronator/」というスッキリしたディレクトリ名は使えません。同期対象のディレクトリは、ポメラ側から見えるところに指定した方が利便性が高くなります。筆者の場合はポメラ側から見える「/mnt/vfat」以下に作ったDropboxディレクトリを同期対象に指定しています。/mnt/vfat/Dropbox/「/mnt/vfat」とは、SDカードのルートディレクトリに相当します。「/mnt/vfat/Dropbox/」は、ポメラ側からはSDカードに作ったDropboxディレクトリとして見えます。ポメラ側ではSDカード上に作ったDropboxディレクトリ内にテキストファイルを保存し、頃合いを見てLinuxを起動。Synchronator.pyを起動して同期を開始すると、ポメラ側で作成したテキストファイルがDropbox上にアップロードされることになります。ダウンロードまずは必要になるものをダウンロードし、必要なPython用モジュールをインストールします。https://github.com/markhamilton1/Synchronator/archive/master.zipインストール先述の通り、Synchronator.pyはポメラ側で作成・更新したファイルをスムーズに同期するためにSDカード上に置くのをおすすめします。通常は以下の操作でSDカードのVFAT領域がマウントできますが、これだとファイル操作にルート権限が必要。/mnt/vfatSDカードのVFAT領域はデフォルトでは/etc/fstabの記述によってルート権限がないとファイル操作ができない状態でマウントされるため、以下のスクリプトを使い、一般ユーザでもファイル操作ができる状態でSDカードのVFAT領域マウントすることをおすすめします。筆者は~/.bashrcの最後に追記してログイン時に自動マウントするようにしています。2>&1fi筆者はsdという名前で~/bin/に設置し、~/bin/にパスを通して使っています。上記のスクリプトでSDカードのVFAT領域をマウントした後、Synchronator.pyをSDカード上に移動します。/mnt/vfat/Dropboxアプリの作成とトークンの取得Synchronator.pyは動作にトークンが必要です。apps」にアクセス。app」ボタンをクリック。APIの初期設定では以下のように指定。何でもいいが、他のユーザーとかぶる名前は指定できない。token」の下の「Generate」ボタンをクリック。生成したトークンをテキストファイルに保存し、何らかの手段でDM200に送ります。時刻に関する重要な設定Synchronator.pyは時刻を見て更新を判断しているため、以下の設定は必須となります。ポメラ側とLinux側を行き来すると発生する時刻のズレを解消するには?初回の起動Synchronator.pyの初回の起動はトークンの適用から始まります。/mnt/vfat/Dropboxここで取得したトークンをプロンプトに渡すのですが、コンソールにコピペする方法が限られていて難しいと思います。取得したトークンをテキストファイルに保存して、それを/mnt/vfat/Dropbox/token.txtとして保存。トークンの取得、token.txtへの保存、SDカードのDropboxディレクトリに保存するところまでをPC上でやるといいでしょう。しかる後に次のようにするとコピペいらずで簡単です。/mnt/vfat/Dropboxうまくいっていれば同期が始まるはずです。簡単に起動できるようにする以降、以下のようにコマンドを実行すれば同期ができますが、これをいちいち手で打つのは面倒。/mnt/vfat/Dropbox~/bin/dbなどとしてシェルスクリプトを置いておくといいでしょうね。/mnt/vfat/DropboxiPhoneとのBluetoothテザリングについての設定を解説しました。DM200を起動するだけで同期が完了して便利です。現在のバージョンでは、Synchronator.py側で削除したりリネームした場合でも、ちゃんと正常な同期結果が得られるようになっていました。最新が一月前の更新だし、進化しているようですね。使ってみて、Synchronator.pyで気になる動作も出てきました。Synchronator.pyで同期している側で消したファイルやディレクトリが、新規作成のファイルだと勘違いされて復活してしまうこと。消えてしまう側に倒れた判断にならないのはいいですが、消しても消しても復活してしまいます。リネームした場合も同様です。この場合は、リネーム前とリネーム後というコピーができてしまうことになります。消したりリネームしたりする場合は、iPhoneアプリなどの公式クライアント側でしないと、この問題の発生は回避できなさそうです。公式クライアント側でリネームしたり削除したものについては、Synchronator.py側でもきれいに反映されるため、消す、リネームするを公式クライアントで行なえば運用上問題なさそうですDropboxの双方向自動ファイル同期があると素晴しいDropboxの素晴しさは今さら言うまでもありません。実際にDM200にSynchronator.pyを設定してみると、デバイス間にトンネルが開通した感覚になって素晴らしい。DM200がまた使いやすくなりました。