📘

Emacs で日本語文章をチェックする方法(flycheck + textlint)

2022/09/18に公開

うまく進めば 10分程度で、日本語文章をチェックして適切でない箇所を強調することができると思います。

Emacs で textlint できた場合の画像

Emacs 使う前に textlint を設定する

事前に textlint とプラグインをインストールする必要があります。

# textlint 本体です
npm install -g textlint

# 日本語でチェックするためのプラグインです
npm install -g textlint-rule-preset-ja-technical-writing

# org-mode で textlint を動かすためのプラグインです
npm install -g textlint-plugin-org
npm install -g traverse

# 下記のインストールは私の環境では必要でしたが、エラーが出るまで入れなくて良いかもしれません。
npm install -g @textlint/ast-node-types

これらをインストールしたあとホームディレクトリに ~/.textlintrc を作成します。私は下記のようにしました。

{
  "plugins": [
    "org"
  ],
  "rules": {
    "preset-ja-technical-writing": {
      "no-exclamation-question-mark": false
    },
    "preset-ja-spacing": {
      "ja-space-between-half-and-full-width": {
        "space": "always"
      }
    }
  }
}

org-mode に利用したい場合は plugins を書くのを忘れないようにしましょう。他の設定は自由に変更してください。設定ファイルを作成したあと、適当な検証用ファイル test.org を作って textlint が動くか確かめましょう。

日本語の文章を書いてみた
自動販売機販売計画

そして下記のコマンドを実行します。

textlint test.org

正しく設定が完了していれば下のように textlint がルール違反を検出してくれるでしょう。

test.org
  2:1  error  漢字が7つ以上連続しています: 自動販売機販売計画  ja-technical-writing/max-kanji-continuous-len
  2:9  error  文末が"。"で終わっていません。                   ja-technical-writing/ja-no-mixed-period

✖ 2 problems (2 errors, 0 warnings)

Emacs で textlint の結果を見る

flycheck をインストールしてない場合はインストールしましょう。flycheck をインストールしている場合は test.org を開いて M-x flycheck-mode を実行しましょう。正しく textlint が動いている場合は下記のように表示されるはずです。

Emacs で textlint できた場合の画像

もしこの動作が気に入ったのなら org-mode のフックで flycheck-mode を起動すれば良いでしょう。私は普段からこの厳しいルールを使うよりも、雑にメモを取りたいと考えているため flycheck-mode はオフにせず、デフォルトのまま利用し続けています。

ちなみに org ファイルはプラグインが必要でしたが markdown ファイルはプラグインなしで動作します。

参考文献

textlint の設定がわからない場合や、エラーになってしまう場合は下記を見るのが良いと思います。

https://github.com/textlint/textlint

flycheck のインストール方法や詳しい使い方は下記で見ることができます。

https://www.flycheck.org

英語と日本語の設定を分けたい場合には下記の記事が参考になりそうです。

https://mako-note.com/ja/textlint-emacs/

Discussion