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

第6回 VB開発者が最新.NET Frameworkを効率よく習得する方法

デジタルアドバンテージ 一色 政彦
2008/07/08
Page1 Page2

【言語&フレームワーク編】

4. VB6名前空間は使うべきか? VBならではの機能とは?

小川 VB6開発者ならVB.NET(=Visual Basic .NET 2002/2003やVisual Basic 2005、Visual Basic 2008)に移行するときは、やはり言語の学習に最初の壁があるのでしょうか?

福岡 .NETへの移行で難しいのは、VB6とVB.NETという言語間の差異というよりも、VB6と.NET Frameworkというフレームワーク・アーキテクチャの違いです。つまり、「VB6専用APIやWin32 APIを使う」というスタイルから、「.NETクラス・ライブラリを使う」という頭の切り替えが必要になってきます。

 例えば、VB6の開発者に取りあえず.NETの開発をさせてみると、.NETクラス・ライブラリに標準搭載されているVB6名前空間(=Microsoft.VisualBasic名前空間のクラスや関数。例えばMid関数やSplit関数など)ばかりを使ってしまいがちです。だから、.NETを始めるVB開発者は「.NETで標準的な書き方はこうで、.NETクラス・ライブラリのこのクラスを使った方がいい」といったことを学んでいく必要があると思います。

会場 VB6名前空間は使ってはダメなのでしょうか?

福岡 もちろん「ダメ」と強制しているわけではありません。「標準的な書き方はこちら」というのを知っておく必要があるということです。そのうえで移行の効率などを考慮し、Microsoft.VisualBasic名前空間のクラス・ライブラリを使っていただく分には全然問題ないと思います。

 ちなみに、VB6名前空間以外にVB6互換性ライブラリともいえるMicrosoft.VisualBasic.Compatibility名前空間もありますが、こちらの方は一切利用していません。理由は、Visual Basic .NET 2002/2003のころのヘルプには「Microsoft.VisualBasic.Compatibility名前空間は移行ウィザードのために提供されているので、将来的にサポートされなくなる可能性があります。それを了承したうえで使ってください」という旨のただし書きがあったからです。しかしVisual Basic 2005からはなくなっていますので、(使用していいかどうかは別にして)VB6互換性ライブラリは将来的にも残っていくのかもしれませんね。

グレープシティ株式会社
ツール事業部
テクニカルエバンジェリスト
八巻 雄哉
Microsoft MVP for Visual Basic

八巻 VB6名前空間を使うのには一長一短があると思います。グレープシティ製品ではサンプル・コードとしてVBとC#の両方を提供していますので、できるだけ両方に共通する書き方を採用しています。

 一番分かりやすい例では、メッセージボックスを表示するコードで、標準.NETクラス・ライブラリなら「MessageBox.Show()」と書きますが、VB6名前空間では「MsgBox()」と書きます。後者の「MsgBox()」はC#に変換できないので、グレープシティでは両方の言語で書ける「MessageBox.Show()」を採用します。もちろん将来的にもVBしか使わないのであれば、「MsgBox()」でもよいでしょう。

会場 VB6名前空間以外にも、VBにはC#よりも気の利いた機能がいくつかありますよね。例えばスプラッシュ・スクリーンはVBにしか搭載されていませんよね?

福岡 はい。Visual Studio 2008のVBプロジェクトのプロパティで[アプリケーション]タブの中に[Windows アプリケーション フレームワーク プロパティ]という設定グループがあり、そこで[スプラッシュ スクリーン]をはじめ、多重起動の防止(=[単一インスタンスのアプリケーションを作成する])など、VB6でよく使われる機能が標準で用意されています。これらはC#には搭載されていません。こういう点を見ると、便利機能が実装されているのがVBという言語だと思います。

VB専用機能の[Windows アプリケーション フレームワーク プロパティ]

5. 新フレームワーク(WPF/WF/WCF)は本当に使えるのか?

小川 .NET Framework 3.0からは新しくWPF(Windows Presentation Foundation:GUI技術)、WF(Windows Workflow Foundation:ワークフロー技術)、WCF(Windows Communication Foundation:通信技術)などのフレームワークが導入されていますが、これらは実際の現場で使われ始めているのでしょうか?

福岡 それほど多用しているわけではありませんが、WCFが必要な要件は出始めていますし、WFについては利用を検討している段階です。しかしWPFは、これまでのWindowsフォームとあまりにも作りが異なるので、いまのところ採用は考えていません。

 WPFがWindowsフォームとどのように異なるかというと、例えばLabelコントロールにClickイベントが用意されていません。フォーム上の全コントロールのClickイベントをまとめて拾い、そこで条件分岐処理するような書き方になります。

 確かにリッチなデザインができるのは理想的に思えますが、現実に使うとなると思ったように実装できずに戸惑うことが多いという点で、まだまだ理想と現実のギャップがあるなと思います。WindowsフォームからWPFへの移行は、VB6からVB.NETへの移行よりも難しいです。

