SlideShare a Scribd company logo
1 of 14
コミュニケーション図を
シーケンス図に変換する
スクリプトを3時間で
書いた話
チェンジビジョン りりぃ
コミュニケーション図をシーケンス図に変換するスクリプト
CommunicationDiagramToSequenceDiagramConverter.java
今回は急に降って湧いてきたアイディアでした。
SysMLにコミュニケーション図は無いし、PlantUMLにも無いよね。
じゃあコミュニケーション図はシーケンス図に変換できたほうが色々便利かな?
簡単にできそうだし作ってみるか。
私の作りたい物のヒント
● 自分がいかに仕事で楽したいか。欲しいものを作る
● ユーザーの要望から。役に立ちそうなものを作る
作りたいものを考える
どうやったら実現できるか考える
astah* API 利用ガイド の
対応モデル/プレゼンテーシ
ョン一覧を見て
どんな構成になっているか
想像します。
両図でライフラインと
メッセージが使われている
ので、その情報だけあれば
十分と判断。
http://members.change-vision.com/javadoc/astah-
api/8_3_0/api/ja/doc/model_and_presentation.html#%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9%E
5%9B%B3%E3%82%B3%E3%83%9F%E3%83%A5%E3%83%8B%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83
%B3%E5%9B%B3
作る準備
少し手が込みそうなスクリプトは
スクリプト言語だとちょっとめんどくさいのでjavaで書くことにしました。
いちから作るのもめんどくさいので
APIサンプルを複製し、ファイル名等を調整、不要な処理を削除。
今回は astah*のインストールフォルダ¥api¥sample¥simpleDgmEdit を元にしました。
開くプロジェクトファイルパスはフィールドに定義してありましたが
mainメソッドの引数でを受けるようにしてみました。
何があってもプロジェクトを閉じて終わるように
finally に prjAccessor.close(); を書きました。
シーケンス図を作る
コミュニケーション図を検索し、同じ名前空間に同名のシーケンス図を作成
操作の下の場合、名前空間はその親のクラスになるので
ちょっと違う位置に生成されましたが気にしない
(ちなみに構造ツリーのフィルタリング機能は私が実装しました)
ライフラインを作る
コミュニケーション図のライフライン
と同名のライフラインを作成
ベースクラスも取得できるので指定
色もプレゼンテーションから取れます
位置は適当な値で
インクリメントしています
メッセージを作成(順番は適当)
メッセージの情報から
メッセージを作成します
ライフラインリンクの情報が
なくてもメッセージから
必要な情報が全部取れました。
順番や実行仕様が
めちゃくちゃですが、
実装を始めてここまでで
40分くらい。
メッセージをソートする
メッセージのインデックスの
情報から順番をソート。
適当にソートしたらちょっとミスってて
後で少し直した(画像は修正後)。
まだ実行仕様が
つながっていないので
インデックス番号は不正。
実行仕様をつなげる
元のメッセージから
起動メッセージが取得できるので
それを利用して実行仕様を
繋げます。
インデックス番号が適切に。
ここまでが3時間弱。
最終調整
実行仕様がなるだけ重ならないように、
かつ、図が大きくなりすぎないように
出力位置を調整。
これが地味に一番時間かかりましたが
3時間に含めません(こら)
感想
astah*のAPIやUMLの仕様がすでに頭に入っているのが大きいかもしれないけど
少しずつ進めることで3時間でスクリプトを作ることができた。
ほぼmainメソッドにベタ書きしていて、あくまで自分用のプロトタイプ。
とりあえず動けばいいならこれで良し。
テストコードは今回書かなかったけど書いたほうが良いです。
処理毎にメソッドを抽出してあると書きやすいはず。
スクリプトプラグイン用に書き換えたらもっと使いやすいかもしれない。
おまけ(過去に書いたもの)
● Astah Script プラグイン サンプルコード(Java7用)
● Astah Script プラグイン サンプルコード(Java8用)
● astah* API サンプルコード
● m_lily | astah in 5 min
ご清聴ありがとうございました。

More Related Content

Similar to コミュニケーション図をシーケンス図に変換するスクリプトを3時間で書いた話

20110824 gatracker-final
20110824 gatracker-final20110824 gatracker-final
20110824 gatracker-finalsusumukatachi
 
スマ研第2回レポート
スマ研第2回レポートスマ研第2回レポート
スマ研第2回レポートShinpei Niiyama
 
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))HironoriTAKEUCHI1
 
ARの教科書 第9章 モデリングと注釈付け
ARの教科書 第9章 モデリングと注釈付けARの教科書 第9章 モデリングと注釈付け
ARの教科書 第9章 モデリングと注釈付けmachidyo
 
Tableau x Einstein 連 携 に 関 す る 勝 手 な 考 察
Tableau x Einstein 連 携 に 関 す る 勝 手 な 考 察Tableau x Einstein 連 携 に 関 す る 勝 手 な 考 察
Tableau x Einstein 連 携 に 関 す る 勝 手 な 考 察Tomohiro Iwahashi
 
