トップページtech
988コメント450KB

eXtreme Programming

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
12のプラクティスがありますが、
実際実用的と思われるのはTesting, Refactoringの2つだと。
Cording Standardsは常識と考えればね。

XP全般について語ってもいいですが、
むしろTesting, Refactoringの二つをメインに語りましょう。
Testingのテクニックなんざをね。

参考URL:
http://objectclub.esm.co.jp/eXtremeProgramming/
0064デフォルトの名無しさんNGNG
>>32
http://cruisecontrol.sourceforge.net/
とか?
Martin Fowlerもお勧め(?)の由緒正しきtool

>>53
http://www.intellij.com/idea/
にあるJava用IDEのこと
この手のツールがあるとリファクタリングが楽になる
特に名前の変更やパッケージ移動に効果的
0065デフォルトの名無しさんNGNG
こんな本もあったんですね。

リファクタリング―プログラムの体質改善テクニック
Object Technology Series〈10〉

http://www.amazon.co.jp/exec/obidos/ASIN/4894712288/qid%3D989997569/249-9204487-7841920
0066デフォルトの名無しさんNGNG
>体質改善

そうか。XPのリファクタリングって、
UnitTestによって常時健康をチェックしながらの
きちんとしたダイエット、みたいなもんだったのか。

無理なダイエットはたしかに「体の機能を損なったり」するもんなあ(w
0067デフォルトの名無しさんNGNG
いいよねリファクタリング…

他人のソースを勝手に綺麗にするとか、
わざと適当に書いてあとから直すとか。
0068デフォルトの名無しさんNGNG
>他人のソースを勝手に綺麗にする

たしかに。あれ良いですよねえ。
「自分の責任で直せ」っていう言いまわしが
えらく古びたものに感じられる。

すると、コントリビューションみたいな形で労働を測るのかな(^^;
つまり、より多くの個所の改善(勿論改悪はマイナス点)を
行えた人が給料上がるみたいに。
0069弱い者の味方、NGNG
宣伝効果抜群の共有HP宣伝掲示板を27
個設置ししました。27個の共有HP宣伝
掲示板全部にカキコすればなんと1,000
以上の掲示板にカキコしたことに!!
効率よく宣伝しちゃいましょう。その
他みなさんのお役に立つサイトを徹底
して集めています。是非見てください。

http://home9.highway.ne.jp/cym10262/
0070デフォルトの名無しさんNGNG
69に引っかからないように。
0071デフォルトの名無しさんNGNG
次号の日経コンピュータ(6月4日号)の特集は、
「究極のソフトウェア開発手法〜エクストリーム・プログラミングの全貌」
だそうだ。
0072デフォルトの名無しさんNGNG
糞記事の予感・・・
0073デフォルトの名無しさんNGNG
>>72
誰が特集を書くのかにもよるな
0074デフォルトの名無しさんNGNG
>>68-69
そうかなぁ?

リファクタリングを傘に着て
「とりあえずテストは通ったんだけどリファクタリングしといてよ」とか
「お前がリファクタリングしたんだからお前の責任だろ!」とか
「あとでリファクタリングすればいいんでしょ。とりあえず動くんで」とか
「あいつにだけはリファクタリングさせるなよ。」とか
「あのひと納期も守らずいつもリファクタリングばかりしてるよね。」とか

手抜きと責任転化と自己満足の正当化に使われやしないだろうか?
0075デフォルトの名無しさんNGNG
>>74
誰が何処をどれだけ直したのか履歴が残ってて何時でも
参照、集計できるツールがあればよいと思われ。
CVSとスクリプトかなんかでできるかな?
0076デフォルトの名無しさんNGNG
>>74 >>75
XPやるのに構成管理ツールは必須だと思う
作業がループしがちな人には強権発動して担当部分以外は
ReadOnlyにしてます
0077デフォルトの名無しさんNGNG
「とりあえずテストは通ったんだけどリファクタリングしといてよ」
--> 殴る
「お前がリファクタリングしたんだからお前の責任だろ!」
--> よく考えてから殴る
「あとでリファクタリングすればいいんでしょ。とりあえず動くんで」
--> それなりに正しい態度だと思う あんまりなら殴る
「あいつにだけはリファクタリングさせるなよ。」
--> きたないリファクタリング(リファクタリングというのか?)
する人って見たことないけど,もしそうなら殴る
「あのひと納期も守らずいつもリファクタリングばかりしてるよね。」
--> XPの精神に反する行為なので殴る
0078デフォルトの名無しさんNGNG
>>75
CVSは知らないけど、VSSとRCS(^^;では、
CheckInのときにひとこと自己主張(笑)を書きこめるよね。

自分が厨房でないことを証明(?)したかったら
あそこに然るべき内容の有ることを書いて欲しいと思う。

白紙答案は禁止したいなあ。
0079デフォルトの名無しさんNGNG
Martin Fowler の Refactoringをよんだら、
smalltalkには、範囲指定→右クリック→メソッドを抽出
ってツールがあるみたい。
Javaにもリファクタリング関係のツールで便利そうなのありますか?
0080デフォルトの名無しさんNGNG
>>79
http://www.martinfowler.com/articles/refactoringRubicon.html
にでてるIDEAとJFactorとか
emacsにも何かあったような…
0081デフォルトの名無しさんNGNG
Delphi用Testing Frameworkリリースage
でも使い方がよくわからない。。。

719 ふみもたたけし  2001/05/21(月) 00:10
Delphi5用Testing Frameworkリリース。
http://members.jcom.home.ne.jp/monazilla/shortcuts/DUnit/DUnit010520.zip
http://members.jcom.home.ne.jp/monazilla/shortcuts/DUnit/DUnit010520.png

まだドキュメント書いてないので使い方わかんないと思うけど、
興味ある人はtestDUnit.pasを眺めててください。
0082デフォルトの名無しさんNGNG
JUnitというのをダウンロードしたのですが、
ドキュメントの説明が長くて、いまだに動かせないです。

これって自作のテストクラスから判定を受け取って、
赤か緑を表示する機能のほかにいいことあるんでしょうか?

Javaな人はテストツール何をお使いでしょうか?
0083デフォルトの名無しさんNGNG
まず、JUnitの場所を教えてちょ
話はそれからだ
0084デフォルトの名無しさんNGNG
http://www.junit.org/
0085デフォルトの名無しさんNGNG
>>82
>これって自作のテストクラスから判定を受け取って、
>赤か緑を表示する機能のほかにいいことあるんでしょうか?

コマンドラインでも使えるが・・・。
そういうことではないの?
0086デフォルトの名無しさんNGNG
まだ使いはじめだからはっきりしたことはいえないんだけど、
自作のテストクラスを作ることで、テストに必要な機能はほぼ完了しているから、
わざわざJUNITを使うまでも無いような気がする
0087デフォルトの名無しさんNGNG
>>86
JUNIT使うようになったら自作のテストクラスを
作る必要なくなったと考えると幸せになれよ。

TestingFramework自体はコード量をそれほど減らしてくれる
わけでもないし、バグの発生数を減らしてくれるわけでもない。
単にテストの習慣をつけましょう・テストを
パターン化しましょうってだけだよ。
0088デフォルトの名無しさんNGNG
87>
なるほど。
テストする習慣作りに役立つアイテムみたいなものってことですね。
あのランプ(?)が赤とか緑に変わる瞬間はまあ楽しいです。

自作で表示部分を面白くしようかな
0089デフォルトの名無しさんNGNG
xUnitは、GUIで使うのではなく、コマンドラインで使うのが本筋だと思うんだが…。
0090デフォルトの名無しさんNGNG
LCRダナー
赤から緑になったら〜OKだよ!
00911NGNG
一応、GUIでも使えるものがあるらしいですよ。
JUnitは使えたような。
RubyUnitとかは使えませんけど。
#そもそも標準でGUI環境ないし>Ruby
0092デフォルトの名無しさんNGNG
今・・・
諸事情により・・・
Cでプログラムを書いています・・・
テストツール・・・
使いづらいです・・・
オブジェクト指向って・・・
素敵ですね・・・

というか・・・
あれないとやっていられないですよね・・・
0093デフォルトの名無しさんNGNG
・・・はコンソール版のUnitTestの「テストが3個正常終了しました」
の意味でしょうか?
0094デフォルトの名無しさんNGNG
毎行テストしてるんかい(藁
0095デフォルトの名無しさんNGNG
>92
組み込み系ですが、今回UnitTestをやってみようと思ってます。
Cですけど、やっぱり使いづらいですか?

cUnitを自分で改造しましたが・・・・
0096デフォルトの名無しさんNGNG
92じゃないけど
動的にobjectをロードできる仕組みがないとつらい。
CやC++だといろいろ工夫がないと萎えるね。

インタプリタ、最高ですかー?
0097デフォルトの名無しさんNGNG
日経ソフトウェアかなんかに書いてあったが、
ペアプロってやっぱり
「キーボードやマウスを」2人で共用することなのか?

いくらなんでもそりゃ嘘だと思うのだが。
ディスプレイ&キーボード切替器買えよっつーか。

ていうかペアプロって「ソースを」2人で共有
することだと思っていたんだが違うの?
CVS経由で(でなくても原理的にはいいが…)
隣人と同一ソースを頻繁にやり取りしながら
いじりまわすってことなんじゃなくて?
0098DelおたNGNG
>>96
ネイティブコンパイラだけどクラスローダーがあるDelphiまんせー
0099デフォルトの名無しさんNGNG
>>32
だいぶ、亀になるが、もし仮に、そんなツールを使ったら買ってくれる人はどのぐらい
いるかねえ…。
0100デフォルトの名無しさんNGNG
テストを自動生成するアプリなら製品化されてたな。
そんなんで金取るなという気もしたけど。
0101Del厨房NGNG
>>96
>クラスローダー
え、どんなの?どんなの?
0102デフォルトの名無しさんNGNG
>97

本当にキーボードとディスプレイを2人で共用することでしょ。
っていうか、一人がキーボード打っている間はもう一人は
後ろで監視してます。
0103ElleNGNG
コーディングしながらレビューだと理解してるよん。
0104デフォルトの名無しさんNGNG
>>102
でもさ、それをするために「キーボードが」同一である必要は
全然ないじゃん。キーボード切替器で明らかに十分であり、
たとえばキーボードの趣味が違う2人はペアプロできないのか?とかいう
馬鹿げた疑問が沸いてくるばかりなんですけど。

他人の手垢べったりなキーボードなんて打ちたいですか?
少なくとも俺はそれだけでストレス感じますね。
自分のなら諦めるけど。

うーん。どう考えても、現代的な開発方法論が、
そんな低次元な要求をするはずないと思うのですけど。

あと、極端な話VNCみたいに
「同一の論理画面を」別の物理画面/Key/Mouse環境で
共有できるソフトなんか、どうよ?
「テレビ電話で会議はできるか?」って言ってるのと等価ね。

>>103
だよねえ。
その目的さえ満たせば手段は問わないと思うのだけど?
0105デフォルトの名無しさんNGNG
まとまった情報がほしいので、
XP本を「日本語」に翻訳してくれということでファイナルアンサー?
0106どーでもいいけどNGNG
>>102 偏見かもしれないけど
日本人ほど潔癖なやつはめずらしいようなきもする
あと細かい違いを除けばアメリカには
キー配列ほとんど1種類しかないのでは?
0107ふみもたたけしNGNG
一応こっちにも書いておこう。

DUnitのチュートリアルを書いた。
http://members.jcom.home.ne.jp/monazilla/shortcuts/DUnit/index.htm
0108デフォルトの名無しさんNGNG
>>107
CppUnitなんかよりずっと見栄えが良い・・・すげー
0109DUnit初体験NGNG
早速DUnitを使ってみました。

function Max(m, n: Integer): Inteegr;
begin
 if m > n then result := m else result := n;
end;

という関数を書いたら

type TMaxTest = class(TTest)
 published
  procedure testMax;
 end;

procedure TMaxTest.testMax;
begin
 Test(Max(10,20), 20, 'Max(10,20)=20になるはず');
 Test(Max(20,-30), 20, 'Max(20,-30)=20になるはず');
end;

というテストコードを書いて、

TestSuite.Add(TMaxTest)

と書くとテストがフォームに登録されるということみたいです。

Maxのテストなんて書くまでもないと思いますが
後からじわじわ効いてくるものなのでしょうか。
もうちょっと使ってみます。
0110デフォルトの名無しさんNGNG
>あと、極端な話VNCみたいに
>「同一の論理画面を」別の物理画面/Key/Mouse環境で
>共有できるソフトなんか、どうよ?

キーボードは別でもいいけど、これはちょっと違うと思う。
物理的に同じ場所にいて、コミュニケーションしながら
同じ画面を見て、っていうのが大切だと思う。
0111デフォルトの名無しさんNGNG
>>107
(・∀・)イイ!
ページ見てなんかみたことある書き方だとおもたら、ShortCutsの作者さんだったか・・・。
0112デフォルトの名無しさんNGNG
自分のマシンの後ろに相方さんを連れてくればいいじゃん。
XPで一番賛否両論な部分だから、いろいろな意見が出るね。
0113デフォルトの名無しさんNGNG
>>106
>日本人ほど潔癖なやつはめずらしいようなきもする

まぁそれはそうかもって気がするが、
だからって共用しろと強要するのは、なんか違う。

>あと細かい違いを除けばアメリカには
>キー配列ほとんど1種類しかないのでは?

アメリカ人=単一言語主義者(そしてキーボードも…)という
推測はもしかしてあたってるかもだけど、それは別として、
配列だけがキーボードの特性じゃないんで、やっぱり嫌だな。
タッチだってサイズだって色々ある。
まぁ最近は何故か糞品質なキーボードが幅きかせてるけど。

>>110
まぁリーズナブルにはそうなんだけど、
将来つーか極端なこと言えば「テレビ会議」も
有りなんじゃないかと思うんですが…。
会議画面をsplit(?)してソースいじり中のディスプレイも映せば良し。

余談。今のところ現実的じゃないけど、考えてみれば
一人に1画面って決め付けるのもなんか妙だ。
SONYの暦本氏の研究みたいに、画面は黒板とかと同様に
複数の人で共用されても良いように思える。
Computer Aided Discussionとでもいうか。

んで、ペアプロってコーディング作業を
「一人の作業」から「Discussion」に変貌させる
っていうもんだよね。
0114デフォルトの名無しさんNGNG
YARPC19101で話してたひとは、キーボードは2つ・ディスプレイは
21インチくらいの1つでXPやってる、って言ってたね。
0115デフォルトの名無しさんNGNG
ペアプロは背中合わせになって別々の
モニタ・キーボードでやるのが経験的に一番よい
必要なら相手のモニターのぞき込めるし
腹立ったら相手の顔見なくてすむし:-P
0116102NGNG
>104
ペアプロ状態の時はキーボードも同一で、主にそのキーボードの
持ち主がタイプを担当する。
って感じじゃないかと解釈してたけど。

XPのペアプログラミングって頻繁なペアの変更を求めるし、
ペアを組替えるたびにキーボードを繋ぎかえるのって
面倒そうに思えるけど、キーボードに拘りのある人って
そうでもないのかな?

>その目的さえ満たせば手段は問わないと思うのだけど?

御意。
たぶん問わないと思うけど、キーボードに拘りのある人は
自分のキーボードを持ち歩けばいいんじゃないかな。
ペアの両方が気にする場合は切替器ってことで。
0117デフォルトの名無しさんNGNG
>>115
ソースの同期手段は何ですか?
論理画面共有?CVS?

>>116
>タイプを担当する

うーん?
やっぱりタイプって、コードを今考えてる本人が
自分で打ってナンボじゃない?

他人に口伝しつつ入力してもらうなんて遅いことしてたら
アイデアのほうが逃げていっちゃう。
逆にいえばそんなんでも平気なほど最初からタイプ遅い人間って
駄目とまでは言わないけどプログラム書くのは辛くない?

連弾よりツインキーボードのほうが絶対いいと思う。

>ペアを組替えるたびにキーボードを繋ぎかえるのって

延長ケーブルを計算機の裏から机の真ん前まで
伸ばしておけばよいだけでは?

関係ないけど俺はシリアルを頻繁に着脱する必要があったんで
シリアル延長ケーブル買ってきて机の真ん前に転がした。
そんな感じじゃない?

あ。
蛇足だけどプログラマ板に汗臭さスレが立ってるね(^^;;;;;
0118115>117NGNG
>ソースの同期手段は何ですか?
男は黙ってVisual Studio + Visual SourceSafe + IP Messenger + GCCだ(藁
何れにしてもXP-ペアプロを妄想で議論したって性悪論・破綻しか導き出せないぞ。
0119デフォルトの名無しさんNGNG
ペアプログラミング10則
http://objectclub.esm.co.jp/eXtremeProgramming/10PrinciplesOfPairProgramming.pdf
1のリンク先にあるんだからちゃんと読もうよ
0120デフォルトの名無しさんNGNG
>>118
IPMってところが素晴らしい。やっぱりあれが勝利の方程式ですか。

VSとGCCが混在ってのが凄い....

>性悪
....誰がそんな話をしていたっけかな....
0121デフォルトの名無しさんNGNG
>>119
pdfをプレーンテキストに変換するツールきぼん
0122デフォルトの名無しさんNGNG
>>121
ほい(笑
http://access.adobe.com/access_email.html

Extream Programming Installed は google に引っ掛かってるんだけどねえ
http://www.phooey.com/programming/docs/pm/xp/Extreme%20Programming%20Installed.pdf
http://www.google.com/search?q=cache:0EpZrrVnXRU:www.phooey.com/programming/docs/pm/xp/Extreme%2520Programming%2520Installed.pdf+10+principles+PairProgramming&hl=ja
0123デフォルトの名無しさんNGNG
頻繁にパートナーを変える場合はキーボード交換は面倒だし
できればエディタも統一しておくといいと思うけど
(うちではそうしている)
0124デフォルトの名無しさんNGNG
キーボードよりもむしろキーバインドが問題では・・。
あと、エディタ統一はないような気が・・・。
全部、統合環境のエディタで統一ってんならわかるけど。
0125124NGNG
>キーボードよりもむしろキーバインドが問題では・・。
極端で分かりやすい例だと、CtrlとCaps入れ替え
>エディタ
極端で分かりやすい例だと、vimとemacs(藁
どっちがどっちにうつっても死ねるし、大抵すでに最強環境構築してるはずだから、
別のに移行するのも死ねる(藁
0126デフォルトの名無しさんNGNG
>>125
そうそう。それそれ。
ソースの個人所有は認めないのは判るし、
コーディング規約の個人所有(つまり非統一)を認めないのも判るけど、
操作環境の個人所有まで認めないとなると、作業効率落ちまくりよ。
みんながみんなVC(?)で統一して満足ウマーできるとはとても思えず。

極論。手に障害とか有るんで特殊に調節されたデバイス
でないと困るような人は、同じ障害を持ってる人とでないと
ペアプロできない、んでしょうか?
そりゃ、変だ。

違うエディタに対しても、ファイル名と行番号さえやり取りすれば
「同じものをいじる」感じになるわけだし。
0127デフォルトの名無しさんNGNG
>>124-126
実現方法はともかく、「ペアプログラミング」という方法論については
どう考えるの?
0128デフォルトの名無しさんNGNG
>>127
よろしいんじゃないでしょうか、漫才スタイルでコーディングするってのは。
ボケと突っ込み。
一人じゃなかなか旨くいかんでしょう。

プロ野球の横浜が優勝した年、監督が
「プロにはチームワークは要らないんです。
それぞれの時に応じたコンビネーションを出来ればいいんです」
と言っていたけど、ペアプロってその境地だよね。

だから、ついていけない人も居るとは思うけど。
0129123NGNG
んー俺はあんまりこだわらんのでいいんだけど
結構こだわる人いるのね…  > かんきょう

どっかで、
「お前のエディタとプロジェクトの成功のどっちが大切よ?」
といって説得するといっていたぞ、たしか。
えらく極端だなとおもったがeXtremeだから、まあそんなもんかな
と思った覚えがある
0130デフォルトの名無しさんNGNG
>>129
全体主義はまずいよ。
同じ服着ろとか同じ車乗れとか言ってるのと
それ大差なくない?

どうでもいい部分は拘束しないのが今風だと思われ。
キボドやエディタ同じにしても
生産性も士気も上がるとはとても思えず。

どなんだろう?
unix系だと更にWindowManagerまで同じにせぇとか言うわけ?
0131デフォルトの名無しさんNGNG
ペアプログラミングについてはプログラマ板でやって欲しいな〜。
テクニカルな話題が全然でてないじゃん。
0132123NGNG
>>130
XPには多少全体主義っぽいところがある、と思う
「あっそう、でもよそでやってね(君はいらないよ)」

>>131
XPはかなりeXtremeなので政治闘争的なものになりがちだとおもわれ
じゃあ、
「AcceptanceTestって具体的にどう書くよ?」
ってのはある程度テクニカルかな?
01331NGNG
リファクタリングの本を買ってもらいました。
読む暇がないので序章だけを読んだんだけど、
破綻しやすいコードを書いてしまいがちな私には
目から鱗ものな内容だと思われます。
0134デフォルトの名無しさんNGNG
他のDUnitは試していないけど、
是非英語解説やらなにやらを作って
公開してもらいたいな。

素敵な出来だと思いますよ。
0135デフォルトの名無しさんNGNG
SEXプログラミングマンセー
0136デフォルトの名無しさんNGNG
3Pプログラミング
0137デフォルトの名無しさんNGNG
UnitTest、どの範囲で適用してます?
汎用ルーチンのみ?全部ごとに全部?GUIまわりも?
0138デフォルトの名無しさんNGNG
あげるべきでした
0139デフォルトの名無しさんNGNG
>全部ごとに全部
関数ごとに全部
0140デフォルトの名無しさんNGNG
>>137
単純なgetter/setter以外(なるべく)全部。
バグ発生時には、バグを再現するテストを追加。その後デバッグ。
0141デフォルトの名無しさんNGNG
133
Martin Fowlerですか?
私も買いました。

私はクラスの切り出しがあまくて、コーディングが進むにつれて、
「このクラスにこのメソッドはよくないなぁ」
とか
「このクラスの存在する意義はないかも」
って悩むことが多いのですが、この本から得た知識で
綺麗なクラス設計に戻せそうです。
0142デフォルトの名無しさんNGNG
テストクラス単位、メソッド単位でメモリリークを検出する
DUnitのアイデアが固まったので実装中。
若干実行速度が遅いけど、テストクラス単位なら許容できそう。

>>134
英語版とは気が早い。
ドキュメントの分量なんてたかがしれてるけど、
日本語版の開発環境で英語版のexeを作れるのかな?
例外のメッセージなんかも含めて。
0143デフォルトの名無しさんNGNG
ちょと方向性違う話だけど。

プログラム日記(w)って、どうしてます?
XP風に強引に言い直すならば
「日記は12のプラクティスのどこに当てはまるか?」
って感じなんだけど。それとも「んなもんねぇよ」ということ?

Wikiでプログラム日記つけたら
どうなんだろう?って、ちと思ったもので。

開発者、ソースファイル、関数/クラス/メソッド、などなどの
それぞれに対応するWikiNameを作って、
なにか作業するたびにリンクを張り合う。

もちろんwikiでなくてもいいけど、リンク(を含むファイル:htmlとか)を
さくさくとしかも複数人でいっぺんにいじれる環境が欲しいんで。

うーん。ソースをCVSに入れちゃうだけで十分、なのかなあ?
どうでしょう?
0144デフォルトの名無しさんNGNG
中小企業でXPってどうなんでしょう?
実際に導入してやっている方の体験談きぼぅん。
0145デフォルトの名無しさんNGNG
極論すればUnitTestさえしていれば
演繹的なコードの検証は不要である。
なぜならいくつかの単純なテストにパスすることで
コードの正当性が確認できるからである。

もし一つのコードの検証に多くの複雑な
テストが必要になるとすれば、
そのコードは複雑すぎるのである。
そしてそのコードはリファクタリングの対象となる。
0146デフォルトの名無しさんNGNG
>>145
んなこたーない。
つーか、言葉の定義が雑すぎて評価できない。
0147デフォルトの名無しさんNGNG
UnitTestで困ったことがあるのですが、
とある配列の順序をランダムに並べ替えて
それをリターンするメソッドがあるのですが、
これってどうやってテストを書けばいいのでしょう?

配列の長さが同じ!とかテストしても
あんまし意味ないですし。
0148>147NGNG
ソートして元の項目とあっているかどうかをチェックする。
どの程度ランダムになっているかという「性能」についての
テストはUnitTest以外のテストが必要になる。
0149デフォルトの名無しさんNGNG
ゲーム系に導入したいんだけどきつそう。
テストルーチンがサパーリ思い浮かばん・・・。
キャラクターの動きやらスプライトの描画やら・・・。
0150デフォルトの名無しさんNGNG
ゲーム系は携わったことがないからわからないけど、
テストの基本は入力とそれに対する出力をどうするか?を
決めていることが前提。

描画系はどうしようもなさそうだけど、
例えば人オブジェクトの移動メソッドくらいなら
入力:目的地の座標
出力:(移動後)現在の座標
みたいな事くらいは出来ると思う。
0151デフォルトの名無しさんNGNG
ファイルに出力するメソッドのUnitTestだと、
予想出力結果ファイルを作成して比べるしかないんでしょうか。
いろんなテストパターン毎にファイルを用意するのが面倒なのですが……。
0152デフォルトの名無しさんNGNG
>>151
文字列リスト、テキストファイルのテストはよくやるので
面倒ならxUnitを拡張してしまえばいい。
DUnitにはファイル・ファイル、ファイル・文字列リスト、
ファイル・文字列配列のテストを追加した。

TestFile('result.txt', ['aaa', 'bbb', 'ccc']); // result.txtの中身をテスト

>>149
今ちょうどゲーム(のライブラリ)でUnitTestやっているけど、
UnitTestを導入するのはUnitTestを書きやすい
ロジック部分のみに限定した方が無難かも。

描画はほぼ不可能。UIの絡んだシーケンスは困難。
従来のASSERT、デバッグログの代わりに
Testメソッドを完備しておいて、実コード中で
Testすると多少便利になるというぐらい。
0153149NGNG
おおお。ゲーム系レスつかないとおもたら意外にも。thanx
0154151NGNG
>>152
やはり正面から対応すべきなのですね。ありがとうございます。
周りでは誰にも訊けなくて鬱々としていたところなので
救われた思いです。当方RubyUnitがメイン利用なので、
ちょっと試してみようと思います。
0155>154NGNG
Rubyなら拡張するまでもないかも
p `cat result.txt` == <<"FILE"
aaa
bbb
ccc
FILE
0156デフォルトの名無しさんNGNG
なんか、
2ch上でペアプログラミングしているみたい >>154-155
0157デフォルトの名無しさんNGNG
>>149
ゲーム系描画ライブラリもUnitTest導入し始めています。
最初にフレームバッファの内容をキャプチャして画像ファイルに出力するモジュールを
書いておきます。
あとは描画機能を追加するたびにテストシーンを作って描画結果をファイルにセーブ。
描画エンジンを修正するたびに同じテストシーンを描画してファイルと比較。

先日もエンジンの高速化作業でマトリクス計算を微妙に間違えていたのを事前に発見
できました。

UIがからむもの、アニメーションがからむもののテスト方針はまだ模索中です。
0158149NGNG
おおお。
最初にキャプってテストは考えはしましたが、
本当にやっているところがあるとはー。
0159デフォルトの名無しさんNGNG
>>157
おおおお!まんせー!!すばらしい!!
158と同様に、157をホメテアゲタイage

ちなむとどう素晴らしいかというと、
「安易」な方法ではあるけどそれが確実で低コスト
であるのは間違いない、つまり
リーズナブルでベストな選択だ、って点が。
勝手ないいぐさで御免だけど。

>UI、アニメーション

逆にいえばそれらがテストツールにかけることが容易になればいいんですよね。

ふとWindowsMetaFileやDisplayPostscriptを思い出したんだけど、
つまり最終出力データ(=ビットマップ)じゃなくてそういうメタデータとして
表示とかを表現することにしておき、それ(多分適度に小さいだろう)のレベルで
比較するとかいうやり方でテストを行うと、いけるんじゃないだろか?
0160デフォルトの名無しさんNGNG
下記スレでなぜか、ゲーム系XPの話題が(w

『ゲーム作品、きちんとテストプレイしてます?』
http://tako.2ch.net/test/read.cgi?bbs=2chbook&key=991063240&st=27
0161デフォルトの名無しさんNGNG
eXtremeあげ
0162デフォルトの名無しさんNGNG
UnitTestの手法?に関しては、まだ模索状態ですね。
今、シミュレーション系の数値計算プログラムを作っているのですが、
出力が(ある程度わかるとは言え)未知なので、
UnitTestが少々難しい感があります。

簡単な数値なら、実数値の誤差がどのくらいまでならOK、
というテストもあるので多少助かりますが。

#あぁ、眠い。頭まわらないのでヘタレカキコでスマソ
0163デフォルトの名無しさんNGNG
リファクタリングにはまってしまい、
新い機能がなかなか追加できません

まあ自分の作った危うい設計のまま機能追加するのは、
いつかやばくなるのは分かってるんだけど、
先にすすめないのは結構きついっす

コードが大分スッキリ分かりやすくなったんで、
未来は明るいとは思うし、これからあたしくプログラミングするときに
前より綺麗な設計が出来るようにはなるとは思うんだけど・・
0164デフォルトの名無しさんNGNG
当たり前なんだけど、リファクタって環境問題のノリに似てるような。

汚染垂れ流しをやめれば必然的に素の成長速度は落ちるが、
かわりに持続可能な成長ができる見こみが増してくる、
長い目で見ればお徳、って奴。

というわけで、めげずにがんばれ>>163


>>162
そうか。「目的」自体が試行錯誤状態のプログラミングでは
うまくいかないかぁ…。
XPって「ゴールがあるから頑張れるの法則」に通じるところがあるから…
■ このスレッドは過去ログ倉庫に格納されています