第6章. C#

C#は、.NETにおいて中核となる、比較的新しい言語です。そして、いろいろなところが、すごくJavaに似ています。

ところで、MSのVisual Studio.NETはWin9x系にはインストールできません。.Net Framework SDKも基本的にNT系向けです。Win Meの私には、C#は縁の無い開発言語だと思っていました。

もちろん、98でもSEでもMeでも、.NETの実行環境は構築できます。でも、開発環境はダメ…というのが、MSのサイトを見た印象でした。

ところが、ふとしたことから、.NETのランタイム環境の中に、csc.exe vbc.exe jsc.exe というコンパイラが含まれていて、これを使えば、C#/VB.NET/JScript.NET のコンパイルができることがわかりました。

また、【SharpDevelop】というVC#.NETに似たフリーのIDEは、Win9xでも使えることがわかりました。使ってみると、結構使いやすいです。

ということで、この章では、主にwin 9xでもできる、C#の勉強について書きたいと思います。

準備 (Win9x系)

98系では、こちらのページから、再頒布可能なパッケージというのをダウンロードしても良いのですが、それよりも、Windows Updateを使った方が簡単だし、新しいバージョン1.1が手に入ります。(2003/5/29現在)

Windows updateのページで更新をスキャンすると、「重要な更新」の次のレベルの「推奨する更新」の中に、Microsoft .NET Framework version1.1 日本語版が見つかります。25MBくらいのサイズです。それを選択してダウンロード→インストールします。

インストール後には、C:\WINDOWS\Microsoft.NETというフォルダが出来ます。この中を探していくと、先ほど挙げた実行ファイルも見つかります。ここに一応パスを通しておいて下さい。(今の時点ではC:\WINDOWS\Microsoft.NET\Framework\v1.1.4322でした。)

再起動後、MS-DOSプロンプトを開いて、cscと打ってみてください。

C:\My Documents>csc
Microsoft(R) Visual C# .NET Compiler version 7.10.3052.4
for Microsoft(R) .NET Framework version 1.1.4322
Copyright (C) Microsoft Corporation 2001-2002. All rights reserved.

fatal error CS2008: 入力が指定されていません。

と表示されれば、パスは通っています。

NT系の方は…

上の例は、.NET Framework SDKをインストールできない9x系のやり方です。.NET Framework SDKをインストールできる環境の方は、そちらをインストールした方が、いろいろ良い物が手に入ってお得です。SDKまでは不要というならば、Windows Update経由で、同様に.NET Frameworkが入手できます。

フロントエンドソフトの入手

【CPad for C#.NET】をきときとさんから、ダウンロードしてきます。初めて起動したときに、csc.exeの場所などを訊かれるままに設定するだけですので簡単です。あとは、このソフトのエディタ上でコードを書いて、コンパイル→実行をすると、結果が表示されます。ちなみに、このソフトを使えば、OSレベルでパスを通しておくことは不要になります。

ちょっと、サンプルをコンパイルしてみましょう。せっかくだから窓プログラムにしてみます。C++の章ではメッセージボックスを出してみましたが、今度は普通のウインドウです。Test.csという名前で一旦保存してから、ツールバーの三角ボタンです。(あるいはF9キー)

using System.Windows.Forms;

class Test : Form{
    public static void Main(){
        Application.Run( new Test() );
    }
}

1つだけ気をつけることは、これはコンソールプログラムではありませんから、/t:winexe というオプションを付けてコンパイルしてください。【CPad for C#.NET】ならば、実行|コンパイル時パラメータ で設定出来ます。

さて、下のようなウインドウが表示されましたか?(50%縮小図)
窓1
タイトルが無かったりしますけど、きちんとドラッグで移動・変形も出来るし、最小化・最大化も出来ます。左上隅のシステムアイコンも有効です。これはなんでもないようなことに思えるけれど、C++とかで1から窓を作った経験がある人にとっては驚異的なことです。C++で書いたら、APIを呼び出したり、メッセージループさせたりと、この数十倍のコードが必要です。(第4章参照) 上の例では、Windows.FormsのFormというクラスを継承しているからこんなに簡単なんですね。あらかじめ提供されている既製の機能を拝借しちゃってるわけです。

