スクリプトエディタを使ってみよう – その1 –

こんにちは、astah*開発チームのりりぃです。

皆さんスクリプトエディタはお使いいただいていますか?
インストールの手間なく便利に使っていただきたくてastah* 7.2からインストーラーに同梱しました。
スクリプトエディタの説明には「astah*のAPI」だとか「スクリプト言語」だとか難しそうな言葉が並んでいますが、全然身構えることないです。この記事を読みながら、ぜひスクリプトエディタに触れてみてください。
もし同梱されていない製品をお使いでしたら、まずはインストールしてくださいね。

※この記事の内容は Java8 で動作するastah*(professional / UML / community のバージョン7.0以降、SysML のバージョン1.4以降、GSN のバージョン1.1以降)が対象です。
また、記事内のリンクは Java8 や、astah* professional / UML の現在の最新バージョンである7.2向けのものとなります。


簡単に使ってみる

では早速ですが、実行結果にHello World!と表示してみます。
astah*を起動してスクリプトエディタを表示し、エディタ部分にprint("Hello World!")と書いて実行ボタンを押してみてください。printメソッドを使うと文字列が実行結果に表示されます。

image13

文字列の部分を変数として抽出しても使えます。

image1

関数も使えます。3行目から6行目がprintMessage関数です。

image14

関数に引数を渡すこともできます。

image15

配列も使えます。
if文やfor文を用いて配列の中身を自在に書き出すこともできます。

image4

このようにスクリプトエディタ ではJavaScriptで記述して実行することができます。上の書き方は一例ですので、 もっと良い書き方があるかもしれません。


Javaのクラスを使ってみる

ユーザーホームのパスを表示したいので System クラスを使ってみます。
getProperty(String key) にuser.homeというキーを渡すとユーザーホームのパスを取得できます(他のキーについても getProperties() に詳しく書いてありますね)。

Java.type('java.lang.System')と書くと System クラスを利用することができます。

image5


astah* API を使ってみる

astah* にはastah*を操作するための astah* API が用意されています。
astah* を起動せずにプロジェクトの内容を書き換えたり、プロジェクト内のモデルの内容を書き出したりなど様々なことが行えるのですが、 スクリプトエディタ でも利用できるAPIがたくさんあります。


定義済み変数「astah」を使う

スクリプトエディタ 内で astah* API の ProjectAccessorastahとして定義してあります。
定義済み変数「astah」を使ってみましょう。

getAstahVersion()を実行するとastah*のバージョンを取得することができます。

image6

ProjectAccessor にはほかにもいろんな操作があるのでいろんな情報を得られますよ( クラス図 )。

image7


未定義のクラスを使う

定義されていないクラスはJavaのクラスを使ってみるの方法で使用することができます。

※ ここからはエディションが professional / UML / community である場合のみ実行できる内容になりますが適宜読み替えてください

下準備としてastah*で新規プロジェクトを作成し、適当なクラスをいくつか作成しておきましょう。

image8

定義されたastah変数(ProjectAccessor)のfindElements(Class elementKind)を用いてプロジェクト内にあるクラスをすべて検索します。
このメソッドを利用するためには引数にクラスの elementKind を渡す必要があります。
astah* API 利用ガイドの対応モデル一覧を見るとクラスのモデルは com.change_vision.jude.api.inf.model.IClass であることがわかります(ただしこのページを見てわかるように、インタフェースなども入ります)。

image9

階層等を無視してクラスを検索することができました。


サンプルプログラムを動かしてみる

もっと高度なことをされたい方は スクリプトエディタで、すぐに使えるサンプル集を見たり動かしたりして研究してみてください。
どんな感じのことができるのかなんとなくわかると思います。


来月になったら続きの記事を書きたいなと思っています。もっと難しいこともやってみましょう。それではまた!

 

 


関連記事

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s