アクトインディ開発者ブログ

子供とお出かけ情報「いこーよ」を運営する、アクトインディ株式会社の開発者ブログです

textlint editor を使ってブラウザで textlint を使う

morishitaです。

久しぶりに文章校正ツール textlint について書きます。 textlint については過去に2回取り上げました。

tech.actindi.net

tech.actindi.net

過去のエントリはテキストエディタから利用する方法を紹介したものですが、今回は textlint のブラウザ拡張について紹介します。

以前からブラウザ上で文章を書くときにも textlint を使いたいなぁと思っていました。 結構前からtextlint: 文章チェッカーという Chrome 拡張があるのですが、自由にルールを設定できないようだったので見送っていました1

今回紹介するものは textlint の作者自身が開発した拡張で、独自の設定で利用できるものです!

インストールから使えるところまで

早速使う準備をしていきましょう。

ブラウザ拡張のインストール

Chrome と FIrefox に対応しています。いずれかインストールしましょう(もちろん両方でもいいです)。

Chrome chrome.google.com

Firefox addons.mozilla.org

以降の記述は Chrome の場合ですが、Firefox でも同様だと思います。

textlint editor - Chrome ウェブストアを開いて、右上の Chrome に追加 のボタンをクリックするだけ。他の Chrome 拡張と何ら変わるところはありません。

Worker script のインストール

通常のブラウザ拡張と異なるのは worker script というものを更にインストール必要があるところです。
textlint には様々なチェックルールがプラグインとして用意されています。
worker script はそれらプラグインとチェックルールの設定が1つになった WebWorker をインストールするものです。

worker script のサンプルとして次のものが用意されています。

例としてtextlint-rule-preset-ja-technical-writingにアクセスしてみると次のページが開きます。

f:id:HeRo:20210701234423p:plain
worker script

上部の Textarea に文字を入力するとチェックを試すことができます。
青い Install ボタンをクリックするとインストールページに遷移し、再度 Install ボタンをクリックすると textlint editor 拡張にインストールされます。

インストールされている worker は textlint editor 拡張のアイコンをクリックすると次のスクリーンショットの様に表示されます。

f:id:HeRo:20210701234510p:plain
インストールされた worker script

ここからインストールしたものを削除したり、設定を変更できます。
まあ、設定の変更と言ってもプラグインの追加等はできないので、インストールした worker に含まれるチェックを無効にしたり調整する程度にとどまります。

独自の設定で使う

もともと私は独自の設定を作って textlint を利用していました。
textlint-ja/textlint-rule-preset-ja-technical-writingベースですが、プラグインを追加したりして自分なりにカスタマイズしています。
これまでは VSCode の拡張でその設定を使っていたのですが、どうせなら同じ設定をブラウザ拡張でも使いたいと思いました。

独自の worker script を作るためのテンプレートが次のリポジトリに用意されているのでそれを利用します。

github.com

このリポジトリはテンプレートリポジトリになっているので[Use this template]ボタンをクリックして自分のリポジトリを作成します。

リポジトリを作成したらリポジトリの[Settings]-[Pages]を開いて、次の様に Github Pages を有効にします。

f:id:HeRo:20210701234749p:plain
Github settings

これは、textlint-rule-preset-ja-technical-writingの様に設定をインストールできる web page を公開するためです。
そのためのサイトジェネレータ(textlint-website-generator)と Github Workflow の設定がテンプレートリポジトリに含まれています。なのでこの設定をするだけですでにページが公開されます。
試しにアクセスしてみると、サンプルの設定が入った状態のページが開きます。

さて、自分好みに設定していきます。 まずはリポジトリをクローンしてローカルで編集できるようにします。

> git clone git@github.com:<owner name>/<your-repo-name>.git
> cd <your-repo-name>
> npm install

モジュールのインストールができたら、いよいよ設定していきます。
textlint の設定ファイル .textllint.json がすでにあるのでそれを編集します。

Collection of textlint ruleには様々なチェックルールのプラグインがリストアップされているので自分の文章スタイルに合わせて追加していくのもいいでしょう。

textlint-filter-rule-allowlist はちょっと注意が必要

すべてのプラグインが textlint editor で使えるわけではありません。 textlint 自体はもともと Node.js で動作するツールです。しかし、textlint editor はブラウザ上で動作しているためブラウザでは動かない Node.js の機能に依存したプラグインは動作しません。

そんな textlint editor で動作しないプラグインの1つにtextlint/textlint-filter-rule-allowlistがありました。 これは正規表現でチェックルールを無視して許可する文字列を設定できるプラグインです。 textlint-ja/textlint-rule-preset-ja-technical-writingなど、いくつかのプラグインに設定されているルールは私には少々厳しのでそれを緩和するために使っています。

v3.0.0まではブラウザで動作しないライブラリに依存していたので、textlint editor では使えませんでした。しかしv4.0.0から若干の制限があるものの使えるようになりました。

その制限とは allowlistConfigPaths 設定が使えないことです。
この設定はチェックを無視する文字列パターンを textlint の設定ファイルとは別のファイルに設定して読み込むようにするものです。
設定が多くなってくると便利だと思うのですが、まあなくても使えると思います。

YAML ファイルでも設定できる

テンプレートリポジトリにデフォルトで用意されているファイルは JSON ですが、YAML で設定しても構いません。 私はもともと使っていたYAMLの設定ファイル .textlintrc.yml をそのまま使っています。

そうして作ったのが次の worker script です。

heromo.github.io

この worker script を利用されるのは構わないのですが、完全に私のためだけに変更していくので悪しからず。
文章スタイルは人それぞれなので自分の worker script を作ることをおすすめします。

Redmine で使ってみる

アクトインディではタスクの管理は Redmine を使っているので私は普段、 Redmine 上で文章を書くことが多いです。
textlint editor の使用例として、Redmine 上で使ってみました。

その様子が次のスクリーンショットです。

f:id:HeRo:20210701234915p:plain
Redmine での使用例

こんな感じでルールに違反する箇所に赤い点線のアンダーラインが付き、マウスオーバーするとどのルールに違反しているのか表示されます。

自動修正に対応したルールの場合、 Fix it ! をクリックすると修正できます。
ルールを違反したままにしたいときには Ignore をクリックすると無視できます。
これで敬体 / 常体の混在やカッコの閉じ忘れなどを防げます!

おまけ VSCode でも同じ設定を使う

まずは次の拡張をインストールします。

marketplace.visualstudio.com

そして次の設定を VSCode の User Settings に追加すれば、エディタでも同じ設定で textlint が使えます。

    "textlint.configPath": "<worker script を clone したディレクトリのパス>/.textlintrc.json",
    "textlint.nodePath": "<worker script を clone したディレクトリのパス>/node_modules",

Markdown ファイルを編集すると自動的にチェックされます。

最後に

アクトインディではエンジニアを募集しています。

actindi.net

参考


  1. 同梱されているチェックルールの ON/OFF はできるようです。