技術メモなど

業務や日々のプログラミングのなかで気になったことをメモしています。PHP 成分多め。

textlint で文書の校正を自動化する

遅ればせながら、 textlint を導入してみたのでメモ。

textlint とは

文書の校正を自動化するツール。
npm で動作しており、指定したファイルのおかしな文章をエラー警告してくれる。
チェック事項はプラグイン追加や設定ファイルなどで柔軟に指定できる。

インストール

npm からインストールする。必要なバージョンは以下。

  • Node.js 6.0.0以降
  • npm 2.0.0+

textlint 本体には校正ルールはバンドルされていない。
チェック事項を追加するにはルールプラグインが必要となる。ルールプラグインは、公式のルール集textlintの日本語コミュニティなどで公開されている。

ルール集: Collection of textlint rule · textlint/textlint Wiki · GitHub
textlintの日本語コミュニティ:textlint-ja · GitHub

今回は、JTF日本語標準スタイルガイドに従ってチェックしてくれる textlint-rule-preset-jtf-style を使用する。

$ npm install textlint --save-dev
$ npm install textlint-rule-preset-ja-spacing --save-dev

設定ファイルの作成

インストールが終わったら、textlint の設定ファイルを作成する。

$ npx textlint --init

上記コマンドを実行後、.textlintrc ファイルが作成される。 ファイルを開き、rules のなかにルールプラグイン名を追加する。

{
  "filters": {},
  "rules": {
    "preset-jtf-style": true
  }
}

チェックを実行する。

最低限の準備はできたので実際にチェックしてみる。

$ npm textlint <チェックするファイル名>

ファイル拡張子は、デフォルトでは .txt .md に対応している。プラグインを使用すれば HTML もチェックできるようだ。

例として、前回の記事を使用して実際に実行してみた。

$ npx textlint 20190425.md 

/textlint_sample/20190425.md
   1:4   ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
   1:14  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  12:10  ✓ error  半角のかっこ()が使用されています。全角のかっこ()を使用してください。  jtf-style/4.3.1.丸かっこ()
  12:14  ✓ error  半角のかっこ()が使用されています。全角のかっこ()を使用してください。  jtf-style/4.3.1.丸かっこ()
  13:37  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  16:7   ✓ error  半角のかっこ()が使用されています。全角のかっこ()を使用してください。  jtf-style/4.3.1.丸かっこ()
  16:10  ✓ error  半角のかっこ()が使用されています。全角のかっこ()を使用してください。  jtf-style/4.3.1.丸かっこ()
  17:18  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  18:32  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  18:38  ✓ error  原則として、全角文字どうしの間にスペースを入れません。                  jtf-style/3.1.2.全角文字どうし
  19:37  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  20:29  ✓ error  半角のかっこ()が使用されています。全角のかっこ()を使用してください。  jtf-style/4.3.1.丸かっこ()
  20:31  ✓ error  半角のかっこ()が使用されています。全角のかっこ()を使用してください。  jtf-style/4.3.1.丸かっこ()
  21:18  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  21:31  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  21:33  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  21:37  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  21:39  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  21:46  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  26:1   error    箇条書きの文末に句点(。)を付けて下さい。
箇条書きの文末に句点(。)を付けるかを統一します。                        jtf-style/1.1.3.箇条書き
  28:1   error    箇条書きの文末に句点(。)を付けて下さい。
箇条書きの文末に句点(。)を付けるかを統一します。                        jtf-style/1.1.3.箇条書き
  29:5   ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  34:15  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  35:31  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  36:1   error    箇条書きの文末から句点(。)を外して下さい。
箇条書きの文末に句点(。)を付けるかを統一します。                        jtf-style/1.1.3.箇条書き
  36:18  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  41:1   error    箇条書きの文末から句点(。)を外して下さい。
箇条書きの文末に句点(。)を付けるかを統一します。                        jtf-style/1.1.3.箇条書き
  41:13  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  41:26  ✓ error  算用数字は「半角」で表記します。                                        jtf-style/2.1.8.算用数字
  42:3   ✓ error  算用数字は「半角」で表記します。                                        jtf-style/2.1.8.算用数字
  42:5   ✓ error  算用数字は「半角」で表記します。                                        jtf-style/2.1.8.算用数字
  46:22  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  47:1   error    箇条書きの文末に句点(。)を付けて下さい。
箇条書きの文末に句点(。)を付けるかを統一します。                        jtf-style/1.1.3.箇条書き
  47:9   ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  52:9   ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  65:14  ✓ error  算用数字は「半角」で表記します。                                        jtf-style/2.1.8.算用数字
  70:4   ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
  70:13  ✓ error  原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間

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

ヒィィ!
こんな感じで警告してくれます。
なお、自動で修正できる警告 fixable problems については fix オプションを付与して実行すれば勝手に修正してくれる。

$ npx textlint --fix 20190425.md 

/textlint_sample/20190425.md
  41:26  ✔   算用数字は「半角」で表記します。                                        jtf-style/2.1.8.算用数字
  42:3   ✔   算用数字は「半角」で表記します。                                        jtf-style/2.1.8.算用数字

<略>

   1:4   ✔   原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間
   1:14  ✔   原則として、全角文字と半角文字の間にスペースを入れません。              jtf-style/3.1.1.全角文字と半角文字の間

<略>   

  18:37  ✔   原則として、全角文字どうしの間にスペースを入れません。                  jtf-style/3.1.2.全角文字どうし
  12:10  ✔   半角のかっこ()が使用されています。全角のかっこ()を使用してください。  jtf-style/4.3.1.丸かっこ()
  12:14  ✔   半角のかっこ()が使用されています。全角のかっこ()を使用してください。  jtf-style/4.3.1.丸かっこ()

<略>   

✔ Fixed 33 problems

参考文献