textlint


## textlint
[textlint](https://textlint.github.io/)
[textlint-ja](https://github.com/textlint-ja/)

自然言語対象のlinter

### できること
- 校正ルールの自作
- 校正ルールを組み合わせて独自のルールセット作成

### 対応するファイル形式
- テキストファイル(.txt)
- Markdownファイル(.md)

## 準備

### npmの初期化

```:terminal
npm init -y
```

### textlintをインストール
```:terminal
npm install textlint
```

## ルールの導入

### ルール「ら抜き言葉を検出」をインストール
```:terminal
npm install textlint-rule-no-dropping-the-ra
```

### 動作確認用ファイル作成
```:test.txt
来れる
後悔する度に
```


### textlintを実行
```:terminal
npx textlint --rule textlint-rule-no-dropping-the-ra test.txt
　
//結果 「ら抜き言葉の使用」を検出
 1:2  error    ら抜き言葉を使用しています。                            no-dropping-the-ra
```
　



### ルール「ひらがなで表記したほうが読みやすい形式名詞を検出」をインストール
```:terminal
npm install textlint-rule-ja-hiragana-keishikimeishi
```

### textlintを実行
```:terminal
npx textlint --rule textlint-rule-ja-hiragana-keishikimeishi test.txt

//結果 「ひらがなで表記したほうが読みやすい形式名詞」を検出
 2:5  ✓ error  ひらがなで表記したほうが読みやすい形式名詞: 度 => たび  ja-hiragana-keishikimeishi
```

※検出時に✔ アイコンが付いてるものは自動修正に対応

### 自動修正
```:terminal
npx textlint --fix --rule textlint-rule-ja-hiragana-keishikimeishi test.txt

//結果
 2:5  ✔   ひらがなで表記したほうが読みやすい形式名詞: 度 => たび  ja-hiragana-keishikimeishi
```

### 複数ルールを同時に使う場合

```:terminal
npx textlint --rule textlint-rule-no-dropping-the-ra --rule textlint-rule-ja-hiragana-keishikimeishi test.txt

//結果
 1:2  error    ら抜き言葉を使用しています。                            no-dropping-the-ra
 2:5  ✓ error  ひらがなで表記したほうが読みやすい形式名詞: 度 => たび  ja-hiragana-keishikimeishi
``` 


### .textlintrcで複数ルールをまとめて実行
設定ファイル.textlintrcで複数のルールをまとめられる


#### .textlintrc.jsonファイルの作成
```:terminal
npx textlint --init
```

.textlintrc.jsonは、これまでにインストールしているルールが含まれた状態で生成される
ルールを追加削除した後に.textlintrc.jsonを削除して再作成すると、現在インストールされているルールが含まれた状態で作成される
```:.textlintrc.json
{
  "filters": {},
  "rules": {
    "ja-hiragana-keishikimeishi": true,
    "no-dropping-the-ra": true
  }
}
```

.textlintrcは、JSON(.textlintrc.json)、YAML(.textlintrc.yml、.textlintrc.yaml)、JavaScript(.textlintrc.js)として書くことができる
インストールされたルールをrulesフィールドに追加していく


#### textlintを実行する
設定した.textlintrcファイルは自動で読み込まれるので、`--rule ルール名`は不要
※test.txtの「たび」は「度」に戻してから実行しています
```:terminal
npx textlint test.txt
　
//結果
 1:2  error    ら抜き言葉を使用しています。                            no-dropping-the-ra
 2:5  ✓ error  ひらがなで表記したほうが読みやすい形式名詞: 度 => たび  ja-hiragana-keishikimeishi  
```

#### textlintを実行する(自動修正)
```:terminal
npx textlint --fix test.txt

//結果
 2:5  ✔   ひらがなで表記したほうが読みやすい形式名詞: 度 => たび  ja-hiragana-keishikimeishi
```




## フィルタールールの導入
.textlintrc.jsonのfiltersフィールドで、ルールを無視する設定が可能


### フィルタールール「指定した範囲でルール無効化」をインストール
[textlint-filter-rule-comments](https://github.com/textlint/textlint-filter-rule-comments)




### textlint-filter-rule-commentsのインストール
```:terminal
npm install textlint-filter-rule-comments
```


### .textlintrcにfiltersフィールドを追加
```:.textlintrc
{
  "rules": {
    "textlint-rule-no-dropping-the-ra": true
  },
  "filters": {
    "comments": true
  }
}
```

### フィルタールールの動作確認

`<!-- textlint-disable -->`と`<!-- textlint-enable -->`の間でルールを無効化できる

```:test.md
<!-- textlint-disable -->
食べれる
<!-- textlint-enable -->
来れる
```


textlintを再実行すると`<!-- textlint-enable -->`に続く「ら抜き言葉」のみエラーが表示されている


## textlintで無視するファイルの指定

### .textlintignoreファイルを作成する

```.textlintignore
# Ignore file:
ignored.md

# Ignore by glob pattern:
vendor/**

```



## プラグイン
### textlintをHTMLに適用できるようにする

[textlint-plugin-html](https://github.com/textlint/textlint-plugin-html)


### textlint-plugin-htmlのインストール
```:terminal
npm install textlint-plugin-html
```

### .textlintrcにpluginsフィールドを追加
```.textlintrc
{
  rules": {
  "textlint-rule-no-dropping-the-ra": true
  },
  "filters": {
    "comments": true
  },
  "plugins": [
    "html"
  ]
}
```

### test.htmlの新規作成
```:test.html
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>【textlint】HTMLの確認</title>
  </head>
  <body>
    <p>食べれる</p>
    <p>来れる</p>
    <p>見れる</p>
  </body>
</html>
```

### textlintの実行
```:terminal
npx textlint test.html
```








## VS Codeでtextlintを自動で実行する
VS Codeの拡張機能 vscode-textlintを導入

[vscode-textlint - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=taichi.vscode-textlint)

setting.jsonを編集するか、「設定」で「textlint」を入力して設定項目を出して設定する

|設定|内容|
|---|---|
|textlint.autoFixOnSave|trueにすると保存時に自動修正可能なエラーを自動的に修正 <br> (デフォルトはfalse)|
|textlint.run|onTypeかonSaveでtextlintの実行タイミングの指定 <br> (デフォルトはonType)
|textlint.nodePath|textlintが検出されない場合に使う設定の場所 <br> (例：myGlobalNodePackages/node_modules)
|textlint.trace|VSCodeとtextlintの間の通信をトレースする|
|textlint.configPath|textlintの設定ファイルへの絶対パス <br> (ワークスペースの設定が優先)|
|textlint.ignorePath|.textlintignoreへの絶対パス|
|textlint.targetPath|globパターンを設定|
|textlint.languages|textlint でリントする言語|




## 付録



### ルール

#### textlint-rule-ja-no-mixed-period
[textlint-rule-ja-no-mixed-period](https://github.com/textlint-ja/textlint-rule-ja-no-mixed-period)
文末の句点(。)の統一 と 抜けを検出


##### インストール
```:terminal
npm install textlint-rule-ja-no-mixed-period
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-no-mixed-period": true
  }
}
```

##### サンプル
```:test.txt
山へ芝刈りに行きました
```

##### 実行
```:terminal
npx textlint test.txt
 
//結果
 1:11  error  文末が"。"で終わっていません。  ja-no-mixed-period
```

#### textlint-rule-ja-unnatural-alphabet
[textlint-rule-ja-unnatural-alphabet](https://github.com/textlint-ja/textlint-rule-ja-unnatural-alphabet)
不自然なアルファベットを検出	


##### インストール
```:terminal
npm install textlint-rule-ja-unnatural-alphabet
```

##### .textlintrc.json
```:.textlintrc.json
{
    "rules": {
      "ja-unnatural-alphabet": true
  }
}
```

##### サンプル
```:test.txt
こんにちhは
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:5  error  不自然なアルファベットがあります: h  ja-unnatural-alphabet
```



#### textlint-rule-no-doubled-conjunction]
[textlint-rule-no-doubled-conjunction](https://github.com/textlint-ja/textlint-rule-no-doubled-conjunction)
同じ接続詞が連続している場合に検出


##### インストール
```:terminal
npm install textlint-rule-no-doubled-conjunction
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-doubled-conjunction": true
  }
}   
```

##### サンプル
```:test.txt
今日は晴れ。しかし明日は雨。しかし明後日は雪。
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:15  error  同じ接続詞（しかし）が連続して使われています。  no-doubled-conjunction
```


#### textlint-rule-max-kanji-continuous-len
[textlint-rule-max-kanji-continuous-len](https://github.com/textlint-ja/textlint-rule-max-kanji-continuous-len)
漢字が連続する最大文字数を制限する



##### インストール
```:terminal
npm install textlint-rule-max-kanji-continuous-len
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "max-kanji-continuous-len": true
  }
}
```

##### サンプル
```:test.txt
共同不法行為
鬼鬼鬼鬼鬼鬼
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:1  error  漢字が6つ以上連続しています: 共同不法行為  max-kanji-continuous-len
 2:1  error  漢字が6つ以上連続しています: 鬼鬼鬼鬼鬼鬼  max-kanji-continuous-len
```





##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "max-kanji-continuous-len": {
      "max": 5,
      "allow": ["共同不法行為"]
    }
  }
}
```

|項目|内容|値|デフォルト|
|---|---|---|---|
|max|許容する漢字の連続の長さ|数値|5|
|allow|許容する長さを超えても例外として許可する言葉|配列(文字列)||



##### サンプル
```:test.txt
共同不法行為
鬼鬼鬼鬼鬼鬼
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 2:1  error  漢字が6つ以上連続しています: 鬼鬼鬼鬼鬼鬼  max-kanji-continuous-len
```










#### textlint-rule-no-synonyms
[textlint-rule-no-synonyms](https://github.com/textlint-ja/textlint-rule-no-synonyms)
同義語の表記ゆれを検出
自動修正一部対応


##### インストール
```:terminal
npm install @textlint-ja/textlint-rule-no-synonyms sudachi-synonyms-dictionary
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "@textlint-ja/no-synonyms": true
  }
}   
```


##### 実行
```:terminal
npx textlint test.txt

//結果
 1:5  error  同義語である「アプリ」と「アプリケーションソフト」が利用されています  @textlint-ja/no-synonyms
 2:6  error  同義語である「サーバー」と「サーバ」が利用されています                @textlint-ja/no-synonyms
```


##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "@textlint-ja/no-synonyms": {
      "allows": [
        "アプリ",
        "アプリケーションソフト"
      ],
      "preferWords": [
        "サーバ"
      ],
      "allowAlphabet": false,
      "allowNumber": false,
      "allowLexeme": false
    }
  }
}
```

|項目|内容|値|デフォルト
|---|---|---|---|
|allows|許可するワード|配列(文字列)||
|preferWords|定義された文字列以外の同義語をエラーする <br> (例：ユーザを指定すると、ユーザーはエラーになる)|配列(文字列)||
|allowAlphabet|アルファベットの表記揺れを許可|true/false|true|
|allowNumber|漢数字と数字の表記ゆれを許可|true/false|true|
|allowLexeme|語彙素の異なる同義語を許可|true/false|true|

##### サンプル
```:test.txt
アプリとアプリケーションソフト
サーバーとサーバ
ブログとblog
1と一
toiletとトイレ
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 2:1  ✓ error  「サーバ」の同義語である「サーバー」が利用されています  @textlint-ja/no-synonyms       
 3:5  error    同義語である「ブログ」と「blog」が利用されています      @textlint-ja/no-synonyms       
 4:3  error    同義語である「1」と「一」が利用されています             @textlint-ja/no-synonyms       
 5:8  error    同義語である「toilet」と「トイレ」が利用されています    @textlint-ja/no-synonyms 
```
preferWordsは自動修正が可能











#### textlint-rule-no-mix-dearu-desumasu
[textlint-rule-no-mix-dearu-desumasu](https://github.com/textlint-ja/textlint-rule-no-mix-dearu-desumasu)
敬体(ですます調)と常体(である調)の混在を検出

本文、見出し、箇条書きをそれぞれ独立してチェック
例：本文と見出しの間で表記が混在していても問題にしない


##### インストール
```:terminal
npm install textlint-rule-no-mix-dearu-desumasu
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-mix-dearu-desumasu": true
  }
}
```

##### サンプル
```:test.md
# 犬です

犬は哺乳類である

# 猿である

猿は哺乳類です

# 雉です

- 鳥類です
- 哺乳類ではないのである
```

##### 実行
```:terminal
npx textlint test.md
//結果
 3:6   error  本文: "である"調 と "ですます"調 が混在
 => "ですます"調 の文体に、次の "である"調 の箇所があります: "である"
 Total:
 である  : 1
 ですます: 1
   no-mix-dearu-desumasu
   12:11  error  箇条書き: "である"調 と "ですます"調 が混在
 => "ですます"調 の文体に、次の "である"調 の箇所があります: "である"
 Total:
 である  : 1
 ですます: 1
   no-mix-dearu-desumasu
```



##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-mix-dearu-desumasu": {
      "preferInHeader": "",
      "preferInBody": "ですます",
        "preferInList": "である",
        "strict": true
    }
  }
}
```

|項目|内容|値|
|---|---|---|
|preferInHeader|見出し|""(自動)/"である"/"ですます"(デフォルト："")|
|preferInBody|本文|""(自動)/"である"/"ですます"(デフォルト："")|
|preferInList|箇条書き|""(自動)/"である"/"ですます"(デフォルト："")|
|strict|文末以外でもチェックする|true/false(デフォルト：false)|


##### サンプル
```:test.md
# 犬です

犬は哺乳類である

# 猿である

猿は哺乳類です

# 雉です

- 鳥類です
- 哺乳類ではないのである
```

##### 実行
```:terminal
npx textlint test.md

//結果
 3:6  error  本文: "である"調 と "ですます"調 が混在
 => "ですます"調 の文体に、次の "である"調 の箇所があります: "である"
 Total:
 である  : 1
 ですます: 1
   no-mix-dearu-desumasu
    5:4  error  見出し: "である"調 と "ですます"調 が混在
 => "ですます"調 の文体に、次の "である"調 の箇所があります: "である"
 Total:
 である  : 1
 ですます: 2
   no-mix-dearu-desumasu
   11:5  error  箇条書き: "である"調 と "ですます"調 が混在
 => "である"調 の文体に、次の "ですます"調 の箇所があります: "です"
 Total:
 である  : 1
 ですます: 1
     no-mix-dearu-desumasu
```



#### textlint-rule-no-insert-dropping-sa
[textlint-rule-no-insert-dropping-sa](https://github.com/textlint-ja/textlint-rule-no-insert-dropping-sa)
サ抜き、サ入れ表現の誤用を検出
自動修正対応

##### インストール
```:terminal
npm install @textlint-ja/textlint-rule-no-insert-dropping-sa
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "@textlint-ja/textlint-rule-no-insert-dropping-sa": true
  }
}
```

##### サンプル
```:test.txt
きびだんごを食べたさそう。
財宝は無そう。
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:10  ✓ error  不要な「さ」が挿入されています。  @textlint-ja/textlint-rule-no-insert-dropping-sa    
 2:4   ✓ error  「さ」が抜けています。            @textlint-ja/textlint-rule-no-insert-dropping-sa