ニコニコ超デザイン-Metro考察編-
ニコニコ超デザイン-Metro考察編-ニコニコ超デザイン-Metro考察編-
ニコニコ超デザイン-Metro考察編-Mizushima Kazuhiro
 
これって、ドメイン駆動設計?
これって、ドメイン駆動設計?これって、ドメイン駆動設計?
これって、ドメイン駆動設計?Michitaka Yumoto
 
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いiOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いKen Morishita
 

Similar to コミュニケーション図をシーケンス図に変換するスクリプトを3時間で書いた話 (8)

20110824 gatracker-final
20110824 gatracker-final20110824 gatracker-final
20110824 gatracker-final
 
スマ研第2回レポート
スマ研第2回レポートスマ研第2回レポート
スマ研第2回レポート
 
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
機械学習応用システムのアーキテクチャ・デザイパターン(2020-07 ドラフトバージョン))
 
ARの教科書 第9章 モデリングと注釈付け
ARの教科書 第9章 モデリングと注釈付けARの教科書 第9章 モデリングと注釈付け
ARの教科書 第9章 モデリングと注釈付け
 
Tableau x Einstein 連 携 に 関 す る 勝 手 な 考 察
Tableau x Einstein 連 携 に 関 す る 勝 手 な 考 察Tableau x Einstein 連 携 に 関 す る 勝 手 な 考 察
Tableau x Einstein 連 携 に 関 す る 勝 手 な 考 察
 
ニコニコ超デザイン-Metro考察編-
ニコニコ超デザイン-Metro考察編-ニコニコ超デザイン-Metro考察編-
ニコニコ超デザイン-Metro考察編-
 
これって、ドメイン駆動設計?
これって、ドメイン駆動設計?これって、ドメイン駆動設計?
これって、ドメイン駆動設計?
 
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞いiOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
 

More from ChangeVision

PlantUML Plugin 紹介スライド
PlantUML Plugin 紹介スライドPlantUML Plugin 紹介スライド
PlantUML Plugin 紹介スライドChangeVision
 
テレワーク下の要件定義(RDRA:ラドラ
テレワーク下の要件定義(RDRA:ラドラテレワーク下の要件定義(RDRA:ラドラ
テレワーク下の要件定義(RDRA:ラドラChangeVision
 
astah*関西勉強会7/14
astah*関西勉強会7/14astah*関西勉強会7/14
astah*関西勉強会7/14ChangeVision
 
koredake modeling accelerates agile
koredake modeling accelerates agilekoredake modeling accelerates agile
koredake modeling accelerates agileChangeVision
 
Astah professional スタートガイド
Astah professional スタートガイドAstah professional スタートガイド
Astah professional スタートガイドChangeVision
 
Astah UML スタートガイド
Astah UML スタートガイドAstah UML スタートガイド
Astah UML スタートガイドChangeVision
 
Astah Plug-ins 作ろう!試そう!プラグイン!
Astah Plug-ins 作ろう!試そう!プラグイン!Astah Plug-ins 作ろう!試そう!プラグイン!
Astah Plug-ins 作ろう!試そう!プラグイン!ChangeVision
 
Astah Community スタートガイド
Astah Community スタートガイドAstah Community スタートガイド
Astah Community スタートガイドChangeVision
 

More from ChangeVision (11)

PlantUML Plugin 紹介スライド
PlantUML Plugin 紹介スライドPlantUML Plugin 紹介スライド
PlantUML Plugin 紹介スライド
 
テレワーク下の要件定義(RDRA:ラドラ
テレワーク下の要件定義(RDRA:ラドラテレワーク下の要件定義(RDRA:ラドラ
テレワーク下の要件定義(RDRA:ラドラ
 
astah*関西勉強会7/14
astah*関西勉強会7/14astah*関西勉強会7/14
astah*関西勉強会7/14
 
koredake modeling accelerates agile
koredake modeling accelerates agilekoredake modeling accelerates agile
koredake modeling accelerates agile
 
koredake modeling
koredake modelingkoredake modeling
koredake modeling
 
Modeling by Verb
Modeling by VerbModeling by Verb
Modeling by Verb
 
modeling-by-verb
modeling-by-verbmodeling-by-verb
modeling-by-verb
 
Astah professional スタートガイド
Astah professional スタートガイドAstah professional スタートガイド
Astah professional スタートガイド
 
Astah UML スタートガイド
Astah UML スタートガイドAstah UML スタートガイド
Astah UML スタートガイド
 
Astah Plug-ins 作ろう!試そう!プラグイン!
Astah Plug-ins 作ろう!試そう!プラグイン!Astah Plug-ins 作ろう!試そう!プラグイン!
Astah Plug-ins 作ろう!試そう!プラグイン!
 
Astah Community スタートガイド
Astah Community スタートガイドAstah Community スタートガイド
Astah Community スタートガイド
 

コミュニケーション図をシーケンス図に変換するスクリプトを3時間で書いた話