トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
株式会社ヤザワ
矢沢久雄
第3回 WindowsアプリのことをWindows Formsアプリって言うんですよ!
はじめに
イベントドリブンのプログラミングスタイルは従来どおりだが...
オブジェクト指向プログラミングの知識が必須となる
フォームの継承は便利だ
COMコンポーネントも使える
おわりに

はじめに
これまで皆さんは、どのようにWindowsアプリケーションを作成してきたのでしょう。Visual Basic 5.0/6.0ユーザーなら、VBランタイムが提供する命令と各種のコンポーネントを使ってきたでしょう。Visual C++ 5.0/6.0ユーザーなら、MFCやATLといったクラスライブラリを使ってきたでしょう。.NETでは、これまでの手法をすべて忘れてください。まったく新しいクラスライブラリを使ってWindowsアプリケーションを作成するからです。今回は、Visual Basic .NETを使ってWindowsアプリケーションを作成する方法を説明します。
イベントドリブンのプログラミングスタイルは従来どおりだが...

使用されるクラスライブラリは全く新しいものに変ったのですが、Windowsアプリケーションを作成するためのプログラミングスタイルは、Visual Basic 5.0/6.0とVisual Basic .NETで同様です。まず、フォームにコントロールを貼り付け、プロパティウインドウでコントロールのプロパティを設定して、アプリケーションのユーザーインターフェイスをデザインします。次に、フォーム上でコントロールをダブルクリックすると表示されるコードエディタに、イベントドリブンで(イベントに応じて)コードを記述します。どうです。同じですね。ただし、フォームやコントロールが.NETのクラスライブラリとして提供されているので、Visual Basic 5.0/6.0ユーザーは、ちょっと違和感を感じるはずです。
簡単なサンプルプログラムを作成してみましょう。フォームに2つのテキストボックス、ラベル、およびボタンを貼り付けます。プロパティウインドウで、テキストボックスとラベルのTextプロパティに"0"を設定し、ボタンのTextプロパティに"実行"を設定し、フォームのTextプロパティに"加算プログラム"を設定します。これで、アプリケーションのユーザーインターフェイスが完成です(図1、図2)。

図1 プロパティウインドウ
図2 サンプルプログラムのユーザーインターフェイス

ここまでの説明だけでも、すでに違和感を感じているはずです。コントロールの呼び名に違いがあります。テキストボックスとラベルの呼び名は同じですが、従来のVisual Basic 5.0/6.0でコマンドボタンと呼ばれていたコントロールは、.NETではボタンと呼ばれます。コントロールのプロパティの名称にも違いがあります。従来は、フォームやコマンドボタンに表示する文字列を設定するプロパティはCaptionでしたが、.NETではTextになっています。このように変更された理由は、.NETでは、フォームやコントロールが新しいクラスクラスライブラリとして設計し直されているからです。
説明が遅くなりましたが、このプログラムは、ボタンをクリックすると2つのテキストボックスに入力された数値の加算結果がラベルに表示されるものです。ボタンをダブルクリックしてコードエディタを表示させて、リスト1に示したコードを入力すれば、プログラムは完成です。リスト1のコードには、違和感と言うよりも、従来とまったく違うと感じるでしょう。内部的な処理においても、従来のVBランタイムではなく、.NETの新しいクラスライブラリが使われるからです。

リスト1 ボタンがクリックされたときの処理(こちらをクリック)

.NETにおけるWindowsアプリケーションの作成は、従来とプログラミングスタイルは同じでも、使用するクラスライブラリがまったく異なるということをご理解していただけましたね。


オブジェクト指向プログラミングの知識が必須となる
Visual Basic .NETにしても、Visual C#にしても、.NET対応プログラミング言語は、すべてオブジェクト指向プログラミング言語です。「オブジェクト指向プログラミングなんて嫌いだぁ〜」などと言わずに、.NETを機会に勉強されてはいかがでしょう。.NETをオブジェクト指向プログラミングの学習教材だと思えば、楽しいものです。
オブジェクト指向プログラミングでは、いくつかの変数と関数をひとまとめにしたクラスを単位にプログラミングします。先ほど作成したWindowsプログラムの中でも様々なクラスが使われています。Visual Basic .NETによって自動生成されたコードも含めて、ソースコード全体の構造を見てみましょう(リスト2)。

リスト2 Windowsアプリケーションの構造(こちらをクリック)

Windowsアプリケーションは、System.Windows.Forms.Formクラスを継承した(既存のクラスの機能を引き継いだ)Form1クラスとなっています。フォームに貼り付けたコントロールの正体は、System.Windows.Forms.TextBoxクラス、System.Windows.Forms.Labelクラス、およびSystem.Windows.Forms.Buttonクラスです。このように、何でもかんでもクラスなのがオブジェクト指向プログラミングの特徴です。System.Windows.Formsネームスペースがフォームやコントロールを表すクラスを提供するので、.NETのWindowsアプリケーションのことを「Windows Formsアプリケーション」と呼ぶことがあります。

