🦔

textlintを使ってMD,MDXを校正

2023/07/13に公開

1. はじめに

  • textlint を活用し MD・MDX などのテキストファイルを校正する方法を紹介します。
  • GitHub 連携された Zenn コンテンツを textlint で校正可能になります。

以下が構成です。

説明
textlint とは textlint の説明
校正ルール textlint が提供するルール、ルールプリセットを紹介
ルールプリセットの選定 ルールプリセットがどのようなものがあるかざっくり紹介
動作確認 実際にtextlintを利用し文章の校正を行います
まとめ 最後に一言

作業で利用したコードはこちらにあります。

https://github.com/hayato94087/textlint-sample

2. textlintとは

textlintは、テキスト(難しい言い方をすると自然言語)を校正するための、JavaScript で書かれたオープンソースのツールです。

textlint を利用し校正するメリットは例として以下です。

  • 誤字や脱字を自動で検出できる
  • 適切な日本語を使えているかを自動で検出できる
  • 検出だけでなく、自動で修正してくれる

また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正ができます。

3. 校正ルール

textlint はデフォルトの設定では、ルールを含んでいないため、使用するためには、使用用途に合わせて使用するルールを指定する必要があります。

3.1. 使用可能なルール

textlint で利用可能なルール一覧は 4 種類です。

ルールを選んで textlint を使うこともできますが、より簡単に使うためにはプリセットを利用するのが良いです。ルールプリセット一覧はこちらを参照してください。

3.2. 使用可能なルールプリセット

ルールプリセットとは用途に応じてルールをまとめたものです。ルールをいちいち指定するのは面倒なため、基本的にはルールプリセットをベースとし、カスタマイズしていくのが良いです。

日本語に向けには以下があります(2023/07/09 現在)[1]

4. ルールプリセットの選定

Zenn のブログに利用することを想定しプリセットを選定していきます。ブログの言葉の使い回しとして、砕けた書き方はせず、厳し目にします。

4.1. textlint-rule-preset-ja-technical-writing

技術文書に特化したルールプリセット、preset-ja-technical-writing を利用します。

技術文書向けのtextlintルールプリセットです。 全体的に少し厳しめの設定がデフォルト値となっているため、文章に合わせて設定値を変更する必要があります。

また、連続できる最大の漢字長は6文字まで のように文章全体として例外が必ず出てくるルールもデフォルトで入っています。 ルールによってはallowオプションで例外を規定できるようになっているため、例外を明示しつつ利用することを想定しています。

ルールプリセットで適応されるルール一覧は以下です。

ルールプリセットは以下のように有効化します。

{
  "rules": {
    "preset-ja-technical-writing": true,
  }
}

4.2. textlint-rule-preset-ja-spacing

続いて、スペース周りを処理させるために、textlint-rule-preset-ja-spacingを利用します。

ルールプリセットで適応されるルール一覧は以下です。

それぞれ詳細に見ていきます。

textlint-rule-ja-space-between-half-and-full-width

このルールでは、半角文字と全角文字にスペースを入れるかどうかを指定できます。

OK: これは OK
NG: これはNG

以下のように有効化します。

{
  "rules": {
    "preset-ja-spacing": {
      "ja-space-between-half-and-full-width": {
        "space": "always"
      }
    }
  }
}

textlint-rule-ja-space-around-code

インラインコードの前後が日本語である場合に半角スペースを入れます。

OK: `code` と日本語の間はスペースを空ける
NG: `code`と日本語の間はスペースを空けないのでダメ

以下のように有効化します。

{
  "rules": {
    "preset-ja-spacing": {
      "ja-space-around-code": {
        "before": true,
        "after": true
      }
    }
  }
}

textlint-rule-ja-no-space-between-full-width

全角文字どうしの間にスペースを入れません。

OK: これは大丈夫
NG: これは ダメ

以下のように有効化します。

{
  "rules": {
    "preset-ja-spacing": {
      "ja-no-space-between-full-width": true
    }
  }
}

textlint-rule-ja-nakaguro-or-halfwidth-space-between-katakana

カタカナの単語と単語の間は中黒または半角スペースを用いて区切ります。

OK: アマゾン・ウェブ・サービス
OK: アマゾン ウェブ サービス
NG: アマゾン ウェブ サービス

以下のように有効化します。

{
  "rules": {
    "preset-ja-spacing": {
      "ja-nakaguro-or-halfwidth-space-between-katakana": true
    }
  }
}

textlint-rule-ja-no-space-around-parentheses

「」の外側、内側ともにスペースを入れません。

OK: 「これは大丈夫」
NG: 「 これはダメ 」

