Submit Search
Upload
Astahプラグイン開発勉強会
•
Download as PPTX, PDF
•
2 likes
•
8,383 views
Kinji Akemine
Follow
社内で実施したAstahプラグイン開発勉強会の資料です。
Read less
Read more
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 44
Download now
Recommended
RvizPlugin作成入門
RvizPlugin作成入門
Sho Takahashi
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
グラフデータベース入門
グラフデータベース入門
Masaya Dake
位置データもPythonで!!!
位置データもPythonで!!!
hide ogawa
Djangoのエントリポイントとアプリケーションの仕組み
Djangoのエントリポイントとアプリケーションの仕組み
Shinya Okano
Clojureに入門してみた、2017年秋
Clojureに入門してみた、2017年秋
Satoshi KOBAYASHI
Marp Tutorial
Marp Tutorial
Rui Watanabe
Oculus Interaction SDK で物をつかむ編
Oculus Interaction SDK で物をつかむ編
聡 大久保
Recommended
RvizPlugin作成入門
RvizPlugin作成入門
Sho Takahashi
Oss貢献超入門
Oss貢献超入門
Michihito Shigemura
グラフデータベース入門
グラフデータベース入門
Masaya Dake
位置データもPythonで!!!
位置データもPythonで!!!
hide ogawa
Djangoのエントリポイントとアプリケーションの仕組み
Djangoのエントリポイントとアプリケーションの仕組み
Shinya Okano
Clojureに入門してみた、2017年秋
Clojureに入門してみた、2017年秋
Satoshi KOBAYASHI
Marp Tutorial
Marp Tutorial
Rui Watanabe
Oculus Interaction SDK で物をつかむ編
Oculus Interaction SDK で物をつかむ編
聡 大久保
プロジェクトを成功させるための期待マネジメント_中村洋_A-3
プロジェクトを成功させるための期待マネジメント_中村洋_A-3
Yoh Nakamura
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
Taro Matsuzawa
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
ナレッジグラフとオントロジー
ナレッジグラフとオントロジー
University of Tsukuba
Ml system in_python
Ml system in_python
yusuke shibui
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
Machine learning CI/CD with OSS
Machine learning CI/CD with OSS
yusuke shibui
GeoPackageを使ってみた(おざき様)
GeoPackageを使ってみた(おざき様)
OSgeo Japan
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
オープンソース SLAM の分類
オープンソース SLAM の分類
Yoshitaka HARA
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
論文に関する基礎知識2016
論文に関する基礎知識2016
Mai Otsuki
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Kotlinアンチパターン
Kotlinアンチパターン
Recruit Lifestyle Co., Ltd.
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
Astah Plug-ins 作ろう!試そう!プラグイン!
Astah Plug-ins 作ろう!試そう!プラグイン!
ChangeVision
Astah Community スタートガイド
Astah Community スタートガイド
ChangeVision
More Related Content
What's hot
プロジェクトを成功させるための期待マネジメント_中村洋_A-3
プロジェクトを成功させるための期待マネジメント_中村洋_A-3
Yoh Nakamura
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
Taro Matsuzawa
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
ナレッジグラフとオントロジー
ナレッジグラフとオントロジー
University of Tsukuba
Ml system in_python
Ml system in_python
yusuke shibui
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
MITSUNARI Shigeo
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
Machine learning CI/CD with OSS
Machine learning CI/CD with OSS
yusuke shibui
GeoPackageを使ってみた(おざき様)
GeoPackageを使ってみた(おざき様)
OSgeo Japan
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Shinsuke Sugaya
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
オープンソース SLAM の分類
オープンソース SLAM の分類
Yoshitaka HARA
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
論文に関する基礎知識2016
論文に関する基礎知識2016
Mai Otsuki
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
Kotlinアンチパターン
Kotlinアンチパターン
Recruit Lifestyle Co., Ltd.
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Takafumi ONAKA
What's hot
(20)
プロジェクトを成功させるための期待マネジメント_中村洋_A-3
プロジェクトを成功させるための期待マネジメント_中村洋_A-3
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
ナレッジグラフとオントロジー
ナレッジグラフとオントロジー
Ml system in_python
Ml system in_python
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Machine learning CI/CD with OSS
Machine learning CI/CD with OSS
GeoPackageを使ってみた(おざき様)
GeoPackageを使ってみた(おざき様)
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
オープンソース SLAM の分類
オープンソース SLAM の分類
tf,tf2完全理解
tf,tf2完全理解
論文に関する基礎知識2016
論文に関する基礎知識2016
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Kotlinアンチパターン
Kotlinアンチパターン
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
Viewers also liked
Astah Plug-ins 作ろう!試そう!プラグイン!
Astah Plug-ins 作ろう!試そう!プラグイン!
ChangeVision
Astah Community スタートガイド
Astah Community スタートガイド
ChangeVision
製造業の受注生産プロセス
製造業の受注生産プロセス
akipii Oga
部品表の一覧
部品表の一覧
akipii Oga
ちょい図解!使って覚える始めてのBonita
ちょい図解!使って覚える始めてのBonita
Kentaro Takasaki
チケット駆動のサーバ/インフラ運用における問題点と手動作業の自動化
チケット駆動のサーバ/インフラ運用における問題点と手動作業の自動化
Masato Igeta
Viewers also liked
(6)
Astah Plug-ins 作ろう!試そう!プラグイン!
Astah Plug-ins 作ろう!試そう!プラグイン!
Astah Community スタートガイド
Astah Community スタートガイド
製造業の受注生産プロセス
製造業の受注生産プロセス
部品表の一覧
部品表の一覧
ちょい図解!使って覚える始めてのBonita
ちょい図解!使って覚える始めてのBonita
チケット駆動のサーバ/インフラ運用における問題点と手動作業の自動化
チケット駆動のサーバ/インフラ運用における問題点と手動作業の自動化
Similar to Astahプラグイン開発勉強会
一六社ブログ-プラグイン作成入門
一六社ブログ-プラグイン作成入門
柴田 篤志
インプットメソッドメンテナーの日常
インプットメソッドメンテナーの日常
Fuminobu Takeyama
SSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4
【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化
【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化
Kotaro Ogino
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Yasuaki Matsuda
MTプラグイン入門以前
MTプラグイン入門以前
Hiroshi Yamato
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
Go Sueyoshi (a.k.a sue445)
【15-E-7】セキュアな環境でDevOpsを実現する厳選ツール
【15-E-7】セキュアな環境でDevOpsを実現する厳選ツール
Developers Summit
Pureyes tutrial for raspberrypi kit
Pureyes tutrial for raspberrypi kit
Mitsuhironakamura11
属人化したフロントエンドのJavaScriptを、‘新規機能開発を止めずに’改善するために行った取り組みについて。及びその経過報告。
属人化したフロントエンドのJavaScriptを、‘新規機能開発を止めずに’改善するために行った取り組みについて。及びその経過報告。
Jun Suzuki
Should we write such like plugin or not?
Should we write such like plugin or not?
SATOSHI TAGOMORI
230517_chatGPT_v01.pdf
230517_chatGPT_v01.pdf
Satoshi Kume
2013.01.18 G*Workshop GGX 2012 Report
2013.01.18 G*Workshop GGX 2012 Report
Yu Sudo
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
NTT DATA OSS Professional Services
アニメの公式アカウントのフォロワー数をつぶやくTwitterボットを作ってみた
アニメの公式アカウントのフォロワー数をつぶやくTwitterボットを作ってみた
Yoshitake Takata
スマホのパケットを節約したいけど音泉をもっと楽しみたい
スマホのパケットを節約したいけど音泉をもっと楽しみたい
Yoshitake Takata
Windowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
Kenji NAKAGAKI
Azure Functions あれこれ
Azure Functions あれこれ
Yasuaki Matsuda
まだタスクランナー使っていないって本当(マジ)? 仕事に対する効率化意識向上のための gulp ハンズオン : Wordcamp tokyo 2015
まだタスクランナー使っていないって本当(マジ)? 仕事に対する効率化意識向上のための gulp ハンズオン : Wordcamp tokyo 2015
Hiromu Hasegawa
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
Kotaro Ogino
Similar to Astahプラグイン開発勉強会
(20)
一六社ブログ-プラグイン作成入門
一六社ブログ-プラグイン作成入門
インプットメソッドメンテナーの日常
インプットメソッドメンテナーの日常
SSH応用編_20231129.pdf
SSH応用編_20231129.pdf
【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化
【第6回テックヒルズ】検索基盤開発のための結合テスト環境の自動化
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
MTプラグイン入門以前
MTプラグイン入門以前
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
【15-E-7】セキュアな環境でDevOpsを実現する厳選ツール
【15-E-7】セキュアな環境でDevOpsを実現する厳選ツール
Pureyes tutrial for raspberrypi kit
Pureyes tutrial for raspberrypi kit
属人化したフロントエンドのJavaScriptを、‘新規機能開発を止めずに’改善するために行った取り組みについて。及びその経過報告。
属人化したフロントエンドのJavaScriptを、‘新規機能開発を止めずに’改善するために行った取り組みについて。及びその経過報告。
Should we write such like plugin or not?
Should we write such like plugin or not?
230517_chatGPT_v01.pdf
230517_chatGPT_v01.pdf
2013.01.18 G*Workshop GGX 2012 Report
2013.01.18 G*Workshop GGX 2012 Report
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
アニメの公式アカウントのフォロワー数をつぶやくTwitterボットを作ってみた
アニメの公式アカウントのフォロワー数をつぶやくTwitterボットを作ってみた
スマホのパケットを節約したいけど音泉をもっと楽しみたい
スマホのパケットを節約したいけど音泉をもっと楽しみたい
Windowsにpythonをインストールしてみよう
Windowsにpythonをインストールしてみよう
Azure Functions あれこれ
Azure Functions あれこれ
まだタスクランナー使っていないって本当(マジ)? 仕事に対する効率化意識向上のための gulp ハンズオン : Wordcamp tokyo 2015
まだタスクランナー使っていないって本当(マジ)? 仕事に対する効率化意識向上のための gulp ハンズオン : Wordcamp tokyo 2015
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
【DevLOVE現場甲子園2013】Software Engineer in Test @ 楽天の検索基盤の現場
More from Kinji Akemine
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
Kinji Akemine
WACATE2018冬 45分で講師になれそうな気になるASTERセミナー標準テキスト #wacate
WACATE2018冬 45分で講師になれそうな気になるASTERセミナー標準テキスト #wacate
Kinji Akemine
テストの視点からのモデリング(公開用) #wacate
テストの視点からのモデリング(公開用) #wacate
Kinji Akemine
#wacate 2017 冬 ISONO:REBOOT -評価することにこだわろう-
#wacate 2017 冬 ISONO:REBOOT -評価することにこだわろう-
Kinji Akemine
60分でわかった気になるISO29119 #wacate
60分でわかった気になるISO29119 #wacate
Kinji Akemine
ICST 2015 まるわかりDay! -Model
ICST 2015 まるわかりDay! -Model
Kinji Akemine
モデル検査入門 #wacate
モデル検査入門 #wacate
Kinji Akemine
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
Kinji Akemine
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
Kinji Akemine
第1回キーワード駆動テスト勉強会
第1回キーワード駆動テスト勉強会
Kinji Akemine
TABOK Skill Category2解説
TABOK Skill Category2解説
Kinji Akemine
Beginning Java EE 6 勉強会(2) #bje_study
Beginning Java EE 6 勉強会(2) #bje_study
Kinji Akemine
More from Kinji Akemine
(12)
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
WACATE2018冬 45分で講師になれそうな気になるASTERセミナー標準テキスト #wacate
WACATE2018冬 45分で講師になれそうな気になるASTERセミナー標準テキスト #wacate
テストの視点からのモデリング(公開用) #wacate
テストの視点からのモデリング(公開用) #wacate
#wacate 2017 冬 ISONO:REBOOT -評価することにこだわろう-
#wacate 2017 冬 ISONO:REBOOT -評価することにこだわろう-
60分でわかった気になるISO29119 #wacate
60分でわかった気になるISO29119 #wacate
ICST 2015 まるわかりDay! -Model
ICST 2015 まるわかりDay! -Model
モデル検査入門 #wacate
モデル検査入門 #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
第1回キーワード駆動テスト勉強会
第1回キーワード駆動テスト勉強会
TABOK Skill Category2解説
TABOK Skill Category2解説
Beginning Java EE 6 勉強会(2) #bje_study
Beginning Java EE 6 勉強会(2) #bje_study
Astahプラグイン開発勉強会
1.
+ astah*プラグイン開発勉強会 2013/5/29 朱峰 錦司 @kjstylepp
2.
+ お品書き astah*とは astah*プラグインとは astah*プラグインを作ろう astah*プラグイン開発勉強会 2 2013/5/29
3.
+ 2013/5/29astah*プラグイン開発勉強会 3 astah*とは
4.
+ astah* 株式会社チェンジビジョンが提供するツール のブランド名 以前は「JUDE」という名前だった 昔、JUDEは当社でもけっこう使って気がするけど、最近は よくわからない…
社長は平鍋健児さん(@hiranabe) アジャイルとかリーンスタートアップ界隈で有名人 株式会社永和システムマネジメントの副社長もしてたり 「astah」というキーワードでツイートするとたまに反応 してくれる コンセプト:「最も身近なソフトウェア開発 設計支援ツール」 astah*プラグイン開発勉強会 4 2013/5/29
5.
+ astah*でできること お絵かき ソフトウェア設計
各種UML ER図 データフロー図 フローチャート CRUD図…etc 思考の整理 マインドマップ 共有 Web経由での成果物参照 Web経由でのコメンの追加 ※エディションによってできることに差がある astah*プラグイン開発勉強会 5 2013/5/29
6.
+ エディションによる違い ダイアグラム描画については… 機能 astah* community astah* UML astah* professional UML2.x クラス図、ユースケース図、シーケンス 図、アクティビティ図、コミュニケー ション図、ステートマシン図、コンポー ネント図、配置図、合成構造図、オブ ジェクト図、パッケージ図 ✓ ✓ ✓ Eriksson-Penkerのプロセス図
参照 ✓ ✓ マインドマップ 参照 ✓ ✓ ER図 参照 参照 ✓ フローチャート 参照 参照 ✓ CRUD 参照 参照 ✓ データフロー図(DFD) 参照 参照 ✓ 要求テーブル 参照 参照 ✓ 要求図 参照 参照 ✓ ※http://astah.change-vision.com/ja/feature/comparison-table.htmlから引用 慣れるまではとりあえ ずUML書ければOK しかも商用利用可! 本格的に開発で使うなら やっぱりprofessionalが 欲しいですね astah*プラグイン開発勉強会 6 2013/5/29
7.
+ 2013/5/29astah*プラグイン開発勉強会 7 astah*プラグイン とは
8.
+ astah*プラグイン astah*が提供する拡張ポイントを経由して、 お好みの機能を追加できる 2011年10月のVer6.5でβ(?)初登場 それまでもastah*
Labsにはひっそりとあった 2012年3月のVer6.6で正式対応 それなりの数のプラグインがすでに公開中 公式のプラグイン紹介 http://www.slideshare.net/ChangeVision/astah-plugins Github上には2013年5月時点で40弱のリポジトリ https://github.com/search?q=astah astah*プラグイン開発勉強会 8 2013/5/29
9.
+ どんなプラグインがあるか(1) この手のツールのプラグインは主に以下の3 ジャンルに分類可能(と思う…) インポート系 外部ファイルをastah*で扱えるモデルに変換
FreeMindのインポート 各種プログラミング言語のリバース 加工系 astah*で扱えるモデルをこねくりまわす。なんでもあり。 エクスポート系 astah*で扱えるモデルを外部ファイルに変換 yUML形式にエクスポート MSOffice描画オブジェクトにエクスポート astah*プラグイン開発勉強会 9 2013/5/29
10.
+ どんなプラグインがあるか(2) DBリバースプラグイン ERモデルの生成 DBサーバに接続し、スキーマ情報からモデルをリバース
キー/リレーションなどの情報もばっちり 生成したモデルの自動レイアウトなども可能 http://astah.change-vision.com/ja/feature/db-reverse-plugin.html astah*プラグイン開発勉強会 10 2013/5/29
11.
+ どんなプラグインがあるか(3) 品質スイートプラグイン ステートチャートの活用 マトリクスに変換し、振る舞いの網羅性のレビュー
遷移パスを抽出し、テストケースとして活用 似たようなことをやっている人がいたような…(ry クラス図/シーケンス図の活用 クラス間依存関係を可視化し、結合度合いのレビュー クラス図とシーケンス図の整合性のレビュー http://astah.change-vision.com/ja/feature/quality-plugin.html astah*プラグイン開発勉強会 11 2013/5/29
12.
+ どんなプラグインがあるか(4) Office連携プラグイン 日本人歓喜!!! 何かの勉強会で平鍋さん談
astah*とOfficeのダイレクト連携 Officeのオブジェクト挿入メニューからastah*で編集中の モデルを描画オブジェクトとしてインポート可能 画像として保存->Officeに貼り付け、をショートカット http://astah.change-vision.com/ja/feature/office-plugin.html astah*プラグイン開発勉強会 12 2013/5/29
13.
+ astah* API astah*にはastah*
APIが存在 astah*のモデルを扱うJavaインターフェース群 Thread-safeではない(はず) 公式利用ガイド/JavaDocあり http://members.change-vision.com/javadoc/astah-api/6_7_0- 43495/api/ja/doc http://members.change-vision.com/javadoc/astah-api/6_7_0- 43495/api/ja/doc/javadoc/ APIが提供する機能 モデルの参照/作成/編集/削除 図の参照/作成/編集/削除 XML入出力 ※エディションによってできることが異なる astah*プラグイン開発勉強会 13 2013/5/29
14.
+ エディションによる違い モデルの操作については… モデルの参照 モデルの作成※ モデルの編集※
モデルの削除※ クラス図 ○ ○ ○ ○ ユースケース図 ○ ○ ○ ○ ステートマシン図 ○ ○ ○ ○ アクティビティ図 ○ × × × シーケンス図 ○ ○ ○ ○ コミュニケーション図 ○ × × × コンポーネント図 × × × × 配置図 × × × × 合成構造図 ○ ○ ○ ○ フローチャート ○ × × × データフロー図(DFD) ○ × × × ER図 ○ △ △ △ CRUD × × × × マインドマップ × × × × 要求テーブル × × × × 要求図 ○ △ △ △ トレーサビリティマップ × × × × ※astah* UML, professionalのみ。△はastah* professionalのみ。 ※http://members.change-vision.com/javadoc/astah-api/6_7_0-43495/api/ja/doc/index.htmlから引用 プラグインを作るなら professionalじゃないと 楽しくない… astah*プラグイン開発勉強会 14 2013/5/29
15.
+ Plugin A Plugin
B プラグインの動作する仕組み プラグインはOSGi Runtime上で動作 Eclipseでおなじみのプラグイン機構 OSGi Bundle形式のプラグインjarをpluginsフォル ダに配置すればOK astah*ツール UI拡張ポイント astah* API OSGi Runtime ggrks (ごめんなさい、私も詳しくないです…) astah*プラグイン開発勉強会 15 2013/5/29
16.
+ 2013/5/29astah*プラグイン開発勉強会 16 astah*プラグイン を作ろう
17.
+ ハンズオンの内容 公式のチュートリアル http://astah.change-vision.com/ja/plugin-tutorial/index.html
元ネタというかほぼそのまま 本日の講師の環境 astah* community6.7 JDK7 まぁ6でも問題ないとは思いますが Eclipse3.8.2 JDT コマンド叩いたりとかはコマンドプロンプトでやるのでm2eは使いま せん 拡張ポイントやAPIを1回使ってみるのが目的 詳細な使用などは説明しません 興味のある人はチュートリアルやその他資料を参照のこと 2013/5/29astah*プラグイン開発勉強会 17
18.
+ astah* Plug-in SDK
mavenベースのプラグイン開発支援ツール プロジェクト作成、ビルド、astah*ツール起動などのコマン ド群を提供 2013年5月現在、Ver1.1が最新 利用方法 好きな場所に配置する コマンド群の入ったbinフォルダにパスを通す プラグインの動作確認対象のastah*ツールの場所を設定ファ イルに記述 デフォルト設定でastah*ツールをインストールしている場合は必要 なし Macだと「astah community」などのような半角スペースを扱えない バグがあるっぽい 「astah_community」のように変更したらうまく動く 家で勉強してるときにいきなりハマって心が折れかけた… astah*プラグイン開発勉強会 18 2013/5/29
19.
+ (参考)mavenのproxy突破 settings.xmlの作成 setting.xmlではないので注意 {%HOME}/.m2/settings.xml 2013/5/29astah*プラグイン開発勉強会 19 <settings> <proxies> <proxy> <active>true</active> <protocol>http</protocol> <host>{proxyのアドレス}</host> <port>8080</port> <username>{アカウント名}</username> <password>{パスワード}</password> </proxy> </proxies> </settings>
20.
+ (参考)astah*ツールのインストール場所の指定 settings.xmlの編集 {%ASDK_HOME}/conf/settings.xml 2013/5/29astah*プラグイン開発勉強会 20 <profile> <id>astah-community-windows-x86</id> <activation> <activeByDefault>false</activeByDefault> <file> <exists>C:/Applications/astah_community/astah-community.jar</exists> </file> </activation> <properties> <astahPath>C:/Applications/astah_community/</astahPath> <astahEdition>community</astahEdition> </properties> … </profile>
私はzip版をここに インストールしています
21.
+ SDKの動作確認 パスが通っているかどうか astah*ツールが起動するかどうか 2013/5/29astah*プラグイン開発勉強会 21 >asdk astah* Plug-in SDK
version: 1.1 >astah-launch [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Maven Stub Project (No POM) 1 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- astah-maven-plugin:1.0.0:launch (default-cli) @ standalone-pom --- [INFO] Launching astah*...
22.
+ テンプレートプラグイン(1) プラグイン開発プロジェクトの作成 プロジェクトを配置したいフォルダに移動 2013/5/29astah*プラグイン開発勉強会 22 >astah-generate-project [INFO] Scanning
for projects... … (初回はすごく長い) … Define value for property 'groupId': : com.example Define value for property 'artifactId': : SampleOfAstahPlugin Define value for property „version‟: 1.0-SNAPSHOT: :(空欄) Define value for property „package‟: com.example: :(空欄) Confirm properties configuration: groupId: com.example artifactId: SampleOfAstahPlugin version: 1.0-SNAPSHOT package: com.example Y: :(空欄) [INFO] ------------------------------------------------------------------ … 識別子 プロジェクト名
23.
+ テンプレートプラグイン(2) テンプレートプラグインの起動 作成したプロジェクトフォルダに移動 2013/5/29astah*プラグイン開発勉強会 23 >astah-build [INFO] Scanning
for projects... … (初回はすごく長い) … [INFO] ------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------ … >astah-launch [INFO] Scanning for projects... … [INFO] ------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------ …
24.
+ テンプレートプラグイン(3) メニューが追加されていることを確認 2013/5/29astah*プラグイン開発勉強会 24 これ
25.
+ テンプレートプラグイン(4) テンプレートプロジェクトをEclipseにイン ポート Eclipseプロジェクトファイルの作成 Eclipseから既存のプロジェクトをインポート 2013/5/29astah*プラグイン開発勉強会 25 >astah-mvn
eclipse:eclipse ここから作成したプロジェクトの ルートフォルダを指定
26.
+ (参考)m2eを使う場合 Mavenプロジェクトとしてインポート可能 Eclipseプロジェクトファイルの作成は必要なし 各種コマンドもEclipse上から実行可能 MAVEN_HOMEにSDKのルートディレクトリを追加する 必要あり 2013/5/29astah*プラグイン開発勉強会 26
27.
+ テンプレートプラグイン(5) 着目するファイル src/main/resouces/plugin.xml 拡張ポイントの設定ファイル
テンプレートではメニューの定義と、メニュー押下時の振 る舞いの定義クラスを指定 src/main/java/com.example/TemplateAction.java メニュー押下時の振る舞いを実装 2013/5/29astah*プラグイン開発勉強会 27
28.
+ テンプレートプラグイン(6) plugin.xmlの確認 2013/5/29astah*プラグイン開発勉強会 28 <?xml version="1.0" encoding="UTF-8"?> <plugin> <extension
point="com.change_vision.astah.ui.actionSets"> <actionSet label="%action_set_label" visible="true" id="com.example.SampleOfAstahPlugin.actionSet"> <menu id="SampleOfAstahPlugin" label="%menu_group" path="tool/SampleOfAstahPlugin"> </menu> <action label="%menu_label" icon="icons/sample.gif" class="com.example.TemplateAction" tooltip="%menu_tooltip" menubarPath="tool/SampleOfAstahPlugin/" id="SampleOfAstahPlugin"> </action> </actionSet> </extension> </plugin> 拡張ポイントを指定 メニューを追加 するグループ グループ メニューを追加 メニューを追加 押下時に実施される 振る舞いを設定
29.
+ HelloWorldプラグイン(1) テンプレートプラグインを再利用して HelloWorldプラグインを作ろう ヘルプメニューに独自メニューを追加 プロジェクトを開いていなくてもHello
World画面 を表示 テンプレートプラグインはプロジェクトが開いていないと エラーを表示する 2013/5/29astah*プラグイン開発勉強会 29
30.
+ HelloWorldプラグイン(2) plugin.xmlに新たなactionSetを追加 2013/5/29astah*プラグイン開発勉強会 30 <actionSet label=“HelloWorldプラグイン“ visible="true" id=“com.example.actions.HelloWorld”> <menu id=“HelloWorld” label=“HelloWorldメニューグループ” path=“help/HelloWorld”> </menu> <action label=“HelloWorldメニュー” icon=“icons/sample.gif” class=“com.example.actions.HelloWorldAction” tooltip=“HelloWorld” menubarPath=“help/HelloWorld/” id=“HelloWorldAction”> </action> </actionSet> 呼び出すクラスは HelloWorldAction
31.
+ HelloWorldプラグイン(3) Hell oWorldActionクラスの作成 2013/5/29astah*プラグイン開発勉強会 31 public class
HelloWorldAction implements IPluginActionDelegate { @Override public Object run(IWindow arg0) throws UnExpectedException { try { JOptionPane.showMessageDialog(arg0.getParent(), "HelloWorld!"); } catch (Exception e) { JOptionPane.showMessageDialog(arg0.getParent(), "Exception occuerd!", "Alert", JOptionPane.ERROR_MESSAGE); throw new UnExpectedException(); } return null; } } astah*ツールの UIはSwing アクションを実現するために IPluginActionDelegateを実装
32.
+ HelloWorldプラグイン(4) プラグインをビルドし、HelloWorldのプロン プトが表示されることを確認 2013/5/29astah*プラグイン開発勉強会 32
33.
+ CountClassesプラグイン(1) プロジェクト内に存在するクラス数を表示す るプラグインを作ろう プロジェクト内にパッケージがある場合は配下の クラス数を再帰的にカウントする 2013/5/29astah*プラグイン開発勉強会 33 クラス数が3つで あることを表示 ※http://astah.change-vision.com/ja/plugin-tutorial/example.htmlから引用
34.
+ CountClassesプラグイン(2) plugin.xmlに新たなactionSetを追加 2013/5/29astah*プラグイン開発勉強会 34 呼び出すクラスは CountClassesAction <actionSet label=“CountClassesプラグイン” visible=“true” id=“com.example.actions.CountClasses”> <menu id=“CountClasses” label=“CountClassesメニューグループ” path=“tool/CountClasses”> </menu> <action label=“CountClassesメニュー” icon=“icons/sample.gif” class=“com.example.actions.CountClassesAction” tooltip=“CountClasses” menubarPath=“tool/CountClasses/” id=“com.example.actions.CountClassesAction”> </action> </actionSet>
35.
+ CountClassesプラグイン(3) CountClassesActionクラスの作成(1) 2013/5/29astah*プラグイン開発勉強会 35 public class CountClassesAction
implements IPluginActionDelegate { @Override public Object run(IWindow window) throws UnExpectedException { try { AstahAPI api = AstahAPI.getAstahAPI(); ProjectAccessor projectAccessor = api.getProjectAccessor(); IModel iCurrentProject = projectAccessor.getProject(); List<IClass> classList = new ArrayList<IClass>(); getAllClasses(iCurrentProject, classList); JOptionPane.showMessageDialog(window.getParent(), "There are " + classList.size() + " classes."); } catch (ProjectNotFoundException e) { JOptionPane.showMessageDialog(window.getParent(), "Please open a project.", "Warning", JOptionPane.WARNING_MESSAGE); throw new UnExpectedException(); } catch (Exception e) { JOptionPane.showMessageDialog(window.getParent(), "Exception occured.", "Alert", JOptionPane.ERROR_MESSAGE); throw new UnExpectedException(); } return null; } 扱うProject オブジェクトの取得 Projectを扱うときは Projectがない場合を想 定
36.
+ CountClassesプラグイン(4) CountClassesActoinクラスの作成(2) 2013/5/29astah*プラグイン開発勉強会 36 private void getAllClasses(INamedElement
namedElement, List<IClass> classList) throws ClassNotFoundException, ProjectNotFoundException { if (namedElement instanceof IPackage) { for (INamedElement ownedNamedElement : ((IPackage) namedElement).getOwnedElements()) { getAllClasses(ownedNamedElement, classList); } } else if (namedElement instanceof IClass) { classList.add((IClass) namedElement); for(IClass nestedClasses : ((IClass) namedElement).getNestedClasses()) { getAllClasses(nestedClasses, classList); } } } } クラスなら リストに追加 パッケージなら 再帰的に検査
37.
+ CountClassesプラグイン(4) プラグインをビルドし、クラス数が正しく表 示されることを確認(1) 2013/5/29astah*プラグイン開発勉強会 37
38.
+ CountClassesプラグイン(5) プラグインをビルドし、クラス数が正しく表 示されることを確認(2) 2013/5/29astah*プラグイン開発勉強会 38 デフォルトのjava プロジェクトには 137クラス存在
39.
+ HelloWorldViewプラグイン(1) もうひとつの拡張ポイント、タブViewの追加 を行うプラグインを作りましょう plugin.xmlに新たなextensionを追加 2013/5/29astah*プラグイン開発勉強会 39 <extension point="com.change_vision.astah.ui.view"> <view id="com.example.view.HelloWorldView" type="extraTab" class="com.example.view.HelloWorldView"> </view> </extension> 呼び出すクラスは HelloWorldView Viewの拡張はこの extensionを使う
40.
+ HelloWorldViewプラグイン(2) HelloWorldViewクラスの作成 2013/5/29astah*プラグイン開発勉強会 40 public class HelloWorldView
extends JPanel implements IPluginExtraTabView { public HelloWorldView() { setLayout(new BorderLayout()); add(createLabelPane(), BorderLayout.CENTER); } private Component createLabelPane() { JLabel label = new JLabel("Hello World!"); JScrollPane pane = new JScrollPane(label); return pane; } @Override public String getDescription() { return "Hello World View Plugin"; } @Override public String getTitle() { return "Hello World View"; } … } 拡張タブを実現するために IPluginExtraTabViewを実装 タブ自体はSwingのJPanel
41.
+ (参考)EventListnerの登録 ProjectEventListner astah*ツール上でモデルの編集など、プロジェク トに変更が発生した場合、このListnerを実装した クラスは変更のオブザーバーになれる 実装するメソッド
public void projectOpened(ProjectEvent e){} public void projectChanged(ProjectEvent e){} public void projectClosed(ProjectEvent e){} チュートリアルの例ではHelloWorldViewにこの Listenerを実装している が、メソッドには何も実装していないのでサンプルとして は参考にはならない… 2013/5/29astah*プラグイン開発勉強会 41
42.
+ HelloWorldViewプラグイン(3) プラグインをビルドし、拡張タブが表示され ることを確認 2013/5/29astah*プラグイン開発勉強会 42 ここ
43.
+ astah* communityで動くプラグイン コードを読んでみよう yUML
tool for Astahプラグイン http://astah.change-vision.com/ja/feature/yuml-plugin.html Astah Scriptプラグイン http://astah.change-vision.com/ja/feature/script-plugin.html PHP-Export Plug-in https://github.com/tobitobita/php-export/blob/master/README_ja.md (参考)最新Eclipseでも動くJavaのリバースツール「JD-Eclipse(の改造版)」 http://mchr3k.github.io/jdeclipse-realign/ astah*プラグイン開発勉強会 43 2013/5/29
44.
+ みんなで何かおもしろい プラグイン作りましょう! 2013/5/29 astah*プラグイン開発勉強会
44
Download now