こうこく
作 ▸

Web小説を書くときに使ってるtextlintの設定

一昨年あたりにtextlint導入してみて、今のところしっくりきてるのでアップしておく。

Web小説用であることを留意。紙の小説や技術ブログの執筆には向かない。

textlint 13.3.3

インストール

これ執筆時点で自分が使用していた各パッケージのバージョンは以下の通り。現在の最新版をインストールした場合、挙動が異なるかもしれない。

package.json (抜粋)
{
  "dependencies": {
    "textlint": "^14.5.0",
    "textlint-rule-general-novel-style-ja": "^1.3.0",
    "textlint-rule-ja-no-abusage": "^3.0.0",
    "textlint-rule-ja-no-redundant-expression": "^4.0.1",
    "textlint-rule-ja-no-space-between-full-width": "^2.4.2",
    "textlint-rule-ja-unnatural-alphabet": "^2.0.1",
    "textlint-rule-max-ten": "^5.0.0",
    "textlint-rule-no-doubled-conjunction": "^3.0.0",
    "textlint-rule-no-doubled-joshi": "^5.1.0",
    "textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet": "^1.0.1",
    "textlint-rule-prefer-tari-tari": "^1.0.3"
  }
}

インストールコマンドは以下の通り。

pnpm install textlint textlint-rule-general-novel-style-ja textlint-rule-ja-no-abusage textlint-rule-ja-no-redundant-expression textlint-rule-ja-no-space-between-full-width textlint-rule-ja-unnatural-alphabet textlint-rule-max-ten textlint-rule-no-doubled-conjunction textlint-rule-no-doubled-joshi textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet textlint-rule-prefer-tari-tari

あと、自分は主にVSCode+Markdown形式で小説を書いてるので、textlintのVSCode拡張機能も併用している。

ただこちらはtextlintを使用していないプロジェクトでも動作しようとするのか、VSCodeの起動時にOutputパネルで鳴いてるのを見かけるので、開発はWSL、小説はWindowsという風にVSCode自体を棲み分けて運用してたりする。(ポータブルモードでいいんだろうけど)

設定 (.textlintrc)

同じ言葉の連続に対してやや神経質な設定にしてある。また、文中で使用するアラビア数字と英字は全角のみ許可している。

実際には赤くなっても全て修正するわけではなく、例えばカギ括弧の中の砕けた話し言葉でもエラーになるので、あくまで目安にするにとどめる。

.textlintrc.js
module.exports = {
  plugins: {},
  filters: {},
  rules: {
    // 一般的な小説スタイルに沿っていなければエラー
    // 例: 三点リーダとダッシュの個数が2の倍数ではない。段落の先頭の字下げが無い。
    "general-novel-style-ja": {
      chars_leading_paragraph: " 「『(【〈《“‘[〔{<",
      max_arabic_numeral_digits: false,  // アラビア数字の桁数は気にしない (Web小説向けのため)
    },

    // 一文中に読点が3つ以下でなければエラー
    "max-ten": {
      "max": 3,
      "kuten": ["。", "」", "』"]
    },

    // アルファベットは全角のみ許可
    "no-mixed-zenkaku-and-hankaku-alphabet": {
      prefer: "全角",
    },

    // 同じ助詞が連続したらエラー
    "no-doubled-joshi": {
      min_interval: 1,
      separatorCharacters: ["。", "?", "!"],
      commaCharacters: ["、"],
    },

    // 段落内で同じ接続詞が出現したらエラー
    "no-doubled-conjunction": true,

    // 一般的な誤用を検出
    // @see https://github.com/textlint-ja/textlint-rule-ja-no-abusage
    "ja-no-abusage": true,

    // 冗長な表現はエラー
    // 例: 「操作を行う」
    "ja-no-redundant-expression": true,

    // 「〜たり〜たり」になっていなければエラー
    "prefer-tari-tari": true,

    // 全角文字の間に混入した半角スペースを検出
    "textlint-rule-ja-no-space-between-full-width": true,

    // タイプミスで混入したっぽい半角アルファベットを検出
    "ja-unnatural-alphabet": {
      allow: ["/[A-Z]/"],
    },
  },
};
この記事に何かあればこちらまで (非公開)