Skip to content

Commit 85490a5

Browse files
committed
feat: テクニカルライティングガイドラインを追加し、READMEを更新
fix #3
1 parent e7d3dbc commit 85490a5

File tree

7 files changed

+628
-6
lines changed

7 files changed

+628
-6
lines changed

README.md

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# textlint-rule-preset-ai-writing
22

3-
AIが生成した文章によく見られる記述パターンを検出し、より自然な日本語表現を促すtextlintルールプリセットです。
3+
AIが生成した文章によく見られる記述パターンを検出することができます。
4+
より自然な日本語表現を促すtextlintルールプリセットです。
45

56
## 原則
67

@@ -11,7 +12,24 @@ AIが生成した文章によく見られる記述パターンを検出し、よ
1112
### 1. no-ai-list-formatting
1213
リストアイテムで機械的な印象を与える可能性のある記述パターンを検出します。
1314

14-
#### 1-1. リストアイテムの強調表現
15+
### 2. no-ai-hype-expressions
16+
AIライティングで過度に使用されがちな誇張表現やハイプ的な表現を検出します。
17+
18+
### 3. no-ai-emphasis-patterns
19+
AIが機械的に生成しがちな強調パターンを検出します。
20+
21+
### 4. ai-tech-writing-guideline
22+
テクニカルライティングのベストプラクティスに基づいて、文書品質の改善提案を行います。
23+
詳細なガイドラインについては [docs/tech-writing-guidelines.md](./docs/tech-writing-guidelines.md) を参照してください。
24+
25+
#### 検出される内容
26+
- 簡潔性: 冗長表現の排除(「まず」→「まず」など)
27+
- 明確性: 能動態の使用推奨(受動態から能動態への変更提案)
28+
- 具体性: 抽象的表現の具体化(「高速な」→「50ms未満の」など)
29+
- 一貫性: 用語と表現の統一(同一対象への異なる用語使用の検出)
30+
- 構造化: 文の長さと情報整理(長い文の分割提案など)
31+
32+
#### 4-1. リストアイテムの強調表現
1533
- `allows`: 指定したパターンにマッチする場合、エラーを報告しません
1634
- 文字列: `"許可したいテキスト"`
1735
- 正規表現: `"/パターン/フラグ"` (例: `"/以下のような.*/"`)
@@ -30,11 +48,13 @@ AIが生成した文章によく見られる記述パターンを検出し、よ
3048
- **注意**: 注意が必要な項目です
3149
```
3250

33-
書き換えた例
51+
書き換えた例:
3452
```markdown
3553
- 重要な項目: これは重要な項目です
3654
- 注意事項: 注意が必要な項目です
3755
```
56+
- 注意事項: 注意が必要な項目です
57+
```
3858
3959
#### 1-2. 絵文字を使ったリストアイテム
4060
@@ -170,6 +190,15 @@ Via `.textlintrc`(Recommended)
170190
"disableAbsolutenessPatterns": false,
171191
"disableAbstractPatterns": false,
172192
"disabledPredictivePatterns": false
193+
},
194+
"ai-tech-writing-guideline": {
195+
"allows": ["許可したいテキスト", "/正規表現パターン/"],
196+
"disableRedundancyGuidance": false,
197+
"disableVoiceGuidance": false,
198+
"disableClarityGuidance": false,
199+
"disableConsistencyGuidance": false,
200+
"disableStructureGuidance": false,
201+
"enableDocumentAnalysis": true
173202
}
174203
}
175204
}

