What’s lint ?
lintというのは「主にC言語のソースコードに対し、コンパイラよりも詳細かつ厳密なチェックを行うプログラムである by wikipedia」で、lintを自然言語に適用した実装がtextlintになるようです
もちろん即戦力で仕事につかう、もしくは御大尽でお金が余ってて仕方ないということであればJust Right!のようなツールを検討するのですが、そこまでではないけれども質を上げることにも取り組みたいと思い立ったので、まずはtextlintで1段だけ高いところの景色を見てみる
やっぱお金で解決しようとなった時にJust Right!を導入すればいい
設定メモ
Node.jsをインストールする
Windows10でtextlintを動作させるには、Node.jsが必要らしいのでNode.jsをインストールする
インストーラはhttps://nodejs.org/ja/にアクセスして、ダウンロードした
STEP01:
STEP02:
STEP03:
STEP04:
STEP05:
STEP06:
STEP07:
PS > node --version
v10.15.0
PS > npm --version
6.4.1
textlintを使えるようにする
PS > cd C:\UserDocument\website\
PS > npm init --yes
Wrote to C:\UserDocument\website\package.json:
{
"name": "website",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
PS > npm install --save-dev textlint
npm WARN deprecated [email protected]: CircularJSON is in maintenance only, flatted is its successor.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
+ [email protected]
added 191 packages from 95 contributors and audited 354 packages in 8.628s
found 0 vulnerabilities
textlintはスタイルルールがないと動作しない
技術文書向けのtextlintルールプリセット(textlint-rule-preset-ja-technical-writing)を使えるようにする
PS > npm install --save-dev textlint-rule-preset-ja-technical-writing
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
+ [email protected]
added 82 packages from 29 contributors and audited 781 packages in 18.758s
found 0 vulnerabilities
PS > ./node_modules/.bin/textlint --init
.textlintrc is created.
PS > cat .\.textlintrc
{
"filters": {},
"rules": {
"preset-ja-technical-writing": true
}
}
JTF日本語標準スタイルガイド for textlint(textlint-rule-preset-JTF-style)を使えるようにする
『JTF日本語標準スタイルガイド(翻訳用)』は、実務翻訳において和訳時に使用できる日本語表記ガイドラインです。2012年1月30日に初版を公開しました。『JTF日本語標準スタイルガイド』はどなたでも無償で使用できます。日本語の表記のゆらぎを防いで、スムーズに表記を統一するためのガイドラインとして活用してください
PS > npm install --save-dev textlint-rule-preset-jtf-style
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
+ [email protected]
added 25 packages from 13 contributors and audited 409 packages in 2.278s
found 0 vulnerabilities
.textlintrcに追加したスタイルルールを追記しておく
PS > cat .\.textlintrc
{
"filters": {},
"rules": {
"preset-ja-technical-writing": true,
"preset-jtf-style": true
}
}
早速textlintを使ってみた
短めのコンテンツの場合
PS > ./node_modules/.bin/textlint content\post\サイトのリニューアルをはじめました\index.md
C:\UserDocument\website\content\post\サイトのリニューアルをはじめました\index.md
1:1 error Line 1 sentence length(124) exceeds the maximum sentence length of 100.
Over 24 characters preset-ja-technical-writing/sentence-length
10:1 error Line 10 sentence length(101) exceeds the maximum sentence length of 100.
Over 1 characters preset-ja-technical-writing/sentence-length
10:51 error 弱い表現: "思います" が使われています。 preset-ja-technical-writing/ja-no-weak-phrase
14:51 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
✖ 4 problems (4 errors, 0 warnings)
長めのコンテンツの場合
PS > ./node_modules/.bin/textlint content\post\退役させたSSL-VPN環境をやっぱりRaspberryPi3を使って復活させる\index.md
C:\UserDocument\website\content\post\退役させたSSL-VPN環境をやっぱりRaspberryPi3を使って復活させる\index.md
1:1 error Line 1 sentence length(133) exceeds the maximum sentence length of 100.
Over 33 characters preset-ja-technical-writing/sentence-length
5:13 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
8:39 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
10:8 error Disallow to use "?" preset-ja-technical-writing/no-exclamation-question-mark
11:8 ✓ error 半角のかっこ()が使用されています。全角のかっこ()を使用してください。 preset-jtf-style/4.3.1.丸かっこ()
11:12 ✓ error 半角のかっこ()が使用されています。全角のかっこ()を使用してください。 preset-jtf-style/4.3.1.丸かっこ()
13:37 ✓ error 半角のかっこ()が使用されています。全角のかっこ()を使用してください。 preset-jtf-style/4.3.1.丸かっこ()
15:14 error Disallow to use "?" preset-ja-technical-writing/no-exclamation-question-mark
18:19 ✓ error 半角のかっこ()が使用されています。全角のかっこ()を使用してください。 preset-jtf-style/4.3.1.丸かっこ()
18:24 ✓ error 半角のかっこ()が使用されています。全角のかっこ()を使用してください。 preset-jtf-style/4.3.1.丸かっこ()
20:67 ✓ error 半角のかっこ()が使用されています。全角のかっこ()を使用してください。 preset-jtf-style/4.3.1.丸かっこ()
20:76 ✓ error 半角のかっこ()が使用されています。全角のかっこ()を使用してください。 preset-jtf-style/4.3.1.丸かっこ()
21:20 error 一文に二回以上利用されている助詞 "も" がみつかりました。 preset-ja-technical-writing/no-doubled-joshi
23:3 ✓ error 原則として、全角文字どうしの間にスペースを入れません。 preset-jtf-style/3.1.2.全角文字どうし
24:37 ✓ error 原則として、全角文字と半角文字の間にスペースを入れません。 preset-jtf-style/3.1.1.全角文字と半角文字の間
25:1 error 一文に二回以上利用されている助詞 "で" がみつかりました。 preset-ja-technical-writing/no-doubled-joshi
25:10 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
29:35 ✓ error 文末が"。"で終わっていません。末尾に不要なスペースがあります。 preset-ja-technical-writing/ja-no-mixed-period
52:13 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
71:17 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
75:40 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
86:10 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
91:16 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
110:22 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
127:17 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
189:1 error Line 189 sentence length(108) exceeds the maximum sentence length of 100.
Over 8 characters preset-ja-technical-writing/sentence-length
189:107 ✓ error 文末が"。"で終わっていません。末尾に不要なスペースがあります。 preset-ja-technical-writing/ja-no-mixed-period
290:1 error Line 290 sentence length(133) exceeds the maximum sentence length of 100.
Over 33 characters preset-ja-technical-writing/sentence-length
291:107 ✓ error 文末が"。"で終わっていません。末尾に不要なスペースがあります。 preset-ja-technical-writing/ja-no-mixed-period
312:36 ✓ error 原則として、全角文字と半角文字の間にスペースを入れません。 preset-jtf-style/3.1.1.全角文字と半角文字の間
312:40 ✓ error 原則として、全角文字と半角文字の間にスペースを入れません。 preset-jtf-style/3.1.1.全角文字と半角文字の間
312:72 ✓ error 文末が"。"で終わっていません。末尾に不要なスペースがあります。 preset-ja-technical-writing/ja-no-mixed-period
✖ 32 problems (32 errors, 0 warnings)
✓ 15 fixable problems.
Try to run: $ textlint --fix [file]
簡単に修正が適用できそうな内容はtextlint --fix
コマンドで直してくれるようだ
あとはよきに計らってくれるルールを見つけてくるなり、自分で書くなりすればいい
どうしようもないエラーは除外する(暫定対応)
いずれのページにも表示されている1行目のエラー1:1 error Line 1 sentence length(124) exceeds the maximum sentence length of 100.
は静的サイトジェネレーターのHugo
のFront Matter
が引っかかってしまっていて、これはどうしようもないので除外する
Hugo
のFront Matter
の例
+++
date = "2017-03-11T13:41:00+09:00"
title = "サイトのリニューアルをはじめました"
type = "post"
tags = ["お知らせ"]
aliases = ["/post/site_renew/"]
+++
Markdownで書かれたコンテンツの先頭に書いておく、Hugoのためのパラメータを書いた+++
で囲まれたブロック
textlint-filter-rule-whitelistを使って対応してみる
PS > npm install --save-dev textlint-filter-rule-whitelist
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
+ [email protected]
added 20 packages from 21 contributors and audited 885 packages in 5.432s
found 0 vulnerabilities
PS > cat .\.textlintrc
{
"filters": {
"whitelist": {
"allow": [
"/^\\+{3}[\\s\\S]*?\\+{3}/m"
]
},
"rules": {
"preset-ja-technical-writing": true,
"preset-jtf-style": true
}
}
きちんと対応できているかを確認する
PS > ./node_modules/.bin/textlint content\post\サイトのリニューアルをはじめました\index.md
C:\UserDocument\website\content\post\サイトのリニューアルをはじめました\index.md
10:1 error Line 10 sentence length(101) exceeds the maximum sentence length of 100.
Over 1 characters preset-ja-technical-writing/sentence-length
10:51 error 弱い表現: "思います" が使われています。 preset-ja-technical-writing/ja-no-weak-phrase
14:51 error 文末が"。"で終わっていません。 preset-ja-technical-writing/ja-no-mixed-period
✖ 3 problems (3 errors, 0 warnings)
Hugo
のFront Matter
絡みの1行目のエラーが検知されなくなった