@shibayama/pdgkit 0.1.0 → 0.1.2
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/README.md +84 -65
- package/dist/core.cjs +43 -14
- package/dist/core.js +43 -14
- package/dist/index.cjs +44 -15
- package/dist/index.d.cts +20 -78
- package/dist/index.d.ts +20 -78
- package/dist/index.js +44 -15
- package/dist/pdgkit-mcp.cjs +45 -16
- package/dist/pdgkit-mcp.js +45 -16
- package/dist/pdgkit.cjs +44 -15
- package/dist/pdgkit.global.js +6 -6
- package/dist/pdgkit.js +44 -15
- package/docs/ai-authoring-guide.md +238 -283
- package/docs/spec.md +1 -0
- package/package.json +1 -1
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
# PatentDSL(.pdg)記述ガイド — AI 用
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
このガイドは、**発明の説明文やクレーム文を読み、特許図面を PatentDSL(`.pdg`)へ翻訳する AI** のための指示書です。ホスト(明細書作成ツールなど)のシステムプロンプトにそのまま注入して使います。読んだ AI が、与えられた文章から正しい `.pdg` を一度で組み立てられることを目的とします。正典は [spec.md](spec.md) です。
|
|
4
|
+
|
|
5
|
+
あなたの仕事は創作ではなく **翻訳** です。入力の文章にある構成要素・関係・流れを、過不足なく `.pdg` の 3 種類の文へ写してください。文章に無いものを足さず、文章にあるものを落とさないことが最優先です。
|
|
6
|
+
|
|
7
|
+
**あなたはレンダラではありません。** 出力は `.pdg` テキストだけです。図そのもの(SVG・画像・描画コードなど)を自分で生成してはいけません。`.pdg` を pdgkit に渡せば、検証と描画は pdgkit が決定論的に行います。あなたの役割は、正しい `.pdg` を書くことに限られます。
|
|
4
8
|
|
|
5
9
|
---
|
|
6
10
|
|
|
7
11
|
## 0. 出力契約(最初に守ること)
|
|
8
12
|
|
|
13
|
+
- **あなたはレンダラではない。** 自分で図(SVG・画像・matplotlib などの描画)を作らず、`.pdg` テキストだけを書く。図の描画は pdgkit が行う。
|
|
14
|
+
- コードを実行できる環境(コードインタープリタ・エージェント)では、書いた `.pdg` を pdgkit の `validate`(検証)→ `render`(描画)に通し、**自分で画像を生成せず** pdgkit が出力したファイルを渡す。
|
|
9
15
|
- 出力は `.pdg` のコードブロックを 1 つだけにする。前後に説明文を付けない(明示的に求められた場合を除く)。
|
|
10
16
|
- コードブロックの 1 行目は必ず図種アサーション `#! kind: <block|flow|state|seq>` にする。
|
|
11
17
|
- 与えられた情報だけで判断し、足りない部分は最も妥当な構造で補って、完成した `.pdg` を出す。質問で止まらない。
|
|
@@ -23,181 +29,228 @@
|
|
|
23
29
|
|
|
24
30
|
---
|
|
25
31
|
|
|
26
|
-
## 1.
|
|
32
|
+
## 1. 全体像 — これは「文章 → .pdg」の翻訳
|
|
27
33
|
|
|
28
|
-
|
|
29
|
-
- 符号(ID)は `[A-Za-z0-9_*]+`。装置の構成要素には数値(`10`, `11`, `100`)、方法のステップには `S100`, `S110` のように `S` + 10 刻みを使うのが慣例。
|
|
30
|
-
- ラベルは「日本語 / english」の形。区切りは前後に空白のある ` / ` のみ。`A/D` や `I/O` のような語中の `/` はそのまま書ける。片方だけでもよい。
|
|
34
|
+
`.pdg` は 3 種類の文しか持ちません。翻訳とは、入力の文章をこの 3 文型に振り分ける作業です。
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
| 文型 | 役割 | 書式 | 文章中の現れ方 |
|
|
37
|
+
|---|---|---|---|
|
|
38
|
+
| 定義 | 符号に名前を付ける | `10 = 制御部 / controller` | 名詞(部・装置・ステップ・主体) |
|
|
39
|
+
| 包含 | 親が子を内包する | `10 : 11 12` | 「A は B と C を備える/含む/有する」 |
|
|
40
|
+
| 接続 | 線・矢印を引く | `11 -> 12 : 信号 / signal` | 「A が B へ〜を送る/出力する」 |
|
|
33
41
|
|
|
34
|
-
|
|
42
|
+
図種(block / flow / state / seq)は宣言ではなく、書いた構造から自動的に決まります(→ 第 4 節)。だからまず文章を 3 文型へ翻訳し、その結果として図種が定まる、という順で考えます。
|
|
35
43
|
|
|
36
|
-
|
|
44
|
+
---
|
|
37
45
|
|
|
38
|
-
|
|
39
|
-
10 = 制御装置 / control device
|
|
40
|
-
11 = CPU
|
|
41
|
-
13 = "I/O インターフェース" / "I/O interface"
|
|
42
|
-
```
|
|
46
|
+
## 2. 翻訳パイプライン
|
|
43
47
|
|
|
44
|
-
|
|
48
|
+
入力の文章を、次の A→F の順で機械的に処理します。各ステップの判断材料は第 3 節の対応辞典にあります。
|
|
45
49
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
**A. 入力を読み、図の性質を見極める。**
|
|
51
|
+
文章が何を語っているかで、目指す図種の当たりを付けます(確定は D)。
|
|
52
|
+
- 物の構成(何が何を含み、何と何がつながるか) → ブロック図
|
|
53
|
+
- 処理・方法の手順、条件分岐 → フローチャート
|
|
54
|
+
- 状態とその間の遷移 → 状態遷移図
|
|
55
|
+
- 複数の主体の間のやりとり(要求と応答の往復) → シーケンス図
|
|
49
56
|
|
|
50
|
-
|
|
57
|
+
**B. 構成要素を抽出し、符号を割り当てる。**
|
|
58
|
+
文中の名詞(装置・部・部品・ステップ・主体)を漏れなく列挙し、それぞれに符号(ID)を与えます(割り当て規則は 3.7)。各要素は必ず定義文 `符号 = 名前` を書きます。
|
|
51
59
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
**C. 関係を抽出する。**
|
|
61
|
+
要素どうしの関係を、述語(動詞・助詞)から読み取ります。
|
|
62
|
+
- 「備える/含む/有する/から成る」「内部に」 → 包含 `親 : 子...`
|
|
63
|
+
- 「送る/出力する/供給する/入力する/戻す/受け取る」 → 接続。**向きと線種**は 3.3 の辞典で決める。
|
|
55
64
|
|
|
56
|
-
|
|
65
|
+
**D. 図種を確定する。**
|
|
66
|
+
B・C で書いた構造に含まれる「目印」から図種が決まります(4.3 の優先順位)。狙った図種になるよう目印を整え、他の図種の目印を混ぜないようにします。
|
|
57
67
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
| `<->` | 双方向 | 相互通信 |
|
|
64
|
-
| `..` | 破線 | 論理的・補助・電源など |
|
|
65
|
-
| `.>` | 破線矢印 | 無線通信などの方向あり破線 |
|
|
66
|
-
| `=>` | 太矢印 | 主信号の強調 |
|
|
68
|
+
**E. 3 文型へ翻訳して並べる。**
|
|
69
|
+
定義 → 包含 → 接続の順に書くと読みやすい。1 行 1 文、接続は 1 行 1 本。ラベルは可能なら「日本語 / english」。
|
|
70
|
+
|
|
71
|
+
**F. 1 行目に図種を宣言し、自己点検する。**
|
|
72
|
+
`#! kind: ...` を先頭に置く。第 7 節のチェックリストを通してから出力する。
|
|
67
73
|
|
|
68
74
|
---
|
|
69
75
|
|
|
70
|
-
## 3.
|
|
76
|
+
## 3. 文章の手がかり → 記法 対応辞典
|
|
71
77
|
|
|
72
|
-
|
|
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
|
+
翻訳の中核です。特許文の定型表現を、そのまま記法に写すための対応表です。
|
|
78
79
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
## 4. 図種の決め方(手順)
|
|
80
|
+
### 3.1 図種を選ぶ手がかり
|
|
82
81
|
|
|
83
|
-
|
|
82
|
+
| 文章の語 | 図種 |
|
|
83
|
+
|---|---|
|
|
84
|
+
| 装置/システム/機器/〜部/〜を備える/構成 | block |
|
|
85
|
+
| 方法/手順/工程/〜するステップ/処理の流れ/〜してから〜する | flow |
|
|
86
|
+
| 状態/モード/〜状態になる/遷移 | state |
|
|
87
|
+
| 通信/プロトコル/要求と応答/やりとり/ハンドシェイク/送受信 | seq |
|
|
84
88
|
|
|
85
|
-
|
|
89
|
+
迷ったら:物の話なら block、ことの順序の話なら flow。
|
|
86
90
|
|
|
87
|
-
|
|
88
|
-
- 処理・方法の流れ、条件分岐 → フローチャート `flow`
|
|
89
|
-
- 状態とその間の遷移 → 状態遷移図 `state`
|
|
90
|
-
- 複数の主体(クライアントとサーバなど)間のやりとり → シーケンス図 `seq`
|
|
91
|
+
### 3.2 包含を読む(ブロック図)
|
|
91
92
|
|
|
92
|
-
|
|
93
|
+
| 文章 | 記法 |
|
|
94
|
+
|---|---|
|
|
95
|
+
| 「A は B と C と D を備える/有する/含む/具備する」 | `A : B C D` |
|
|
96
|
+
| 「A は、B と、C と、D と、を備える」(クレーム文体) | `A : B C D` |
|
|
97
|
+
| 「A の内部に B」「A に B が設けられる/配置される」 | A を親にした包含 |
|
|
98
|
+
| 多段(A が B を含み、B が C を含む) | `A : B` と `B : C` の 2 行 |
|
|
93
99
|
|
|
94
|
-
|
|
100
|
+
「、と、」で列挙され「を備える(有する/含む)」で締める形は、締めの主語を親、列挙された各要素を子とする包含です。
|
|
95
101
|
|
|
96
|
-
|
|
97
|
-
2. ラベル末尾が `?` の符号がある → フローチャート
|
|
98
|
-
3. 符号 `*` が登場する → 状態遷移図
|
|
99
|
-
4. `<->`、または往復ペア(`A -> B` と `B -> A` の両方)がある → シーケンス図
|
|
100
|
-
5. 上記以外(片方向の接続のみ) → フローチャート
|
|
102
|
+
### 3.3 接続と線種を読む
|
|
101
103
|
|
|
102
|
-
|
|
104
|
+
向きは「誰から誰へ」を述語で判断します。「A が B へ送る」は `A -> B`、「A は B から受け取る/取得する」は `B -> A`(向きが反転する点に注意)。
|
|
103
105
|
|
|
104
|
-
|
|
|
106
|
+
| 文章 | 記法 | 線種の意図 |
|
|
105
107
|
|---|---|---|
|
|
106
|
-
|
|
|
107
|
-
|
|
|
108
|
-
|
|
|
109
|
-
|
|
|
108
|
+
| A が B へ〜を送る/出力する/供給する/入力する/与える | `A -> B : 〜` | 矢印(基本) |
|
|
109
|
+
| A は B から〜を受け取る/取得する | `B -> A : 〜` | 矢印(向き反転) |
|
|
110
|
+
| 前記 A が…した〜を B が処理する(クレーム) | `A -> B : 〜` | 「前記」は既出要素=同じ符号 |
|
|
111
|
+
| A と B が相互に/双方向に通信する | `A <-> B : 〜` | 双方向 |
|
|
112
|
+
| A が B へ無線で送信する/非接触で | `A .> B : 〜` | 破線矢印(無線・論理) |
|
|
113
|
+
| 電源を供給する/給電する/〜に接続(補助的) | `A .. B` | 破線(補助・電源) |
|
|
114
|
+
| 主たる〜/主信号を伝える(強調したいとき) | `A => B : 〜` | 太矢印(任意) |
|
|
115
|
+
| 単に「つながる/接続される」(向き不問) | `A - B` | 単線 |
|
|
116
|
+
| フィードバックする/帰還する/〜へ戻す | 戻り線 `A -> B`(または `.>`) | 後述の通り自動で側方へ回る |
|
|
110
117
|
|
|
111
|
-
|
|
118
|
+
向きが文章から判然としないときは、データ・信号・物が流れる自然な向き(上流→下流)を採用します。
|
|
112
119
|
|
|
113
|
-
|
|
120
|
+
### 3.4 フローチャート特有(分岐・ループ)
|
|
114
121
|
|
|
115
|
-
|
|
122
|
+
| 文章 | 記法 |
|
|
123
|
+
|---|---|
|
|
124
|
+
| 〜するステップ/〜してから〜する/次に〜する | 順次に `S100 -> S110 -> ...`(ただし 1 行 1 本に分ける) |
|
|
125
|
+
| 〜か判定する/〜かどうか/〜の有無を判定する/成功したか | 判定ノードのラベル末尾を `?` にする(菱形になる) |
|
|
126
|
+
| Yes なら X、No なら Y/真なら/偽なら/一致すれば | 判定から 2 本の接続を出し、`: Yes` `: No` 等のラベルを付ける |
|
|
127
|
+
| 失敗したら再試行する/繰り返す/〜へ戻る | 戻り線(前のステップへ `->`) |
|
|
128
|
+
| 開始/終了 | 入次数 0・出次数 0 のノードが自動で角丸になる |
|
|
116
129
|
|
|
117
|
-
|
|
130
|
+
**戻り線(ループ)は素直に書く。** 前のステップへ戻る接続(例 `S140 -> S110`)は、自動的に図の右側の縦レーンへ回り込ませて描かれ、前進する線と重なりません。戻り先を別ノードにする等の小細工は不要です。戻り線が複数あるときは入れ子になり、距離の長いものほど外側を通ります(状態遷移図の戻り遷移も同様)。
|
|
118
131
|
|
|
119
|
-
|
|
132
|
+
### 3.5 状態遷移図特有
|
|
120
133
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
134
|
+
| 文章 | 記法 |
|
|
135
|
+
|---|---|
|
|
136
|
+
| 〜状態/待機状態・動作状態 | 状態ノードを定義 |
|
|
137
|
+
| 初期状態/開始時は〜 | `* -> S1`(`*` が初期の黒丸) |
|
|
138
|
+
| 〜になると/〜をきっかけに〜へ遷移する | `S1 -> S2 : きっかけ`(ラベルは遷移の契機) |
|
|
139
|
+
| 終了状態/最終状態になる | `S2 -> *`(`*` が終端) |
|
|
124
140
|
|
|
125
|
-
|
|
141
|
+
### 3.6 シーケンス図特有
|
|
142
|
+
|
|
143
|
+
| 文章 | 記法 |
|
|
144
|
+
|---|---|
|
|
145
|
+
| A が B へ要求し、B が応答する | `A -> B : 要求` と `B -> A : 応答`(往復で seq になる) |
|
|
146
|
+
| 双方向にやりとりする | `A <-> B : 〜` |
|
|
147
|
+
| 主体(登場人物) | 接続に**登場した順**に左から配置されるので、流れの起点から書く |
|
|
148
|
+
| 時系列 | **行の順序がそのまま上から下の時間順**になる |
|
|
149
|
+
|
|
150
|
+
### 3.7 符号(ID)の割り当て
|
|
126
151
|
|
|
127
|
-
|
|
152
|
+
符号は特許明細書の「符号の説明」と対応する番号です。文章中の同じ要素には必ず同じ符号を使います(「前記〜」は既出要素を指す)。
|
|
128
153
|
|
|
129
|
-
-
|
|
130
|
-
-
|
|
131
|
-
-
|
|
132
|
-
-
|
|
154
|
+
- 装置・システム: 上位構成に大きい番号(`100` = システム)、その下の部に十の位(`10`, `20`, `30`)、さらに下の部品に一の位を足す(`11`, `12`)。階層が読みやすくなる。
|
|
155
|
+
- 方法のステップ: `S100`, `S110`, `S120` のように `S` + 10 刻み。後から間に挿入しやすい。
|
|
156
|
+
- 状態: `S1`, `S2`(または `待機` 等の英数字 ID)。初期・終端は `*`。
|
|
157
|
+
- 使える文字は `A-Za-z0-9_*` のみ。
|
|
133
158
|
|
|
134
159
|
---
|
|
135
160
|
|
|
136
|
-
##
|
|
161
|
+
## 4. 言語仕様リファレンス
|
|
162
|
+
|
|
163
|
+
### 4.1 3 つの文(正確な書式)
|
|
164
|
+
|
|
165
|
+
```pdg
|
|
166
|
+
10 = 制御装置 / control device # 定義(ラベルは「日本語 / english」、片方だけでも可)
|
|
167
|
+
13 = "I/O インターフェース" / "I/O interface" # 予約記号を含む語は "..." で囲む
|
|
168
|
+
10 : 11 12 13 # 包含(子はスペース区切り)
|
|
169
|
+
11 -> 12 : 制御信号 / control signal # 接続(演算子の前後に半角スペース必須)
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
- 1 行 = 1 文。改行が文の終わり。`#` から行末はコメント。
|
|
173
|
+
- ラベルの区切りは前後に空白のある ` / ` のみ。`A/D` や `I/O` のような語中の `/` はそのまま書ける。
|
|
174
|
+
|
|
175
|
+
### 4.2 接続演算子
|
|
176
|
+
|
|
177
|
+
| 演算子 | 線種 | 主な用途 |
|
|
178
|
+
|---|---|---|
|
|
179
|
+
| `-` | 単線 | 方向のない接続 |
|
|
180
|
+
| `->` | 矢印 | 方向のある接続(基本) |
|
|
181
|
+
| `<-` | 逆矢印 | `A <- B` は `B -> A` と同じ |
|
|
182
|
+
| `<->` | 双方向 | 相互通信 |
|
|
183
|
+
| `..` | 破線 | 論理的・補助・電源など |
|
|
184
|
+
| `.>` | 破線矢印 | 無線通信などの方向あり破線 |
|
|
185
|
+
| `=>` | 太矢印 | 主信号の強調 |
|
|
186
|
+
|
|
187
|
+
### 4.3 図種の推論(優先順位)
|
|
137
188
|
|
|
138
|
-
|
|
189
|
+
上から順に判定し、**最初に該当したもので確定**します。
|
|
139
190
|
|
|
140
|
-
|
|
191
|
+
1. 包含文 `:` が 1 つでもある → **block**
|
|
192
|
+
2. ラベル末尾が `?` の符号がある → **flow**
|
|
193
|
+
3. 符号 `*` が登場する → **state**
|
|
194
|
+
4. `<->`、または往復ペア(`A -> B` と `B -> A` の両方)がある → **seq**
|
|
195
|
+
5. 上記以外(片方向の接続のみ) → **flow**
|
|
141
196
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
7. 自己点検する(セクション 8)。
|
|
197
|
+
| 狙う図種 | 入れる目印 | 入れてはいけない目印 |
|
|
198
|
+
|---|---|---|
|
|
199
|
+
| block | 包含 `親 : 子...` | (`:` があれば最優先で block。他は気にしなくてよい) |
|
|
200
|
+
| flow | 片方向 `->`。分岐は末尾 `?` | 包含 `:` |
|
|
201
|
+
| state | `*` と状態の接続 | 包含 `:`、末尾 `?` |
|
|
202
|
+
| seq | 主体間の往復、または `<->` | 包含 `:`、末尾 `?`、符号 `*` |
|
|
149
203
|
|
|
150
|
-
###
|
|
204
|
+
### 4.4 形状の自動決定(書かずに決まる)
|
|
151
205
|
|
|
152
|
-
|
|
206
|
+
- flow: ラベル末尾 `?` → 菱形。入次数 0 → 開始(角丸)、出次数 0 → 終了(角丸)。他 → 長方形。
|
|
207
|
+
- state: `*` → 黒丸。他 → 角丸。
|
|
208
|
+
- block → 長方形。seq → アクタ。
|
|
153
209
|
|
|
154
|
-
|
|
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`。
|
|
210
|
+
### 4.5 絶対規則(破るとエラー)
|
|
159
211
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
10 : 11 12
|
|
173
|
-
20 : 21 22
|
|
174
|
-
10 -> 20 : センサ値 / sensor value
|
|
175
|
-
20 -> 30 : 送信データ / tx data
|
|
176
|
-
30 .> 200 : 無線 / wireless
|
|
177
|
-
```
|
|
212
|
+
1. 接続演算子の前後に半角スペースを必ず置く。`11 - 12` は正、`11-12` は誤り。
|
|
213
|
+
2. 接続は 1 行 1 本。連鎖 `A -> B -> C` は不可。`A -> B` と `B -> C` に分ける。
|
|
214
|
+
3. 1 ファイルに 1 図だけ。複数の図は別々に出力する。
|
|
215
|
+
4. 符号に使えるのは `A-Za-z0-9_*` のみ(`=` `:` `-` `>` `<` `.` `/` `#` `"` `(` `)`・空白は不可)。
|
|
216
|
+
5. ラベルに ` / `・`:`・`=`・`#`・`"` を含めたいときは、その語を `"..."` で囲む。
|
|
217
|
+
6. 色・線の太さ・座標・フォントは指定できない(特許図面は黒線・無装飾)。
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## 5. 翻訳例(思考過程つき)
|
|
222
|
+
|
|
223
|
+
以下の `.pdg` はすべて検証済み(`validate` が通り、宣言どおりの図種になる)。文章をどう読み、どう構造化したかを併記します。
|
|
178
224
|
|
|
179
|
-
###
|
|
225
|
+
### 5.1 装置クレーム → ブロック図
|
|
180
226
|
|
|
181
|
-
|
|
227
|
+
入力: 「撮像部と、前記撮像部が取得した画像を処理する画像処理部と、処理結果を表示する表示部と、を備える撮像装置。」
|
|
182
228
|
|
|
183
|
-
|
|
229
|
+
翻訳:
|
|
230
|
+
- A: 「〜を備える…装置」=物の構成 → block。
|
|
231
|
+
- B: 要素=撮像装置(10)・撮像部(11)・画像処理部(12)・表示部(13)。
|
|
232
|
+
- C: 「撮像装置 … を備える」→ `10 : 11 12 13`。「前記撮像部が取得した画像を処理する画像処理部」→ 11→12(画像)。「処理結果を表示する表示部」→ 12→13(処理結果)。
|
|
233
|
+
- D: 包含があるので block 確定。
|
|
184
234
|
|
|
185
235
|
```pdg
|
|
186
236
|
#! kind: block
|
|
187
|
-
10 =
|
|
188
|
-
11 =
|
|
189
|
-
12 =
|
|
190
|
-
13 =
|
|
191
|
-
20 = 外部機器 / external device
|
|
237
|
+
10 = 撮像装置 / imaging device
|
|
238
|
+
11 = 撮像部 / imaging unit
|
|
239
|
+
12 = 画像処理部 / image processor
|
|
240
|
+
13 = 表示部 / display unit
|
|
192
241
|
10 : 11 12 13
|
|
193
|
-
|
|
242
|
+
11 -> 12 : 画像 / image
|
|
243
|
+
12 -> 13 : 処理結果 / result
|
|
194
244
|
```
|
|
195
245
|
|
|
196
|
-
|
|
246
|
+
### 5.2 説明文(多段の包含+外部機器) → ブロック図
|
|
197
247
|
|
|
198
|
-
|
|
248
|
+
入力: 「システム本体は制御部(CPU・メモリ)と通信部(無線部・有線部)を備える。無線部は外部端末と無線で、有線部は外部サーバと有線でつながり、外部サーバと外部端末は相互通信する。」
|
|
199
249
|
|
|
200
|
-
|
|
250
|
+
翻訳:
|
|
251
|
+
- B: システム本体(100)、制御部(10)・通信部(20)、CPU(11)・メモリ(12)、無線部(21)・有線部(22)、外部サーバ(30)・外部端末(40)。
|
|
252
|
+
- C: 多段包含 `100 : 10 20`/`10 : 11 12`/`20 : 21 22`。無線部→外部端末は無線なので `.>`。有線部→外部サーバは `->`。外部どうしは相互通信 `<->`。
|
|
253
|
+
- D: `<->` を含むが、**包含 `:` が最優先**なので block 確定。
|
|
201
254
|
|
|
202
255
|
```pdg
|
|
203
256
|
#! kind: block
|
|
@@ -218,11 +271,11 @@
|
|
|
218
271
|
30 <-> 40 : 通信 / comm
|
|
219
272
|
```
|
|
220
273
|
|
|
221
|
-
|
|
274
|
+
### 5.3 制御ループ(フィードバック) → ブロック図
|
|
222
275
|
|
|
223
|
-
|
|
276
|
+
入力: 「制御システムは制御部・駆動部・センサ部・対象装置を備える。制御部が駆動部へ指令を出し、駆動部が対象装置を駆動し、センサ部が対象装置の状態を検出して制御部へ測定値を戻す。」
|
|
224
277
|
|
|
225
|
-
|
|
278
|
+
翻訳: 包含 `100 : 10 20 30 40`。流れは指令→駆動→状態→測定値の環。「状態を検出して…戻す」のフィードバックは破線矢印 `.>` にすると読みやすい。
|
|
226
279
|
|
|
227
280
|
```pdg
|
|
228
281
|
#! kind: block
|
|
@@ -238,51 +291,35 @@
|
|
|
238
291
|
30 -> 10 : 測定値 / measured value
|
|
239
292
|
```
|
|
240
293
|
|
|
241
|
-
|
|
294
|
+
### 5.4 方法クレーム → フローチャート
|
|
242
295
|
|
|
243
|
-
|
|
296
|
+
入力: 「画像を取得するステップと、前記画像から特徴量を抽出するステップと、欠陥の有無を判定するステップと、欠陥が有る場合に警告を出力するステップと、を含む検査方法。」
|
|
244
297
|
|
|
245
|
-
|
|
298
|
+
翻訳:
|
|
299
|
+
- A: 「〜するステップ…を含む方法」=手順 → flow。
|
|
300
|
+
- B: 取得(S100)・抽出(S110)・欠陥あり?(S120)・警告(S130)・終了(S140)。
|
|
301
|
+
- C: 順次接続。「欠陥の有無を判定する」→ 判定なので末尾 `?` で菱形。「欠陥が有る場合に警告」→ S120 から Yes/No に分岐。
|
|
302
|
+
- D: 包含なし・片方向のみで flow。
|
|
246
303
|
|
|
247
304
|
```pdg
|
|
248
305
|
#! kind: flow
|
|
249
|
-
S100 =
|
|
250
|
-
S110 =
|
|
251
|
-
S120 =
|
|
252
|
-
S130 =
|
|
306
|
+
S100 = 画像を取得 / Acquire image
|
|
307
|
+
S110 = 特徴量を抽出 / Extract features
|
|
308
|
+
S120 = 欠陥あり? / "Defect?"
|
|
309
|
+
S130 = 警告を出力 / Output alert
|
|
253
310
|
S140 = 終了 / End
|
|
254
311
|
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
312
|
S110 -> S120
|
|
275
|
-
|
|
276
|
-
S120 -> S140
|
|
313
|
+
S120 -> S130 : Yes
|
|
314
|
+
S120 -> S140 : No
|
|
277
315
|
S130 -> S140
|
|
278
|
-
S140 -> S150
|
|
279
316
|
```
|
|
280
317
|
|
|
281
|
-
|
|
318
|
+
### 5.5 分岐とループのあるフロー → フローチャート
|
|
282
319
|
|
|
283
|
-
|
|
320
|
+
入力: 「試行して成功かを判定する。成功なら完了。失敗なら待機してから再試行する。」
|
|
284
321
|
|
|
285
|
-
|
|
322
|
+
翻訳: 「成功か」→ 末尾 `?` の菱形。「成功なら/失敗なら」→ Yes/No 分岐。「再試行する」→ 待機から試行への戻り線。戻り線は自動で側方へ回るので素直に書く。
|
|
286
323
|
|
|
287
324
|
```pdg
|
|
288
325
|
#! kind: flow
|
|
@@ -298,11 +335,11 @@ S120 -> S140 : No
|
|
|
298
335
|
S140 -> S110
|
|
299
336
|
```
|
|
300
337
|
|
|
301
|
-
|
|
338
|
+
### 5.6 状態遷移図
|
|
302
339
|
|
|
303
|
-
|
|
340
|
+
入力: 「待機から起動で動作中になり、停止で待機へ戻る。動作中に異常が起きるとエラーになり、リセットで待機へ戻る。」
|
|
304
341
|
|
|
305
|
-
|
|
342
|
+
翻訳: 状態=待機(S1)・動作中(S2)・エラー(S3)。初期は `* -> S1`。各遷移のラベルは契機(起動・停止・異常・リセット)。戻り遷移も素直に書く。
|
|
306
343
|
|
|
307
344
|
```pdg
|
|
308
345
|
#! kind: state
|
|
@@ -316,27 +353,11 @@ S2 -> S3 : 異常 / fault
|
|
|
316
353
|
S3 -> S1 : リセット / reset
|
|
317
354
|
```
|
|
318
355
|
|
|
319
|
-
|
|
356
|
+
### 5.7 シーケンス図
|
|
320
357
|
|
|
321
|
-
|
|
358
|
+
入力: 「クライアントがサーバへ認証要求を送り、サーバがトークンを返す。続いてリソース要求と応答を行う。」
|
|
322
359
|
|
|
323
|
-
|
|
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 になる。行の順序がそのまま時系列。
|
|
360
|
+
翻訳: 主体=クライアント(100)・サーバ(200)。要求と応答が往復するので seq。行の順序が時系列。
|
|
340
361
|
|
|
341
362
|
```pdg
|
|
342
363
|
#! kind: seq
|
|
@@ -348,98 +369,11 @@ S2 -> * : 異常終了 / abort
|
|
|
348
369
|
200 -> 100 : リソース応答 / resource response
|
|
349
370
|
```
|
|
350
371
|
|
|
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
372
|
---
|
|
437
373
|
|
|
438
|
-
##
|
|
439
|
-
|
|
440
|
-
必要に応じてコピーして書き換える。
|
|
374
|
+
## 6. 図種別テンプレート
|
|
441
375
|
|
|
442
|
-
|
|
376
|
+
要素名だけ差し替えれば使えます。
|
|
443
377
|
|
|
444
378
|
```pdg
|
|
445
379
|
#! kind: block
|
|
@@ -450,8 +384,6 @@ S130 -> S140
|
|
|
450
384
|
10 -> 20 : データ / data
|
|
451
385
|
```
|
|
452
386
|
|
|
453
|
-
フローチャート:
|
|
454
|
-
|
|
455
387
|
```pdg
|
|
456
388
|
#! kind: flow
|
|
457
389
|
S100 = 開始 / Start
|
|
@@ -461,8 +393,6 @@ S100 -> S110
|
|
|
461
393
|
S110 -> S120
|
|
462
394
|
```
|
|
463
395
|
|
|
464
|
-
状態遷移図:
|
|
465
|
-
|
|
466
396
|
```pdg
|
|
467
397
|
#! kind: state
|
|
468
398
|
S1 = 状態1 / State 1
|
|
@@ -472,8 +402,6 @@ S1 -> S2 : 遷移 / transition
|
|
|
472
402
|
S2 -> S1 : 復帰 / return
|
|
473
403
|
```
|
|
474
404
|
|
|
475
|
-
シーケンス図:
|
|
476
|
-
|
|
477
405
|
```pdg
|
|
478
406
|
#! kind: seq
|
|
479
407
|
100 = 主体A / Actor A
|
|
@@ -484,21 +412,48 @@ S2 -> S1 : 復帰 / return
|
|
|
484
412
|
|
|
485
413
|
---
|
|
486
414
|
|
|
487
|
-
##
|
|
415
|
+
## 7. 出力前の自己点検
|
|
416
|
+
|
|
417
|
+
- 図そのもの(画像・SVG・描画コード)ではなく、`.pdg` テキストだけを出力している。
|
|
418
|
+
- 1 行目が `#! kind: ...` で、宣言した図種が実際の構造(4.3 の目印)と一致している。
|
|
419
|
+
- 文章中の要素を**漏れなく**定義し、文章に**無い**要素を足していない。
|
|
420
|
+
- 接続の**向き**が文章どおり(「A から B へ」「B から A へ」を取り違えていない)。
|
|
421
|
+
- 接続演算子の前後に半角スペースがある。1 行に複数の接続を書いていない。
|
|
422
|
+
- 接続だけに現れる未定義符号がない(暗黙ノードが意図的でない)。
|
|
423
|
+
- 狙った図種以外の目印(`:` `?` `*` `<->`)を誤って入れていない。
|
|
424
|
+
- ラベルの予約記号は必要に応じて `"..."` で囲んだ。1 ファイルに 1 図だけ。
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
## 8. よくある誤りと修正
|
|
429
|
+
|
|
430
|
+
| 誤り | 直し方 |
|
|
431
|
+
|---|---|
|
|
432
|
+
| `A -> B -> C` と 1 行に複数接続 | `A -> B` と `B -> C` に分ける |
|
|
433
|
+
| `11-12`(スペースなし) | `11 - 12` にする |
|
|
434
|
+
| フローチャートにしたいのに `:` を書いた | 包含 `:` を消す(`:` があると必ず block になる) |
|
|
435
|
+
| 菱形にしたいのに長方形になる | ラベル末尾を `?` にし、そのノードを接続に登場させる。block になっていないか確認 |
|
|
436
|
+
| 接続の向きが逆 | 「受け取る/取得する」は向きが反転する点に注意して書き直す |
|
|
437
|
+
| 同じ符号を 2 回定義(警告) | 重複定義を 1 つにまとめる |
|
|
438
|
+
| 宣言した図種と推論が不一致 | 目印(`:` / 末尾 `?` / `*` / 往復・`<->`)を見直すか、宣言を修正 |
|
|
439
|
+
|
|
440
|
+
---
|
|
441
|
+
|
|
442
|
+
## 9. 出力フォーマットの指定(レンダリングも行う場合)
|
|
488
443
|
|
|
489
|
-
`.pdg` を書くだけでなく、あなた自身が pdgkit
|
|
444
|
+
`.pdg` を書くだけでなく、あなた自身が pdgkit で描画まで行う環境(コードを実行できるチャットやエージェント)では、利用者の自然文を次のコマンド/オプションに対応させます。指定が無ければ SVG を既定とし、描画の前に必ず検証(`pdgkit validate` / `validate()`)を通します。
|
|
490
445
|
|
|
491
|
-
|
|
|
446
|
+
| 利用者の言い方(例) | CLI | ライブラリ |
|
|
492
447
|
|---|---|---|
|
|
493
|
-
| SVG
|
|
494
|
-
| PNG
|
|
448
|
+
| SVG で/ベクタで | `pdgkit render fig.pdg -o fig.svg` | `renderToSvg(src)` |
|
|
449
|
+
| PNG で/画像で | `pdgkit render fig.pdg --to png -o fig.png` | `renderToPng(src)` |
|
|
495
450
|
| JPEG で | `pdgkit render fig.pdg --to jpeg -o fig.jpg` | `renderToJpeg(src)` |
|
|
496
|
-
| PDF
|
|
497
|
-
| PowerPoint
|
|
498
|
-
| 編集できる PPTX
|
|
499
|
-
|
|
|
451
|
+
| PDF で/出願用に | `pdgkit render fig.pdg --to pdf -o fig.pdf` | `renderToPdf(src)` |
|
|
452
|
+
| PowerPoint で/PPTX で/スライドに | `pdgkit render fig.pdg --to pptx -o fig.pptx` | `renderToPptx(src)` |
|
|
453
|
+
| 編集できる PPTX で/図形として編集できるように | `pdgkit render fig.pdg --to pptx --editable -o fig.pptx` | `renderToPptx(src, { editable: true })` |
|
|
454
|
+
| 符号表(符号の説明)も | `pdgkit refs fig.pdg --format md`(または `csv`) | `refsToMarkdown(parse(src))` |
|
|
500
455
|
|
|
501
|
-
言語の指定は上記に足す: 日英併記なら `--lang both
|
|
456
|
+
言語の指定は上記に足す: 日英併記なら `--lang both`(`{ lang: 'both' }`)、英語なら `--lang en`(`{ lang: 'en' }`)。既定は日本語。
|
|
502
457
|
|
|
503
458
|
例: 「この図を編集できる PPTX にして」→ `.pdg` を書いて `pdgkit validate` を通したうえで、`pdgkit render fig.pdg --to pptx --editable -o fig.pptx` を実行する。
|
|
504
459
|
|