--- title: textlintではじめる日本語文章校正 description: Zedエディタ上で日本語の文章をリアルタイム校正する方法。textlintの導入からルール設定、自動修正までを解説します。 --- import { Steps, Aside } from '@astrojs/starlight/components'; ## textlint とは [textlint](https://textlint.github.io/) は日本語の自然言語テキスト向けのプラグイン可能な文章校正ツールです。ESLint のように、校正ルールを個別に追加・設定できるのが特長です。 ## できること - 誤字・脱字の検出 - 表記ゆれの指摘(「例えば」→「たとえば」) - ら抜き言葉・い抜き言葉の検出 - 冗長な表現の指摘 - 一文の長さチェック - です・ます調とである調の混在チェック ## セットアップ 1. Node.js 18 以上をインストール 2. `textlint` とルールをプロジェクトにインストール ```bash npm install --save-dev textlint @textlint/markdown npm install --save-dev @textlint-ja/no-synonyms ja-no-abusage ja-no-redundant-expression prh ``` 3. `.textlintrc.json` を作成 ```json { "plugins": { "@textlint/markdown": true }, "rules": { "@textlint-ja/no-synonyms": true, "ja-no-abusage": true, "ja-no-redundant-expression": true, "prh": { "rulePaths": ["prh.yml"] } } } ``` 4. `prh.yml` に独自ルールを定義(必要な場合) ```yaml version: 1 rules: - expected: たとえば pattern: 例えば prh: 漢字で書かず、ひらがなで書くと読みやすくなります ``` ## エディタ連携 ### Zed 本サイトでは、Zed 用のカスタム LSP サーバー `textlint-lsp` を開発しています。 保存時に自動でlintが走り、波線で問題箇所を表示します。 ### VSCode [textlint.vscode-textlint](https://marketplace.visualstudio.com/items?itemName=taichi.vscode-textlint) 拡張機能が利用できます。 ### CLI ```bash npx textlint "**/*.md" ``` ## コードアクション(自動修正) Zed 上では、波線の上で `Ctrl+.` を押すと以下の操作が可能です。 | アクション | 内容 | |---|---| | 修正を適用 | textlint の自動修正候補を適用 | | 無効化:(ルール名) | 指定したルールをその行だけ無効化 | | 無効化: すべてのルール | その行以降の全ルールを無効化 | ## 無効化コメント `.md` ファイルでは、HTMLコメント形式で記述します: - 特定のルールだけ無効化: `<!-- textlint-disable prh -->` - 再有効化: `<!-- textlint-enable prh -->` `.mdx` ファイル(Starlight / Astro)では、JSXコメントで囲みます: - 特定のルールだけ無効化: `{/* <!-- textlint-disable prh --> */}` - 再有効化: `{/* <!-- textlint-enable prh --> */}` ## トラブルシューティング ### MDX ファイルで `<!-- -->` がエラーになる MDX は `<!-- -->` を許可しません。代わりに `{/* <!-- ... --> */}` で囲んでください。 ### 誤検出が多い 該当ルールを `.textlintrc.json` で `false` に設定するか、`prh.yml` で除外パターンを追加してください。 ### lint が重い `textlint-lsp` は保存時と、編集を止めてから 10 秒後に自動実行されます。 それでも重い場合は、`didChange` 時の lint を無効にすることも可能です。