コードの生産性向上にUMLを生かす
〜JavaプログラマのUMLツール活用事例〜


UMLを上流の設計だけでなく、プログラミングの生産性向上にうまく生かす方法がある。開発の現場で実践している3社のベンダやデベロッパーの取材を通し、その活用法を紹介しよう(編集局)


川村由美子
2004/5/14

 UML(Unified Modeling Language)は、システム開発における設計、分析などの上流工程において活用されるもの、と語られがちである。UMLはシステムまたはビジネスそのものを「モデル化」して表現するための言語であるので、それは間違った認識ではないのだが、UMLがプログラミングの工程において積極的に活用されることはないのだろうか(もちろん、モデルをコードに落とす部分ではUMLを理解している必要があるが)。

 システムの再構築、オフショアといった事例が増える中で、設計フェイズだけでなく、すでに存在するソースコードをどう活用するか、設計の固まったシステムをどう効率的に開発するか、といった側面でのUMLの活用が始まっている。また、UMLの使用が急速に広がる背景には、Eclipseをはじめとするオープンソースの開発ツール(この場合プラグインを使用)や、IBMのRational Rose、ボーランドのTogether ControlCenter(以下TCC)(またはTogether Edition for JBuilder)といったUMLツールが充実してきたという実態がある。

 実際にUMLを活用している数社に、UMLおよびツールの使い方についてお伺いした。どんなプログラミング言語・表記法もその内容が整備されただけでは、実際に開発現場で使用されるまでには至らない。エディタやデバッガなどの環境が整って初めて、開発現場に生かされることになる。同様にUMLもまた、ツールの整備が必要不可欠とはいえないか。取材先では、たまたまTCCの利用が多かった。本稿では、UML、そしてツールをプログラミング工程でいかに活用できるかについて紹介したい。

 既存のシステムが素早く理解できる

 インディゴ株式会社では、近年、PC向けのサービスを提供するためにすでにサービスインしていたシステムを、携帯電話にもサービスを提供できるものに作り替えるという案件が増えているという。同社 取締役 技術統括責任者 大島智樹氏は、ここでのTCCの活用について次のように述べている。

 「こうした案件では、ほとんどのケースで仕様書がありません。ソースコードを一からすべて読んでシステムの中味を理解するのは不可能です。そこで、まずはソースコードをすべてTCCに取り込みクラス図を生成させます。そこから実装がどうなっているかを理解して、作業を進めます」

