EurekaMoments

ロボットや自動車の自律移動に関する知識や技術、プログラミング、ソフトウェア開発について勉強したことをメモするブログ

PlantUMLで描いたUML図をEnterprise Architectからインポートして共有する方法

はじめに

ソフトウェア設計におけるUML図を描くツールとして、近頃はPlantUMLを用いるのが流行りのようですが、それと双璧を成すツールとして、Enterprise Architect(通称EA)という有償の設計開発支援ツールがあります。GUI操作で簡単にUML図を作成する事ができ、自分がいる会社でも導入されているのですが、テキスト形式のPlantUMLと違ってバイナリ形式で保存されるので、作成後の管理という面では不便に感じていました。
そこで最近は、下記の記事のようにPlantUMLでテキストベース作成し、その後の管理を効率化する方法を社内で布教しているのですが、長年EAを使い続けている人達には、「作成した図を共有することができない」「そもそもEAを使う事が会社のルールだろ」と言われ、正直受けが悪いです。

www.eureka-moments-blog.com

「何かいい方法はないものか」と悩んでいたところ、PlantUMLとEAが共通で持つ機能として、「作成したUML図をXMI形式というテキストファイルに変換する」というものがある事を知りました。

ja.wikipedia.org

XMIとは、メタデータ情報を交換するための標準規格であり、UMLモデルを異なるツール間で共有する際に利用される事が多いようです。これを利用して、PlantUMLで描いたクラス図をXMI形式にエクスポートして、それをEAからインポートするのを試してみたところ、今までの悩みは何だったのかってくらい簡単にEA上で同じクラス図を共有することが出来ました。
今回の記事では、そのやり方について紹介したいと思います。

Enterprise Architect(EA)とは

EAとは、Sparx Systems社が販売している設計開発支援ツールです。導入するにはライセンスの購入が必要になり、決して安い値段でもないので、企業が自分達の共通ツールとして導入する傾向にあると思います。
概要については、下記のリンクに詳しく書かれているので参照下さい。 www.sparxsystems.jp

PlantUMLの図をEAからインポートする手順

1. PlantUMLでUML図を描く

まずは従来のやり方で、PlantUMLでUML図を作成します。今回はVSCode上で、下記のようなSampleClassDiagram.puというファイルを作成しました。
f:id:sy4310:20190302214512p:plain
このコードにより、下記のようなクラス図が作成されます。
f:id:sy4310:20190302215149p:plain

2. 作成した図をXMI形式でエクスポートする

1で作成したPlantUMLのコード上で右クリックし、メニューの中から「ダイアグラムをエクスポート」を選択します。これには、「カーソル位置の~」「ファイル内の~」「ワークスペース内の~」と種類がありますが、それはエクスポートしたい範囲に応じて使い分けてください。このやり方により、SampleClassDiagram.xmiというファイルが出力されます。

3. EAからXMIファイルをインポートする

下記のリンクにある手順に従って、2で出力したXMIファイルをインポートします。

www.sparxsystems.jp

この操作はパッケージ単位で行われるので、下記のようにインポート先とするパッケージを事前に作成しておきます。
f:id:sy4310:20190302222904p:plain

上記の手順に従うと、下記のようなダイアログが開かれ、そこからインポート先や、インポートするファイルを選択する事が出来ます。
f:id:sy4310:20190302223347p:plain

このダイアログ内にある「XMIを表示」ボタンを押すと、下記のようにXMIファイルの中身を確認することが出来ます。
f:id:sy4310:20190302223816p:plain

インポート操作の最後として、同ダイアログ内にある「読込(I)」ボタンを押すと、ここまでに選択したXMIファイルが読み込まれ、インポート完了です。

4. インポートされたUML図を確認する

3でインポートされたUML図は、下記のように、インポート先として指定したパッケージ内に置かれます。
f:id:sy4310:20190302224542p:plain

今回の例でインポートしたのはクラス図を構成するクラスコンポーネントなので、試しにクラス図用のダイアグラムを作成して、インポートされたコンポーネントを取り込んでみます。すると、下記のように、PlantUMLの方で最初に作成したものと同じ内容のまま、無事にインポートされた事が確認できました。
f:id:sy4310:20190302225348p:plain

まだまだ知らないEAの便利機能

作成したUML図が管理しにくい事から、自分は今までEAを毛嫌いしていました。しかしながら、今回知ったXMI形式を扱えることによって、今後のバージョン管理、前回からの差分確認、自動マージなどが出来るようになり、これまでの開発効率を一気に改善する事が出来そうです。
また、作成したUML図を交えたドキュメント作成や、コード生成の機能も用意されてるので、これらも使いこなせたらと思うとワクワクしてきますね。これからまた試してみようと思います。