Submit Search
Upload
Astahプラグイン開発勉強会
•
2 likes
•
8,377 views
Kinji Akemine
Follow
社内で実施したAstahプラグイン開発勉強会の資料です。
Read less
Read more
Report
Share
Report
Share
1 of 44
Download Now
Download to read offline
Recommended
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
PostgreSQLモニタリング機能の現状とこれから(Open Developers Conference 2020 Online 発表資料)
NTT DATA Technology & Innovation
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
Masahito Zembutsu
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
イベント・ソーシングを知る
イベント・ソーシングを知る
Shuhei Fujita
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
More Related Content
What's hot
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Soudai Sone
Tackling Complexity
Tackling Complexity
Yoshitaka Kawashima
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
増田 亨
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
Sho A
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
Shigenori Sagawa
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話
Yusuke Hisatsu
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
Etsuji Nakai
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
What's hot
(20)
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
PostgreSQLアンチパターン
PostgreSQLアンチパターン
Tackling Complexity
Tackling Complexity
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Pythonによる黒魔術入門
Pythonによる黒魔術入門
テストコードの DRY と DAMP
テストコードの DRY と DAMP
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
継承やめろマジやめろ。 なぜイケないのか 解説する
継承やめろマジやめろ。 なぜイケないのか 解説する
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
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