概要
tomio2480/blog-private の PR レビューで Gemini Code Assist から繰り返し指摘されている事項として,全角記号「・/:〜」 の前後に半角スペースが入る問題 がある.現在の preset-ja-spacing ではこの種のスペースを flag できず,スタイル一貫性が機械的に担保できない.
textlint で機械検出できないため手作業で sed 一括除去するパスが頻発している(blog-private#1・blog-pipeline#1・blog-private#8).
観測事例
Gemini からの指摘パターン(blog-private#8 より):
全角句読点(「.」「・」「/」「:」など)の後に半角スペースを入れないルールを適用してください。特に「CI ・ cron」 や「取得 ・ 差し替え」 などの箇所でスペースが混入しています。
該当する具体的な箇所:
CI ・ cron → CI・cron
hatena / note → hatena/note
source / url / title → source/url/title
2025-08-30 〜 2026-04-13 → 2025-08-30〜2026-04-13
」 → 」(既に preset-ja-spacing でカバー済みだが取りこぼしあり)
既存ルールとの関係
preset-ja-spacing には以下のルールが含まれているが,全角中黒・全角スラッシュ・全角コロン・波ダッシュは「全角記号」 として認識されず flag 対象から外れている可能性 がある.
ja-no-space-around-parentheses :全角カッコ「()」 ・鈎カッコ「「」」 が対象.中黒等は対象外
ja-no-space-between-full-width :全角文字(ひらがな・カタカナ・漢字)どうしの間のスペース.全角記号は full-width として扱われない実装が多い
ja-space-between-half-and-full-width :半角と全角の境界.スペース必須側のルール
つまり 半角+スペース+全角中黒+スペース+半角 のような系列は,どのルールも flag できない.
提案する対応
案 A:preset-ja-spacing への追加ルール提案(上流)
textlint-ja/textlint-rule-preset-ja-spacing に新規ルール ja-no-space-around-fullwidth-symbols (全角中黒・スラッシュ・コロン等の前後スペース禁止)を提案する.
ただし上流対応は時間がかかるため当面は案 B / C で凌ぐ.
案 B:中央テンプレートに textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet 等を追加
既存のサードパーティ textlint ルールで類似の検出ができるものがあれば,中央テンプレートに追加する.候補:
textlint-rule-ja-hiragana-fukushi (副詞のひらがな化)
textlint-rule-ja-no-space-around-symbol(仮名.要調査)
案 C:markdownlint-cli2 のカスタムルールで補う
中央 templates/.markdownlint-cli2.yaml にカスタムルール(regex ベース)を仕込んで「全角記号 + 半角スペース」 を検出する.
custom-rules:
- name: no-space-around-fullwidth-symbol
test: '(?:[・/:〜] | [・/:〜])'
message: '全角記号の前後に半角スペースを入れないでください'
案 D:JTF スタイルチェッカー風の独自ルール
JTF 日本語標準スタイルガイド(既存 Issue #13で言及)に「全角句読点後にスペースを入れない」 規定がある.これを参考に独自 textlint ルールを書く.
推奨
案 C を短期,案 A を長期 で進めるのが現実的.案 C は中央テンプレートの 1 ファイル変更で利用者全員に展開できる.案 A は OSS 貢献として時間がかかるが,恒久対策として価値がある.
関連 Issue
概要
tomio2480/blog-privateの PR レビューで Gemini Code Assist から繰り返し指摘されている事項として,全角記号「・/:〜」 の前後に半角スペースが入る問題 がある.現在のpreset-ja-spacingではこの種のスペースを flag できず,スタイル一貫性が機械的に担保できない.textlint で機械検出できないため手作業で sed 一括除去するパスが頻発している(blog-private#1・blog-pipeline#1・blog-private#8).
観測事例
Gemini からの指摘パターン(blog-private#8 より):
該当する具体的な箇所:
CI ・ cron→CI・cronhatena / note→hatena/notesource / url / title→source/url/title2025-08-30 〜 2026-04-13→2025-08-30〜2026-04-13」→」(既に preset-ja-spacing でカバー済みだが取りこぼしあり)既存ルールとの関係
preset-ja-spacingには以下のルールが含まれているが,全角中黒・全角スラッシュ・全角コロン・波ダッシュは「全角記号」 として認識されず flag 対象から外れている可能性 がある.ja-no-space-around-parentheses:全角カッコ「()」 ・鈎カッコ「「」」 が対象.中黒等は対象外ja-no-space-between-full-width:全角文字(ひらがな・カタカナ・漢字)どうしの間のスペース.全角記号は full-width として扱われない実装が多いja-space-between-half-and-full-width:半角と全角の境界.スペース必須側のルールつまり
半角+スペース+全角中黒+スペース+半角のような系列は,どのルールも flag できない.提案する対応
案 A:preset-ja-spacing への追加ルール提案(上流)
textlint-ja/textlint-rule-preset-ja-spacing に新規ルール
ja-no-space-around-fullwidth-symbols(全角中黒・スラッシュ・コロン等の前後スペース禁止)を提案する.ただし上流対応は時間がかかるため当面は案 B / C で凌ぐ.
案 B:中央テンプレートに
textlint-rule-no-mixed-zenkaku-and-hankaku-alphabet等を追加既存のサードパーティ textlint ルールで類似の検出ができるものがあれば,中央テンプレートに追加する.候補:
textlint-rule-ja-hiragana-fukushi(副詞のひらがな化)textlint-rule-ja-no-space-around-symbol(仮名.要調査)案 C:markdownlint-cli2 のカスタムルールで補う
中央
templates/.markdownlint-cli2.yamlにカスタムルール(regex ベース)を仕込んで「全角記号 + 半角スペース」 を検出する.案 D:JTF スタイルチェッカー風の独自ルール
JTF 日本語標準スタイルガイド(既存 Issue #13で言及)に「全角句読点後にスペースを入れない」 規定がある.これを参考に独自 textlint ルールを書く.
推奨
案 C を短期,案 A を長期 で進めるのが現実的.案 C は中央テンプレートの 1 ファイル変更で利用者全員に展開できる.案 A は OSS 貢献として時間がかかるが,恒久対策として価値がある.
関連 Issue
JSパターン誤マッチ修正.本 Issue と同じスタイル一貫性の文脈