表記ゆれを100%検索できるチェックツールを作ってみた[wordのマクロ・条件あり]

表記ゆれを100%検索できるチェックツールを作ってみた[wordのマクロ・条件あり]

1:表記ゆれとは?

表記ゆれとは、一つの意味を成す語の表記が揺れている(バラついている)ことを言います。
具体的には次のようなものです。

----------------------------
 子ども  ⇔  子供
 出来る  ⇔  できる
 データ  ⇔  データー
 サーバ  ⇔  サーバー 
----------------------------

意味は全く同じでも、漢字やひらがな・音引きの有り無しなどで表記が違ってくるものです。

どっちが正しくてどっちが間違いというわけではありません。表記をどれに統一するかは、企業や媒体ごとで作成する独自のガイドライン(表記統一ルール)が基準になります。

企業Aでは「子供」を使用し、
企業Bでは「子ども」を使用することがあります。
また、企業Cの媒体αでは「子供」、媒体βでは「子ども」を使用することがあります。

ガイドラインに従って、誌面内の表記ゆれをなくすことにより、文章全体に統一感が生まれ、読者にとって読みやすいものになります。

2:表記ゆれの検索方法

表記ゆれは、昔は一から校正者の目で探していましたが、今では大半が何らかの校正ツールで検索しています。ただ、校正ツールを使ったからといって100%表記ゆれを見つけられるものでもありません。


校正ツールの検出率は、文章の構造に依存してくるため、表記ゆれの検出精度にもムラが出てきます。

例えば、文章によって、
表記ゆれを90%以上の精度で見つけるときもあれば、
30%ほどしか見つけられないときがあります。

品質にムラがあると、結果的に見直すことになります。ツールで探して、さらに人の目で探すといったことになれば、作業にダブリが生まれ余計な手間が掛かります。

3:できること・できないこと

品質のムラをなくし作業のダブリを防ぐためには、表記ゆれの検索方法を少し見直す必要が出てきます。

文章の表記ゆれに対して、漠然とチェックツールを使用するのではなく、
「見つけることができる表記ゆれ」と「見つけることが難しい表記ゆれ」を明確にして、チェックツールを使うことです。

見つけることができる表記ゆれに特化して、それらを確実に潰していきます。


仮に、見つけることができるものが表記ゆれの内の1割や2割であっても、確実にその部分を潰せるのであれば、その分だけ作業が圧縮できます。確実に潰すので、品質にムラがなく見直す手間もありません。安心して他の作業に専念できます。

表記ゆれチェックツールの作成

1:表記ゆれチェックツール作成の前提

チェックツール作成の前提

■ 表記統一ルールがあるもの
⇒ 表記ゆれがあった場合に、どれに揃えるかを示すガイドラインがあるもの

■ 確実に見つけられるものに絞る
⇒ 文章によって、検索できる検索できないという品質のムラを排除したもの

■ 検索と修正が行える
⇒ 見つけるだけなら他のツールでも可能なので、修正も同時にできるもの

表記ゆれの検索&修正の手順

基本的には市販の校正ツールの手順に倣います。

.表記ゆれを機械的に見つける
.見つけた表記ゆれを人が目視で確認できるようにする
.修正作業には、人の手を加えないようにする
.表記を統一する用語の追加や修正、削除を簡単にできるようにする

※3についてはワードでは難しいので、なるべく人の手を介さない修正方法を選択

2:見つけることができる表記ゆれ

[1]漢字とひらがなの表記ゆれを、ひらがなに正す


◎ 
漢字 ・ ひらがな → ひらがな

(例)出来る ・ できる → できる


● 
検索&修正例1

表記ゆれ統一する語
初め(て) ・ はじめ(て)はじめ(て)
始め(て) ・ はじめ(て)はじめ(て)

● 検索&修正例2

表記ゆれ統一する語
既に ・ すでにすでに
例え ・ たとえたとえ
最も ・ もっとももっとも
予め ・ あらかじめあらかじめ
全て ・ すべてすべて

[2]カタカナ同士の表記ゆれを、どれかに正す

  (例)コンピューター ・ コンピュータ
     マネジメント  ・ マネージメント

[3]漢字を含んだ複数の表記ゆれを、どれかに正す

  (例)組立 ・ 組立て ・ 組み立て →  組み立て


● 
検索&修正例

表記ゆれ統一する語
お客さま ・ お客さん ・ お客様お客様
皆さま ・ 皆さん ・ 皆様皆様
取組 ・ 取組み ・ 取り組み取り組み
見積 ・ 見積り ・ 見積もり見積もり
お問合せ ・ お問い合せ ・ お問い合わせお問い合わせ

3:見つけることができない表記ゆれ

「できない」というより、過剰指摘になる恐れがあるため「できない」としています。過剰指摘は、かえって作業効率が悪くなるからです。


