ArchGenXML
ArchetypesのソースコードをUMLのクラスから生成する便利(らしい)ツール、ArchGenXMLのインストールと実際に使用する手順について説明します。
ArchGenXML はUMLでクラス図を書いて、そのクラス図を元にして Archetypes を使用した独自アイテムを生成するためのツールです。
目次
- 概要[overview]
- UMLツール[umltool]
- インストール[install]
- ArgoUML[argouml]
- インストール[install]
- Python for win32[pywin32]
- PyXML[pyxml]
- i18ndude[i18ndude]
- strip-o-gram[stripogram]
- ArchGenXML[archgenxml]
- 使い方[usage]
- アイテム生成[generate]
- クラス図作成[class]
- プロダクトを生成[archgen]
- プロダクトをインストール[installproduct]
- 終わりに[end]
概要[overview]
ArchGenXML は Archetypes をより便利に使うためのツールです。
ArchGenXML はコマンドラインのツールで、XMI 形式で記述された UML のクラス図から、Archetypes のフレームワークを元にした Plone 用のプロダクトを生成します。
ただし、このツールは XMI ファイルから Plone のプロダクトを生成する、一方向の処理しか行なえません。 プロダクトの Python ソースコードを修正し、その変更をクラス図に反映させるということができません。
UMLツール[umltool]
ArchGenXML は下記のツールが出力した XMI ファイルでテストしています。
- ObjectDomain (商用、デモ版もあり)
- Sybase PowerDesigner (商用、デモ版あり)
- ArgoUML (BSDライセンス)
- Poseidon (商用)
- Umbrello (フリーソフトウェア)
ArgoUML[argouml]
クラス図を記述するためには、UMLの描画ツールが必要ですが、ここでは ArgoUML を使用します。
他にも XMI (XML Metadata Interchange) 形式で保存できるツールであれば対応できると思いますが、確認はできていません。 例えば、 Eclipse + EclipseUML の組み合わせでも XMI 形式で保存できるようです。
ArgoUML のインストールは簡単で、まず ArgoUML の最新版(ArgoUML-0.19.5.zip)をダウンロードします。
次に、ダウンロードしたファイルを解凍し、適当なフォルダ(C:\Program Files\ArgoUML 等)に置きます。
Javaの環境があらかじめインストールしてあれば、argouml.jar ファイルをダブルクリックすると ArgoUML が起動します。
インストール[install]
次に、ArchGenXML をインストールします。
ArchGenXMLを使用できるようにするためには、下記のツール、ライブラリが必要になります。
- Python: ArchGenXML は Python プログラムのため、Python の実行環境が必要です。
- PyXML: XMI ファイルの解析のために必要なライブラリです。
- i18ndude(オプション): 国際化するために必要なライブラリです。
- strip-o-gram(オプション): HTMLから文字列を抜き出すために使用するライブラリです。
Python for win32[pywin32]
Windows環境でPython言語を利用できるようにするために、 Python 日本語環境用インストーラ(Win32) をインストールします。 最新版 python234jp-20040927.exe をダウンロードして実行し、インストーラの指示に従ってインストールします。
PyXML[pyxml]
次に、Python プログラムで XMI ファイルを解析できるようにするために、 PyXML (XML package for Python) をインストールします。
Windows環境の場合は ダウンロードページ から最新版の PyXML-0.8.4.win32-py2.3.exe をダウンロードして実行し、インストールします。
i18ndude[i18ndude]
i18ndude は plone-i18n で開発されている、国際化(i18n: internationalization)のための ライブラリです。
i18ndude をインストールすると、プロダクトを自動生成するときに国際化のための pot ファイルを生成したり、Page Template に国際化のためのコードを埋め込んでくれます。
i18ndude をインストールするには、Releases から最新版 i18ndude-2.0.tar.gz をダウンロードします。
ダウンロードしたファイルを解凍し、コマンドプロンプトで展開したディレクトリに移動し、下記のコマンドを実行してインストールを行ないます。
> c:\Python23jp\python setup.py install
strip-o-gram[stripogram]
strip-o-gram は Squishdot プロジェクトで開発されている、HTML タグを除去するためのライブラリです。
いくつかの UML ツールでは、ドキュメントに HTML を使用しているため、HTML タグを除去するために strip-o-gram をインストールする必要があります。
strip-o-gram をインストールするには、ダウンロードページ から最新版 stripogram-1-4.tgz をダウンロードします。
ダウンロードしたファイルを解凍し、コマンドプロンプトで展開したディレクトリに移動し、下記のコマンドを実行してインストールを行ないます。
> c:\Python23jp\python setup.py install
ArchGenXML[archgenxml]
最後にArchGenXML をインストールします。
Releases
から最新版の
ArchGenXML-1.4.0-final.tgz
をダウンロードして展開し、適当なディレクトリ(C:\Program Files\ArchGenXML 等)に配置します。
使い方[usage]
ArchGenXML のコマンドラインでの使い方は以下のとおりです。:
Usage: ArchGenXML.py -o <target>|-c <configfile> [ options ] <xmi-source-file>
例として、以下のように実行します。:
./ArchGenXML.py -o MyNewProduct mynewproduct.xmi
アイテム生成[generate]
次に、ArchGenXML を使用して新規にアイテムを作成する手順について説明します。
クラス図作成[class]
ArgoUML 等の UML ツールを使用してクラス図を記述します。この際に重要な情報は、クラス名とプロパティ名です。 この例では、 Diary という名前の写真付き日記を保存するためのクラスと、 複数の Diary を集約するための DiaryFolder というクラスを定義しています。
次に、作成したクラス図をXMI形式で保存します。
ArgoUML の場合は Tools → Export as XMI... メニューを選択して保存します。
この例では、diary.xmi というファイル名で保存します。
以下に、この日記プロダクトのクラス図が定義してあるファイルへのリンクを載せておきます。
- diary.xmi 日記プロダクトの XMI ファイル
- diary.zargo 日記プロダクトの ArgoUML プロジェクトファイル
プロダクトを生成[archgen]
次に、出力された XMI ファイルを元に、プロダクトを生成します。
下記のコマンドを実行すると、Diary というフォルダが自動生成され、クラスを定義した Python のコード等が作成されます。
c:/Python23jp/python ./ArchGenXML.py -o Diary c:/takanori/tmp/diary.xmi
プロダクトをインストール[installproduct]
あとは、できあがったソースファイルを zope のプロダクトとしてインストールします。 zope サーバを再起動すると plone のインストール可能なプロダクトとして表示されます。
あとは、通常のプロダクトと同じようにインストールすると使えるようになります。
正常にインストールされると、下記の様に Diary, DiaryFolder アイテムが追加可能になります。
DiaryFolder アイテムの編集画面の項目はクラスで定義したものが反映されていることが確認できます。 また、このアイテムの下に追加可能なアイテムとして Diary アイテムのみが選択可能になっています。
同様に、Diary アイテムの表示画面でも、クラスで定義した属性が反映されていることが確認できます。
終わりに[end]
ここまでの説明で、とりあえず ArchGenXML を使ってプロダクトを作成することはできます。
しかし、実際にプロダクトを作成する際には、Widget の表示方法を細かく指定したり、デフォルトの値を設定したり等いろいろ細かい指定が可能です。
そのあたりを UML ツールで記述する場合は Tagged Values という項目として、 パラメータと値を設定するようになっています。
設定できる項目の詳細については、今後まとめていこうと思います。