俺俺textlintルールを検討してみた

https://github.com/textlint/textlint/wiki/Collection-of-textlint-rule
から必要そうなものをピックアップして`.textlintrc`を作成

◯：必要とする
△：プリセットに含まれるので不要とする
－：不要とする

# 整理

## Rules: Global

| 名称 | 用途 | 要不要 |
|:--|:--|:-:|
| textlint-rule-no-todo  | TODOをチェックする  | －  |
| textlint-rule-no-start-duplicated-conjunction  |  このルールは、重複した接続詞で始まる文をチェックします | ◯ |
| textlint-rule-prh  | 表記ゆれをチェックする  | － |
| textlint-rule-max-number-of-lines | 行数をチェックする | － |
| textlint-rule-max-comma | 文中の最大コンマ（、）数をチェックする（textlint-rule-preset-ja-technical-writingに含まれる） | － |
| textlint-rule-no-exclamation-question-mark | 感嘆符と疑問符をチェックする（textlint-rule-preset-ja-technical-writingに含まれる）| － |
| textlint-rule-ng-word | 指定したNGワードをチェックする | － |
| textlint-rule-sjsj | SJSJ（Simplified JavaScript Jargon）を使用したスペルチェック | － |
| textlint-rule-no-dead-link | リンク先チェック | － |
| textlint-rule-editorconfig | すべてのファイルがEditorConfigの構成に従っていることをチェック | － |
| textlint-rule-report-node-types | デバッグのためにノードのタイプごとにエラーを報告する | － |
| textlint-rule-no-empty-section | 空のセクションをチェック | － |
| textlint-rule-date-weekday-mismatch | 日付と曜日の不一致をチェックする | ◯ |
| textlint-rule-terminology | 英語のスペルチェック | － |
| textlint-rule-period-in-list-item | リストの末尾ピリオドをチェック | － |
| textlint-rule-no-nfd | UTF8-MAC 濁点として知られるPDFからコピペなどで起きる濁点を見つけて修正するルール（textlint-rule-preset-ja-technical-writing、textlint-rule-preset-japaneseに含まれる） | △ |
| @textlint-rule/textlint-rule-no-invalid-control-character | 無効な制御文字をチェック（textlint-rule-preset-ja-technical-writing、textlint-rule-preset-japaneseに含まれる） | △ |
| textlint-rule-no-surrogate-pair | Unicodeのサロゲートペアの文字が使われていないかチェック | ◯ |
| textlint-rule-languagetool | node-languagetoolを使用してチェック | － |
| @textlint-rule/textlint-rule-require-header-id | {#id}をチェック | － |
| @textlint-rule/textlint-rule-no-unmatched-pair | （や「などのペアをチェック（textlint-rule-preset-ja-technical-writingに含まれる） | △ |
| textlint-rule-footnote-order | Markdownで脚注識別子（[^ 1]）を並べ替える | － |
| textlint-rule-max-doc-width | 行の長さチェック | － |
| textlint-rule-no-zero-width-spaces | ゼロ幅スペースをチェック（textlint-rule-preset-japaneseに含まれる） | △ |


## Rules: 日本語

| 名称 | 用途 | 要不要 |
|:--|:--|:-:|
| textlint-rule-max-ten  | 一文に利用できる、の数をチェックするルール（textlint-rule-preset-ja-technical-writing、textlint-rule-preset-japaneseに含まれる）  | △ |
| textlint-rule-max-kanji-continuous-len  |  漢字が連続できる最大文字数を制限するルール（textlint-rule-preset-ja-technical-writingに含まれる） | － |
| textlint-rule-spellcheck-tech-word | JavaScript関連の用語を辞書を元にチェックする日本語向けのルール | － |
| textlint-rule-web-plus-db | inao/WEB+DB PRESS用語統一ルールを元に表記揺れをチェックするルール。非推奨 textlint-rule-prh を使うようにとのこと | －  |
| textlint-rule-no-mix-dearu-desumasu | 「ですます」調と「である」調の混在をチェックするルール（textlint-rule-preset-ja-technical-writing、textlint-rule-preset-japaneseに含まれる） | △ |
| textlint-rule-no-doubled-joshi | 文中に同じ助詞が複数出てくるのをチェックするtextlintルール（textlint-rule-preset-ja-technical-writing、textlint-rule-preset-japaneseに含まれる） | △ |
| textlint-rule-no-double-negative-ja | 二重否定をチェックするルール（textlint-rule-preset-ja-technical-writing、textlint-rule-preset-ja-spacing、textlint-rule-preset-japaneseに含まれる） | △ |
| textlint-rule-no-hankaku-kana | 半角カタカナの使用を禁止するルール（textlint-rule-preset-ja-technical-writingに含まれる） | － |
| textlint-rule-ja-no-weak-phrase | "～かもしれない" のような弱い表現の利用を禁止するルール（textlint-rule-preset-ja-technical-writingに含まれる） | － |
| textlint-rule-ja-no-redundant-expression | 冗長な表現を禁止するルール（textlint-rule-preset-ja-technical-writingに含まれる） | △ |
| textlint-rule-ja-no-abusage | よくある日本語の誤用をチェックするルール（textlint-rule-preset-ja-technical-writingに含まれる） | △ |
| textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet | 全角と半角アルファベットの混在をチェックするtextlintルール | ◯ |
| textlint-rule-sentence-length | 文の最大長を制限するtextlintルール（textlint-rule-preset-ja-technical-writing、textlint-rule-preset-japaneseに含まれる） | △ |
| textlint-rule-first-sentence-length | セクションの最初の文の最大長を制限するtextlintルール | － |
| textlint-rule-no-dropping-the-ra | ら抜き言葉か使われてないかをチェックするルール（textlint-rule-preset-ja-technical-writing、textlint-rule-preset-ja-spacing、textlint-rule-preset-japaneseに含まれる） | △ |
| textlint-rule-no-doubled-conjunctive-particle-ga | 逆接の接続助詞「が」は、特に否定の意味ではなくても安易に使われてしまいがちです。これが同一文中に複数回出現していないかどうかをチェック（textlint-rule-preset-ja-technical-writing、textlint-rule-preset-japaneseに含まれる） | △ |
| textlint-rule-no-doubled-conjunction | 同じ接続詞が連続して出現していないかどうかをチェック（textlint-rule-preset-ja-technical-writing、textlint-rule-preset-japaneseに含まれる） | △ |
| textlint-rule-ja-no-mixed-period | 文末の句点記号(。)の統一 と 抜けをチェック（textlint-rule-preset-ja-technical-writingに含まれる） | △ |
| textlint-rule-ja-yahoo-kousei | Yahooの校正APIを叩くtextlintのルール | － |
| textlint-rule-max-appearence-count-of-words | 段落内の単語の出現回数をチェック | － |
| textlint-rule-max-length-of-title | タイトルの文字数をチェック | － |
| textlint-rule-incremental-headers | #(h1)などの使い方をチェック | － |
| textlint-rule-ja-hiragana-keishikimeishi | 漢字よりもひらがなで表記したほうが読みやすい形式名詞を指摘 | ◯ |
| textlint-rule-ja-hiragana-fukushi | 漢字よりもひらがなで表記したほうが読みやすい副詞を指摘 | ◯ |
| textlint-rule-ja-hiragana-hojodoushi | 漢字よりもひらがなで表記したほうが読みやすい補助動詞を指摘 | ◯ |
| textlint-rule-ja-unnatural-alphabet | IMEの入力ミスによるtypoなど不自然なアルファベットを指摘（textlint-rule-preset-ja-technical-writingに含まれる） | △ |
| @textlint-ja/textlint-rule-no-insert-dropping-sa | サ抜き、サ入れ表現の誤用を指摘 | ◯ |
| textlint-rule-prefer-tari-tari | 例示・並列・対表現の「〜たり〜たりする」をチェック | ◯ |
| @textlint-ja/textlint-rule-no-synonyms | リポジトリとレポジトリといった同義語の表記ゆれをチェック | ◯ |
| textlint-rule-ja-no-orthographic-variants | 表記ゆれをチェック | ◯ |
| textlint-rule-general-novel-style-ja | 日本の小説における一般的な作法に従うための textlint ルール | － |
| textlint-rule-a3rt-proofreading | A3RT Proofreading API を実行した結果を指摘 | － |
| textlint-rule-use-si-units | 国際単位系（SI）の単位以外の使用を禁止 | ◯ |
| textlint-rule-joyo-kanji | 常用漢字を使っているかチェック | － |
| textlint-rule-ja-joyo-or-jinmeiyo-kanji | 常用漢字または人名用漢字であることをチェック | － |
| textlint-rule-ja-kyoiku-kanji | 教育漢字であることをチェック | － |
| textlint-rule-jis-charset | 文章の中でJIS X 0213:2004（JIS2004）範囲外の文字が使われていると検出 | ◯ |
| textlint-rule-no-hoso-kinshi-yogo | 放送禁止用語をチェックする | ◯ |
| textlint-rule-ja-no-inappropriate-words | 不適切表現をチェック | ◯ |

## Rule Presets: Japanese

| 名称 | 用途 | 要不要 |
|:--|:--|:-:|
| textlint-rule-preset-ja-technical-writing | 技術文書向けのtextlintルールプリセット | ◯ |
| textlint-rule-preset-jtf-style | JTF日本語標準スタイルガイド（翻訳用）に従ったルールでチェックできるプリセット（textlint-rule-preset-ja-technical-writingに含まれる） | △ |
| textlint-rule-preset-ja-spacing | 半角/全角スペースについてのルールプリセット | ◯ |
| textlint-rule-preset-japanese | 入門向け日本語のプリセット | ◯ |
| textlint-rule-preset-ja-engineering-paper | 日本語の工学系論文のためのtextlintルールプリセット | － |

# インストール

- textlint-rule-preset-ja-technical-writingだけでも十分な気もする
- textlint-rule-date-weekday-mismatchが使っているchrono-node@1.4.8が脆弱性ありになってしまうので除外

```sh
$ npm init --yes
$ npm install textlint-rule-preset-ja-technical-writing \
              textlint-rule-preset-ja-spacing \
              textlint-rule-no-start-duplicated-conjunction \
              textlint-rule-no-surrogate-pair \
              textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet \
              textlint-rule-ja-hiragana-fukushi \
              textlint-rule-ja-hiragana-hojodoushi \
              @textlint-ja/textlint-rule-no-insert-dropping-sa \
              textlint-rule-prefer-tari-tari \
              @textlint-ja/textlint-rule-no-synonyms sudachi-synonyms-dictionary \
              textlint-rule-ja-no-orthographic-variants \
              textlint-rule-use-si-units \
              textlint-rule-jis-charset \
              textlint-rule-no-hoso-kinshi-yogo \
              textlint-rule-ja-no-inappropriate-words
```

# .textlintrc

```json:.textlintrc
{
    "rules": {
        "preset-ja-technical-writing": {
            "ja-no-mixed-period": false, // 「。」のつけ忘れのチェックを除外
        },
        "preset-ja-spacing": true,
        "no-start-duplicated-conjunction": {
            "interval" : 2 // interval of sentences
        },
        "no-surrogate-pair": true,
        "no-mixed-zenkaku-and-hankaku-alphabet": true,
        "ja-hiragana-fukushi": true,
        "ja-hiragana-hojodoushi": true,
        "@textlint-ja/textlint-rule-no-insert-dropping-sa": true,
        "prefer-tari-tari": true,
        "@textlint-ja/no-synonyms": true,
        "ja-no-orthographic-variants": true,
        "use-si-units": true,
        "jis-charset": true,
        "no-hoso-kinshi-yogo": true,
        "ja-no-inappropriate-words": true,
    }
}
```

## 参考情報

- [技術文書を書くためのtextlint校正ルールセット \| Web Scratch](https://efcl.info/2016/07/13/textlint-rule-preset-ja-technical-writing/)

- [textlint \+ prhで文章を校正する方法 \- Qiita](https://qiita.com/munieru_jp/items/83c2c44fcadb177d2806)
>ここでは、textlint-rule-prhに同梱されているWEB+DB_PRESS.ymlをprhで使用する辞書ファイルとして指定していますが、他の辞書ファイルを使用することもできます。

- [textlint \+ prhで表記ゆれを検出する \| Web Scratch](https://efcl.info/2015/09/14/textlint-rule-prh/)

- [Webサイト の HTML を textlint でチェックする \| Monotalk](https://www.monotalk.xyz/blog/web%E3%82%B5%E3%82%A4%E3%83%88-%E3%81%AE-html-%E3%82%92-textlint-%E3%81%A7%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B/)