ボーランドのTogether Edition for JBuilder X Developer。上にクラス図、下にコードが表示され、リアルタイムに同期されている
(クリックすると拡大します)

 同様の発言は、ほかの開発現場からも聞こえてくる。株式会社パロアルト、代表取締役副社長の朽木明彦氏も、単に仕様書作成のためのリバースエンジニアリング目的では使用していないと前置きしたうえで、次のように語る。

 「カットオーバー前に頓挫したリカバリの案件で他社のソースを取り込む場合、TCCを使うことがありますね。ソースを1行1行見るよりも、最初にざっくりと見通しを立てられますので、何もないところから始めるよりは、時間の短縮になります」

 両社とも、既存のシステムに手を入れるケースを多く手掛けているとのことだが、すでにソースプログラムが存在する事例では、解析のフェイズが短縮できるという点で、ツールが欠かせないものになっているようだ。

 仕様を正しく表現する

 日本ヒューレット・パッカード株式会社 コンサルティング・インテグレーション統括本部 ビジネスインテグレーション本部 Webサービスソリューション部 部長 鈴木康之氏は、UMLツール導入の意義、そしてTCC導入の判断ポイントについてこう述べている。

 「ソースコードとドキュメントが一致しているという点。これはビジネスシーンでは欠かせない重要な問題です。お客さまの要求は、要件定義が終わった時点ですべてが終わりではなく、開発のライフサイクルを通じて必ず変更が入ってきます。本来は変更の都度ドキュメントを変更し、その後でコードを変更する、ということが必要になります。しかし現場を見ていると、やはり忙しいということもあって、ドキュメントは後回しになってしまい、出来上がったコードとドキュメントが大きく異なる事態を招きます。この点、TCCを使えば、最後にドキュメントと実装の完全一致を行えます」

 一方、インディゴの大島氏は、次のようなTCCの特徴を挙げ、通常は難しい実装の把握に活用している。

 「インターフェイスの定義とクラスの実装の関係は、通常同じ図で見ることはできません。インプリメンテーションとインターフェイスがどうつながっているかは、クラス図からは分からないのです。パッケージが異なれば、完全に分断された図になってしまいます。しかし、TCCを使うと、インターフェイスの定義とクラスの実装をひも付けた図を生成してくれるので、一目瞭然に確認できます」

 インディゴが実感するUMLのメリットには、同社が求める開発スタイル、XP(eXtreme Programming)を後押しする役割もあるようだ。「わが社ではXPを推進したいと考えています。2人でペアプログラミングを行う際、TCCを使えばコードとUMLを併せてレビューできるので、情報の共有が早いのです」

 品質の平準化のために活用

 多くの開発事例を見てきた開発者からは、品質の維持や、顧客とのミーティングといった観点から、次のような意見が出ている。日本ヒューレット・パッカード HPサービス事業統括 システム統括本部 ビジネスインテグレーション推進本部 担当マネージャ 岡村浩明氏は、社内での開発環境整備に取り組んでいる。その中でUMLはどのような位置付けなのか。

 「われわれは現在、社内でプロジェクト開発技術委員会(PDC)というものを立ち上げ、アプリケーション開発の共通の枠組み作りを推進しています。その目的は、属人性、つまりは人によってやることにばらつきが出る、ということを少なくするために統合開発環境を作ることにあります。その中での方法論が、オブジェクト指向に基づくUMLの導入です。人によってスキルに差もありますし、人に左右されないで一定した品質と開発効率を確立するためには、共通のツールや環境の整備が不可欠になりますから」

 すなわち、UMLの導入が必須事項であると同時に、共通のツールを利用することでスキルの平準化を図る必要があるというわけだ。

 UMLの意義についてその他の現場の声は

 取材の中で、プログラミングの工程以外でのUMLの意義についてもさまざまな声を聞いた。貴重な発言なのでここで紹介しよう。パロアルトの朽木氏は、問題の収束しないシステムにはレビューが欠けていると指摘したうえで、UMLの本質的なメリットを次のように述べている。

 「顧客との打ち合わせにUMLを使用する中で、副産物としてのUMLのメリットというか、本質に気付くようになりました。それは、顧客のビジネスモデルをUMLを使って議論することによって、顧客自身がビジネスの中での無駄や足りない点が分かるようになったということです。システムを作ることとは別に感謝されるようになりました。技術者よりもむしろ顧客の側が、UMLと知らずに活用しているのかもしれません。UMLは議論をするときの共通のコミュニケーションメディアとして、技術者のみならず、顧客にとっても欠かせないものになっていくでしょう」

 また、日本ヒューレット・パッカードの鈴木氏は、オフショアのいけるUMLの意義について次のように述べている。

 「オフショアとのやりとりの際、仕様を書く際に自然言語を使うと“あいまいさ”が発生します。情報が正確に伝えられない。その点UMLで書くと、かなり明確に伝えられます。それに、プロジェクトメンバーの中に、常に日本語が話せる人を入れるというのは、コストメリットがなくなることを示します。実は、詳細設計、実装、単体テストの辺りというのは、一番人間のボリュームが掛かる部分でもありますから、ここをオフショアに出して、上流工程の方へわれわれのバリューを置きたいと考えています」

 すなわち、UMLを道具として使いオフショアを成功させ、自分たちのバリューは設計や新しいテクノロジの開発といったクリエイティブな部分に置きたいというのが狙いだ。

 なぜ有償ツールを使うのか?

 今回の取材の趣旨とは違うが、数多くの無償UMLツールがある中で、なぜ有償製品を使うのかについて興味深いコメントをちょうだいしたので紹介しよう。パロアルトの朽木氏は、TCCを利用する理由について次のように語った。

 「まずは、インストールが簡単なところです。コスト面でいえばEclipseにはかなわないですが、EclipseはUMLのプラグインを自ら入手し組み込む手間があり、環境を整えるのに意外に時間がかかります。環境作りに時間がかかってしまうと、結局はコスト高ということになってしまうわけですから、多忙な会社にとってこの点は重要です。もう1つは、JBuilderとの親和性です。JBuilderは、StrutsやJUnit、Antなどのオープンソースへの対応が早いので、結果として最先端の機能がすぐに取り込まれることになります。また、さまざまなアプリケーションサーバとの連携についてはすでにテストされた状態で出荷されているので、例えば納期直前になって、環境の問題で3日間もはまるといったことを防げます。この3日間のコストを考えれば、ツールのライセンスは安いとみています」

 UMLを活用するプログラマは、開発に追われる現場でこそ、UMLが威力を発揮することを実感している。UMLを導入する案件が増えた結果、必要に駆られて使用している、といった消極的な理由以上に、プログラマにとってUMLを使うメリットは大きい。プログラミングの現場でも、UMLは強い味方になるようだ。

 



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間