オープンスクール2017春

3月4日(土)にサン・フレアアカデミーで開催されるオープンスクールで、「WildLightの翻訳活用術」をお話しします。

サン・フレアアカデミーさんのオープンスクールを担当させていただくのは、今回で3回目です。過去2回はWildLightを軸に、どちらかというと翻訳チェックに重点を置いた話をさせていただいたのですが、今回は、WildLightを純粋にツールとして使用する上でのノウハウをお話しする予定です。

翻訳という仕事は、IT技術の進歩にともなって扱う原稿の形式がいろいろと増え、翻訳者と言えどもそれらの原稿を自分が翻訳しやすい形式に変えたり、翻訳完成物のチェックをしやすい形に変えたりと、ITスキルが要求されるようになりました。WildLightは、私が自分の仕事(翻訳コーディネータ/社内翻訳)を効率化することをひとつの目的として開発してきた経緯があり、翻訳に関わる周辺作業へ利用してきています。

今回のオープンスクールでは、その実例をご紹介する予定です。また、事前アンケートを採り、参加者の皆様が抱える周辺作業の「困ったこと」のうち、WildLightで解決できるものについて、解決策を紹介しようと考えています。

サン・フレアアカデミーオープンスクール2017春

【ワイルドカード】段落番号後のスペース数チェック

【ワイルドカード】段落番号後のスペース数チェック

特許翻訳では段落番号後の扱いも、顧客によってスタイルがいろいろあるようですが、1つの例として、段落番号後に指定された数だけ半角スペースが入っているかをチェックするためのワイルドカードを記述してみます。

例)【指示内容】段落番号後に半角スペースを4つ入れる(英文)

この指示に合わないケースを検出するために、以下のようなワイルドカードを考えてみました。

¥[[0-9]{4}¥][ ]{1,3}[! ]

段落番号[nnnn]に該当する部分が¥[[0-9]{4}¥]です。その後に半角スペースが1〜3つあり([ ]{1,3})、その後に半角スペースでないもの([! ])があると、検索にヒットします。

つまり・・・
 [0123] The ... (スペース1こ)
 [0123]  The ... (スペース2こ)
 [0123]   The ... (スペース3こ)
 という組合せがヒットします。

じゃぁ、スペースが5つ以上あるものは?・・・という疑問が湧きますね。このワイルドカードではスペースが1つ〜3つまでのものしかヒットしません。5つ以上あるものをヒットさせるには、以下のような記述をします。

¥[[0-9]{4}¥][ ]{5,}[! ]

誰か1文で検索する方法をご存じないでしょうか? WildLightであれば、これらの2文を辞書ファイルへ記述しておけば一度に検出可能です。

なお、半角スペースの数がn個あることをチェックしたい場合は、nから1引いた数をm、nに1加えた数をpとして以下の記述にそれぞれ代入してください。

¥[[0-9]{4}¥][ ]{1,m}[! ]
¥[[0-9]{4}¥][ ]{p,}[! ]

強制的に置換してしまう場合

なお、2度も検索掛けるのは大変だから、スペースの数に関係なく一度の置換作業で一律に規定数のスペースを入れてしまえという荒っぽいやり方もできます。上記の例のように段落番号の後に半角スペースを4つ、強制的にいれてしまうワイルドカードは、以下のようになります。

検索する文字列

(¥[[0-9]{4}¥])[ ]@([! ])

置換後の文字列(¥1と¥2の間は半角スペース4つです)

¥1 ¥2

日本語の場合

ちなみに日本語の場合は、以下のようになります。全角スペース4つを例として記述します。
スペースが4つ以外のものを検索するには:

【[0-9]{4}】[ ]{1,3}[! ]
【[0-9]{4}】[ ]{5,}[! ]

強制的に置換してしまうなら:

検索する文字列

(【[0-9]{4}】)[ ]@([! ])

置換後の文字列

¥1    ¥2

【ワードマクロ】ワード文書から個人情報を削除する

小技の森ブログに「Office文書から個人情報を削除する」という記事がアップされました。

企業で仕事をされている方は、特に注意を払う必要がありますが、オフィス文書に記録されている個人情報が、意図せずそのまま外部へ流れてしまうことは、情報セキュリティ上、あまり好ましいものではありません。

私の場合、外部の翻訳者さんへ仕事を依頼する時や、お客様へ翻訳物を納品する前に、必ず、ワード文書から個人情報を削除してから送付しています。

そのために以下のような簡単なワードマクロを使っています。

Sub RemoveDocInfo()
ActiveDocument.RemoveDocumentInformation (wdRDIDocumentProperties)
ActiveDocument.RemoveDocumentInformation (wdRDIRemovePersonalInformation)
End Sub

もちろん、先述のブログ記事に従って手作業で削除しても良いですが、業務効率や品質保証の観点で見た場合、細々した作業もマクロ化しておく方が何かと便利で、私は小さなマクロをたくさん作ってストックしてあります。

