前回記事でtextlintで文章校正を見直しました。ただ、校正を見直すのは良いのですがインストールしたrule
について書き手がしっかりと理解することも大事だと思います。今回はtextlint-rule-preset-ja-technical-writing
のruleプリセットについて少しだけ掘り下げていきます。
- textlint-rule-preset-ja-technical-writingに含まれているルール一覧
- ruleを掘り下げていく
- まとめ
- 参考
textlint-rule-preset-ja-technical-writingに含まれているルール一覧
表でまとめてみました。
ruleを掘り下げていく
今回は以下のルールについて掘り下げてみました。
- textlint-rule-sentence-length
- textlint-rule-max-comma
- textlint-rule-max-ten
- textlint-rule-max-kanji-continuous-len
- textlint-rule-preset-JTF-style
- textlint-rule-no-mix-dearu-desumasu
- textlint-ja/textlint-rule-ja-no-mixed-period
また、以降で実際に試した内容については以下リポジトリにあげてあります。 github.com
textlint-rule-preset-ja-technical-writing
このrule
は長過ぎる文についてチェックを行います。デフォルト値は100です。以下のとおり試してみます。
textlint
のコマンドを実行すると以下の通り、エラーとなります。
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-sentence-length/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-sentence-length/file.md 11:1 error Line 11 sentence length(101) exceeds the maximum sentence length of 100. Over 1 characters ja-technical-writing/sentence-length ✖ 1 problem (1 error, 0 warnings) ~/rule-sandbox ❯❯❯
デフォルト値に設定されている100文字を超えている文があるとチェックしてくれていますね。
設定値の変更方法
次はチェックの最大値を100文字から90文字へ変更してみます。.textlintrc
ファイルを以下のように修正します。
{ "filters": {}, "rules": { "preset-ja-technical-writing": { "sentence-length": { "max": 90 }, } } }
再度textlint
のコマンドを実行します。想定だと全ての文章に対してエラーが出るはずです。
以下の通り、エラーとなり文字数に対してのチェックが適切に行われていることがわかります。
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-sentence-length/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-sentence-length/file.md 3:1 error Line 3 sentence length(99) exceeds the maximum sentence length of 90. Over 9 characters ja-technical-writing/sentence-length 7:1 error Line 7 sentence length(100) exceeds the maximum sentence length of 90. Over 10 characters ja-technical-writing/sentence-length 11:1 error Line 11 sentence length(101) exceeds the maximum sentence length of 90. Over 11 characters ja-technical-writing/sentence-length ✖ 3 problems (3 errors, 0 warnings)
チェックの例外
こちらのREADMEでは以下とあり、引用もしくはリンクで書かれた文はチェック対象外となります。
Exception
- Except BlockQuote
- Except a single link node
こちらも試してみます。
見ての通り、引用で書かれた文とリンクについてはチェック対象外となりました。これでtextlint-rule-sentence-length
のカスタマイズ方法とチェックの例外パターンについて確認が出来ました。
textlint-rule-max-comma
このrule
は1文中のカンマが出現する個数についてチェックを行います。こちらをみるとデフォルト値は4とあるのですが、textlint-rule-preset-jtf-styleに含まれるtextlint-rule-max-comma
のデフォルト値は3です。動作を試してみます。
textlint
のコマンドを実行すると以下の通り、エラーとなります。
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-max-comma/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-max-comma/file.md 5:1 error This sentence exceeds the maximum count of comma. Maximum is 3 ja-technical-writing/max-comma ✖ 1 problem (1 error, 0 warnings)
文にカンマが何個あるかチェックが行われています。ここでは4つ以上のカンマが含まれているのでエラーとなります。
設定値の変更方法
次はカンマの最大個数を3つから4つへ変更してみます。.textlintrc
ファイルを以下のように修正します。
{ "filters": {}, "rules": { "preset-ja-technical-writing": { "sentence-length": { "max": 90 }, "max-comma": { "max": 4 }, } } }
再度実行します。
想定通り、カンマが5つ以上存在している文のチェックが行われています。これでtextlint-rule-max-comma
のカスタム方法がわかりました。このrule
についてもOKですね。
チェックの例外
textlint-rule-max-comma
についてのチェック例外は言及されていないため、なしと考えて良いでしょう。
textlint-rule-max-ten
このrule
は1文に利用できる、
の数をチェックします。デフォルト値は3です。動作を試してみます。
textlint
のコマンドを実行すると以下の通り、エラーとなります。
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-max-ten/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-max-ten/file.md 9:22 error 一つの文で"、"を3つ以上使用しています ja-technical-writing/max-ten ✖ 1 problem (1 error, 0 warnings)
文に読点、
が何個あるかチェックが行われています。ここでは読点、
が3つ以上存在する文がエラーとなります。
設定値の変更方法
次はチェックの最大値を3から4へ変更してみます。.textlintrc
ファイルを以下のように修正します。
{ "filters": {}, "rules": { "preset-ja-technical-writing": { "sentence-length": { "max": 90 }, "max-comma": { "max": 4 }, "max-ten": { "max": 4 }, } } }
チェックの例外
このrule
についてはこちらにある通り、以下となります。
<名詞>、<名詞> のように名詞に挟まれた読点はカウントしません。 箇条書きとしての区切り文字として使われているため無視します。
試してみます。
textlint
のコマンドを再度実行すると以下の通り、エラーとなります。
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-max-ten/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-max-ten/file.md 13:32 error 一つの文で"、"を4つ以上使用しています ja-technical-writing/max-ten ✖ 1 problem (1 error, 0 warnings)
チェックの例外時パターンについて確認が出来ました。これでtextlint-rule-max-ten
についてはOKですね。
textlint-rule-max-kanji-continuous-len
このrule
は1文に利用できる漢字が連続する最大文字数をチェックします。デフォルト値は6です。動作を試してみます。
textlint
のコマンドを実行すると以下の通り、エラーとなります。
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-max-kanji-continuous-len/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-max-kanji-continuous-len/file.md 9:1 error 漢字が7つ以上連続しています: 倍精度浮動小数 ja-technical-writing/max-kanji-continuous-len ✖ 1 problem (1 error, 0 warnings)
エラーの通り、連続する漢字の個数のチェックが行われています。ここでは連続する漢字が7つ以上存在するとエラーとなります。
設定値の変更方法
次はチェックの最大値を6から5へ変更します。更に許可する固有名詞(チェックの例外)を登録します。
.textlintrc
ファイルを以下のように修正します。
{ "filters": {}, "rules": { "preset-ja-technical-writing": { "sentence-length": { "max": 90 }, "max-comma": { "max": 4 }, "max-ten": { "max": 4 }, "max-kanji-continuous-len": { "max" : 5, "allow": ["漢字百科大事典"] } } } }
チェックの例外
上記にある通りallow
オプションに固有名詞を記述することでチェック対象外とする事が出来ます。動作を試してみます。
textlint
のコマンドを実行すると以下の通り、エラーとなります。
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-max-kanji-continuous-len/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-max-kanji-continuous-len/file.md 5:1 error 漢字が6つ以上連続しています: 一二三四五六 ja-technical-writing/max-kanji-continuous-len 9:1 error 漢字が6つ以上連続しています: 倍精度浮動小数 ja-technical-writing/max-kanji-continuous-len ✖ 2 problems (2 errors, 0 warnings)
連続する漢字の個数が変更されているのと、allow
オプションで追加した漢字百科大辞典
についてはチェック対象外となっていますね。想定通りの動きです。
設定値の変更による連続する漢字の個数チェックとチェックの例外時パターンについて確認が出来ました。
textlint-rule-preset-JTF-style
このrule
は算用数字と漢数字の使い分けをチェックします。ベースとなっているのはJTF日本語標準スタイルガイド 第3.0版です。
またtextlint-rule-preset-ja-technical-writing
内で有効なrule
は"arabic-kanji-numbers": true
と書いてあり、2.2.2.算用数字と漢数字の使い分けがデフォルトで有効となっています。こちらも試していきましょう。
textlint
のコマンドを実行すると以下の通り、エラーとなります。
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-preset-JTF-style/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-preset-JTF-style/file.md 5:1 ✓ error 第3者 => 第三者 慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。 ja-technical-writing/arabic-kanji-numbers 6:1 ✓ error 世界1 => 世界一 慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。 ja-technical-writing/arabic-kanji-numbers 7:1 ✓ error 1部の => 一部の 慣用的表現、熟語、概数、固有名詞、副詞など、漢数字を使用することが一般的な語句では漢数字を使います。 ja-technical-writing/arabic-kanji-numbers ✖ 3 problems (3 errors, 0 warnings) ✓ 3 fixable problems.
文に漢数字を使用することが一般的ではない語句のチェックしてくれています。ここでは第3者
、世界1
、1部
の語句が対象です。
設定値の変更方法
次はrule
にカタカナとカタカナの長音について有効化します。.textlintrc
ファイルを以下のように修正します。
{ "filters": {}, "rules": { "preset-ja-technical-writing": { "sentence-length": { "max": 90 }, "max-comma": { "max": 4 }, "max-ten": { "max": 4 }, "max-kanji-continuous-len": { "max" : 5, "allow": ["漢字百科大事典"] } }, "preset-jtf-style": { "2.1.5.カタカナ": true, "2.1.6.カタカナの長音": true } } }
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-preset-JTF-style/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-preset-JTF-style/file.md 17:3 ✓ error アベレイジ => アベレージ jtf-style/2.1.5.カタカナ 21:1 ✓ error サーバ間通 => サーバー間通 jtf-style/2.1.6.カタカナの長音 21:13 ✓ error コンピュータ同士 => コンピューター同士 jtf-style/2.1.6.カタカナの長音 ✖ 3 problems (3 errors, 0 warnings) ✓ 3 fixable problems.
エラーにある通り、カタカナとカタカナの長音についてチェックが行われていることがわかります。
チェックの例外
textlint-rule-preset-JTF-style
に含まれているrule
を除外したい場合は有効化されているrule
をfalse
とし、無効化を行います。例えばtextlint-rule-preset-ja-technical-writing
内で使用されている"2.2.2.算用数字と漢数字の使い分け"
を無効化したい場合は以下のようにします。
{ "filters": {}, "rules": { "preset-ja-technical-writing": { "sentence-length": { "max": 90 }, "max-comma": { "max": 4 }, "max-ten": { "max": 4 }, "max-kanji-continuous-len": { "max" : 5, "allow": ["漢字百科大事典"] }, // preset-ja-technical-writing内の中でfalseとする "arabic-kanji-numbers": false }, "preset-jtf-style": { "2.1.5.カタカナ": true, "2.1.6.カタカナの長音": true } } }
rule
名がarabic-kanji-numbers
として宣言されているのとpreset-ja-technical-writing
の中に含まれているという点において注意が必要です。これでtextlint-rule-preset-JTF-style
で対応するルールのカスタマイズも変更出来ることが確認出来ました。
textlint-rule-no-mix-dearu-desumasu
このrule
はですます調とである調の混在をチェックします。チェックするのは見出し、本文、箇条書きを対象としてくれます。デフォルト値は以下となります。
{ "rules": { "no-mix-dearu-desumasu": { "preferInHeader": "", "preferInBody": "ですます", "preferInList": "である", "strict": false } } }
""
は多く使われている表記を自動的に優先します。各値の対象は以下となります。
Param | Target |
---|---|
preferInHeader | 見出し |
preferInBody | 本文 |
preferInList | 箇条書き |
strict | 文末以外でも厳しくチェックするかどうか |
動きを試す前にtextlint-rule-preset-JTF-style
に本文、箇条書きに対してですます調あるいはである調を統一するためのrule
があるので.textlintrc
を以下の通り修正し、無効化しています。
{ "filters": {}, "rules": { "preset-ja-technical-writing": { "sentence-length": { "max": 90 }, "max-comma": { "max": 4 }, "max-ten": { "max": 4 }, "max-kanji-continuous-len": { "max" : 5, "allow": ["漢字百科大事典"] }, "arabic-kanji-numbers": false, }, "preset-jtf-style": { "1.1.1.本文": false, "1.1.3.箇条書き": false, "2.1.5.カタカナ": true, "2.1.6.カタカナの長音": true }, } }
この状態で試していきましょう。
textlint
のコマンドを実行すると以下の通り、エラーとなります。
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-no-mix-dearu-desumasu/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-no-mix-dearu-desumasu/file.md 3:19 error 見出し: "である"調 と "ですます"調 が混在 => "である" がである調 Total: である : 1 ですます: 1 ja-technical-writing/no-mix-dearu-desumasu 6:15 error 本文: "である"調 と "ですます"調 が混在 => "である。" がである調 Total: である : 1 ですます: 1 ja-technical-writing/no-mix-dearu-desumasu 8:20 error 箇条書き: "である"調 と "ですます"調 が混在 => "です。" がですます調 Total: である : 1 ですます: 1 ja-technical-writing/no-mix-dearu-desumasu ✖ 3 problems (3 errors, 0 warnings)
見出し、本文、箇条書きにである調とですます調が混在していることのチェックが行われていることが確認出来ました。
設定値の変更方法
次はrule
に文末以外でも厳しくチェックするよう.textlintrc
ファイルを以下のように修正します。
{ "filters": {}, "rules": { "preset-ja-technical-writing": { "sentence-length": { "max": 90 }, "max-comma": { "max": 4 }, "max-ten": { "max": 4 }, "max-kanji-continuous-len": { "max" : 5, "allow": ["漢字百科大事典"] }, "arabic-kanji-numbers": false, "no-mix-dearu-desumasu": { "preferInHeader": "", "preferInBody": "ですます", "preferInList": "である", "strict": true } }, "preset-jtf-style": { "1.1.1.本文": false, "1.1.3.箇条書き": false, "2.1.5.カタカナ": true, "2.1.6.カタカナの長音": true }, } }
これで文末以外のチェックも行うので、先程よりエラーの内容が増えるはずです。では試していきます。
textlint
のコマンドを実行すると以下の通り、エラーとなります。
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-no-mix-dearu-desumasu/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-no-mix-dearu-desumasu/file.md 3:19 error 見出し: "である"調 と "ですます"調 が混在 => "である" がである調 Total: である : 1 ですます: 1 ja-technical-writing/no-mix-dearu-desumasu 6:15 error 本文: "である"調 と "ですます"調 が混在 => "である。" がである調 Total: である : 1 ですます: 2 ja-technical-writing/no-mix-dearu-desumasu 8:20 error 箇条書き: "である"調 と "ですます"調 が混在 => "です。" がですます調 Total: である : 2 ですます: 2 ja-technical-writing/no-mix-dearu-desumasu 9:8 error 箇条書き: "である"調 と "ですます"調 が混在 => "ですが、" がですます調 Total: である : 2 ですます: 2 ja-technical-writing/no-mix-dearu-desumasu ✖ 4 problems (4 errors, 0 warnings)
チェックが厳しくなっているので、エラーが1つ増えているのとである調とですます調の接続的な文についてのカウント数が増えているのがわかります。文章を厳密にチェックするというのであればとても有用ですね。
チェックの例外
このrule
についてのチェック例外は言及されていないため、なしと考えて良いでしょう。
textlint-rule-ja-no-mixed-period
このrule
は文末の句点。
の抜けについてパラグラフを対象にチェックします。
動きを試す前にtextlint-rule-preset-JTF-style
には本文と箇条書きに対し、句読点に関する4.1.3.ピリオド(.)
とカンマ(,)
のrule
があるので.textlintrc
を以下の通り修正し、無効化しています。
{ "filters": {}, "rules": { "preset-ja-technical-writing": { "sentence-length": { "max": 90 }, "max-comma": { "max": 4 }, "max-ten": { "max": 4 }, "max-kanji-continuous-len": { "max" : 5, "allow": ["漢字百科大事典"] }, "arabic-kanji-numbers": false, "no-mix-dearu-desumasu": { "preferInHeader": "", "preferInBody": "ですます", "preferInList": "である", "strict": true } }, "preset-jtf-style": { "1.1.1.本文": false, "1.1.3.箇条書き": false, "1.2.1.句点(。)と読点(、)" :false, "2.1.5.カタカナ": true, "2.1.6.カタカナの長音": true, "4.1.3.ピリオド(.)、カンマ(,)": false }, } }
この状態で試していきましょう。
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-ja-no-mixed-period/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-ja-no-mixed-period/file.md 5:15 error 文末が"。"で終わっていません。 ja-technical-writing/ja-no-mixed-period 7:16 ✓ error 文末が"。"で終わっていません。 ja-technical-writing/ja-no-mixed-period ✖ 2 problems (2 errors, 0 warnings) ✓ 1 fixable problem.
文末の句点。
の抜けについてチェックが行われていることが確認出来ました。
設定値の変更方法
次はチェックのrule
を文末の句点.
(半角ピリオド)になるよう.textlintrc
ファイルを以下のように修正します。
{ "filters": {}, "rules": { "preset-ja-technical-writing": { "sentence-length": { "max": 90 }, "max-comma": { "max": 4 }, "max-ten": { "max": 4 }, "max-kanji-continuous-len": { "max" : 5, "allow": ["漢字百科大事典"] }, "arabic-kanji-numbers": false, "no-mix-dearu-desumasu": { "preferInHeader": "", "preferInBody": "ですます", "preferInList": "である", "strict": true }, "ja-no-mixed-period": { "periodMark": "." }, }, "preset-jtf-style": { "1.1.1.本文": false, "1.1.3.箇条書き": false, "1.2.1.句点(。)と読点(、)" :false, "2.1.5.カタカナ": true, "2.1.6.カタカナの長音": true, "4.1.3.ピリオド(.)、カンマ(,)": false }, } }
これで文末に.
(半角ピリオド)が存在しないとエラーとなるはずです。では試していきます。
textlint
のコマンドを実行すると以下の通り、エラーとなります。
~/rule-sandbox ❯❯❯ npx textlint textlint-rule-ja-no-mixed-period/file.md /Users/n_tanabe/rule-sandbox/textlint-rule-ja-no-mixed-period/file.md 5:15 error 文末が"."で終わっていません。 ja-technical-writing/ja-no-mixed-period 12:15 ✓ error 文末が"."で終わっていません。 ja-technical-writing/ja-no-mixed-period ✖ 2 problems (2 errors, 0 warnings) ✓ 1 fixable problem.
先程エラーになった7行目がエラーにならない事が確認出来ました。これで文末の句点の変更が可能となります。
チェックの例外
このrule
についてのチェック例外は言及されていないため、なしと考えて良いでしょう。
まとめ
textlint-rule-preset-ja-technical-writing
のrule
を掘り下げる事で各rule
のカスタマイズ方法が理解出来ました。私の場合textlint
をインストールしたものの扱いがわからないrule
などがあったので、根気良くドキュメントを眺めたり、node_module
内のプログラムを眺めたりし、理解を深めました。当記事で紹介したrule
以外をインストールした場合にぶつかり合うrule
が今後出てくる可能性はあるので、各rule
に慣れておくことは自分なりのrule
を定義する上で非常に重要だと言えます。