```


#### textlint-rule-ja-no-weak-phrase
[textlint-rule-ja-no-weak-phrase](https://github.com/textlint-ja/textlint-rule-ja-no-weak-phrase)
弱い表現の利用を検出


##### インストール
```:terminal
npm install textlint-rule-ja-no-weak-phrase
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-no-weak-phrase": true
  }
}   
```

##### サンプル
```:test.txt
かもしれない運転していないと思う
したと思います
```

##### 実行
```:terminal
npx textlint test.txt
 
//結果
 1:1   error  弱い表現: "かも" が使われています。      ja-no-weak-phrase
 1:15  error  弱い表現: "思う" が使われています。      ja-no-weak-phrase
 2:4   error  弱い表現: "思います" が使われています。  ja-no-weak-phrase
```




#### textlint-rule-no-doubled-joshi
[textlint-rule-no-doubled-joshi](https://github.com/textlint-ja/textlint-rule-no-doubled-joshi)
文中に同じ助詞が複数出てくるのを検出		


##### インストール
```:terminal
npm install textlint-rule-no-doubled-joshi
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-doubled-joshi": true
  }
}   
```

##### サンプル
```:test.txt
昨日も今日も雨
昨日も！今日も！雨
明日や明後日や明々後日や雨
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:6   error  一文に二回以上利用されている助詞 "も" がみつかりました。  no-doubled-joshi
 3:7   error  一文に二回以上利用されている助詞 "や" がみつかりました。  no-doubled-joshi
 3:12  error  一文に二回以上利用されている助詞 "や" がみつかりました。  no-doubled-joshi
