radiko.jp録音環境構築(実験)

GuruPlugServerでradiko.jp録音環境構築(実験)参照リンク(下)を参考に、rtmpdumpとswftoolsを組み合わせた方法で、radiko.jp録音環境の構築がうまくいきました。

そこには、swftoolsのswfextractか何かで認証情報を引っ張ってきて、色々とゴニョゴニョやるように書いてありました。参照リンク先(深謝!)とちょっとの想像力で、何とか録音できるようになりました(実験済み)。linux系ならば、cronと組みあせれば予約録音も可能になるようです(これも実験済み)。swftoolsの導入時、コンパイル作業が必要になったが、参照リンクのおかげで、特に問題なくできました。

コンパイル時にちょっと注意する必要が

ただ、jpegのライブラリを別途用意する必要があります。これも参照リンクを参考にひっぱってきましたが、版数に6だとか8だとかがあり、結局6で動かしてみました。参照リンクには8版での導入例がありましたが、6でも動くようです。
#もしかするとswfextractだけ使う分には影響ないのかも知れませんね

ただコンパイル途中でエラーが1つ出ます。それをなんとかするため、lib/jpeg.cの462行目付近の関数を

[lib/jpeg.c]
462 int jpeg_load_from_mem(unsigned char*_data, int size, unsigned
char**dest, int*width, int*height)
463 {
464     fprintf(stderr, "jpeg_load_from_mem: No JPEG support compiled in\n");
465     return 0;
466 }

のように変更する必要があります。引数の型を正しく設定するだけですが。

シェルスクリプトの作成

今回、参照リンクにあったrec_radiko.shというシェルスクリプトを使わせてもらいました。ただし出力ファイルの名前の付け方をradikoolと合うように変更しました。

[~/bin/rec_radiko.sh]
#OUTFILENAME=${OUTFILEBASEPATH}/${OUTFILEPREFIX}_`date +%Y-%m-%dJST%H:%M:%S`
OUTFILENAME=${OUTFILEBASEPATH}/${OUTFILEPREFIX}_`date +%Y%m%d%H%M`

また、そのまま実行するとなぜかよく失敗します(20回に19回は失敗)。

メッセージは

failed auth1 process
failed auth2 process

など。どちらも認証処理時の失敗なんでしょうね?

でも、Verboseモードにするか(-qオプションを削除)、retryまでの待ち時間を長めにとれば、ほぼ100%うまくいくことが分かりました。
#何かのタイミングが関係しているのですかね?

[~/bin/rec_radiko.sh]
#
# access auth1_fms
#
#wget -q \
#     --header="pragma: no-cache" \
#     --header="X-Radiko-App: pc_1" \
#     --header="X-Radiko-App-Version: 2.0.1" \
#     --header="X-Radiko-User: test-stream" \
#     --header="X-Radiko-Device: pc" \
#     --post-data='\r\n' \
#     --no-check-certificate \
#     --save-headers \
#     --tries=5 \
#     --timeout=5 \
#     -O auth1_fms_${OUTFILEPREFIX}_${CHANNEL} \
#     https://radiko.jp/v2/api/auth1_fms
wget -q \
--header="pragma: no-cache" \
--header="X-Radiko-App: pc_1" \
--header="X-Radiko-App-Version: 2.0.1" \
--header="X-Radiko-User: test-stream" \
--header="X-Radiko-Device: pc" \
--post-data='\r\n' \
--no-check-certificate \
--save-headers \
--tries=5 \
--timeout=10 \
-O auth1_fms_${OUTFILEPREFIX}_${CHANNEL} \
https://radiko.jp/v2/api/auth1_fms

ここでは-timeoutを変更していますが、-qを取ってしまっても、いろいろ
文字列がでましたが、失敗せず録音(実際はその前の認証処理)できているようです。

環境その他

Linux種類:Debian Lenny
(Linux guruplug 2.6.32-00007-g56678ec #1 PREEMPT Mon Feb 8 03:49:55
PST 2010 armv5tel GNU/Linux)
装置名:GuruPlugServer