WPFで用意されているイベント・ハンドラの例(Labelコントロールの場合)

新村 WindowsフォームからWPFへの移行という話ですが、実際には、WPFはWindowsフォームを置き換えるものではありません。WPFがあるからWindowsフォームはなくなりますという話ではないのです。

 WPFは単にWindowsアプリを作れるGUI技術の新しい選択肢の1つというだけです。Windowsフォームは日本の伝票文化で有効なグリッド表などを使用してデータを文字や数字で表現したり、入力を支援したりという面では非常に役に立ってきました。そういった文字を中心としたデータ表現が適した部分をわざわざWPFで作り直す必要はないと思っています。

 米国のTechEdでWPFのセッションに参加しましたが、そこで特に印象に残ったのは、状況の可視化(ビジュアライゼーション)と制御(コントロール)のためにWPFを使おうというものです。例えばデータベースのデータ状況を可視化し、ドラッグ&ドロップなどのビジュアルな操作をできるようにする、つまりデータを制御していくというような使い方が向いているのではないかということです。

 具体的なサンプル・アプリの例を挙げると、飛行場にいる飛行機の状態を可視化して一目で分かるようにし、クリックやドラッグ&ドロップでビジュアルに操作するものなどです。従来のWindowsフォームでこのようなアプリを作ろうとすると、さまざまな文字データを基に人間が判断をしなければならなかったのですが、WPFならもっと直感的なアプリが作れます。

WPFを有効に活用したアプリの例
このサンプル・アプリでは、ズームしたり表示範囲を変更したりといった直感的な操作が行える。

八巻 個人的には、そこまでビジュアルなアプリではなくても、いまあるような業務アプリでもWPFを使える可能性はあるのではないかと思っています。例えばWindowsフォームはWindows OSの仕組みやWin32 APIに完全に依存しているので、ボタンやコンボボックスなどのコントロールはその依存に制限されてしまい、自由な表現や機能を持たせることが難しかったのですが、WPFであればもっと使いやすいボタンやコンボボックスを自由に作成・カスタマイズすることが簡単にできます。

6. .NETを学ぶVB開発者へのひと言

株式会社デジタルアドバンテージ
Windows Server Insider編集部
編集長
小川 誉久

小川 それではそろそろ時間になりましたので、最後にひと言ずつお願いします。

八巻 .NETは1.0、1.1、2.0、3.0、3.5、さらに3.5 SP1と目まぐるしく早く変化していっているので技術の習得が大変だという印象を持たれている方が多いのではないかと思います。しかしながら、基調講演で新村さんが話されたようなCLRの仕組みは.NETが登場してからほとんど変わっていませんし、今後もあまり変わらないと思います。ですから、まずはCLRを学んでいただきたいと思います。そうしておけば、この先、新しい.NETテクノロジが登場してきても、そう怖がるものではなくなってくるのではないかと思います。

福岡 VB6開発者が.NETを学ぶには、まずは手元のVB6の小さなソース・コードをVB.NETで書き直してみてください。これだけでも.NETを効率的に学べます。なぜかというと、業務アプリ自体の実装内容はVB6でも.NETでもそれほど変わらないからです。

 小さなソース・コードを.NETにできれば、ほかの大規模なコードも.NETで開発できるはずです。そしてそこからWPFやらLINQやらを徐々に学んでいけばよいと思います。そういう意味で、VB開発者はゴールに近い位置からスタートを切れるという有利な位置にいます。.NETは大変だと思うよりは、いままでVB6で開発してきてよかったなと思えるのではないでしょうか。

新村 実はわたしは.NETを覚えるのにたった10日間しか猶予が与えられず、苦労した思い出があります。そのときは、弊社の赤間が執筆した『.NETエンタープライズWebアプリケーション 開発技術大全』シリーズ(通称「赤間本」)を一気に読み、掲載されているコードを片っ端から手で書いてみて.NETを覚えました。そこで実感したのは、やはりコードを自分の手で実際に書いてみるのが一番身に付くということです。

 マイクロソフトはVisual Basic 2008 Express Editionという無償のツールも提供していますので、ぜひそういったものをご活用いただき、ご自身の手でコードを書いてみるということを実践していただけたらと思います。

小川 本日はどうもありがとうございました。End of Article

 

 INDEX
  VB研公開ゼミ議事録
  第6回 VB開発者が最新.NET Frameworkを効率よく習得する方法
    1..NET Frameworkの基礎(ランタイム編)
  2..NET Frameworkの基礎(言語&フレームワーク編)

インデックス・ページヘ  「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