1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

textlint

Last updated at Posted at 2023-02-17

textlint

textlint
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

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

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

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

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

付録

ルール

textlint-rule-ja-no-mixed-period

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
不自然なアルファベットを検出

インストール
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
同じ接続詞が連続している場合に検出

インストール
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
漢字が連続する最大文字数を制限する

インストール
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
同義語の表記ゆれを検出
自動修正一部対応

インストール
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 定義された文字列以外の同義語をエラーする
(例:ユーザを指定すると、ユーザーはエラーになる)
配列(文字列)
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
敬体(ですます調)と常体(である調)の混在を検出

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

インストール
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
サ抜き、サ入れ表現の誤用を検出
自動修正対応

インストール
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
弱い表現の利用を検出

インストール
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
文中に同じ助詞が複数出てくるのを検出

インストール
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
一文に利用できる「、」の数を制限
(名詞に挟まれた読点はカウントしない)

インストール
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
全角と半角アルファベットの混在を検出
自動修正対応

インストール
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
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
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
表記ゆれを検出

インストール
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
教育漢字ではない漢字を検出

インストール
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
常用漢字または人名用漢字以外を検出

インストール
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
不適切表現を検出

インストール
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
文中の接続助詞「が」の重複を検出

インストール
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
冗長な表現を検出
自動修正対応

インストール
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)
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
二重否定を検出

インストール
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
ら抜き言葉を検出

インストール
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
よくある日本語の誤用を検出
自動修正対応

インストール
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
い抜き言葉を検出

インストール
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
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
同一の単語を間違えて連続しているのを検出

インストール
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
例示・並列・対表現の「〜たり〜たりする」を検出

インストール
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
フィラー(つなぎ表現)を検出

  • ええと
  • あの
  • まあ
    など
インストール
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
同じ文末表現が連続しているのを検出

インストール
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
半角カナを検出

インストール
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
ひらがなで表記したほうが読みやすい形式名詞を検出
自動修正対応

インストール
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
れ足す言葉を検出

インストール
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
辞書を作って校正

インストール
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
センテンスの文字が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

セクションの最初のセンテンスの文字が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
次の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  ##の後に#####が来ています。段落は1つずつ下げてください。  incremental-headers
 5:1  error  ページの先頭以外で#が見つかりました。                      incremental-headers

textlint-rule-ja-hiragana-fukushi

textlint-rule-ja-hiragana-fukushi
漢字よりもひらがなで表記したほうが読みやすい副詞を検出
自動変対応

インストール
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
漢字よりもひらがなで表記したほうが読みやすい補助動詞を検出
自動変換対応

インストール
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
日本の小説における一般的な作法に従わないものを検出
自動修正対応

以下を検出

  • 各段落の先頭に全角スペースまたは開き括弧のみを許可
  • 閉じ括弧の手前に句読点(。、)を置かない
  • 疑問符(?)と感嘆符(!)の直後にスペースを置く
  • 連続した三点リーダー(…)の数は偶数にする
  • 連続したダッシュ(―)の数は偶数にする
  • 連続した句読点(。、)を許可しない
  • 連続した中黒(・)を許可しない
  • 連続した長音符(ー)を許可しない
  • マイナス記号(−)は数字の前にしか許可しない
  • アラビア数字は最大2桁までしか許可しない
インストール
terminal
npm install textlint-rule-general-novel-style-ja
.textlintrc.json
.textlintrc.json
{
  "rules": {
    "general-novel-style-ja": true
  }
}
サンプル
test.txt
「こんにちは、山田さん。」
「こんにちは!山田さん」
「………こんにちは」
「―――こんにちは」

「さようなら、、鈴木さん」
「さようなら・・・鈴木さん」
「さようならーーー」
「さようなら−」
2023
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
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
国際単位系(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
常用漢字を使っているかチェックする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
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
放送禁止用語を検出
自動変換対応

インストール
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
固有名詞や、日付表現、時間表現などをエラーから除外する

インストール
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
コメントディレクティブを使用してエラーを無視する

インストール
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
リストを許可することで任意の単語を許容する

インストール
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
ノード タイプを指定して、エラーをフィルタリング

インストール
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 HTMLのサポート
textlint-plugin-review Re:VIEWのサポート
textlint-plugin-rst reStructuredText(*.rst) のサポート
textlint-plugin-satsuki さつき記法のサポート
textlint-plugin-latex2e LaTeXのサポート
textlint-plugin-asciidoctor asciidoctor.jsを使用したAsciidoctorサポート
textlint-plugin-jsx JSXとTSX supportのサポート

ルールプリセット

プリセット 説明
textlint-rule-preset-foreign-language-writing カタカナ表記
textlint-rule-preset-japanese 日本語向け
textlint-rule-preset-JTF-style JTF日本語標準スタイルガイド
textlint-rule-preset-ja-spacing スペース周りのスタイル
textlint-rule-preset-ja-technical-writing 技術文書向け
textlint-rule-preset-smarthr SmartHR
textlint-rule-preset-bengo4 弁護士ドットコム
textlint-rule-preset-ja-engineering-paper 日本語の工学系論文向け
textlint-rule-preset-icsmedia ICS MEDIA
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?