前回、表記スタイル等のチェックをするのに、秀丸マクロの searchdialog ではなく、grep を使うようにしたという話を書きました。
これは、対象となるファイル数が多いときに、1 つずつ秀丸で開いて検索するのが面倒だから、という理由でした。しかし、今度は検索する文字列が多い場合に、いくつも秀丸が開いてしまうという問題にぶつかりました。^^;
前回の例では、1 つのマクロ内に grep 文が 2 つだったのですが、検索するワードが多い場合、grep 文が 20 個、30個となってしまいます。
特に、search では、検索文字列の上限が 4095 文字なのですが、なぜか grep では 249 文字になるようです (search で 4095 文字まで OK だったので、同じ文字列を grep で使ったら、エラーで動かなくなりました)。秀丸マクロの注意書きには、「安全なマクロを作るうえでは、249文字までとしてください。」とあるので、理由は不明ですが、249 文字以下とすべきなのでしょう。
今回マクロ化しようしたのは、外来語のカタカナ表記の正誤表で、それなりの数があります。一度に検索できればよいのですが、検索文字列が 249 文字以下となるようにすると、grep 文を 30 回以上繰り返すことになってしまいました。
もちろん、このリストを全部マクロ化する必要があるのかという疑問はあるかもしれませんが、訳文を入力している最中に、「この単語は一覧表にあったかな?」などとイチイチ気にしていられませんから、やはりマクロにしておいて、最後に一気に検索する方が早いです。
そこで、今度は、
1) ファイル内で指定した語句を検索するマクロを作る
2) 指定したフォルダ内のすべてのファイルに対して、上記のマクロを実行するマクロを作る
という 2 段階の構成を考えました。
2) において、検索文字列にヒットしなかったら、そのファイルを閉じ、ヒットしたら、ファイルを開いたままにする、という構成にしておけば、不要なファイルがいくつも開いたままになるという問題もなくなります。さらに、開いたままのファイルに対して、1) のマクロをもう一度、実行することで、ヒットした語句を再確認することもできます。
具体的には、次のようになりました。
1) ファイル内の検索マクロ
----------------------------------------
$retval = "ok";
$str = "検索語句1|検索語句2|・・・・・";
searchdown $str, nocasesense, regular, hilight, masktag, loop;
if( result == 0 ) {
// message "該当するものがありません";
} else {
$retval = "ng";
question "次に進みますか?";
if( result == no ) {
endmacro $retval;
}
}
$str = "検索語句11|検索語句12|・・・・・";
searchdown $str, nocasesense, regular, hilight, masktag, loop;
(以下、上と同様。必要なだけ繰り返す。最後の if 文だけ下記のようにする)
if( result == 0 ) {
// message "該当するものがありません";
endmacro $retval;
} else {
$retval = "ng";
endmacro $retval;
}
----------------------------------------
※検索語句にヒットしたかどうかを戻り値で返すようにしておきます。
※この場合は、検索語句にヒットしなかったら、"ok" です。
2) 指定したフォルダ内のすべてのファイルに 1) のマクロを実行
----------------------------------------
// フォルダ内の .xml ファイルのリストを作成
grepdialog2 ".", "*.xml", ".", regular, filelist;
if(result<1) endmacro;
// 現在の秀丸のハンドルを保持
#grep = hidemaruhandle(0);
// リストの各項目について実行
gofiletop;
while(lineno < linecount2) {
// リストにあるファイルを開く
tagjump;
#handle = hidemaruhandle(0);
// マクロの実行
execmacro "上記 1) のマクロの名前";
// 戻り値を確認
$ret = getresultex(-1);
// 元の秀丸をアクティブにして、今の秀丸を閉じる
// 必要であれば、今の秀丸も残す
setactivehidemaru #grep;
if( $ret == "ok" ) {
closehidemaru #handle;
}
// Shift キーで途中終了
if(iskeydown(16)) break;
// 次の項目へ
movetolineno 1,lineno+1;
}
----------------------------------------
一回これを作っておけば、別の検索マクロも簡単に作れそうです。
漢字変換しようとしたら、候補リストの中でハイライト(選択項目)がぐるぐる回り続けたりして、「なんだ? 暴走してる?」と思ったら、スペース キーがどこか引っかかっているようで、斜めに押されたままになっていました。

そんなことが何度もあって、そろそろキーボードを交換しないといけないのかなぁと思っていたら、昨日はカーソルが変な動きをして、「今度は何?!」と思ったら、Shift キーが同じように斜めに沈んでました。

相棒にその話をしたら、新しいキーボードがあるというので、今朝ついに交換しました。ワイヤレスでマウスも付いていたので、マウスもついでに交換しました。キーのタッチ感が変わって、ちょっと不思議な感じですが、まぁ、そのうち慣れるでしょう。なんといってもスペース キーを気にしなくていいのが嬉しいです。(っていうか、今までがおかしかったのですが。)
しかし、2 年でキーボードをつぶすとは思いませんでした。
今までも散々 PC は使っていましたが、やっぱりソフトウェア開発で使うのと、翻訳で使うのとではキー入力の回数が違うのでしょうか?! 実感としてはそれほどキー入力が増えたとは思っていないのですが。あぁ、でも、やっぱり漢字変換は多いのかなぁ。
このところずっと仕事で、土日以外勉強する暇がなかったのですが、昨日ぽっかりと空白の時間ができて、この隙に勉強しなくては!と思い立ちました。
技術翻訳の課題返却が最近早いので、2つ並行して進められるかな、と心配していましたが、特許翻訳(日英)の最初の方は、特許翻訳(英日)の復習になりそうです。しばらくは、それほどヘビーではないかもしれません。
その技術翻訳講座の方は、ようやく第13回の課題を提出! 残りあと3回となりました。
しかし、今回の分も含めて残り4回の課題がたとえ100点だったとしても、平均90点にはならないということを確認してしまい、少々めげてます。最終試験で大挽回できたりするのでしょうか。
今夏のK.Odaはアクティブですねぇ。
今年は東北ツアーで終わりかもと思って、ツアーの最後に追加された横浜赤レンガパークの最終公演を見に行ったのですが、なんとこの夏は4つのイベントに出演されるようです!
7/29(日) HIGHER GROUND 2012~FINAL~
(福岡・海の中道海浜公園)
8/11(土) 情熱大陸 SPECIAL LIVE SUMMER TIME BONANZA’12
(東京・夢の島公園陸上競技場)
8/25(土) 音楽と髭達 2012
(新潟・国営越後丘陵公園・野外特設ステージ)
9/15(土) 靫公園MUSIC FESTA FM COCOLO~風のハミング~
(大阪・靱公園センターコート特設会場)
06 | 2025/07 | 08 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 4 | 5 | ||||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
とりあえず、安定して翻訳の仕事を貰えるようになりましたが、まだまだ駆け出しです。胸をはって「翻訳家です」と言えるまで、日夜修行中(?)の身です。
趣味は音楽鑑賞と城めぐり。月平均 1 回以上のライブと登城がエネルギー源です!