2012年5月7日月曜日

Dropboxのちょっと変わった使い方(基本編)

Dropboxのちょっと変わった使い方(基本編)

※本ブログは6月末で他サイトに移設する予定です。これまで閲覧ありがとうございました。
[note] this blog is planed to be moved to other site until end of June. See you in there

DropboxとはWindowsのファイルやフォルダでありながら、他デバイス(PCやタブレット、スマホなど)とリアルタイム同期できる高機能ファイルシステムのこと。

これは非常に便利で、例えばiCloudを使ったiOSデバイスのフォトストリームのように、あるデバイスで作成更新したデータが即座に他のデバイスで使えるようになる。FTPなどの転送ソフトを利用するなどの手間が一切なく、ネット共有フォルダ+αのような便利さがある。

普通の使い方は、自宅(自宅PC)や会社(会社PC)や出先(モバイルデバイス等)で、いつでもどこでも最新の作業状態を(一切の手間なく)手に入れて作業を再開することである。

ここでは、Dropboxの最大の特長であるところのリアルタイム更新機能を用いて、ちょっと変わった使い方を提案してみたい。



タスク機能と組み合わせてリモートPCを操作する

タスク機能とはWindowsのコントロールパネルにある「タスク」のこと。Linux系ではcronと書いた方が分かり易いかも知れない。

Dropboxの中にバッチファイルを置いておき、タスクでそのバッチファイルをある決まった時刻に実行するように設定しておけば、自宅や出先や会社などそのPCから遠い場所から、そのデバイス(普通はPC)に何でもさせることができる。例えば、
  • ハードディスクの使用量をモニタする[Batchファイルをタスクに登録]
  • 再起動させる[Batchファイルをタスクに登録 ]。再起動ではなくシャットダウンも可能だが、その時点でリモート操作は終了してしまう
  • メールのsubjectsを100件リストアップする[Php実行を含むBatchファイルをタスクに登録 ]
  • 自宅のモニタカメラを使う。子供やペットの様子をモニタする[未実装]
  • 自宅のエアコンを帰る30分前にONしておく[未実装]
  • 会社PCをリモート接続する[VNCアプリを含むBatch ファイルをタスクに登録]。通常自宅PCから会社PCへは簡単には接続できないが、その逆(コールバックというのかな)は可能な場合が多いことを利用する。前に「Emailリモートコマンドが5分で構築できる時代」という記事を書いたが、Dropboxでさらに簡単になった
等ができる。

最後にあげたリモート接続は別として、GUIで操作するわけではないので、バッチファイルやPHPスクリプト等を作成しなければならないが、そこを突破できれば何でもできるようになる。

例えば、1番目の、(リモートPCの)ハードディスクの使用量をモニタする、を実際にやってみよう。

Dropboxさえ使えればリモートPCがぶら下がるネットワークにポートに穴を開けたり特別なサーバを用意したりする必要はない。対象ドライブ上で(リモートPCで)DIRコマンドした結果をDropbox内に定期的に保存するだけでいいのだ。

これは従来やっていたやり方と比べて格段に敷居が低くなった。従来のやり方の例としては、DIRコマンドした結果をEmailで飛ばすなりTweetするなりする必要がありこれが結構知識と手間が要ったのだ。

Dropboxを利用する場合は準備することは2つ。1つ目はBatchファイルを作成すること。例えば、
-------
@echo off
d:
DIR/W > "C:\Documents and Settings\user\My Documents\Dropbox\DIR_out.txt"
-------
というBATファイルをDIR.batという名前にしてDropboxのフォルダに置く。

2つ目は、そのBatchファイルをリモートPCにタスク登録すること。リモートPCの「コントロールパネル」「タスク」でそのBATファイルを登録しておく(毎日1時間おきに実行するなど)

これらが準備できれば、(ローカルPCの)DropboxにあるDIR_out.txtを開けばリモートPCのDドライブの使用量を確認できる。その内容は1時間毎に更新される(上のタスク設定にした場合)。タスクの設定を変えれば1時間毎を5分毎にすることもできる。

