textlintを導入し、文章校正をする
最近記事や手順書を作成する機会が増えているのですが、文章が問題ないかのチェックが大変です。
読み手がいる以上、読みやすい文章で書くことはとても必要ですが、セルフチェックだとなかなか行き届かないもの。
そこで今回は Node.js のパッケージである textlint を使用し、文章を校正するようにしてみました。
よく調べてみると、textlint を利用している企業は数多く、個人利用でも積極的に使いたいなと思いました。
textlintとは
そもそも textlint とは何なのかを説明する必要がありますね。
Lint と呼ばれる静的解析ツールは JavaScript を使って開発している人にとってはお馴染みです。
今回の textlint は校正ルールを提供されているルールや自作含め、自由自在にカスタマイズし、独自の校正ルールを組むことが可能になります。
Githubにもこう書かれています。
The pluggable linting tool for text and markdown.
textlint is similar to ESLint, but it's for use with natural language.
ほかの自然言語でも多くのルールが提供されているということですね。
設定&利用方法
textlint を使用するには Node.js の準備が必要になりますで、あらかじめインストールしておいてください。
- npm の初期化処理
npm init --yes
- textlint のインストール
npm install textlint
- 利用したいルールのインストール
ここで、textlint に対し使用したいルールのインストールも併せて行います。
例えば、一文に利用できる、の数をチェックするルールを適用させたいとした場合、textlint-rule-max-ten
をインストールします。
npm install textlint-rule-max-ten
- textlint の実行
textlint を実行したい時は、npx
コマンドを利用します。
npx textlint --rule textlint-rule-max-ten articles/**
実際にエラーを起こすとこのような感じになります。
ただし、ルールが増えていくたびにつれて実行コマンドにルール名を記載しなければならくなるため、コマンドが長くなってしまいます。
npx textlint --rule textlint-rule-max-ten textlint-rule-no-dropping-the-ra articles/**
そのため、複数ルールでチェックしたい時は、.textlintrc
という設定ファイルを作成し、コマンドから分離して管理することが可能となります。
{
"rules": {
"textlint-rule-no-dropping-the-ra": true
}
}
正直ルールはたくさんあるので、どれが最適解なのかは今も模索中です。
フィルタールール
校正ルールの他、状況に応じては適用ルールを無視させたい時もあるはずです。
その時は、フィルタールールを利用するのが良いです。
- フィルタールールのインストール
npm install textlint-filter-rule-comments
- .textlintrc に filters フィールドを追加
{
"rules": {
"textlint-rule-no-dropping-the-ra": true
},
"filters": {
"comments": true
}
}
下記のようにコメントでルール適用変えることが可能となります。
<!-- textlint-disable -->
食べれる
<!-- textlint-enable -->
来れる
その他機能
htmlファイルのtextlint有効化
標準で textlint は html ファイルに対応していないので、下記パッケージを入れることで対応可能となります。
npm install textlint-plugin-html
{
"rules": {
"textlint-rule-no-dropping-the-ra": true
},
"filters": {
"comments": true
},
"plugins": [
"html"
]
}
自動修正
エラーが発生した際、発生した内容を修正が可能なルールもあります。その場合はコマンドに--fix
のオプションを追加することで自動修正が可能となります。
VSCodeを利用したtextlint
VSCode を利用して textlint を実行する拡張機能があります。
VSCode のマーケットプレイス・拡張機能で「textlint」を検索するとヒットします。
参考サイト
めちゃくちゃ多い...。
Discussion