アーカイブファイル名

rtmpdump-2.3.tgz
swftools-0.9.1 ( swftools-0.9.1.tar.gz )
#0.9.0はNG
freetype-2.4.4 ( freetype-2.4.4.tar.gz )
jpeg-6b ( libjpeg6b_6b.orig.tar.gz )
jpeg-8c ( jpegsrc.v8c.tar.gz )

お世話になったリンク

個人的自由帳 ≫ とあるサイトの録音手段 (シェルスクリプト)
http://blog.half-moon.org/archives/963

SWFTools導入 電話会議システムを導入 @OpenMeetings – 禿散らかしてごめんなさいhttp://d.hatena.ne.jp/machua/20101106/1289031103

CentOS安装Swftools FRONT-END STUDIO
http://www.wwswf.com/?p=1444

以上です。

タイで買ったSIMフリーiPhoneがxxだったお話

タイという国には工業製品を新規に立ち上げる技術もなくその意思もないが、他国が作った工業製品を利用して生活を楽しんだり生活の糧にするような技術と意気込みは素晴らしい、と私は思っています。

今流行りのSIMフリーiPhoneについても、キャリアが扱う正規品からMBK(日本でいう携帯屋が100件以上集まっているモール)で扱う改造品や輸入品まで、消費者にとっていろいろな選択枝を用意してくれています。

今回タイのパタヤにあるITセンタで手に入れたSIMフリーiPhone3GSについて、いろいろ情報を得たり、悪戦苦闘したりしました。その顛末を書いてみたいと思います。

現地で実物を見るまで買う気は毛頭なかったが。。。

iPodを3台、iPadを5台持っていていろいろ活用させてもらっていますが、iPhoneは1台もありません。電話機能は必要ないと思っていたからです。

そういうわけで、タイの携帯売り場では、娘のiPad用のカバーなどを物色しながら、iPhoneやiPad、 iPad-miniの値段をチェックしたりしていました。

iPhoneの値段は日本が(恐らく)世界一安いので、わざわざ外国で買うつもりなどなかったのです。
実際、タイのキャリアが扱う正規品(SIMロック、デバイスロック)だと

  • iPhone5:28900Baht(78030円)、(16G、以下すべて同じ)
  • iPhone4s:18900Baht(51030円)
  • iPad-mini:13900Baht(37530円)
  • iPad4:16500Baht(44550円)
IMG_6371
IMG_6372

していました。ほかにも、香港から輸入したSIMフリーのものが売られていますが上記のものより値が張ります。Amazonなどでも実際そうした値段で出ています。iPhoneはどの世代であっても出てすぐにはどれも10万円以上してたように記憶しています

そうこうしているうちに目に止まったのが、「iPhone3GS(8G)」とパッケージに油性マジックで書かれた黒モデル。帰国するまで日本でも売られていることを知らなかったですが、8GBモデルというのがあり、「それなら多少は安いんだろうな」と思いました。それが悪夢の序章

「これSIMフリーですか」
「そうです」
「いくらですか?」
「7000B(18900円)です」
「高いね。もっと安くできない?」
「いくらにしたいの?」
「5000B!」
「それは無理。6500BならOK」
「わかった。ありがとう」

そう答えて、一階のスタバで頭を冷やしてから戻り、

「6500Bでいいや。白モデルある?」
「ありますよ」
「それ頂戴」
「毎度あり~」

とは言いませんでしたが、自分が持っていた現地SIMを使ってアクティベートしてもらい、ホテルの部屋に帰って、持っていた現地SIM 3種で通話チェックしてみました。すべてOKで、インタネット接続もできます。テザリングもできそうです

IMG_0014

 

「SIMフリーのiPhoneが手に入った」その時は、こんなに安いSIMフリー機が手に入るとはなんとラッキーなことだろうと思ってました。

帰国早々OSアップデートしてしまい、それから悪夢が始まった

