mkdocsでdrawioを使う
drawIOとは、ウェブブラウザやVSCode、
デスクトップアプリとして動作するフリーの作図ツールです。
このDrawの良いところは、 ~.drawio という拡張子にすることで
VSCode上でも作図をすることができます。
これを利用すると、かんたんに作図をすることができます。
mkdocs-drawio_exporter¶
https://pypi.org/project/mkdocs-drawio-exporter
そして、更に便利なことに、mkdocsには drawio ファイルをそのまま
画像として保存することなく貼り付けることができます。
1 |
|
このように、画像のパスを指定する部分に
貼り付けたい drawioのパスを指定すると
drawioの作図した結果の画像を貼り付けることができます。
準備¶
https://github.com/jgraph/drawio-desktop/releases
まず、Windowsの場合は、darwio-desktop の windows-installer を実行してインストールします。
あとは、mkdocsのプラグインを pipでインストールします。
1 |
|
Windowsの場合の準備は以上です。
Docker対応¶
が、、、今は、mkdocsのビルドはGithubAction上でDockerコンテナベースで実行しているので
Docker上でも動くようにしなければいけません。
Dockerの場合は、Dockerfileに以下を追加します。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
drawio本体は dpkgでインストールできたのですが、それだけだとエラーになってしまい
docker環境上でdrawioが実行できませんでした。
https://github.com/jgraph/drawio-desktop/issues/127
解決方法は、ここに書いてあって
xvfbで仮想ディスプレイを作り、その設定が必要とのことでした。
requirements.txt 更新¶
1 |
|
Docker環境のPythonにもmkdocsPluginを入れるために
mkdocs-drawio-exporter を requirements.txt に追加します。
mkdocs.yml 設定¶
drawioのインストールができたら、mkdocs.ymlを変更します。
1 2 3 4 5 6 7 8 |
|
mkdocs.ymlのplugins以下に、 drawio-exporterを追加します。
注意点は、 drawio_args に --no-sandbox を追加することです。
(これを入れないとエラーになる)
https://github.com/fereria/reincarnation_tech/tree/master/docker
Dockerの環境はこちら。
まとめ¶
この方法でdrawioを使用した場合、mkdocs serve でプレビューすると
drawioファイルを更新すればページ側も更新されるようになります。
すごく便利。
Docker環境上で drawio-desktopを使用する方法がかなり難しくて
用意されたdarwioのDockerをベースにしようとすると
Pythonが3.5までしか使えず。
この環境にソースコードからPython3.7をインストールしようとするとエラーになり
PythonベースでDockerfileを構築しても
snapdを使用したやり方 https://snapcraft.io/install/drawio/ubuntu だと
エラーになってインストールできず(Dockerに対応していないらしい)
dpkgでインストールしようとしてもインストールに苦戦
インストールできたとおもっても実行できずない...で、数日調べ漁る羽目になりました。
苦戦はしましたが、無事markdownをGithubにPushしたら
作図が反映されるようになったので、ページの更新がかなり楽になりそうです。