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