😽

draw.ioを操作するライブラリを書いてみた

2022/09/08に公開

背景

  • 画面イメージをdraw.ioを作成し、仕様書に手で貼り付けるなど、面倒な作業があったので自動化したかった。
  • 自動化する中で、draw.ioを操作するライブラリを作る必要があった
  • Golangの実践の機会を増やしたかった

作ったもの

自動化まではまだ達成できていないが、draw.ioで使われるデータをいじれるようなライブラリを作った。
このライブラリを使うことで、draw.ioに自動で図形を挿入したり,draw.ioのライブラリを楽に作れるようになる。(使用例は別で記事を作成する予定)Githubのリンクはこちら

main.go
	// drawioファイルをロードし、MxFile構造体にマッピング
	mxfile, err := libdrawio.NewMxFile("./mxfile_test_1.drawio")
	if err != nil {
		t.Fail()
	}
    
    // MxFile構造体のDiagramの値を取り出す

	// drawioファイルのdiagramタグの値をDecompressメソッドの引数に渡すことで、MxGraphModel構造体にマッピングできる
	mxGraphModel, err := libdrawio.Decompress(value)
	if err != nil {
		t.Fail()
	}

    // MxGraphModelに対して操作をする(図形を挿入など)

	// MxGraphModelをCompressメソッドで圧縮することで、draw.ioで使えるようにする
	compressed, err := mxGraphModel.Compress()
	if err != nil {
		t.Fail()
	}


	// drawioファイルに書き込み
	if err = mxfile.Write("./out.drawio"); err != nil {
		t.Fail()
	}

追記

同様のライブラリをPythonでも作成した。
Githubのリンクはこちら

Discussion