ブロックダイアグラム作成御用達のdiagrams（旧称draw.io）

# 紹介
制御とか処理とかでブロックダイアグラムを作成したい時に利用できる

+ フリー
+ 登録不要
+ オープンソース
+ GUI
+ ローカル完結
+ 各種OSに対応

microsoftのvisioみたいなものではあるが，例えば詳細な図面の設計に使えるものではないし，あくまで情報・工業・数学・産業といった分野において，ブロックダイアグラムなどの作成を支援してくれる



## 環境


### ブラウザ
JavaScriptを有効にしておくだけでOK

https://app.diagrams.net/


### アプリ
インストールはこちらから，OSに対応してダウンロードしてね

http://get.diagrams.net/



## 利点

+ 利用開始までの手順が簡単
+ 利用環境のハードルが低い
+ 機能が単純だから扱い易い
+ **LaTeXの基礎的なコマンドに対応**
+ 論文とかでも使えそうね



## 欠点

+ 美術的な創作業には不向き
+ レイヤーは扱いづらいかも




# 導入
ぶっちゃけ`homebrew`で入れられるのが強み

```zsh
brew install --cask drawio                                             
```

ちなドキュメント

https://www.diagrams.net/doc/

faqは役に立つかも

https://www.diagrams.net/doc/faq/

ビギナーズページ

https://drawio-app.com/draw-io-training-exercise-1-add-a-draw-io-diagram-to-a-confluence-page/

https://drawio-app.com/draw-io-training-exercise-2-editing-a-diagram-change-the-colors/

https://drawio-app.com/draw-io-training-exercise-3-editing-a-diagram-change-the-shapes/

https://drawio-app.com/draw-io-training-exercise-4-work-with-text-and-connectors/

https://drawio-app.com/draw-io-training-exercise-5-create-a-tree-diagram/

https://drawio-app.com/draw-io-training-exercise-6-work-with-the-symbol-library/

https://drawio-app.com/draw-io-training-exercise-7-create-a-diagram-with-layers-and-images/

https://drawio-app.com/draw-io-training-exercise-8-add-links-and-tooltips/

https://drawio-app.com/draw-io-training-exercise-9-create-your-own-custom-library/

https://drawio-app.com/draw-io-training-exercise-10-export-and-import/



# 作成
基本的には`.drawio`とそのバックアップ`.drawio.bkp`が作成される

加えてテンプレートも自由に選べる，ソフトウェア設計・クラウドネットワーク・ハードウェア設計のいずれも網羅している



## ページ
下部でページを切り替えて作業できる，イラレっぽい



## よく使う図形
各種テンプレートには**よく使う図形が同封**されているが，これはライブラリ表示を有効化することでいつでも利用できる
左下の「図形を追加」から入って

![スクリーンショット 2022-05-11 0.29.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/18b4218f-b032-e4d3-966f-7daf25304aef.png)

適当にチェックを入れれば良い

![スクリーンショット 2022-05-11 0.30.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/5847f737-6531-ba63-6059-9c0bbfd6696c.png)


または上部の「表示」->「図形」からでも設定できる

![スクリーンショット 2022-05-11 0.38.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/59d40122-979b-a53a-233c-c99fda227967.png)

一応はそれぞれがライブラリという扱いをされている



## 数式組版
テキストを編集する際に`$$`で囲むと，その内部の文字列がLaTeXソースとして解釈され，編集後に組版されて表示される
上部の「拡張」->「数式組版」をオンにすれば良い

![スクリーンショット 2022-05-11 0.31.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/cdb671ce-d2cf-37c4-487f-04042b9779d0.png)




# 編集



## ページ表示
グリッドが利用できるのがとても強い，ついでに点や線に合わせて自動的にスナップしてくれる

![スクリーンショット 2022-05-11 2.08.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/bc796a2d-f4f0-7410-9107-810e89c4cdd4.png)

用紙サイズを設定してページビューをオンにすると境界線や中央線が表示される，背景色も一応は入れておこう



## 色
カラーパレットが使えるなら変えられる，枠線・テキスト・塗りつぶしで利用できる


### グラデーション
4方向+放射状の5種類，かつ2色変化しか使えない，しょうがないね



## レイヤー
上部の「表示」->「レイヤー」から展開できる

![スクリーンショット 2022-05-11 1.59.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/829c6f8e-7fef-4271-d099-eb3f0d021c95.png)

あとはお好みで作業しよう，やっぱりイラレっぽい

![スクリーンショット 2022-05-11 2.00.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/22e99950-c23b-4126-97af-5aeebeb6d2be.png)



## 図形
左のブラウザからドラッグ&ドロップ，もしくは後述するインポートを行う



