カテゴリー「*コラム」の15件の記事

2010年6月 2日 (水)

[コラム] VB2005 では InternalsVisibleTo 属性が効かない

.NET Framework 2.0 で追加された InternalsVisibleTo 属性は、 これを使うと internal (C#) / Friend (VB) なスコープのメソッドも外から直接テストできるので、 Visual Studio 2005 の時から重宝して使っていました。

でもこれって、 VB2005 のコンパイラーはサポートしてくれてなかったんですね。 今まで知りませんでした、 がっくし。

※ MSDN ライブラリにも注記しておきました。
.NET Framework クラス ライブラリ: InternalsVisibleToAttribute クラス: コミュニティ コンテンツ

| | コメント (0) | トラックバック (0)

2010年5月16日 (日)

[コラム] 黒岩惠 「トヨタ生産方式 (TPS) と IT ソフト」 ご紹介

先日、 名古屋での Bent Jensen 氏のプレゼンを実現するのに尽力してくださった黒岩惠氏。 その際、 氏からも TPS (トヨタ生産方式) についてプレゼンをいただきましたが、 そのスライド 「トヨタ生産方式 (TPS) と IT ソフト」 (PowerPoint) などを希望者に配布していただけるそうです。 詳しくは、 黒岩氏のブログを。

黒岩惠@esd21: トヨタ生産方式、トヨタのIT化の講演スライドと出版原稿の配信
2010年5月14日金曜日

以下の講演スライドと執筆原稿を希望者に配信します。
営利団体、 非営利団体問わず、 講演も歓迎します。

1) トヨタ情報システム発展史
1960年代から 2000年代前半までトヨタの情報化小史として、 情報システムを、 その時代の IT 化動向、 ビジネス系、 エンジニアリング系のアプリケーション、 IT 化推進体制などを概説。 (PDF で 40ページ)
経営情報学会 & JIPDEC で発刊される「情報システム発展史」の一部

2) IT ソフト開発部門 (企業) トップマネジメントのための
  「トヨタ生産方式 (TPS) と IT ソフト」
  ~ TPS からアジャイルソフト開発への勧め ~  

「トヨタ生産方式 (TPS) と IT ソフト」 (100ページ) から何枚かスライドを抜粋しておきます。 興味のある方は、 ぜひコンタクトしてみてください。

続きを読む "[コラム] 黒岩惠 「トヨタ生産方式 (TPS) と IT ソフト」 ご紹介"

| | コメント (0) | トラックバック (0)

2010年5月 6日 (木)

[コラム] Bent Jensen 来日: アジャイル開発に適した契約 ~ ハイブリッド契約の例

先月、 デンマークの BestBrains 社からの視察団が来日されていました。 同社 Director である Bent Jensen 氏のプレゼンからハイブリッド契約方式を少しご紹介します。

BestBrains 社はアジャイル開発のコンサルティングをやっている会社で、 日本のアジャイル開発の現状や製造業を視察するために何度も来日しています。

[2008年]
ITmedia オルタナティブ・ブログ: An Agile Way: BestBrains がデンマークから Change Vision に来社

[2009年]
fkino diary(2009-08-24): Agile2009セッション紹介 Thursday AM編 ~ "Experiments with Agile Contracts in the Real World"

そして今年、 2010年は 4月の第3週から 4週に掛けて来日。 残念なことにアイスランドの噴火のため、 日にちをずらして来日予定だった一部のメンバーが来れなくなってしまったそうです。 公式日程の記録は、 Roots of Lean サイトの Blogs from Spring trip 2010 (英語のページ) で公開されていて、 FANUC のロボット製造工場や東邦チタニウム (ウルシステムズの一橋氏がアジャイル開発を成功させたところです) などを精力的に見て廻られたようです。

来日中の講演は、 まず 4月 20日に上野で開かれました。

続きを読む "[コラム] Bent Jensen 来日: アジャイル開発に適した契約 ~ ハイブリッド契約の例"