```


##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-doubled-joshi": {
      "min_interval" : 1,
      "strict": false,
      "allow": ["や"],
      "separatorCharacters": [
        ".",
        "．",
        "。",
        "?",
        "!",
        "？",
        "！"
      ],
      "commaCharacters": [
        "、",
        "，" 
      ]
    }
  }
}
```
|項目|内容|値|デフォルト|
|---|---|---|---|
|min_interval|助詞の最低間隔値|数値|1|
|strict|厳しくチェックするかどうか|true/false|false|
|allow|複数回の出現を許す助詞	|文字の配列| []|
|separatorCharacters|文の区切り文字の配列(区切ると、別の文扱いになる)|文字の配列| [".", "．", "。", "?", "!", "？", "！"]|
|commaCharacters|句点となる文字の配列|文字の配列|["、", "，"]



##### サンプル
```:test.txt
昨日も今日も雨
昨日も！今日も！雨
明日や明後日や明々後日や雨
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:6  error  一文に二回以上利用されている助詞 "も" がみつかりました。  no-doubled-joshi
```







#### textlint-rule-max-ten
[textlint-rule-max-ten](https://github.com/textlint-ja/textlint-rule-max-ten)
一文に利用できる「、」の数を制限
(名詞に挟まれた読点はカウントしない)

##### インストール
```:terminal
npm install textlint-rule-max-ten
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "max-ten": true,
  }
}   
```

##### サンプル
```:test.txt
こんにちは、今日は、大阪に、たこ焼きを、食べに、行きます。
こんにちは,今日は,大阪に,たこ焼きを,食べに,行きます。
大阪、京都、兵庫、奈良、滋賀、和歌山
大阪,京都,兵庫,奈良,滋賀,和歌山
```



##### 実行
```:terminal
npx textlint test.txt

//結果
 1:20  error  一つの文で"、"を4つ以上使用しています  max-ten
```




##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "max-ten": {
      "max": 3,
      "strict": false,
      "touten": ",",
      "kuten": "。"
    }
  }
}
``` 


|項目|内容|値|デフォルト|
|---|---|---|---|
|max|許容される「、」の数|数値|3|
|strict|名詞に挟まれた読点はカウントする|true/false|false|
|touten|読点として扱う文字の指定||「、」|
|kuten|句点として扱う文字の指定||「。」|



##### サンプル
```:test.txt
こんにちは、今日は、大阪に、たこ焼きを、食べに、行きます。
こんにちは,今日は,大阪に,たこ焼きを,食べに,行きます。
大阪、京都、兵庫、奈良、滋賀、和歌山
大阪,京都,兵庫,奈良,滋賀,和歌山
``` 


##### 実行
```:terminal
npx textlint test.txt

//結果
  2:20  error  一つの文で","を4つ以上使用しています  max-ten
  4:12  error  一つの文で","を4つ以上使用しています  max-ten
```




#### textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet
[textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet](https://github.com/textlint-ja/textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet)
全角と半角アルファベットの混在を検出
自動修正対応

##### インストール
```:terminal
npm install textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-mixed-zenkaku-and-hankaku-alphabet": true
  }
}   
```

##### サンプル
```:test.txt
yamada
ｙａｍａｄａ
```

##### 実行
```:terminal
npx textlint test.txt
 
//結果
 2:1  ✓ error  アルファベットは「半角」で表記します。  no-mixed-zenkaku-and-hankaku-alphabet        
```


##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-mixed-zenkaku-and-hankaku-alphabet": {
      "prefer": "全角"
    }
  }
}
```

|項目|内容|値|デフォルト|
|---|---|---|---|
|prefer|全角か半角かの指定|全角/半角|"半角"|



##### サンプル
```:test.txt
yamada
ｙａｍａｄａ
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:1  ✓ error  アルファベットは「全角」で表記します。  no-mixed-zenkaku-and-hankaku-alphabet   
```