もちろんタイトルは入れられますよ。もうちょっとコードを書き足せば・・・。こんな感じです。さっきのを書き換えてコンパイルしてみてください。

using System.Windows.Forms;
using System.Drawing;

class Test : Form {
    Test(){
        this.Size=new Size(200,100);
        this.Text="タイトル";
        this.BackColor=Color.Black;
    }	

    public static void Main() {
        Application.Run(new Test());
    }

    override protected void OnPaint(PaintEventArgs e) {
        Graphics g = e.Graphics;
        Font ft = new Font("MS 明朝",20,FontStyle.Bold);
        PointF pt = new PointF(0,5);
        g.DrawString("簡単に窓を\n作れます。",ft,Brushes.Yellow,pt);
    }
}

窓2

【CPad for C#.NET】って、シェアウェアだよね

う〜ん。1,680円の送金義務のないシェアですね。C++版と一緒です。無料で環境を整えるのが、このサイトの主旨なので、送金しないで使うのがイヤな人は使えないということになります。そういう方は、DOS窓からコンパイルするか、【SharpDevelop】を使いましょう。

【SharpDevelop】

【SharpDevelop】は、C#以外の言語でも使えるIDEなのですが、C#で最も真価を発揮します。その理由は、フォームデザイナーが現在のところ、C#のみで使えるからです。Visual BasicやDelphiのようなRADであるということが【SharpDevelop】の最大の魅力なのです。

その上、Visual C#がインストールできないWin.9xにもインストールできます。まだ明らかなバグもありますが、フリーソフトとは思えない高機能を考えると、ぜひとも使いこなしたいソフトともいえます。

入手法

本家よりも SharpDevelop-jp さんの方が、日本語でわかりやすいです。また、日本語用リソースも配布されていますので同時に入手できます。一緒に日本語版ヘルプも入手した方が良いと思います。これには、open office org版とPDF版があります。open office orgを持っていない人は、PDF版を選びましょう。

本体は、窓の杜からもダウンロードできます。

インストール

インストールの方法は、SharpDevelop-jp さんに解説があります。そのとおりに実行してください。【SharpDevelop】は特別な設定なしに、インストールするだけで、.NETのコンパイラを認識します。

使ってみよう

使ってみる前に、日本語版ヘルプを、一読しましょう。バージョンが昔のものですし、読まなくてもいいようなところもありますが、おおまかな使い方がわかると思います。

それでは起動してみましょう。スプラッシュウインドウが出て、・・・・・・・・・画面が出ました。【SharpDevelop】そのものが.NETアプリなので、起動に時間がかかります。うちのPCで初回20秒くらいかかります。次のバージョンからはSWTだということで、やっぱり遅そうです。

【SharpDevelop】は標準で日本語に対応しています。オプション設定で「日の丸」を選びましょう。メニューなどが日本語になります。

【SharpDevelop】はマルチウインドウプログラムで、個々のウインドウをあっちにくっつけたり、こっちにフローティングさせたり、グループ化させたりと、かなり自由な配置が出来ます。自分の使いやすい配置にしておきましょう。

【SharpDevelop】でプログラミングするときは、コンバインを新規作成して行うのが基本です。コンパイルのオプションも適正な設定に自動設定されますし、管理の面でも、あとからアプローチしやすいでしょう。

それではメニューから ファイル|新規作成|コンバイン を実行します。
新しいプロジェクト
「カテゴリ」はC#、「テンプレート」は、初めてなので、コンソールプロジェクトを選んでみましょう。「名前」欄に好きな名前を入れます。自動的に2段下の「プロジェクト名」にも同じ名前が入ります。このようにしておくと、専用保存フォルダが作られて、その中にファイルが作成されます。

