@shibayama/pdgkit 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +35 -0
- package/README.md +709 -0
- package/assets/FONT-LICENSE.md +9 -0
- package/assets/IPA_Font_License_Agreement_v1.0.txt +117 -0
- package/assets/ipaexg.ttf +0 -0
- package/dist/core.cjs +2378 -0
- package/dist/core.d.cts +130 -0
- package/dist/core.d.ts +130 -0
- package/dist/core.js +2338 -0
- package/dist/index.cjs +3539 -0
- package/dist/index.d.cts +214 -0
- package/dist/index.d.ts +214 -0
- package/dist/index.js +3475 -0
- package/dist/pdgkit-mcp.cjs +3220 -0
- package/dist/pdgkit-mcp.d.cts +1 -0
- package/dist/pdgkit-mcp.d.ts +1 -0
- package/dist/pdgkit-mcp.js +3196 -0
- package/dist/pdgkit.cjs +3558 -0
- package/dist/pdgkit.d.cts +1 -0
- package/dist/pdgkit.d.ts +1 -0
- package/dist/pdgkit.global.js +247 -0
- package/dist/pdgkit.js +3534 -0
- package/docs/ai-authoring-guide.md +507 -0
- package/docs/spec.md +592 -0
- package/examples/01-block.pdg +14 -0
- package/examples/02-flow.pdg +14 -0
- package/examples/03-state.pdg +13 -0
- package/examples/04-seq.pdg +10 -0
- package/examples/05-system.pdg +19 -0
- package/examples/06-iot-cloud.pdg +27 -0
- package/examples/07-image-pipeline.pdg +17 -0
- package/examples/08-control-loop.pdg +20 -0
- package/examples/09-handshake.pdg +12 -0
- package/package.json +91 -0
|
@@ -0,0 +1,507 @@
|
|
|
1
|
+
# PatentDSL(.pdg)記述ガイド — AI 用
|
|
2
|
+
|
|
3
|
+
このガイドは、特許図面を PatentDSL(`.pdg`)で記述する AI のための指示書です。ホスト(明細書作成ツールなど)のシステムプロンプトにそのまま注入して使います。読んだ AI が、説明から正しい `.pdg` を一度で再現できることを目的に書かれています。正典は [spec.md](spec.md) です。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 0. 出力契約(最初に守ること)
|
|
8
|
+
|
|
9
|
+
- 出力は `.pdg` のコードブロックを 1 つだけにする。前後に説明文を付けない(明示的に求められた場合を除く)。
|
|
10
|
+
- コードブロックの 1 行目は必ず図種アサーション `#! kind: <block|flow|state|seq>` にする。
|
|
11
|
+
- 与えられた情報だけで判断し、足りない部分は最も妥当な構造で補って、完成した `.pdg` を出す。質問で止まらない。
|
|
12
|
+
- 検証エラー(diagnostics)を渡されたら、その指摘だけを直して `.pdg` 全体を再出力する。
|
|
13
|
+
|
|
14
|
+
出力の形:
|
|
15
|
+
|
|
16
|
+
````
|
|
17
|
+
```pdg
|
|
18
|
+
#! kind: block
|
|
19
|
+
10 = ...
|
|
20
|
+
...
|
|
21
|
+
```
|
|
22
|
+
````
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 1. 言語の全体像
|
|
27
|
+
|
|
28
|
+
- 1 行 = 1 文。改行が文の終わり。文は 3 種類だけ(定義・包含・接続)。`#` から行末はコメント。
|
|
29
|
+
- 符号(ID)は `[A-Za-z0-9_*]+`。装置の構成要素には数値(`10`, `11`, `100`)、方法のステップには `S100`, `S110` のように `S` + 10 刻みを使うのが慣例。
|
|
30
|
+
- ラベルは「日本語 / english」の形。区切りは前後に空白のある ` / ` のみ。`A/D` や `I/O` のような語中の `/` はそのまま書ける。片方だけでもよい。
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 2. 3 つの文(正確な書式)
|
|
35
|
+
|
|
36
|
+
### 定義 — 符号にラベルを付ける
|
|
37
|
+
|
|
38
|
+
```pdg
|
|
39
|
+
10 = 制御装置 / control device
|
|
40
|
+
11 = CPU
|
|
41
|
+
13 = "I/O インターフェース" / "I/O interface"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 包含 — 親が子を内包する(スペース区切り)
|
|
45
|
+
|
|
46
|
+
```pdg
|
|
47
|
+
10 : 11 12 13
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 接続 — 線・矢印を引く(演算子の前後に半角スペース必須)
|
|
51
|
+
|
|
52
|
+
```pdg
|
|
53
|
+
11 -> 12 : 制御信号 / control signal
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
演算子:
|
|
57
|
+
|
|
58
|
+
| 演算子 | 線種 | 用途 |
|
|
59
|
+
|---|---|---|
|
|
60
|
+
| `-` | 単線 | 方向のない接続 |
|
|
61
|
+
| `->` | 矢印 | 方向のある接続(基本) |
|
|
62
|
+
| `<-` | 逆矢印 | `A <- B` は `B -> A` と同じ |
|
|
63
|
+
| `<->` | 双方向 | 相互通信 |
|
|
64
|
+
| `..` | 破線 | 論理的・補助・電源など |
|
|
65
|
+
| `.>` | 破線矢印 | 無線通信などの方向あり破線 |
|
|
66
|
+
| `=>` | 太矢印 | 主信号の強調 |
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 3. 絶対規則(破るとエラーになる)
|
|
71
|
+
|
|
72
|
+
1. 接続演算子の前後には半角スペースを必ず置く。`11 - 12` は正、`11-12` は誤り。
|
|
73
|
+
2. 接続は 1 行に 1 本だけ。連鎖記法 `A -> B -> C` は使えない。`A -> B` と `B -> C` の 2 行に分ける。
|
|
74
|
+
3. 1 ファイルに 1 つの図だけを書く。複数の図は別々に出力する。
|
|
75
|
+
4. 符号(ID)に使えるのは `A-Za-z0-9_*` だけ。`=` `:` `-` `>` `<` `.` `/` `#` `"` `(` `)`・空白は使えない。
|
|
76
|
+
5. ラベルに ` / `(区切り扱いの空白付きスラッシュ)、`:`、`=`、`#`、`"` を含めたいときは、その語を `"..."` で囲む。
|
|
77
|
+
6. 色・線の太さ・座標・フォントは指定できない(特許図面は黒線・無装飾)。
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 4. 図種の決め方(手順)
|
|
82
|
+
|
|
83
|
+
図種は宣言ではなく、書いた構造から自動的に決まります。次の手順で「狙った図種」を確実に作ります。
|
|
84
|
+
|
|
85
|
+
### 手順 1: 入力から図種を選ぶ
|
|
86
|
+
|
|
87
|
+
- 装置・システムの構成(何が何を含み、何と何がつながるか) → ブロック図 `block`
|
|
88
|
+
- 処理・方法の流れ、条件分岐 → フローチャート `flow`
|
|
89
|
+
- 状態とその間の遷移 → 状態遷移図 `state`
|
|
90
|
+
- 複数の主体(クライアントとサーバなど)間のやりとり → シーケンス図 `seq`
|
|
91
|
+
|
|
92
|
+
### 手順 2: 「目印」で図種を成立させる
|
|
93
|
+
|
|
94
|
+
図種は次の優先順位で推論されます(上にあるものが優先。最初に該当したもので確定)。
|
|
95
|
+
|
|
96
|
+
1. 包含文 `:` が 1 つでもある → ブロック図
|
|
97
|
+
2. ラベル末尾が `?` の符号がある → フローチャート
|
|
98
|
+
3. 符号 `*` が登場する → 状態遷移図
|
|
99
|
+
4. `<->`、または往復ペア(`A -> B` と `B -> A` の両方)がある → シーケンス図
|
|
100
|
+
5. 上記以外(片方向の接続のみ) → フローチャート
|
|
101
|
+
|
|
102
|
+
選んだ図種に応じて、必要な目印を入れ、他の図種の目印を混ぜないようにします。
|
|
103
|
+
|
|
104
|
+
| 狙う図種 | 入れる目印 | 入れてはいけないもの |
|
|
105
|
+
|---|---|---|
|
|
106
|
+
| block | 包含 `親 : 子...` | (`:` があれば最優先で block になるので他は気にしなくてよい) |
|
|
107
|
+
| flow | 片方向 `->` でつなぐ。条件分岐は末尾 `?` | 包含 `:`(あると block になる) |
|
|
108
|
+
| state | `*` と状態をつなぐ | 包含 `:`、末尾 `?` |
|
|
109
|
+
| seq | 主体間で往復させる、または `<->` | 包含 `:`、末尾 `?`、符号 `*` |
|
|
110
|
+
|
|
111
|
+
### 手順 3: 1 行目で宣言する
|
|
112
|
+
|
|
113
|
+
`#! kind: block` のように、選んだ図種を 1 行目に必ず書く。これは検証で構造と照合され、食い違えばエラーになる。宣言と実際の構造を一致させること。
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 5. 形状の自動決定
|
|
118
|
+
|
|
119
|
+
書く必要はなく、図種と構造から自動で決まります。狙って形を出すために知っておくこと。
|
|
120
|
+
|
|
121
|
+
- フローチャートで条件分岐の菱形を出すには、ラベル末尾を `?` にし、その符号を接続に登場させる。
|
|
122
|
+
- フローチャートで入次数 0 のノードは開始(角丸)、出次数 0 のノードは終了(角丸)になる。
|
|
123
|
+
- 状態遷移図で `*` は初期・終端の黒丸になる。
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## 6. 符号の付け方
|
|
128
|
+
|
|
129
|
+
- 装置クレーム: 上位構成に大きい番号(`100` = システム)、その下の部に十の位(`10`, `20`)、さらに下の部品に一の位を加える(`11`, `12`)と階層が読みやすい。
|
|
130
|
+
- 方法クレーム: `S100`, `S110`, `S120` のように `S` + 10 刻み。後から間に挿入しやすい。
|
|
131
|
+
- 図に登場する符号はすべて定義する。定義せず接続だけに書いた符号は「暗黙ノード」になり、意図しない空ノードが現れる。
|
|
132
|
+
- 複数の図で同じ部品を指すときは、図をまたいで同じ符号・同じ名称を使う(この一貫性は書き手が管理する)。
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 7. 自然言語から組み立てる手順と例
|
|
137
|
+
|
|
138
|
+
以降の `.pdg` はすべて検証済み(`validate` が通り、宣言どおりの図種になる)。発明の説明を図にする際の手本として使う。
|
|
139
|
+
|
|
140
|
+
### 7.1 組み立ての手順
|
|
141
|
+
|
|
142
|
+
1. 構成要素を洗い出す。文中の名詞(部・装置・ステップ・主体)を列挙する。
|
|
143
|
+
2. 符号を割り当てる。装置は数値(上位ほど大きく、下位部品ほど小さく)、方法ステップは `S100`, `S110`。
|
|
144
|
+
3. 包含関係を書く(ブロック図のとき)。「A は B と C を含む/備える/有する」→ `A : B C`。
|
|
145
|
+
4. 接続を書く。「A が B へ〜を送る/出力する」→ `A -> B : ラベル`。1 行 1 本。
|
|
146
|
+
5. ラベルを付ける。可能なら「日本語 / english」。
|
|
147
|
+
6. 図種を宣言する。1 行目に `#! kind: ...`。
|
|
148
|
+
7. 自己点検する(セクション 8)。
|
|
149
|
+
|
|
150
|
+
### 7.2 詳しい組み立て(思考過程の例)
|
|
151
|
+
|
|
152
|
+
指示: 「センサ端末は、温度センサと加速度センサを有する検出部と、取得部および判定部を有する処理部と、通信部とを備える。検出部のセンサ値は処理部へ送られ、処理部の送信データは通信部を介してゲートウェイへ無線送信される。」
|
|
153
|
+
|
|
154
|
+
- (1) 構成要素: センサ端末 / 検出部 / 温度センサ / 加速度センサ / 処理部 / 取得部 / 判定部 / 通信部 / ゲートウェイ(外部)。
|
|
155
|
+
- (2) 符号: 100=センサ端末、10=検出部、11=温度センサ、12=加速度センサ、20=処理部、21=取得部、22=判定部、30=通信部、200=ゲートウェイ。
|
|
156
|
+
- (3) 包含: 端末は検出部・処理部・通信部を備える(`100 : 10 20 30`)。検出部は 2 センサを有する(`10 : 11 12`)。処理部は取得部・判定部を有する(`20 : 21 22`)。
|
|
157
|
+
- (4) 接続: 検出部→処理部(センサ値)、処理部→通信部(送信データ)、通信部→ゲートウェイ(無線なので破線矢印 `.>`)。
|
|
158
|
+
- (5)(6) ラベルを付け、包含があるので `#! kind: block`。
|
|
159
|
+
|
|
160
|
+
```pdg
|
|
161
|
+
#! kind: block
|
|
162
|
+
100 = センサ端末 / sensor terminal
|
|
163
|
+
10 = 検出部 / detector
|
|
164
|
+
11 = 温度センサ / temperature sensor
|
|
165
|
+
12 = 加速度センサ / acceleration sensor
|
|
166
|
+
20 = 処理部 / processor
|
|
167
|
+
21 = 取得部 / acquisition unit
|
|
168
|
+
22 = 判定部 / determination unit
|
|
169
|
+
30 = 通信部 / communication unit
|
|
170
|
+
200 = ゲートウェイ / gateway
|
|
171
|
+
100 : 10 20 30
|
|
172
|
+
10 : 11 12
|
|
173
|
+
20 : 21 22
|
|
174
|
+
10 -> 20 : センサ値 / sensor value
|
|
175
|
+
20 -> 30 : 送信データ / tx data
|
|
176
|
+
30 .> 200 : 無線 / wireless
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### 7.3 図種別の例
|
|
180
|
+
|
|
181
|
+
#### ブロック図(基本)
|
|
182
|
+
|
|
183
|
+
指示: 「制御装置が CPU、メモリ、I/O インターフェースを内蔵し、I/O インターフェースが外部機器へ信号を出力する。」
|
|
184
|
+
|
|
185
|
+
```pdg
|
|
186
|
+
#! kind: block
|
|
187
|
+
10 = 制御装置 / control device
|
|
188
|
+
11 = CPU
|
|
189
|
+
12 = メモリ / memory
|
|
190
|
+
13 = "I/O インターフェース" / "I/O interface"
|
|
191
|
+
20 = 外部機器 / external device
|
|
192
|
+
10 : 11 12 13
|
|
193
|
+
13 -> 20 : 信号 / signal
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
#### ブロック図(階層 + 外部機器、有線・無線)
|
|
197
|
+
|
|
198
|
+
指示: 「システム本体は制御部(CPU・メモリ)と通信部(無線部・有線部)を備える。無線部は外部端末と無線で、有線部は外部サーバと有線でつながり、外部サーバと外部端末は相互通信する。」
|
|
199
|
+
|
|
200
|
+
考え方: 多段の包含。`<->` を含むが、包含 `:` があるため必ずブロック図になる(`:` が最優先)。
|
|
201
|
+
|
|
202
|
+
```pdg
|
|
203
|
+
#! kind: block
|
|
204
|
+
100 = システム本体 / Main system
|
|
205
|
+
10 = 制御部 / Control
|
|
206
|
+
20 = 通信部 / Comm
|
|
207
|
+
11 = CPU
|
|
208
|
+
12 = メモリ / memory
|
|
209
|
+
21 = 無線部 / wireless
|
|
210
|
+
22 = 有線部 / wired
|
|
211
|
+
30 = 外部サーバ / external server
|
|
212
|
+
40 = 外部端末 / external terminal
|
|
213
|
+
100 : 10 20
|
|
214
|
+
10 : 11 12
|
|
215
|
+
20 : 21 22
|
|
216
|
+
21 .> 40 : 無線 / wireless
|
|
217
|
+
22 -> 30 : 有線 / wired
|
|
218
|
+
30 <-> 40 : 通信 / comm
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
#### ブロック図(制御ループ / フィードバック)
|
|
222
|
+
|
|
223
|
+
指示: 「制御システムは制御部・駆動部・センサ部・対象装置を備える。制御部が駆動部へ指令を出し、駆動部が対象装置を駆動し、センサ部が対象装置の状態を検出して制御部へ測定値を戻す。」
|
|
224
|
+
|
|
225
|
+
考え方: フィードバックの戻り線は破線矢印 `.>` にすると読みやすい。
|
|
226
|
+
|
|
227
|
+
```pdg
|
|
228
|
+
#! kind: block
|
|
229
|
+
100 = 制御システム / control system
|
|
230
|
+
10 = 制御部 / controller
|
|
231
|
+
20 = 駆動部 / driver
|
|
232
|
+
30 = センサ部 / sensor unit
|
|
233
|
+
40 = 対象装置 / controlled object
|
|
234
|
+
100 : 10 20 30 40
|
|
235
|
+
10 -> 20 : 指令 / command
|
|
236
|
+
20 -> 40 : 駆動 / drive
|
|
237
|
+
40 .> 30 : 状態 / state
|
|
238
|
+
30 -> 10 : 測定値 / measured value
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
#### フローチャート(条件分岐)
|
|
242
|
+
|
|
243
|
+
指示: 「開始後に条件 A を判定し、真なら処理 X、偽なら処理 Y を行い、いずれも終了へ進む。」
|
|
244
|
+
|
|
245
|
+
考え方: 包含を使わず片方向でつなぐ。条件は末尾 `?` で菱形。分岐に Yes / No ラベル。
|
|
246
|
+
|
|
247
|
+
```pdg
|
|
248
|
+
#! kind: flow
|
|
249
|
+
S100 = 開始 / Start
|
|
250
|
+
S110 = 条件A? / "Condition A?"
|
|
251
|
+
S120 = 処理X / Process X
|
|
252
|
+
S130 = 処理Y / Process Y
|
|
253
|
+
S140 = 終了 / End
|
|
254
|
+
S100 -> S110
|
|
255
|
+
S110 -> S120 : Yes
|
|
256
|
+
S110 -> S130 : No
|
|
257
|
+
S120 -> S140
|
|
258
|
+
S130 -> S140
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
#### フローチャート(並列 / フォーク・ジョイン)
|
|
262
|
+
|
|
263
|
+
指示: 「開始後に分岐し、経路 A と経路 B を並行して行い、合流してから終了する。」
|
|
264
|
+
|
|
265
|
+
```pdg
|
|
266
|
+
#! kind: flow
|
|
267
|
+
S100 = 開始 / Start
|
|
268
|
+
S110 = 分岐 / Branch
|
|
269
|
+
S120 = 経路A / Path A
|
|
270
|
+
S130 = 経路B / Path B
|
|
271
|
+
S140 = 合流 / Join
|
|
272
|
+
S150 = 終了 / End
|
|
273
|
+
S100 -> S110
|
|
274
|
+
S110 -> S120
|
|
275
|
+
S110 -> S130
|
|
276
|
+
S120 -> S140
|
|
277
|
+
S130 -> S140
|
|
278
|
+
S140 -> S150
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
#### フローチャート(リトライのループ)
|
|
282
|
+
|
|
283
|
+
指示: 「試行して成功かを判定する。成功なら完了。失敗なら待機してから再試行する。」
|
|
284
|
+
|
|
285
|
+
考え方: ループがあるが、末尾 `?` があるためフローチャートになる(`?` は往復判定より優先)。
|
|
286
|
+
|
|
287
|
+
```pdg
|
|
288
|
+
#! kind: flow
|
|
289
|
+
S100 = 開始 / Start
|
|
290
|
+
S110 = 試行 / Attempt
|
|
291
|
+
S120 = 成功? / "Success?"
|
|
292
|
+
S130 = 完了 / Done
|
|
293
|
+
S140 = 待機 / Wait
|
|
294
|
+
S100 -> S110
|
|
295
|
+
S110 -> S120
|
|
296
|
+
S120 -> S130 : Yes
|
|
297
|
+
S120 -> S140 : No
|
|
298
|
+
S140 -> S110
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
#### 状態遷移図(基本)
|
|
302
|
+
|
|
303
|
+
指示: 「待機から起動で動作中になり、停止で待機へ戻る。動作中に異常が起きるとエラーになり、リセットで待機へ戻る。」
|
|
304
|
+
|
|
305
|
+
考え方: 初期は `*`。各遷移にきっかけをラベルで。
|
|
306
|
+
|
|
307
|
+
```pdg
|
|
308
|
+
#! kind: state
|
|
309
|
+
S1 = 待機 / Idle
|
|
310
|
+
S2 = 動作中 / Running
|
|
311
|
+
S3 = エラー / Error
|
|
312
|
+
* -> S1
|
|
313
|
+
S1 -> S2 : 起動 / start
|
|
314
|
+
S2 -> S1 : 停止 / stop
|
|
315
|
+
S2 -> S3 : 異常 / fault
|
|
316
|
+
S3 -> S1 : リセット / reset
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
#### 状態遷移図(初期と終端)
|
|
320
|
+
|
|
321
|
+
指示: 「待機で受信すると処理中になり、完了で待機へ戻る。処理中に異常終了すると終了状態になる。」
|
|
322
|
+
|
|
323
|
+
考え方: 初期も終端も `*` で表す(`* -> S1` が初期、`S2 -> *` が終端)。
|
|
324
|
+
|
|
325
|
+
```pdg
|
|
326
|
+
#! kind: state
|
|
327
|
+
S1 = 待機 / Idle
|
|
328
|
+
S2 = 処理中 / Processing
|
|
329
|
+
* -> S1
|
|
330
|
+
S1 -> S2 : 受信 / receive
|
|
331
|
+
S2 -> S1 : 完了 / done
|
|
332
|
+
S2 -> * : 異常終了 / abort
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
#### シーケンス図(基本)
|
|
336
|
+
|
|
337
|
+
指示: 「クライアントがサーバへ認証要求を送り、サーバがトークンを返す。続いてリソース要求と応答を行う。」
|
|
338
|
+
|
|
339
|
+
考え方: 主体間のやりとり。往復するので seq になる。行の順序がそのまま時系列。
|
|
340
|
+
|
|
341
|
+
```pdg
|
|
342
|
+
#! kind: seq
|
|
343
|
+
100 = クライアント / client
|
|
344
|
+
200 = サーバ / server
|
|
345
|
+
100 -> 200 : 認証要求 / auth request
|
|
346
|
+
200 -> 100 : トークン / token
|
|
347
|
+
100 -> 200 : リソース要求 / resource request
|
|
348
|
+
200 -> 100 : リソース応答 / resource response
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
#### シーケンス図(双方向通信)
|
|
352
|
+
|
|
353
|
+
指示: 「端末がサーバへ接続要求し、サーバが応答する。確立後にデータを双方向でやりとりし、最後に端末が切断する。」
|
|
354
|
+
|
|
355
|
+
考え方: 双方向のやりとりは `<->`。`<->` があれば seq になる。
|
|
356
|
+
|
|
357
|
+
```pdg
|
|
358
|
+
#! kind: seq
|
|
359
|
+
100 = 端末 / terminal
|
|
360
|
+
200 = サーバ / server
|
|
361
|
+
100 -> 200 : 接続要求 / connect
|
|
362
|
+
200 -> 100 : 応答 / response
|
|
363
|
+
100 <-> 200 : データ通信 / data exchange
|
|
364
|
+
100 -> 200 : 切断 / disconnect
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### 7.4 クレーム文からの変換
|
|
368
|
+
|
|
369
|
+
#### 装置クレーム → ブロック図
|
|
370
|
+
|
|
371
|
+
「〜と、〜と、〜と、を備える(有する/含む)装置」という文は、装置を親、各構成要素を子とするブロック図になる。
|
|
372
|
+
|
|
373
|
+
指示: 「撮像部と、前記撮像部が取得した画像を処理する画像処理部と、処理結果を表示する表示部と、を備える撮像装置。」
|
|
374
|
+
|
|
375
|
+
考え方: 撮像装置=10 が撮像部=11・画像処理部=12・表示部=13 を備える。「前記撮像部が取得した画像を処理する」→ 11 から 12 へ画像。「処理結果を表示する」→ 12 から 13 へ処理結果。
|
|
376
|
+
|
|
377
|
+
```pdg
|
|
378
|
+
#! kind: block
|
|
379
|
+
10 = 撮像装置 / imaging device
|
|
380
|
+
11 = 撮像部 / imaging unit
|
|
381
|
+
12 = 画像処理部 / image processor
|
|
382
|
+
13 = 表示部 / display unit
|
|
383
|
+
10 : 11 12 13
|
|
384
|
+
11 -> 12 : 画像 / image
|
|
385
|
+
12 -> 13 : 処理結果 / result
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
#### 方法クレーム → フローチャート
|
|
389
|
+
|
|
390
|
+
「〜するステップと、〜するステップと、…を含む方法」という文は、各ステップを順につないだフローチャートになる。判定のステップは末尾 `?` で菱形にする。
|
|
391
|
+
|
|
392
|
+
指示: 「画像を取得するステップと、前記画像から特徴量を抽出するステップと、欠陥の有無を判定するステップと、欠陥が有る場合に警告を出力するステップと、を含む検査方法。」
|
|
393
|
+
|
|
394
|
+
考え方: 取得=S100、抽出=S110、欠陥あり?=S120(判定→菱形)、警告=S130、終了=S140。判定で Yes/No に分岐。
|
|
395
|
+
|
|
396
|
+
```pdg
|
|
397
|
+
#! kind: flow
|
|
398
|
+
S100 = 画像を取得 / Acquire image
|
|
399
|
+
S110 = 特徴量を抽出 / Extract features
|
|
400
|
+
S120 = 欠陥あり? / "Defect?"
|
|
401
|
+
S130 = 警告を出力 / Output alert
|
|
402
|
+
S140 = 終了 / End
|
|
403
|
+
S100 -> S110
|
|
404
|
+
S110 -> S120
|
|
405
|
+
S120 -> S130 : Yes
|
|
406
|
+
S120 -> S140 : No
|
|
407
|
+
S130 -> S140
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## 8. 出力前の自己点検
|
|
413
|
+
|
|
414
|
+
出力する前に、次をすべて確認する。
|
|
415
|
+
|
|
416
|
+
- 1 行目が `#! kind: ...` で、宣言した図種が実際の構造と一致している。
|
|
417
|
+
- 接続演算子の前後に半角スペースがある。連鎖記法(1 行に複数の接続)を使っていない。
|
|
418
|
+
- 図に登場する符号をすべて定義した(暗黙ノードが意図的でない)。
|
|
419
|
+
- 狙った図種以外の目印(`:` `?` `*` `<->`)を誤って入れていない。
|
|
420
|
+
- ラベルの予約記号は必要に応じて `"..."` で囲んだ。
|
|
421
|
+
- 1 ファイルに 1 つの図だけを書いている。
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
## 9. よくある誤りと修正
|
|
426
|
+
|
|
427
|
+
| 誤り | 直し方 |
|
|
428
|
+
|---|---|
|
|
429
|
+
| `A -> B -> C` と 1 行に複数接続 | `A -> B` と `B -> C` に分ける |
|
|
430
|
+
| `11-12`(スペースなし) | `11 - 12` にする |
|
|
431
|
+
| フローチャートにしたいのに `:` を書いた | 包含 `:` を消す(`:` があると必ずブロック図になる) |
|
|
432
|
+
| 菱形にしたいのに長方形になる | ラベル末尾を `?` にし、そのノードを接続に登場させる。図がブロック図になっていないか確認 |
|
|
433
|
+
| 同じ符号を 2 回定義(警告) | 重複定義を 1 つにまとめる |
|
|
434
|
+
| 宣言した図種と推論が不一致 | 目印(`:` / 末尾 `?` / `*` / 往復・`<->`)を見直すか、宣言を修正 |
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## 10. 図種別テンプレート
|
|
439
|
+
|
|
440
|
+
必要に応じてコピーして書き換える。
|
|
441
|
+
|
|
442
|
+
ブロック図:
|
|
443
|
+
|
|
444
|
+
```pdg
|
|
445
|
+
#! kind: block
|
|
446
|
+
100 = システム / System
|
|
447
|
+
10 = サブシステムA / Subsystem A
|
|
448
|
+
20 = サブシステムB / Subsystem B
|
|
449
|
+
100 : 10 20
|
|
450
|
+
10 -> 20 : データ / data
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
フローチャート:
|
|
454
|
+
|
|
455
|
+
```pdg
|
|
456
|
+
#! kind: flow
|
|
457
|
+
S100 = 開始 / Start
|
|
458
|
+
S110 = 処理 / Process
|
|
459
|
+
S120 = 終了 / End
|
|
460
|
+
S100 -> S110
|
|
461
|
+
S110 -> S120
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
状態遷移図:
|
|
465
|
+
|
|
466
|
+
```pdg
|
|
467
|
+
#! kind: state
|
|
468
|
+
S1 = 状態1 / State 1
|
|
469
|
+
S2 = 状態2 / State 2
|
|
470
|
+
* -> S1
|
|
471
|
+
S1 -> S2 : 遷移 / transition
|
|
472
|
+
S2 -> S1 : 復帰 / return
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
シーケンス図:
|
|
476
|
+
|
|
477
|
+
```pdg
|
|
478
|
+
#! kind: seq
|
|
479
|
+
100 = 主体A / Actor A
|
|
480
|
+
200 = 主体B / Actor B
|
|
481
|
+
100 -> 200 : 要求 / request
|
|
482
|
+
200 -> 100 : 応答 / response
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
## 11. 出力フォーマットの指定(レンダリングも行う場合)
|
|
488
|
+
|
|
489
|
+
`.pdg` を書くだけでなく、あなた自身が pdgkit で描画まで行う環境(コードを実行できるチャットやエージェント)では、利用者の自然文の指定を次のコマンド/オプションに対応させる。指定が無ければ SVG を既定とする。描画の前に必ず検証(`pdgkit validate` / `validate()`)を通す。
|
|
490
|
+
|
|
491
|
+
| 利用者の言い方(例) | CLI | ライブラリ |
|
|
492
|
+
|---|---|---|
|
|
493
|
+
| SVG で / ベクタで | `pdgkit render fig.pdg -o fig.svg` | `renderToSvg(src)` |
|
|
494
|
+
| PNG で / 画像で | `pdgkit render fig.pdg --to png -o fig.png` | `renderToPng(src)` |
|
|
495
|
+
| JPEG で | `pdgkit render fig.pdg --to jpeg -o fig.jpg` | `renderToJpeg(src)` |
|
|
496
|
+
| PDF で / 出願用に | `pdgkit render fig.pdg --to pdf -o fig.pdf` | `renderToPdf(src)` |
|
|
497
|
+
| PowerPoint で / PPTX で / スライドに | `pdgkit render fig.pdg --to pptx -o fig.pptx` | `renderToPptx(src)` |
|
|
498
|
+
| 編集できる PPTX で / 図形として編集できるように | `pdgkit render fig.pdg --to pptx --editable -o fig.pptx` | `renderToPptx(src, { editable: true })` |
|
|
499
|
+
| 符号表(符号の説明)も | `pdgkit refs fig.pdg --format md`(または `csv`) | `refsToMarkdown(parse(src))` |
|
|
500
|
+
|
|
501
|
+
言語の指定は上記に足す: 日英併記なら `--lang both`(`{ lang: 'both' }`)、英語なら `--lang en`(`{ lang: 'en' }`)。既定は日本語。
|
|
502
|
+
|
|
503
|
+
例: 「この図を編集できる PPTX にして」→ `.pdg` を書いて `pdgkit validate` を通したうえで、`pdgkit render fig.pdg --to pptx --editable -o fig.pptx` を実行する。
|
|
504
|
+
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
PatentDSL / pdgkit — Copyright (c) 2026 しばやま, MIT License.
|