連載:VB研公開ゼミ議事録

第3回 実践! .NETで変わるVB業務アプリ開発

デジタルアドバンテージ 遠藤 孝信
2007/08/03
Page1 Page2 Page3

 2007年6月30日、VB(Visual Basic)による業務アプリケーション開発者のためのフォーラム「VB研(VB業務アプリケーション開発研究室)」主催によるオフライン・セミナー「VB研公開ゼミ」が開催された。

第3回 VB研公開ゼミ「実践! .NETで変わるVB業務アプリ開発」

 3回目となる今回は、平日の参加が難しい開発者のために、土曜日の開催が試みられた。当日の参加キャンセルが多いのではという事務局側の懸念もあったが、そんな心配をよそに、会場には50名を超える現場のVB開発者が集まった。

第3回VB研公開ゼミ会場の様子

 本稿では、セミナー後半で行われたパネル・ディスカッションを中心に、第3回VB研公開ゼミの内容をダイジェストでお伝えする。

 今回のゼミのテーマは、VB業務アプリケーション開発の効率化と高品質化のためのツール活用法である。開発ツールに着目した場合、これまでのVisual Basic 6.0(VB6)やそれ以前のVBと比べて、.NETにはさまざまなアドバンテージがある。

 VB6による開発は現在も継続して行われているが、そのIDE(統合開発環境)は当然ながらもはや更改されることはない。それに比べて、VB6の後継言語であり、.NET版のVBであるVisual Basic 2005(VB 2005)のためのIDE「Visual Studio 2005(VS 2005)」は、開発者の声を取り入れながら着々とバージョンアップが重ねられてきた。

特集:.NET開発者のための開発プロセス入門
連載:NAgileで始める実践アジャイル開発
連載:開発をもっと楽にするNAgileの基本思想
連載:VSTSの単体テスト機能は本当に使えるのか?
.NET Tools:テスト駆動開発ツール最前線
特集:「テスト駆動開発」はプログラマのストレスを軽減するか?

 加えてVB 2005では、無償で公開されている多くの.NET向け開発ツールが利用可能だ。これらの中でも、現在多くの開発者に利用されているのが、単体テストの自動化、テスト・ファースト、テスト駆動開発、リファクタリングといった「アジャイル開発」を実践するための各種ツール(以降では単に「ツール」と記す)である。

 そういったツールをVS 2005とともに活用することにより、より品質の高い業務アプリケーションをより効率的に開発することが可能であり、多くの.NET開発者はすでにそれを実践している。(フリーの)ツールを徹底的に活用し、自動化できるところは可能な限り自動化するという取り組みは、アジャイル開発の大きな特徴の1つだ。

 では、具体的にはどういったツールが定番的に利用されているのか、ツールそしてアジャイル開発を導入するためにはどうすればよいのか、VB6→.NETへの移行作業を行っている開発者にとってツールはどのように活用できるのか。

 まず今回の公開ゼミの前半では、アジャイル開発に詳しく、日本XPユーザーグループ(XP:eXtreme Programmingの普及を目的としたユーザーグループ)のメンバーとしても活動中の小井土 亨氏をお迎えして、以下のテーマで講演を行っていただいた。

.NET時代の開発スタイルはこう変わる
〜高品質な業務アプリを効率的に開発する手法&ツール〜

 講演では、主に以下のような項目について、実際に各ツールを活用した開発デモを交えながら、そのポイントやテクニック、ツールの特徴などを解説いただいた。

 公開ゼミ後半では、小井土氏も含めた以下のメンバーで、軽食を取りながらのパネル・ディスカッションが行われた。

パネリスト 日本XPユーザーグループ
小井土 亨 氏

アバナード株式会社
荻原 裕之 氏

アバナード株式会社

西崎 公太 氏

株式会社デジタルアドバンテージ
@IT Insider.NETフォーラム編集長

遠藤 孝信
モデレータ 株式会社デジタルアドバンテージ
@IT Windows Server Insiderフォーラム編集長