## 線
図のコネクタをドラッグで繋ぐとできる
ただし**始点と終点の概念がある**ので方向に注意しよう，一応は右クリックから「逆」を選ぶと反転できる

![スクリーンショット 2022-05-11 2.01.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/125d5023-239a-8e92-525b-98776c263dce.png)

https://drawio-app.com/draw-io-training-exercise-4-work-with-text-and-connectors/

### 分岐の書き方
接点が発生するのは図形と線の間のみなので，交点には必ず黒点を配置すると良い


### 交差の書き方
逆に交点を設けない場合は，わかりやすくジャンプさせると良い
線を選択して「スタイル」から「line jumps」で「円弧」を選択する

![スクリーンショット 2022-05-11 1.49.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/57772392-62f2-3a17-4bef-f2564e101c01.png)

実際こうなるが，

![スクリーンショット 2022-05-11 1.51.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/888416ac-13e5-ca94-bf8f-e7cdae2fbe1f.png)

前面と背面の関係によってどちらがジャンプするか決定される

![スクリーンショット 2022-05-11 1.51.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/984ca142-1ccb-314d-c94e-45f2f2e83d1f.png)

入れ替えることも可能である

![スクリーンショット 2022-05-11 1.51.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/d56b36cd-389f-7fc1-f3d5-a84649a5fca1.png)

適度に大きい方がわかりやすいね！


### 矢マークの調整

「スタイル」の中段のリスト群の下列で，始点と終点のそれぞれにアイコンを適用できる
その下の「サイズ」で大きさを決められるが，**線の太さに比例する係数**であって絶対値ではないので注意

![スクリーンショット 2022-05-11 2.04.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/274c63d7-f8d3-b8f3-55aa-c81e829f3f17.png)



## テキスト
選択した図形や線の上でダブルクリックすれば編集画面に入れる

https://drawio-app.com/draw-io-training-exercise-4-work-with-text-and-connectors/


### フォント
「フォント」->「カスタム」に入れるので，

![スクリーンショット 2022-05-11 1.55.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/b8013637-1928-7b3f-62c3-7ab16297d883.png)

そこにシステムから入れるなりGoogleフォントを使うなりすれば良い

![スクリーンショット 2022-05-11 1.55.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/e8f7fe28-ace1-9778-b6a3-f66f29f8d2c8.png)



### LaTeXコンパイルにおいて
フォントや自体は影響しないけど，色は上書きできるしレイアウトは変更できるし，サイズも比例して調整できる




# インポート
上部の「ファイル」->「次をインポート:」

https://drawio-app.com/draw-io-training-exercise-10-export-and-import/




# エクスポート
上部の「ファイル」->「形式を指定してエクスポート」->「（拡張子を選択）」

https://drawio-app.com/draw-io-training-exercise-10-export-and-import/



## 解像度について
このままでは弄れないので，「ファイル」->「形式を指定してエクスポート」->「高度な設定」から

![スクリーンショット 2022-05-11 1.09.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/ebd94c2d-b05e-0f30-290f-ce1d10821538.png)

DPIを上げれば良い，ついでに背景や余白についても設定しよう

![スクリーンショット 2022-05-11 1.09.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/540440/4cff7968-4301-c5c2-4e0b-04f28e6f419e.png)

「横幅」と「縦幅」は据え置きで，「ズーム」と「DPI」が変化するだけ
ちなみにここで言う余白は**用紙サイズを基準としたものではない**らしい，具体的には図形を収められる最小の長方形に勝手にトリミングしてくるので，pdfで出力すると表示やページがおかしくなってしまう，素直にpngで吐き出した方が良いかも




# 自作ライブラリ

https://drawio-app.com/draw-io-training-exercise-9-create-your-own-custom-library/



## 作成
「ファイル」->「新規ライブラリ」で`.xml`ファイルとして作成できる
お目当ての画像などを追加して保存する，上書き更新もできるはずだけど何故か動作がフリーズする場合があるかもしれないね（私は手元でよくバグるので）



## 読込
「ファイル->ライブラリを開く」で該当の`.xml`ファイルを選択する




# 自作シェイプ
図形そのものを自作できるが，コーディングが必要になってくるので辛い，そこまでする必要に駆られることはそうないと思う

https://www.diagrams.net/doc/faq/shape-complex-create-edit

ググっても思った以上に資料が出ないので，本気でやるとなるとかなり辛そう
ただどこかsvgに似ているので，svgに慣れている人ならできそうな気もする

制御の資料を作るだけならぶっちゃけ不要だし，それくらいデフォルトのライブラリが充実しているので心配しなくても良い