[1]
漢字とひらがなの表記ゆれを、漢字に正す


   ✕
 漢字 ・ ひらがな → 漢字

  (例)出来る ・ できる → 出来る

ただし、例外もあります。(理由は【4】参照)

表記ゆれ統一する語
我々・ われわれ我々
一人ひとり ・ ひとりひとり一人ひとり
様々 ・ さまざま様々
色々 ・ いろいろ色々
常に ・ つねに常に

[2]ひらがな同士の表記ゆれを、ひらがなや漢字に正す


   ✕
 ひらがな ・ ひらがな → ひらがな or 漢字

  (例)づつ ・ ずつ → ずつ 
     ゆう ・ いう → いう
     ゆう ・ いう → 言う

[3]文章の内容から判断して使い分けが必要なもの

 
  (例)
とき ・ 時

場合を示すものは「ひらがな」、時間や時刻を示すものは「漢字」にするといったものです。
この手の使い分けの検索は、市販の校正ツールでも難しいところです。

[4]ひらがなの表記ゆれを検索するのが難しい理由


ひらがなを部分的に切り取ると意味を成す語になってしまうため、検索するのが難しくなってきます。
例えば、次のような場合です。

1.「はじめ」と「初め」のゆれを、「初め」に統一したい場合

 日本の夏はじめじめしている

 ⇒ 日本の夏初めじめしている


2.
「ことば」と「言葉」のゆれを、「言葉」に統一したい場合

 仕事のことばかり考えている

 ⇒ 仕事の言葉かり考えている


今回作成したチェックツールは、ワードの検索・置換を利用しているためにこのようになってしまいます。文章内にどれだけこういう語があるのかわからないので、曖昧な部分は除外しています。

前述した例外は、上の例のような置き換えの心配がないものです。

4:できること・できないことのまとめ

表記ゆれのチェックツールで「できること/できないこと」をまとめると次のようになります。

できること

.「漢字」と「ひらがな」の表記ゆれを、「ひらがな」に正す
.「カタカナ同士の表記ゆれ」を、どれかに正す
.「漢字を含んだ複数の表記ゆれ」を、どれかに正す


 できないこと

.「漢字」と「ひらがな」の表記ゆれを、「漢字」に正す(例外有り)
.「ひらがな同士の表記ゆれ」を、「ひらがな」や「漢字」に正す
.「文章の内容から判断」して使い分けが必要なもの

5:実際に運用する場合

目視で確認できるようにしておく

表記のゆれている語を単純に修正するだけでなく、修正した箇所を人の目で確認できるようにしておく必要があります。これは、予期せぬ修正に備えての対処です。

” 「組立マニュアル」を見て部品の組立てを行った。 ”

という文に対して、
「組立・組立て・組み立て」 → 「組み立て」
の表記ルールを適用した場合。


組立マニュアル」を見て部品の組立てを行った。

           ↓

組み立てマニュアル」を見て部品の組み立てを行った。

 
前半の「組立マニュアル」の「組立」は固有の名称なので、そのままにしたいという場合でも置き換わってしまいます。

そのため、実際に運用するときは、文字を修正する際に「■■」をつけて、どこを置き換えたかわかるようにします。※目立つもので、文中に出てこないものなら「■■」でなくてもいいです。

文中に「■■」が入ってしまいますが、確認後は「検索&置換」で一括削除できます。


ただ、意図せず修正されてしまったものに対しては、その部分だけを直すことができないのでコピペして修正し直すなどの対処が必要です。(※ワードではこれが限界です)

6:漢字の使い分け

漢字の使い分け

表記ゆれではないですが、漢字と漢字の使い分けの指摘も可能です。

--------------------
 制作 ・ 製作
 改訂 ・ 改定
 指示 ・ 支持
--------------------

あくまで指摘だけですが。

「■■」の代わりに、「■?■」を使って、使い分けが不確かなものに対してアラートを出します。「■?■」も確認後は「検索&置換」で一括削除できます。

7:チェックツールのコード

使用したコード

Sub hyoki()
'
' hyoki Macro
'
'
    With Selection.Find
        .Text = "始め"
.Replacement.Text = "■■はじめ"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "初め"
.Replacement.Text = "■■はじめ"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "お客さま"
.Replacement.Text = "■■お客様"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "お客さん"
.Replacement.Text = "■■お客様"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "皆さま"
.Replacement.Text = "■■皆様"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "皆さん"
.Replacement.Text = "■■皆様"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "組立て"
.Replacement.Text = "■■組み立て"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "組立"
.Replacement.Text = "■■組み立て"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "取組み"
.Replacement.Text = "■■取り組み"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "取組"
.Replacement.Text = "■■取り組み"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "見積"
.Replacement.Text = "■■見積もり"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "見積もりり"
.Replacement.Text = "見積もり"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "お問合せ"
.Replacement.Text = "■■お問い合わせ"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "お問い合せ"
.Replacement.Text = "■■お問い合わせ"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "われわれ"
.Replacement.Text = "■■我々"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "ひとりひとり"
.Replacement.Text = "■■一人ひとり"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "さまざま"
.Replacement.Text = "■■様々"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "いろいろ"
.Replacement.Text = "■■色々"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "既に"
.Replacement.Text = "■■すでに"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "例え"
.Replacement.Text = "■■たとえ"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "全て"
.Replacement.Text = "■■すべて"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "つねに"
.Replacement.Text = "■■常に"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "最も"
.Replacement.Text = "■■もっとも"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
    With Selection.Find
        .Text = "予め"