小川 誉久

 パネル・ディスカッションには、アクセンチュアとマイクロソフトの共同出資によって設立された現在急成長中のアバナード社より、荻原氏と西崎氏にご参加いただいた。両氏はマイクロソフトの最新テクノロジを用いた企業システム構築の最前線で活躍されている。VB6から.NETプラットフォームへの移行案件も数多く手掛けているという。


パネル・ディスカッションの様子

 パネル・ディスカッションは約2時間に及んだが、以下ではその内容を要約してお伝えする(以下、敬称略)。

VB6でもツールの利用は可能か

【小川】先ほどの小井土さんのデモではVS 2005を使っていましたが、VB6でもあのようなバージョン管理や単体テスト・ツールを使うことはできるのでしょうか?

日本XPユーザーグループ
小井土 亨 氏

【小井土】使えますね。そもそもSubversionはファイルのバージョンを管理するだけなので、VB6に限らず、WordやPowerPointのドキュメント管理などにも使えますし、ビルド・ツールであるNAnt自体はVB6のコンパイルも実行できます。そしてCruiseControl.NETを使えば、VB6のコンパイルも自動化できます。

 テストの自動化に関しては「vbUnit」というツールがあり、個人的にもドキュメント(VBUnitUsersGuidebook.doc)をWeb上で公開しています。ただ、VB6のアプリケーションの場合、UI(ユーザー・インターフェイス)処理部分やデータベース処理部分にビジネス・ロジック(=業務処理ロジック)が同居していることが多く、そのような部分のテストはかなり難しいというのが正直なところです。ただ、これらのツールは活用できる部分があれば、ぜひ活用すべきツールだと思います。

【小川】ソース管理は問題ないが、テストの自動化が難しいということですね。

アバナード株式会社
西崎 公太 氏

【西崎】そうですね。いまのお話にもありましたように、VB6では、どうしてもUI周りのイベント処理部分にコードが集中しやすかったり、データベース処理とビジネス・ロジックが1カ所で密接に連携してしまっているというコードが多かったりするので、その切り分けをしないとテストは難しくなると思います。

 ただし、その切り分け自体はVB6でも可能だと思いますので、イベント処理部分、例えばボタン・クリック時のイベント・ハンドラにはできるだけコードを書かず、必要なビジネス・ロジックはモジュールに記述するというようにしておけば、VB6でも単体テストは十分行えるはずです。

【小川】VB6でも工夫の余地があるとしても、やはり.NETの方がいろいろなツールが整備されていて、有利であることは間違いなさそうですね。

【荻原】はい。ツールもフリーのものばかりでなく、VS 2005の上位バージョンであるVisual Studio 2005 Team System(VSTS)では、メソッドを右クリックしただけで単体テストを作れるといった機能もあります。VB6のときと比べると、VS 2005では数多くのツール群がマイクロソフトから追加提供されています。

移行時のツール活用

【会場】今回参加している方で、VB6→.NETの移行に携わっている方は多いと思いますが、そういったツールは移行時にも活用できますか?

【小井土】わたし自身はまだ実際に行ったことがないですが、Subversionを使えば過去のバージョンからの差分を取れるので、一度、元のソースをSubversionに管理させてから移行ツール(アップグレード・ウィザード)を使ってみるという手はあると思います。移行の前後で変化が見えないとどう変わったかも把握しにくく、検索などもしづらいですが、Subversionではソース間の差分表示などもできるので、移行にも有効だと思います。このような目的なら、ツール導入のハードルも低いでしょうから、ツール導入の第一歩として実行してみるとよいかもしれません。

【会場】ということは、まずVB6でSubversionによる管理を始めて、それから作業する方がよいということですか?

【小井土】そうです。ただUNICODEの問題などはあるかもしれませんが、最低限として差分は見えた方が便利であり、移行ツールがどこを変えたのかを把握するのには役立つと思います。ここは前のままの方が良かったというなら、すぐに元に戻せます。もちろん全面的に変わっていたら無駄かもしれませんが、導入によるコストはかかりませんし。

