Help us understand the problem. What is going on with this article?

textlint + prhで文章を校正する方法

More than 1 year has passed since last update.

textlintとprhを用いて、文章を校正する方法を紹介します。

textlintとは

textlintは、自然言語の校正に特化したNode.js製の文章校正ツールです。
JavaScriptを書いている人には、「ESLintのテキスト版」と言えば分かりやすいでしょうか。
ESLint同様プラガブルな仕組みになっており、様々なルールを組み合わせて使用します。
コマンドライン上で実行することもできますが、AtomVisual Studio Codeなどのエディタ上で動かすこともできます。

prhとは

prhは、表記ゆれの修正に特化したNode.js製の文章校正ツールです。
textlintのルールにも表記ゆれのためのものはありますが、prhではYAMLファイルで辞書を柔軟に管理できます。
単体で実行することもできますが、textlintのルールの一つとして動かすこともできます。

環境構築

コマンドライン上で実行するにせよエディタ上で動かすにせよ、以下のものが必要になります。

  • package.jsonファイル
  • textlint本体
  • textlintのルール
  • textlintの設定ファイル

package.jsonファイルを作成

textlintはNode.js上で動作するため、package.jsonファイルが必要です。
この時点では、中身はnameぐらいでいいでしょう。

package.json
{
  "name": "textlint-prh-example"
}

textlint本体をインストール

textlint本体をインストールします。

$ npm i -D textlint

この時点で、package.jsonファイルは以下のようになっているはずです。

package.json
{
  "name": "textlint-prh-example",
  "devDependencies": {
    "textlint": "^11.2.6"
  }
}

textlintのルールをインストール

textlint自体はルールを持っていないので、使用するルールは自分でインストールする必要があります。
数あるルールの中から、使用したいルールを選んでインストールしましょう。
ここでは、日本語向けのルールをいくつかまとめたプリセットであるtextlint-rule-preset-japaneseをインストールします。

$ npm i -D textlint-rule-preset-japanese

この時点で、package.jsonファイルは以下のようになっているはずです。

package.json
{
  "name": "textlint-prh-example",
  "devDependencies": {
    "textlint": "^11.2.6",
    "textlint-rule-preset-japanese": "^4.0.3"
  }
}

次に、prhをtextlint上で動かすためにtextlint-rule-prhをインストールします。

$ npm i -D textlint-rule-prh

この時点で、package.jsonファイルは以下のようになっているはずです。

package.json
{
  "name": "textlint-prh-example",
  "devDependencies": {
    "textlint": "^11.2.6",
    "textlint-rule-preset-japanese": "^4.0.3",
    "textlint-rule-prh": "^5.2.1"
  }
}

textlintの設定ファイルを作成

textlintの設定は、.textlintrcという設定ファイルに記述します。
フォーマットはJSON、YAML、JavaScriptのいずれかが使用できますが、ここではJSON形式で記述します。
先程インストールしたtextlint-rule-preset-japanesetextlint-rule-prhを使用するには、次のように書きます。

.textlintrc
{
  "rules": {
    "preset-japanese": true,
    "prh": {
      "rulePaths": [
        "node_modules/prh/prh-rules/media/WEB+DB_PRESS.yml"
      ]
    }
  }
}

ここでは、textlint-rule-prhに同梱されているWEB+DB_PRESS.ymlをprhで使用する辞書ファイルとして指定していますが、他の辞書ファイルを使用することもできます。
もちろん、YAML形式の辞書ファイルを自作して使用することもできます。

リント対象のファイルを作成

docsディレクトリ内のMarkdownファイルをリント対象とすることを想定し、docsディレクトリにREADME.mdファイルを作成します。

docs/README.md
# サンプル
これは、MarkDownで書かれたサンプルドキュメントです。  
まあ、あの、このように、あえてエラーとなるような文章にしています。

この文章はあえてエラーとなるようなものにしており、次の点が導入したルールに違反します。

  • 2行目:MarkdownMarkDownと書いている
  • 3行目:読点を3個以上使用している

リントを実行

textlintはコマンドライン上で実行するか、AtomVisual Studio Codeなどのエディタ上で動かすことができます。

コマンドライン上で実行

package.jsonファイルに、textlintによるリントを実行するためのコマンドを追加します。
コマンド名はなんでもいいのですが、ここではわかりやすくlintとします。

package.json
{
  "name": "textlint-prh-example",
  "scripts": {
    "lint": "textlint 'docs/**/*.md'"
  },
  "devDependencies": {
    "textlint": "^11.2.6",
    "textlint-rule-preset-japanese": "^4.0.3",
    "textlint-rule-prh": "^5.2.1"
  }
}

以下のコマンドを実行すると、textlintによるリントが実行されます。

$ npm run lint

https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132608/39aeea1e-25e5-985a-07f1-4b513bc85cf5.png

fixableなルールを自動修正

一部のfixable(修正可能)なルールは、--fixオプションで自動修正できます。
package.jsonファイルに、textlintによる修正を実行するためのコマンドを追加します。
コマンド名はなんでもいいのですが、ここではわかりやすくfixとします。

package.json
{
  "name": "textlint-prh-example",
  "scripts": {
    "lint": "textlint 'docs/**/*.md'",
    "fix": "textlint 'docs/**/*.md' --fix"
  },
  "devDependencies": {
    "textlint": "^11.2.6",
    "textlint-rule-preset-japanese": "^4.0.3",
    "textlint-rule-prh": "^5.2.1"
  }
}

以下のコマンドを実行すると、textlintによる修正が実行されます。

$ npm run fix

https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132608/f6038e14-fa77-5aa2-9863-07a7f7c93782.png

Atom上で動かす

linter-textlintをインストールします。

$ apm install linter-textlint

これだけで動きます。
うまく動かない場合は、ファイルを開き直したり、エディタを再起動したりしましょう。

https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132608/aac4f72e-6e2a-10f3-e6bc-7a648c5a1ca0.png

現時点では、fixableなルールの自動修正には対応していないようです。

Visual Studio Code上で動かす

vscode-textlintをインストールします。

$ code --install-extension taichi.vscode-textlint

これだけで動きます。
うまく動かない場合は、ファイルを開き直したり、エディタを再起動したりしましょう。

https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132608/22c2f647-93e2-ba62-088d-fa6f755eb5e0.png

fixableなルールを自動修正

「Auto Fix On Save」オプションを有効にすることで、ファイル保存時にfixableなルールが自動修正されます。

https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132608/669d949d-c7fd-da39-cdbf-b0c85abda854.png

その他のエディタ上で動かす

textlintは他にも、Sublime TextやVimなどのエディタ上で動かすことができます。

あなたのお気に入りのエディタのためのプラグインが存在しない場合、是非作ってみてください。

GitHub上で動かす

今回はローカル上で実行する方法を紹介しましたが、GitHub Actionsやreviewdogと連携すれば、GitHub上でリント結果を確認できるようになります。

参考リンク

munieru_jp
江戸川区在住のアプリケーションエンジニア
https://munieru.jp/
cloud-partner
「クラウドの活用でビジネスを加速させていく」をテーマにAWSの活用を提案するチーム
https://cloud-partner.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした