2020年12月1日火曜日

textlint と prh, RedPen で日本語文章をチェックする

前提

  • OS: Windows 10 Pro
  • Docker: Docker version 19.03.13, build 4484c46d9d
  • 使用する Docker イメージ
    • node:15
    • openjdk:8

チェック対象テキストは content.md。内容は以下。

Eclipse  Che のワークスペースの生成・破棄は、Linux コンテナ技術によって実現されている。そのため、ワークスペースで使用するツールは、64bit Linux 環境で動作する必要がある。TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。

textlint で日本語チェック

以下のプラグインを使ってチェックを行う。

Docker コンテナ起動

docker run -it -v "$(pwd):/work" --workdir "/work" node:15 bash

環境構築

npm install -g textlint
npm install -g @textlint/textlint-plugin-markdown

npm install -g prh
npm install -g textlint-rule-prh
npm install -g textlint-rule-preset-ja-technical-writing
npm install -g textlint-rule-preset-jtf-style

設定ファイル作成

重複など気にせず、とにかく何でもかんでも指摘させる設定になっている(はず)なので、要調整。

設定内容の詳細は各プラグインのドキュメントを参照。

最低でも ./rules/media/techbooster.yml, ./rules/media/WEB+DB_PRESS.yml はどちらかひとつにするのが良いはず。

# prh のリファレンス(?)ルール取得
git clone --depth 1 https://github.com/prh/rules.git

# prh の設定
cat - << EOF > ./prh.yml
version: 1

imports:
  - ./rules/media/techbooster.yml
  - ./rules/media/WEB+DB_PRESS.yml
EOF

# textlint の設定
cat - << EOF > ./.textlintrc
{
    "plugins": {
        "@textlint/markdown": {
            "extensions": [".md"]
        }
    },
    "rules": {
        "prh": {
            "rulePaths" :["./prh.yml"]
        },
        "preset-ja-technical-writing": true
    }
}
EOF

textlint 実行

textlint --no-color "content.md" -o lint_results.txt

lint_results.txt に、指摘点が列挙される。


/work/content.md
  1:101  error    Line 1 sentence length(151) exceeds the maximum sentence length of 100.
Over 51 characters   ja-technical-writing/sentence-length
  1:225  ✓ error  (mikoto2000/cfg-1v1.9.7.2) => (mikoto2000/cfg-1v1.9.7.2)
半角カッコの代わりに全角カッコを使うこと。文字のバランスが崩れるためです  prh

✖ 2 problems (2 errors, 0 warnings)
✓ 1 fixable problem.
Try to run: $ textlint --fix [file]

RedPen

Docker コンテナ起動

docker run -it --rm -v "$(pwd):/work" --workdir "/work" openjdk:8 bash

環境構築

curl -L -O https://github.com/redpen-cc/redpen/releases/download/redpen-1.10.4/redpen-1.10.4.tar.gz
tar xf redpen-1.10.4.tar.gz
export PATH=$PATH:$(pwd)/redpen-distribution-1.10.4/bin/

redpen 実行

redpen -f markdown -L ja ./content.md > redpen_results.txt

redpen_results.txt に、指摘が列挙される。

./content.md:1: ValidationError[SentenceLength], 文長("151")が最大値 "100" を超えています。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。
./content.md:1: ValidationError[JapaneseAmbiguousNounConjunction], 助詞「の」が連続しています: "〜Eclipseのワークスペースの生成〜" at line: Eclipse Che のワークスペースの生成・破棄は、Linux コンテナ技術によって実現されている。
./content.md:1: ValidationError[InvalidSymbol], 不正なシンボル "(" がみつかりました。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。
./content.md:1: ValidationError[InvalidSymbol], 不正なシンボル ")" がみつかりました。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。
./content.md:1: ValidationError[SpaceBetweenAlphabeticalWord], アルファベット単語の後にスペースが存在しません。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。
./content.md:1: ValidationError[SpaceBetweenAlphabeticalWord], アルファベット単語の前にスペースが存在しません。 at line: TOPPERS で公開されているコンフィギュレータ(https://toppers.jp/cfg.html)は、64bit Linux環境に対応していないため、今回はTOPPERS/cfg に64bit Linux 対応の修正を行い、それを利用した(mikoto2000/cfg-1v1.9.7.2)。

後は、それぞれの Docker イメージを作ってサクッと実行できるようにしたうえで、設定を詰めていけばいい感じになりそう。

以上。

参考資料

0 件のコメント:

コメントを投稿