Date:  Wed, 02 Aug 2006 15:33:42 +0900
Subject:  【オブジェクト倶楽部: 2006-29号】
X-Mail-Count: 00156

       ┏━━━━━━━━━━━━━━━━━━━━━━━━━━■
       ┃                         ■┃
      ●┃● ● オ ブ ジ ェ ク ト 倶 楽 部   ■ ┃
       ┃                       ■  ┃
       ┗━━━━━━━━━━━━━━━━━━━━━━■━━━┛
                          No.150 2006/08/02

■ I N D E X
┃
┣【Topics】PMシンポジウムで平鍋と上田が講演します
┣【ツール】PyUnitX - Python用のテスティングフレームワークの紹介
┣【プログラミング】Cayenneで始めるO/Rプログラミング[2]
┗【アンケート】気になるシステム業界 ホントのところ

〇━━━━━━━━━━━━━━━━━━━━━━━━━━━T o p i c s━
 〇 PMシンポジウムで平鍋と上田が講演します
  〇 〇━━━━━━━━━━━━━ ━━・ 
国内最大のPM大会であるPMシンポジウム2006が開催されます。
9月1日(金)に平鍋と事務局の上田がそれぞれ講演を行います。

残席も僅かとなっているようですので、ご興味がある場合には是非お早めにお
申し込みください。
PMシンポジウム http://www.pmaj.or.jp/sympo/2006/index2.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━1 s t ■━
■
┗【ツール】PyUnitX - Python用のテスティングフレームワークの紹介

今回初めてメルマガに記事を投稿させていただきます渋川です。オブジェクト
倶楽部の夏イベントのライトニングトークスで発表した、PyUnitXというツール
を紹介します。このメルマガを読んでいる方にはなじみが深いと思われる、ユ
ニットテストのフレームワークです。

日本では、ユーザ数的にはC#やJavaやRubyの陰になってしまうことの多いPython
ですが、当日の発表ではおかげさまで2位になりました。1位と比べると3倍近い
差で、完敗ではありましたけど。その後の懇親会などで使ってみたい、という
意見もちらほら頂きましたので、ちょこちょこバグ修正などを行いつつ、公開
の準備を進めて参りました。

ダイナミックDNSを使って自宅で運用しているサーバですので、不意に落ちたり
することもあるとは思いますが、とりあえず公開します。

http://pyunitx.shibu.jp

●PyUnitXとは?
名前を見て分かってしまう人も多いと思いますが、Python用のテスティングフ
レームワークです。すでにPythonの標準ライブラリにシンプルなものはあるの
ですが、あえて新規開発してみました。特徴は以下の通りです。

・デコレータを使用した、流行のテスト宣言スタイルを採用
・テスト駆動開発とビヘイビア駆動開発を同時にサポート
・ソースコードから情報を絞り出せ!見える化のサポート

ライトニングトークスの資料を見てもらえれば、これらの内容の紹介はされて
いますので、ぜひご覧下さい[*1]。

●開発状況
まだまだ発展途上です。トークスでデモを行った地図表示機能は、納得いって
いない所があったので全面改定中です。その代わり、メソッド呼び出しをツリー
で表示する機能なんかも入れてみたりしています。

●今後の展開
自分でも毎日使いながらちょっとずつ機能を追加しています。ドキュメントな
どの整備も進めて、オンリーワンなテスティングフレームワークを目指してい
こうと思います。まだ誰もやっていないような、効果があるかどうかも分から
ないものも含めて、ネタはいっぱいあります。(渋川)

[*1]:http://www.ObjectClub.jp/download/files/event/2006summer/LT_Shibukawa.pdf
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=B006-0&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=B006-0&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=B006-0&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━2 n d ■━
■
┗【プログラミング】Cayenneで始めるO/Rプログラミング[2]

あといくつ寝るとWWDC・・・何が飛び出すのか期待と妄想で涎がぁ・・・・・
まぁそんな変態マックヲタの話は置いておきまして、前回のメルマガが出たちょっ
と後、公式HPを見るとなんと「Apache Cayenne」[*1]となっているじゃないで
すか!?incubationなんですけどCayenneはめでたく(?)Apacheの仲間入りという
事で今後の発展により期待ですね。

