Oteto Blogのロゴ

textlintでMarkdownの日本語文章を校正する

やりたいこと

本サイトの記事は全てMarkdown形式で執筆しているが、正しくない日本語を使ったり誤字脱字をすることが多々ある。

なので記事執筆中に自動でその文章を校正(あわよくば修正)してくれるようにしたい。

そこで色々調べていたらtextlintなるものを見つけたので試しに使ってみる。

textlintとは

文章の中の表記ゆれや不適切な言い回しを指摘・修正してくれる、構文解析ツール。

textlint は、JavaScript で書かれたオープンソースのテキストリンティングユーティリティです。 自然言語のテキストをリントするのは難しいですが、プラグ可能なアプローチでこの問題を解決しようとしています。

引用元:textlint · The pluggable linting tool for text and markdown

公式サイトの文章をそのまま日本語訳してみたが、その名の通りESLintやStylelintをはじめとしたLint系(静的解析ツール)の一種。もちろん日本語にも対応している。

それから任意のルールを設定することで校正を厳しく(甘く)することもできるため、企業独自にルールを定めて利用されることも多いらしい。

設定・使い方

1. textlintをインストール

npm i textlint

2. 利用するルールをインストール

npm i @textlint-ja/textlint-rule-no-synonyms

今回は文章中の表記ゆれをチェックしてくれる@textlint-ja/textlint-rule-no-synonymsを使ってみる。

3. コマンドを叩く

npx textlint --rule @textlint-ja/textlint-rule-no-synonyms <対象のファイル>

ruleオブションと先ほどのルールを指定し、コマンドを叩いてみる。

error    同義語である「エディタ」と「エディター」が利用されています [Error/@textlint-ja/textlint-rule-no-synonyms]

するとこのようにしっかり警告が出てくれた。

ちなみに表記ゆれの判定対象はあくまで本文(見出しや段落内)のみで、コードブロック内の文言に関しては勝手に除外してくれるようになっていた、凄い。

npx textlint --fix ...

ちなみに修正も同時に行なって欲しい場合はfixオブションを付けてあげればOK。

ルールを複数設定する方法

npx textlint --rule textlint-rule-xx textlint-rule-xxx textlint-rule-xxxx <対象のファイル>

先ほどのようにコマンドの引数としてルールを指定する方法だと、複数のルールを指定したい場合に不便になってしまう。

そこで、専用の設定ファイルでルールを管理する方法を試してみる。

1. 設定ファイルの作成

npx textlint --init

を叩くことで.textlintrc.jsonが作成される。

2. ルールの追記

{
  "rules": {
    "textlint-rule-xx": true,
    "textlint-rule-xxx": true,
    "textlint-rule-xxxx": true
  }
}

そうしたらインストールした任意のルールを、上のように.textlintrc.jsonに追記する。

ルールに関してはルール一覧から確認できるが、どれを選べばいいか正直迷ったので下記記事を参考にした。

俺俺textlintルールを検討してみた - Qiita

3. コマンドを叩く

npx textlint <対象のファイル>

あとは同じようにコマンドを叩けばOK。今回はruleオブションやルールを指定する必要は無い。

余談

筆者が指定したルール

{
  "rules": {
    "textlint-rule-preset-ja-spacing": true,
    "textlint-rule-no-dropping-the-ra": true,
    "@textlint-ja/textlint-rule-no-insert-dropping-sa": true,
    "textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet": true,
    "@textlint-ja/textlint-rule-no-synonyms": true,
    "textlint-rule-no-hoso-kinshi-yogo": true,
    "textlint-rule-ja-no-inappropriate-words": true
  }
}

ちなみに自分の場合、色々試してみたところ結局上のルールに落ち着いた。

というのも、厳しくしすぎると都度怒られて自由に文章が書けないという事態に陥ってしまい本末転倒になる。そこで下記のような、個人ブログにとって必要最低限のものだけチェックすることにした。

  • さ抜き・ら抜き言葉
  • アルファベット全角・半角の混合
  • 不適切表現

IntelliJ系のエディタで使う

Intellijのファイル監視機能(File Watchers)を使って、Markdownファイルを保存するたびに自動で校正してくれるようにする。

IntelliJ系のエディタで使う

「File Watchers」に上のように設定を追加し、「保存時のアクション」にその追加した設定を指定する。

同義語である「エディタ」と「エディター」が利用されています [Error/@textlint-ja/textlint-rule-no-synonyms

すると無事、Markdownファイル編集後に都度校正が行われるようになった。