S-JIS[2008-06-01/2008-06-21]

テキスト変換ツール

複数のファイル内の文字列を別の文字列にまとめて置換したいことがあり、その為のツールがいくつも出回っています。
どれが便利なのか、ちょっとだけ試してみました。(WindowsXP SP2)


簡易比較

ツール名 作成日(バージョン) 作者 形式 感想概要 利点 欠点
Speeeeed Speeeeed.exe 2008(ver1.58) 秋田 稔 ウィンドウアプリ VC++6.0 ★★★ 非常にシンプル。 作りがシンプルで、操作方法が直感的。
置換文字列を外部エディターから簡単に書き換えられる。
置換結果が加工しやすい。
複数の置換対象を指定できる「リスト編集」の使い方が分かりにくい。
TExchange TExchange.exe 2008(ver.2.1.0) AOK SOFT ウィンドウアプリ .NET2.0 ★★★ 色々な機能が分かり易くまとまっている。
設定
多機能だが、画面からの登録方法や結果表示が分かり易い。 起動が遅い。
ファイル一覧の作成が遅い。
(置換処理自体は早い)
ファイルの検索・一括置換 Grep and Replace GrepRplc.exe 2002(Release 6) Oceansoft ウィンドウアプリ delphi ★★★ 見た目はシンプルで良いのだが、細かい操作性がちょっと不満。 置換前に一度検索を行うので、確認するには便利。 置換だけしたくても一度検索しなければならない。
ファイルやディレクトリーのドロップをサポートしていない。
レジストリーを使用している。
AOK CRLF Converter asu2d2.exe 2004(ver1.0.1.6) AOK ウィンドウアプリ   ★★★ pngファイル等が壊れる点を除けば完璧なのだが…。 変換対象文字列をテキストファイルに書いておいて、それを選択できる。 除外したい拡張子が指定できないので自分で制御するしかない。
「無変換のファイルを出力しない」にチェックを入れていても、たまに書き換わるファイルがある。また、変換対象外のpng・zip・jarファイル等が壊れる(6バイトになる)。
TextSS (インストーラーによってインストール) 2003 Yamashita-Y ウィンドウアプリ VB6 機能は豊富そうなのだが、使い方が全く分からない。   ボタンを押したらどうなるのか、置換するにはどの操作をすればいいのか、“直感的に分かる”ようになっていない。
[2008-06-21]
replaceタスク
ant 1.6.1   コマンド Java ★★★ antを知っている人にとっては簡単。   antを知らない人には使えない。

使いたいシーン

自分が一番使いたいのは、HTMLファイル内のリンク先の変更。
一箇所のnameを変えただけなら一文字列だけ指定して変換できればいいが、複数のnameを変えた場合など、複数同時に変換したい時が多い。
したがって複数の変換パターンを登録できるのが理想。

パターンの登録方法も、ウィンドウアプリであれば画面からの登録も欲しいが、外部のエディターでメモしておいたもの(テキストファイルとか)を簡単に読み込む仕組みがあると便利。

ついでに言うと、一部のディレクトリーは自動生成だったりするので、除外できるディレクトリーを指定できると嬉しい。(大抵は実際の変換対象ではないので、含まれていても時間がかかるだけで害は無いけど)

また、それ以外の使い方をすることがあるかもしれないので、検索箇所の指定方法も重要。履歴で保持するのならば、(直前の状態だけでなく)複数個所保持できるのがいい。

以下、WindowsXP SP2で実験。

  2008-06-01 2008-06-01/2008-06-15 2008-06-01 2008-06-01 2008-06-21
