textlint 1 は自然言語向けの Linter のひとつ。 対象とする文章を静的解析して、特定のルールに抵触していないか確認できる。 今回は macOS で textlint を使い始めるまでについてメモしておく。
使った環境は次のとおり。
$ sw_vers ProductName: macOS ProductVersion: 15.4.1 BuildVersion: 24E263 $ uname -srm Darwin 24.4.0 arm64 $ node --version v23.11.0 $ npm --version 10.9.2 $ npx textlint --version v14.7.1
もくじ
下準備
textlint は npm で配布されている。 そこで、まずは Homebrew で Node.js をインストールする。
$ brew install node
textlint をインストールする
チェックしたい文章のある場所で npm を使って textlint をインストールする。
このとき --save-dev
オプションをつけると package.json
ファイルが作られる。
$ npm install --save-dev textlint
package.json
には依存関係が書かれている。
$ cat package.json { "devDependencies": { "textlint": "^14.7.1" } }
また、node_modules
というディレクトリに textlint と依存パッケージがインストールされる。
$ ls -1 node_modules | head @azu @isaacs @keyv @pkgjs @textlint @types ajv ansi-regex ansi-styles argparse
これで textlint の本体がインストールできた。
校正用のプリセットルールをインストールする
次にチェックする具体的な内容の書かれたプリセットルールをインストールする。
ここでは例として日本語の技術文章向けのプリセットの textlint-rule-preset-ja-technical-writing
を入れる。
プリセットも npm でインストールできる。
$ npm install --save-dev textlint-rule-preset-ja-technical-writing
その他にも textlint-ja というコミュニティのリポジトリを見ると色々なプリセットがある。
textlint の設定ファイルを用意する
次に、先ほどインストールしたプリセットを使う textlint の設定ファイルを用意する。
設定ファイルの名前は .textlintrc
で、フォーマットは JSON になっている。
cat << 'EOF' > .textlintrc { "rules": { "preset-ja-technical-writing": true } } EOF
文章をチェックする
サンプルとなる文章を用意する。
$ cat << 'EOF' > helloworld.md 吾輩は猫である。名前はまだ無い。 EOF
npx コマンドを使って textlint を呼び出して上記のファイルをチェックする。
すると ja-technical-writing/no-mix-dearu-desumasu
というルールに抵触する箇所が見つかる。
$ npx textlint helloworld.md /Users/amedama/Documents/temporary/helloworld.md 1:5 error 本文: "ですます"調 でなければなりません => "ですます"調 であるべき箇所に、次の "である"調 の箇所があります: "である。" Total: である : 1 ですます: 0 ja-technical-writing/no-mix-dearu-desumasu ✖ 1 problem (1 error, 0 warnings)
なお、npx コマンドを使わないパターンとして、コマンドに PATH を通してしまうやり方もある。
インストール先の bin ディレクトリは $(npm root)
以下の .bin
になる。
つまり、以下のようにすれば良い。
$ PATH=$(npm root)/.bin:$PATH textlint helloworld.md /Users/amedama/Documents/temporary/helloworld.md 1:5 error 本文: "ですます"調 でなければなりません => "ですます"調 であるべき箇所に、次の "である"調 の箇所があります: "である。" Total: である : 1 ですます: 0 ja-technical-writing/no-mix-dearu-desumasu ✖ 1 problem (1 error, 0 warnings)
いじょう。