#### textlint-rule-ja-no-orthographic-variants
[textlint-rule-ja-no-orthographic-variants](https://github.com/textlint-ja/textlint-rule-ja-no-orthographic-variants)
表記ゆれを検出	

##### インストール
```:terminal
npm install textlint-rule-ja-no-orthographic-variants
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-no-orthographic-variants": true
  }
} 
```

##### サンプル
```:test.txt
お問い合わせとお問合せは表記ゆれしやすい
```

##### 実行
```:terminal
npx textlint test.txt
 
//結果
 1:2  error  「問い合わせ」、「問合せ」の表記ゆれがあります。  ja-no-orthographic-variants
 1:9  error  「問合せ」、「問い合わせ」の表記ゆれがあります。  ja-no-orthographic-variants
```



#### textlint-rule-ja-kyoiku-kanji
[textlint-rule-ja-kyoiku-kanji](https://github.com/textlint-ja/textlint-rule-ja-kyoiku-kanji)
教育漢字ではない漢字を検出		


##### インストール
```:terminal
npm install textlint-rule-ja-kyoiku-kanji
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-kyoiku-kanji": true
  }
}
```

##### サンプル
```:test.txt
拉麺
雨
雲
寒
季
桜
異
```


##### 実行
```:terminal
npx textlint test.txt

//結果
  1:1  error  教育漢字ではない漢字「拉」が含まれています。  ja-kyoiku-kanji
  1:2  error  教育漢字ではない漢字「麺」が含まれています。  ja-kyoiku-kanji
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-kyoiku-kanji": {
      "allowElementary1stKanjis": false,
      "allowElementary2ndKanjis": false,
      "allowElementary3rdKanjis": false,
      "allowElementary4thKanjis": false,
      "allowElementary5thKanjis": false,
      "allowElementary6thKanjis": false
    }
  }
}
```


|項目|内容|値|デフォルト|
|---|---|---|---|
|allowElementary1stKanjis|小1で習う漢字を許容|true/false|true|
|allowElementary2ndKanjis|小2で習う漢字を許容|true/false|true|
|allowElementary3rdKanjis|小3で習う漢字を許容|true/false|true|
|allowElementary4thKanjis|小4で習う漢字を許容|true/false|true|
|allowElementary5thKanjis|小5で習う漢字を許容|true/false|true|
|allowElementary6thKanjis|小6で習う漢字を許容|true/false|true|

##### サンプル
```:test.txt
拉麺
雨
雲
寒
季
桜
異
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:1  error  漢字「拉」が含まれています。  ja-kyoiku-kanji
 1:2  error  漢字「麺」が含まれています。  ja-kyoiku-kanji
 2:1  error  漢字「雨」が含まれています。  ja-kyoiku-kanji
 3:1  error  漢字「雲」が含まれています。  ja-kyoiku-kanji
 4:1  error  漢字「寒」が含まれています。  ja-kyoiku-kanji
 5:1  error  漢字「季」が含まれています。  ja-kyoiku-kanji
 6:1  error  漢字「桜」が含まれています。  ja-kyoiku-kanji
 7:1  error  漢字「異」が含まれています。  ja-kyoiku-kanji
```




#### textlint-rule-ja-joyo-or-jinmeiyo-kanji
[textlint-rule-ja-joyo-or-jinmeiyo-kanji](https://github.com/textlint-ja/textlint-rule-ja-joyo-or-jinmeiyo-kanji)
常用漢字または人名用漢字以外を検出		

##### インストール
```:terminal
npm install textlint-rule-ja-joyo-or-jinmeiyo-kanji
```


##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-joyo-or-jinmeiyo-kanji": true
  }
}   
```

##### サンプル
```:test.txt
蛙
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:1  error  常用漢字でも人名用漢字でもない漢字「蛙」が含まれています。  ja-joyo-or-jinmeiyo-kanji  
```



#### textlint-rule-ja-no-inappropriate-words
[textlint-rule-ja-no-inappropriate-words](https://github.com/textlint-ja/textlint-rule-ja-no-inappropriate-words)
不適切表現を検出


##### インストール
```:terminal
npm install textlint-rule-ja-no-inappropriate-words
```


##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-no-inappropriate-words": true
  }
}   
```

##### サンプル
```:test.txt
童貞
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:1  error  不適切表現「童貞」が含まれています。  ja-no-inappropriate-words
```


#### textlint-rule-no-doubled-conjunctive-particle-ga
[textlint-rule-no-doubled-conjunctive-particle-ga](https://github.com/textlint-ja/textlint-rule-no-doubled-conjunctive-particle-ga)
文中の接続助詞「が」の重複を検出

##### インストール
```:terminal
npm install textlint-rule-no-doubled-conjunctive-particle-ga
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-doubled-conjunctive-particle-ga": true,
  }
}   
```

##### サンプル
```:test.txt
今日は晴れたが、暑くはなかったが、やる気はでなかった。
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:7  error  文中に逆接の接続助詞 "が" が二回以上使われています。  no-doubled-conjunctive-particle-ga
```






#### textlint-rule-ja-no-redundant-expression
[textlint-rule-ja-no-redundant-expression](https://github.com/textlint-ja/textlint-rule-ja-no-redundant-expression)
冗長な表現を検出
自動修正対応


##### インストール
```:terminal
npm install textlint-rule-ja-no-redundant-expression
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-no-redundant-expression": true
  }
}
```

##### サンプル
```:test.txt
議論を行う
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:1  error  【dict5】 "議論を行う"は冗長な表現です。"議論する"など簡潔な表現にすると文章が明瞭になります。
```


##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-no-redundant-expression": {
      "dictOptions": {
        "dict1": {
          "disabled": true
        },
        "dict5": {
          "allows": [
            "/^議論を行う/",
            "/^処理を行[ぁ-ん]/",
            "/^[ァ-ヶ]+を.?行[ぁ-ん]/",
            "/^[a-zA-Z]+を.?行[ぁ-ん]/"
          ]
        }
      }
    }
  }
}
```



|項目|内容|値|デフォルト|
|---|---|---|---|
|allowNodeTypes|無視したいノードタイプを配列で指定|string[]|`["BlockQuote", "Link", "ReferenceDef", "Code"]|
|dictOptions|それぞれのdictに対するオプションを指定|object|	
|dict1~dict6|dictのIDを指定|object|	
|disabled|dictの無効化|true/false|false|
|allows|許可すると、デフォルトが上書きされるので、維持したい場合は明示的に追加する|string[]|"/^処理を行[ぁ-ん]/","/^[ァ-ヶ]+を.?行[ぁ-ん]/","/^[a-zA-Z]+を.?行[ぁ-ん]/"|




|タイプ名|ノードタイプ|説明|
|---|---|---|
|ASTNodeTypes.Document|TxtDocumentNode(TxtParentNode)|Root Node|
|ASTNodeTypes.DocumentExit|TxtDocumentNode(TxtParentNode)|
|ASTNodeTypes.Paragraph|TxtParagraphNode(TxtParentNode)|Paragraph Node|
|ASTNodeTypes.ParagraphExit|TxtParagraphNode(TxtParentNode)|
|ASTNodeTypes.BlockQuote|TxtBlockQuoteNode(TxtParentNode)|> Block Quote Node|
|ASTNodeTypes.BlockQuoteExit|TxtBlockQuoteNode(TxtParentNode)|	
|ASTNodeTypes.List|TxtListNode(TxtParentNode)|List Node|
|ASTNodeTypes.ListExit|TxtListNode(TxtParentNode)|
|ASTNodeTypes.ListItem|TxtListItemNode(TxtParentNode)|List (each) item Node|
|ASTNodeTypes.ListItemExit|TxtListItemNode(TxtParentNode)|
|ASTNodeTypes.Header|TxtHeaderNode(TxtParentNode)|# Header Node|
|ASTNodeTypes.HeaderExit|TxtHeaderNode(TxtParentNode)|
|ASTNodeTypes.CodeBlock|TxtCodeBlockNode(TxtParentNode)|Code Block Node|
|ASTNodeTypes.CodeBlockExit|TxtCodeBlockNode(TxtParentNode)|
|ASTNodeTypes.HtmlBlock|TxtHtmlBlockNode(TxtParentNode)|HTML Block Node|
|ASTNodeTypes.HtmlBlockExit|TxtHtmlBlockNode(TxtParentNode)|	
|ASTNodeTypes.Link|TxtLinkNode(TxtParentNode)|Link Node|
|ASTNodeTypes.LinkExit|TxtLinkNode(TxtParentNode)|	
|ASTNodeTypes.Delete|TxtDeleteNode(TxtParentNode)|Delete Node(~Str~)|
|ASTNodeTypes.DeleteExit|TxtDeleteNode(TxtParentNode)|	
|ASTNodeTypes.Emphasis|TxtEmphasisNode(TxtParentNode)|Emphasis(*Str*)|
|ASTNodeTypes.EmphasisExit|TxtEmphasisNode(TxtParentNode)|
|ASTNodeTypes.Strong|TxtStrongNode(TxtParentNode)|Strong Node(**Str**)|
|ASTNodeTypes.StrongExit|TxtStrongNode(TxtParentNode)|
|ASTNodeTypes.Break|TxtBreakNode|Hard Break Node(Str<space><space>)|
|ASTNodeTypes.BreakExit|TxtBreakNode|
|ASTNodeTypes.Image|TxtImageNode|Image Node|
|ASTNodeTypes.ImageExit|TxtImageNode|
|ASTNodeTypes.HorizontalRule|TxtHorizontalRuleNode|Horizontal Node(---)|
|ASTNodeTypes.HorizontalRuleExit|TxtHorizontalRuleNode|	
|ASTNodeTypes.Comment|TxtCommentNode|Comment Node|
|ASTNodeTypes.CommentExit|TxtCommentNode|
|ASTNodeTypes.Str|TxtStrNode|Str Node|
|ASTNodeTypes.StrExit|TxtStrNod|
|ASTNodeTypes.Code|TxtCodeNode|Inline Code Node|
|ASTNodeTypes.CodeExit|TxtCodeNode|
|ASTNodeTypes.Html|TxtHtmlNode|Inline HTML Node|
|ASTNodeTypes.HtmlExit|TxtHtmlNode|	
|ASTNodeTypes.Table|TxtTableNode|Table node|
|ASTNodeTypes.TableExit|TxtTableNode|	
|ASTNodeTypes.TableRow|TxtTableRowNode|Table row node|
|ASTNodeTypes.TableRowExit|TxtTableRowNode|
|ASTNodeTypes.TableCell|TxtTableCellNode|Table cell node|
|ASTNodeTypes.TableCellExit|TxtTableCellNode||



