手軽に日本語のチェックがしたい
textlintのインストール
apt-get install npm
でいけるだろう。Windowsの場合はScoopを使って scoop install npm
で入れるのがおすすめである。このへんは先日書いたEmacs設定の記事でも触れた通りだ。
なおあまり推奨はされていないようだが、 -g
オプションを付けてグローバルにインストールしたほうがスタンドアロンのツールとして使う分には何かと便利なように思われる。その場合、Windowsの場合は不要だが、GNU/Linuxでは /usr/local
以下へインストールすることになるので、 sudo
が必要になる。
> npm -g install textlint
さらに、プラグインや校正ルールをインストールする必要がある。どんなプラグインやルール・ファイルがあるかはCollection of textlint ruleに一覧がある。今回はたまたま日本語に絞っているが、英語などにも対応しているようだ。
texlint本体をグローバルでインストールした場合、これらも -g
オプションをつけてインストールしなければならない。textlintは標準でMarkdownには対応しているので、Org形式やHTML形式に対応するプラグインを別途追加してある。雑な人間なので、textlint-jaの公式Githubレポジトリにあるルールはとりあえず全部インストールしてしまった。各ルールの説明も同じところにある。
> npm install -g textlint-ja/textlint-rule-morpheme-match \ @textlint-ja/textlint-rule-no-dropping-i \ @textlint-ja/textlint-rule-no-filler \ @textlint-ja/textlint-rule-no-insert-dropping-sa \ @textlint-ja/textlint-rule-no-insert-re \ @textlint-ja/textlint-rule-no-synonyms \ sudachi-synonyms-dictionary \ textlint-filter-rule-ja-named-entities \ textlint-plugin-html \ textlint-plugin-org \ textlint-rule-ja-joyo-or-jinmeiyo-kanji \ textlint-rule-ja-kyoiku-kanji \ textlint-rule-ja-no-abusage \ textlint-rule-ja-no-inappropriate-words \ textlint-rule-ja-no-mixed-period \ textlint-rule-ja-no-orthographic-variants \ textlint-rule-ja-no-redundant-expression \ textlint-rule-ja-no-successive-word \ textlint-rule-ja-no-weak-phrase \ textlint-rule-ja-unnatural-alphabet \ textlint-rule-max-kanji-continuous-len \ textlint-rule-max-ten \ textlint-rule-no-double-negative-ja \ 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-hankaku-kana \ textlint-rule-no-mix-dearu-desumasu \ textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet \ textlint-rule-no-nfd \ textlint-rule-no-redundant-expression \ textlint-rule-prefer-tari-tari \ textlint-rule-preset-ja-spacing \ textlint-rule-preset-ja-technical-writing \ textlint-rule-preset-japanese
表記の統一をやるソフトウェアなのにルール名が案外統一されていないのはご愛敬といったところか。
さらに、ホームディレクトリにtextlintの設定ファイルを用意する必要がある。ファイル名は .textlintrc
でもよいのだが、 .textlintrc.json
と拡張子までつけておくとJSONとして扱ってくれるので編集が楽である。
{ "plugins": ["org","html"], "filters": { "ja-named-entities": true }, "rules": { "@textlint-ja/textlint-rule-no-dropping-i": true, "@textlint-ja/textlint-rule-no-filler": true, "@textlint-ja/textlint-rule-no-insert-dropping-sa": true, "@textlint-ja/textlint-rule-no-insert-re": true, "@textlint-ja/no-synonyms": true, "ja-joyo-or-jinmeiyo-kanji": true, "ja-kyoiku-kanji": false, "ja-no-abusage": true, "ja-no-inappropriate-words": true, "ja-no-mixed-period": true, "ja-no-orthographic-variants": true, "ja-no-redundant-expression": true, "ja-no-successive-word": true, "ja-no-weak-phrase": true, "ja-unnatural-alphabet": true, "max-kanji-continuous-len": true, "max-ten": false, "no-double-negative-ja": true, "no-doubled-conjunctive-particle-ga": true, "no-doubled-joshi": true, "no-dropping-the-ra": true, "no-mix-dearu-desumasu": true, "no-mixed-zenkaku-and-hankaku-alphabet": true, "no-nfd": true, "prefer-tari-tari": true, "preset-ja-spacing": true, "preset-ja-technical-writing": false, "preset-japanese": true, "preset-jtf-style": true } }
自分に必要ないルールは false
を指定して無効にすれば良い。このあたりは若干の試行錯誤が必要だろう。
ここまででスタンドアロンのユーティリティとしてはすでに使えるので、
> textlint somejapanese.txt
などと実行してチェックしてみるとよい。
Emacsからの利用
init.el
にはすでに必要な記述が入っているので、textlintをインストールすればすぐ有効になるはずだが、ようは flycheck-define-checker
の部分で、これによりtextlintの出力を受け取ってEmacsのバッファで表示している。
;; checker for textlint (flycheck-define-checker textlint "A linter for prose." :command ("textlint" "--format" "unix" source-inplace) :error-patterns ((warning line-start (file-name) ":" line ":" column ": " (id (one-or-more (not (any " ")))) (message (one-or-more not-newline) (zero-or-more "\n" (any " ") (one-or-more not-newline))) line-end)) :modes (text-mode markdown-mode gfm-mode org-mode web-mode)) )
うまく行けばこんな風に表示される。