日本語にtextlintをかけると便利、という話をチラっと聞いたのでブログに応用すべく導入してみました。
まず、textlint自体がこちら。
そして、日本語技術文書用のルールプリセットがこちらです。
ブログに応用するという観点で考えると、Hugoのルートディレクトリがよさそうです。
% npm install textlint
% npm install textlint-rule-preset-ja-technical-writing
としてtextlint本体とルールをインストールします。-g
でインストールしなかったのはNetlifyで自動ビルドすることを想定したためです。
次のような形でファイルやディレクトリを指定して文書チェックが可能です。
# ファイル指定
% ./node_modules/textlint/bin/textlint.js ./content/posts/xxxxxx.md
# ディレクトリ指定
% ./node_modules/textlint/bin/textlint.js ./content/
試しにある日の投稿をチェックしてみると、
% ./node_modules/textlint/bin/textlint.js ./content/posts/2018-07-21-codepush.md
./content/posts/2018-07-21-codepush.md
18:15 error 弱い表現: "思います" が使われています。 preset-ja-technical-writing/ja-no-weak-phrase
26:16 error 二重否定: 〜ないことはない preset-ja-technical-writing/no-double-negative-ja
34:51 error 弱い表現: "思います" が使われています。 preset-ja-technical-writing/ja-no-weak-phrase
51:26 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
✖ 4 problems (4 errors, 0 warnings)
このようにエラーが出力されます。くせになっている表現なんかがみつかるのでとても良さそう。
全記事一気にチェックしたらどうなるのかなっとやってみたところ、だいぶ長いこと待たされ、こんな結果になりました。timeコマンドで時間を測ってやりましたとも。
% time ./node_modules/textlint/bin/textlint.js ./content
(略)
✖ 2176 problems (2176 errors, 0 warnings)
✓ 128 fixable problems.
Try to run: $ textlint --fix [file]
./node_modules/textlint/bin/textlint.js ./content 249.03s user 45.99s system 112% cpu 4:22.55 total
450近くのファイルを処理するのにトータルで6分ちょいかかり、2000を超える指摘がありました。この時間、この量を考えるとNetlifyでビルド前に確認するというのはあまり現実的ではなさそうです。
そうなると新しく追加する記事はチェックするとか、気が向いたときに少しずつ修正するというのが現実的な解になりそう。
ちなみに先程の出力を見てみると✓ 128 fixable problems.
という表示が目に付きます。これは自動的に修復可能な問題箇所だということで、--fix
オプションをつけると自動的に直してくれるようです。
早速実施してみましょう。
% ./node_modules/textlint/bin/textlint.js ./content --fix
(略)
42:35 ✔ 一つ => 1つ
数量を表現し、数を数えられるものは算用数字を使用します。任意の数に置き換えても通用する語句がこれに該当します。 preset-ja-technical-writing/arabic-kanji-numbers
24:53 ✔ "することができる機能"は冗長な表現です。"することが"を省き簡潔な表現にすると文章が明瞭になります。参考: http://qiita.com/takahi-i/items/a93dc2ff42af6b93f6e0 preset-ja-technical-writing/ja-no-redundant-expression
(略)
✔ Fixed 128 problems
✖ Remaining 348 problems
どうもすることができる
という表現を使ってしまいがちなようです。
textlintで細かい点を改善していきます。最後はこの記事にlintをかけてPush!