|辞書|内容|allowsオプションのデフォルト|
|---|---|---|
|dict1|すること(助詞)(不)可能||
|dict2|すること(助詞)できる||
|dict3|であると言えます||
|dict4|であると考えている||
|dict5|(サ変名詞)を行う|["/^処理を行[ぁ-ん]/","/^[ァ-ヶ]+を.?行[ぁ-ん]/","/^[a-zA-Z]+を.?行[ぁ-ん]/"]|
|dict6】|(サ変名詞)を実行|["/^処理を実行/","/^[ァ-ヶ]+を.?実行/","/^[a-zA-Z]+を.?実行/"]|

##### サンプル
```:test.txt
議論を行う
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 (エラーなし)
```




#### textlint-rule-no-double-negative-ja
[textlint-rule-no-double-negative-ja](https://github.com/textlint-ja/textlint-rule-no-double-negative-ja)
二重否定を検出

##### インストール
```:terminal
npm install textlint-rule-no-double-negative-ja
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-double-negative-ja": true
  }
}   
```

##### サンプル
```:test.txt
昨日は寒かったといえなくもない。
```

##### 実行
```:terminal
npx textlint test.txt
 
//結果
 1:14  error  二重否定: 〜なくもない  no-double-negative-ja
```


#### textlint-rule-no-dropping-the-ra
[textlint-rule-no-dropping-the-ra](https://github.com/textlint-ja/textlint-rule-no-dropping-the-ra)
ら抜き言葉を検出



##### インストール
```:terminal
npm install textlint-rule-no-dropping-the-ra
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-dropping-the-ra": true
  }
}   
```

##### サンプル
```:test.txt
辛いものは食べれない。
```

##### 実行
```:terminal
npx textlint test.txt
 
//結果
 1:8  error  ら抜き言葉を使用しています。  no-dropping-the-ra
```



#### textlint-rule-ja-no-abusage
[textlint-rule-ja-no-abusage](https://github.com/textlint-ja/textlint-rule-ja-no-abusage)
よくある日本語の誤用を検出
自動修正対応

##### インストール
```:terminal
npm install textlint-rule-ja-no-abusage
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-no-abusage": true
  }
}   
```

##### サンプル
```:test.txt
アップデートを適応する
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:7  ✓ error  "適用"の誤用である可能性があります。適応 => 適用  ja-no-abusage
```


#### textlint-rule-no-dropping-i
[textlint-rule-no-dropping-i](https://github.com/textlint-ja/textlint-rule-no-dropping-i)
い抜き言葉を検出

##### インストール
```:terminal
npm install @textlint-ja/textlint-rule-no-dropping-i
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "@textlint-ja/textlint-rule-no-dropping-i": true
  }
}
```

##### サンプル
```:test.txt
昼食食べてます。
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:6  error  い抜き言葉を使用しています。  @textlint-ja/textlint-rule-no-dropping-i
```


#### textlint-rule-no-nfd
[textlint-rule-no-nfd](https://github.com/textlint-ja/textlint-rule-no-nfd)
UTF8-MACの濁点・半濁点のようなNFDの利用を禁止
自動修正対応

##### インストール
```:terminal
npm install textlint-rule-no-nfd
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-nfd": true
  }
}   
```

##### サンプル
```:test.txt
アレクセイ・ハ゜シ゛トノフ
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:8   ✓ error  Disallow to use NFD(well-known as UTF8-MAC 濁点): "ハ゜" => "パ"  no-nfd
 1:10  ✓ error  Disallow to use NFD(well-known as UTF8-MAC 濁点): "シ゛" => "ジ"  no-nfd
```



#### textlint-rule-ja-no-successive-word
[textlint-rule-ja-no-successive-word](https://github.com/textlint-ja/textlint-rule-ja-no-successive-word)
同一の単語を間違えて連続しているのを検出

##### インストール
```:terminal
npm install textlint-rule-ja-no-successive-word
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-no-successive-word": true
  }
}   
```

##### サンプル
```:test.txt
古いスマホのの反応はは、カクカク、ダルダル
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:7   error  "の" が連続して2回使われています。  ja-no-successive-word
 1:11  error  "は" が連続して2回使われています。  ja-no-successive-word
```


##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-no-successive-word": {
      "allowOnomatopee": false,
      "allow": [
        "カク"
      ]
    }
  }
}
```


|項目|内容|値|デフォルト|
|---|---|---|---|
|allowOnomatopee|カクカク、ダルダルなどを許すかどうか|true/false|true|
|allow|allowOnomatopeeがfalseの場合でも許可するものを列記|文字の配列|""|

##### サンプル
```:test.txt
 古いスマホのの反応はは、カクカク、ダルダル
```


##### 実行
```:terminal
npx textlint test.txt

//結果
 1:7   error  "の" が連続して2回使われています。    ja-no-successive-word
 1:11  error  "は" が連続して2回使われています。    ja-no-successive-word
 1:20  error  "ダル" が連続して2回使われています。  ja-no-successive-word
```




#### textlint-rule-prefer-tari-tari

[textlint-rule-prefer-tari-tari](https://github.com/textlint-ja/textlint-rule-prefer-tari-tari)
例示・並列・対表現の「〜たり〜たりする」を検出

##### インストール
```:terminal
npm install textlint-rule-prefer-tari-tari
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "prefer-tari-tari": true
  }
} 
```

##### サンプル
```:test.txt
扉を開いたり閉じている
```

##### 実行
```:terminal
npx textlint test.txt
 
//結果
 1:10  error  例示・並列・対表現において、片方の動詞が「〜たり」表現な場合は、もう片方の動詞も「〜たり」とします。  prefer-tari-tari
```


#### textlint-rule-no-filler
[textlint-rule-no-filler](https://github.com/textlint-ja/textlint-rule-no-filler)
フィラー(つなぎ表現)を検出

例
- ええと
- あの
- まあ
など


##### インストール
```:terminal
npm install @textlint-ja/textlint-rule-no-filler
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "@textlint-ja/no-filler": true
  }
}
```

##### サンプル
```:test.txt
ええと、昨日の朝は何を食べたっけ？
```

##### 実行
```:terminal
npx textlint test.txt
 
//結果
 1:1  error  フィラー（つなぎ表現）である「え」を検知しました。
`
 「えーと」「あの」「まあ」などのつなぎ表現は話し言葉（口語）であるため、文章を読みにくくします。  @textlint-ja/no-filler
 1:2  error  フィラー（つなぎ表現）である「えと」を検知しました。
 
 「えーと」「あの」「まあ」などのつなぎ表現は話し言葉（口語）であるため、文章を読みにくくします。  @textlint-ja/no-filler
```




