3ステップでWindowsアプリケーションを作れる

図4●作成する「足し算」プログラム。
テキストボックスに数値を入力して[足す]ボタンをクリックすると,上に表示されている数値がその分だけ増える
図5●Visual Studio .NETでプロジェクトを新規作成する
図6●「Windowsアプリケーション」を新規作成した直後の状態。
グリッドが表示されている「フォーム」に部品を貼り付けてユーザー・インタフェースを作る
図7●マウス操作でウィンドウを作る
図8●ステップ1のマウス操作で追加されたコード
リスト2●ボタンがクリックされたときに実行する処理のプログラム
図9●コード入力時に表示される候補リスト
図10●ビルドに失敗した時のエラー表示例
図11●ブレークポイントが設定された行
図12●実行が中断された状態。
止まっている行に命令カウンタ(矢印のアイコン)が表示される(画面上で行は反転表示)。マウス・カーソルを重ねた“textBox1”の保持するデータがツールチップに表示されている

 では実際にVS .NETを使ってアプリケーションを作りながら,IDEを使うとプログラミングがどれくらい楽になるかを見てみましょう。

 VS .NETでは,ウィンドウを一枚だけ持つ典型的なC#アプリケーションを,たった3ステップで作れるようになっています。ステップ1はウィンドウへの部品の貼り付け,ステップ2は貼り付けた部品の各種設定,ステップ3は部品の動作のプログラム記述です。

 例として,次々に数字を足していくプログラムを作ってみます。数字を入力してボタンをクリックすると,合計欄の数字がその分だけ増えるという単純なものです(図4)。

 VS .NETでは一つのアプリケーションにかかわる様々なファイルを「プロジェクト」という単位にまとめて管理しています。さらに,関連し合った複数のプロジェクトを「ソリューション」という単位にまとめて管理できます。VS .NETで新しくアプリケーションの開発を始めるにはVS .NET起動後に「新しいプロジェクト」ボタンをクリックして「新しいプロジェクト」ダイアログボックスを開きます(図5[拡大表示])。ここではC#を使ってWindowsアプリケーションを作るので,「プロジェクトの種類」で「Visual C#プロジェクト」を,「テンプレート」の選択肢で「Windowsアプリケーション」をそれぞれ選びます。次にプロジェクトの名前を決めて「OK」ボタンをクリックします。

 すると,図6[拡大表示]のように“グリッド”と呼ぶ細い点が打たれたウィンドウが中央に表示されます。このウィンドウを「フォーム」と呼び,これから作るアプリケーションのユーザー・インタフェースの土台になります。

ステップ1:マウス操作だけで画面が完成

 まずはステップ1です。操作は,ツールボックスからフォーム上に部品をドラッグ・アンド・ドロップするだけです。必要な部品は,数字を入力するテキストボックス(TextBox)と,入力した数字を足し合わせるボタン(Button),合計値を表示するラベル(Label)の三つです。部品の数だけのマウス操作で完成します(図7[拡大表示])。

 この操作の裏側では,VS.NETが何十行ものコードを生成しています。フォームが表示されている領域の上に“Form1.cs [デザイン]”というタブが表示されていますが,Form1.csという名前が示す通り,この画面には対応するC#のソースコードがあるのです。[表示]メニューで[コード]を選ぶと,画面がForm1.csのコードに切り替わります*14。コードが表示されている領域のすぐ上にドロップダウン・リストボックスが二つ表示されています。そのうち右側にあるものをクリックして「InitializeComponent( )」を選ぶと,今マウス操作で追加した部品を実際のユーザー・インタフェースとして利用できるようにするためのコードが追加されていることを確認できます(図8[拡大表示])。仮にメモ帳を使ってプログラミングしていれば,これらのコードをすべて正確に入力しなければなりません。

ステップ2:マウス操作と数値入力で初期設定

 次のステップ2ではそれぞれの部品に必要な設定をします。一つひとつの部品は,自分自身の表示位置や大きさを,「プロパティ」と呼ぶ様々なデータとして保持しています。マウス操作で部品を動かせば,それに応じてプロパティを設定するコードが書き換わりますが,VS .NETの[プロパティウィンドウ]で数値を直接入力することでも設定できます。マウス操作とプロパティウィンドウでの設定は表裏一体で,どちらで設定しても結果は同じです。プロパティウィンドウで「Location」や「Size」などのプロパティを変えれば,それに合わせてフォーム設計画面での表示も変化します。

 今回は単純なフォームなのでマウスで適当に位置をそろえ,プロパティウィンドウではラベルとテキストボックスの「Text」プロパティを半角数字の“0”に,ボタンの「Text」プロパティを“足す”という文字列に変更して図4のようなフォームを作ってください。ステップ2はこれで終了です。

ステップ3:最小限のC#コードだけ書けば完成

 ここまではC#のプログラムを一切書かずに済みました。最後のステップ3でようやくC#のプログラムを記述します。といっても必要なのはボタンをクリックしたときの動作だけです。

 フォームのデザイン画面に移り,「足す」ボタンをダブルクリックします。すると,画面が自動的にコード表示に切り替わります。このときカーソルは“private void button1_Click”と書かれた行に続くブロックの中に移動します。名前から何となく想像がつくかもしれません。このブロックは,ボタンをクリックしたときに実行されるブロックです。メモ帳で書くなら,ボタンがクリックされたときに実行するメソッドを作成して,そのメソッドがボタンのクリック時に実行されるように指定するコードを記述する必要があります。先ほどダブルクリックした瞬間にこうしたコードは自動生成されたのです。

 「足す」ボタンの処理で必要なのは,(1)ラベルに書かれている現在の合計値と,テキストボックスに入力されている数値を足し合わせること,(2)その答えをラベルに書き込むこと――の二つの手順で,リスト2[拡大表示]がそのコードです。“=”の右辺で二つの値を足し合わせ,それを左辺に書き込んでいます。このコードの意味を完全に理解するには次回以降で説明する「オブジェクト」や「型」の知識が必要です。今のところは深く考えずにこのまま入力してください。

 ここでコードを入力していくと,カーソルの右下に時々,リストボックスが表示されるのを確認できると思います(図9[拡大表示])。これは入力したコードをVS .NETが分析して,適切なコードの候補をその場でリストにして示してくれているのです。途中まで入力して望む候補が出たらあとはこのリストから選ぶようにすれば,長い文字列でも間違いなく入力できます。これもIDEを使う大きなメリットの一つです*15