iPhoneはiPodやiPadと一卵性双生児のように中身はほぼ同じだが、致命的な違いがありますSIMがないとOSをUPDATEできないということ。

実際、私が持っている初代iPadでは3G対応で解約するときUPDATEできない旨説明されたのでそれは認識していました。

ですが、実は微妙に違っていたのです。SIMがないとOSアップデートできないのではなく、SIMがなくてもOSのUPDATEはできるがアクティベートができないのでした。しかもアクティベートできないからといってUPDATE前のOSに戻すこともできず、それこそにっちもさっちもいかなくなるのでした。

帰国してから電波のいいDocomoSIMを刺して快適に使えていたiPhone3GSは、OSのUPDATE前後で豹変しました。「SIMフリーなのでDocomoSIMがあればなんの問題もない」と考えていた私にはそれこそ晴天の霹靂でした。

アクティベートできないのです。初期化モードにして何度やってもアクティベートできない。工場出荷状態から何度始めても「アクティベートできませんでした」のメッセージ。サーバがBusyだとか、どこに原因があるのか全く不明なメッセージが出てきます。

IMG_0002

 

こういうときは、何はともあれ、グーグル先生に相談する

今回のこの状況をネットで検索してみると、いろいろ出てきます。
  • DocomoSIMでもSIMフリーに対応しているものとそうでないものがある
  • SIMフリーのものを買ってきてOSアップデートしたら動かなくなった。実は改造版(脱獄したもの)をつかまされたとわかった
  • OSのバグで「サーバがBusyでアクティベートできませんでした」が出る
  • SIMフリー機のアクティベートには日本のキャリアのSIMは必要ないが、iPhoneサポートキャリアのSIMでないとできない。
  • SIMフリー機が動かないのでアップルストアに相談したら交換してもらえた
などなど。

最初は「また海外にいったときにでもクレームを付けるか。でも先方は覚えてないだろうな。レシートも貰ってないし」と半分諦めていました。でもネットの情報で、アップルサポートは全世界で使えるのだと思い出しました。

アップルサポートで聞いてみる

アップルサポートに電話すると20分ほど待たされてやっとつながりました。「海外で買ってきたSIMフリー機にいろいろなSIMを刺してつかっているがアクティベートできない」旨伝えると丁寧な対応で好感が持てました。でも、いろいろやってもらっている最後の方で、「3GSは発売から2年経っておりすでにサポートを終了している。本来この電話もサポート対象外です」と告げられました。8GBのものは現在でも生産?して発売しているので厳密に言えば正しくないけれど、そのときは日本では8GBのモデルを扱っていないのだろうと納得しました。

次に、アップルサポートからアップルストアを紹介してもらい翌日電話してみました。丁寧な応対で驚きました。ipad,ipod,mac等10台近くもっているのにこれまでアップルサポートもアップルストアも使ったことがなかったのです。

アップルストアでジーニアスに聞いてみる

渋谷店でジーニアスに予約して翌日行ってみました。

このモデルは日本では稀少なので在庫があるかどうか。これから確認してみます」

「了解しました。よろしくおねがいします」
「やはり日本にはないですね。そうなるとオークション等でこれと同じモデルを手に入れるかする位しか方法はないと思いますよ」
「そうですか(これって、同じモデルを買えということなの?だったらわざわざ相談しないのに。。。)」そうこうしているうちに、店舗用iphone?を忙しく操作しながら対応してくれていたジーニアスが、「同じモデルが国内にありそうです。ちょっと詳しく探してみます」とのこと。このとき、ジーニアスが天使に見えました。「交換可能になるまで少しお待ちいただけますか?」
「交換までざっくりとどれくらいかかりまでしょうか?」
「ちょっとわかりません」
「ざっくりでいいです。1年なのか、半年なのか、3か月なのか、1か月なのかでいいです」
「3ヶ月はかからないと思います」
「そうですか」
「もう少し詳細を確認してみます」このとき私は「すばらしい!」と感動していました。ネットで調べた通り、

  • SIMフリー機が動かないのでアップルストアに相談したら交換してもらえた

