Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Kinji Akemine
PPTX, PDF
8,426 views
Astahプラグイン開発勉強会
社内で実施したAstahプラグイン開発勉強会の資料です。
Read more
2
Save
Share
Embed
Embed presentation
Download
Downloaded 29 times
1
/ 44
2
/ 44
3
/ 44
4
/ 44
5
/ 44
6
/ 44
7
/ 44
8
/ 44
9
/ 44
10
/ 44
11
/ 44
12
/ 44
13
/ 44
14
/ 44
15
/ 44
16
/ 44
17
/ 44
18
/ 44
19
/ 44
20
/ 44
21
/ 44
22
/ 44
23
/ 44
24
/ 44
25
/ 44
26
/ 44
27
/ 44
28
/ 44
29
/ 44
30
/ 44
31
/ 44
32
/ 44
33
/ 44
34
/ 44
35
/ 44
36
/ 44
37
/ 44
38
/ 44
39
/ 44
40
/ 44
41
/ 44
42
/ 44
43
/ 44
44
/ 44
More Related Content
PDF
BGP/MPLS-VPNのお勉強資料
by
Toshiki Tsuboi
PDF
Windows Server 2019 で Container を使ってみる
by
Kazuki Takai
PDF
go generate 完全入門
by
yaegashi
PPTX
MLOps入門
by
Hiro Mura
PDF
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
by
Kuniyasu Suzaki
PDF
LXC入門 - Osc2011 nagoya
by
Masahide Yamamoto
PDF
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
PDF
TRICK 2022 Results
by
mametter
BGP/MPLS-VPNのお勉強資料
by
Toshiki Tsuboi
Windows Server 2019 で Container を使ってみる
by
Kazuki Takai
go generate 完全入門
by
yaegashi
MLOps入門
by
Hiro Mura
遠隔デバイスとの信頼を築くための技術とその標準(TEEP RATS)
by
Kuniyasu Suzaki
LXC入門 - Osc2011 nagoya
by
Masahide Yamamoto
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
TRICK 2022 Results
by
mametter
What's hot
PDF
PostgreSQL Unconference #26 No Error on PostgreSQL
by
Noriyoshi Shinoda
PPTX
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
by
Hitachi, Ltd. OSS Solution Center.
PDF
KVM環境におけるネットワーク速度ベンチマーク
by
VirtualTech Japan Inc.
PDF
systemdを始めよう
by
Preferred Networks
PDF
僕は上スワイプでBottomSheetを出したかっただけなんだ
by
Takao Sumitomo
PDF
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
by
NTT DATA Technology & Innovation
PDF
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
by
Yahoo!デベロッパーネットワーク
PDF
無料で仮想Junos環境を手元に作ろう
by
akira6592
PPTX
Spanner移行について本気出して考えてみた
by
techgamecollege
PPTX
AWS WAF のマネージドルールって結局どれを選べばいいの?
by
YOJI WATANABE
PDF
Spring Day 2016 - Web API アクセス制御の最適解
by
都元ダイスケ Miyamoto
PDF
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
by
Shigeru Hanada
PPTX
Ansibleの最近の動向を追ってみた
by
KeijiUehata1
PPTX
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
by
NTT DATA Technology & Innovation
PDF
ガチで聞く!ヤフーのOpenStackプライベート・クラウドの実態とは
by
Brocade
PDF
SpringBootTest入門
by
Yahoo!デベロッパーネットワーク
PDF
Ansibleはじめよぉ -Infrastructure as Codeを理解-
by
Shingo Kitayama
PDF
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
by
VirtualTech Japan Inc.
ODP
Linux host orchestration with Foreman, Puppet and Gitlab
by
Ben Tullis
PDF
インフラ野郎 Azureチーム 博多夏祭り
by
Toru Makabe
PostgreSQL Unconference #26 No Error on PostgreSQL
by
Noriyoshi Shinoda
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
by
Hitachi, Ltd. OSS Solution Center.
KVM環境におけるネットワーク速度ベンチマーク
by
VirtualTech Japan Inc.
systemdを始めよう
by
Preferred Networks
僕は上スワイプでBottomSheetを出したかっただけなんだ
by
Takao Sumitomo
Kubernetes 基盤における非機能試験の deepdive(Kubernetes Novice Tokyo #17 発表資料)
by
NTT DATA Technology & Innovation
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
by
Yahoo!デベロッパーネットワーク
無料で仮想Junos環境を手元に作ろう
by
akira6592
Spanner移行について本気出して考えてみた
by
techgamecollege
AWS WAF のマネージドルールって結局どれを選べばいいの?
by
YOJI WATANABE
Spring Day 2016 - Web API アクセス制御の最適解
by
都元ダイスケ Miyamoto
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
by
Shigeru Hanada
Ansibleの最近の動向を追ってみた
by
KeijiUehata1
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
by
NTT DATA Technology & Innovation
ガチで聞く!ヤフーのOpenStackプライベート・クラウドの実態とは
by
Brocade
SpringBootTest入門
by
Yahoo!デベロッパーネットワーク
Ansibleはじめよぉ -Infrastructure as Codeを理解-
by
Shingo Kitayama
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
by
VirtualTech Japan Inc.
Linux host orchestration with Foreman, Puppet and Gitlab
by
Ben Tullis
インフラ野郎 Azureチーム 博多夏祭り
by
Toru Makabe
Viewers also liked
PPTX
Astah Plug-ins 作ろう!試そう!プラグイン!
by
ChangeVision
PDF
Astah Community スタートガイド
by
ChangeVision
PDF
製造業の受注生産プロセス
by
akipii Oga
PDF
部品表の一覧
by
akipii Oga
PDF
ちょい図解!使って覚える始めてのBonita
by
Kentaro Takasaki
PPTX
チケット駆動のサーバ/インフラ運用における問題点と手動作業の自動化
by
Masato Igeta
Astah Plug-ins 作ろう!試そう!プラグイン!
by
ChangeVision
Astah Community スタートガイド
by
ChangeVision
製造業の受注生産プロセス
by
akipii Oga
部品表の一覧
by
akipii Oga
ちょい図解!使って覚える始めてのBonita
by
Kentaro Takasaki
チケット駆動のサーバ/インフラ運用における問題点と手動作業の自動化
by
Masato Igeta
More from Kinji Akemine
PDF
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
by
Kinji Akemine
PPTX
WACATE2018冬 45分で講師になれそうな気になるASTERセミナー標準テキスト #wacate
by
Kinji Akemine
PPTX
テストの視点からのモデリング(公開用) #wacate
by
Kinji Akemine
PPTX
#wacate 2017 冬 ISONO:REBOOT -評価することにこだわろう-
by
Kinji Akemine
PPTX
60分でわかった気になるISO29119 #wacate
by
Kinji Akemine
PPTX
ICST 2015 まるわかりDay! -Model
by
Kinji Akemine
PPTX
モデル検査入門 #wacate
by
Kinji Akemine
PPTX
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
by
Kinji Akemine
PPTX
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
by
Kinji Akemine
PPTX
第1回キーワード駆動テスト勉強会
by
Kinji Akemine
PPTX
TABOK Skill Category2解説
by
Kinji Akemine
PPTX
Beginning Java EE 6 勉強会(2) #bje_study
by
Kinji Akemine
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
by
Kinji Akemine
WACATE2018冬 45分で講師になれそうな気になるASTERセミナー標準テキスト #wacate
by
Kinji Akemine
テストの視点からのモデリング(公開用) #wacate
by
Kinji Akemine
#wacate 2017 冬 ISONO:REBOOT -評価することにこだわろう-
by
Kinji Akemine
60分でわかった気になるISO29119 #wacate
by
Kinji Akemine
ICST 2015 まるわかりDay! -Model
by
Kinji Akemine
モデル検査入門 #wacate
by
Kinji Akemine
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
by
Kinji Akemine
モデルベースドテスト入門 -テスト詳細設計を自動化しよう- #stac2013
by
Kinji Akemine
第1回キーワード駆動テスト勉強会
by
Kinji Akemine
TABOK Skill Category2解説
by
Kinji Akemine
Beginning Java EE 6 勉強会(2) #bje_study
by
Kinji Akemine
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