textlint校正ツールで表記ゆれをチェックする方法

textlint と Re:VIEW

textlint と Re:VIEW

textlint校正ツールで日本語原稿チェック

2018年5月、Windows10のtextlint校正ツールにより技術文書向けルールでRe:VIEW日本語原稿をチェックしました。textlintにRe:VIEWプラグイン表記ゆれルールをインストールして拡張しました。

表記ゆれルールを使用するには、textlint-rule-prhをインストールします。その他に、以下のルールプリセットもインストールしています。

textlintのインストールと設定については、下記ブログを参照してください。

textlint校正ツールでRe:VIEW日本語原稿をチェックする方法

技術文書向けルールのカスタマイズは、下記ブログを参照してください。

textlint校正ツールの技術文書向けルールをカスタマイズする方法

日本語周りスペースルールのカスタマイズは、下記ブログを参照してください。

textlint校正ツールの日本語周りスペースルールをカスタマイズする方法

表記ゆれとは

表記ゆれとは、一つの意味を表す同じ語句に異なる文字表記をすることです。表記ゆれがあると、読者はそれぞれの表記により違う意味が含まれているかと考えながら読むことになります。その結果、文章が読みにくくなったり、内容がわかりにくくなったりします。

表記ゆれの例を示します。

漢字の開き 「下さい」、「ください」
送り仮名 「組み込み」、「組込」
文字種 「りんご」、「リンゴ」、「林檎」
漢字 「合う」、「会う」、「遭う」
外来語の長音符 「コンピューター」、「コンピュータ」

表記ゆれルールをインストール

表記ゆれルールtextlint-rule-prhは、proofread-helperという校正ライブラリを使用します。prhは、proofread(校正)-helper(手伝い)の略のようです。

表記ゆれルールをローカル(開発環境)にインストールします。

> npm install --save-dev textlint-rule-prh
npm WARN text01@1.0.0 No description
npm WARN text01@1.0.0 No repository field.

+ textlint-rule-prh@5.0.1
added 3 packages in 2.822s

.textlintrcの設定

.textlintrcに表記ゆれルール(textlint-rule-prh)を組み込みます。
ルールは、同ディレクトリのprh.ymlを参照するようにします。

{
  "rules": {
      // 技術文書向けの textlint ルールプリセット
      "preset-ja-technical-writing": true ,
      // 日本語周りにおけるスペースの有無 ルールプリセット
      "preset-ja-spacing": true 
      // 表記ゆれ ルール
      "prh": {
         "rulePaths" :["./prh.yml"]
    }
  },
  "plugins": [
        "review"
    ]
}

「prh init」コマンドで、prh.ymlのスケルトンを生成します。

> npx prh init
npx: installed 1 in 2.299s
Path must be a string. Received undefined
C:\Users\pi\MyTextlint\text01\node_modules\prh\bin\prh
create prh.yml
see prh/rules collection https://github.com/prh/rules

prh.ymlの内容を確認します。

version: 1

# 本ファイルは設定の仕方の見本であり、実用的な校正ルールではありません。
# もし、もっと充実した別のルールを使いたい時は以下のURLを参照してください。
# https://github.com/prh/rules
# おすすめは media/techbooster.yml です。

# 下記の説明を参考に、git submoduleとimportsを使って参照するのがよいでしょう。
# リポジトリの設定 git submodule add https://github.com/prh/rules.git prh-rules

# 別の設定ファイルを読み込み、mergeすることもできます。
imports:
  # - ./prh-rules/media/techbooster.yml
  # - ./prh-rules/files/markdown.yml
  # - ./prh-rules/files/review.yml

  # imports にはいくつかのオプションが指定できる
  # - path: other-rules.yml
    # 連鎖的なimportを禁止する
    # disableImports: true
    # importするルールで不都合なものは殺すことができる
    # patternやexpectedに指定する文字列は --rules-yaml で得られるパース後の表現を使うこと
    # ignoreRules:
      # pattern: /a/ と等価
      # - /a/ 
      # - pattern:  /a/
      # - expected: /b/

