チームの表記ルールを決める
学会の執筆要項や社内の決まりのように、チームには守りたい書き方があります。
chaff では、その決まりを chaff.yaml に書いて、機械で確かめられます。プログラムは要りません。この手引きの機能は、0.18.0 から使えます。
決め方は 3 つあります。
| したいこと | 書く所 | 例 |
|---|---|---|
| よく知られた決まりを丸ごと使う | style: | 電子情報通信学会の書き方 |
| 一つのルールの向きを決める | options: | カタカナ語の語末の「ー」は省く |
| チームだけのルールを足す | custom_rules: | 「下さい」ではなく「ください」 |
決まった書き方を名前で選ぶ
style: に名前を書くと、その決まりのとおりにルールが動きます。たとえば IEICE の論文では、3 音以上のカタカナ語は語末の「ー」を省きます(コンピュータ、プリンタ)。
style: ieice
これだけで、語末に「ー」を付けた語を見つけます。
3:7 warning 「サーバー」は語末の「ー」を省いて「サーバ」と書きます(3 音以上の語)
katakana-long-vowel
いま選べる名前は次の 5 つです。名前を間違えると、chaff は動く前に止まり、選べる名前を並べます。
| 名前 | 決めること | 出典 |
|---|---|---|
ieice | 3 音以上の語は語末の「ー」を省く | 電子情報通信学会「和文論文誌 投稿のしおり」2.4 |
jis-z8301-2011 | 同じ(2019 年版はこの決まりを外しました) | JIS Z 8301:2011 表 G.3 |
bunkacho | 語末の「ー」を付ける(コンピューター) | 外来語の表記(平成 3 年内閣告示) |
jis-z8301-2019 | 規定の文末に「すべきである」と、文末の「できる」を使わない。番号を付けた図・表・箇条を「上記の図」「以下の箇条」と指さない | JIS Z 8301:2019 7.3〜7.5、10.6 |
koyobun | 和文の一文は 60 字まで。です・ますとであるを混ぜない。語末の「ー」を付ける | 文化審議会「公用文作成の考え方」(2022)Ⅲ-3 ア、Ⅲ-1 イ、Ⅰ-3 エ |
音は語末の「ー」を除いて「コ・ン・ピュ・ー・タ」と数えます(JIS Z 8301:2011 表 G.3 の数え方)。小さい「ャュョ」は前の字と合わせて 1 音です。「ー」の前が 2 音以下の語(カー、カバー、シャワー)には、どの決まりでも「ー」を付けます。
ieice と jis-z8301-2011 が省くのは英語の -er、-or、-ar に当たる「ー」(ア段の字の後ろ)だけで、ュー・エー・イーで終わる語(メニュー、グレー、コピー)は見ません。
プラグインもスタイルを持てます。plugins: に入れたプラグインのスタイルは、名前の前にプラグインの名前を付けて選びます(style: example/careful)。作り方は プラグインを作る にあります。
一つのルールの向きを決める
スタイルを選ばずに、ルールの向きだけを決めることもできます。
options: に、ルールの名前と決めたいことを書きます。
rules:
katakana-long-vowel: normal
options:
katakana-long-vowel:
ending: drop # 省く。付けるなら keep
min_morae: 3 # 何音の語から見るか
except: [カー] # 見ない語
ending を書かなければ、chaff はどちらが正しいかを決めません。同じ語が両方で書かれた所(「サーバー」と「サーバ」)だけを指摘します。
chaff.yaml の設定がいちばん強く、次にスタイル、最後にジャンルの既定です。どの値がどこから来たかは、explain で確かめられます。
npx chaffjs explain katakana-long-vowel このルールの設定と、決めた場所を見る
オプション(chaff.yaml の options で決めます):
ending: drop (style: ieice から)
語末の「ー」をどちらに寄せるか
consistent 決めない。文書の中でそろっているかだけを見る
→ drop min_morae 音以上の語の語末の「ー」を省く(電子情報通信学会、JIS Z 8301:2011 まで)
チームだけのルールを足す
custom_rules: に、チームのルールを並べます。種類は 3 つです。
type: | 見つけるもの | 向いている決まり |
|---|---|---|
words | 決めた語 | 「下さい」は「ください」と書く |
pattern | 正規表現に当たる所 | 「TBD」を残さない |
tokens | 品詞と原形の並び | 「〜を行う」は「〜する」で足りる |
どのルールにも、名前・理由・直し方・例を書きます。指摘を読む人が、なぜ直すのかを分かるようにするためです。
style: ieice
custom_rules:
- id: team-kudasai
type: words
words:
下さい: ください
致します: いたします
name: 補助動詞はひらがなで書く
why: 「ご確認下さい」の「下さい」は補助動詞です。社内の書き方では、補助動詞はひらがなで書くと決めています。
how_to_fix: 「{preferred}」に直してください。
example:
before: ご確認下さい。
after: ご確認ください。
- id: team-tbd
type: pattern
pattern: 'TBD|未定'
level: error
name: 決まっていないことが残っている
why: 「TBD」「未定」が残ったまま配ると、読み手は決まったものとして動きます。
how_to_fix: 決める人と期限を書いてください。本当に未定なら、いつ決まるかを書きます。
example:
before: 公開日は TBD です。
after: 公開日は 10 月 1 日です(佐藤が 9 月 20 日までに確定します)。
- id: team-wo-okonau
type: tokens
tokens:
- pos: 名詞
- surface: を
- base: 行う
level: info
name: 「〜を行う」は「〜する」で足りる
message: 「{matched}」は「〜する」で書けます
why: 「調査を行う」は「調査する」と同じ意味で、語が二つ増えるだけです。
how_to_fix: 「〜する」に書き換えてください。
example:
before: 来週、調査を行います。
after: 来週、調査します。
level は指摘の重さで、error・warning・info から選びます。書かなければ warning です。
tokens は語の形を見るので、「行いました」「行います」のどれにも当たります。
次の連絡文を notice.md に保存して、かけてみます。
# 新サーバー導入の連絡
来週、新しいサーバーの動作確認を行います。
公開日は TBD です。決まり次第お知らせ致しますので、ご確認下さい。
$ npx chaffjs notice.md --compact
notice.md blog/tech · 日本語 ジャンルは既定から
3:7 warning 「サーバー」は語末の「ー」を省いて「サーバ」と書きます(3 音以上の語)
katakana-long-vowel
3:14 info 「確認を行い」は「〜する」で書けます
team-wo-okonau
5:6 error 決まっていないことが残っている:「TBD」
team-tbd
5:22 warning 「致します」は「いたします」と書きます
team-kudasai
5:32 warning 「下さい」は「ください」と書きます
team-kudasai
指摘 5 件、動いていない rule 60 件
この例の chaff.yaml は style: ieice も選んでいるので、1 件目はスタイルからの指摘です。
チームのルールは、chaff のルールと同じように扱えます。
explain には、書いた理由と例がそのまま出ます。
npx chaffjs explain team-tbd チームのルールの意図と例を読む
決まっていないことが残っている (team-tbd)
「TBD」「未定」が残ったまま配ると、読み手は決まったものとして動きます。
直しかた: 決める人と期限を書いてください。本当に未定なら、いつ決まるかを書きます。
例: 公開日は TBD です。
→ 公開日は 10 月 1 日です(佐藤が 9 月 20 日までに確定します)。
このルールはチームが chaff.yaml の custom_rules で決めたものです。
npx chaffjs relax team-tbd で指摘を一段軽くでき、<!-- stet: team-tbd — 理由 --> で一か所だけ黙らせられます。
書き間違えたとき
ルールに足りないものがあると、chaff は文書を見る前に止まり、何が足りないかを言います。黙って動かないと、きれいな文書に見えてしまうためです。
chaff: …/chaff.yaml: custom_rules の team-tbd: example.before がありません
chaff: …/chaff.yaml: custom_rules の team-tbd: example.after がありません
画面のパスは短くしてあります。
正規表現は、動かす前に確かめます。(a+)+ のように繰り返しの中に繰り返しがある形は断ります。長い行で止まらなくなることがあるからです。* や + を 4 つ以上使う形と、後方参照(\1)も断ります。それでも 1 文書に 1 秒以上かかったルールは止めて、「動いていない」一覧に理由と一緒に出します。
品詞の書き方
tokens の pos には、名詞・動詞・形容詞・副詞・助詞・助動詞のような名前を書けます。英語の文書なら noun・verb のような名前か、NOUN・VERB のような記号です。
base は原形(行う)、surface は書かれたままの形(を)です。一つの語に、いくつ書いても構いません。
数える・比べるなど、ここにある書き方で言えないルールは、Node の関数(type: module)で書けます(0.19.0 から)。書き方はルールを足すに、パッケージにして配る方法はプラグインを作るにあります。