そのメリットを私は以下のように考えています。

  1. 1〜2ステップで作業を完結できる。
    メニューを辿って実行できる操作も、数ステップの作業を必要としますが、マクロであれば、1〜2ステップで作業を完結できるというメリットがあります。
  2. 自分の翻訳プロセスに合ったマクロセットを作れる。
    小さなマクロを組み合わせて、翻訳プロセスに沿ったマクロセットを作り、一括処理できる。

「うっかり忘れた」を無くすために、納品前最終チェックで実行するマクロセットに、このマクロを盛り込んでおけば、確実かつ効率的に実施されて便利です。

【ワイルドカード】各文字種の検索方法 (基本)

ワイルドカードを使った検索を行う上で、いろいろな文字種に対応した記述方法を、決まり事として覚えておくと便利です。記述を単語登録して利用するのも1つの手です。

【全角文字】

[ぁ-ゞ] :ひらがな
[ァ-ヾ] :カタカナ
[a-zA-Z] :英文字
[0-9] :数字
[¥!-〜] :全角英数字(記号含む)
[一-鶴] :すべての漢字
[Α-Ωα-ω] :全角ギリシア文字
[、-鶴] :ひらがな/カタカナ/漢字/記号
[ -鶴] :ひらがな/カタカナ/漢字/記号/全角スペース

【半角文字】

[0-9] :数字
[a-zA-Z] :英文字
[ヲ-゚] :カタカナ
[! -~] :半角スペース、英数記号以外
[¥!-~] :半角英数字(記号含)

【その他の特殊文字】

^13 改行 (ハードリターン)
^12 改ページ
^11 ソフトリターン (または、^l:ハットエル)
^9 タブ記号 (または、^t)

ワイルドカードで使用する記号(!, -, (, ), [, ]等)を検索文字として使用したい場合は、その文字の前に ¥ を付与します(これをエスケープ文字と呼びます)。例えば、!を検索文字としたい場合は、 ¥! と記述します。

<b>記述例:</b>

例)全角半角関係なく、数字を検索したい場合

[0-90-9]

例)すべての英字(全角半角すべて)

[a-zA-Za-zA-Z]

例)すべてのカタカナ(全角半角すべて)

[ヲ-゚ァ-ヾ]

【半角文字の範囲指定の考え方】
%e5%8d%8a%e8%a7%92%e6%96%87%e5%ad%97%e3%83%af%e3%82%a4%e3%83%ab%e3%83%88%e3%82%99%e3%82%ab%e3%83%bc%e3%83%88%e3%82%99

半角文字の文字コードは上の図のようになっています。なぜ、数字を検索するワイルドカードが [0-9] なのかは、この文字コードを見ていただくと分かるとおり、数字は0から始まり9で終わるからです(青丸)

例えば、記号も含めてアルファベット文字全部を検索したい場合は、[¥!-~] と記述すれば良いことになります。(ピンク丸)

【ワイルドカード】改行前の余分なスペースを除去する

PDFファイルや他ファイルからコピー&ペーストすると、時々、改行の前に余分なスペースが入り込むことがあります。そういったスペースを削除するには、以下のようなワイルドカードを使用します。

「検索する文字列」には以下の記述をします。
日本語でも英語でも対応できるように、全角スペース、半角スペースを対象として、同時にソフトリターンの前にある余計なスペースも除去するようにしています。

[  ]{1,}([^11^13])

最初の角括弧の中には半角スペース1つと全角スペース1つが入っています。つまり、半角/全角スペースが改行(^13)/ソフトリターン(^11)の前に1つ以上({1,})あると、検索にヒットします。(半角全角の混在でも対応できる)

「置換後の文字列」は以下の通り記述します。(\は半角の円記号です)
改行/ソフトリターンに変更を加えず、そのまま利用するために、このような方法にしています。

\1

もし、ソフトリターンを改行(ハードリターン)に変換しちゃって良いと言うことであれば、以下のような記述になります。

検索する文字列

[  ]{1,}[^11^13]

置換後の文字列

^p

 

【ワイルドカード】強制的に1行間隔にする

【ワイルドカード】余分な改行を削除する」の応用編です。

節の間の改行数に関係なく、一律で1行間隔にします(空白行を1行入れる)。

「検索する文字列」は以下のように記述します。改行が1つ以上連続するものを固まりとして検索します。

^13{1,}

「置換後の文字列」には以下の記述をします。上記でヒットした改行の固まりを改行2つで置換します。

^p^p

これで、すべてが1行間隔に置き換わります。もし、2行間隔にしたい(空白行を2つ差し込む)時は、「置換後の文字列」を ^p^p^p と3つ並べれば良いことになります。

【ワイルドカード】余分な改行を削除する

原稿ファイルの処理において、時々、余分な改行を削除したいことがあります。そんなときは以下のワイルドカードを使用します。

まず、「検索する文字列」に以下の文字列を入れます。
改行(^13)が2つ以上連続({2,})するものを検索します。

^13{2,}

そして、「置換後の文字列」に以下の文字列を入れます。
上記でヒットした改行(の固まり)を、1つの改行(^p)へ置き換えてやります。

^p

もし、ソフトリターン(^11)も同時に削除対象にしたい場合は、「検索する文字列」を以下のように記述するといいです。

[^11^13]{2,}

