クラス図をRiderで書いてみたい
クラス図を勉強・利用したくてどのツールを使用するか調べていたところ、Riderのプラグインでも可能という記事を見つけ早速試してみました。実際に表示するまで結構苦労したので記事として残しておきます。
PlantUML Intergration について
Riderで利用できるプラグインです。このプラグイン単体では期待の表示まで出来ませんでしたので、Riderのプラグイン以外にも、Homebrew経由で「Graphviz」をインストールしています。
下記 PlantUML Intergration 公式ページの下部にはドキュメントやライセンス、コードのリンクがありますので、詳しく知りたい方はそちらをご参照下さい。
https://plugins.jetbrains.com/plugin/7017-plantuml-integration
プラグインPlantUML Intergrationをインストールする
インストールしてプラグインを有効にする際、サードパーティ製である警告がでます。
(Google翻訳)
次のプラグインは JetBrains から提供されたものではありません: PlantUML 統合 (Eugene Steinberg、Vojtech Krasa) サードパーティのプラグインを使用すると、プラグイン ベンダーが個人データを処理する場合があります。 個人データの処理に関する詳細については、プラグイン ベンダーのドキュメントを確認してください。 JetBrains は、サードパーティのプラグイン ベンダーによる個人データの処理について責任を負いません。
プラグインを有効にする際に、Riderの再起動が必要です。
私の環境では、Riderの画面右側の縦タブに「PlantUML」のタブが表示され中には説明が記述されていました。
適当なテキストファイルを用意し下記を記述します。ファイル名はHellow.puとしています。
@startuml
Hello <|-- World
@enduml
画面上に何か表示されましたが、思っていたようなクラス図では表示されませんでした。
dot のファイルが無いのと、Graphvizが無いとあります。
Graphvizは、クラス図の図形などを表示する為に使用するツールです。このGraphvizをインストールするにはまずHomebrewが必要です。
Homebrewがインストールされていない場合はインストールする必要があります。
下記コマンドを入力してEnterを押します。
brew install graphviz
インストールされたかバージョンを確認します。
dot -v
バージョン情報が表示され問題なさそうです。
libdir の部分にパスが表示されています、途中までのパスを使用するのでコピーしておきましょう。コンソールは閉じます。
/opt/homebrew/Cellar/graphviz/【バージョン】/
Riderの画面に戻り、設定から「Open Settings」を選択します。
設定画面中央にある、「Graphviz dot executable:」にdotまでのパスを指定します。
先程コピーしたバージョンまでのパスに「/bin」を付加して「Save」を押下します。
/opt/homebrew/Cellar/graphviz/【バージョン】/bin
左から2番めの「Reload PlantUml Diagrams」を押すと、期待していたクラス図が表示されました!
実際に使い始めるのはこれからなので、今回はここまでとなります。
それっぽいものを書いてみる
@startuml
package Example
{
interface IBase
{
{abstract} aaa() // abstractです
{static} bbb() // staticです
}
class Base
{
- int _aaa // privateです
# string _bbb // protectedです
~ bool _ccc // package privateです
+ MyType _ddd // publicです
- int: aaa() // privateメソッドです
# int: bbb() // protectedメソッドです
~ int: ccc() // package privateメソッドです
+ int: ddd() // publicメソッドです
}
class Hoge
{
int: aaa
}
class Poge
{
int: aaa
}
enum MyType
{
One = 1,
Two = 2,
}
IBase <|-- Base
note on link:継承します
Base <|-- Hoge
note on link:継承します
Base <|-- Poge
note on link:継承します
note right of IBase: インターフェイスです
note right of Base: Baseクラスです
}
@enduml
環境バージョン情報
環境 | バージョン |
---|---|
チップ | Apple M2 |
macOS | Monterey 12.5.1 |
JetBrains Rider | 2022.2.2 |
Homebrew | 3.6.1 |
Graphviz dot | 6.0.1 |
コメント