rules:

  # 大文字小文字全角半角の統一
  - expected: Cookie
  # 以下と等価 正規表現には強制でgフラグが付く
  # - expected: Cookie
  #   pattern: "/[CcCc][OoOo][OoOo][KkKk][IiIi][EeEe]/g"
  #   options:
  #     wordBoundary: false
  #   specs: []

  # 変換結果についてテストも書ける
  - expected: jQuery
    specs:
      - from: jquery
        to:   jQuery
      - from: JQUERY
        to:   jQuery

  # 変換結果が期待通りではなかった場合、ルールのロードに失敗する つまり、ルールのテストが書ける
  # - expected: JavaScript
  #   specs:
  #     - from: JAVASCRIPT
  #       to:   JavaScprit # この場合はテスト側が間違ってる!
  # Error: JavaScript spec failed. "JAVASCRIPT", expected "JavaScprit", but got "JavaScript", /[JjJj][AaAa][VvVv][AaAa][SsSs][CcCc][RrRr][IiIi][PpPp][TtTt]/g

  # 表現の統一を図る
  - expected: デフォルト
    pattern:  ディフォルト

  # patternは複数記述可能 patterns としてもOK
  - expected: ハードウェア
    patterns:
      - ハードウエアー # 正規表現に変換する都合上、より長いものを先に書いたほうがよい
      - ハードウェアー
      - ハードウエア

  # patternには正規表現が利用可能
  - expected: ($1)
    pattern:  /\(([^)]+)\)/
    specs:
      # 半角括弧を全角括弧へ
      - from: (そのとおり)
        to:   (そのとおり)

  # 否定戻り先読みが欲しいがJSにはない… regexpMustEmptyで、特定のキャプチャグループが空であることを指定して代用とする
  - expected: ソフトウェア
    pattern:  /(日経)?ソフトウエア/
    regexpMustEmpty: $1
    specs:
      # 普通に変換
      - from: 広義のソフトウエア
        to:   広義のソフトウェア
      # 日経ソフトウエア(書名)は変換しない
      - from: 日経ソフトウエア
        to:   日経ソフトウエア

  # 長音の統一には否定後読みを活用する そうしないと サーバー が サーバーー にされてしまったりする
  - expected: サーバー
    pattern:  /サーバ(?!ー)/
    specs:
      - from: サーバ
        to:   サーバー

  # 単語境界の区別
  - expected: js
  # pattern: "/\b[JjJj][SsSs]\b/g" # と等価 \b が前後に付与される
    options:
      wordBoundary: true
    specs:
      - from: foo JS bar
        to:   foo js bar
      - from: foo altJS bar
        to:   foo altJS bar
      # 日本語+単語境界の仕様は自分で調べてね…!
      - from: 今日もJS祭り
        to:   今日もjs祭り

Re:VIEWサンプル原稿

textlintで原稿の校正を行うサンプル原稿を作成します。ファイル名はtest.reで、UTF-8エンコードLF改行コードで作成します。このサンプル原稿は、表記ゆれを試すために故意に作成しています。

= はじめての Re:VIEW

jqueryは、JavaScriptライブラリです。
JavaScriptには、ブラウザ上で動くクライアントサイドと、
サーバ側で実行するサーバサイドがあります。


== ハードウエアとソフトウエア

ディフォルトの設定を行います。

サンプル原稿のチェック

prh 指摘

prh 指摘

> textlint test.re
   3:1   ✓ error  jquery => jQuery              prh
   5:1   ✓ error  サーバ => サーバー            prh
   5:10  ✓ error  サーバ => サーバー            prh
   8:4   ✓ error  ハードウエア => ハードウェア  prh
   8:11  ✓ error  ソフトウエア => ソフトウェア  prh
  10:1   ✓ error  ディフォルト => デフォルト    prh

✖ 6 problems (6 errors, 0 warnings)
✓ 6 fixable problems.
Try to run: $ textlint --fix [file]

ルールで定義した表記ゆれを指摘しています。

textlint自動修正

fixable problem指摘は、「–fix」オプションを付けると指摘内容を自動修正します。

> textlint --fix test.re
   3:1   ✔   jquery => jQuery              prh
   5:1   ✔   サーバ => サーバー            prh
   5:10  ✔   サーバ => サーバー            prh
   8:4   ✔   ハードウエア => ハードウェア  prh
   8:11  ✔   ソフトウエア => ソフトウェア  prh
  10:1   ✔   ディフォルト => デフォルト    prh

✔ Fixed 6 problems

修正前後の原稿を比較すると、正しく修正したことがわかります。

自動修正の差分

pr

実用的な表記ゆれ校正ルール

「prh init」コマンドで作成した見本のprh.ymlで試しました。prhツールを追加インストールすると、実用的な校正ルールもインストールされます。

> npm install prh
npm WARN text01@1.0.0 No description
npm WARN text01@1.0.0 No repository field.

+ prh@5.4.3
updated 1 package in 8.622s

「node_modules\prh\prh-rules\media」に、下記ルールがあります。

  • techbooster.yml
  • WEB+DB_PRESS.yml
prh 実用的なルール

prh 実用的なルール

スケルトンのprh.ymlのimports:に、この二つのルールを加えます。

imports:
    - ./node_modules/prh/prh-rules/media/techbooster.yml
    - ./node_modules/prh/prh-rules/media/WEB+DB_PRESS.yml

サンプル原稿の再チェック

Re:VIEWサンプル原稿の自動修正を元に戻して、原稿のチェックをします。

> textlint test.re

   1:3   ✓ error  はじめて => 初めて            prh
   3:1   ✓ error  jquery => jQuery              prh
   5:1   ✓ error  サーバ => サーバー            prh
   5:10  ✓ error  サーバ => サーバー            prh
   8:4   ✓ error  ハードウエア => ハードウェア  prh
   8:11  ✓ error  ソフトウエア => ソフトウェア  prh
  10:1   ✓ error  ディフォルト => デフォルト    prh

✖ 7 problems (7 errors, 0 warnings)
✓ 7 fixable problems.
Try to run: $ textlint --fix [file]

「はじめて」→「 初めて」が追加で指摘されました。

まとめ

Windows10にtextlint校正ツールをインストールして、Re:VIEW日本語原稿をチェックできました。表記ゆれチェックルールをインストールして、適切に日本語チェックが行えました。