# シンボル

> シンボルのライブラリ。11 のシステムのライブラリと「自分のシンボル」、ギャラリーの検索と絞り込み、実時間の入力と接続点を持つ検査、新しいユーザーシンボルの編集画面とすべての可変部の種類、シンボルを取り込む…、パッケージを書き出す、複製、チャット用の指示をコピー、そしてシンボルの使われ先。

**Symbols** は、Assets の最上位の下の 4 つ目の分類です。ダッシュボードの[シンボル](component-symbol)のコンポーネントが描き、動かす絵です。パネルの見出しは「シンボル」で、「現代的なダッシュボード、試験台、つながる製品、規格の図、産業システム、施設のために作られたライブラリです。システムシンボルはすべて中を見られ、「自分のシンボル」に複製できます。」の行と、件数のピルが付きます。読むことと調べることには **Logic の表示**が、作成、取り込み、複製、編集、削除には **Logic の構成**が必要です。シンボルが行き来するときのファイルの形式は、[持ち運べる SVG のシンボル](ganter-symbols)にあります。

## ライブラリ {#the-libraries}

| ライブラリ | 何を持つか | 規格 | シンボル |
| --- | --- | --- | --- |
| Process | 監視のダッシュボードとプロセスの図のための、層を重ねたプロセス設備の絵 | | 86 |
| ISA / P&ID | 図式のプロセス、配管、バルブ、計装の絵 | ANSI/ISA-5.1 / ISO 10628 | 99 |
| Manufacturing & Material Flow | 個別生産、組立、バッチ、包装、検査、構内物流の設備 | | 48 |
| Lab & Test Bench | 試験室、データ収集、計測、供試体の治具、環境試験装置、品質検査のシンボル | | 35 |
| Prototyping Electronics | コントローラー、開発ボード、コネクター、センサーモジュール、アクチュエーター、電源、無線 | | 35 |
| IoT Field Sensors | 環境、状態監視、位置、計量、無線ゲートウェイ、エッジ制御のシンボル | | 36 |
| Smart Home & Building | 照明、快適さ、入退、安全、家電、水回り、そして相互につながる制御機器 | Matter / BACnet / 建物自動化の一般的な表記 | 39 |
| IT, Network & Datacenter | 計算機、ラック、ストレージ、ネットワーク、セキュリティ、クラウドの基盤、施設の電源と冷却 | IT 基盤の一般的な表記 / SNMP / Redfish | 35 |
| Electrical & Energy | 単線図、配電、変換、計量、再生可能エネルギーと、形で表す接点の状態 | IEC 60617 / IEEE 315 | 39 |
| Energy, Microgrid & e-Mobility | 分散電源、変換、蓄電、計量、保護、マイクログリッド、EV の充電 | IEC / IEEE / OCPP に沿ったダッシュボードの表記 | 40 |
| Facilities & Utilities | 空調、上下水、安全システム、プラントのユーティリティ、制御の設備 | | 38 |
| My symbols | 自分で組み立てた、取り込んだ、複製したシンボル | | 自分のもの |

システムのライブラリは Ganter Lab が自分で描いた絵で、製品に組み込まれていて読み取り専用です。更新は、ステーションのデータに触れずにそれらを入れ替えます。定義はそれぞれ、変わらない参照 `system:<key>`、そのライブラリと分類、説明、検索用のタグ、当てはまる規格、そして出どころとライセンスの情報を持ちます。

## ギャラリー {#the-gallery}

カードの上には次のものが並びます。**検索**（プレースホルダーは「名前、分類、タグ」。シンボルの名前、説明、分類、規格、タグに、大文字と小文字を問わず当てはめます。ライブラリは自分の絞り込みで選びます）、**ライブラリ**（「すべてのライブラリ（530）」か、件数を添えた 1 つのライブラリ。1 つを選ぶと分類が解除され、絞り込みの下にそのライブラリの説明が出ます）、**分類**（「すべての分類」か、選んだライブラリの 1 つの分類）、**出どころ**、**1 ページの件数**です。カードは、ライブラリ、絵の本来の縦横の比で描いたプレビュー、名前、分類、出どころ（システムか自分のもの）、そして機能の行を見せます。機能の行は「固定」、「入力 1 個」、「入力 N 件」で、そのシンボルが接続点を宣言しているときは「· 接続点 N 個」が続きます。結果が空のときは「この絞り込みに合うシンボルはありません。」と**絞り込みを解除**が出ます。自分のシンボルを読めなかったときは、システムの一式をカタログの全体であるかのように見せるのではなく、「「自分のシンボル」は今は使えません。システムのライブラリだけを並べます。」と注意が出ます。

