kuromojin@3のアップデートと同時に、textlintルールをまとめてアップデートしました
kuromojinは、形態素解析ライブラリのkuromoji.jsをラップしたライブラリです。 kuromojin v2までは、kuromoji.js 0.1.1に固定していました。 kuromoji.jsの最新バージョンは0.1.2であるため、v3.0.0でこれを取り込んだものをリリースしています。
📝 patchバージョンですが0.xなのでBREAKING CHANGEが含まれていて、具体的には次のIssueの内容によって形態素解析結果のトークンが変わリます。 また、kuromojin側でkuromoji.jsのバージョンを固定しているのは、バージョンがずれると複数の辞書ファイルをロードしてしまうことがあるのと、 辞書の差分はBREAKING CHANGEになってしまうので固定しています。(辞書とsemverは相性が悪いです)
kuromojinは主にtextlintのルールを書くために使っていて、キャッシュの処理やPromise対応などを含んでいます。 形態素解析に使う辞書は1つに統一したいので、基本的にはtextlintルールで使うkuromojinのバージョンは統一したい問題があります。
そのため、次のようなIssueを作って、kuromojinを使ってるtextlintルールをまとめてアップデートしました。
具体的には次のtextlintルールを更新しています。 いろいろな方に協力してもらってアップデートしています。
- textlint-ja/textlint-rule-max-ten: textlint rule that limit maxinum ten(、) count of sentence. @azu
- textlint-ja/textlint-rule-no-double-negative-ja: 二重否定をチェックするtextlint rule @azu
- textlint-ja/analyze-desumasu-dearu: 文の敬体(ですます調)、常体(である調)を解析するJavaScriptライブラリ @azu
- textlint-ja/textlint-rule-morpheme-match: 形態素解析結果のTokenベースの辞書でマッチするtextlintルール @azu
- https://github.com/azu/morpheme-match is library
- textlint-ja/textlint-rule-ja-no-abusage: よくある日本語の誤用をチェックするtextlintルール @azu
- textlint-ja/textlint-rule-no-insert-dropping-sa: サ抜き、サ入れ表現の誤用をチェックするtextlintルール @azu
- textlint-ja/textlint-rule-ja-no-successive-word: 同一の単語を間違えて連続しているのを見つけるtextlintルール @bizen241
- textlint-ja/textlint-rule-ja-no-redundant-expression: 冗長な表現をチェックするtextlintルール @azu
- textlint-ja/textlint-rule-no-dropping-i: い抜き言葉をチェックするtextlintルール @azu
- hata6502/textlint-rule-ja-no-orthographic-variants: 表記ゆれをチェックするtextlintルール @hata6502
- hata6502/textlint-rule-ja-no-inappropriate-words: 不適切表現をチェックするtextlintルール @hata6502
- hata6502/textlint-rule-no-hoso-kinshi-yogo: 放送禁止用語をチェックするtextlintルール @hata6502
- textlint-ja/textlint-rule-no-dropping-the-ra: ら抜き言葉をチェックするtextlintルール @bizen241
- textlint-ja/textlint-rule-no-doubled-joshi: 文中に同じ助詞が複数出てくるのをチェックするtextlintルール @azu
- textlint-ja/textlint-rule-no-doubled-conjunction: textlint plugin to check duplicated same conjunctions. @azu
- textlint-ja/textlint-rule-ja-no-weak-phrase: 弱い表現の利用を禁止するtextlintルール @azu
- textlint-ja/textlint-rule-no-doubled-conjunctive-particle-ga: textlint rule plugin to check duplicated conjunctive particle
ga
in a sentence. @azu
📝 この過程でいくつかのtextlintルールが textlint-ja
organizationに移管されていたりもします。
textlint-jaには日本語関係のルールを集めているので、興味がある人はGitterあたりを見てください。
また、これらのルールを使うtextlintルールプリセットもアップデートしています。 それぞれのプリセットでアップデートしたルールの詳細は、リリースノートにかかれています。 基本的にはkuromojin@3への更新とセンテンス分解をするライブラリであるsentence-splitter@3への更新を含んでいます。
- textlint-ja/textlint-rule-preset-ja-technical-writing: 技術文書向けのtextlintルールプリセット
- textlint-ja/textlint-rule-preset-japanese: textlint rule preset for Japanese.
このアップデートによって解析結果が改善されて、今まで見落としていた箇所も検知できるようになったりしています。
技術書向けのtextlintプリセットのtextlint-rule-preset-ja-technical-writing 6.0.0リリースしました。https://t.co/XuQD81hCWA
— azu (@azu_re) April 25, 2021
いろんなルールのアップデートを含んでいます。
アップデート後の修正例https://t.co/xg3q5UKeSN pic.twitter.com/Psjy9JRsr1
副産物として、全角ピリオド(.
)をセンテンスの区切り文字を使うパターンにだいたいのルールが対応しています。
ブラウザ対応
実はここまでで出てきたtextlintルールの大部分はブラウザでも動くように書かれています。 (ブラウザで動かす場合、辞書のようなサイズが大きなものは一つに統一しないといけないので、kuromojinのアップデートをしたというのもあります。)
具体的には、textlint-ja/textlint-rule-preset-ja-technical-writing: 技術文書向けのtextlintルールプリセットとtextlint-ja/textlint-rule-preset-japanese: textlint rule preset for Japanese.はブラウザでも動作します。
実際の次のURLでブラウザでも文章をチェックできます。
- https://textlint-ja.github.io/textlint-rule-preset-japanese/
- https://textlint-ja.github.io/textlint-rule-preset-ja-technical-writing/
textlint editor
ブラウザで動くということは、textlintはブラウザ拡張としても動きます。
textlint editorという、<textarea>
で好きなtextlintの設定でLintをするブラウザ拡張をベータ公開しています。
オフラインでも文章のチェックができるtextlint editorのブラウザ拡張のβ版公開しています🎉
— azu (@azu_re) April 23, 2021
Chrome:https://t.co/oi01i4iY0P
Firefox:https://t.co/TL3iNutkHA
使い方: https://t.co/ynZI4ANQMg
サンプルルール:https://t.co/rdJ8RyPHGe
textlint editorは、以前記事などでも紹介しています。
- textlint editor - ブラウザでも動くPrivacy Firstの文章校正ツールを作る話
- サーバにデータを送る必要がない文章の校正ツール、スペルチェッカーを作っている | Web Scratch
textlint editorの特徴としては、入力しているテキストをサーバへ送信しないため、オフラインでも動作します。
また、textlint + 設定(.textlinrc
)をtextlint worker scriptへとコンパイルして、それをインストールして使うというGreasemonkeyのような仕組みをとっています。
そのため、本当にtextlintをそのままブラウザで動かすような形をとっています。
自分でtextlint worker scriptを作る場合は次のテンプレートを利用できます。
textlint worker scriptは、ただのWeb Workerとして動くScriptで、ブラウザ対応とブラウザ拡張はそれぞれ同じものが動いています。
textlint editorはまだベータ版でそこまで安定してなかったりバグもあるので、フィードバックを待っています!
お知らせ欄
JavaScript Primerの書籍版がAmazonで購入できます。
JavaScriptに関する最新情報は週一でJSer.infoを更新しています。
GitHub Sponsorsでの支援を募集しています。