VSCode（Windows版）で Diagrams を使う

Gigazineで『Pythonでコードを書いてAWSやKubernetesのシステム構成図を出力できる「Diagrams」』という記事を拝見し、コードでシステム構成図を作成できるのはすばらしい！「Infra as a Code」ならぬ「Diagram as a Code」ということで早速環境を準備。
https://gigazine.net/news/20200518-diagrams/

私はPythonのコードをVSCodeで作成しているのですが、以下の環境でセットアップしました。
・VScode
・Anaconda Individual Edition
・Diagrams

なおVSCodeやAnacondaのインストール手順などは、先人の方々の素晴らしいドキュメントが多数あり参考にさせて頂いたので、リンクを掲載させて頂きました。また、セットアップ中のトラブルもググれば解決するモノばかりでした。この場をお借りして感謝申し上げます、ありがとうございました。

#1. VScodeのインストール

WindowsへのVSCodeのインストール手順は以下のドキュメントを参考にさせて頂きました。
【参考】Visual Studio Code (Windows版) のインストール
https://qiita.com/psychoroid/items/7d85ae6bade4a67aedb1


#2. Anaconda Individual Editionの導入

開発する環境に導入するPythonは、複数の環境を容易に準備・切替できる「Anaconda」を利用しています。
「Anaconda + VSCode」の環境を準備するのは、以下のドキュメントを参考にさせて頂きました。 
【参考】Python環境構築(Anaconda + VSCode) @ Windows10 【2020年１月版】
https://qiita.com/manamana/items/38e963ce04f24de4bbe4

ビルド・デバッグの手順まで丁寧に記載されていますので、そこまで設定・動作確認ができればOK。
ちなみに、私はこの段階でビルド・デバッグ自体は正常に実行されていますが、以下のようなエラーダイアログに遭遇。
![error01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/375120/0e824a6a-5ef6-f071-4766-ced8f25ddab8.png)
このエラーダイアログへの対処は下記のドキュメントを参考にさせて頂きました。
【参考】VS CodeでPythonするために必要なこと (2/3)
https://www.atmarkit.co.jp/ait/articles/1805/22/news043_2.html

#3. Diagramsの導入

Anaconda Promptから、以下コマンドを実行。

```
(base) X:\Users\hoge> activate env_name
(env_name) X:\Users\hoge> pip install diagrams
Collecting diagrams
  Downloading diagrams-0.10.0-py3-none-any.whl (10.6 MB)
(中略)
Successfully installed MarkupSafe-1.1.1 diagrams-0.10.0 graphviz-0.13.2 jinja2-2.11.2
(env_name) X:\Users\hoge> conda install graphviz
## Package Plan ##

  environment location: d:\Anaconda3\envs\vscode_py37

  added / updated specs:
    - graphviz
 (中略)
Downloading and Extracting Packages
graphviz-2.38        | 29.3 MB   | ############################################################################ | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

(env_name) X:\Users\hoge> dot -V
dot - graphviz version 2.38.0 (20140413.2041)
```

#4. 「settings.json」で「Graphviz」にパスを通しましょう
「3. Diagramsの導入」後に、私は早速サンプルコードを実行したのですが、以下のエラーメッセージが出て画像ファイルの生成に進みませんでした。

graphviz.backend.ExecutableNotFound: failed to execute ['dot', '-Tpng', '-O', 'kubernetes_pod'], make sure the Graphviz executables are on your systems' PATH
![error02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/375120/6045c7e9-b65d-ec8a-2ef4-d01af0a817a9.png)


Anaconda Promptでは、「dot -V」コマンドがきちんと実行できているのに、パスに関するエラーって何？と軽くはまりましたが、VSCodeへパスの設定が必要でした。

```
{
    
    "python.pythonPath": "D:\\Anaconda3\\envs\\env_name\\python.exe",
    "terminal.integrated.env.windows": {
        "PATH": "${env:PATH};D:\\Anaconda3\\envs\\env_name\\Library\\bin\\graphviz"
    }
}
```
どうすればVSCodeでパスを追加できるんだろうとググった中で、参考にしたのは以下ドキュメント。
【参考】VS CodeでWorkspace毎に使用するPython実行環境を切り替える
https://logixsquare.com/techblog/visual-studio-code-python-version-settings/

#5. サンプルコードを実行 ⇒ 成功！！

![success.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/375120/d627ce79-3c3d-182a-7cb1-572597e24efd.png)

コードで構成図を書くということは、コードを保管しておけば誰でも再作成できますし、構成図の修正もアイコンを挿入してサイズを揃えたり位置を調整したりといった手間がなく、コードを少し直せばよいのですから柔軟かつ手軽ですね。あとは、アイコンの種類が充分多いかというところでしょうか。