「OK」すると、次のような画面になります。
初期画面
このようなコードが、最初から書かれています。一般的なHello World!ですね。早速コンパイル→実行してみましょう。印をつけたツールバーをクリックするか、F5キーです。

あれ、DOS窓が一瞬開いて、すぐ閉じちゃいました。アウトプットのところを見るとビルド完了と書いてあるので、一応成功はしているようです。これは第4章の【Dev-C++】のところで書いた現象と同じですね。対策として、8行目と9行目の間に、Console.ReadLine(); の一文を入れて、再度挑戦してみましょう。

今度は、何かキーを押すまでDOS窓が閉じなくなりました。これで完成です。

それでは次に、いよいよ本命のGUIプログラムに挑戦してみましょう。まず、ファイル|閉じる|コンバイン で現在のコンバインを閉じます。そのあと、 ファイル|新規作成|コンバイン です。
フォームプロジェクト
先ほどの画面で、今度はWindowsフォームプロジェクトを選びます。適当に名前をつけて「OK」すると既にコードがエディタに記入されています。コンパイル→実行してみましょう。フォームが一つ表示されました。(今度は勝手に閉じません。) ×でフォームを閉じてください。ここまでが基本です。

エディタ部分の下側を見ると、Designというタブがあるのが見つかります。これを押すとフォームが表示されます。これがフォームデザイナーです。ためしに、フォームの形を変えて再実行してみてください。きちんと反映されたはずです。

プロパティウインドウとツールウインドウのSystem Windows Formsタブを表示させておいてください。System Windows Formsタブの中から「button」を選んでクリックしてから、フォーム上でクリックしてください。フォーム上にボタンが配置されます。キャプションがbuttonになっていますね。これでは味気ないので、プロパティウインドウのTextの欄をダブルクリックして、好きな文字に変更しましょう。今は「メッセージ」に変えてみます。フォームのタイトル This is my form も変えちゃいましょう。1回フォームをクリックして選択してから、ボタンのときと同様のやり方で、「最初のプログラム」に変えてみます。下図のようになりましたか?
フォーム1
Visual BasicやDelphiを使ったことのある方ならば、おなじみの操作だと思います。ということは、イベントハンドラだなということで、メッセージというボタンをダブルクリックしてください。すると、エディタ画面に切り替わります。
追加コード
先ほどのコード中に、上のような部分が追加されています。名前から予想できるとおり、ボタンをクリックしたときのイベントハンドラを書くための部分です。タブキーなどを使ってカーソルを図の位置に移動し、何か書こうかなと思いましたが、初めてなのでC#の文法がわかりませんよね(笑)。ここはとりあえず練習なので、メニューから ツール|Messagebox Wizard を実行してください。下のような設定ウィザードが開きます。
Messagebox Wizard
お好きなメッセージやタイトルを書き、必要に応じてアイコンを選んで「完了」します。これでメッセージボックスを開くための必要なコードが書き込まれます。

【SharpDevelop】のメイン画面に戻ったら、再実行してみてください。表示されたフォームのボタンを押すと、メッセージが表示されましたか?どうです?プログラミングって楽しいでしょ。

ツールのIL Dasmとかが、使えないんだけど…

これは、必要なファイルがMSの9x用パッケージには入っていないからで、SharpDevelopのせいではありません。もしこれが欲しければ、.NET Framework SDKをダウンロードしてください。この巨大ファイルを自己解凍せずに、解凍ソフトで分解していって必要なファイルを引っ張り出すか、通常通りインストールして行き、インストールエラーメッセージが出た段階で、TEMPフォルダから必要なファイルを引きずり出すような裏ワザを使います。ildasm.exeやWinCV.exeのほかに、いくつか有用な実行ファイルや、ヘルプが見つかります。

勉強になるサイト

C#や>NETネタは、@ITのInsider.NETに興味深い記事や連載が豊富にあります。丹念に探しましょう。基礎講座としては、WisdomSoftさんを紹介しておきます。


目次へ>  <前の章へ>  <次の章へ