textlint ことはじめ / もっと読みやすい文章にするために

こんにちは、@ketancho です。みなさん文章書いてますか?

私は文章を書くことが好きですし、"よい文章" にしたいというこだわりも(よくも悪くも)強い方だと思ってます。ですが先日「え?textlint 使ってないんですか?(嘘だろ。textlint 使ったことないとか許されないでしょ。)」と言われてしまうという悲しい事件がありました。

というわけで、textlint 使ってみました記事を書いていこうと思います。textlint は、文章がルールに従って書かれているかをチェックしてくれる校閲ツールです。下記が公式サイトで、好きなルールを組み込むことができます。

textlint.github.io

textlint の導入

まず、textlint の導入についてです。ドットインストールさんの textlint入門 を参考にさせていただきました。相変わらずとても分かりやすいです。プレミアム動画ではないので、有料会員でなくても見られるはずです。

動画に沿って導入を進めれば、

こんにちは、わたしは、けたんちょ、です。

という sample.md ファイルに対して、

$ ./node_modules/.bin/textlint sample.md 

/home/ec2-user/environment/MyTextlintProject/sample.md
  1:17  error  一つの文で"、"を3つ以上使用しています  max-ten

✖ 1 problem (1 error, 0 warnings)

というように textlint をかけることができます。この例では textlint-rule-max-ten という、ひとつの文章における句点の数をチェックするルールのみを導入しています。下記がルールの一覧になるので、この中から好きなものを入れていく形になります。

github.com

例えば、日本語でよく使うルールがまとめて入っているプリセット textlint-rule-preset-japanese を導入したい場合、下記のように npm インストールした上で、

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

.textlintrc ファイルに、このルールを使って textlint したいよ、そのときのオプションはこれだよ、といったことを指定してあげれば OK です。

{
  "rules": {
    "preset-japanese": true
  }
}

ルールごとに使えるオプションが変わってくるので、先の GitHub ページで使えるオプションを確認しながら自分好みにしてあげる形になります。

自身の直近の記事に対して textlint-rule-preset-japanese を適用してみた

さて、textlint の導入ができましたので、さっそく私が書いた文章に適用してみたいと思います。

$ ./node_modules/.bin/textlint sample.md 

/home/ec2-user/environment/MyTextlintProject/sample.md
   7:59   error  同じ接続詞が連続して使われています。                                      japanese/no-doubled-conjunction
   7:83   error  一つの文で"、"を3つ以上使用しています                                     japanese/max-ten
  13:96   error  一つの文で"、"を3つ以上使用しています                                     japanese/max-ten
  38:70   error  一つの文で"、"を3つ以上使用しています                                     japanese/max-ten
  38:82   error  Line 38 sentence length(106) exceeds the maximum sentence length of 100.
Over 6 characters  japanese/sentence-length
  38:152  error  一つの文で"、"を3つ以上使用しています                                     japanese/max-ten
  51:197  error  一つの文で"、"を3つ以上使用しています                                     japanese/max-ten
  55:99   error  一つの文で"、"を3つ以上使用しています                                     japanese/max-ten
  73:55   error  一つの文で"、"を3つ以上使用しています                                     japanese/max-ten
  80:100  error  一つの文で"、"を3つ以上使用しています                                     japanese/max-ten

✖ 10 problems (10 errors, 0 warnings)

めっちゃ出てきました。3種類あるので、1つずつ見ていきたいと思います。

一つの文で"、"を3つ以上使用しています - japanese/max-ten

上の例でも出てきた max-ten です。例えば、以下の文章ですね。

冗談めいている(?)ところがあるので、好みが分かれる本な気もしますが、私は対話形式なストーリー仕立ての本は好みなので、楽しく学ぶことができました。

実は、1文が長くなってしまう傾向があることは自覚しています。結果として句点も増えちゃうんですよね。気をつけないとなと思いつつ、1文に3つくらいなら許されるんじゃないかなとという気もします。そんなときは、.textlintrc ファイルを下記のように書き換えることで、"1文に句点が4つ以上になったら警告する" というように変更できます。

{
  "rules": {
    "preset-japanese": {
      "max-ten": {
        "max": 4
      }
    }
  }
}

もう一度、textlint をかけてみます。

$ ./node_modules/.bin/textlint sample.md 

/home/ec2-user/environment/MyTextlintProject/sample.md
   7:59   error  同じ接続詞が連続して使われています。                                      japanese/no-doubled-conjunction
  38:82   error  Line 38 sentence length(106) exceeds the maximum sentence length of 100.
Over 6 characters  japanese/sentence-length
  38:167  error  一つの文で"、"を4つ以上使用しています                                     japanese/max-ten
  80:120  error  一つの文で"、"を4つ以上使用しています                                     japanese/max-ten

✖ 4 problems (4 errors, 0 warnings)

警告の条件をゆるくしても2つも怒られてしまいました。。今後気をつけたいと思います。

Line 38 sentence length(106) exceeds the maximum sentence length of 100. Over 6 characters - japanese/sentence-length

続いて sentence-length です。1文が長いということですね。同じ箇所で max-ten も怒られている次の文章です。

funny はセンスな気がしますが、本書を読んでいると interesting はロジカルに積み上げるものな気がしたので、ものづくりをする際、あるいはそれをシェアする際は、この部分を意識していきたいと思いました。

たしかに長いですね。このルールは80文字くらいにチューニングしてもいい気がします。意識していきたいと思います。

同じ接続詞が連続して使われています。- japanese/no-doubled-conjunction

最後に no-doubled-conjunction です。

また、書籍 SOFT SKILLS にもあるように、自分の活動をブランディングすることはとても大事だと思っています。また、技術書を執筆する際も、書いて終わりではなく、想定読者に届ける努力を継続することはとても大事だなと感じました。今後技術者として生きていく上で、MUST ではないもののあった方がよいスキルなのかなと個人的には思っています。

「また」が2文続いているよ!という怒られです。1文ではなく文章の前後関係を見てくれるルールもあるのですね。

私はこの "同じ接続詞が続かないように" はかなり気にしているつもりだったので、結構ショックでした。あとでそっと直しておきます。

まとめ

textlint ことはじめとして試した内容をまとめました。エディタのプラグインや、ブラウザの拡張機能として textlint を入れることもできるとのことなので、息を吸うように textlint できる環境を整えていこうと思います。

最後にこの記事も textlint にかけてみました。

$ ./node_modules/.bin/textlint sample.md 

/home/ec2-user/environment/MyTextlintProject/sample.md
  3:42  error  一文に二回以上利用されている助詞 "も" がみつかりました。  japanese/no-doubled-joshi

✖ 1 problem (1 error, 0 warnings)

私は文章を書くことが好きですし、"よい文章" にしたいというこだわりも(よくも悪くも)強い方だと思ってます。

括弧の中の "も" は許されるはず!ということで No Error なので、記事を公開させていただきます!