LoginSignup
9
8

More than 5 years have passed since last update.

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

Posted at

はじめに

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

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

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

textlintとは

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

textlint/textlint

どうやって使うのか

Docker imageを作りました。

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もできたらいいな。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8