docs/tech-writing-guidelines.md

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
# テクニカルライティングガイドライン
2+
3+
効果的なテクニカルライティングの原則に基づいた、自然で読みやすい技術文書作成のためのガイドラインです。
4+
5+
## 基本原則:効果的なテクニカルライティングの「7つのC」
6+
7+
優れたテクニカルドキュメントは以下の品質を持ちます:
8+
9+
- **Clear(明確)**: 曖昧さがなく、容易に理解できる
10+
- **Concise(簡潔)**: 必要な情報を最小限の言葉で表現
11+
- **Correct(正確)**: 文法、事実、技術的内容に誤りがない
12+
- **Coherent(一貫)**: 論理的に結びつき、スムーズに流れる
13+
- **Concrete(具体的)**: 抽象的でなく、測定可能で明確
14+
- **Complete(完全)**: 必要な情報がすべて含まれている
15+
- **Courteous(丁寧)**: 読者を意識した適切なトーンと構成
16+
17+
## 1. 簡潔性の原則(Conciseness)
18+
19+
### 冗長表現の排除
20+
21+
#### 検出される表現とより良い代替案
22+
23+
| 検出される表現 | 推奨される表現 | 理由 |
24+
|---------------|---------------|------|
25+
| まず最初に | まず / 最初に | 意味の重複 |
26+
| あらかじめ予測 | 予測 | 「予測」自体が事前の概念を含む |
27+
| することができます | できます / します | 不必要な助動詞の重複 |
28+
| する必要があります | してください / します | より直接的な表現 |
29+
| 言うまでもなく | (削除) | 不要な前置き |
30+
31+
#### 改善例
32+
33+
```markdown
34+
❌ まず最初に設定ファイルを開く必要があります。
35+
✅ まず、設定ファイルを開きます。
36+
37+
❌ このAPIを使用することができます。
38+
✅ このAPIを使用できます。
39+
```
40+
41+
## 2. 明確性の原則(Clarity)
42+
43+
### 能動態の使用と具体的な動詞
44+
45+
#### 受動態から能動態への変更
46+
47+
| 受動的表現 | 能動的表現 | 改善効果 |
48+
|-----------|-----------|---------|
49+
| 処理が行われます | システムが処理します | 主語が明確 |
50+
| データの変更を行う | データを変更する | 直接的な動作 |
51+
| によって実行される | ○○が実行する | 行為者が明確 |
52+
53+
#### 改善例
54+
55+
```markdown
56+
❌ データの検証が行われます。
57+
✅ システムがデータを検証します。
58+
59+
❌ ファイルの変更を行ってください。
60+
✅ ファイルを変更してください。
61+
```
62+
63+
## 3. 具体性の原則(Concreteness)
64+
65+
### 抽象的表現の具体化
66+
67+
#### 曖昧な表現と具体的な代替案
68+
69+
| 抽象的表現 | 具体的表現の例 | 改善効果 |
70+
|-----------|---------------|---------|
71+
| 高速なパフォーマンス | 50ms未満の応答時間 | 測定可能な基準 |
72+
| 大幅に向上 | 従来比200%向上 | 定量的な情報 |
73+
| 効率的な | メモリ使用量を30%削減 | 具体的な効果 |
74+
| 適切な | セキュリティ基準に準拠した | 明確な判断基準 |
75+
76+
#### 改善例
77+
78+
```markdown
79+
❌ このAPIは高速なパフォーマンスを提供します。
80+
✅ このAPIは50ms未満で応答します。
81+
82+
❌ 大幅にパフォーマンスが向上しました。
83+
✅ 処理速度が従来比200%向上しました。
84+
```
85+
86+
## 4. 一貫性の原則(Consistency)
87+
88+
### 用語と表現の統一
89+
90+
#### よくある不一致パターン
91+
92+
| 不一致の例 | 統一すべき表現 | 注意点 |
93+
|-----------|---------------|--------|
94+
| ユーザー/クライアント/顧客 | プロジェクトで統一 | 同一対象は同一用語 |
95+
| 設定画面/設定ページ/環境設定 | UI名称で統一 | 機能名は正確に |
96+
| です・ます調/だ・である調 | 文書全体で統一 | 文体の混在を避ける |
97+
98+
#### 改善例
99+
100+
```markdown
101+
❌ ユーザーがログインし、クライアントが設定を変更します。
102+
✅ ユーザーがログインし、ユーザーが設定を変更します。
103+
104+
❌ 設定画面を開き、設定ページで変更します。
105+
✅ 設定画面を開き、設定画面で変更します。
106+
```
107+
108+
## 5. 構造化の原則(Structure)
109+
110+
### 情報の論理的整理
111+
112+
#### 文の長さと構造
113+
114+
- **一文一義**: 一つの文には一つの主要なアイデアのみ
115+
- **適切な長さ**: 50文字を超える文は分割を検討
116+
- **論理的順序**: 時系列や重要度に基づいた情報配置
117+
118+
#### 改善例
119+
120+
```markdown
121+
❌ この機能は複数のオプションを提供し、ユーザーが柔軟に設定でき、
122+
パフォーマンスも向上し、セキュリティも強化されています。
123+
124+
✅ この機能は複数のオプションを提供します。
125+
ユーザーは柔軟に設定できます。
126+
パフォーマンスが向上し、セキュリティも強化されています。
127+
```
128+
129+
### リストと見出しの活用
130+
131+
- 連続する手順は番号付きリスト
132+
- 関連項目は箇条書き
133+
- 階層構造は見出しレベルで表現
134+
135+
## 実装での考慮事項
136+
137+
### ルールの適用レベル
138+
139+
このガイドラインは以下の優先順位で適用されます:
140+
141+
1. **正確性**: 技術的事実の正確性が最優先
142+
2. **明確性**: 読者の理解を妨げない表現
143+
3. **簡潔性**: 文書の目的に応じて調整
144+
4. **丁寧さ**: 読者層に適したトーン
145+
146+
### カスタマイズ
147+
148+
プロジェクトの特性に応じて:
149+
150+
- 専門用語の定義と統一
151+
- 読者層に応じた説明レベル
152+
- 組織固有のスタイルガイド
153+
154+
## 参考資料
155+
156+
- [textlint](https://textlint.github.io/)
157+
- [JTF日本語標準スタイルガイド](https://www.jtf.jp/tips/styleguide)
158+
- [技術文書作成のベストプラクティス](https://developers.google.com/style)
159+
160+
---
161+
162+
このガイドラインは `ai-tech-writing-guideline` ルールの基準として使用されています。

lint-README.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#! /bin/bash
2+
set -ex
3+
4+
mkdir -p tmp/
5+
npm install --save-dev . textlint technological-book-corpus-ja --prefix tmp/
6+
cd tmp
7+
# README.mdのチェックを行う
8+
./node_modules/.bin/textlint --preset ai-writing ../README.md
9+
10+
# 元のディレクトリに戻る
11+
trap 'cd -' EXIT

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,9 @@
3535
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,css}\"",
3636
"prepare": "git config --local core.hooksPath .githooks",
3737
"prepublishOnly": "npm run build",
38-
"test": "npm run test:unit && npm run lint:text",
38+
"test": "npm run test:unit && npm run lint:text && npm run lint:README",
3939
"lint:text": "textlint README.md",
40+
"lint:README": "bash lint-README.sh",
4041
"test:unit": "textlint-scripts test",
4142
"watch": "textlint-scripts build --watch"
4243
},

src/index.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
import noAiListFormatting from "./rules/no-ai-list-formatting";
22
import noAiHypeExpressions from "./rules/no-ai-hype-expressions";
33
import noAiEmphasisPatterns from "./rules/no-ai-emphasis-patterns";
4+
import aiTechWritingGuideline from "./rules/ai-tech-writing-guideline";
45

56
const preset = {
67
rules: {
78
"no-ai-list-formatting": noAiListFormatting,
89
"no-ai-hype-expressions": noAiHypeExpressions,
9-
"no-ai-emphasis-patterns": noAiEmphasisPatterns
10+
"no-ai-emphasis-patterns": noAiEmphasisPatterns,
11+
"ai-tech-writing-guideline": aiTechWritingGuideline
1012
},
1113
rulesConfig: {
1214
"no-ai-list-formatting": true,
1315
"no-ai-hype-expressions": true,
14-
"no-ai-emphasis-patterns": true
16+
"no-ai-emphasis-patterns": true,
17+
"ai-tech-writing-guideline": {
18+
severity: "info"
19+
}
1520
}
1621
};
1722

0 commit comments

Comments
 (0)