以下のように有効化します。

{
  "rules": {
    "preset-ja-spacing": {
      "ja-no-space-around-parentheses": true
    }
  }
}

textlint-rule-ja-space-after-exclamation


文末にエクスクラメーションマーク、俗にいうビックリマーク、!、を使用したときに、文章が続く場合は、直後に全角スペースを挿入します。

OK: びっくり! これは大丈夫。
NG: びっくり! これはダメ


「!」は技術文書で許容しないので不要とします。

textlint-rule-ja-space-after-question


文末にクエスチョンマーク、?、を使用し、別の文章が続く場合は全角スペースを挿入します。

OK: 驚きの速さ!? これが新製品のキャッチコピーでした?
OK: どう操作したらよいのか?というユーザーの疑問に答えます。

NG: 驚きの速さ!? これが新製品のキャッチコピーでした?
NG: どう操作したらよいのか? というユーザーの疑問に答えます。


「?」は技術文書で許容しないので不要とします。

4.3. textlint-filter-rule-comments

コメントアウトすることで対象範囲を textlint 対象外とできます。

<!-- textlint-disable -->

this is ok

<!-- textlint-enable -->

以下のように有効化します。

{
  "filters": {
    "comments": true
  }
}

5. 動作確認

このセクションでは、実際に textlint を利用し文章を校正します。

5.1. 環境構築

実際に Zenn の GitHub 環境を作りながら動作確認をしていきます。

$ mkdir zenn-content-textlint-sample
$ cd zenn-content-textlint-sample
$ pnpm init
$ pnpm add zenn-cli
$ npx zenn init

以下が現時点の package.json です。

package.json
{
  "name": "zenn-content-textlint-sample",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "zenn-cli": "^0.1.144"
  }
}

Git 環境を構築します。ついでにコミットしておきます。

$ git init
$ git checkout -b main
$ git add .
$ git commit -m "Zenn GitHub連携プロジェクト作成"

5.2. GitHub連携

自身の GitHub リポジトリを Zenn と連携する方法は以下の記事を参照ください。

https://zenn.dev/zenn/articles/connect-to-github

5.3. textlintをインストール

$ pnpm add textlint -D

5.4. プリセットをインストール

ルールプリセットをインストールします。

  • textlint-rule-preset-ja-technical-writing
  • textlint-rule-preset-ja-spacing
  • textlint-filter-rule-comments
$ pnpm add textlint-rule-preset-ja-technical-writing
$ pnpm add textlint-rule-preset-ja-spacing
$ pnpm add textlint-filter-rule-comments

5.5. 設定ファイルを作成

設定ファイルを JSON 形式で記述します。

$ touch .textlintrc
.textlintrc
{
  "rules": {
    "preset-ja-technical-writing": true,
    "preset-ja-spacing": {
      "ja-nakaguro-or-halfwidth-space-between-katakana": true,
      "ja-no-space-around-parentheses": true,
      "ja-no-space-between-full-width": true,
      "ja-space-between-half-and-full-width": {
        "space": "always"
      },
      "ja-space-around-code": {
        "before": true,
        "after": true
      }
    }
  },
  "filters": {
    "comments": true
  }
}

コミットします。

コミット処理
$ git add .
$ git commit -m "linttextをインストール、ルールを設定"

5.6. スクリプトを作成

2 つのスクリプトと作成します。

スクリプト 説明
lint:text 校正し、問題箇所をログとして出力
lint:text:fix 校正し、可能な限り修正
package.json
{
  "name": "zenn-content-textlint-sample",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
+   "lint:text": "textlint \"./{articles,books}/*.md\" -f pretty-error",
+   "lint:text:fix": "textlint \"./{articles,books}/*.md\" --fix"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "textlint-filter-rule-comments": "^1.2.2",
    "textlint-rule-preset-ja-spacing": "^2.3.0",
    "textlint-rule-preset-ja-technical-writing": "^7.0.0",
    "zenn-cli": "^0.1.144"
  },
  "devDependencies": {
    "textlint": "^13.3.3"
  }
}

コミットします。

コミット処理
$ git add .
$ git commit -m "スクリプトを作成、ルールを設定"

5.7. 記事を作成

Zenn CLI で記事を作成します。

コマンド
$ npx zenn new:article

created: articles/d3ffb5c9d0c156.md

記事の中身を記載します。

articles/d3ffb5c9d0c156.md
---
title: "textlintを使ってMD,MDXの校正を自動化"
emoji: "🦔"
type: "tech" # tech: 技術記事 / idea: アイデア
topics: ["zenn", "textlint", "GitHub", "Markdown"]
published: false
---