ちなみに、PDFファイルからコピペしたり変換した場合、ソフトリターンや改行、時に半角スペースや全角スペースが混在していることがあります。その場合は、「【ワイルドカード】改行前の余分なスペースを除去する」を事前に実行してから、上記のワイルドカードを実行すれば良いです。

また、この記述方法を変化させれば、例えば、1行間隔に空白1行を差し込むと言うこともできます。
その方法は、「【ワイルドカード】強制的に1行間隔にする」に書いてありますので、参考にしてください。

【ワイルドカード】特定の見出し行の前に空白行が入っているかをチェックする

前回の「【ワイルドカード】特定の見出し行の後に空白行が入っているかをチェックする」の応用編です。今度は、見出し行の前に空白行が入っているかどうかをチェックします。このケースを検索するワイルドカードの記述例を以下に示します。

前回同様、英文で「TITLE OF THE INVENTION」の前に空白行が入っていないものを検索するには、「検索する文字列」で以下のように記述します。

[!^13]^13TITLE OF THE INVENTION

解説)
改行を検索する際は ^13 を使いますので、ここでは分かり易くするために、改行を ^13 で表します。

(正)
A quick brown fox jumps over the lazy dog.^13
^13
TITLE OF THE INVENTION

(誤)
A quick brown fox jumps over the lazy dog.^13
TITLE OF THE INVENTION

見出し行の前に改行(^13)が2つ連続しているのが正しいので、改行が1つしかないものを検索すれば良いことになります。

ここでは角括弧[ ]は必須です。^13!^13 では正しく検索されません。

言語が変わっても以下のように記述すれば検索できます。

[!^13]^13見出し

何かの文字列の前に空白行があることを確認したいときは、この記述を覚えておくと便利です。

【ワードマクロ】カーソルのある段落に蛍光ペンを付ける

私が仕事で使っているワードマクロをご紹介。
「マクロの記録」を使って作ったお行儀のよくないスクリプトですのでご容赦を。

このマクロは、カーソルのある段落を自動で範囲指定して蛍光ペンをつけるだけのマクロです。また、実行するたびに色が変わり、10色変化します。11回目に蛍光ペンなしに戻ります。(蛍光ペン色で字が潰れるのが嫌なので、10色に限定するようなことをやっています(笑))

Sub HighLight2Paragraph()
Dim ColorLoop As Integer
On Error Resume Next
Selection.MoveUp unit:=wdParagraph, Count:=1
Selection.MoveDown unit:=wdParagraph, Count:=1, Extend:=wdExtend
Selection.MoveLeft unit:=wdCharacter, Count:=1, Extend:=wdExtend

ColorLoop = Selection.Range.HighlightColorIndex - 1
If ColorLoop < 0 Then ColorLoop = 7
If ColorLoop = 2 Then ColorLoop = 14
If ColorLoop = 9 Then ColorLoop = 0
Selection.Range.HighlightColorIndex = ColorLoop
End Sub

私はショートカットキーへ登録して、翻訳チェックをしている時に目印付けの代わりに使っています。

嫌だ、行単位にしてくれ!という方は、以下のスクリプトを使ってくださいませ。

Sub HighLight2Line()
Dim ColorLoop As Integer
On Error Resume Next
Selection.HomeKey unit:=wdLine
Selection.EndKey unit:=wdLine, Extend:=wdExtend

ColorLoop = Selection.Range.HighlightColorIndex - 1
If ColorLoop < 0 Then ColorLoop = 7
If ColorLoop = 2 Then ColorLoop = 14
If ColorLoop = 9 Then ColorLoop = 0
Selection.Range.HighlightColorIndex = ColorLoop
End Sub

【ワイルドカード】特定の見出し行の後に空白行が入っているかをチェックする

スタイルガイドに「特定の見出し行の後に、必ず空白行を入れること」となっているとします。このルールが守られていないケースを検索するワイルドカードの記述例を以下に示します。

例えば、英文で「TITLE OF THE INVENTION」の後に空白行が入っていないものを検索するには、「検索する文字列」で以下のように記述します。

TITLE OF THE INVENTION^13[!^13]

解説)
見出し行の後に空白行がある状態とは、見出し文字列の後ろに改行が2つ連続していることになります。つまり、2つ目が改行でないものを検索すれば良いことになります。

改行を検索する際は ^13 を使いますので、ここでは分かり易くするために、改行を ^13 で表します。

(正)
TITLE OF THE INVENTION^13
^13
A quick brown fox jumps over the lazy dog. The fox has wings …

(誤)
TITLE OF THE INVENTION^13
A quick brown fox jumps over the lazy dog. The fox has wings…

2つ目が改行ではない、即ち2つ目に ^13 がないものを検索すれば良いことになります。「改行でない」は「^13ではない」と記述すること(^13を否定してやること)で表すことができますので、否定の際に使用する「!」を先頭に入れて、 [!^13] とすればよいわけです。

ここでは角括弧[ ]は必須です。^13!^13 では正しく検索されません。

言語が変わっても以下のように記述すれば検索できます。

見出し^13[!^13]

何かの文字列の後に空白行があることを確認したいときは、この記述を覚えておくと便利です。