## 検査 {#the-inspector}

カードを選ぶと、ギャラリーの隣に検査が開きます。

- 名前と印。**システム · 読み取り専用**、**自分のシンボル**、あるいは、シンボルが新規でまだ作成されていない間、または開いている編集に自動保存を止めるエラーがある間だけ**未保存の下書き**です（編集が自動で保存されている間は、保存前の0.5秒を含め、印は**自分のシンボル**のままです）。
- ライブラリ、分類、規格、そして説明。
- **大きさ**（推奨するダッシュボードでのます目の数、幅 × 高さ）と**収め方**（収める、縦横に伸ばす、横に伸ばす、縦に伸ばす）。
- 「入力 N 件 · 接続点 N 件」、接続点がないときは「見た目だけ」。
- **絵の出どころ**。出どころと、システムシンボルではライセンスを開いて見られます。
- 操作。**パッケージを書き出す**はどのロールにも出ます。システムシンボルには**「自分のシンボル」に複製**、自分のものには**編集**と**削除**が出ます（構成できるロールだけ）。
- プレビューの舞台。無害化した絵を、ダッシュボードと同じランタイムで描き、接続点の位置ごとにつまみを描きます。描けない絵は舞台を空のままにし、「プレビューを表示できません」と理由を出します。無害化がマークアップを直す必要があったときは、「プレビューは無害化した SVG を使います」を開くと、その修復が並びます（最大 8 件で、そのあとは「ほかに N 件の修復は表示していません。」）。
- **入力**。「一時的な定数は、このプレビューにだけ効きます。」と**入力を戻す**が出ます。宣言された可変部ごとに 1 つの節があり、その名前、それが動かす効果、対応づけを述べる 1 文、入力の範囲、対象の要素（`#id`）、そして試すための操作部が出ます。操作部は、数値（入力の範囲が有限のときはスライダー付き）、オンとオフの切り替え、文字の入力欄、あるいは塗りの値の欄を添えた色の選択です。可変部がないときは「このシンボルは、動く入力を宣言していません。」と出ますし、宣言が正しくないときは操作部の代わりにそのエラーが出ます。ここで置いた定数は、決して保存されませんし、ダッシュボードに届くこともありません。

効果と、検査がそれをどう述べるかは次のとおりです。

| 種類（編集画面での表記） | 効果 | 操作部 | 説明 |
| --- | --- | --- | --- |
| Rotate | 回転 | 数値 | `<output min>`° から `<output max>`° まで回します |
| Opacity | 不透明度 | 数値 | 不透明度を `<output min>` から `<output max>` まで変えます |
| Fill | 塗りの状態 | 切り替え | 塗りをオフの色からオンの色に切り替えます。数値の信号は、入力の中間で切り替わります |
| Visible | 表示と非表示 | 切り替え | オフのときは要素を隠し、オンのときに表示します |
| Text | 表示する文字 | 文字 | 要素の中に表示する文字を置き換えます |
| Translate | 位置 | 数値 | SVG の単位で (x, y) から (x, y) まで動かします |
| Scale | 拡大縮小 | 数値 | (x, y) から (x, y) まで拡大縮小します |
| Stroke | 輪郭の状態 | 切り替え | 輪郭をオフの色とオンの色の間で切り替えます。数値の信号は、中間で切り替わります |
| Spin (°/s) | 回転の速さ | 数値 | `<min>`°/秒 から `<max>`°/秒 まで回し続けます。0 で止まり、負の値では向きが逆になります |
| Spin enabled | 回転の状態 | 切り替え。既定はオン | 要素を隠さず、角度も戻さずに、回転を止めたり再開したりします |
| Fill color | 塗りの色 | 色 | 色の素材、色の変数、またはプレビュー用の色から、塗りを直接決めます |
| Stroke color | 輪郭の色 | 色 | 色の素材、色の変数、またはプレビュー用の色から、輪郭を直接決めます |
| Stroke width | 輪郭の太さ | 数値 | 輪郭の太さを、SVG の単位で 0.5 から 32 まで直接決めます |

## 新しいユーザーシンボル {#new-user-symbol}

Symbols の行の上の動詞は、ギャラリーの欄に編集画面を開きます（「新しいユーザーシンボル」：「動きのない SVG と、ダッシュボード用の名前付きの可変部を組み立てます。」）。検査は入力に合わせて未保存の下書きを追うので、作る前にそのシンボルを試せます。