Speeeeed TExchange Grep and Replace AOK CRLF Converter replaceタスク
メニュー × なし メニューの配置が標準のWindowsアプリとは異なるけど。 × なし メニューはあるが、ボタンの代替にはならない。 - -
タブキーによるフォーカス移動         - -
置換文字列(単独)指定方法 コンボボックスで過去の候補を選択可。 「文字列置換」を選択して入力。(デフォルト)
コンボボックスで過去の候補を選択可。
コンボボックスで過去の候補を選択可。
置換元と置換先のエリアが離れている。
変換文字列を書いたテキストファイルを別途用意。 直接書くこともテキストファイルを用意することも可。
置換文字列(複数)指定方法 「リスト編集(H)」ボタンで複数登録して保存し、
「設定(O)」ボタンで「置換えリスト」にそのファイルを指定。
そして「置換えリストの全自動置換(J)」をチェック。
「パターン置換」を選択して入力。
現在入力できるエリアがちょっと分かりづらい。また、コピー&ペーストがすぐには効かない。
タブ移動もF2による入力も普通のWindowsアプリと同じなんだけど…。
× なし 変換文字列を書いたテキストファイルを別途用意。
「変換テーブル選択」ボタンでそのファイルを選ぶ。
改行入りの置換 「\n」が改行を表す。「\\」で「\」そのもの。 普通にEnterキーを押せば改行が入れられる。
エリアが大きいので改行が入れられる事がすぐ分かる。
× なし × なし 置換が1つなら普通に改行すればよい。
または
で改行コードを指定。
タブ文字の置換 「\t」がタブ文字を表す。 普通にタブを使えばよい。
「文字列置換」ではタブ文字の入力方法(Ctrl+T)が表示されていて親切。
「パターン置換」の場合はタブが消えて見えるが、大丈夫。
× なし × なし 普通にタブを使えばよい。
または	でタブコードを指定。
外部ファイルによる置換文字列編集 タブ区切りテキストファイル。
「リスト編集(H)」ボタンで保存したファイルそのもの。
TExchange_PT.xmlというファイル。
ただしUTF-8のXMLファイルなので、それなりのエディターが必要。
× なし
(リポジトリー使用)
タブ区切りテキストファイル。
「変換テーブル選択」ボタンでそのファイルを選ぶ。
プロパティーファイル
置換ディレクトリー指定方法 「追加(T)」ボタンでファイル選択ダイアログが開く。
選択したファイルが置換対象一覧に追加される。
メニューバーの「ファイル追加(F)」「フォルダ追加(D)」によってファイル選択ダイアログが開く。
選択したファイルが置換対象一覧に追加される。
「探す場所(L)」でファイル選択ダイアログが開く。
ディレクトリーのみ指定可。
「ファイル選択」ボタンでファイル選択ダイアログが開く。
選択したファイルが置換対象一覧に追加される。
dir属性とinclude要素によって指定。
置換ディレクトリーのドロップ ファイルやディレクトリーをドロップすれば置換対象一覧に追加される。 ファイルやディレクトリーをドロップすれば置換対象一覧に追加される。 × なし ファイルやディレクトリーをドロップすれば置換対象一覧に追加される。 × -
置換対象の拡張子の指定 「設定(O)」ボタン⇒「リスト登録可能拡張子。(L)」より登録可。 メニューバーの「設定(W)」⇒「プレビュー」より登録可。 「ファイルの名前(N)」で指定。 × なし nclude要素によって指定。
置換対象外ディレクトリーの指定 × なし × なし × なし × なし exclude要素によって指定。
置換対象ファイルの確認 置換対象ファイル一覧が表示される。 置換対象ファイル一覧が表示される。 検索することで、対象ファイル一覧が表示される。 置換対象ファイル一覧が表示される。 × なし
置換内容の確認 × なし 置換対象一覧のファイルをクリックすることにより、
プレビューエリアに置換内容が色付きで表示される。
検索した結果一覧のファイルをクリックすることにより、
置換対象箇所が下線つきで表示される。
× なし × なし
バックアップ 拡張子bakのファイルを作るかどうかの指定のみ。 メニューバーの「設定(W)」⇒「バックアップ」より指定可。 拡張子bakのファイルを作るかどうかの指定のみ。 なし
(変換の出力先ディレクトリーは指定可能)
× なし
copyタスクで自分でバックアップしておくかな)
置換試行(検索) × なし 「検索」ボタンで試行。
結果が一覧で表示され、それをクリックすることでプレビューエリアに検索結果が表示される。
ファイルの横に置換対象の件数が表示されるが、その件数でソートできると便利なのだが…。[2008-06-15]
また、1ファイル内に複数の置換対象があった場合に、次の置換位置へ飛べないのが不便。
「検索(S)」ボタンで検索。(置換前に必須)
結果が一覧で表示され、それをクリックすることで検索エリアに検索結果が表示される。
× なし × なし
置換実行 「置換開始(G)」ボタンで置換。 「置換」ボタンで置換。
1ファイルずつ確認しながら置換することも可。
検索後、「置換(R)」ボタンで置換。
選択した1ファイルだけ置換することも可。
「変換実行」ボタンで置換。 antを実行
置換進行中(プログレス) 総ファイル数と現在のファイル数が表示される。 ステータスバーに現在処理中のファイル名とプログレスバーが表示される。 ステータスバーに現在処理中のファイル名が表示される。 現在のファイル名とプログレスバーが表示される。 なし
-verboseを指定すると実行時に ファイル名が表示される。
中断 「中止」ボタンで中断可能。
どこまで置換したかの結果も表示される。
ただしその後固まる。
「キャンセル」ボタンで中断可能。 「中断」ボタンで中断可能。 × 中断不可。 antを強制終了させる。
置換結果の確認 ファイル毎に置換した個数がダイアログで表示される。
コピー可能なのでテキストファイルに結果を貼り付けられる。
置換したファイル数がダイアログで表示されるのみ。 - 特になし(事前に検索するから) × なし(「変換完了!」のメッセージのみ) summary属性をonにしていれば
置換した単語数とファイル数が表示される。
置換ディレクトリーの履歴保持 - なし (デフォルトで)前回のファイルが一覧に残る。 指定したディレクトリーが残る(コンボボックスで選択)。 - なし - なし
その他機能 ヘルプが用意されているけれども、アプリから直接呼び出せない。 × 起動がやけに遅い。.NETのせい? 置換対象ファイルのタイムスタンプの期間を指定できる。        
大文字小文字変換とか全角半角変換も「一括置換」として用意されている。
ファイル一覧作成速度   約 5秒   約 16秒(検索も実行しているのかも?)   0秒(1ディレクトリーを指定するだけなので)   約 6秒   -verboseを指定すると 置換実行時に一覧が出る。
その場合は2〜3秒余計にかかる。
置換速度   約 66秒   約 22秒   事前準備(検索):約 32秒
後は実際の置換ファイル数次第
  約 33秒   約 7秒
約50秒
何度も実行するとキャッシュされるせいか速い模様

速度については、WindowsXPマシンで測定。約1270個のhtmlファイル(そのうち実際の変換が行われるのは1ファイル)で実験。

結論

置換文字列をテキストファイルでガシガシ書きたかったり 変換結果をテキストファイルで保存したかったりするならSpeeeeedが良さそう。
それ以外ならTExchangeが良さそう。
antが使える人なら、replaceタスクが一番良さそう(爆) [2008-06-21]


TExchangeの設定

今のところ一番良さそうなTExchangeだが、デフォルト状態は(ひしだまにとって)微妙に使いづらい。
以下のような設定をしておくのが良さげ。


ツールのページへ行く / トップページへ行く
メールの送信先:ひしだま