#### textlint-rule-no-duplicated-bunmatsu-hyougen
[textlint-rule-no-duplicated-bunmatsu-hyougen](https://github.com/textlint-ja/textlint-rule-no-duplicated-bunmatsu-hyougen)
同じ文末表現が連続しているのを検出


##### インストール
```:terminal
npm install textlint-rule-no-duplicated-bunmatsu-hyougen
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-duplicated-bunmatsu-hyougen": true
  }
}   
```

##### サンプル
```:test.txt
山田は友人です。田中は友人です。
鈴木は友人ではないです。
加藤は友人ではないです。
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:16  error  文末表現 "は友人です。" が連続しています。  no-duplicated-bunmatsu-hyougen
```






#### textlint-rule-no-hankaku-kana
[textlint-rule-no-hankaku-kana](https://github.com/textlint-ja/textlint-rule-no-hankaku-kana)
半角カナを検出

##### インストール
```:terminal
npm install textlint-rule-no-hankaku-kana
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-hankaku-kana": true
  }
}
```

##### サンプル
```:test.txt
コンニチハ
ｺﾝﾆﾁﾊ
```


##### 実行
```:terminal
npx textlint test.txt

//結果
 2:1  error  Disallow to use 半角カタカナ: "ｺﾝﾆﾁﾊ"  no-hankaku-kana
```





#### textlint-rule-ja-hiragana-keishikimeishi
[textlint-rule-ja-hiragana-keishikimeishi](https://github.com/lostandfound/textlint-rule-ja-hiragana-keishikimeishi)
ひらがなで表記したほうが読みやすい形式名詞を検出
自動修正対応


##### インストール
```:terminal
npm install textlint-rule-ja-hiragana-keishikimeishi
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-hiragana-keishikimeishi": true
  }
}   
```

##### サンプル
```:test.txt
破産する度に、家族に助けてもらう
```


##### 実行
```:terminal
npx textlint test.txt

//結果
 1:5  ✓ error  ひらがなで表記したほうが読みやすい形式名詞: 度 => たび  ja-hiragana-keishikimeishi 
```



#### textlint-rule-no-insert-re
[textlint-rule-no-insert-re](https://github.com/textlint-ja/textlint-rule-no-insert-re)
れ足す言葉を検出



##### インストール
```:terminal
npm install @textlint-ja/textlint-rule-no-insert-re
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "@textlint-ja/textlint-rule-no-insert-re": true
  }
}   
```


##### サンプル
```:test.txt
お金を貯めれない
```


##### 実行
```:terminal
npx textlint test.txt

//結果
 1:6  error  れ足す言葉を使用しています。  @textlint-ja/textlint-rule-no-insert-re
```







#### textlint-rule-ja-simple-user-dictionary
[textlint-rule-ja-simple-user-dictionary](https://github.com/hata6502/textlint-rule-ja-simple-user-dictionary)
辞書を作って校正

##### インストール
```:terminal
npm install textlint-rule-ja-simple-user-dictionary
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-simple-user-dictionary": {
      "dictionary": [
        {
          "pattern": "typo"
        },
        {
          "pattern": "コンプューター",
          "message": "「コンプューター」ではなく「コンピューター」です。"
        }
      ]
    }
  }
}
``` 


##### サンプル
```:test.txt
コンプューター
``` 


##### 実行
```:terminal
npx textlint test.txt

//結果
 1:1  error  「コンプューター」ではなく「コンピューター」です。  ja-simple-user-dictionary
```




#### textlint-rule-sentence-length
[textlint-rule-sentence-length](https://github.com/azu/textlint-rule-sentence-length)
センテンスの文字が101以上のものを検出
(オプションで変更可能)

##### インストール
```:terminal
npm install textlint-rule-sentence-length
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "sentence-length": true
  }
}
```

##### サンプル
```:test.txt
 寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助
```


##### 実行
```:terminal
npx textlint test.txt

//結果
 1:1  error  Line 1 sentence length(107) exceeds the maximum sentence length of 100.
 Over 7 characters  sentence-length
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "sentence-length": {
      "max": 100,
      "skipPatterns": [
        "/寿限無/"
      ],
      "skipUrlStringLink": true
    }
  }
}
```

|項目|説明|値|デフォルト|
|---|---|---|---|
|max|許容する最大文字数|数値|100|
|skipPatterns|カウントしないパターンの指定|正規表現||
|skipUrlStringLink|URLの文字列をカウントしない|true/false|true|

##### サンプル
```:test.txt
 寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助
```


##### 実行
```:terminal
npx textlint test.txt

//結果
 1:1  error  Line 1 sentence length(101, original:107) exceeds the maximum sentence length of 100.    
 Over 1 characters  sentence-length
```



#### textlint-rule-first-sentence-length
[textlint-rule-first-sentence-length](https://github.com/azu/textlint-rule-first-sentence-length)

セクションの最初のセンテンスの文字が51以上のものを検出
(オプションで変更可能)

##### インストール
```:terminal
npm install textlint-rule-first-sentence-length
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "first-sentence-length": true
  }
}
```


##### サンプル
```:test.md
# セクション 1

寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助

# セクション 2

寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。
```

##### 実行
```:terminal
npx textlint test.md
 
//結果
 3:1  error  Line 3 exceeds the maximum sentence length of 50.
 First sentence should be short  first-sentence-length
 8:1  error  Line 8 exceeds the maximum sentence length of 50.
 First sentence should be short  first-sentence-length
```


##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "sentence-length": {
      "max": 109
    }
  }
}
```



##### サンプル
```:test.md
# セクション 1

寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助
 
# セクション 2

寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。
```

##### 実行
```:terminal
npx textlint test.md

//結果
 8:109  error  Line 8 sentence length(110) exceeds the maximum sentence length of 109.
 Over 1 characters  sentence-length
```




#### textlint-rule-incremental-headers
[textlint-rule-incremental-headers](https://github.com/matsu-chara/textlint-rule-incremental-headers)
次の3つを検出
- ページの始まりの見出しは#(h1)から始まっているか
- ページの始まり以外の見出しで#(h1)が使われていないか
- 見出しの深さが必ず1つずつ増加しているか


##### インストール
```:terminal
npm install -D textlint textlint-rule-incremental-headers
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "incremental-headers": true
  }
}
```


##### サンプル
```:test.md
## セクション 1

##### セクション 2

# セクション 3
```


##### 実行
```:terminal
npx textlint test.md

//結果
 1:1  error  ページの先頭のヘッダーが#から始まっていません。            incremental-headers
 3:1  error  ##の後に#####が来ています。段落は１つずつ下げてください。  incremental-headers
 5:1  error  ページの先頭以外で#が見つかりました。                      incremental-headers
```



#### textlint-rule-ja-hiragana-fukushi
[textlint-rule-ja-hiragana-fukushi](https://github.com/lostandfound/textlint-rule-ja-hiragana-fukush)
漢字よりもひらがなで表記したほうが読みやすい副詞を検出
自動変対応


##### インストール
```:terminal
npm install textlint-rule-ja-hiragana-fukushi
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-hiragana-fukushi": true
  }
}
``` 



##### サンプル
```:test.txt
最早、限界です。
```

##### 実行
```:terminal
npx textlint test.txt

