textlint
自然言語対象のlinter
できること
- 校正ルールの自作
- 校正ルールを組み合わせて独自のルールセット作成
対応するファイル形式
- テキストファイル(.txt)
- Markdownファイル(.md)
準備
npmの初期化
npm init -y
textlintをインストール
npm install textlint
ルールの導入
ルール「ら抜き言葉を検出」をインストール
npm install textlint-rule-no-dropping-the-ra
動作確認用ファイル作成
来れる
後悔する度に
textlintを実行
npx textlint --rule textlint-rule-no-dropping-the-ra test.txt
//結果 「ら抜き言葉の使用」を検出
1:2 error ら抜き言葉を使用しています。 no-dropping-the-ra
ルール「ひらがなで表記したほうが読みやすい形式名詞を検出」をインストール
npm install textlint-rule-ja-hiragana-keishikimeishi
textlintを実行
npx textlint --rule textlint-rule-ja-hiragana-keishikimeishi test.txt
//結果 「ひらがなで表記したほうが読みやすい形式名詞」を検出
2:5 ✓ error ひらがなで表記したほうが読みやすい形式名詞: 度 => たび ja-hiragana-keishikimeishi
※検出時に✔ アイコンが付いてるものは自動修正に対応
自動修正
npx textlint --fix --rule textlint-rule-ja-hiragana-keishikimeishi test.txt
//結果
2:5 ✔ ひらがなで表記したほうが読みやすい形式名詞: 度 => たび ja-hiragana-keishikimeishi
複数ルールを同時に使う場合
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ファイルの作成
npx textlint --init
.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の「たび」は「度」に戻してから実行しています
npx textlint test.txt
//結果
1:2 error ら抜き言葉を使用しています。 no-dropping-the-ra
2:5 ✓ error ひらがなで表記したほうが読みやすい形式名詞: 度 => たび ja-hiragana-keishikimeishi
textlintを実行する(自動修正)
npx textlint --fix test.txt
//結果
2:5 ✔ ひらがなで表記したほうが読みやすい形式名詞: 度 => たび ja-hiragana-keishikimeishi
フィルタールールの導入
.textlintrc.jsonのfiltersフィールドで、ルールを無視する設定が可能
フィルタールール「指定した範囲でルール無効化」をインストール
textlint-filter-rule-commentsのインストール
npm install textlint-filter-rule-comments
.textlintrcにfiltersフィールドを追加
{
"rules": {
"textlint-rule-no-dropping-the-ra": true
},
"filters": {
"comments": true
}
}
フィルタールールの動作確認
<!-- textlint-disable -->
と<!-- textlint-enable -->
の間でルールを無効化できる
<!-- textlint-disable -->
食べれる
<!-- textlint-enable -->
来れる
textlintを再実行すると<!-- textlint-enable -->
に続く「ら抜き言葉」のみエラーが表示されている
textlintで無視するファイルの指定
.textlintignoreファイルを作成する
# Ignore file:
ignored.md
# Ignore by glob pattern:
vendor/**
プラグイン
textlintをHTMLに適用できるようにする
textlint-plugin-htmlのインストール
npm install textlint-plugin-html
.textlintrcにpluginsフィールドを追加
{
rules": {
"textlint-rule-no-dropping-the-ra": true
},
"filters": {
"comments": true
},
"plugins": [
"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の実行
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
文末の句点(。)の統一 と 抜けを検出
インストール
npm install textlint-rule-ja-no-mixed-period
.textlintrc.json
{
"rules": {
"ja-no-mixed-period": true
}
}
サンプル
山へ芝刈りに行きました
実行
npx textlint test.txt
//結果
1:11 error 文末が"。"で終わっていません。 ja-no-mixed-period
textlint-rule-ja-unnatural-alphabet
textlint-rule-ja-unnatural-alphabet
不自然なアルファベットを検出
インストール
npm install textlint-rule-ja-unnatural-alphabet
.textlintrc.json
{
"rules": {
"ja-unnatural-alphabet": true
}
}
サンプル
こんにちhは
実行
npx textlint test.txt
//結果
1:5 error 不自然なアルファベットがあります: h ja-unnatural-alphabet
textlint-rule-no-doubled-conjunction]
textlint-rule-no-doubled-conjunction
同じ接続詞が連続している場合に検出
インストール
npm install textlint-rule-no-doubled-conjunction
.textlintrc.json
{
"rules": {
"no-doubled-conjunction": true
}
}
サンプル
今日は晴れ。しかし明日は雨。しかし明後日は雪。
実行
npx textlint test.txt
//結果
1:15 error 同じ接続詞(しかし)が連続して使われています。 no-doubled-conjunction
textlint-rule-max-kanji-continuous-len
textlint-rule-max-kanji-continuous-len
漢字が連続する最大文字数を制限する
インストール
npm install textlint-rule-max-kanji-continuous-len
.textlintrc.json
{
"rules": {
"max-kanji-continuous-len": true
}
}
サンプル
共同不法行為
鬼鬼鬼鬼鬼鬼
実行
npx textlint test.txt
//結果
1:1 error 漢字が6つ以上連続しています: 共同不法行為 max-kanji-continuous-len
2:1 error 漢字が6つ以上連続しています: 鬼鬼鬼鬼鬼鬼 max-kanji-continuous-len
.textlintrc.json
{
"rules": {
"max-kanji-continuous-len": {
"max": 5,
"allow": ["共同不法行為"]
}
}
}
項目 | 内容 | 値 | デフォルト |
---|---|---|---|
max | 許容する漢字の連続の長さ | 数値 | 5 |
allow | 許容する長さを超えても例外として許可する言葉 | 配列(文字列) |
サンプル
共同不法行為
鬼鬼鬼鬼鬼鬼
実行
npx textlint test.txt
//結果
2:1 error 漢字が6つ以上連続しています: 鬼鬼鬼鬼鬼鬼 max-kanji-continuous-len
textlint-rule-no-synonyms
textlint-rule-no-synonyms
同義語の表記ゆれを検出
自動修正一部対応
インストール
npm install @textlint-ja/textlint-rule-no-synonyms sudachi-synonyms-dictionary
.textlintrc.json
{
"rules": {
"@textlint-ja/no-synonyms": true
}
}
実行
npx textlint test.txt
//結果
1:5 error 同義語である「アプリ」と「アプリケーションソフト」が利用されています @textlint-ja/no-synonyms
2:6 error 同義語である「サーバー」と「サーバ」が利用されています @textlint-ja/no-synonyms
.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 |
サンプル
アプリとアプリケーションソフト
サーバーとサーバ
ブログとblog
1と一
toiletとトイレ
実行
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
敬体(ですます調)と常体(である調)の混在を検出
本文、見出し、箇条書きをそれぞれ独立してチェック
例:本文と見出しの間で表記が混在していても問題にしない
インストール
npm install textlint-rule-no-mix-dearu-desumasu
.textlintrc.json
{
"rules": {
"no-mix-dearu-desumasu": true
}
}
サンプル
# 犬です
犬は哺乳類である
# 猿である
猿は哺乳類です
# 雉です
- 鳥類です
- 哺乳類ではないのである
実行
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
{
"rules": {
"no-mix-dearu-desumasu": {
"preferInHeader": "",
"preferInBody": "ですます",
"preferInList": "である",
"strict": true
}
}
}
項目 | 内容 | 値 |
---|---|---|
preferInHeader | 見出し | ""(自動)/"である"/"ですます"(デフォルト:"") |
preferInBody | 本文 | ""(自動)/"である"/"ですます"(デフォルト:"") |
preferInList | 箇条書き | ""(自動)/"である"/"ですます"(デフォルト:"") |
strict | 文末以外でもチェックする | true/false(デフォルト:false) |
サンプル
# 犬です
犬は哺乳類である
# 猿である
猿は哺乳類です
# 雉です
- 鳥類です
- 哺乳類ではないのである
実行
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
サ抜き、サ入れ表現の誤用を検出
自動修正対応
インストール
npm install @textlint-ja/textlint-rule-no-insert-dropping-sa
.textlintrc.json
{
"rules": {
"@textlint-ja/textlint-rule-no-insert-dropping-sa": true
}
}
サンプル
きびだんごを食べたさそう。
財宝は無そう。
実行
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
弱い表現の利用を検出
インストール
npm install textlint-rule-ja-no-weak-phrase
.textlintrc.json
{
"rules": {
"ja-no-weak-phrase": true
}
}
サンプル
かもしれない運転していないと思う
したと思います
実行
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
文中に同じ助詞が複数出てくるのを検出
インストール
npm install textlint-rule-no-doubled-joshi
.textlintrc.json
{
"rules": {
"no-doubled-joshi": true
}
}
サンプル
昨日も今日も雨
昨日も!今日も!雨
明日や明後日や明々後日や雨
実行
npx textlint test.txt
//結果
1:6 error 一文に二回以上利用されている助詞 "も" がみつかりました。 no-doubled-joshi
3:7 error 一文に二回以上利用されている助詞 "や" がみつかりました。 no-doubled-joshi
3:12 error 一文に二回以上利用されている助詞 "や" がみつかりました。 no-doubled-joshi
.textlintrc.json
{
"rules": {
"no-doubled-joshi": {
"min_interval" : 1,
"strict": false,
"allow": ["や"],
"separatorCharacters": [
".",
".",
"。",
"?",
"!",
"?",
"!"
],
"commaCharacters": [
"、",
","
]
}
}
}
項目 | 内容 | 値 | デフォルト |
---|---|---|---|
min_interval | 助詞の最低間隔値 | 数値 | 1 |
strict | 厳しくチェックするかどうか | true/false | false |
allow | 複数回の出現を許す助詞 | 文字の配列 | [] |
separatorCharacters | 文の区切り文字の配列(区切ると、別の文扱いになる) | 文字の配列 | [".", ".", "。", "?", "!", "?", "!"] |
commaCharacters | 句点となる文字の配列 | 文字の配列 | ["、", ","] |
サンプル
昨日も今日も雨
昨日も!今日も!雨
明日や明後日や明々後日や雨
実行
npx textlint test.txt
//結果
1:6 error 一文に二回以上利用されている助詞 "も" がみつかりました。 no-doubled-joshi
textlint-rule-max-ten
textlint-rule-max-ten
一文に利用できる「、」の数を制限
(名詞に挟まれた読点はカウントしない)
インストール
npm install textlint-rule-max-ten
.textlintrc.json
{
"rules": {
"max-ten": true,
}
}
サンプル
こんにちは、今日は、大阪に、たこ焼きを、食べに、行きます。
こんにちは,今日は,大阪に,たこ焼きを,食べに,行きます。
大阪、京都、兵庫、奈良、滋賀、和歌山
大阪,京都,兵庫,奈良,滋賀,和歌山
実行
npx textlint test.txt
//結果
1:20 error 一つの文で"、"を4つ以上使用しています max-ten
.textlintrc.json
{
"rules": {
"max-ten": {
"max": 3,
"strict": false,
"touten": ",",
"kuten": "。"
}
}
}
項目 | 内容 | 値 | デフォルト |
---|---|---|---|
max | 許容される「、」の数 | 数値 | 3 |
strict | 名詞に挟まれた読点はカウントする | true/false | false |
touten | 読点として扱う文字の指定 | 「、」 | |
kuten | 句点として扱う文字の指定 | 「。」 |
サンプル
こんにちは、今日は、大阪に、たこ焼きを、食べに、行きます。
こんにちは,今日は,大阪に,たこ焼きを,食べに,行きます。
大阪、京都、兵庫、奈良、滋賀、和歌山
大阪,京都,兵庫,奈良,滋賀,和歌山
実行
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
全角と半角アルファベットの混在を検出
自動修正対応
インストール
npm install textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet
.textlintrc.json
{
"rules": {
"no-mixed-zenkaku-and-hankaku-alphabet": true
}
}
サンプル
yamada
yamada
実行
npx textlint test.txt
//結果
2:1 ✓ error アルファベットは「半角」で表記します。 no-mixed-zenkaku-and-hankaku-alphabet
.textlintrc.json
{
"rules": {
"no-mixed-zenkaku-and-hankaku-alphabet": {
"prefer": "全角"
}
}
}
項目 | 内容 | 値 | デフォルト |
---|---|---|---|
prefer | 全角か半角かの指定 | 全角/半角 | "半角" |
サンプル
yamada
yamada
実行
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
表記ゆれを検出
インストール
npm install textlint-rule-ja-no-orthographic-variants
.textlintrc.json
{
"rules": {
"ja-no-orthographic-variants": true
}
}
サンプル
お問い合わせとお問合せは表記ゆれしやすい
実行
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
教育漢字ではない漢字を検出
インストール
npm install textlint-rule-ja-kyoiku-kanji
.textlintrc.json
{
"rules": {
"ja-kyoiku-kanji": true
}
}
サンプル
拉麺
雨
雲
寒
季
桜
異
実行
npx textlint test.txt
//結果
1:1 error 教育漢字ではない漢字「拉」が含まれています。 ja-kyoiku-kanji
1:2 error 教育漢字ではない漢字「麺」が含まれています。 ja-kyoiku-kanji
.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 |
サンプル
拉麺
雨
雲
寒
季
桜
異
実行
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
常用漢字または人名用漢字以外を検出
インストール
npm install textlint-rule-ja-joyo-or-jinmeiyo-kanji
.textlintrc.json
{
"rules": {
"ja-joyo-or-jinmeiyo-kanji": true
}
}
サンプル
蛙
実行
npx textlint test.txt
//結果
1:1 error 常用漢字でも人名用漢字でもない漢字「蛙」が含まれています。 ja-joyo-or-jinmeiyo-kanji
textlint-rule-ja-no-inappropriate-words
textlint-rule-ja-no-inappropriate-words
不適切表現を検出
インストール
npm install textlint-rule-ja-no-inappropriate-words
.textlintrc.json
{
"rules": {
"ja-no-inappropriate-words": true
}
}
サンプル
童貞
実行
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
文中の接続助詞「が」の重複を検出
インストール
npm install textlint-rule-no-doubled-conjunctive-particle-ga
.textlintrc.json
{
"rules": {
"no-doubled-conjunctive-particle-ga": true,
}
}
サンプル
今日は晴れたが、暑くはなかったが、やる気はでなかった。
実行
npx textlint test.txt
//結果
1:7 error 文中に逆接の接続助詞 "が" が二回以上使われています。 no-doubled-conjunctive-particle-ga
textlint-rule-ja-no-redundant-expression
textlint-rule-ja-no-redundant-expression
冗長な表現を検出
自動修正対応
インストール
npm install textlint-rule-ja-no-redundant-expression
.textlintrc.json
{
"rules": {
"ja-no-redundant-expression": true
}
}
サンプル
議論を行う
実行
npx textlint test.txt
//結果
1:1 error 【dict5】 "議論を行う"は冗長な表現です。"議論する"など簡潔な表現にすると文章が明瞭になります。
.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]+を.?実行/"] |
サンプル
議論を行う
実行
npx textlint test.txt
//結果
(エラーなし)
textlint-rule-no-double-negative-ja
textlint-rule-no-double-negative-ja
二重否定を検出
インストール
npm install textlint-rule-no-double-negative-ja
.textlintrc.json
{
"rules": {
"no-double-negative-ja": true
}
}
サンプル
昨日は寒かったといえなくもない。
実行
npx textlint test.txt
//結果
1:14 error 二重否定: 〜なくもない no-double-negative-ja
textlint-rule-no-dropping-the-ra
textlint-rule-no-dropping-the-ra
ら抜き言葉を検出
インストール
npm install textlint-rule-no-dropping-the-ra
.textlintrc.json
{
"rules": {
"no-dropping-the-ra": true
}
}
サンプル
辛いものは食べれない。
実行
npx textlint test.txt
//結果
1:8 error ら抜き言葉を使用しています。 no-dropping-the-ra
textlint-rule-ja-no-abusage
textlint-rule-ja-no-abusage
よくある日本語の誤用を検出
自動修正対応
インストール
npm install textlint-rule-ja-no-abusage
.textlintrc.json
{
"rules": {
"ja-no-abusage": true
}
}
サンプル
アップデートを適応する
実行
npx textlint test.txt
//結果
1:7 ✓ error "適用"の誤用である可能性があります。適応 => 適用 ja-no-abusage
textlint-rule-no-dropping-i
textlint-rule-no-dropping-i
い抜き言葉を検出
インストール
npm install @textlint-ja/textlint-rule-no-dropping-i
.textlintrc.json
{
"rules": {
"@textlint-ja/textlint-rule-no-dropping-i": true
}
}
サンプル
昼食食べてます。
実行
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の利用を禁止
自動修正対応
インストール
npm install textlint-rule-no-nfd
.textlintrc.json
{
"rules": {
"no-nfd": true
}
}
サンプル
アレクセイ・ハ゜シ゛トノフ
実行
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
同一の単語を間違えて連続しているのを検出
インストール
npm install textlint-rule-ja-no-successive-word
.textlintrc.json
{
"rules": {
"ja-no-successive-word": true
}
}
サンプル
古いスマホのの反応はは、カクカク、ダルダル
実行
npx textlint test.txt
//結果
1:7 error "の" が連続して2回使われています。 ja-no-successive-word
1:11 error "は" が連続して2回使われています。 ja-no-successive-word
.textlintrc.json
{
"rules": {
"ja-no-successive-word": {
"allowOnomatopee": false,
"allow": [
"カク"
]
}
}
}
項目 | 内容 | 値 | デフォルト |
---|---|---|---|
allowOnomatopee | カクカク、ダルダルなどを許すかどうか | true/false | true |
allow | allowOnomatopeeがfalseの場合でも許可するものを列記 | 文字の配列 | "" |
サンプル
古いスマホのの反応はは、カクカク、ダルダル
実行
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
例示・並列・対表現の「〜たり〜たりする」を検出
インストール
npm install textlint-rule-prefer-tari-tari
.textlintrc.json
{
"rules": {
"prefer-tari-tari": true
}
}
サンプル
扉を開いたり閉じている
実行
npx textlint test.txt
//結果
1:10 error 例示・並列・対表現において、片方の動詞が「〜たり」表現な場合は、もう片方の動詞も「〜たり」とします。 prefer-tari-tari
textlint-rule-no-filler
textlint-rule-no-filler
フィラー(つなぎ表現)を検出
例
- ええと
- あの
- まあ
など
インストール
npm install @textlint-ja/textlint-rule-no-filler
.textlintrc.json
{
"rules": {
"@textlint-ja/no-filler": true
}
}
サンプル
ええと、昨日の朝は何を食べたっけ?
実行
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
同じ文末表現が連続しているのを検出
インストール
npm install textlint-rule-no-duplicated-bunmatsu-hyougen
.textlintrc.json
{
"rules": {
"no-duplicated-bunmatsu-hyougen": true
}
}
サンプル
山田は友人です。田中は友人です。
鈴木は友人ではないです。
加藤は友人ではないです。
実行
npx textlint test.txt
//結果
1:16 error 文末表現 "は友人です。" が連続しています。 no-duplicated-bunmatsu-hyougen
textlint-rule-no-hankaku-kana
textlint-rule-no-hankaku-kana
半角カナを検出
インストール
npm install textlint-rule-no-hankaku-kana
.textlintrc.json
{
"rules": {
"no-hankaku-kana": true
}
}
サンプル
コンニチハ
コンニチハ
実行
npx textlint test.txt
//結果
2:1 error Disallow to use 半角カタカナ: "コンニチハ" no-hankaku-kana
textlint-rule-ja-hiragana-keishikimeishi
textlint-rule-ja-hiragana-keishikimeishi
ひらがなで表記したほうが読みやすい形式名詞を検出
自動修正対応
インストール
npm install textlint-rule-ja-hiragana-keishikimeishi
.textlintrc.json
{
"rules": {
"ja-hiragana-keishikimeishi": true
}
}
サンプル
破産する度に、家族に助けてもらう
実行
npx textlint test.txt
//結果
1:5 ✓ error ひらがなで表記したほうが読みやすい形式名詞: 度 => たび ja-hiragana-keishikimeishi
textlint-rule-no-insert-re
textlint-rule-no-insert-re
れ足す言葉を検出
インストール
npm install @textlint-ja/textlint-rule-no-insert-re
.textlintrc.json
{
"rules": {
"@textlint-ja/textlint-rule-no-insert-re": true
}
}
サンプル
お金を貯めれない
実行
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
辞書を作って校正
インストール
npm install textlint-rule-ja-simple-user-dictionary
.textlintrc.json
{
"rules": {
"ja-simple-user-dictionary": {
"dictionary": [
{
"pattern": "typo"
},
{
"pattern": "コンプューター",
"message": "「コンプューター」ではなく「コンピューター」です。"
}
]
}
}
}
サンプル
コンプューター
実行
npx textlint test.txt
//結果
1:1 error 「コンプューター」ではなく「コンピューター」です。 ja-simple-user-dictionary
textlint-rule-sentence-length
textlint-rule-sentence-length
センテンスの文字が101以上のものを検出
(オプションで変更可能)
インストール
npm install textlint-rule-sentence-length
.textlintrc.json
{
"rules": {
"sentence-length": true
}
}
サンプル
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助
実行
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
{
"rules": {
"sentence-length": {
"max": 100,
"skipPatterns": [
"/寿限無/"
],
"skipUrlStringLink": true
}
}
}
項目 | 説明 | 値 | デフォルト |
---|---|---|---|
max | 許容する最大文字数 | 数値 | 100 |
skipPatterns | カウントしないパターンの指定 | 正規表現 | |
skipUrlStringLink | URLの文字列をカウントしない | true/false | true |
サンプル
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助
実行
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以上のものを検出
(オプションで変更可能)
インストール
npm install textlint-rule-first-sentence-length
.textlintrc.json
{
"rules": {
"first-sentence-length": true
}
}
サンプル
# セクション 1
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助
# セクション 2
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。
実行
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
{
"rules": {
"sentence-length": {
"max": 109
}
}
}
サンプル
# セクション 1
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助
# セクション 2
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。
寿限無寿限無五劫のすり切海砂利水魚の水行末雲来末風来末食う寝るところに住むところやぶら小路のぶら小路パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナの長久命の長助。
実行
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つずつ増加しているか
インストール
npm install -D textlint textlint-rule-incremental-headers
.textlintrc.json
{
"rules": {
"incremental-headers": true
}
}
サンプル
## セクション 1
##### セクション 2
# セクション 3
実行
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
漢字よりもひらがなで表記したほうが読みやすい副詞を検出
自動変対応
インストール
npm install textlint-rule-ja-hiragana-fukushi
.textlintrc.json
{
"rules": {
"ja-hiragana-fukushi": true
}
}
サンプル
最早、限界です。
実行
npx textlint test.txt
//結果
1:1 ✓ error ひらがなで表記したほうが読みやすい副詞: "最早" => "もはや" ja-hiragana-fukushi
textlint-rule-ja-hiragana-hojodoushi
textlint-rule-ja-hiragana-hojodoushi
漢字よりもひらがなで表記したほうが読みやすい補助動詞を検出
自動変換対応
インストール
npm install textlint-rule-ja-hiragana-hojodoushi
.textlintrc.json
{
"rules": {
"ja-hiragana-hojodoushi": true
}
}
サンプル
今日で退職致します
実行
npx textlint test.txt
//結果
1:6 ✓ error ひらがなで表記したほうが読みやすい補助動詞: "致し" => "いたし" ja-hiragana-hojodoushi
textlint-rule-general-novel-style-ja
textlint-rule-general-novel-style-ja
日本の小説における一般的な作法に従わないものを検出
自動修正対応
以下を検出
- 各段落の先頭に全角スペースまたは開き括弧のみを許可
- 閉じ括弧の手前に句読点(。、)を置かない
- 疑問符(?)と感嘆符(!)の直後にスペースを置く
- 連続した三点リーダー(…)の数は偶数にする
- 連続したダッシュ(―)の数は偶数にする
- 連続した句読点(。、)を許可しない
- 連続した中黒(・)を許可しない
- 連続した長音符(ー)を許可しない
- マイナス記号(−)は数字の前にしか許可しない
- アラビア数字は最大2桁までしか許可しない
インストール
npm install textlint-rule-general-novel-style-ja
.textlintrc.json
{
"rules": {
"general-novel-style-ja": true
}
}
サンプル
「こんにちは、山田さん。」
「こんにちは!山田さん」
「………こんにちは」
「―――こんにちは」
「さようなら、、鈴木さん」
「さようなら・・・鈴木さん」
「さようならーーー」
「さようなら−」
2023
2023
実行
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
{
"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 |
サンプル
「こんにちは、山田さん。」
「こんにちは!山田さん」
「………こんにちは」
「―――こんにちは」
「さようなら、、鈴木さん」
「さようなら・・・鈴木さん」
「さようならーーー」
「さようなら−」
2023
2023
実行
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)の単位以外の使用を検出
インストール
npm install textlint-rule-use-si-units
.textlintrc.json
{
"rules": {
"use-si-units": true
}
}
サンプル
鈴木はいつも3 m/sec で歩く
実行
npx textlint test.txt
//結果
1:9 error 「m/sec」には、SI単位系で使用できない文字が含まれています。SI単位系を使用してください。 use-si-units
.textlintrc.json
{
"rules": {
"use-si-units": {
"allowedUnits": [
"m/sec"
],
"restrictNonSIUnits": true
}
}
}
項目 | 内容 | 値 | デフォルト |
---|---|---|---|
allowedUnits | 許容するSI単位系に従っていない単位 | 文字列の配列 | "" |
restrictNonSIUnits | SI併用単位の使用禁止 | true/false | false |
サンプル
鈴木はいつも3 m/sec で歩く
家の畑は3 ha
実行
npx textlint test.txt
//結果
2:7 error 「ha」には、SI単位系で使用できない文字が含まれています。SI単位系を使用してください。 use-si-units
textlint-rule-joyo-kanji
textlint-rule-joyo-kanji
常用漢字を使っているかチェックするtextlintルール
インストール
npm install textlint-rule-joyo-kanji
.textlintrc.json
{
"rules": {
"joyo-kanji": true
}
}
サンプル
蛙
実行
npx textlint test.txt
//結果
1:1 error 「蛙」は常用漢字ではありません。 joyo-kanji
textlint-rule-jis-charset
textlint-rule-jis-charset
JIS X 0213:2004(JIS2004)範囲外の文字を検出
インストール
npm install textlint-rule-jis-charset
.textlintrc.json
{
"rules": {
"jis-charset": true
}
}
サンプル
魨
実行
npx textlint test.txt
//結果
1:1 error 「魨」はJIS X 2013範囲外の文字です。 jis-charset
textlint-rule-no-hoso-kinshi-yogo
textlint-rule-no-hoso-kinshi-yogo
放送禁止用語を検出
自動変換対応
インストール
npm install textlint-rule-no-hoso-kinshi-yogo
.textlintrc.json
{
"rules": {
"no-hoso-kinshi-yogo": true
}
}
サンプル
うんこ
実行
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
固有名詞や、日付表現、時間表現などをエラーから除外する
インストール
npm install textlint-filter-rule-ja-named-entities
.textlintrc.json
{
"filters": {
"ja-named-entities": true
},
"rules": {
"sentence-length": {
"max": 4
}
}
}
サンプル
デューク・エイセス
実行
npx textlint test.txt
//結果
(5文字以上だがエラーなし)
textlint-filter-rule-comments
textlint-filter-rule-comments
コメントディレクティブを使用してエラーを無視する
インストール
npm install textlint-filter-rule-comments
.textlintrc.json
{
"rules": {
"textlint-rule-no-dropping-the-ra": true
},
"filters": {
"comments": true
}
}
サンプル
<!-- textlint-disable -->
食べれる
<!-- textlint-enable -->
来れる
実行
npx textlint test.md
//結果
4:3 error ら抜き言葉を使用しています。 textlint-rule-no-dropping-the-ra
textlint-filter-rule-allowlis
textlint-filter-rule-allowlis
リストを許可することで任意の単語を許容する
インストール
npm install textlint-filter-rule-allowlist
.textlintrc.json
{
"rules": {
"ja-hiragana-keishikimeishi": true,
"no-dropping-the-ra": true
},
"filters": {
"allowlist": {
"allow": [
"/来れる/"
]
}
}
}
サンプル
来れる
後悔する度に
実行
npx textlint test.txt
//結果
2:6 ✓ error ひらがなで表記したほうが読みやすい形式名詞: 度 => たび ja-hiragana-keishikimeishi
「来れる」を許可リストに加えたので、検出されなくなった
textlint-filter-rule-node-types
textlint-filter-rule-node-types
ノード タイプを指定して、エラーをフィルタリング
インストール
npm install textlint-filter-rule-node-types
.textlintrc.json
{
"rules": {
"ja-hiragana-keishikimeishi": true,
"no-dropping-the-ra": true
},
"filters": {
"node-types": {
"nodeTypes": [
"BlockQuote"
]
}
}
}
サンプル
> 来れる
> 後悔する度に
来れる
後悔する度に
実行
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 |