| | コメント (0) | トラックバック (0)

2010年5月 4日 (火)

[コラム] 僕が TDD に魅かれるワケ

 たまには自分のことを書いてみようかと思います。
 僕は、 学校を出てからの 10年くらいを、 機械の設計屋さんとして飯を喰ってきました。 その後、 肩書きをプログラマーに変えてから 15年。 ここ数年になってようやく分かってきたのは、 機械もプログラムも新しいモノを創り出すそのやり方は同じようなものだ、 ということ。

続きを読む "[コラム] 僕が TDD に魅かれるワケ"

| | コメント (0) | トラックバック (0)

2010年1月26日 (火)

[コラム] RED One, GREEN All

これは、 実行するテストケースの数です。

RED One, GREEN All

すなわち。 テストファーストしているときに、

  • テストケースを追加/修正したときは、 そのテストケースひとつだけを実行して RED (失敗) になることを確認すればよい。
  • 製品コードを書いたときは、 その部分に関係するテストケースを全て実行して GREEN (成功) を確認しなければならない。

あるテストケースを書いたとき、 そのテストケース以外には何も影響が無いはずですよね。 ですから、 その新しいテストケースだけを実行すればよいわけです。
次に、 その新しいテストケースを通るように製品コードを直しますが、 それによって既存のテストケースが失敗してしまう (つまり、 製品コードにバグを作りこんでしまう) 可能性があります。 したがって、 その製品コードのメソッドを対象としているテストケースは全部流してみる必要があります。
RED を確認するにはテストケース 1つ、 GREEN を確認するには全部、 というわけです。

例として、 C# 2008 Express Edition + NUnit 2.5 の場合を紹介しておきます。

続きを読む "[コラム] RED One, GREEN All"

| | コメント (0) | トラックバック (0)

2010年1月 7日 (木)

[コラム] [VS2010] 新機能 Generate From Usage (使用法から生成) の使い方 Step by Step

Visual Studio 2010 の新しい機能である "Generate From Usage" ( 使用法から生成 ) について、 そのチュートリアル記事を以前に紹介したことがあります。
そのチュートリアルは、 英語版の CTP に基づいて書かれています。 日本語版の Beta 2 でも基本的には同じですが、 改めて手順を C# で紹介してみます。

VS2008 にはメソッドの生成機能があります。 それは自動生成したコードの方にカーソルが移ってしまうので、 TDD しているときにはテストケースを書いている流れを邪魔されてしまっていました。 VS2010 では、 その点が改善されただけでなく、 クラスの生成機能も追加されています。

興味を持たれたかたは、 Beta 版 (2月には RC 版が公開されるようです) を入手して試してみてはいかがでしょう。 なお、 この機能は Express Edition には搭載されないようですので、 Beta 2 では Ultimate エディション日本語版を使ってください。

続きを読む "[コラム] [VS2010] 新機能 Generate From Usage (使用法から生成) の使い方 Step by Step"

| | コメント (0) | トラックバック (0)

2009年12月22日 (火)

[コラム] どうやって DateTime.Now を含むメソッドをテストする?

TDD Boot Camp でも、 演習の後半に出てきました。 テスト対象のメソッドが、 現在時刻や時間経過に依存しているときは、 どうやったら上手くユニット テストが書けるでしょう?
テストしたい時刻になるまで、 あるいは、 テストしたい時間が経過するまで Sleep() しますか? そんなことをしていたら、 DateTime.Now に依存するメソッドのテストに、 ヘタをすると丸一日掛かってしまうかもしれませんね。

DateTime.Now の値を自由にコントロールできれば、 問題は解決するでしょう。
製品コードの中で、 現在時刻を提供する部分を切り出してしまい、 テストのときはそこをスリ換えてしまうというテクニックがあります。
・ 製品コードに、 現在時刻を提供するクラスを作って、 テストのときはクラスを入れ換える。 (ちょっと大げさだけど、 大きなアプリケーションならけっこう現実的。)
・ 製品クラスの中で、 現在時刻を提供するメソッドかプロパティを切り出して、 テストの時にはそこをすげ替える。
・ 製品クラスの中に、 #if DEBUG で括って、 時刻を調整できるメソッドを仕込んでおく。
・ (…ほかにも方法はあるでしょう。)