が本当だったから。

でも、このあと1つ目のどんでん返しが。

しばらくしてジーニアスが戻ってきて、

「実は大変なことが分かりました。このiPhoneはSIMフリーではなくAT&TのSIMロックがかかったものだったようです」
「そうですか」
「なので日本では紐付できないので何もできないことになります」
「分かりました。いろいろ調べていただいてありがとうございます」

そうなんです。本物のSIMフリーではなかったのです。正規?のSIMフリーではなく脱獄したSIMフリーだったようなのです。

AT&T機とわかってほっとした

買った当日、なんとなく、「SIMフリーではなく、SIMロックされたモデルを脱獄したものではないか」と感じていたのです。それは何故か。買ってすぐアクティベートしてもらったときのアイコンの中に、「Cydia」があったのです。それを見たときなにかおかしい感じがしました。また、「Cydia」の隣に中国語らしき文字のアイコンが最後に置かれていました。(以下は脱獄後にやっと取り出せた買った直後の画面スナップ)

IMG_0012

 

「香港版なのかな」

そのときはそう考えました。パッケージも破く必要がありましたし、本体に貼られている粘着テープのようなものも、iPodやiPadで見覚えのあるものでした。

だから、「ひょっとしたら改造版でないか」という確証がいろいろ出てきていたにもかかわらず、そうは思いませんでした。(自分にとって)都合のいい方向に解釈していたようです。
でも、このときひとつ、大変な情報を得ていたのです(2つ目のどんでん返し)。それは、AT&TにSIMロックされたiPhoneであること、です。これであとで一喜一憂することになります。ネットを調べると、他キャリアのはできないが唯一AT&TのiPhoneはファクトリで(正規に)SIMロックを外すことができるとあったからです。

AT&TにSIMロックを外してとWEBで申請する

そうなんです。AT&Tは1、2年前から宗旨替えして、SIMロック(デバイスロックともいう)を外すサービスを行っていたのです。いろいろ条件はありますが。タイで買ってきたものですから条件を満たすかどうかは不明です。とりあえずWEBにアクセスしてSIMロックを外してもらえるように情報を出しました。

情報を出してから1週間たった位のときに、ネットで「回答が来るまで6日から2、3週間かかるらしい」という情報を入手していたので、「そのまま待つしかないか。もしダメでも有料でSIMロックを外してもらえる業者もあるらしいのでなんとかなりそう」と気長に待っていました。

AT&TのSIMカードでアクティベートさせてみる

でも、

「待てよ。AT&TのSIMロックということはAT&TのSIMさえあればアクティベートはできるんだよな」

と考えてAmazonでSIMを取り寄せました。

特急で取り寄せたSIMカードでしたが、結構苦労してSIMカード自体のアクティベートが成功しましたが、結局3GS本体はアクティベートできませんでした。「SIMカードがインストールされていません」と出てきます。

SIMカードのトレイが機械的に壊れているのかと、ネットの情報を頼りに開けてみましたが、ここで大変なことが分かりました(3つ目のどんでん返し)。新品とは真っ赤なうそで、内部の金属部分には指紋というか手の油がびっしりで、一見して改造したものと分かりました。

IMG_8259
IMG_8260

分解方法についてはこちらを参考にしました。

AT&TからSIMロック解除に関する回答が来るまで脱獄してみる

ハード的に改造されているとわかったとなると、すべての前提が崩れます。ソフト的な改造だけだとネットで調べられる範囲で8、9割は想像がつくのですが、ハード改造だと「何が起こるかわからない」ことになります。

こうなるとあと残されているのは、脱獄しかありません。今回私が3GSに対してUPDATEした最新OSの6.0.1で「紐なし脱獄」ができるのは旧ブートROMの3GSだけだそうですが、私のは新ブートROMでした。

