読者です 読者をやめる 読者になる 読者になる

冥冥乃志

ソフトウェア開発会社でチームマネージャをしているエンジニアの雑記。アウトプットは少なめです。

follow us in feedly

PlantUML Integrationプラグインを感じの良いメモツールとして使ってみる

メモを取るのは大事なんですけど、テキストだけだと全体像が見えづらいですね。メモ同士の関連を可視化したりもしたいんですが、手書きは後でメモを電子化して残すのが写真しかないし、図示するためのツールはメモを取るにはちょっと操作が煩雑です。

この辺りをもう少し楽に(できればテキスト書けば良いように)できないか、と思ってたらPlantUML Integrationプラグインが思ったよりもマッチしたので紹介したいと思います。

PlantUML Integrationプラグイン

IntelliJ IDEAのプラグインです。CEでも使えます。プラグインが動作するため*1graphvizが必要っぽいので、インストールしていない人は合わせてしておきましょう。

インストールしてと、puml拡張子のファイルを開くと下図のようにテキスト編集と変換結果が合わせて表示されるようになります。

f:id:mao_instantlife:20150805125558p:plain

右側は今編集しているUMLのテキストファイルの変換結果です。変換不可能な場合(DSLシンタックスエラーがあるなど)は表示されません。多少のタイムラグがあるものの、変換自体はほぼリアルタイムに行われます。

PlantUMLのDSLチートシートは以下です。

qiita.com

オブジェクト図をメモとして使う

PlantUMLはクラス図や状態遷移図やシーケンス図などにも対応していますが、メモとしての汎用性が高いのはオブジェクト図です。一番DSLの制約が緩く、関連もクラス図と同じものが引けるので、物事の記載とその関連に集中してメモが取れます。

オブジェクトの記法は、

object オブジェクト名 {
  コメント
}

みたいな感じでコメントの部分に普通の文章を書くことができるため、付箋みたいに使うことができます。しかも、付箋同士の関連もUMLの記法を覚えておけば、半分モデリングするようにかける。

なお、プラグインコンテキストメニューではオブジェクト図の選択肢がないので、適当に.puml拡張子でファイル出してからファイルの最初と最後に@startuml@endumlを記載します。他のでファイルを作って、サンプルを消しても良いです。

何が嬉しいか

DSLさえ身に付いてしまえば、メモを取りながら俯瞰したりといったスコープの切り替えがしやすいのが非常に嬉しいです。メモを取るときは集中したいので、スコープを狭くしたいし、メモを取らないときは、俯瞰して理解や議論を深めたいという切り替えが視点のちょっとした移動だけでできるようになります。

基本的にテキストなので(図はエクスポート可能)、後で整理し直したりしやすいというのも利点ですね。includeでファイルを分割することもできるので、大きくなってきたメモを後で分割して整理することもできます。

また、UMLの関連の引き方を覚えておけば、よりメモの有用性が高くなります。メモをそのまま育てていける、ということですね。

UMLモデリングの基礎があればメモが捗る可能性

モデリングは理解に対して構造を与えるものです。UMLはその構造に対して、統一的な記法を与えてくれます。UMLイラネ、な人も中にはいるのかと思いますが、目の前の問題を抽象化、構造化して捉えるためにはモデリングの知識があった方が捗るし、UMLの知識があれば、それを知っている人との共通言語で記載することができるようになります。

メモを取るタイミングから対象をモデリングする、UMLで記載するということが簡単にできれば、自分の理解度が高まるのと同時に、そのメモを見て理解できる人が増える、ということではないかと思う訳です。

UMLモデリングの基礎をやり直さなきゃ。。。

*1:リアルタイムでの結果表示に使っている