| 項目 | 意味 | 受け付ける値と既定 | 効果 |
| --- | --- | --- | --- |
| 名前 | 表示の名前です。 | 必須。空の間は「名前が必要です。」と出ます。 | アイコンや色と違い、シンボルの名前はあとで変えられます。ダッシュボードは id で参照するからです。 |
| SVG のマークアップ | その絵を、文字列として貼り付けます。 | 必須。 | 入力しているそばから無害化されます。絵のエラー（「SVG のマークアップには `<svg>` の根が必要です。」、「SVG のマークアップが 512 KB の上限を超えています。」、id の重なりなど）は、作成もすべての可変部も止めます。 |
| 収め方 | 絵がダッシュボードのます目をどう埋めるかです。 | 収める（既定）、縦横に伸ばす、横に伸ばす、縦に伸ばす。 | シンボルを置くときに、ダッシュボードの編集画面が読みます。 |
| 最初の幅、最初の高さ | 新しいダッシュボードの実体が始まるときの大きさです。 | 1 から 24 ます目、1 から 12 ます目。既定は 4 × 4 です。 | 同じくです。 |
| 接続点 | 読み取り専用の注意です。 | 「この絵は見た目だけのものです。型を持つ接続点は、Ganter Symbol v2 のパッケージで与えられます。」か、「パッケージが定めた接続点 N 件を、そのまま保っています。接続点の位置は、Ganter Lab では意図的に読み取り専用です。」 | 接続点は、ここでは描くことも編集することもできません。取り込んだパッケージか、複製したシステムシンボルから来るもので、編集してもそのまま保たれます。 |
| 可変部 | そのシンボルが公開する入力です（「可変部はそれぞれ 1 つの SVG 要素の id を対象にし、安全な動きを 1 つだけ公開します。」）。 | **可変部を追加**が、決められた名前（`param`、そのあとは番号付き）で行を足します。 | 行はそれぞれ、名前、要素の id（マークアップの中で見つかった id が並ぶコンボですが、任意の id を入力もできます）、**可変部を削除**、種類、入力の最小と最大、出力の最小と最大（Translate と Scale では X の軸）、任意の Y の最小と最大の組、そして種類ごとのものを持ちます。Stroke width には「ダッシュボードの値は、0.5 から 32 までの SVG の線幅としてそのまま使われます。」の注意、Fill color と Stroke color にはプレビューの色、そのほかの種類にはオンの色とオフの色です。 |

可変部の規則は次のとおりで、どれも項目の下に伝えられ、違反した行が囲まれます。名前は識別子でなければならず（最初は英字か `_`、そのあとは英字、数字、`_`、`.`、`:`、`-`）、重ならないこと。要素の id はマークアップの中に存在すること。Text の対象は `text` と `tspan` だけであること。Fill と Fill color の対象は、塗れる図形、グループ、`use`、文字であること。ほかの種類の対象は、グループ、`use`、図形、文字であること。Rotate、Spin、Scale は、その要素が `data-ganter-pivot="x y"` を持っていること。範囲の値はどれも有限であること。Y の組は両方あるか両方ないかで、Translate と Scale にだけ使えること。オンとオフの色は、16 進数、`var(--color-success)` のようなテーマの語、あるいは CSS の色の名前であること。1 つの要素が取れる可変部は、チャネル 1 つにつき 1 つまで（塗り、輪郭、輪郭の太さ、そのほかの種類ごとに 1 つ）であること。そして、Spin enabled の可変部には、同じ要素の上に Spin の可変部が要ることです。

**シンボルを作成**は、エラーが 1 つでも残っている間は灰色のままです。**キャンセル**か**戻る**で、作らずに離れます。うまくいくと、操作ログ帯が「シンボルを作成しました。」と伝え、新しいカードが選ばれます。

## 編集、複製、削除 {#edit-duplicate-delete}

**編集**（自分のシンボルだけ）は、「正しい名前、SVG、可変部の変更は自動で保存されます。」を添えた同じ編集画面を開きます。正しい変更は最後の編集から 0.5 秒後に保存され（「シンボルを保存しました。」）、正しくない下書きは保存されず、待っていた保存も取り消されるので、保存されたシンボルが検査の見せているものと食い違うことはありません。**「自分のシンボル」に複製**（システムシンボル）は、絵、表示範囲、収め方、大きさ、型の設定、接続点、提案を、独立したシンボルに写します。名前は「`<Name>` copy」（使われていれば「`<Name>` copy 2」…）で、ギャラリーで選ぶだけで、編集画面は開きません（「システムシンボルを「自分のシンボル」に複製しました。」）。検査がその横に示し、複製を隠してしまう検索や絞り込みは消され、ギャラリーはそれを含むページに移ります。編集画面を開くのは**編集**です。システムの定義が変わることは決してありません。**削除**は「「X」を削除しますか？これを使っているダッシュボードには、代わりの印が出ます。 この操作は元に戻せません。」と尋ねます（「シンボルを削除しました。」）。

