textlintを導入した

みなさん、lintしてますか。

**2019/8/7追記: この手順だと動かなくなってます。折を見て調査する予定**

# 経緯
blogを始めたのに、どうにも読みやすい日本語が書けないので**日本語のlintないのかよ！**って泣いていたらありました。助かります。

# 導入

## 作業ディレクトリを作ってnpm的な初期化

```shell
mkdir -p ~/tmp/hello-textlint
cd  ~/tmp/hello-textlint
npm init --yes
```

## 本体のインストール
npmを使います

```shell
npm install --save-dev textlint
```

## プラグインのインストール
全部入れスタイル

```shell
npm install --save-dev textlint-rule-max-ten textlint-rule-max-kanji-continuous-len textlint-rule-spellcheck-tech-word textlint-rule-web-plus-db textlint-rule-no-mix-dearu-desumasu textlint-rule-no-doubled-joshi textlint-rule-no-double-negative-ja textlint-rule-no-hankaku-kana textlint-rule-ja-no-weak-phrase textlint-rule-ja-no-redundant-expression textlint-rule-ja-no-abusage textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet textlint-rule-sentence-length textlint-rule-first-sentence-length textlint-rule-no-dropping-the-ra textlint-rule-no-doubled-conjunctive-particle-ga textlint-rule-no-doubled-conjunction textlint-rule-ja-no-mixed-period textlint-rule-max-appearence-count-of-words textlint-rule-max-length-of-title textlint-rule-incremental-headers textlint-rule-ja-hiragana-keishikimeishi textlint-rule-ja-hiragana-fukushi textlint-rule-ja-hiragana-hojodoushi textlint-rule-ja-unnatural-alphabet @textlint-ja/textlint-rule-no-insert-dropping-sa textlint-rule-prefer-tari-tari textlint-rule-general-novel-style-ja
```

## 定義ファイルを作る
```shell
./node_modules/.bin/textlint --init

.textlintrc is created.
# このファイルに、lintにどのルールを適用するかが書かれている
```

# 実行
```shell
echo 'りーどみー' > README.md
./node_modules/.bin/textlint README.md
# --fixをつけて実行すると✅マークのついた指摘は自動で直してくれる
```

# おまけ
## この文章をtextlintするとこんな結果が得られます
```
   1:1   ✓ error  段落の先頭に許可されていない文字が存在しています            general-novel-style-ja
   4:1   ✓ error  blogを => ブログを                                          web-plus-db
   4:1   ✓ error  段落の先頭に許可されていない文字が存在しています            general-novel-style-ja
   4:46  ✓ error  感嘆符(！)・疑問符(？)の直後にスペースか閉じ括弧が必要です  general-novel-style-ja
   6:1   error    ページの先頭以外で#が見つかりました。                       incremental-headers
  17:1   ✓ error  段落の先頭に許可されていない文字が存在しています            general-novel-style-ja
  17:8   error    文末が"。"で終わっていません。                              ja-no-mixed-period
  24:1   ✓ error  段落の先頭に許可されていない文字が存在しています            general-novel-style-ja
  24:8   error    文末が"。"で終わっていません。                              ja-no-mixed-period
  38:1   error    ページの先頭以外で#が見つかりました。                       incremental-headers
  45:1   error    ページの先頭以外で#が見つかりました。                       incremental-headers

✖ 11 problems (11 errors, 0 warnings)
✓ 6 fixable problems.
```

## 僕の.textlintrc
```yaml
{
  "filters": {},
  "rules": {
    "@textlint-ja/no-insert-dropping-sa": true,
    "first-sentence-length": true,
    "ja-hiragana-fukushi": true,
    "ja-hiragana-hojodoushi": true,
    "ja-hiragana-keishikimeishi": true,
    "ja-no-abusage": true,
    "ja-no-mixed-period": {
       "periodMark": "。",
       "allowPeriodMarks": ['}','笑'],
       "allowEmojiAtEnd": true,
       "forceAppendPeriod": false
    },
    "ja-no-redundant-expression": true,
    "ja-no-weak-phrase": true,
    "ja-unnatural-alphabet": true,
    "max-appearence-count-of-words": true,
    "max-kanji-continuous-len": true,
    "max-kanji-continuous-len": {
        max: 5,
        allow: ["無犯罪証明書","専門資格証明書","実務経験証明書","犯罪経歴証明書"]
    },
    "max-length-of-title": true,
    "max-ten": true,
    "no-double-negative-ja": true,
    "no-doubled-conjunction": true,
    "no-doubled-conjunctive-particle-ga": true,
    "no-doubled-joshi": true,
    "no-dropping-the-ra": true,
    "no-hankaku-kana": true,
    "no-mix-dearu-desumasu": true,
    "no-mixed-zenkaku-and-hankaku-alphabet": true,
    "no-todo": true,
    "prefer-tari-tari": true,
    "sentence-length": true,
  }
}
```

# 関連ページ
* [本体のGitHub](https://github.com/textlint/textlint)
* [プラグイン](https://github.com/textlint/textlint/wiki/Collection-of-textlint-rule)