さてさて前回はO/Rマッピングについて解説しただけで終わってしまったので、
今回から本格的に中身に入っていきたいと思います。CayenneはWebObjectsに影
響を受けたプロダクトなので、他のO/Rマッパーと決定的に違う点として、GUI
のモデラーがあるという事が挙げられます。
もし一度O/Rマッパーを使ったことがある方ならわかる、あのもう2度と目にし
たくないと言っても過言でない、データベースの定義とJavaのクラスをマッピ
ングするXMLファイルですが、Cayenneを使えばそんなものはクリック一発・・
とまでは言いませんが、マウス操作だけで楽々完了です。
では実際に試してみましょう。今回のシリーズはO/Rプログラミングの入門編な
ので、簡単にビデオレンタル店を想定して「貸出」、「ビデオ」、「会員」と
いうテーブルにしてみましょう。

まずテーブルを準備します。
「貸出テーブル」[*2]は以下の通りとします。

CREATE TABLE `lending` (
`videoId` varchar(10) NOT NULL COMMENT 'ビデオID',
`memberId` varchar(10) NOT NULL COMMENT 'ID',
`rentDay` date default NULL COMMENT '貸出日',
`returnDay` date default NULL COMMENT '返却予定日',
PRIMARY KEY (`videoId`,`memberId`),
KEY `fk_member` (`memberId`),
CONSTRAINT `fk_video` FOREIGN KEY (`videoId`) REFERENCES `video` (`id`),
CONSTRAINT `fk_member` FOREIGN KEY (`memberId`) REFERENCES `member` (`id`)
);

「会員テーブル」[*3]は以下の通りとします。

CREATE TABLE `member` (
`id` varchar(10) NOT NULL COMMENT 'ID',
`name` varchar(40) default NULL COMMENT '会員名',
`birthday` date default NULL COMMENT '誕生日',
PRIMARY KEY (`id`)
);

「ビデオテーブル」[*4]は以下の通りとします。

CREATE TABLE `video` (
`id` varchar(10) NOT NULL COMMENT 'ビデオID',
`title` varchar(80) default NULL COMMENT 'タイトル',
PRIMARY KEY (`id`)
);

ではこれをCayenneのモデラーで取り込んでみましょう。windows版をダウンロー
ドした人はbin\CayenneModeler.exeを実行します。
[File]-[New Project...]を選択して下さい。するといくつか入力する値が出て
きます。

DataDomain Name:「開発するシステムで使うデータベース名のようなもの」で
す。今回は「VideoRentalSystem」とします。

上記以外の値は任意なので、今回はとりあえずデフォルトのままとします。
続けて[Project]-[Create DateNode]を選択して下さい。
「DataNode Configuration」の部分はデフォルトのままでOKです。下にある
「JDBC Configuration」を設定してください。

JDBC Driver:例えばMySQLなら「com.mysql.jdbc.Driver」です。
DB URL:例えばMySQLなら「jdbc:mysql://localhost/video」です。
User Name、Password:DBにアクセスするユーザ名・パスワードです。

それ以外は引き続きデフォルトのままで良いでしょう。ここでデータベースの
接続を設定したら、使用するJDBCドライバにクラスパスを通して下さい。
[Tools]-[Preferences]を選択してください。ClassPathタブに選択を合わせて
[Add Jar/Zip]を使って、JDBCドライバのファイルを指定してください。
※重要です!ClassPathを指定した直後は一度保存してモデラーを再起動しない
といけないので、最初だけこの手順をふんでください。

さていよいよデータベースから定義を取得します。
[Tools]-[Reengineer Database Schema]を選択して下さい。確認ダイアログが
出ます。[Continue]ボタンを選択してください。
そうすると「Select Options」画面が出てきますので、デフォルトのまま
[Continue]ボタンを選択してください。
すると画面に「UntitledMap」が生成され、そのタブにフォーカスが移動します。
まずは名前を「VideoSystemMap」と変更しましょう。

続けてCayenneが自動生成してくれるクラスのパッケージ名を指定します。
「Entity Dafaults」の「Java Packages:」を編集します。今回は
「com.video.model」としてみましょう。バージョン1.2のモデラーは、個別の
テーブルにマップしたクラスのパッケージを変えられるようになっています。
VideoSystemMapの左の+マークを選択してください。Cマーク(クラスを意味し
ています)をそれぞれ選んで[Java Class:]の前にパッケージを付加して
「com.video.model.Lending」のようにしてみましょう。

ここまで設定すれば後は1クリックです。[Tools]-[Generate Classes]を選択し
てください。ソースコードを出力するディレクトリを選んだら、[Genarate]ボ
タンを選択してください。すると指定した保存先のルートに以下の6つのファイ
ルができます。