プログラムを実行しよう

 これでステップ3の部品の動作の記述も完成しました。いよいよ実行してみましょう。メモ帳で書いたときはコマンドプロンプトを開いてcsc.exeでコンパイルしましたが,VS .NETからはもっと簡単にコンパイルできます。

 VS .NETでは,プログラムのコンパイル処理も含め,プロジェクトに対応したアプリケーションを生成する操作全体を「ビルド」と呼んでいます。[ビルド]メニューから[ソリューションのビルド]または[<プロジェクト名>のビルド]を選択すれば,プログラムがコンパイルされます*16

 ビルドには二種類あり,完成品を作るための「リリース(Release)」ビルドと,実行形式ファイル中にデバッグ用の様々な付加情報を含める「デバッグ(Debug)」ビルドがあります。どちらのビルドにするかはツールバーにある,DebugとReleaseを選ぶドロップダウン・リストボックスで設定できます。一般にプログラムが完成するまでにはミスの修正を繰り返すので,とりあえずはデバッグ・ビルドでテストし,完成した段階でリリース・ビルドを作るという流れになります*17

 実行形式のファイルが作成される場所は,プロジェクトを保存するフォルダの下のbinフォルダの下のReleaseかDebugです。このフォルダは,プロジェクトのプロパティで設定できます。ビルドしたアプリケーションを実行するには,ツールバーの実行ボタン(青い右向き三角マーク)をクリックするか,キーボードのF5キーを押します。

アプリケーションを修正/デバッグする

 ある程度の大きさのアプリケーションになると,一回のビルド操作で正常にビルドできることはなかなかありません。メモ帳でのプログラミングなら,コンパイラの出力したエラー・メッセージとソースコードを突き合わせてのデバッグ作業になりますが,VS .NETはもっと効率的です。ビルドが失敗すると,「タスク一覧」ウィンドウに失敗の原因になったエラーがリストアップされるのです(図10[拡大表示])。表示されているエラーをダブルクリックすると,そのエラーが見つかった行に移動し,原因となった文字列が選択状態になります。どのように修正すべきかはエラー・メッセージなどから判断する必要がありますが,ビルドが失敗するようなエラーの多くは,単純な記述ミスなので簡単に修正できるはずです。

 ところが,全く新しく作るアプリケーションでは,ビルドが完了してもプログラムのどこかが論理的に間違っていて,設計した通りの結果が得られないということがあります。例えば,何らかの計算結果の表示が異常な場合,その原因は,表示する部分の間違いか,計算式の間違い,もしくは計算する元の値がおかしい,などいくつもの可能性が考えられます。このような場合に威力を発揮するのがデバッグ機能です。

 VS .NETのデバッグ機能では,プログラムの実行をソースコード中の好きな行で一時停止して,その瞬間の状況を調べられます。まず,一時停止させたい行に「ブレークポイント」を設定しておきます。具体的には,設定したい行のコード表示領域の左端の「インジケータマージン」をクリックします。するとそこに茶色の丸(●)が表示され,その行全体が茶色に反転表示します。ここでは先のステップ3で追加した行に設定してみましょう(図11[拡大表示])。行にカーソルがある場合はF9キーを押すことでも設定できます。

 ブレークポイントを設定したら,「デバッグ」構成でビルドし,「デバッグ」メニューの「開始」でプログラムを起動します。処理がブレークポイントにさしかかると実行が一時停止し,次に実行する行が黄色く反転表示されます(図12[拡大表示])。

 この状態で様々なことを調べられます。ステップ3で追加した行で一時停止していると思いますが,その行の“=”の左右の文字列にマウス・カーソルを重ねてみてください。内容がツールチップで表示されます。先のように不具合にいろいろな原因が考えられる場合,それぞれの処理をしている個所にこのようなブレークポイントを設定して実行中の状態を調べれば,原因を突き止める有力な手がかりになります。

 今回はあまりC#プログラムの中身に触れていないので簡単な紹介にとどめますが,プログラム中でデータを保持する「変数」の値をツールチップ以外で確認したり,「コマンド」ウィンドウで,プログラム内のデータを使ってちょっとした計算を実行してみるといったこともできます。一行ずつ実行させて一時停止させるということもできます。プログラムを最初に実行させたときと同様,実行ボタンをクリックすれば,一時停止した状態を解除できます。このとき,ただ再開するのではなく,変数の内容を強制的に変更して実行を再開させることもできます。

☆               ☆               ☆

 今回は,VS .NETを使ったC#プログラミングの一番基本的な流れを紹介しました。後は勉強次第でどんなプログラムだって書けます。次回からは,クラスを作っていく実際のプログラミングを解説していきます。VS .NETにはここに紹介しきれないほどたくさんの機能があるので,手に入れたらいろいろと試して手になじませておきましょう。