はじめに
技術ブログを始めてからこの記事で4記事目になります。これまでの記事は技術ブログ担当者一人で書いてきましたが、他の開発メンバーにもぼちぼち記事を書いてもらおうと考えています。 その際、記事の内容を上長にチェックしてもらうことやブログ担当の私が誤字脱字チェックを行うことを考えていますが、文章の質の担保はどうすれば良いのかということに悩みました。 そこで一定以上の質の担保としてtextlintを使用した文章の校正を試してみることにしました。Neulab内に既に使用している人がいたのも後押しになりました。
参考にした記事
textlintとは
公式には「自然言語のための拡張型lintingツール。textlintは自然言語に対して使用する、ESLintに似たツールです。」とあります。
(原文:The pluggable linting tool for natural language.textlint is similar to ESLint, but it’s for use with natural language.)
拡張型とあるようにtextlint自体にはルール設定はなく、必要な校正ルールを選び設定して使用 します。 ESLintのようにルールに抵触した部分の指摘を行なってくれて、抵触した内容によっては自動修正も可能です。
セットアップ
textlintをローカル環境にセットアップしてみましょう。はじめにRequirementsがNode.js 20+となっているのでNodeのバージョンを20以上に設定しておきます。
textlintと使用するルールをインストールします。ルールの中身に関しては次の項で説明します。
npm install --save-dev\
textlint\
textlint-rule-preset-ja-technical-writing\
textlint-filter-rule-comments\
textlint-filter-rule-allowlist\
textlint-rule-prh
インストールができたらinitのために以下のコマンドを実行します。
npx textlint --init
.textlintrc.json
が作成されます。中身を編集して一部ルールを無効にしたり、prhで参照するファイルを指定します。
{
"plugins": {},
"filters": {
"comments": true,
"allowlist": {}
},
"rules": {
"preset-ja-technical-writing": {
"no-exclamation-question-mark": false
},
"prh": {
"rulePaths": [
"prh/words.yml"
]
}
}
}
以上で使うための設定は完了です。 今回はVSCodeで使用したかったのでtextlintのプラグインをインストールしました。
例えば「今日は動物園でキリンが見れました。」という文章を書いた場合、文章に波線が表示され次のような出力を確認できました。

半角カタカナの使用とら抜き言葉が指摘されています。
今回採用したルール
textlint-rule-preset-ja-technical-writing
こちらはルール自体ではなくプリセットです。必要そうなルールがそろっており、まず入れてみて試すのにちょうど良さそうということで採用しました。 ブログなので感嘆符、疑問符を使用しないをOFFに設定しました。使用してみて他にも変更するポイントがでてくる可能性がありますが、オプションで変更可能ですし併用を推奨されているfilterも合わせれば柔軟に対応できそうです。
textlint-filter-rule-comments
textlint-rule-preset-ja-technical-writingで併用が推奨されているfilterルールの1つです。 設定することで任意の部分をtextlint適用外にすることが可能になります。
使い方は以下のようにコメントで囲むことにより囲んだ部分が適用外になります。
<!-- textlint-disable -->
ここに書いた文章はtextlint適用範囲外になります。
<!-- textlint-enable -->
textlint-filter-rule-allowlist
textlint-rule-preset-ja-technical-writingで併用が推奨されているfilterルールの1つです。 設定することでtextlintに引っかかる表現を許可することが可能になります。
textlint-rule-prh
表記揺れやスペルチェックしてくれるルールです。ymlファイルでルールを設定する必要があります。Neulabではjquery -> jQueryといった表記を正すツールとして使用することにしました。以下のような設定を書いて表記を統一するようにしています。
- expected: jQuery
patterns:
- /jquery/i
specs:
- from: Jquery
to: jQuery
- from: jquery
to: jQuery
- from: JQUERY
to: jQuery
tags:
- noun
- jQuery
おわりに
使用してみた感じはとても良いです。私は「〜と思います」や「〜することができます」など曖昧な表現を使いがちなので、それらをチェックし指摘してくれるのはありがたいです。 textlint-rule-prhは自動修正もしてくれるので便利です。しかし、タイポは指摘してくれないので気をつける必要があります。また、Markdownの書き方ではリンクを設定する文章内などは指摘してくれないようなのでこちらも注意が必要です。しかし文章中の表記を後々修正してもらえるので記事を書いている時は記事の内容に集中できるのはメリットですね。
運用に関してはひとまず私のローカル環境でもらった記事の誤字脱字をチェックするときにtextlintでもチェックを行いフィードバックという形式を考えています。後々はGitHubにレポジトリを用意して各々のローカルでもチェックできるようにしつつ、GitHub Actionsでtextlintを動かしてチェックができれば自動化もできて良さそうです。