Index: [Article Count Order] [Thread]

Date:  Wed, 03 Mar 2004 12:30:02 +0900
Subject:  【オブジェクト倶楽部: 2004-08 号】

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.36 2004/03/03

■ I N D E X
┃
┣【UML入門】UML2 ピンポイント解説[2]
┣【ツール】Mavenではじめるプロジェクトドライブ[1] - Mavenって何?
┗【アンケート】気になるシステム業界 ホントのところ

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【UML入門】UML2 ピンポイント解説[2]

今回は、UML2の仕様の中で、特にクラス図について変わった点を2つ紹介しま
す。

1)プロパティという概念

クラス図の中に書かれる「属性」と「一方向の誘導可能性を持つ関連」は、
「プロパティ」という1つの概念が、別の表現方法によって表示されてたもの
である、という定義に変更されました。

┏━━━━━━━━┓
┃ チーム    ┃
┣━━━━━━━━┫
┃メンバー: 人[*] ┃
┗━━━━━━━━┛
属性を使ったプロパティの表現

┏━━━━━┓ メンバー┏━━━┓
┃ チーム ┣━━━━>┃ 人 ┃
┗━━━━━┛       *┗━━━┛
関連を使ったプロパティの表現

上記、2つの表現は、同じ意味を表しています。
実装向けのクラス図だと、上記はとても納得が行きますね。

2)必要なインターフェイス(required interface)

これまで、インターフェイスを「提供する」という記述は描けましたが、イン
ターフェイスを「必要とする」という特別な記述はありませんでした。以前は、
一般的な依存の - - - -> と矢印をインターフェイスに向けて描いていました。

UML2 では、丸いインターフェイスの記号をちょうど受けるような形で、「必要
とする」インターフェイスを書きます。

━○ 提供するインターフェイス(provided interface)
━C 必要とするインターフェイス(required interface)

   
この2つが、蝶番(ちょうつがい)のように組み合わされば、そのインターフェ
イスを通じて、2つのクラスを結合することができます。

これを使うと、例えばテレビが信号用の同軸ケーブルインターフェイス(RG58)
を必要としており、アンテナがこれを供給する、というようなクラス構造を以
下のように表現できます。

┏━━━┓      ┏━━━━┓
┃テレビ┣━━C○━━┫アンテナ┃
┗━━━┛  RG58  ┗━━━━┛

(本来Cが○の左半分を覆うように噛み合って書かれます。)

今回は、第2回目として、クラス図の大きな変更について書きました。クラス図
は、UML2の中ではまだ変更が少ないものです。次回からは他の図についての大
きな変更を見ていこうと思います。(平鍋)
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?C002+1+0
普通:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?C002+1+1
イマイチ:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?C002+1+2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【ツール】Mavenではじめるプロジェクトドライブ[1] - Mavenって何?

本連載の目的

本連載では、Apache Software Foundationで開発されているMaven ^1 という
ツールを利用し、プロジェクトをいかにドライブしていくかを、皆さんに御紹
介していきます。『プロジェクトのドライブ』という言葉は若干抽象的ですが、
本連載の具体的な目的は以下の内容です。

 1. プロジェクトの情報の明確化
 2. プロジェクトの成果物生成支援
 3. プロジェクトの管理支援

連載は数回を予定していますが、Mavenのバージョンアップや新機能の追加など
に応じて変更できればと考えています。

ありがちな問題

さて、皆さんは、今までいくつものシステム開発のプロジェクトを経験してき
たと思います。その中でこんな問題に直面したことはありませんか?

 ・ 開発環境を構築するだけで丸一日かかってしまった(時間の無駄無駄ァ)
 ・ 一介のプログラマなのでプロジェクト全体の規模が見えない(今全体のどの
    辺りなんだろう?)
 ・ 途中参加のプロジェクトで文書も情報もなくて途方に暮れてしまった(結局
    ソース見るんだけど...)
 ・ 誰がいつ何を作っているのか、よくわからない(管理者は知ってる?)
 ・ Antでいろいろなタスクを使おうと思ったけど、面倒でやめてしまった(XML
    長げーよ!)
 ・ プロジェクト始まる度に毎回毎回同じようなツール準備してるような...
    (しかも面倒)
 ・ etc...

実は、上記は筆者の体験でもあります。多かれ少なかれ、皆さんも似たような
経験をされているのではないでしょうか。いずれの問題も、その時は困ります
が、とりあえずなんとかなってしまうため「仕方ない、そんなもんだ」と考え
てしまってはいませんか?筆者も以前はそうでした。

そこでMaven

Maven ^2 はJakarta ProjectのTurbineプロジェクトの成果物として開発されま
した。現在はAnt ^3 と同様に、Jakartaの冠をとって、Apache Software Foudation
直轄のプロダクトとして開発されています。Mavenとは「専門家、達人 ^4 」と
いう意味です。

Mavenは、不明瞭なソフトウェア開発プロジェクト、という存在をモデル化しま
した。そのモデルがPOM(Project Object Model)です。Mavenの考えるソフトウェ
アプロジェクトとは、大まかに次のような構造になっています。(U言語 ^5 ラ
イクに表記してみました。) このモデルを見ればおわかりになると思いますが、
Mavenの「プロジェクト」の定義は、プロジェクトが実施されている組織、ソース
リポジトリ、メーリングリスト、開発者、貢献者、ライセンス、依存ライブラ
リ、成果物の構築、各種レポートから構成されます。POMはproject.xmlという
XMLファイルに内容を記述することになっており、project.xmlは継承して再利
用することも可能です。Mavenはこのモデルを元に、プロジェクトに対して様々
な働きかけを行います。

=====================
    Project
