UMLモデリングツールastah*(Community版)でプラグイン開発環境を試してみた（１）

#はじめに
UMLモデリングツール「astah* community」は、なんと、無料でありながらプラグインを自作できるそうです。
早速、試してみようと、チュートリアルを読みながら進めたのですが、
チュートリアルは少し古いみたいで、なにか少しずつ違います。
ですので、「自分用メモ」と「他人用の参考資料」として記録に残します。

#プラグイン開発環境を構築したPC環境
Windows10 Home
64ビット オペレーティングシステム x64ベースプロセッサ
Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz
RAM 8.00GB
astah community 6.9 をインストール済。

#参考にする基本的なチュートリアル
チェンジビジョン社のastahのホームーページの「[プラグインを開発する](http://astah.change-vision.com/ja/plugins.html#create-plugins)」を開きます。

画面の下の方に、以下の部分があり、これを基に進めながら、特に差異に注意して、話を進めます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/7a8e04b2-241c-abaf-1a2e-05171ef179de.png)

#開発環境のダウンロード
上記画面の「astah*plug-in SDKのダウンロード」をクリックすると、開発環境のzipがダウンロードできました。

それはそれでzipのままとっておきます。

#開発環境を構築する
次に、「プラグイン開発チュートリアル(HTML)」をクリックすると、
次の画面(目次)が出ます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/89a81daa-5425-b75b-475a-d8598ed946f2.png)

「プラグイン機構のしくみ」は、目を通しただけです。

さっそく次の「astah*のプラグインの開発環境を構築しましょう」を参考して進めます。
「～構築しましょう」では、具体的にインストールするパスを指定していませんが、
参考画像と同様に、C:\devを作り、その下に、ダウンロードしたSDKを配置しました。
zipを解凍すると、その中に「astah-plugin-SDK-1.4」というフォルダができたので、それを「C:\」の下に移動しました。
「C:\dev\astah-plugin-SDK-1.4」です。

あとは、「～構築しましょう」の手順通り実行すると、すんなり、astah* communityがlaunch(=起動)できました。
ここまで特に問題なし。

ただし、途中でWindows10の環境変数の設定方法が分からなければ、こちら↓などを参考にして設定します。
[Windows10で環境変数（システム環境変数、ユーザ環境変数）を追加](http://www.wannko.net/windows10/etc/kankyo.html)

#Hello Worldを作ってみる
##プラグインプロジェクトの新規作成
次に「Hello Worldプラグインを作ってみましょう」をしてみました。
これは、2017.11.07現在にダウンロードしたSDKでの様子をメモとして残します。

チュートリアルに従って、
まず、「プラグインプロジェクトの新規作成」をしました。
フォルダの指定はなかったので、「C:\Users\azuki\Documents」（マイドキュメント）にしました。
コマンドプロンプトを管理者モードでないまま起動して、フォルダに移動。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/02172020-f7bd-7c93-36b2-abcb5be41846.png)

そこで「astah-generate-project」を実行すると、たくさんの表示が出てきました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/ff3bff15-77e4-938e-d6ae-fa0828ff90d8.png)
となって、groupId を求められました。

続けて他のものも入力を求められたので、次々と入力して、下図のようにしました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/3f3f760b-1da5-d574-e2ca-49e7a34796c9.png)
最終的に"Y"を入力してEnterすると、無事プロジェクトが作成されたようです。

##プラグインプロジェクトをビルドする
チュートリアルだと、ここでビルドするのですが、
ビルドコマンドを打つ前に、ディレクトリを移動します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/8ce350eb-efbd-a156-c060-32ff2210fbc3.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/3ec09f27-cc7d-e535-2f7b-d07d8988b346.png)

プラグインプロジェクトのフォルダのパスで、
ビルドコマンド「> astah-build」します。

無事ビルド完了しました。これで、HelloWorld的なプラグインが完成してしまったようです。
なんてお手軽。

##Helloプラグインを起動

試しに「> astah-launch」すると、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/83fd9bb5-8e00-9125-3285-4741d918485e.png)
このとおり、astahが起動します。

「ツール」メニューを開くと、一番下に、「テンプレートグループ」の「テンプレートメニュー」があります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/923714cd-194f-784c-9631-3d5211580de5.png)
これを実行すると、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/a8d429d8-b6b6-a74a-0a33-a4b371951c8a.png)
がでました。プロジェクトを開いていないとだめだそうです。