# 1. はじめに

Zennのコンテンツをtextlintで校正しつつGitHubで管理する方法を記載します。

# 2. textlintとは

[textlint](https://textlint.github.io/)は、テキスト(難しい言い方をすると自然言語)を校正するための、JavaScript で書かれたオープンソースのツールです!

textlintを利用し校正するメリットは例として以下です。
- 誤字や脱字を自動で検出できる
- 適切な日本語を使えているかを自動で検出できる
- 検出だけでなく、自動で修正してくれる

また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!

準備はいいですか?

コミットします。

コミット処理
$ git add .
$ git commit -m "記事作成"

5.8. 校正し問題箇所をログ出力

校正し問題箇所をログ出力します。先程作成済みのコマンドを利用します。

コマンド
$ pnpm lint:text

以下が実行結果です。

実行結果
✓ ja-spacing/ja-space-between-half-and-full-width: 原則として、全角文字と半角文字の間にスペースを入れます。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:11:4
           v
    10. 
    11. Zennのコンテンツをtextlintで校正しつつGitHubで管理する方法を記載します。
    12. 
           ^

✓ ja-spacing/ja-space-between-half-and-full-width: 原則として、全角文字と半角文字の間にスペースを入れます。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:11:11
                         v
    10. 
    11. Zennのコンテンツをtextlintで校正しつつGitHubで管理する方法を記載します。
    12. 
                         ^

✓ ja-spacing/ja-space-between-half-and-full-width: 原則として、全角文字と半角文字の間にスペースを入れます。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:11:19
                                 v
    10. 
    11. Zennのコンテンツをtextlintで校正しつつGitHubで管理する方法を記載します。
    12. 
                                 ^

✓ ja-spacing/ja-space-between-half-and-full-width: 原則として、全角文字と半角文字の間にスペースを入れます。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:11:25
                                             v
    10. 
    11. Zennのコンテンツをtextlintで校正しつつGitHubで管理する方法を記載します。
    12. 
                                             ^

✓ ja-spacing/ja-space-between-half-and-full-width: 原則として、全角文字と半角文字の間にスペースを入れます。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:11:31
                                                   v
    10. 
    11. Zennのコンテンツをtextlintで校正しつつGitHubで管理する方法を記載します。
    12. 
                                                   ^

ja-technical-writing/no-exclamation-question-mark: Disallow to use "!".
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:15:100
                                                                                                                                                             v
    14. 
    15. [textlint](https://textlint.github.io/)は、テキスト(難しい言い方をすると自然言語)を校正するための、JavaScript で書かれたオープンソースのツールです!
    16. 
                                                                                                                                                             ^

✓ ja-spacing/ja-space-between-half-and-full-width: 原則として、全角文字と半角文字の間にスペースを入れます。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:17:8
               v
    16. 
    17. textlintを利用し校正するメリットは例として以下です。
    18. - 誤字や脱字を自動で検出できる
               ^

ja-technical-writing/ja-no-redundant-expression: 【dict5】 "校正を行う"は冗長な表現です。"校正する"など簡潔な表現にすると文章が明瞭になります。
解説: https://github.com/textlint-ja/textlint-rule-ja-no-redundant-expression#dict5
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:22:35
                                                                             v
    21. 
    22. また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!
    23. 
                                                                             ^

ja-technical-writing/ja-no-weak-phrase: 弱い表現: "思います" が使われています。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:22:47
                                                                                                     v
    21. 
    22. また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!
    23. 
                                                                                                     ^

ja-technical-writing/no-exclamation-question-mark: Disallow to use "!".
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:22:51
                                                                                                             v
    21. 
    22. また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!
    23. 
                                                                                                             ^

ja-technical-writing/no-exclamation-question-mark: Disallow to use "?".
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:24:9
                         v
    23. 
    24. 準備はいいですか?
    25. 
                         ^

✖ 11 problems (11 errors, 0 warnings)6 fixable problems.
Try to run: $ textlint --fix [file]

それぞれの結果について確認します。

space に関連するエラーが 6 個出ています。いずれも全角文字と半角文字の間にスペースが入っていません。このエラーは自動で修正できます。自動修正については後ほど説明いたします。

実行結果
✓ ja-spacing/ja-space-between-half-and-full-width: 原則として、全角文字と半角文字の間にスペースを入れます。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:11:4
           v
    10. 
    11. Zennのコンテンツをtextlintで校正しつつGitHubで管理する方法を記載します。
    12. 
           ^

✓ ja-spacing/ja-space-between-half-and-full-width: 原則として、全角文字と半角文字の間にスペースを入れます。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:11:11
                         v
    10. 
    11. Zennのコンテンツをtextlintで校正しつつGitHubで管理する方法を記載します。
    12. 
                         ^

✓ ja-spacing/ja-space-between-half-and-full-width: 原則として、全角文字と半角文字の間にスペースを入れます。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:11:19
                                 v
    10. 
    11. Zennのコンテンツをtextlintで校正しつつGitHubで管理する方法を記載します。
    12. 
                                 ^

✓ ja-spacing/ja-space-between-half-and-full-width: 原則として、全角文字と半角文字の間にスペースを入れます。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:11:25
                                             v
    10. 
    11. Zennのコンテンツをtextlintで校正しつつGitHubで管理する方法を記載します。
    12. 
                                             ^

✓ ja-spacing/ja-space-between-half-and-full-width: 原則として、全角文字と半角文字の間にスペースを入れます。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:11:31
                                                   v
    10. 
    11. Zennのコンテンツをtextlintで校正しつつGitHubで管理する方法を記載します。
    12. 
                                                   ^

✓ ja-spacing/ja-space-between-half-and-full-width: 原則として、全角文字と半角文字の間にスペースを入れます。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:17:8
               v
    16. 
    17. textlintを利用し校正するメリットは例として以下です。
    18. - 誤字や脱字を自動で検出できる
               ^

厳し目のルールを使っているため、ビックリマーク、クエッションマークのエラーが3つあります。これは自動修正できないので正しい文章に書き換えが必要です。

ja-technical-writing/no-exclamation-question-mark: Disallow to use "!".
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:15:100
                                                                                                                                                             v
    14. 
    15. [textlint](https://textlint.github.io/)は、テキスト(難しい言い方をすると自然言語)を校正するための、JavaScript で書かれたオープンソースのツールです!
    16. 
                                                                                                                                                             ^

ja-technical-writing/no-exclamation-question-mark: Disallow to use "!".
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:22:51
                                                                                                             v
    21. 
    22. また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!
    23. 
                                                                                                             ^

ja-technical-writing/no-exclamation-question-mark: Disallow to use "?".
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:24:9
                         v
    23. 
    24. 準備はいいですか?
    25. 
                         ^
                         


続けてですが、ついつい冗長な書き方を癖でしてしまい、ダメだよと怒られてしまいます。「校正を行う」ではなく、「校正する」などのほうが適切でしょう。

ja-technical-writing/ja-no-redundant-expression: 【dict5】 "校正を行う"は冗長な表現です。"校正する"など簡潔な表現にすると文章が明瞭になります。
解説: https://github.com/textlint-ja/textlint-rule-ja-no-redundant-expression#dict5
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:22:35
                                                                             v
    21. 
    22. また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!
    23. 
                                                                             ^


最後に、「思います」という言葉をよく使ってしまうのですが、こういった言葉も弱い表現として使うことが望ましくないと判断されてしまいます。なので「できると思います」ではなく、「できます」がよいでしょう。

ja-technical-writing/ja-no-weak-phrase: 弱い表現: "思います" が使われています。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:22:47
                                                                                                     v
    21. 
    22. また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!
    23. 
                                                                                                     ^

5.8. 可能な限り校正問題を自動修正

先程作成済みのコマンドを利用し可能な限り自動的に校正エラーを修正します。

$ pnpm lint:text:fix

/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md
  11:4   ✔   原則として、全角文字と半角文字の間にスペースを入れます。  ja-spacing/ja-space-between-half-and-full-width
  11:11  ✔   原則として、全角文字と半角文字の間にスペースを入れます。  ja-spacing/ja-space-between-half-and-full-width
  11:19  ✔   原則として、全角文字と半角文字の間にスペースを入れます。  ja-spacing/ja-space-between-half-and-full-width
  11:25  ✔   原則として、全角文字と半角文字の間にスペースを入れます。  ja-spacing/ja-space-between-half-and-full-width
  11:31  ✔   原則として、全角文字と半角文字の間にスペースを入れます。  ja-spacing/ja-space-between-half-and-full-width
  17:8   ✔   原則として、全角文字と半角文字の間にスペースを入れます。  ja-spacing/ja-space-between-half-and-full-width

✔ Fixed 6 problems
✖ Remaining 1 problem

全角文字と半角文字の間にスペースが入っていないエラーを自動修正してくれました。

コミットします。


:::details

$ git add .
$ git commit -m "textlintで自動修正"

:::

5.9. 手動修正

それでは残りは手動で修正します。

あらためて、コマンドを実行します。

$ pnpm lint:text

ja-technical-writing/no-exclamation-question-mark: Disallow to use "!".
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:15:100
                                                                                                                                                             v
    14. 
    15. [textlint](https://textlint.github.io/)は、テキスト(難しい言い方をすると自然言語)を校正するための、JavaScript で書かれたオープンソースのツールです!
    16. 
                                                                                                                                                             ^

ja-technical-writing/ja-no-redundant-expression: 【dict5】 "校正を行う"は冗長な表現です。"校正する"など簡潔な表現にすると文章が明瞭になります。
解説: https://github.com/textlint-ja/textlint-rule-ja-no-redundant-expression#dict5
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:22:35
                                                                             v
    21. 
    22. また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!
    23. 
                                                                             ^

ja-technical-writing/ja-no-weak-phrase: 弱い表現: "思います" が使われています。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:22:47
                                                                                                     v
    21. 
    22. また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!
    23. 
                                                                                                     ^

ja-technical-writing/no-exclamation-question-mark: Disallow to use "!".
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:22:51
                                                                                                             v
    21. 
    22. また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!
    23. 
                                                                                                             ^

ja-technical-writing/no-exclamation-question-mark: Disallow to use "?".
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:24:9
                         v
    23. 
    24. 準備はいいですか?
    25. 
                         ^

✖ 5 problems (5 errors, 0 warnings)


!を使うのをやめます。

ja-technical-writing/no-exclamation-question-mark: Disallow to use "!".
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:15:100
                                                                                                                                                             v
    14. 
    15. [textlint](https://textlint.github.io/)は、テキスト(難しい言い方をすると自然言語)を校正するための、JavaScript で書かれたオープンソースのツールです!
    16. 
                                                                                                                                                             ^


「校正を行う」は冗長なので、「校正する」にします。

ja-technical-writing/ja-no-redundant-expression: 【dict5】 "校正を行う"は冗長な表現です。"校正する"など簡潔な表現にすると文章が明瞭になります。
解説: https://github.com/textlint-ja/textlint-rule-ja-no-redundant-expression#dict5
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:22:35
                                                                             v
    21. 
    22. また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!
    23. 
                                                                             ^


「思います」は使わないように変えます。

ja-technical-writing/ja-no-weak-phrase: 弱い表現: "思います" が使われています。
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:22:47
                                                                                                     v
    21. 
    22. また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!
    23. 
                                                                                                     ^


!を使うのをやめます。

ja-technical-writing/no-exclamation-question-mark: Disallow to use "!".
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:22:51
                                                                                                             v
    21. 
    22. また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正を行うことができると思います!
    23. 
                                                                                                             ^


?は使うのをやめます。

ja-technical-writing/no-exclamation-question-mark: Disallow to use "?".
/Users/hayato94087/Private/zenn-content-textlint-sample/articles/d3ffb5c9d0c156.md:24:9
                         v
    23. 
    24. 準備はいいですか?
    25. 
                         ^

修正後のテキストです。

articles/d3ffb5c9d0c156.md
---
title: "textlintを使ってMD,MDXの校正を自動化"
emoji: "🦔"
type: "tech" # tech: 技術記事 / idea: アイデア
topics: ["zenn", "textlint", "GitHub", "Markdown"]
published: false
---

# 1. はじめに

Zenn のコンテンツを textlint で校正しつつ GitHub で管理する方法を記載します。

# 2. textlintとは

[textlint](https://textlint.github.io/)は、テキスト(難しい言い方をすると自然言語)を校正するための、JavaScript で書かれたオープンソースのツールです。

textlint を利用し校正するメリットは例として以下です。
- 誤字や脱字を自動で検出できる
- 適切な日本語を使えているかを自動で検出できる
- 検出だけでなく、自動で修正してくれる

また、校正ルールを組み合わせたり、カスタマイズすることで、より高度な校正ができます。

それでは実際に textlint を使ってみましょう。

検証します。何も出ませんでした。これで問題ありません。

$ pnpm lint:text

コミットします。


:::details

$ git add .
$ git commit -m "手動修正完了"

:::

6. まとめ

  • Zenn のコンテンツを textlint で校正しつつ GitHub で管理する方法を記載しました。
  • 個人的には、textlint を利用することで記事の質を担保できるので、積極的に使っています。

https://github.com/hayato94087/textlint-sample

7. 参考

https://efcl.info/2015/09/10/introduce-textlint/
https://efcl.info/2015/12/30/textlint-preset/

脚注
  1. https://github.com/textlint/textlint/wiki/Collection-of-textlint-rule#rule-presets-japanese ↩︎

Discussion