Macintoshには「抜き出し一発」という傑作webユーティリティがありました。作者の高橋 健さんに問い合わせたところ、残念なことにOS
X版を作る予定はないとのこと(「抜き出し一発」の紹介はこちら)。
僕は今のところ、classic環境で「抜き出し一発」を使っていますが、Intel Macはclassic環境をサポートしません。いずれはOS Xで動く同様のツールが必要になるなと。で、作ってみました。
名前の「pullout_two」は、もちろん「抜き出し一発」からいただいたものです(^^;
●概要
「抜き出し一発」同様、任意のフォルダの中から変更のあったファイルを抜き出して、デスクトップに「元フォルダ名+日時」フォルダを作り、その中にコピーします。後はこのフォルダの中身をFTPでアップロードすれば、差分アップ完了となるわけです。
本家「抜き出し一発」にあるログ出力機能はありません。
●基本的な使い方
使い方は簡単で、HTMLファイルの入ったフォルダを「pullout_two」にドラッグ・アンド・ドロップするだけ。ダブルクリックしても何も起こりません。
一度にドロップできるのは、フォルダが一つだけです。二つ以上のフォルダを一度にドロップしたり、ドロップされたものがファイルだった場合はエラーがでて動作しません。
前回の処理時間と、ファイル構成を覚えておくために、ドロップされたフォルダの中に「_lasttime.dat」というデータファイルを自動的に作ります。「_lasttime.dat」がないと初回と判断して、「_lasttime.dat」ファイルを生成するだけで処理を終了します。
もし、フォルダの中に「_lasttime.dat」という名前のファイルがあると、そのファイルを上書きしてしまいますのでご注意ください。
2回目以降は、「_lasttime.dat」を元に、前回処理をした時間以後に変更のあったファイル/前回存在しなかったファイルだけを抜き出します。抜き出したファイルは、デスクトップに「元のフォルダ名-月_日-時_分」というフォルダの中にコピーされます。
●年月日時分秒の指定
時刻を指定したい場合は、一度フォルダをドロップして「_lasttime.dat」を作り、テキストエディタ(miやJeditなど文字コード/改行コードがコントロールできるもの)で開いて、最初の1行目を書き換えてください。このファイルはUTF-8/LFで生成されます。最初の1行目が年月日で、それ以後の行はファイルデータなのでいじらないでください。年月日の書き方には注意が必要です。
○よい例 2006/08/06 07:05:08
×悪い例1 2006/08/06 07:05:08 数字、区切り記号(/と:)はすべて半角にします。
×悪い例2 06/8/6 7:5:8 年は4桁、月日と時分秒は必ず2桁にします。
×悪い例3 2006/08/06 07:05:08 年月日と時分秒の間は、全角スペースではなく、半角スペースにします。
●リソース付きのファイルもコピーできます。
●ファイル名が「.」で始まるファイルは無視します。
●Classic OSのFinderでカスタムアイコンを貼付けると、「Icon(改行)」という見えないファイルが作られます。ファイル名に入っている改行コードが問題で、誤動作の原因になるため、このファイルも無視します。webには関係のないファイルですし。
●ファイル名/フォルダ名が「_」で始まっていると、そのファイル/フォルダはスキップします。次項「問題点」を参照して下さい。
●エイリアスを判定できない
どのファイルをコピーするか判定する部分はPerlで行っているため、Macのエイリアスの判定ができません。よって、ドロップしたフォルダの中にエイリアスがあると、無限ループに陥る可能性があります。ご注意ください。
Terminal等で作成したハードリンクやシンボリックリンクも同様です。ほんとはシンボリックリンクはPerlで検出できるのでストップかけられるんですけど、手抜きです(^_^;
さて、エイリアス対策として、名前が「_」で始まっていると無視するようになっています。エイリアスフォルダには「_」で始まる名前をつけておくと、そのフォルダを無視しますので安全に処理できます。
「エイリアスやコピーしたくないファイルには、頭に『_』をつけておく」と覚えておいて下さい。
「pullout_two」のパッケージを開いていき(コントロール+クリックで「パッケージを開く」)、「Contents/Resources/」にある「pullout_two.pl」が本体です。perlで書かれています。これをテキストエディタで開いて設定を変更することができます。Perlスクリプトに慣れた人だけ行って下さい。Perlスクリプトの基礎知識については「CGI設置入門」をご参照ください。
●「_」で始まるファイル/フォルダをスキップしないようにする
エイリアス対策として、名前が「_」で始まるファイル/フォルダはスキップするようになっています(「問題点」参照)。他の開始文字列に変更するには、「$disregards = '_' ; 」を変更します。空にするとスキップしなくなります(「.」で始まるファイルと、「_lasttime.dat」はスキップします)。
●処理時間を表示させる
「$processtime = '0'; # 処理時間を表示するなら1、しないなら0」部分を「$processtime = '1';」にすると、処理時間(perlに処理がわたった後の処理時間)を表示するようになります。
が、チェックするファイル数が少ないと、処理速度が速すぎて「0.000秒」という表示になります。高精度計測モジュールを使えば表示できますが、ま、あんまり意味ないなと。
OS X 10.3以上で動作します。classic MACでは動作しません。OS X 10.3.xで動作確認しています。
「pullout_two」はドロップレット部分をAppleScriptで、判定部分をperlで、コピー部分をシェルコマンド(ditto)で行っています。
OS Xは、10.2まではperl 5.6、10.3以降はperl 5.8を搭載しています。Perl 5.8用に書かれていますので、OS X 10.2までは動作しません。10.2までで動作させることもできます。次項「改造」を参照して下さい。
10.2以前のOS Xで動作させるためには、中核となるperlスクリプトを改造する必要があります。ただし、開発はOS X10.3で行っていますので、この改造を施しても10.2以前で動作するか検証していません。動かなかったらごめん。
また、この改造は、CGIに慣れた人だけ行って下さい。CGIの基礎知識については「CGI設置入門」をご参照ください。
「オプション」で説明した「pullout_two.pl」をテキストエディタで開き、次の2箇所を書き換えます。できるだけ簡単に変更できるようになっています。
●改造1:オリジナル 459行目 =======================================
# Jcode::convert(\$str, 'jis') ; # OS X 10.2以前
from_to($str, 'euc-jp', '7bit-jis'); # jisに変換/10.3以後
●改造後
Jcode::convert(\$str, 'jis') ; # OS X 10.2以前 ←行頭の「#」を削除
# from_to($str, 'euc-jp',
'7bit-jis'); # jisに変換/10.3以後 ←行頭に「#」を追加
●改造2:オリジナル 468行目 =======================================
# Jcode::convert(\$str, 'sjis') ; # OS X 10.2以前
from_to($str, 'euc-jp', 'shiftjis'); # shiftjisに変換/10.3以後
●改造後
Jcode::convert(\$str, 'sjis') ; # OS X 10.2以前 ←行頭の「#」を削除
# from_to($str, 'euc-jp', 'shiftjis'); # shiftjisに変換/10.3以後 ←行頭に「#」を追加
このソフトのアイディアは、本家「抜き出し一発」を開発された高橋 健さんのものです。高橋さんに感謝いたします。が、「pullout_two」の著作権は水沢・penguin-19・和彦にあります。何かバグがあったら、それは僕の責任、ということです。高橋さんとは関係ありません。
フリーウェアです。私用・商用を問わず、ご自由に使用できます。ただし、「pullout_two」を使って何らかの不利益を被ったとしても、いっさいの補償はありません。オウンリスクでお使いください。
再配布をしなければ、スクリプトを改造してお使いいただいて構いません。再配布の場合は、ダウンロードしたものをそのまま配布してください。特に作者に許可はいりません。
●ダウンロードは「DATA/pullout_two」ページからお願いします。
ver 0.42 2011/7/22 ぎゃあ!このアプリケーション、PowerPC用だということが発覚。さっそくOS10.7(LION)でも動くようにユニバーサル化しようとしたら、Xcodeの開発ファイルが見当たらない!ぐげぇ!
しかたなく完成品から部品を抜き出し、AppleScriptエディタで再作製したバージョン。アプリケーションバンドルで保存したので、ユニバーサルになっている。これでロゼッタ環境のないLionでも動作するはず。
かわりに、ヘルプファイルの表示機能がなくなった。
ver 0.41 2006/9/24 二つ以上のフォルダをドロップした場合にでる警告表示がおかしいバグを修正。
ver 0.4 2006/9/21 最初の公開バージョン。最後だといいな。(2006/9/24追記:このバージョンには早速バグが見つかりました(^_^; 一度にドロップできるのは、フォルダを一つだけに制限しているんですけど、その警告が正常に表示されない、というバグです。致命的なバグじゃないんで、このバージョンを使いたい人は使ってもいいですけど、できるだけ早いうちにバグ取り版を出します。それまでお待ちいただく方が無難かも。)
ver 0.4a 2006/9/15 未公開。0.3aのOS X移植版。「Icon(改行)」ファイルは無視するように変更。
ver 0.3a 2006/9/12 未公開。MacPerl版。デュプリケートファイル/コピーファイルは更新日時がオリジナルと同じため、新たに追加しても新しいファイルとして認識されない、という問題があった。この対策のため、前回のファイルデータを保存し、それと照合しながらコピーするように変更された。
ver 0.21b 2006/9/6 未公開。結果報告を変更。スキップする開始文字列「_」が変更可能になった。ヘルプファイルがついた。
ver 0.2a 2006/8/31 未公開。Xcodeビルド版。アイコンがついたぞ(^_^) 最低限の機能は完成。
ver 0.1a 2006/8/30 未公開。最初のバージョン。開発はMacPerl。骨格はできた。