はじめに
こんにちは、エムティーアイ テクノロジー本部の上野です。
本記事では文章校正ツールであるtextlintの紹介とVisual Studio Code(以下VSCode)を使用した実例について解説します。
textlintとは
textlint is an open source text linting utility written in JavaScript. It is hard to lint natural language texts, but we try to resolve this issue by pluggable approach.
公式ドキュメントより抜粋。
平たくはESLintに代表される各種Lintツールの自然言語バージョンです。
プレーンテキストやMarkdownテキストを対象にいわゆる文章校正を自動的に走らせて、ルールに応じて自動修正も適用できます。
環境
- Windows 11 Pro 22631.4460
- Visual Studio Code 1.73.1
- Node.js v22.7.0
- npm 10.8.2
- textlint 14.3.0
- vscode-textlint v0.11.0
セットアップ
前提としてNode.jsのインストールが必要です。
未インストールの方は事前にNode.jsのインストールを実施ください。
次の例では任意のディレクトリでNode.jsのプロジェクトを作成します。
npm init -y
プロジェクトが作成されましたらtextlintおよび後述する各種ルールおよびプリセットをインストールします。
npm install --save-dev ` textlint ` textlint-rule-max-ten ` textlint-rule-preset-ja-spacing ` textlint-rule-preset-ja-technical-writing ` textlint-rule-preset-jtf-style ` textlint-rule-no-doubled-joshi ` textlint-rule-ja-unnatural-alphabet
VSCodeの設定
エディター上から校正を有効化するために以下の拡張機能をインストールします。
vscode-textlint - Visual Studio Marketplace
ルールリスト
今回使用するルールのリストは以下になります。それぞれ概要と対象リポジトリのリンクを掲載いたします。
GitHub - textlint-ja/textlint-rule-max-ten
一文に利用できる、
の数を制限するtextlintルールです。
GitHub - textlint-ja/textlint-rule-preset-ja-spacing
textlintのスペース関連のmonorepoです。
日本語周りにおけるスペースの有無を決定するtextlintルールプリセットを提供します。
GitHub - textlint-ja/textlint-rule-preset-ja-technical-writing
技術文書向けのtextlintルールプリセットです。
GitHub - textlint-ja/textlint-rule-preset-JTF-style
JTF日本語標準スタイルガイド(翻訳用) for textlint.
2016年2月22日改訂第2.2版を元にしています。
GitHub - textlint-ja/textlint-rule-no-doubled-joshi
1つの文中に同じ助詞が連続して出てくるのをチェックするtextlintルールです。
GitHub - textlint-ja/textlint-rule-ja-unnatural-alphabet
不自然なアルファベットを検知するtextlintルール。
使用例
本記事自体を実際にtextlintを使用し解析します。
セットアップが完了すると以下のような指摘事項が問題として検出されます。
お試しで全角文字と半角文字との間にスペースを強制するルールを適用してみます。
以下に従い、.textlintrc.jsonに以下の記述を追加します。
{ "filters": {}, "rules": { "preset-ja-spacing": { "ja-space-between-half-and-full-width": { "space": "always" } },
更新後、一度VSCodeを再起動します。すると今度はスペースが無い箇所に関して問題を検出するようになりました。
またエラーの内容からルール同士で矛盾のある指摘を出すようになりました。
jtf-styleはスペースを入れないルールですが、先ほど変更したja-spacingはスペースを入れることを提示しています。
ここから分かる通り各ルールはそれぞれの規定に基づいた判定を返すため、複数のルールを使用する場合は注意してください。
この場合スペースを入れる際には以下のように記述します。
"rules": { "preset-ja-spacing": { "ja-space-between-half-and-full-width": { "space": "always" } "preset-jtf-style": { "3.1.1.全角文字と半角文字の間": false } } }
以上、本項ではスペースを設ける方法について解説してまいりましたが最終的にスペース無しの見栄えが好ましいとしたためデフォルトのまま執筆しております。
番外編
上記で個々のローカル環境においてtextlintの利用について触れていきましたが、本来はチームなどの組織単位で利用することが推奨されます。
各プロダクトや状況に応じてルールを設定することは勿論、可能な限り手軽に管理されることが望ましいです。
ここではCI/CDを通じて自動で校正する仕組みの例を提示いたします。
Azure Pipline CI/CD
当社ではAzure DevOpsの利用が盛んであるためAzure Piplineを使用したCI/CDの最もシンプルな例を提示いたします。
trigger: - main pool: vmImage: ubuntu-latest steps: - task: UseNode@1 inputs: version: '22.x' displayName: 'Install Node.js' - script: | npm init -y displayName: 'npm init' - script: | npm install --save-dev textlint textlint-rule-preset-ja-technical-writing npx textlint --init displayName: 'Setup textlint' - script: | npx textlint "./*.md" displayName: 'Review and Apply'
上記例ではプロジェクトの初期化を行っておりますが事前に定義されたpackage.json等があれば実施は不要です。
また使いやすさを加味するとDockerなどのコンテナを併用しての利用も考えられます。
まとめ
エディターを介した文章校正ツールの利用方法と各種ルールについて解説してまいりました。
これらを通じて皆様の執筆ライフが良くなれば幸いです。
最後までお読みいただきありがとうございました。