✍️
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"
]
}
}
導入方法:
- Husky: https://typicode.github.io/husky/
- lint-staged: https://github.com/okonet/lint-staged
まとめ
textlintを導入することで、以下のメリットがあります。
- 表記揺れの自動検出・修正
- 日本語の誤用チェック
- プロジェクト全体での表記統一
- コードレビューの負担軽減
技術記事を書く際は、textlintの導入を検討してみてください。
Discussion