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

textlintのdocker imageを作ってgitlab-ciでCIする

More than 1 year has passed since last update.

はじめに

日本語が苦手なみなさんこんにちは。

開発ドキュメントもgithub/gitlabで管理されているひとも多いでしょう。うちのチームでもドキュメントレビューをgitlabのmerge requestで実施しています。

ただ、そういったレビューをしている中、隣の新人くんから「日本語の指摘が多い。。。」「自動検出したい。。。」という声が聞こえてきたので、textlintを導入してみました。

textlintとは

nodejs製の文章校正ツールです。

textlint/textlint

どうやって使うのか

Docker imageを作りました。

https://github.com/tk117/docker-textlint

referenceにあるように参考にさせていただき、ほぼ同じようなものを作りました。DockerHubを使う練習がてら作ってみました。しかし便利ですね、DockerHubは。。。Dockerあればどこでも同じことができる。

Docker環境がある方は以下の要領で簡単に使えます。

$ git clone <some repository>
$ cd <some repository>
$ docker run -v $(pwd):/data -w /data tk117/docker-textlint textlint <your file>

ただし、.textlintrcファイルがある場所で実行してください。このファイルがtextlintでどのルールを採用するかが書かれた設定ファイルです。後でciで使うためにもリポジトリにコミットしておくとよいでしょう。

.textlintrc
{
    "rules": {
        "preset-ja-technical-writing": {
            "no-exclamation-question-mark": false,
        },
        "preset-jtf-style": true,
        "spellcheck-tech-word": true
    }
}

エラーがなければ何も表示されません。

エラー例

sample.md
この文章はsampleです。

確かに、sampleですが、サンプルなのですが、あえてミスをして、警告をもらうようにしています

上記の文章を実行すると、このような警告が行われます。

# docker run -v $(pwd):/data -w /data tk117/docker-textlint textlint sample.md 

/work/sample.md
  4:13  error    文中に逆接の接続助詞 "が" が二回以上使われています。  preset-ja-technical-writing/no-doubled-conjunctive-particle-ga
  4:24  error    一つの文で"、"を3つ以上使用しています                 preset-ja-technical-writing/max-ten
  4:47  ✓ error  文末が"。"で終わっていません。                        preset-ja-technical-writing/ja-no-mixed-period

✖ 3 problems (3 errors, 0 warnings)
✓ 1 fixable problem.
Try to run: $ textlint --fix [file]

ちゃんと怒ってくれる!

今回採用したルール

まずは少なくはじめようと思い、以下の2つですね。

--fixで自動修正してくれるのはとてもうれしいですね。

CIに組み込む

うっかりルール違反したままpushしてしまったときのために、継続的にテストしたいですよね。

今回はgitlab-ciを使いました。

.gitlab-ci.yml
stages:
  - lint

textlint:
  image: tk117/docker-textlint
  stage: lint
  script:
    - textlint <target path>
  tags:
    - sample-project

runner登録時にtagをつけたらそのtagを指定してください。簡単ですね!

ディレクトリ構成がキモになりますね。全部がドキュメントのプロジェクトであれば全部対象で良さそうですが、開発向け設計書の他にいろいろまとめて格納している場合はどういった運用になるか考える必要がありそうです。

対象が増えるたび.gitlab-ci.ymlを更新しないといけないのはイヤですね。そうしなくて済むようなディレクトリ構成にすべきだと思います。

エディタ

ローカルでdockerで簡単に実行できるとはいえ、dockerなんてしらなーい!ってひともいますよね。

Atom, sublime, vimにプラグインが用意されているようです。

参考:textlint/textlint:Editors

おわりに

CIに組み込むことで過去のドキュメントも再帰的にテストができます。lintを通っていない文章はmergeできないようにしてもいいでしょう。

まだ使い始めたばかりなので、今後もたくさん使ってプロジェクトに合ったルールを採用していこうと思います。contributionもできたらいいな。

chaspy
Site Reliability Engineer at Quipper
https://chaspy.me
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
ユーザーは見つかりませんでした