com\video\model\Lending.java
com\video\model\Member.java
com\video\model\Video.java
com\video\model\auto\_Lending.java
com\video\model\auto\_Member.java
com\video\model\auto\_Video.java

どうです?これで後はJavaのコーディングをするだけで、SQLを書くこともなく
XMLの設定ファイルを書くこともないのです。これらのクラスが何を意味するの
かも含め、いよいよ次回から実際のプログラミングに入っていきますのでご期待
ください。それまで今回使わなかったモデラーの機能をマニュアルを見て勉強し
てみてください。 (きしだ)

[*1]:URLが http://incubator.apache.org/cayenne/ に変更となりましたので
  ご注意ください。
[*2]:貸出テーブルのレコードは貸出中だけ存在し、返却されたら削除する事を
  想定しています。
[*3]:今回のレンタルシステムはレンタルに注目しているので、会員テーブルの
  入会に関連する情報は省略しています。
[*4]:実際は人気のソフトは何本もあるなぁとか細かい部分については今回入門
  編で使用する予定のない列は省略しています。
_______________________________________________________________________
この記事への評価にご協力をお願いします。
URLをクリックして、「ご協力ありがとうございました」のメッセージがご使用
のブラウザに表示されれば投票完了です。
良かった:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E010-1&choice=0
普通:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E010-1&choice=1
イマイチ:
http://www.ObjectClub.jp/community/object_ml/estimate?vol=E010-1&choice=2

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━3 r d ■━
■
┗【アンケート】気になるシステム業界 ホントのところ

今週は「地デジ対応済んでますか?」のホントのところ。現在行われている
アナログ放送は、BSも地上波も2011年7月には終了します。そのうちテレビを
買い換えなくちゃと思っているところなんですが、皆さんの予定は如何ですか?

既に対応済み(買替え済み)。
http://www.ObjectClub.jp/special/kininaru/vote?vol=116&choice=0
今度の冬のボーナスあたり。
http://www.ObjectClub.jp/special/kininaru/vote?vol=116&choice=1
2〜3年以内かなぁ?
http://www.ObjectClub.jp/special/kininaru/vote?vol=116&choice=2
2011年ぎりぎりまで頑張る。
http://www.ObjectClub.jp/special/kininaru/vote?vol=116&choice=3
今のテレビがが壊れたら。
http://www.ObjectClub.jp/special/kininaru/vote?vol=116&choice=4
今知った。
http://www.ObjectClub.jp/special/kininaru/vote?vol=116&choice=5
もうテレビなんて見ない。
http://www.ObjectClub.jp/special/kininaru/vote?vol=116&choice=6
それは秘密です。
http://www.ObjectClub.jp/special/kininaru/vote?vol=116&choice=7
ちょっと語らせて!
editors@ObjectClub.jp まで詳細を!!

アンケート結果はオブジェクト倶楽部サイト上にて公開します。お楽しみに。
なお、前号「タバコ、吸う人?吸わない人?」の結果は公開中。ぜひご覧下さ
い。
⇒http://www.ObjectClub.jp/special/kininaru/vol115/PlonePopoll_results2
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━--■--●--■
■
┗編集後記

こんにちは、編集人です。先週に引き続き、壊れモノシリーズです。この週末
は、私の生命線ともいえるコンタクトレンズが破れてしまい、困った目にあい
ました。ここ3年くらい買替えていなかったのですが、破れるときは本当に何を
したという訳でもなく、あっさりと破れるものです。私はあまりに目が悪く、
メガネを作ってもうまく視力がでなかったりするので、コンタクトレンズがな
いと本当に生活に支障がでてしまうのです。改めて今回視力を測ったら、左目
が0.05、右目が0.04という結果でした。週末だったため、すぐに買いに行けた
ので、あまり(自分的には)大騒ぎになりませんでしたが、本当に地震でもあっ
たらどうしようと、買替えするたびに思っています。そんな話をしたら、最近
流行りのレーシック手術やらない?って誘われたんですが…うーん、やっぱり
ちょっと怖いですねー。

今週の強引な一言
*** 馬には乗ってみよ、人には添うてみよ(ことわざ)***
使い古された技術だからと嫌がらず、実際に使ってみればその良さが分かるか
もしれません。また、聞きなれない技術や言語だからと遠巻きにせず、やって
みればその面白さや利点が見えてくるかも知れませんよ。
(まにわ)

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