//結果
1:1  ✓ error  ひらがなで表記したほうが読みやすい副詞: "最早" => "もはや"  ja-hiragana-fukushi 
```



#### textlint-rule-ja-hiragana-hojodoushi
[textlint-rule-ja-hiragana-hojodoushi](https://github.com/lostandfound/textlint-rule-ja-hiragana-hojodoushi)
漢字よりもひらがなで表記したほうが読みやすい補助動詞を検出
自動変換対応

##### インストール
```:terminal
npm install textlint-rule-ja-hiragana-hojodoushi
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-hiragana-hojodoushi": true
  }
}
```

##### サンプル
```:test.txt
今日で退職致します
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:6  ✓ error  ひらがなで表記したほうが読みやすい補助動詞: "致し" => "いたし"  ja-hiragana-hojodoushi
```




#### textlint-rule-general-novel-style-ja
[textlint-rule-general-novel-style-ja](https://github.com/io-monad/textlint-rule-general-novel-style-ja)
日本の小説における一般的な作法に従わないものを検出
自動修正対応

以下を検出
- 各段落の先頭に全角スペースまたは開き括弧のみを許可
- 閉じ括弧の手前に句読点(。、)を置かない
- 疑問符(？)と感嘆符(！)の直後にスペースを置く
- 連続した三点リーダー(…)の数は偶数にする
- 連続したダッシュ(―)の数は偶数にする
- 連続した句読点(。、)を許可しない
- 連続した中黒(・)を許可しない
- 連続した長音符(ー)を許可しない
- マイナス記号(−)は数字の前にしか許可しない
- アラビア数字は最大2桁までしか許可しない

##### インストール
```:terminal
npm install textlint-rule-general-novel-style-ja
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "general-novel-style-ja": true
  }
}
``` 


##### サンプル
```:test.txt
「こんにちは、山田さん。」
「こんにちは！山田さん」
「………こんにちは」
「―――こんにちは」

「さようなら、、鈴木さん」
「さようなら・・・鈴木さん」
「さようならーーー」
「さようなら−」
2023
２０２３
``` 


##### 実行
```:terminal
npx textlint test.txt

//結果
 1:12  ✓ error  句読点(。、)が閉じ括弧の直前に存在しています                general-novel-style-ja   
 2:7   ✓ error  感嘆符(！)・疑問符(？)の直後にスペースか閉じ括弧が必要です  general-novel-style-ja   
 3:2   ✓ error  連続した三点リーダー(…)の数が偶数ではありません             general-novel-style-ja   
 4:2   ✓ error  連続したダッシュ(―)の数が偶数ではありません                 general-novel-style-ja   
 6:7   ✓ error  連続した句読点(。、)が使われています                        general-novel-style-ja   
 7:7   ✓ error  連続した中黒(・)が使われています                            general-novel-style-ja   
 8:7   ✓ error  連続した長音符(ー)が使われています                          general-novel-style-ja   
 9:7   ✓ error  マイナス記号(−)の直後が数字ではありません                   general-novel-style-ja   
 10:1   ✓ error  段落の先頭に許可されていない文字が存在しています            general-novel-style-ja   
 10:1   ✓ error  2桁を超えるアラビア数字が使われています                     general-novel-style-ja   
 11:1   ✓ error  段落の先頭に許可されていない文字が存在しています            general-novel-style-ja   
 11:1   ✓ error  2桁を超えるアラビア数字が使われています                     general-novel-style-ja 
```



##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "general-novel-style-ja": {
      "chars_leading_paragraph": "　「『【〈《（(“\"‘'［[〔｛{＜<",
      "no_punctuation_at_closing_quote": true,
      "space_after_marks": true,
      "even_number_ellipsises": true,
      "even_number_dashes": true,
      "appropriate_use_of_punctuation": true,
      "appropriate_use_of_interpunct": true,
      "appropriate_use_of_choonpu": true,
      "appropriate_use_of_minus_sign": true,
      "max_arabic_numeral_digits": 2
    }
  }
}
```
|項目|説明|値|デフォルト|
|---|---|---|---|
|chars_leading_paragrap|各段落の先頭に許可する文字 (false: チェックしない)|文字、false|「『【〈《（(“\"‘'［[〔｛{＜<",|
|no_punctuation_at_closing_quote|閉じ括弧の手前に句読点(。、)を置かない|true/false|true|
|space_after_marks|疑問符(？)と感嘆符(！)の直後にスペースを置く|true/false|true|
|even_number_ellipsises|連続した三点リーダー(…)の数は偶数にする|true/false|true|
|even_number_dashes|連続したダッシュ(―)の数は偶数にする|true/false|true|
|appropriate_use_of_punctuation|連続した句読点(。、)を許可しない|true/false|true|
|appropriate_use_of_interpunct|連続した中黒(・)を許可しない|true/false|true|
|appropriate_use_of_choonpu|連続した長音符(ー)を許可しない|true/false|true|
|appropriate_use_of_minus_sign|マイナス記号(−)は数字の前にしか許可しない|true/false|true|
|max_arabic_numeral_digits|アラビア数字の桁数|数値、false|2|

##### サンプル
```:test.txt
「こんにちは、山田さん。」
「こんにちは！山田さん」
「………こんにちは」
「―――こんにちは」

「さようなら、、鈴木さん」
「さようなら・・・鈴木さん」
「さようならーーー」
「さようなら−」
2023
２０２３
``` 


##### 実行
```:terminal
npx textlint test.txt

//結果
 1:12  ✓ error  句読点(。、)が閉じ括弧の直前に存在しています                general-novel-style-ja   
 2:7   ✓ error  感嘆符(！)・疑問符(？)の直後にスペースか閉じ括弧が必要です  general-novel-style-ja   
 3:2   ✓ error  連続した三点リーダー(…)の数が偶数ではありません             general-novel-style-ja   
 4:2   ✓ error  連続したダッシュ(―)の数が偶数ではありません                 general-novel-style-ja   
 6:7   ✓ error  連続した句読点(。、)が使われています                        general-novel-style-ja   
 7:7   ✓ error  連続した中黒(・)が使われています                            general-novel-style-ja   
 8:7   ✓ error  連続した長音符(ー)が使われています                          general-novel-style-ja   
 9:7   ✓ error  マイナス記号(−)の直後が数字ではありません                   general-novel-style-ja   
 10:1   ✓ error  段落の先頭に許可されていない文字が存在しています            general-novel-style-ja   
 10:1   ✓ error  2桁を超えるアラビア数字が使われています                     general-novel-style-ja   
 11:1   ✓ error  段落の先頭に許可されていない文字が存在しています            general-novel-style-ja   
 11:1   ✓ error  2桁を超えるアラビア数字が使われています                     general-novel-style-ja  
```



#### textlint-rule-use-si-units
[textlint-rule-use-si-units](https://github.com/kn1cht/textlint-rule-use-si-units)
国際単位系(SI)の単位以外の使用を検出




##### インストール
```:terminal
npm install textlint-rule-use-si-units
```

#### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "use-si-units": true
  }
}
```


##### サンプル
```:test.txt
鈴木はいつも3 m/sec で歩く
```

##### 実行
```:terminal
npx textlint test.txt

//結果
  1:9  error  「m/sec」には、SI単位系で使用できない文字が含まれています。SI単位系を使用してください。  use-si-units
```




##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "use-si-units": {
      "allowedUnits": [
        "m/sec"
      ],
      "restrictNonSIUnits": true
    }
  }
}
```

|項目|内容|値|デフォルト|
|---|---|---|---|
|allowedUnits|許容するSI単位系に従っていない単位|文字列の配列|""|
|restrictNonSIUnits|SI併用単位の使用禁止|true/false|false|


##### サンプル
```:test.txt
鈴木はいつも3 m/sec で歩く
家の畑は3 ha
```