.Replacement.Text = "■■あらかじめ"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    
        With Selection.Find
            .Text = "制作"
.Replacement.Text = "■?■制作"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
            .Text = "製作"
.Replacement.Text = "■?■製作"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchCase = True
        .MatchByte = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

コードを見て面倒だなと思うかもしれませんが、基本は同じコードの繰り返しになります。赤線部分が違うだけです。シンプルなので追加や削除も簡単にできます。

表記ゆれチェックツール


ワードで使用する場合

ワードの【表示】タブ ⇒【マクロ】⇒【マクロの表示】⇒【作成】⇒「マクロ名」を適当に入力 ⇒ コード編集画面に、上記のコードを丸々コピペするだけです。1分もかかりません。

表記ゆれチェックツール

※詳細な使用方法は、デジタル校正入門:文章の表記や体裁を自動で変更する[ワード編]を参考にしてください。

上の例で使用した文

初めての一人暮らし。
一人暮らしを始めて、二年が経った。

お客さまがいらっしゃった。
お客さんがいらっしゃった。

皆さまのおかげで昨年も良い年を迎えることができました。
皆さんのおかげで昨年も良い年を迎えることができました。

部署内でqcサークルの取組をはじめた。
部署内でqcサークルの取組みをはじめた。

見積を先方に送った。
見積りを先方に送った。

お問合せ欄に記載の電話番号からご連絡ください。
お問い合せ欄に記載の電話番号からご連絡ください。

既にそれをやり終えている。
例えば、ぼくからやってみるのはどうだろう?
最も重要なことはそれじゃない。
予め準備しておく。
全てうまくいった。

われわれは一致団結して戦った。
ひとりひとりの努力が大切だ。
さまざまな意見が出た。
いろいろな気持ちが沸き起こった。
つねに先手を取ることが大切だ。

組立マニュアル」を見て部品の組立を行った。
組立マニュアル」を見て部品の組立てを行った。

制作環境を整備する必要がある。
製作環境を改善する必要がある。

8:作成時の注意点

8-1:作成時の注意点

コードは、上にある条件から適用されます。
そのため、順番が重要になってきます。


・コード内の「組立て」と「組立」の順番も意図したものです。

表記ゆれチェックツール

仮に、
「組立」
   ↓
「組立て」というように順番を逆にした場合。


” 
これを組立てました  ” 

という文に対してツールを使用すると、
『組立 ⇒ 組み立て』が優先して適用されます。


【結果】


” 
これを組立てました 

     

” 
これを組み立ててました 

となり、「」がダブることになります。

実際に作成するときには、この辺りが少し面倒ですが何度か試してみるとすぐに法則がつかめます。

8-2:ルーチンワークはエクセルで

コードの作成は、エクセルの結合演算子「&」を使えば簡単に作成できます。既に表記のガイドラインがあるなら、大半はコピペで作れます。

コードの「 .Text = "お客さま"」の部分

表記ゆれチェックツール


エクセルの「&」で結合

・数式
 =【 .Text=" 】【 NGワード 】【 " 】

表記ゆれチェックツール 

コードの「.Replacement.Text = "■■お客様"」の部分

表記ゆれチェックツール



エクセルの「&」で結合

・数式
 =【 .Replacement.Text = "■■ 】【 OKワード 】【 " 】

表記ゆれチェックツール

表記チェックツールは一つ作れば大丈夫

誌面のリニューアルによって、デザインなどは一新されることがあります。ですが、表記ルールは部分的に見直しされることはあっても、一新されることはまずありません。

最初に作るチェックツールは手間かもしれませんが、一つ作れば後はずっと使えます。作り替えも簡単なので、一つの案件だけでなく他の案件にも流用できます。


あらかじめ表記統一のルールが決まっているのなら、現段階では、校正ツールに頼るよりも自作したほうが確実に間違いを潰していけるので安心です。

これから表記統一のガイドラインを作成するというのなら、検索が容易な表記を軸に表記統一のガイドラインを作成していくことをおすすめします。

表記統一のガイドラインは一番は読者視点ですが、校正作業も考えた上で作成していけば、制作工程全体での効率化が可能になってきます。

【関連記事】
表記ゆれはソフトで解消!のまとめ[ 結局どれが一番使えるの?]