結構時間を掛けて脱獄に成功しました(なにをもって成功というのかわかりませんが)が、アクティベートが必要ない代わりに電話機能は使えずSafariも使えません。音楽を聴いたりビデオを見たり等には使えます。今もっているipodと同じ、というかそれ以下のものに変身してしまいました。

IMG_8264

というわけで、AT&Tからの回答をしばらく気長に待つしかありません。

[追記:2012-12-14]

ATTからの回答が来ました。やはり正規店での購入の確証がないとの理由で、デバイスロックの解除を断られました;

Thank you for contacting AT&T Customer Care about unlocking your iPhone.
We are unable to complete your request at this time due to the following reason:
  • Faxed documentation is ineligible or not received.
You may also check the status of your unlock request by clicking the link for AT&T’s Device Unlock Status Portal.
 
Sincerely, 
The AT&T Customer Care Team 

今回の教訓は?

今回の教訓は、ちょっとでも変だと勘が働いたら徹底して調べるべき、ということ。「変だな」と感じたら大きな行動を起こす前に調べろということです。

今回のことは信用や人命に関わるような重要なことではないのでよかったのですが、自分の勘やら直感を鍛えることの重要性を再認識することになりました。

以上です。長い話を最後までありがとうございました。

[追記:2012-12-28]

この話には後日談があり、ATTのデバイスロックせずとも、脱獄iPhone3GSが奇跡の復活を果たしました。詳細は別記事にあります。

[追記:2013-01-06]

現在またパタヤ滞在中ですが、脱獄iPhoneをSIMフリー機と称して売っているTUK-COMの携帯屋をたずねてみました。

並んでいるiPhoneはどれもキレイにWRAPされていて一見新品のように見えます

でも今回のことを経験した私からみると、「恐らくこのあたりの携帯屋の売ってるのはすべて改造品だろう」と思いました。「新品か中古か、どちらがほしい?」と聞かれるけれども、真意は「新品に見えるものと中古に見えるもの、どちらがほしい?」と聞いてるのだと。よく見るとやはり細かいところが新品とはいえないように見えなくもないです。

「これは中古でなく新品か」と店員に聞く私の隣で、ファラン達がそれらの値段を聞いてます。ちょっと可哀想

私の想像ですが、そこで売っている人も実は改造品かどうかのところはよく知らないのでしょう。日本の量販店もそうですが、店員総体でなく店員個人で見ると持っている製品知識のばらつきが著しいので、コレも仕方のないことかと。

あと、WRAPしたiPhoneに「新品」ではなく「オリジナル」と書いてあるのは、どういう意味なんでしょうね。

以上です。

関連する記事:

脱獄SIMフリーiPhone3GSが奇跡の復活を!

Dropboxのちょっと変わった使い方(メール取得)

HDDドライブの使用量をモニタする方法を例として、Dropboxを利用したリモートPCの操作について示しましたが、ここでは、リモートPCでメールサーバ(受信)にアクセスしてタイトルをリストアップしておき、(手元にある)ローカルPC(またはモバイルデバイス)でその内容を確認する方法について具体例を示します。

準備するものは3つになります。

  1. Dropbox内のファイル群
  2. メール取得スクリプト(PHP)。PHP環境のインストールがインストールされていることを前提としている
  3. タスク登録

メールタイトル等を取得するPHPスクリプト例

----
/* subchk.php : a PHP script for checking subject from an email account
PHPの版数は5.2.5以上を想定
*/
//------------------------------------------------------------------------------
// 初期設定
 mb_internal_encoding("SJIS");
//------------------------------------------------------------------------------
/* POP3 サーバと接続 */
 $mbox = @imap_open("{"."POP3サーバアドレス".":110/pop3}INBOX","POP3アカウント名","POP3パスワード");

 if ($mbox) {
 /* 新着確認 */
 $mboxes = imap_check($mbox);
 $mail_cnt = $mboxes->Nmsgs;
 echo "$mail_cnt 件あります\n";
 /* 1通以上あれば */
 if ($mail_cnt > 0){
   /* 各メールのリストを作成 */
   for ($i = $mail_cnt; $i > 0; $i--){ echo "$i]";
    $head = imap_header($mbox, $i);
    echo mb_decode_mimeheader($head->subject)."\n";
    echo $head->date."\n";
    echo mb_decode_mimeheader($head->fromaddress)."\n\n";
   }
 }
 imap_close($mbox); exit(0);
 }else{ /* 認証の失敗 */
  print("Unable to validate username/password.\n"); exit(1); } ?>