## シンボルを取り込む… {#import-symbol}

行の上の 2 つ目の動詞は、`.svg` と `.ganter-symbol.json` のファイルを、最大 1 MB まで受け付けるファイルの選択です（「このシンボルのファイルは、上限の 1 MB を超えています。」）。中身が道を決めます。

- **生の SVG**（内容が `<` で始まるもの）は、見た目だけの絵として取り込まれます。可変部も接続点もありません。無害化がそれを直し、操作ログ帯が修復の数を数えます（「シンボルを新しい素材として取り込みました。安全でない SVG の要素 3 件を取り除きました。」）。名前は、拡張子を取ったファイルの名前です。
- **Ganter symbol v2 のパッケージ**（内容が `{` で始まるもの）は、丸ごと取り込まれます。名前、SVG、表示範囲、収め方、大きさ、可変部、型の設定、接続点、提案です。パッケージは厳格です。形式、版、スキーマが一致していなければなりませんし、SVG はすでに無害化されていなければなりません（修復の必要なパッケージは、直されるのではなく拒否されます）。表示範囲は SVG の根と一致していなければなりませんし、接続点、設定、提案はどれも正しくなければなりません（[その決まり](ganter-symbols)）。操作ログ帯は最初の問題を名指しします（「シンボルの取り込みに失敗しました：…」）。

自分のシンボルがすでに使っている名前には、接尾辞（「 2」、「 3」…）が付きます。取り込みは必ず新しいシンボルを作り、既存のものを上書きすることは決してありません。

## パッケージを書き出す {#export-package}

検査の**パッケージを書き出す**は、選んでいるシンボルを、システムのものでも自分のものでも、`<name>.ganter-symbol.json` としてダウンロードします。取り込みが読むのと同じ v2 のパッケージで、ステーションの素性は何も入らないので、ステーションの間を行き来できます（「`<file>` を書き出しました。」）。絵に根の表示範囲がないシンボルや、可変部のどれかがステーションのアドレスを持っているシンボルは拒否されます（「シンボルの書き出しに失敗しました：…」）。

## チャット用の指示をコピー {#copy-chat-instruction}

**チャット用の指示をコピー**は、ステーションに手の届かない外部の AI チャットのための、単体で完結した指示をクリップボードに写します。それは「Create a Ganter Lab symbol for me. Return ONLY the file content, either raw SVG or a single .ganter-symbol.json v2 package, with no commentary, so I can save it as a file and import it unchanged.」で始まり、v2 の決まりの全体（受け付ける 2 つの入力、パッケージの外枠、16 の全体共通の位置、8 つの接続線の型、可変部の種類とその規則、テーマの語、接続点の位置の規則、無害化の上限、そして最小の正しいパッケージ）へ続き、答えの持ち帰り方で終わります。返ってきたものを `.svg` か `.ganter-symbol.json` のファイルとして保存し、ここで取り込む、というものです。同じ決まりを、エージェントの `symbol_validate` と `symbol_import` のツールも読むので、チャットとエージェントは同じファイルを作ります。操作ログ帯は「チャット用の指示をコピーしました。任意の AI チャットに貼り付け、返ってきた SVG を取り込んでください。」（あるいは「クリップボードがコピーを受け付けませんでした。」）と伝えます。この動詞は読むだけなので、どのロールにも描かれます。

## シンボルの使われ先 {#where-a-symbol-is-used}

ダッシュボードの[シンボル](component-symbol)のコンポーネントは、シンボルを `system:<key>` か `user:<id>` として参照し、可変部をそれぞれ Logic のアドレスに対応づけ、選べる接続点の接続線の型を選び、[ダッシュボードの編集画面](view-editor)で描く接続線を[接続線の種類](assets-connection-types)を通じて接続点どうしにつなぎます。シンボルは、自分の Logic のアドレスを持ちません。

## このライブラリがしないこと {#what-the-library-does-not-do}

接続点や内部の線を描くことも動かすこともしません。システムの絵をその場で編集しません。修復の必要なパッケージを取り込みません。版の履歴を持ちません。そして、自分のシンボルをステーションの間でひとりでに共有することもしません。パッケージを書き出して、取り込んでください。
