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

textlint と VS Code で始める文章校正

More than 1 year has passed since last update.

はじめに

文章を書くときに、注意して半角文字の両端に半角空白を空けるという手動 lint をよくやっています。
また、日本語の表現や句読点、typo などに注意を払うことも必要です。
そこで、機械的に検出できた方が内容を書くことに集中できるので文章の lint ができる textlint というツールを使っていきます。

同様の検査ツールとして RedPen が存在します。
以下の記事に RedPen と textlint それぞれの立場から文章における問題とその解決についてまとまっているので参考にされると良いでしょう。

文書執筆の指南書で解説されている問題点を RedPen で発見する - Qiita
文書執筆の指南書で解説されている問題点を textlint で発見する - Qiita

今回は、リポジトリ内で管理する Markdown ファイルに対して、Visual Studio Code(VS Code) から textlint を使用していきます。
textlint をグローバルにインストールしコマンドから実行する方法もありますが、こちらでは紹介しません。
作者の azu さんによる以下の記事も参考にされるとイメージがしやすいでしょう。

textlint で日本語の文章をチェックする | Web Scratch

環境

  • macOS High Sierra Version 10.13.6
  • Node.js v10.15.3
  • npm 6.9.0
  • textlint v11.2.3

textlint とは

Markdown などのテキストファイルを特定のルールにしたがってチェックするツールです。
ルールは作者の azu さんを始め、多くのルールが公開されています。

textlint のインストールとセットアップ

Node.js が事前にインストールされている前提で話を進めます。
インストールされていない場合は、事前に Node.js のインストールを実施してください。

任意のディレクトリで Node.js のプロジェクトを作成します。
今回はデフォルトでプロジェクトを作成します。

$ npm init -y

textlint や今回紹介する各プリセットをインストールします。

npm install --save-dev \
    textlint \
    textlint-rule-preset-ja-spacing \
    textlint-rule-preset-ja-technical-writing \
    textlint-rule-spellcheck-tech-word

textlint のルールを有効にする設定ファイルを生成します。

$ npx textlint --init

textlint の設定ファイルが以下のように生成されます。

$ cat .textlintrc
{
  "filters": {},
  "rules": {
    "preset-ja-spacing": true,
    "preset-ja-technical-writing": true,
    "spellcheck-tech-word": true
  }
}

VS Code の設定

VS Code 上から textlint のチェックを実行するために VS Code の拡張機能をインストールします。

vscode-textlint - Visual Studio Marketplace

インストール後 VS Code を再起動し、作成したプロジェクトを開くことで textlint が有効になります。

VS Code の設定で以下のように editor.formatOnSave の設定を有効にすることでファイル保存時に修正可能な指摘に関してはそのまま修正されます。
適宜設定してください。

{
  "editor.formatOnSave": true
}

使い方

インストールすると VS Code 上で以下のように問題の箇所を指摘してくれます。
使い方
これからいくつかルールを紹介していきます。

スペースの設定 - textlint-rule-spacing

半角文字と全角文字の間にスペースを入れたいので textlint の設定の ja-space-between-half-and-full-width を有効にします。

.textlintrc
 {
   "filters": {},
   "rules": {
-    "preset-ja-spacing": true,
+    "preset-ja-spacing": {
+      "ja-space-between-half-and-full-width": {
+            "space": "always"
+        }
+    },
     "preset-ja-technical-writing": true,
     "spellcheck-tech-word": true
   }
 }

有効にすると以下のように半角文字と全角文字の間にスペースをチェックできます。
半角空白
他にも textlint-rule-spacing にはいくつか設定があるのでリポジトリを確認して必要に応じて設定してみてください。

GitHub - textlint-ja/textlint-rule-spacing: スペース周りのスタイルを扱う textlint ルール集

技術文書向けルールプリセット - textlint-rule-preset-ja-technical-writing

技術文書向けに用意されたルールプリセットです。
句読点や「ですます調」などいくつかの文書表現を指摘してくれます。
技術文書向けルールプリセット
他にも textlint-rule-preset-ja-technical-writing にはいくつか設定があるのでリポジトリを確認して必要に応じて設定してみてください。

GitHub - textlint-ja/textlint-rule-preset-ja-technical-writing: 技術文書向けの textlint ルールプリセット

表記揺れ - textlint-rule-spellcheck-tech-word

技術用語がまとまった用語集を元に表記揺れを指摘してくれます。
GitHub の表記揺れ
表記揺れの辞書データは以下のリポジトリで管理されているものです。

GitHub - azu/prh.yml: A collection of prh.yml

(2019-03-22 追記)
作者の azu さんより直接コメントをいただきました。
http://b.hatena.ne.jp/entry/4666216323774784098/comment/efcl

辞書データは以下のサイトへ管理を移行しているそうです。
管理方法の手順が丁寧にまとまっていますので、参照されると良いでしょう。
Proofdict · A dictionary engine that based on one rule per one file.

対応していない辞書データに関しては、自身で定義する必要があります。

prh.yml ファイルを作成して以下のようなルールを定義します。

prh.yml
version: 1
rules:
  - expected: Google
    specs:
      - from: google
        to: Google

作成した prh.yml ファイルのパスを textlint の設定ファイルに追記することでルールが有効になります。

.textlintrc
 {
   "filters": {},
   "rules": {
     "preset-ja-spacing": true,
     "preset-ja-spacing": {
       "ja-space-between-half-and-full-width": {
             "space": "always"
         }
     },
     "preset-ja-technical-writing": true,
-    "spellcheck-tech-word": true
+    "spellcheck-tech-word": true,
+    "prh": {
+      "rulePaths": [
+        "./prh.yml"
+      ]
+    }
   }
 }

追加したルールが指摘されているのが分かります。
Google の表記揺れ

その他

その他のルールセットは以下の Organization にまとまっていますので一度確認してみてください。

textlint-ja - GitHub

参考

textlint で日本語の文章をチェックする | Web Scratch
textlint + prh で表記ゆれを検出する | Web Scratch
文書執筆の指南書で解説されている問題点を RedPen で発見する - Qiita
文書執筆の指南書で解説されている問題点を textlint で発見する - Qiita
textlint + VS Code で文章校正 | ハックノート
ドットインストールの textlint 入門を見たあとにやること一覧 | iwb.jp

takasp
Docker, Kubernetes, CircleCIなどを触るインフラエンジニアやってます。 最近はアプリケーションエンジニアとしてTypeScriptを書くことが増えてきました。
aircloset
「新しい当たり前を作る」を作ることをミッションに、airClosetを開発・運営しています。
http://corp.air-closet.com/
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
ユーザーは見つかりませんでした