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ルールが textlint-ja organizationに移管されていたりもします。 textlint-jaには日本語関係のルールを集めているので、興味がある人はGitterあたりを見てください。

また、これらのルールを使うtextlintルールプリセットもアップデートしています。 それぞれのプリセットでアップデートしたルールの詳細は、リリースノートにかかれています。 基本的にはkuromojin@3への更新とセンテンス分解をするライブラリであるsentence-splitter@3への更新を含んでいます。

このアップデートによって解析結果が改善されて、今まで見落としていた箇所も検知できるようになったりしています。

副産物として、全角ピリオド()をセンテンスの区切り文字を使うパターンにだいたいのルールが対応しています。

ブラウザ対応

実はここまでで出てきたtextlintルールの大部分はブラウザでも動くように書かれています。 (ブラウザで動かす場合、辞書のようなサイズが大きなものは一つに統一しないといけないので、kuromojinのアップデートをしたというのもあります。)

具体的には、textlint-ja/textlint-rule-preset-ja-technical-writing: 技術文書向けのtextlintルールプリセットtextlint-ja/textlint-rule-preset-japanese: textlint rule preset for Japanese.はブラウザでも動作します。

実際の次のURLでブラウザでも文章をチェックできます。

textlint editor

ブラウザで動くということは、textlintはブラウザ拡張としても動きます。 textlint editorという、<textarea>で好きなtextlintの設定でLintをするブラウザ拡張をベータ公開しています。

textlint editorは、以前記事などでも紹介しています。

textlint editorの特徴としては、入力しているテキストをサーバへ送信しないため、オフラインでも動作します。 また、textlint + 設定(.textlinrc)をtextlint worker scriptへとコンパイルして、それをインストールして使うというGreasemonkeyのような仕組みをとっています。 そのため、本当にtextlintをそのままブラウザで動かすような形をとっています。

自分でtextlint worker scriptを作る場合は次のテンプレートを利用できます。

textlint worker scriptは、ただのWeb Workerとして動くScriptで、ブラウザ対応とブラウザ拡張はそれぞれ同じものが動いています。

textlint editorはまだベータ版でそこまで安定してなかったりバグもあるので、フィードバックを待っています!