----

メール取得スクリプト(PHP)の更新と保存場所

上記スクリプトをエディタに取り込んでPOP3サーバアドレス、POP3アカウント名、POP3パスワードを自分のメール環境に合わせて変更します。

変更後のスクリプトファイルを例えばsubchk.phpというファイル名にして、Dropbox外の適当な場所に保存します。処理内容(スクリプトコード)を固定して使うこと、アカウント名やパスワードを入れていることからDropboxフォルダの外に保存すべきと思います。ここでは、Cドライブ直下に”Bin”というフォルダを作成してその下に保存しています。

PHPはリモートPCのみにインストールすればよいと思います。ここではCドライブの直下に”Php”というフォルダを作成してそこにインストールしました。環境変数(PATH)は設定してもしなくてもよいです。

Dropbox内のファイル群の構成例

dropboxCmdViaDropbox

管理しやすくするため、リモート操作専用のフォルダ(例えば”CmdViaDropbox”)を作成しDropbox直下に置き、そこに

  • Batchファイル(bat\subchk.bat)。Batchファイルはそうたびたび更新することがないでしょうから、”bat”フォルダに集めておく。iPad等からの操作時にlockファイルを削除することがありますが、間違えてBatchファイルを消さないようにする対策にもなるからです
  • 結果出力ファイル(rep_subchk.txt)
  • Lockファイル(subchk.lck)

等を入れておくきます

Batchフォルダ内のファイル構成例

dropbox_CmdViaDropbox_bat

Windowsタスクから直接起動されるBatchファイル(Main.bat)の作成例

----
@echo off
REM call bat\RemotePC.bat
call bat\Subchk.bat
REM call bat\Subedit.bat
REM pause
exit
----

メール取得Batchファイル(Subchk.bat)の作成例

----
@echo off
if exist Subchk.lck goto END
echo "CmdViaDropbox" > Subchk.lck
cd c:\bin
C:\php\php.exe -f subchk.php > "C:\Documents and Settings\user\My Documents\Dropbox\CmdViaDropbox\rep_subchk.txt"
REM pause
REM exit
:END
----

これはBatchファイル(MAIN)から起動されるメール取得Batchファイル(Subchk.bat)の作成例。

起動方法と結果例

手元のデバイス(ローカルPCやiPad、iPhoneなど)のDropboxフォルダを開き(iPadならDropboxアプリを起動)、CmdViaDropbox\subchk.lck というLockファイルを削除します(iPadのDropboxはファイル編集はできないがファイル削除はできる)。

するとLockファイル削除からタスクの設定時間(ここでは5分毎にMain.batが処理されるようタスク登録されたと仮定)が経過したところで、Main.batを経由してSubchk.batが呼ばれます。

Lockファイルが存在しないのでPHPスクリプトのコードが処理されてメールサーバ(POP3)から抽出したタイトルリストが結果ファイル(rep_subchk.txt)に出力されます。

タイトルリストの数にもよりますが1分から長くて数分で処理が完了するでしょうから、上の仮定でいけば6分から8分後には最新のタイトルリストが手元のデバイスで参照できるようになります。

なお、Dropboxの同期時間は0として計算していることに注意してください。回線が細いと当然無視できない時間がかかるでしょう。

以下は結果ファイルの例