フォームの継承は便利だ
「オブジェクト指向プログラミングって便利だなぁ」と感じていただけるサンプルをお見せしましょう。Windowsアプリケーションは、あらかじめ.NETのクラスライブラリが提供しているSystem.Windows.Forms.Formクラスを継承して作成されていました。System.Windows.Forms.Formクラスの中で、すべてのWindowsアプリケーションに共通する機能が定義されているわけです。さらに、皆さんのWindowsアプリケーションを表すForm1クラスを継承して新たなフォームを作成することもできます。この機能を使うと、よく使うフォームの共通的な機能やユーザーインターフェイスを部品化して効率的に再利用できます。
フォームを部品化するには、リスト2のForm1クラスと同じコードをクラスライブラリ(DLLファイル)として作成します。このクラスライブラリを継承して新たなWindowsアプリエケーションを作成すれば、コントロールを貼り付けることも、コードを記述することもなく、Form1クラスと同じ機能を持ったものとなります。後は、必要に応じて新たなコントロールを貼り付け、そのコントロールのためだけのコードを記述すればよいのです。
図3は、Form1クラスを継承してMyFormクラスというWindowsアプリケーションを作成したものです(コード上Public Class MyForm Inherts Form1とします)。ここでは、新たに減算を行う[減算実行]ボタンを追加しています。

図3 フォームの継承で作成されたアプリケーション

●COMコンポーネントも使える
筆者がアドバイザリースタッフをしているグレープシティ(旧:文化オリエント)は、Visual Basic 5.0/6.0のためのコンポーネント(ActiveXコントロールやCOMコンポーネントと呼ばれる)を数多く開発・販売してきました。高度なグリッドを提供するコンポーネントや、様々な画像ファイルを処理できるコンポーネントなどがあります。手前味噌で恐縮ですが、このようなコンポーネントを使えば、高度な機能を持ったWindowsアプリケーションを驚くほど効率的に作成できます。グレープシティのコンポーネントは、.NETで使えるのでしょうか?
嬉しいことに答えはYESです。Visual Studio .NETの「プロジェクト」メニューから「参照の追加」を選択すると、図4に示したウインドウが表示されます。「.NET」タブページと「COM」タブページがあるのがわかりますね。「.NET」タブページは、.NETネイティブ(すなわち中間コードの)コンポーネントを指定するものです。「COM」タブページは、従来のコンポーネントを指定するためのものです。.NET Frameworkでは、RCW(Runtime Callable Wrapper)という仕組みによって、従来のコンポーネントの呼び出しを実現しています。

図4 .NETでは従来のコンポーネントも使える

ただし、ちょっとだけ注意してほしいことがあります。それは、従来のコンポーネントが使えるからといって、すべての機能が100%問題なく動作するかどかは、実際に確認にしてみないと保証できないということです。念には念を入れるため、グレープシティでは、動作結果をWebページなどで随時公開していく予定です。RCWという仕組みがワンクッション入ることで、コンポーネントの動作が遅くなることも事実です。グレープシティでは、従来のコンポーネントと同機能(または+α)の.NETネイティブなコンポーネントを開発中です(宣伝みたいでゴメンサイ)。

●おわりに
「Windowsアプリケーションの作成方法が、ずいぶん変っちゃったなぁ。覚えるのが面倒だなぁ...」と思われたかもしれませんね。ごもっともです。従来のVisual Basic 5.0/6.0で目的が達成できるなら、Visual Basic .NETでWindowsアプリケーションを作る必要などありません。しかし、Visual Basic .NET(および他の.NET対応プログラミング言語)を使うメリットもたくさんあるのですよ。

【メリット1】.NETでは、次回説明する予定のWebアプリケーションが、今回説明したWindowsアプリケーションと同じスタイルで作成できるます。新しいWindowsアプリケーションの開発スタイルに慣れておいて損はありません。

【メリット2】.NETのWindowsアプリケーションなら、驚くほど簡単にXML Webサービスを利用することができます。Windowsアプリケーションをユーザーインターフェイスとして、その背後でXML Webサービスを呼び出すという新しいスタイルのWebアプリケーションを実現できます。具体的なサンプルは、最終回で紹介します。

【メリット3】.NETでは、すべてのプログラミング言語が同じクラスライブラリを使います。System.Windows.Formsネームスペースが提供するクラスライブラリを覚えておいて損はありません。もしも、Visual C#などの他のプログラミング言語を使うことになっても、心配無用なのです。

【メリット4】フォームの継承のように、オブジェクト指向言語ならではの機能を使ってプログラミングを効率化できます。プログラムの構成要素をどんどんコンポーネント化(クラス化)していけば、それを.NET対応のすべてのプログラミング言語から再利用できます。

【メリット5】将来的に.NET FrameworkがUnixなど他の環境に移植されたら、同じWindowsアプリケーションをそのまま実行できます。

いかがでしょう? .NETでWindowsアプリケーションを作ってみようという気持になってきたでしょう!




< 今後の予定 >


第4回 ASPがASP .NETに変って何でもかんでも楽になっちゃった!
Webアプリケーションの構造と作成方法を説明します。何が変ったかがわかります。
第5回 XML Webサービスは、.NETの目玉商品なんです!
XML Webサービスのコンセプトと、基本的な作成方法を説明します。あなたのアイディアが広がります。
PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.