##### 実行
```:terminal
npx textlint test.txt

//結果
 2:7  error  「ha」には、SI単位系で使用できない文字が含まれています。SI単位系を使用してください。  use-si-units
```




#### textlint-rule-joyo-kanji
[textlint-rule-joyo-kanji](https://github.com/kongou-ae/textlint-rule-joyo-kanji)
常用漢字を使っているかチェックするtextlintルール



##### インストール
```:terminal
npm install textlint-rule-joyo-kanji
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "joyo-kanji": true
  }
}
```

##### サンプル
```:test.txt
蛙
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:1  error  「蛙」は常用漢字ではありません。  joyo-kanji
```


#### textlint-rule-jis-charset
[textlint-rule-jis-charset](https://github.com/lostandfound/textlint-rule-jis-charset)
JIS X 0213:2004(JIS2004)範囲外の文字を検出


##### インストール
```:terminal
npm install textlint-rule-jis-charset
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "jis-charset": true
  }
}
``` 



##### サンプル
```:test.txt
魨
```

##### 実行
```:terminal
npx textlint test.txt
 
//結果
 1:1  error  「魨」はJIS X 2013範囲外の文字です。  jis-charset
```



#### textlint-rule-no-hoso-kinshi-yogo
[textlint-rule-no-hoso-kinshi-yogo](https://github.com/blue-hood/textlint-rule-no-hoso-kinshi-yogo)
放送禁止用語を検出
自動変換対応


##### インストール
```:terminal
npm install textlint-rule-no-hoso-kinshi-yogo
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "no-hoso-kinshi-yogo": true
  }
}
``` 


##### サンプル
```:test.txt
うんこ
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 1:1  error  放送禁止用語「うんこ」が含まれています。　言い換え語: 大便, うんち　備考: 幼児語の「うん ち」は可。2005/10/19「トリビアの泉」でうんこに関するネタが紹介され連呼された。バラエティの文脈では可か 　参照: http://monoroch.net/kinshi/  no-hoso-kinshi-yogo
```



### フィルター
※ルールから除外するものなので、動作確認にはルール設定必須






#### textlint-filter-rule-ja-named-entities
[textlint-filter-rule-ja-named-entities](https://github.com/textlint-ja/textlint-filter-rule-ja-named-entities)
固有名詞や、日付表現、時間表現などをエラーから除外する


##### インストール
```:terminal
npm install textlint-filter-rule-ja-named-entities
```

##### .textlintrc.json
```.textlintrc.json
{
  "filters": {
    "ja-named-entities": true
  },
  "rules": {
    "sentence-length": {
      "max": 4
    }
  }
}
``` 


##### サンプル
```:test.txt
デューク・エイセス
```

##### 実行
```:terminal
npx textlint test.txt
 
//結果
 (5文字以上だがエラーなし)
```









#### textlint-filter-rule-comments
[textlint-filter-rule-comments](https://github.com/textlint/textlint-filter-rule-comments)
コメントディレクティブを使用してエラーを無視する	



##### インストール
```:terminal
npm install textlint-filter-rule-comments
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "textlint-rule-no-dropping-the-ra": true
  },
  "filters": {
    "comments": true
  }
}
```

##### サンプル
```:test.md
<!-- textlint-disable -->
食べれる
<!-- textlint-enable -->
来れる
```

#### 実行
```:terminal
npx textlint test.md

//結果
 4:3  error  ら抜き言葉を使用しています。  textlint-rule-no-dropping-the-ra
```







#### textlint-filter-rule-allowlis
[textlint-filter-rule-allowlis](https://github.com/textlint/textlint-filter-rule-allowlist)
リストを許可することで任意の単語を許容する

##### インストール
```:terminal
npm install textlint-filter-rule-allowlist
```


##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-hiragana-keishikimeishi": true,
    "no-dropping-the-ra": true
  },
  "filters": {
    "allowlist": {
      "allow": [
        "/来れる/"
      ]
    }
  }
}
``` 


##### サンプル
```:test.txt
来れる
後悔する度に
```

##### 実行
```:terminal
npx textlint test.txt

//結果
 2:6  ✓ error  ひらがなで表記したほうが読みやすい形式名詞: 度 => たび  ja-hiragana-keishikimeishi  
```
「来れる」を許可リストに加えたので、検出されなくなった




#### textlint-filter-rule-node-types
[textlint-filter-rule-node-types](https://github.com/textlint/textlint-filter-rule-node-types)
ノード タイプを指定して、エラーをフィルタリング


##### インストール
```:terminal
npm install textlint-filter-rule-node-types
```

##### .textlintrc.json
```:.textlintrc.json
{
  "rules": {
    "ja-hiragana-keishikimeishi": true,
    "no-dropping-the-ra": true
  },
  "filters": {
    "node-types": {
      "nodeTypes": [
        "BlockQuote"
      ]
    }
  }
}
```


##### サンプル
```:test.md
 > 来れる
 > 後悔する度に
 
 来れる
 後悔する度に
``` 


##### 実行
```:terminal
npx textlint test.txt

//結果
 4:2  error    ら抜き言葉を使用しています。                            no-dropping-the-ra
 5:5  ✓ error  ひらがなで表記したほうが読みやすい形式名詞: 度 => たび  ja-hiragana-keishikimeishi 
```





### プラグイン

|プラグイン|説明|
|---|---|
|[textlint-plugin-html](https://github.com/textlint/textlint-plugin-html)|HTMLのサポート|
|[textlint-plugin-review](https://github.com/orangain/textlint-plugin-review)|Re:VIEWのサポート|
|[textlint-plugin-rst](https://github.com/jimo1001/textlint-plugin-rst)|reStructuredText(*.rst) のサポート|
|[textlint-plugin-satsuki](https://github.com/7pairs/textlint-plugin-satsuki)|さつき記法のサポート|
|[textlint-plugin-latex2e](https://github.com/ta2gch/textlint-plugin-latex2e)|LaTeXのサポート|	
|[textlint-plugin-asciidoctor](https://github.com/seikichi/textlint-plugin-asciidoctor)|asciidoctor.jsを使用したAsciidoctorサポート|
|[textlint-plugin-jsx](https://github.com/blue-hood/textlint-plugin-jsx)|JSXとTSX supportのサポート|


### ルールプリセット

|プリセット|説明|
|---|---|
|[textlint-rule-preset-foreign-language-writing](https://github.com/textlint-ja/textlint-rule-preset-foreign-language-writing)|カタカナ表記|
|[textlint-rule-preset-japanese](https://github.com/textlint-ja/textlint-rule-preset-japanese)|日本語向け|
|[textlint-rule-preset-JTF-style](https://github.com/textlint-ja/textlint-rule-preset-JTF-style)|JTF日本語標準スタイルガイド
|[textlint-rule-preset-ja-spacing](https://github.com/textlint-ja/textlint-rule-preset-ja-spacing)|スペース周りのスタイル|
|[textlint-rule-preset-ja-technical-writing](https://github.com/textlint-ja/textlint-rule-preset-ja-technical-writing)|技術文書向け|
|[textlint-rule-preset-smarthr](https://github.com/kufu/textlint-rule-preset-smarthr)|SmartHR	
|[textlint-rule-preset-bengo4](https://github.com/bengo4/textlint-rule-preset-bengo4)|弁護士ドットコム|
|[textlint-rule-preset-ja-engineering-paper](https://github.com/kn1cht/textlint-rule-preset-ja-engineering-paper)|日本語の工学系論文向け|
|[textlint-rule-preset-icsmedia](https://github.com/ics-creative/textlint-rule-preset-icsmedia)|ICS MEDIA|