✍️

textlintでZenn記事の品質を向上させる

に公開

Zenn記事作成時の表記揺れや日本語の誤りを自動チェックするため、textlintを導入しました。導入方法とカスタマイズ例を紹介します。

textlintとは

テキストの校正ツールで、設定したルールに従って表記揺れや誤った日本語を自動チェックできます。

公式サイト: https://textlint.github.io/

技術書向けルールセット: https://github.com/textlint-ja/textlint-rule-preset-ja-technical-writing

導入手順

# パッケージのインストール
npm install -D textlint textlint-rule-preset-ja-technical-writing

# 設定ファイルの作成
npx textlint --init

使用例

チェック実行

npx textlint ./example.md
<!-- example.md -->
私は彼は好きだ

エラー出力:

一文に二回以上利用されている助詞 "は" がみつかりました。
文末が"。"で終わっていません。

ルールのカスタマイズ

技術書向けルールセットをプロジェクトに合わせてカスタマイズできます。

// .textlintrc
{
  "rules": {
    "preset-ja-technical-writing": {
      "ja-no-mixed-period": {
        "allowPeriodMarks": [":"]
      },
      "no-exclamation-question-mark": {
        "allowHalfWidthExclamation": true
      }
    }
  }
}

カスタマイズの理由

ja-no-mixed-period:

  • 文末の句点(。)の統一をチェック
  • Zennの:::messageタグでコロン(:)を使用するため許可
:::message
メッセージ内容
:::  ← コロンが必要

no-exclamation-question-mark:

  • 感嘆符・疑問符の統一をチェック
  • GraphQLの型定義で!?を使用するため半角を許可
type User {
  id: ID!
  name: String!
  age: Int?
}

カスタムルールの作成

独自の表記ルールを定義できます。

# rules.yml
version: 1
rules:
  - expected: 筆者は
    pattern: 私は
  - expected: 筆者が
    pattern: 私が
  - expected: はじめに
    pattern: 初めに
  - expected: さいごに
    pattern: 最後に
// .textlintrc
{
  "rules": {
    "prh": {
      "rulePaths": ["./rules.yml"]
    },
    "preset-ja-technical-writing": {
      // ...existing config...
    }
  }
}

Huskyで自動チェック

コミット前に自動チェックを実行します。

# pre-commit
npx lint-staged
// package.json
{
  "lint-staged": {
    "*.md": [
      "npx textlint --fix ./articles/*.md"
    ]
  }
}

導入方法:

まとめ

textlintを導入することで、以下のメリットがあります。

  • 表記揺れの自動検出・修正
  • 日本語の誤用チェック
  • プロジェクト全体での表記統一
  • コードレビューの負担軽減

技術記事を書く際は、textlintの導入を検討してみてください。

Discussion