iphone/ipad/ipod-touchなどのiOSデバイスでもDropboxをインストールして使用することができる。ファイルの更新はできないが、ファイル参照、フォルダ作成、ファイル削除が可能だ。これは、どこにいてもリモートPCの状態をモニタできることを意味する。ドライブ容量がパンクする前に
不要ファイルを消すなり移動するなりのアクションが取りやすくなる。


繰り返し処理とイベント処理を使い分ける

DropboxによるリモートPC操作における「繰り返し処理」とは、タスクで設定した時間毎に何度でも繰り返し処理を実行すること。例えば上の例にあった「ハードディスク容量をモニタする」のように、1時間毎にモニタ内容を更新する。

DropboxによるリモートPC操作における「イベント処理」とは、タスクで設定した時間に係わらず、ローカルPCからの操作で1度だけ実行すること。ローカルPCから何か合図をしたらその後一度だけリモートPCで処理を実行する。上の例にあった「メールのSubjectsを100件リストアップする」「エアコンをONにする」「モニタカメラを使い始める」の場合のように、何度も繰り返すより、手元のデバイス(PCやスマホなど)からの操作で1度だけ処理したい場合がある。

こういう使い分けは、Dropboxを利用する場合、どのようにすればいいだろう。

1つの例としては、下記のように、Batchファイル内でlockファイルの有無により処理を分ける方法がある。

----
@echo off
if exist Dir.lck goto END
echo "CmdViaDropbox" > Dir.lck

d:

DIR/W > "C:\Documents and Settings\user\My Documents\Dropbox\DIR_out.txt"


:END
----

このBatchファイルでは、「Dir.lck」というlockファイルがあると処理を飛ばす。lockファイルがないとlockファイルを作成した上で処理する。

こうしておけば、ローカルPCやiPhoneのDropboxフォルダでlockファイルが削除されるまで、いくら5分毎にBatchファイルが呼ばれても、処理されないようになる。


実際に使ってみると「イベント処理」の方が有効だった。いくら暇でも1時間や5分毎に更新内容をチェックするような事態はあまりない。メールのSubjectsを100件5分毎に取得しても5分前との差異は数件も無いだろう。それよりも必要なときにローカルデバイスからlockファイルを削除しさえすれば暫くすれば情報が取得できるのであるから、「イベント処理」で十分なのだ。

lockファイルを使う方法はPCだけ使う用途だけで考えるとなにかもったりしているが、Dropbox内のファイルにフルアクセスできないipad,iphone,ipod-touchのようなモバイルデバイスを使うとき、真価を発揮する。


リモートPCを操作するためのパラメータ

リモートPCで実行させたい処理に引数等のパラメータを渡したい場合がある。例えばメールのSubjectsをデフォルト (なにも指定のないときの意) で100件リストアップする処理の場合に、
  • 100件を50件に変更する
  • 差し出し人を特定のメールアドレスでフィルタする
  • Subjectだけではなく本文もリストする
等、いろいろ考えられる。

[オンとオフ]

上のlockファイルの有無で処理を分けることができるように、モバイルデバイス上のDropboxからでも調整しやすいパラメータである。ファイルの有無やフォルダの有無などいろいろ試すことができそうである。

[文字列]

モバイルデバイス上のDropboxからだと厳しいが、フォルダが自由に作成できるのでフォルダ名にパラメータを埋め込んでそれをリモートPC側で認識させる方法が考えられるだろう。


終わりに

iOS系モバイルデバイスのDropboxアプリの仕様が制限されているのは何故だろうか。ソフトキーボードがあるのだからテキストファイルが編集できてもよい気がするのだが。

テキストファイルが編集できるようになれば、リモートPCと同じ自由が手に入るだろう。


参考情報


DropboxのURL
https://www.dropbox.com/

以上