アバナード株式会社
荻原 裕之 氏

【荻原】ちなみに、実際にコードを移行した経験からいわせていただくと、移行したコードの中には、コメントでこういうコードを書いちゃだめですよといった移行ツールからのメッセージがあったりします。

 例えばデータベースをクローズするとき、昔のVBユーザーならNothingを代入していたのですが、それだと.NETではクローズはされず、つながったままになってしまいます。そのような部分には「Nothingはこのように変えてくださいね」とコメントできっちりと書かれています。移行ツールを使ったからOKだとして、そのまま確認せずにおくと、アプリケーションは一見動作しているように見えても、本番になってから動かないといった事態に陥ります。ですので、コードの差分はよく見ておいた方がよいです。

UIの単体テストについて

【会場】わたしの会社は、まだ.NETは始めていないのですが、単体テスト・ツールに興味があり、導入を進めていきたいと思っています。vbUnitではUI周りがなかなかテストできないと聞きましたが、.NETではどうなんでしょうか? もし別のツールなどがあれば教えていただきたいです。

.NET TIPS:実行中の.NETアプリケーションのオブジェクト構造などを調査/操作するには?

【小井土】UIのテストは確かに非常に難しいところがあります。UIをテストするには外からクリック・イベントを起こしたりする必要がありますからね。今日はデモできませんでしたが、「Managed Spy」というツールを使うと、イベントやプロパティなどを外部からチェックできます。それを使ってテストを記述するのが1つのやり方だと思います。

 またVSTSだと、プライベート変数であっても、それを外部から参照するテスト・コードを自動生成する機能もあって、パブリック変数以外も参照できます。この機能を使えば、任意の変数の値がどうなっているかをプロパティ・レベル以上に外部から細かく確認できます。

【遠藤】最終的にクリックしないとテストできないような状況では、VB6でも.NETでも大して問題は変わらないと思うのですが、先ほどもあったようにVB6ではクリック・イベントにロジックを詰め込んでしまうことが多いという問題がありました。しかし.NETでは、クラス化やコンポーネント化によりロジックをまとめやすく、これによってイベント処理とロジック部分を分離しやすくなっていると思います。そのように作れば、ロジック部分はツールによる単体テストが可能であり、VB6よりはずっとテストしやすい状況になるのではないでしょうか。

【小井土】あと、イベント・ハンドラに詰め込まれたロジックの移行に関しては、特に処理が複雑であったり、よくバグが出たりする部分があれば、そこからまず別のクラスとして切り出すという方法があると思います。UIは単にクリックするだけなら、ほとんどバグの出ようはないと思います。しかし実際どこかで問題が出るわけで、問題が出そうなところ、あるいは実際にバグが出たところにまずフォーカスして、リファクタリング・ツールを使ってクラスやメソッド抜き出し、そういったところからテストを書き始めるというのは有効だと思います。

【遠藤】ちなみにVB6にもリファクタリング・ツールはありますか?

【小井土】そういうツールもありますが、確か有償だった思います。VB 2005に関しては、フリーのツール(「Refactor! for Visual Basic.NET 2005」)が存在します。日本語化はされていませんが、インターフェイスの切り出しなどもVB.NETで可能になっています。このツールは日々バージョンアップがされていて、広く使われているようですので、品質も良いようです。VB 2005では使わない手はないと思います。


 INDEX
  VB研公開ゼミ議事録
  第3回 実践! .NETで変わるVB業務アプリ開発
  1.VB6でもツールの利用は可能か/移行時のツール活用/UIの単体テストについて
    2.非機能要件のテスト/アジャイルを社内展開/ツールで保守性アップ
    3.ツールを使う際のバグ管理/テストのメンテナンス/使っているツールの数
 
インデックス・ページヘ  「VB研公開ゼミ議事録」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH