🌟

textlintで日本語の校正を行う

2023/04/07に公開

はじめに

Zennに登録し文章を書くことになったので、公開前に日本語の校正をしておきたいと思ったのでtextlintを導入しました。
Zennの記事は、GitHub連携をしているので、以下のフォルダ構成になっています。
(今回扱う記事のファイル名は『65886897cefa1e.md』とします。)

.
├── articles               # Zennの記事を格納するフォルダ
│   └── 65886897cefa1e.md  # Zennに投稿される1つ分の記事
├── node_modules
├── package-lock.json
└── package.json

以下は、このZennの記事を校正するためのtextlintの導入方法です。

作業ディレクトリにpackage.jsonがない場合は、以下のコマンドを実行し、package.jsonを作成しておきます。

# package.jsonがない場合に実施
npm init -y

環境

  • Windows 11 Pro 22H2
  • Visual Studio Code 1.77.0
  • node 16.16.0
  • npm 8.8.0

textlintの導入

textlintのインストール

textlintをインストールします。

npm i -D textlint

校正ルールのパッケージをインストール

以下のページで自分に合ったパッケージをインストールします。

https://github.com/textlint/textlint/wiki/Collection-of-textlint-rule

今回は以下のパッケージをインストールしました。

パッケージ名 概要
textlint-rule-preset-ja-technical-writing 技術文書向けのtextlintルールプリセット
textlint-filter-rule-allowlist 任意の単語を校正の対象外とするフィルタ
textlint-filter-rule-comments textlintを無効化するためのコメントを記述できるようにするためのフィルタ
npm i -D textlint-rule-preset-ja-technical-writing textlint-filter-rule-allowlist textlint-filter-rule-comments

.textlintrcの作成

以下のコマンドを実行し、インストールしたパッケージを適用するための定義ファイル、.textlintrc.jsonを作成します。

npx textlint --init

textlint-filter-rule-commentsプラグインの有効化

マークダウンファイルにコメントを記述することでtextlintを部分的に無効化できるプラグインを有効化します。

.textlintrc.json
{
  "plugins": {},
- "filters": {},
+ "filters": {
+   "comments": true
+ },
  "rules": {
    "preset-ja-technical-writing": true
  }
}

アコーディオンの記法を許可

Zennの独自の記法である、アコーディオンを使った場合でもエラーとならないよう、以下の内容でtextlintrc.jsonを修正します。

アコーディオンとは、このように折り畳みができるUIです。

アコーディオン例

ここはアコーディオンの中身です。

.textlintrc.json
{
  "plugins": {},
  "filters": {
-   "comments": true
+   "comments": true,
+   "allowlist": {
+     "allow": [
+       "/^::::/m"
+     ]
+   }
+ },
  "rules": {
    "preset-ja-technical-writing": true
  }
}

package.jsonの修正

package.jsonに以下のスクリプトを追加します。以下は、Zennの記事であるarticlesディレクトリ以下の.mdファイルを対象に校正する例です。

package.json
{
  "scripts": {
    ...
+    "lint": "textlint articles/**/*.md"
  }
}

校正

正常に動作するか確認するため、記事に以下のような文章を書き、先ほど記述したスクリプトを実行してみます。

65886897cefa1e.md
太郎は、リンゴを食べれる。
npm run lint

以下の出力結果が得られ、ルールに違反していることが確認できました。

  97:5   error  Disallow to use 半角カタカナ: "リンゴ"  ja-technical-writing/no-hankaku-kana
  97:12  error  ら抜き言葉を使用しています。          ja-technical-writing/no-dropping-the-ra

以後は、記事を書いたらnpm run lintを実行して校正内容を確認する運用になります。

補足

ルールの調整

デフォルトのルールで運用しづらい場合は、.txtlintrcにルールを追加することで調整できます。
textlint-rule-preset-ja-technical-writingのルール変更例は以下のページに記載されています。

https://github.com/textlint-ja/textlint-rule-preset-ja-technical-writing#ルール一覧

ルール適用箇所の指定

特定の箇所に対してtextlintのルールを適用しない時は、以下のように<!-- textlint-disable --><!-- textlint-enable -->で挟みます。

65886897cefa1e.md
ここは校正の対象です。
<!-- textlint-disable -->
ここは校正の対象外です。
<!-- textlint-enable -->
ここは校正の対象です。

変更履歴

日付 変更内容
2023/04/07 初版作成
2023/04/09 textlint-filter-rule-allowlistを導入し、Zennのアコーディオン表記に対応する内容に更新
2024/08/07 textlint-filter-rule-commentsの追加及び設定方法を追記

Discussion