先日、textlint というめちゃ便利な text を lint するツールの追加ルールを作ってみた話。ちょっと前にやったんだけど記事にしかけたまま止まってたのでいい加減に書いた次第。
作ったルール
sters/textlint-rule-a3rt-proofreading: [Unofficial] textlint rule that using A3RT Proofreading API. textlint-rule-a3rt-proofreading - npm
A3RT という機械学習 API サービスの文章校正を textlint から利用できるようにしたもの。 文章校正 API は万能なものではなく、特定ドメインに特化しているので、こういった文章にも上手く適合してくれないこともあるが、とりあえず textlint から呼べるようにしてみるか、というくらいの気持ちでやった。
textlint とは
textlint/textlint: The pluggable natural language linter for text and markdown.
text を lint するツール。いろんな人の作ったいろんなルールを組み合わせて、最強の文章を作っていけるようになるはず。
prh と web+db ルールを入れるとたのしい。
textlint-rule/textlint-rule-prh: textlint rule for prh.
rules/WEB+DB_PRESS.yml at master · prh/rules
A3RT
A3RT(アート)は「ANALYTICS & ARTIFICIAL INTELLIGENCE API VIA RECRUIT TECHNOLOGIES」の略称です。 ... 当初はA3RTについても、リクルートグループ内に限って導入してきましたが、以下のような理由からこのたびグループ外への提供を決意しました。
ちなみにこれ超重要なんですけど、私自身はリクルート社とは関係ないです。 今回作った textlint ルールは勝手にやったものなので何か問題があれば削除するなり対応するので連絡ください。
textlint ルールの作り方
textlint の中にツールがあるのでそれを使うとスケルトンが出来上がります(すごい)
参考: textlintのルールを簡単に作り始めることができるツールを作りました | Web Scratch
基本セットを作れるやつ textlint/create-textlint-rule: Create textlint rule project with no configuration.
ビルドしたりテストしたりを出来る便利な子 textlint/textlint-scripts: textlint npm-run-scripts CLI help to create textlint rule.
textlint-scripts が超便利で、基本的にはテストの云々を何も気にしないで、ルールのロジックに集中してテストを書けたり。npm へ上げるときに、何も気にせず babel してくれたりするので、とりあえず ES2015+ なコードを書くと動いてくれるのですごい楽。
あとはドキュメントを見たり、データ構造を見たり、他のルールを見たりして、実装する。実装にあたってはヘルパーライブラリがあるので、これも使っていくと AST をこねこねするような込み入ったルールも簡単に書けそう。
ルールの作り方(データ構造とか) textlint/rule.md at master · textlint/textlint
ヘルパーライブラリ textlint/textlint-rule-helper: This is helper library for creating textlint rule.
おわり
独自のルール作るのが思いのほか簡単だったので、何か思うところがあれば作ってみるとよいのではー! 特に正規表現ベースのルールとかは作るのがめちゃんこ楽なのでーーーーー!!!