2023-8-27

ブログにtextlintを導入した

自作ブログ

記事を書く際に細かい誤字脱字や表記のチェックなどに時間を取られて、文章を書くための心理的なハードルが高まっている。 もっと気楽に文章を書けるようにするためtextlintを使って、細かい確認作業を自動化することにした。

https://textlint.github.io/

必要なモジュールの追加

まずは必要なライブラリやプラグインを追加する。textlintはプラグイン形式のツールで、 有志が作成した追加のルールを導入できる。 日本語用のプラグインをまとめているコミュニティを見つけたので、ここに記載された表を参考に何個かプラグインを追加する。

https://github.com/textlint-ja

今回は以下3つのプラグインを導入することにした。

以下のコマンドでtextlintと日本語用のプラグインを導入する。

bash
Copied!
$ yarn add -D textlint
$ yarn add -D textlint-rule-preset-ja-technical-writing textlint-rule-ja-unnatural-alphabet textlint-rule-preset-JTF-style

都度コマンドをCLIで入力するのが手間なのでVSCodeのプラグインも導入する。

https://marketplace.visualstudio.com/items?itemName=taichi.vscode-textlint

初期化と設定ファイルの記述

以下のコマンドを打つことで.textlintrc.jsonというファイルが生成される。

bash
Copied!
$ yarn textlint --init

デフォルトではプラグインが無効化されているようなので、.textlintrc.jsonに有効化するよう記載を追記する。 VSCodeのプラグインは、VSCodeを再起動しないと設定の変更を読み込まないようなので注意。(またはCommand PaletteからReload Windowする)

json
Copied!
{
  "plugins": {},
  "filters": {},
  "rules": {
    "preset-ja-technical-writing": true,
    "ja-unnatural-alphabet": true,
    "preset-jtf-style": true
  }
}

都度ファイル名指定して実行するのが面倒なので、package.jsonのスクリプトにショートハンドを登録しておく。 自分はcontent/blogs以下の20で始まるマークダウンが記事になっているので、ワイルドカードを使ってパターンを指定した。

json
Copied!
...
"scripts": {
"textlint": "textlint 'content/blogs/20*md'",
...
},
...

ルールの微修正

デフォルトだとtextlint-rule-preset-ja-technical-writingのルールは結構厳しいため、一部のルールはエラーではなく警告として扱いたい。 textlintではseverityを指定できるため、.textlintrc.jsonを書き換えて一部のルールのseverityをwarningに変更する。

json
Copied!
{
  "plugins": {},
  "filters": {},
  "rules": {
    "preset-ja-technical-writing": {
      "max": 300,
      "no-doubled-conjunctive-particle-ga": {
        "severity": "warning"
      },
      "no-doubled-joshi": {
        "severity": "warning"
      },
      "ja-no-weak-phrase": {
        "severity": "warning"
      }
    },
    "ja-unnatural-alphabet": true,
    "preset-jtf-style": true
  }
}

まとめ

過去の記事が真っ赤になった。 真っ赤なVSCode この記事を書きながら導入を進めたが明らかに途中から記事を書くのが楽になったので、VSCodeで記事を書いている人間には強くお勧めできる。

参考