仕事柄、ブログを書いたり、たまに雑誌の記事を書いたりすることがあります。 Windowsを使っていた時代は一太郎とATOKを使って、書いた文章の文書構成をしていました。
MacではATOKは動きますが、一太郎は動きません*1。その上、今のATOKはサブスクしかないのでバリバリ雑誌の記事を書いているなら元は取れますが、ブログだけだとマイナスが増える一方です。
最近のWordの文章校正機能は昔のそれと比べるとかなり良くなりました。とはいえMarkdown形式で書くことが割と多いので、わざわざWordにコピーして文書構成をしてMarkdownに落とすというのも面倒です*2。
そんなあなたにtextlintがあります。早速文書校正環境を作ってみましょう!
Node.jsのインストール
textlintはNode.jsベースのソフトウェアです。 ルールもnpmでインストールできるので、まずは端末にNode.jsをインストールします。 インストール方法は次の通りです。
OSによっていくつかの方法があるので、いずれかの方法でNode.jsをインストールします。
使い方
プロジェクトディレクトリーを作って、textlintをインストールします。
% cd ~/projects % npm init -y # なければ package.json を作成 % npm install --save-dev textlint
次に、必要なルールを導入します。一覧はCollection of textlint ruleにあります。 たとえばこのような感じでルールをインストールします。
% npm install --save-dev textlint-rule-no-dropping-the-ra % npm install --save-dev textlint-rule-no-mix-dearu-desumasu % npm install --save-dev textlint-rule-ja-kyoiku-kanji % npm install --save-dev textlint-rule-ja-joyo-or-jinmeiyo-kanji % npm install --save-dev textlint-rule-ja-no-orthographic-variants % npm install --save-dev textlint-rule-incremental-headers % npm install --save-dev textlint-rule-prefer-tari-tari
.textlintrc.json
を作成します。このコマンドではインストール済みのルールが全て許可されるテンプレートが生成されます。
% npx textlint --init
ファイルを確認して、チェックしない場合は一時的にはfalseにするか、ルール自体をnpm uninstall
コマンドで削除します。
% cat .textlintrc.json { "plugins": {}, "filters": {}, "rules": { "incremental-headers": true, "ja-joyo-or-jinmeiyo-kanji": true, "ja-kyoiku-kanji": true, "ja-no-orthographic-variants": true, "no-dropping-the-ra": true, "no-mix-dearu-desumasu": true, "prefer-tari-tari": true } }
テキストファイルのチェックをしてみる
次のようなsample.txt
を作ってみてください。
吾輩は猫である。名前はまだないです。 猫ですが、鼠は食べれません。
次のように実行すると、テキストファイルのチェックができます。
% npx textlint "**/*.txt" /Users/tooyama/temp/sample.txt 1:1 error 教育漢字ではない漢字「吾」が含まれています。 ja-kyoiku-kanji 1:2 error 教育漢字ではない漢字「輩」が含まれています。 ja-kyoiku-kanji 1:4 error 教育漢字ではない漢字「猫」が含まれています。 ja-kyoiku-kanji 1:5 error 本文: "である"調 と "ですます"調 が混在 => "ですます"調 の文体に、次の "である"調 の箇所があります: "である。" Total: である : 1 ですます: 1 no-mix-dearu-desumasu 2:1 error 教育漢字ではない漢字「猫」が含まれています。 ja-kyoiku-kanji 2:6 error 教育漢字ではない漢字「鼠」が含まれています。 ja-kyoiku-kanji 2:6 error 常用漢字でも人名用漢字でもない漢字「鼠」が含まれています。 ja-joyo-or-jinmeiyo-kanji 2:10 error ら抜き言葉を使用しています。 no-dropping-the-ra ✖ 8 problems (8 errors, 0 warnings)
テキストファイルのチェックをしてみる
次のようなsample.md
を作ってみてください。
# 吾輩は猫である 夏目漱石 ### 一 吾輩は猫である。名前はまだ無いです。 猫ですが、鼠は食べれません。
次のように実行すると、markdownファイルのチェックができます。
% npx textlint "**/*.md" /Users/tooyama/temp/sample.md 1:3 error 教育漢字ではない漢字「吾」が含まれています。 ja-kyoiku-kanji 1:4 error 教育漢字ではない漢字「輩」が含まれています。 ja-kyoiku-kanji 1:6 error 教育漢字ではない漢字「猫」が含まれています。 ja-kyoiku-kanji 1:13 error 教育漢字ではない漢字「漱」が含まれています。 ja-kyoiku-kanji 3:1 error #の後に###が来ています。段落は1つずつ下げてください。 incremental-headers 5:1 error 教育漢字ではない漢字「吾」が含まれています。 ja-kyoiku-kanji 5:2 error 教育漢字ではない漢字「輩」が含まれています。 ja-kyoiku-kanji 5:4 error 教育漢字ではない漢字「猫」が含まれています。 ja-kyoiku-kanji 5:5 error 本文: "である"調 と "ですます"調 が混在 => "ですます"調 の文体に、次の "である"調 の箇所があります: "である。" Total: である : 1 ですます: 1 no-mix-dearu-desumasu 6:1 error 教育漢字ではない漢字「猫」が含まれています。 ja-kyoiku-kanji 6:6 error 常用漢字でも人名用漢字でもない漢字「鼠」が含まれています。 ja-joyo-or-jinmeiyo-kanji 6:6 error 教育漢字ではない漢字「鼠」が含まれています。 ja-kyoiku-kanji 6:10 error ら抜き言葉を使用しています。 no-dropping-the-ra ✖ 13 problems (13 errors, 0 warnings)
まとめ
こんな感じで、非常に簡単に文書校正環境が手元の環境で動かせます。 これでGitベースで執筆している場合や、GitプロジェクトのドキュメントやREADMEなどを書く際に文書校正できるので良いですね。
ネタをわかりやすくするために「textlint-rule-ja-kyoiku-kanji」ルールを入れていますが、教育漢字のチェックをしてしまうと普段使いとしては使いづらくなるかもしれません。誰宛の文章であるかに応じてチェックすると良いと思います。
今回textlintをコマンドラインツールとして使う方法をご紹介しましたが、たとえば執筆環境をGitで管理している場合、CIツールを使ってコミットしたらtextlintでチェックしたり、textlintのチェックが通ったらたとえばファイルをPDF形式に変換したり、次のようなVSCodeの拡張機能を使ってコミットする前にローカル側でチェックしたりといった使い方もできるようです。 今回はGitHub Actionsを使う例を示していますが、CIの構成ファイルとCIツールの設定さえすれば他のCIツール、たとえばCircleCIやGitLab CIなどでも同じようなことができるようになると思います。VSCodeの拡張機能はVSCodeでコードも文書も作っている人には便利でしょうか。それ以外のエディターにもtextlintと連携する機能を有するものがあると思いますので、ぜひ探してみてはいかがでしょうか。
- https://github.com/textlint/textlint/tree/master/.github/workflows
- https://marketplace.visualstudio.com/items?itemName=taichi.vscode-textlint