---------------------
id String
name String
organization Organization
package String
description String
repository Repository
mailingLists           <>----> MailingList
developers             <>----> Developer
contributors           <>----> Contributor
licenses               <>----> License
dependencies           <>----> Dependency
build Build
reports                <>----> Report
properties             <>----> any element
=====================

Mavenの生い立ちからもわかるように、POMはオープンソースプロジェクトを意
識したモデルになっています。そのため、実際のシステム開発におけるプロジェ
クトの全情報がPOMに定義されているかというと、残念ながらそうではありませ
ん。Mavenはプロジェクトにとっての、万能薬にはなりませんが、問題を浮き上
がらせる試験薬、あるいは問題の防止をする予防薬としては十二分な力を秘め
ています。

Mavenの主な機能

一番抽象的なPOMの話が済みましたので、次はもっと具体的な話、つまり「Maven
で何ができるのか?」について紹介します。Mavenには様々な機能がありますが、
ここではMavenを3つの側面からみた機能について紹介します。

ビルドツールとして

Mavenはビルドツールという側面をもっています。これは同じApacheプロジェク
トであるAntがよりユーザフレンドリーになったツールであると考えてもらって
よいでしょう。それもそのはず、Mavenは内部でAntを使用しており、Antで使用
できる全ての組込ターゲットを直接使用できます。

さらにAntでは、拡張タスクとして提供されていた様々な機能を、Mavenではプ
ラグインという形で利用することができます。プラグインを利用する際には、
プロパティファイルを設定するだけでよく、専用のXMLの記述は必要ありません。
またプラグイン自体もコマンド1つでインストールすることができます。

プロジェクトサイトジェネレータとして

Mavenはプロジェクトサイトジェネレータという側面をもっています。Mavenは
POMに定義されている情報にアクセスして、HTMLとしてプロジェクトサイトを生
成することができます。生成されるHTMLにはPOMに直接記述している情報のほか、
ソースコードを利用して生成できるJavadoc、テストレポート、クロスリファレ
ンス、スタイルチェッカ、クラスの依存関係、リポジトリに関するCVS履歴、
ChangeLog、などなど、様々な情報が含まれます。これらのレポートもAntで使
用するようなXMLの記述なしに、プロパティファイルの設定だけで生成すること
ができます。

ライブラリ自動インストーラとして

Mavenはライブラリ自動インストーラという側面をもっています。MavenはPOMの
dependenciesで定義している依存関係のあるartifact(成果物、つまりライブ
ラリ)をリモートリポジトリより自動取得して、ローカルリポジトリにインス
トールする機能があります。

オープンソースで開発されているライブラリの他、独自のプロジェクトで開発、
使用しているライブラリも、自前のリポジトリを設定することで、同じ様に自
動でインストールすることができます。この機能のおかげで、プロジェクト毎
にライブラリを自前でインストールしたり、ライブラリ自体をCVSに格納せずと
もライブラリが利用できます。

今回のまとめと次回予告

今回はMavenの概要として、POMと実現可能な機能について触れました。次回は
Mavenの実際の導入について触れる予定です。(懸田)

[1] ちなみに読みは「メイバン」のようです

[2] http://maven.apache.org/

[3] http://ant.apache.org/

[4] 「達人プログラマー」の原著は「Pragmatic Programmer」なので違いますよ!

[5] http://objectclub.esm.co.jp/U-Language/
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?B003+0+0
普通:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?B003+0+1
イマイチ:
http://objectclub.esm.co.jp/cgi-bin/question.cgi?B003+0+2
 
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗気になるシステム業界 ホントのところ

たくさんのご協力、本当にうれしい限りです。
さて、今週は「プログラマ35歳定年説」のホントのところ。

  私、35歳すぎてもガンガンやってます!
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z001+2+0
  まだまだ定年じゃないって。
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z001+2+1
 どちらかと言うと違うんじゃ。
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z001+2+2
  年齢なんて関係なし。
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z001+2+3
  どちらかといえその傾向ありかも。
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z001+2+4
  全くもってそのとおり!
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z001+2+5
  私、35歳までに辞めました。。
     http://objectclub.esm.co.jp/cgi-bin/question.cgi?Z001+2+6
  ちょっと語らせて!
     editors@ObjectClub.esm.co.jp まで詳細を!!

アンケート結果はオブジェクト倶楽部HP上にて公開します。お楽しみに。
なお、前号「システム業界にいると目が悪くなる」の結果は公開中。是非ご覧
下さい。⇒http://www.objectclub.jp/ml-arch/magazine/question/index.html

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人です。
連続3週目の新連載の登場です。新連載に関しましてのご感想メール、ありがと
うございます。みなさまのご期待に応えるべく、これからも楽しいメルマガ作
りに励んでいきます。

「オブジェクト倶楽部カレンダー」4月までの電子データ公開です。ケースはあ
りませんが、こちらからダウンロード、印刷印刷してお使いください。なお、
5月のカレンダーは、4月最初のメルマガ発行日に公開予定です。お楽しみに。
  http://objectclub.esm.co.jp/calender/2004/
   
今週の強引な一言
*** 経験は馬鹿をも賢くする(ことわざ)***
はじめから出来ない、分からないとあきらめていたことも、実際に身体を動か
してみることで、理解できることもあります。
(さとみ)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
● ご意見、ご感想は         ⇒このメールに返信ください
〇 配信中止、アドレス変更は ⇒http://www.ObjectClub.jp/mlmagazine_help.html
〇 免責事項、過去の記事は   ⇒http://www.ObjectClub.jp/mlmagazine.html
■ 発行:オブジェクト倶楽部 ⇒http://www.ObjectClub.jp/
■ 編集代表:平鍋  健児
Copyright (c)2003-2004 オブジェクト倶楽部. All Rights Reserved.
powered by Eiwa System Management, Inc.