TextLint を使ってみる

文章校正ができる npm パッケージ「TextLint」を使ってみた。

TextLint の使い方

TextLint はルールをプラガブルに設定できるのが特徴。TextLint 本体となるパッケージの他に、特定の文法や言葉遣いをチェックするルールセットのパッケージを組み合わせて入れていくのだ。各ルールは設定ファイルにてチェックの仕方をカスタマイズしたりできる。

まずは TextLint 本体を入れる。今回はプロジェクト配下にローカルインストールする。

$ npm i textlint-D

そして package.json に npm-scripts を追加しておこう。

"scripts": {
  "textlint": "textlint"
}

これで npm run textlint で動かせるようになる。

自分が入れたルールセット

まだカスタマイズ中なのだが、自分が入れているルールセットは以下のとおり。全て npm パッケージなので、インストールは npm i texlint-rule-【パッケージ名】 -D で行う。

パッケージ名 概要
textlint-rule-ja-hiragana-hojodoushi ひらがなにした方が良い補助動詞
textlint-rule-ja-no-abusage よくある誤用
textlint-rule-ja-no-redundant-expression 冗長表現
textlint-rule-ja-no-successive-word 同一の単語を間違えて連続しているもの
textlint-rule-max-ten 一文に利用できる「、」の数
textlint-rule-no-doubled-conjunction 同じ接続詞が連続して出現していないか
textlint-rule-no-doubled-conjunctive-particle-ga 逆接の接続助詞「が」が一文中に複数回使用されていないか
textlint-rule-no-doubled-joshi 文中に同じ助詞が複数登場していないか
textlint-rule-no-dropping-the-ra ら抜き表現
textlint-rule-no-mix-dearu-desumasu 常体・敬体の統一
textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet 全角アルファベット
textlint-rule-no-nfd Mac 濁点

この辺で、単なる typo から文体の統一、勘違いして書いている文章や推敲の足りない文章がうまく蹴落とせると思う。

HTML ファイルをチェックするためのプラグイン

TextLint 単体では、チェック対象のファイルが HTML だとタグなどを誤解してしまうので、HTML ファイルを読み込めるプラグインを入れておく。

$ npm i textlint-plugin-html -D

設定ファイルでカスタマイズ

さて、これらのルールセットやプラグインを有効にし、チェックルールをカスタマイズするために、プロジェクト直下に .textlintrc というファイルを作り、JSON 形式でルールを設定していく。// でコメントアウトを挿入できる。

{
  "plugins": [
    "html"
  ],
  "rules": {
    // よくある誤用
    "ja-no-abusage": true,
    // 冗長表現
    "ja-no-redundant-expression": true,
    // 全角アルファベット
    "no-mixed-zenkaku-and-hankaku-alphabet": true,
    // ら抜き言葉
    "no-dropping-the-ra": true,
    // 一文における読点「、」の数
    "max-ten": {
      "max" : 3
    },
    // 逆接の接続助詞「が」が一文中に複数回使用されていないか
    "no-doubled-conjunctive-particle-ga": true,
    // 同じ接続詞が連続して出現していないか
    "no-doubled-conjunction": true,
    // 文中に同じ助詞が複数登場していないか
    "no-doubled-joshi": {
      "min_interval" : 1,
      "strict": false,
      "allow": []
    },
    // Mac 濁点
    "no-nfd": true,
    // ひらがなにした方が良い補助動詞
    "ja-hiragana-hojodoushi": true,
    // 同一の単語を間違えて連続しているもの
    "ja-no-successive-word": true,
    // 常体 (である調) に統一する
    "no-mix-dearu-desumasu": {
      "preferInHeader": "である",  // "" (自動) or "である" or "ですます"
      "preferInBody": "である",
      "preferInList": "である",
      "strict": true  // 文末以外でも敬体と常体を厳しくチェックするかどうか
    }
  }
}

基本はパッケージ名の接頭辞 textlint-rule- を省いてパッケージを指定し、その中で決められたルールを設定する、もしくは truefalse でそのルールを適用するかどうか、といった設定ができる。

Lint の掛け方

これでパッケージの導入と設定ができたので、実際に Lint をかけてみる。

$ npm run textlint ./html/**/*.html

このようにワイルドカードで指定のディレクトリ配下の全てのファイルを選択できる。結果は以下のように表示される。

C:\MyProject\html\test\hoge.html
   77:129  error    一つの文で"、"を3つ以上使用しています                         max-ten
   82:57   error    一文に二回以上利用されている助詞 "に" がみつかりました。      no-doubled-joshi
   89:179  error    一つの文で"、"を3つ以上使用しています                         max-ten
   91:72   error    "小" が連続して2回使われています。                            ja-no-successive-word

中には「飲酒はほどほどにしよう」といった文章を見て「"ほど" が連続して2回使われています。」というツッコミが入ったり、思ってもいないところでエラー扱いになることもあるが、少なくとも誤りは見逃さないので、これで文章校正をしていくのが良い感じ。