気を取り直して、astahの画面左上の白いボタン（プロジェクトの新規作成）を押してから、再度「テンプレートメニュー」を実行すると、、、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/45fb5b9b-bbe6-637d-767b-f82517491bfb.png)
「Hello」と表示されたメッセージボックスが出ました。

はい。Helloを表示させるには、プラグインプロジェクトを生成してビルドして起動しただけです。

##Helloの表示内容を変えてみる
これじゃ、どこのコードを弄ればいいの分からないので、Helloを表示しているコードを探します。

探してみたら、このHelloという文字列は、以下のファイルに書かれているもののようです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/00c22528-30f8-726c-e29e-654f0e33eaf3.png)

19行目、ファイル内の"Hello"という文字列を、"Hello World!!!"に書き換えて、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/67557de2-fad6-f19d-1851-1836a1f160bf.png)

再度、コマンドプロンプトのそのままのフォルダで「> astah-build」して「> astah-launch」。
無事、ビルドできました。

起動してきたastah communityの「ツール」メニューを開いて、「テンプレートメニュー」を実行すると、
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/ecde380a-7e27-fd0a-ddc5-04dccb06f746.png)
はい。無事、Hello World!!!と表示されました。

##JavaのIDEは特に使いませんでした
チュートリアルでは、
「IDEにプラグインプロジェクトをインポートしましょう」
があるのですが、個人的にJavaのIDEを使っていないので、特に設定はしませんでした。
ひとまずIDEなしでも進めるようです。

##最新の開発環境ではプラグインプロジェクトの自動生成で作られてしまうらしいもの
チュートリアルの以下の項目は、最新の開発環境では自動生成されてしまうようです。
「メッセージを表示するメニューを作成しましょう」
「アクションを作成しましょう」
なので、スルーしました。

#Hello Worldの次へ
##クラスの総数を数えるプラグイン
チュートリアルにある「クラスの総数を表示するプラグインを作ってみましょう」に進みます。
このプラグインでは、astahのAPIを呼び出しに突入します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/948555b6-98e1-052c-90be-bd5fa3c90ef2.png)

ここに、CountClassAction.java という空ファイルを新規追加しました。
チュートリアル「[クラスの総数を表示するプラグインを作ってみましょう](http://astah.change-vision.com/ja/plugin-tutorial/example.html)」の中にあるコードをコピーして、空ファイル内に貼り付けました。

これが、新しいプラグインのコードになります。

チュートリアルによると、次にplugin.xmlを編集すると書いてありました。同じ名前のファイルが2か所にあったのですが、こちらが正解です。もう片方は、自動生成ファイルでした。編集してもコンパイル時に上書きされてしまいます。

このplugin.xmlでは、メニューから開くときに実行するモジュールが指定されているのですが、そこを「クラスの総数を表示するプラグインのモジュール（CountClassAction）」にすべく、一部を書き換えました。

＜書き換え前＞
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/310284c5-30c8-cc5e-45fd-457eac6d0a04.png)

＜書き換え後＞
16行目だけ、新しいクラス用に変えました。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/6a0a1f84-1d08-f942-d8bb-6a4e098d4a90.png)

※メニューが二つ出るようにしたかったのですが、複数のメニューを表示する方法が分かりません...。

##ビルドしてみる
「> astah-build」すると、エラーの嵐。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/4885d5c0-0a0e-b931-0315-cb461cfe2481.png)
どうやら、コピペしたコードの先頭にあった/* ～ */のコメントがだめらしい。

一番上のコメント群を削除。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/98911daf-feff-b9ff-2fbf-457a604f9883.png)

あと、plugin.propertiesを編集すると書いてあるので、チュートリアルに従って、最終行（8行目）に記述を追加。
ただし、このファイルも2か所にあるので、要注意。下図のエディタ画面のファイルパスにあるファイルが正解。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/967a520d-058a-a063-17f9-ae560df8bff8.png)

その後、「> astah-build」と「> astah-launch」を実行すると、
astahのメニューから新しいクラスの機能を実行できます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/197297/0a8c153e-142a-239f-b880-5340ee2f8228.png)

いきなり実行結果が出てきました。

おぉ、ちゃんとastahのAPIを叩いて動作しているようです。

#最後に
記録しながら進めたのですが、やってみると意外と簡単です。
次は、APIをもっと本格的に叩きながら、それを記事にしたい思います。

乞うご期待です。