徒然技術日記

Object.prototype.__noSuchMethod__

Ginger を使った校正用ルールなど,英語向けの textlint ルールをいくつか作ってみた

最近ではちょっとしたものを公開する場合でも,英語でコミットメッセージや ReadMe を書くのが主流になってきているように感じます. その風潮に乗って一生懸命英語を書くわけですが,三単現を忘れたり,a/the が適当だったりと,残念な英語しか書けない自分の英語力のなさが露呈して恥ずかしい限りです.

そうした恥ずかしい文章の公開を未然に防ぐべく,自動的に校正を書けてくれるツールとして azu さんが作られている textlint があります.これは,自然言語に対する ESLint のような linter であり,Atomプラグインなどを入れれば,エディタで書いているそばからおかしい部分を指摘してくれるようになるというすぐれものです.

ルールを探して Collection of textlint rule を覗いてみたところ,どうやら英語向けのルールは少々手薄のようだったので,いくつかルールを作成してみました.

textlint-rule-ginger

一時期有名になった英語校正ツール Ginger で校正を行うルールです.自動修正にも対応しています.

f:id:Nodaguti:20160317171951p:plain

textlint-rule-spellchecker

OS ネイティブのスペルチェッカーを使用してスペルチェックを行うルールです.使っている OS によって NSSpellChecker, Hunspell, Windows 8 Spell Check API.aspx) のどれかが使われます.

これも自動修正に対応しており,修正候補が1つしか出てこない場合にのみ修正します.

内部的には,Atom に付属しているスペルチェッカーである spell-check プラグイン が使っているのと同じパッケージ node-spellchecker を使用しています.

これだけ Atomプラグイン上ではエラーが出てしまったため,スクリーンショットコマンドラインのものです.(おそらく spell-checktextlint-rule-spellchecker とで競合してしまったのでしょう)

f:id:Nodaguti:20160317172003p:plain

textlint-rule-write-good

azu さん謹製のルール textlint-rule-rousseaurousseau と同じような校正ツール write good で校正を行うルールです.

一応スター数的には write good の方が人気のようです(rousseau: 76 stars, write good: 1853 stars).ちなみに私はどちらも知りませんでした.

f:id:Nodaguti:20160317172009p:plain

textlint-rule-no-dead-link

これは英語に関係ないですが,デッドリンクがないかどうかチェックするルールです.主に Markdown で使用することを想定していますが,プレーンテキストでも正規表現によって URL っぽい部分を抜き出してチェックします.

f:id:Nodaguti:20160317171958p:plain

作ってみて

意外と簡単に書けるというのが率直な感想です.既存の適当なルールからソースをコピペしてきて,ちょちょっと変えるだけでルールが完成します.textlint-rule-helper や textlint-tester など,ルールを書くための周辺パッケージも揃っているため,気軽にルールとテストを書くことができます.

ハマった部分としては,textlint-rule-spellchecker にて TravisCI テストを OSX 上で動かそうとして NodeJS のインストールに詰まった とか,textlint-rule-no-dead-link にて HEAD リクエストを飛ばす際に gzip を OFF にしないと Node 5.x で時々エラーが出る とかですが,まあ本質的ではないので詳細は割愛します.

まとめ

もっとみんなルールを書いて textlint を盛り上げていこう!