オープンソースUMLエディタは、有力なプロプライエタリ版に劣る

オープンソースプロジェクトへの参加者が最初にする作業は、普通、ソースをダウンロードして、研究することである。これはときにうんざりするような作業で、プロジェクトの規模が大きくなるほどその傾向も強まる。

リーダーがプロジェクト全体のグラフィカル表現でも用意してくれていれば、現参加者は開発中のソフトウェアの全体像を見失わずにすむし、将来の参加者はソフトウェアの部分間の相互関係を視覚的に把握できる。現にほとんどの市販ソフトウェアでは、開発者どうしがそのようなグラフィカル表現を――それも、UML(Unified Modeling Language)という標準的な方法で――共有できるようになっている。これに対し、オープンソースプロジェクトの最大リポジトリを標榜するSourceForge.netで探しても、ソフトウェアをUMLで記述しているオープンソースプロジェクトは数えるほどしかない。この理由の一部は、OSS UMLエディタの力不足に求められる。

UMLはダイアグラムを定義し、そのダイアグラムによって、クラス構造から、個々の手続き的活動、クラス間のコラボレーション、ときにはソフトウェアの最終的配備方法に至るまで、ソフトウェアのほとんどの側面を記述できる。

以下では、いくつかの人気UMLエディタについて、その備えている諸機能を見ていくことにする。とくにユーザインタフェースのルック&フィール、コード生成とコードインポートのサポート、最新UML標準への準拠、環境との統合の4点に注目し、UMLエディタの事実上の標準とも言われる市販のRational Roseと比較してみよう。

Rational Rose

なぜRational Roseと比較するのだろうか。第1の理由は、Rational RoseがUMLモデリングに適した直感的インタフェースを備えているだけでなく、そのモデルを実際のソースコードに変換する機能を持っていることである。開発者は、プロジェクト全体をクラスダイアグラムとして概念化できるだけでなく、そこから直接にソースコードを生成できる。生産性が上がり、開発者の時間の節約になることは言うまでもない。

Rational Roseは、いくつかの主要プログラミングフレームワークのためのコード生成をMicrosoft Windows上でサポートする。サポートされるフレームワークには、Microsoft社のVisual BASIC 6とVisual C++ 6(ATLとMFC)、.NET Framework、J2EEとJ2SE、などが含まれる。各IDEとの統合もできる。

Rational Roseは、レガシーコードのリファクタリングやリバースエンジニアリングにも役立つ。開発者は、上記フレームワークで書かれたソースコードをインポートし、UMLモデルに変更を加えたのち、そのソースコードを再生成する。こうして得られたソースに多少手を加えれば、新しいソフトウェアができあがる。XMLのDTD(Document Type Definition)でもリバースエンジニアリングと再生成ができる。

見るだけで恐れ入るほどの機能リストである。オープンソースUMLエディタはこれに太刀打ちできるだろうか。

Umbrello

Umbrello UMLモデラは、KDEデスクトップに付属するツールであり、最も機能豊富なオープンソースUMLエディタの1つである。最新のUML標準であるUML 2.0仕様のほとんどをサポートしている。ActionScript、Ada、C++、CORBA IDL、Java、JavaScript、PHP、Perl、Python、SQL、XMLSchemaのコード生成をサポートするが、このうち、本格的なソフトウェア作成に使える言語はC++、Java、Pythonの3つだけなので、本当の意味で役に立つのも、この3言語のコード生成に限られる。リバースエンジニアリングとコードインポートは、C++コードについてのみサポートされる。ユーザインタフェースは、Rational Roseに似ている。

オープンソースソフトウェアには珍しいほど、ドキュメンテーション(Umbrelloハンドブック)が充実している。しかし、KDEとの統合を欠いている点が、やはり最大の欠点だろうか。TrollTech Qtへのサポートはなく、KpartsなどのKDE技術もサポートされていない。KDEの標準IDEであるKDevelopとの統合もない。あくまでもスタンドアロンプログラムであり、UMLモデルの保存も独自フォーマットで行う。そのフォーマットは、Rational Roseとも他のオープンソースUMLエディタとも整合性がない。大きなマイナスだろう。

ArgoUML

ArgoUMLは、JavaベースのUMLエディタである。したがって、特定のデスクトップ環境やプラットフォームには依存せず、JRE(Java Runtime Environment)さえあれば、いかなるプラットフォームでも使用できる。インタフェースは、Rational RoseやUmbrelloに似ている。

ArgoUMLに特徴的な機能として「論評」がある。プログラム設計の観点からUMLダイアグラムを論評する。開発者はそれを参考にして、ダイアグラムの質を高めていくことができる。

ArgoUMLは、UML 2.0仕様をほぼ完全にサポートしている。コード生成のサポートはJavaのみで、インポート機能はない。ドキュメンテーションもまったくない。

ただし、ArgoUMLはいま急速に発展しているプロジェクトで、プラグインや拡張機能が数多く存在する。たとえば、OpenOffice.orgのプラグインがあって、UMLダイアグラムをOpenOffice.orgドキュメントにリンクさせ、ソフトウェアのドキュメンテーションを簡単に作成できる。また、ArgoUMLからC#コードを生成するための拡張機能もある。

GaphorとMonoUML

GaphorはGNOMEデスクトップ用のプロジェクトであり、位置付けはKDEに対するUmbrelloに似ている。活動はしているが、まだ開発の初期段階にあり、1.0リリースにも到達していない。GNOMEデスクトップ用に開発されているツールのなかで、UML 2.0仕様(の大部分)をサポートしているのはGaphor以外にない。しかし、これまでのところ、コードの生成やインポートはサポートされていない。

MonoUMLはMonoフレームワークの一部であり、現在、活発な開発がつづいている。C#のコード生成機能とリバースエンジニアリング機能を持ち、将来的にはMonoフレームワークに完全に統合される予定である。

結論

ほかにもいろいろなオープンソースUMLエディタがあるが、上記4つが最も有望だと思う。現在のところRational Roseの物まねに汲々としている感のあるオープンソースUMLエディタだが、いずれ、GTK、TrollTech Qt、Kpartsといったオープンソース技術のサポートや、それぞれのデスクトップ環境との統合に独自性を見出していくことになろう。そうした機能を完備して初めて、OSS UMLエディタはOSSソフトウェア環境で広く使われるようになると言える。そのとき、オープンソース開発者の生産性は高まり、作成するソフトウェアの品質も向上するだろう。

原文