以下、 2番目のテクニックを紹介します。

続きを読む "[コラム] どうやって DateTime.Now を含むメソッドをテストする?"

| | コメント (0) | トラックバック (0)

2009年12月13日 (日)

[コラム] VS2010b2J (MSTest) で、 Silverlight 3 のロジックを TDD する

[ summary ]
  1. Using the unit test feature (MSTest) of VS2010 beta2 (Japanese), it's possible to test the logic included in the Silverlight 3 project.
  2. As for the wizards who helps the unit test that VS2010b2J has, some functions don't work normally.
  3. The unit test can be executed though warning goes out by the project reference.
  4. After the unit test is executed, coverage can be neatly acquired.
  5. Logic of Silverlight 3 can be made by using TDD technique. I hope for the support of Visual Studio to be improved.

Visual Studio 搭載のユニット テスト (MSTest) や、 現在の NUnit は、 通常の .NET Framework のランタイム上で動作します。 Silverlight は、 異なるフレームワーク ファミリーのランタイム上で動作しますので、 互換性はありません。 ここで誤解されることがあるのですが (私も誤解していました)、 しかし呼び出しすらできないというわけではありません。 Silverlight  に依存するコードを .NET Framework から呼び出すとエラーになる、 という意味で非互換と言っているようです。

Visual Studio 2010 では、 標準で Silverlight 3 の開発ができます。 そして標準機能のみで、 Silverlight 3 のロジック部分はユニットテストできます。 この記事では、 そのことを実験し、またその手順を説明します。

※ 以下は、 Visual Studio 2010 beta2 日本語版での結果です。 正規版では異なる可能性があります。
※ なお、 Silverlight 4 beta に対しても、 ほぼ同様でした。

続きを読む "[コラム] VS2010b2J (MSTest) で、 Silverlight 3 のロジックを TDD する"

| | コメント (0) | トラックバック (0)

2009年12月11日 (金)

[コラム] Silverlight 2 / 3 でも、ユニットテスト出来る

Silverlight の ver. 2 と 3 では、 通常の .NET Framework のアセンブリと互換性が無いとされています。 Visual Studio 上でテストプロジェクトを作って、 Silverlight のプロジェクトを参照しようとすると怒られてしまいます。 Silverlight Toolkit には単体テストフレームワークが含まれていて、 これは UI まで単体テストできる優れものですが、 いかんせん IE を起動してその上でテストを走らせる仕組みになっているので、 TDD のリズムからはほど遠いものです。

Visual Studio 組み込みのユニットテスト (MSTest) や NUnit から、 サクっと単体テストすることはできないものでしょうか…?

続きを読む "[コラム] Silverlight 2 / 3 でも、ユニットテスト出来る"

| | コメント (0) | トラックバック (0)

2009年11月16日 (月)

[コラム] [Visual Studio] 抽象クラスの private メソッドを単体テストするには

※ 初出: biac の それさえもおそらくは幸せな日々@nifty, 2008年5月2日

Visual Studio では、 プライベートメソッドに対しても、 ユニットテストのスケルトンコードを自動生成してくれます。 プライベートメソッドを持つクラスに対するアクセッサークラスを、 自動的に作ってくれるわけです。 そして、 ユニットテスト側では、 この自動生成されたアクセッサークラスを使って、 テストを書きます。
それを踏まえて…

では、 テスト対象のメソッドが、 抽象クラスに含まれているときはどうすればいいでしょう?

続きを読む "[コラム] [Visual Studio] 抽象クラスの private メソッドを単体テストするには"

| | コメント (0) | トラックバック (0)