----
65 件あります
65]グーグル参入で活気づく「クラウドストレージ」市場
Tue, 08 May 2012 15:36:36 +0900
ccc@dddddd.com
64]4つの実践演習でチームをまとめるスキルを体得●【リーダー養成プログラム】
Tue, 08 May 2012 15:32:02 +0900
ccc@dddddd.com
63]月間トップはスルガ銀と「SEは正しい」/ITproスマホサイト刷新
Tue, 08 May 2012 15:24:02 +0900
ccc@dddddd.com
----

応用

PhpスクリプトやWindowsアプリを用意してそれらを呼び出すBatchファイルをMain.batに追加するとリモートPCにやらせたいことを拡張できます。上の例では(ここではコメント(REM)になっていますが)

  • リモートPC側からVNCを呼び出す(RemotePC.bat)。VNCアプリと組み合わせて処理する
  • メールの本文をリストアップする(subedit.bat)。Phpスクリプトと組み合わせて処理する

などが実装できます。

関連する記事

Dropboxのちょっと変わった使い方(基本編)
Dropboxのちょっと変わった使い方(メール取得)

お世話になったリンク

Dropbox

以上です

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

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度だけ処理したい場合があります。昔PCに赤外線リモコンをつけてCATVの番組予約をしたことがありますが、そんなことも可能です

こういう使い分けは、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のちょっと変わった使い方(基本編)
Dropboxのちょっと変わった使い方(メール取得)

お世話になったリンク

Dropbox
以上です

WordPress:ブログのURLを変更したい

ブログのURLを変更したい

WordPressの設置方法について、インストールしたURLと設置したい(訪問者に見せたい)URLを別にしたい場合があると思います。このトピックを扱った記事は結構多いのですが、ほとんどがルートURLへの設置場所変更の方法についてのもので、ルートURL以外への設置場所変更の方法がなかったので、ここに記します。ここでは「インストールしたURLと同レベルのURLに設置する」場合を説明します。

このブログ自体、最近jblogからblogに設置場所を変更しました(インストールURLは変更せずに)。マニュアルで設定したリンクなど、もしかするとjblogのままのものもあるかも知れませんがそれはそれできちんと表示できるようです。ここでは、

http://krasavkana.com/jblog:インストールURL
http://krasavkana.com/blog:設置URL

のように、設置URLをインストールURLと同レベルのところにおきたい場合の方法です。

手順は、

  1. WordPressに管理者でLOGINして、「設定」にある「サイトのアドレス (URL)」を変更する
  2. 自宅サーバやレンタルサーバにて、(ファイルマネージャなどで)設置URLのフォルダを新規作成する
  3. index.phpおよび.htaccessをインストールURLから設置URLのフォルダにコピーする
  4. 設置URLにコピーしたindex.phpを編集する
  5. パーマリンクをデフォルトから変更している場合は再設定する

以上でOKのようです。設置URLにコピーした.htaccessを変更する必要もありませんでした

WordPressに管理者でLOGINして、「設定」にある「サイトのアドレス (URL)」を変更する

(変更前)

サイトのアドレス(URL):http://krasavkana.com/jblog

(変更後)

サイトのアドレス(URL):http://krasavkana.com/blog

自宅サーバやレンタルサーバにて、設置URLのフォルダを新規作成する

ファイルマネージャなどのマニュアルを参照してください

index.phpおよび.htaccessをインストールURLから設置URLの(ファイルマネージャなどで)フォルダにコピーする

ファイルマネージャなどのマニュアルを参照してください

設置URLにコピーしたindex.phpを編集する

ファイルマネージャなどのマニュアルを参照してください。たとえば、

http://krasavkana.com/blog/index.php
<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);

/** Loads the WordPress Environment and Template */
require('../wp-blog-header.php');
?>

の最後の行を変更。同列のフォルダ(URL)に設置する場合はドット2つを使って相対パスを指定する必要があります

(変更前)

require('./wp-blog-header.php');

(変更後)

require('../wp-blog-header.php');

パーマリンクをデフォルトから変更している場合は再設定する

「設定」-「パーマリンク設定」

参考にしたもの

WordPress を専用ディレクトリに配置する – WordPress Codex 日本語版

c 2011 KrasavKana