キャッシングValue

C#とは?

 とりあえず、学校でプログラムを習っただけの人には、C#とCがどう違うのかが分からないと思います。簡単に言うと、CとC#は全く違います。C#は「関数」などと言う生易しい単位ではプログラムは構成されていません。また、ポインターをプログラム中で使うことはまずありません。(まぁ、それっぽいものは多々ありますが)ついでに言うと、苦労して行っていた文字列処理は勝手にやってくれます。唯一同じところ(似ているところ)があるとすれば構文です。ifやらforやらの構文は基本的に同じ形式をとっています。(評価式の部分は別ですが…)そのため、この講座の対象者が「Cの構文を理解している方」なのです。

C#の登場!

 さてさて、多くの専門書でも最初に書かれているので、本講座でもC#登場の流れについて簡単に説明を。とりあえず、昔にさかのぼって話をしましょう。とりあえず、世の中には「構造化プログラミング」という概念を持った「C」というそれはそれは便利なOSを書けてしまうほどの素晴らしい言語が登場しました。(かなり語弊と省略がありますが…)Cの登場の経過は某大学の〜概論と言う授業で聞いたと思います。そのため、省略(って、うちの大学だけか…)

 しかしながら、「C」では大規模プログラム(大体1万行程度?)を組むのが非常に大変でした。そこで、世の中の頭のいい人たちは「オブジェクト指向」という概念を取り入れた「C++」という言語を開発しました。これは大人気で素晴らしい「C」言語にオブジェクト指向の機能を付け加えたものです。そのため、「C」のコードは「C++」でもコンパイル可能です。オブジェクト指向の概念は、大規模なプログラムでも(上手く組めば)分かりやすくまとめることができます。また、同じコードを簡単に使いまわせる流用性も持っており、(上手く組んで、しっかり設計すれば)非常にスピーディーにプログラムを組むことができ、またそのプログラムの改造も容易に行うことができるようになりました。

 大規模プログラムには対応したのですが、時代はインターネット主流の時代に突入しました。そこで登場したのがC#!ではなく「Java」です。Microsoft大嫌いなSun Microsystems(個人的な主観入りです)がインターネット時代に対応したどんなマシンでも動く素晴らしい言語を開発したのです。「Java」はC++からオブジェクト指向概念を受け継ぎ、またJavaVMがインストールされているマシン上であればどのようなところでも動作します。「C++」とは互換性こそ無いものの、この画期的な言語仕様によって「Java」は「C++」と並んで大人気になりました。

 さて、そんな素晴らしい言語を開発されてしまい、あんまり面白くないのがMicrosoftさんです。(本当かどうかは知りませんが)そこで、Microsoftは(Javaに対抗すべく)「Java」のような完全なオブジェクト指向言語であり、コンポーネントさえ入っていればどこでも動作する「C#」を開発しました。また、改良に改良を重ねて複雑化した「C++」の機能の一部を切り捨て、ポインターなどの危険なメモリアクセスを禁止し、より安全な方法で環境を管理してくれます。今までは自分で明示的に解散しなくてはいけなかったメモリ領域もガベージコレクションにより自動的に解散してくれます。つまり、メモリリークなどの危険性が非常に少なくなったのです。そのほかにも、C#では外部コンポーネントの作成を標準でサポートしたり、スレットも言語レベルでサポートしています。

 こんな具合で、オブジェクト指向であり、様々な最新機能を搭載した「C#」が登場したわけです…(ふ〜長かった…)

.NET Framework

 まだあります。それだけC#は複雑なのです。C#はMicrosoftで開発が進んでいた「.NET Framework」用のコードを作成するための言語として開発されています。そのためC#をコンパイルするとMicrosoftの中間言語を含んだファイルにコンパイルされます。これはちょうどJavaの中間バイトコードと似ています。そして、C#のコードは.NET Frameworkがインストールされている環境下で動作します。つまり、C#で作られたプログラムは(将来的には)Windows以外の環境でも動作する(ようになるはずな)のです。

 C#の動作の仕組みを簡単に説明しておきます。まず、C#のコードをコンパイルするとMSILと言われる中間コードを含んだ実行ファイルが吐き出されます。それを、.NET Frameworkが入っている環境下で実行するとCLR(Common Language Runtime)が実行され、MSILコードで必要な部分をその環境下のネイティブコードへとコンパイルしなおします。そして、CLRによって吐き出されたネイティブコードが実際にコンピュータで実行されます。そのため、VMが解釈しながら進むJavaとヘ違い、ネイティブコードとして高速に動作します。

 上のことは、「まぁ、早く動いてくれるのだからイイか〜」と終わらせたいところですが、C#でプログラムを作って多くの人に配布する上で重要な部分を含んでいます。それは、「.NET Framework」が入っていない環境下では全く動作しないと言うところです。「.NET Framework」はWindows標準ではインストールされていません。(ロングホーン以降では.NET Frameworkが標準となります)そのため、配布の際には.NET Framework再配布用パッケージなどを添付する必要が出てきます。せっかく作っても使われないのは残念ですので、このことだけはしっかりと頭に入れておいてください。

難しかったのでまとめ

 難しい言葉を並べて何やら難しいことを長々と書いてしまいましたが、とにかく言いたかったことは…

1.C#はオブジェクト指向言語である
2.メモリー管理が安全に行われる
3.「.NET Framework」がないと動かない

簡単にまとめると以上の3点です。1の「オブジェクト指向」というのはここで説明するとまたまた非常に長くなってしまいますので、必要になったときに簡単に説明させてもらおうと思います。とりあえず、プログラムの組み方の発展的な手法とでも思ってください。2の「メモリー管理」というのは、メモリーの不正アクセスをコンパイラが気づいて禁止してくれるので、バグのあるプログラムを作っても環境を壊しませんし、しっかりと管理されているためプログラマーが管理に気を使う必要がありません。3は上で述べたとおりの注意事項です。

 そんな新しくて、高機能なC#を是非是非〜♪

開発環境を整える

 さて、ようやく環境を整えるところまで来ました。C#でプログラムを作る環境としてはいくつか考えられます。eclipseなどのフリーの環境も作ることができますし、最近ではボーランドもC#用の開発環境を出しています。しかし、上でも述べたとおりC#はMicrosoftが作った最新言語です。また.NET FrameworkあってのC#ですから、ここはやはりMicrosoftの開発環境を選ぶのが一番いいでしょう。

Visual C#.NETを買う

 上の理由からこの講座ではVisual C#.NETを使うことに決定します。また、現段階で製品として売り出されている「Version 2003」を使うことにします。ただ、VC#にも色々なパッケージがありますので、パッケージと値段と機能の関係を表にまとめておきます。

製品名備考価格
Visual Studio .NET Professional 2003通常パッケージ128,000円
アップグレード パッケージ64,800円
Visual C# .NET Standard 2003通常パッケージ19,800円
アカデミック パッケージ7,800円
Visual Studio .NET Academic 2003アカデミック パッケージ24,800円
Visual Studio .NET theSpoke Premium 2003学生個人向け4,830円

 上の表のほかにも、「MSDN Deluxe Edition」とか色々とあるのですが、趣味でゲームプログラムをする分には全く必要ないので省いておきます。ちなみに、価格はMicrosoftのページから引っ張ってきたものです。実際にはもう少し安く手に入るはずです。

 知っている人もいるとは思いますが、一応各パッケージの説明をしておきます。まず、「Visual C# .NET Standard」ですが、これは文字通り純粋に「C#」の開発環境のみが入っています。その他の言語での開発はできません。この講座内ではこれで十分ですが、C#の利点を活かしきるにはこれでは少し寂しいところがあります。もうひとつの「Visual Studio .NET」は、「Visual C#」に加え、「Visual C++」「Visual J#」「Visual Basic」が含まれた複合パッケージになっています。これだけ環境が揃えば、複数言語で開発なんてことも可能です。(まぁ、この講座ではどうでもいいことですが)
 次に、各パッケージの説明です。「アカデミックパッケージ」は、学生や教員の方のみが購入できるパッケージで、購入の際にレジで何らかの証明を提示しないと買えません。ちなみに、Microsoftのアカデミックパッケージは専門学校生や幼稚園児でも買えます。店的には間違った人に売っても痛くないので、証明書忘れても粘れば売ってもらえたりもします。(基本的に本人が買いに来てください。息子の分とかは基本的に売れません。あと、親子連れで小学生の子供に「Office」とか買わせるのもやめてください。某パソコンショップ店員より)
 通常版はそれ以外の一般の方が買うパッケージで、「アップグレード」版は以前のバージョン(Ver2002なり、6.0なり)を持っている方が購入できるパッケージです。

 で、この講座は一応学生向けと上で書いたので、本題に入りましょう。表の一番下、「Visual Studio .NET theSpoke Premium 2003」、この異常な安さで上で紹介したとおりの4本のソフトが入っています。購入対象は、中学生以上−大学生以下です。購入したら、レシートと学生証のコピーをMicrosoftに送って、メールでどうのこうのして2週間程度でようやくインストールできるという面倒なパッケージですが、5000円でおつりが来るのですからおもちゃ程度に購入してもほとんど痛くないでしょう。と、言うわけで学生なら間違いなく「Visual Studio .NET theSpoke Premium 2003」を買いましょう。(ちなみに、たまに「レシート捨ててしまったのですが」とか言うバカなお客さんがいますが、シリアルをとるときに絶対必要なので捨てないで下さい。再発行は、非常の面倒です。)

いよいよ、環境の構築

 さて、長々と話をしましたが、ようやくインストールです。と言っても、インストール手順なんてマニュアル見ながらCD入れて、画面に従っていれば終わることなので省略してしまいましょう。書くことがなくなってしまいますので、とりあえずインストール時の簡単な注意を難点か…

1.インストールはものすごく時間が掛かる
 Visual Studio のインストールはものすごく時間がかかります。CD3枚以上をパソコンにコピーしなくてはいけないので当然と言えば当然なのですが、VisualStudio本体のインストールの前に、環境を構築してと色々やらなくてはならない上に、ソフトのコピーが何故かものすごく遅いのです…大体3時間ぐらい掛かってしまいますので、十分に時間のあるときか、インストール中に買い物に行くなど適当に時間を潰してください。(インストールの様子を眺めているのが楽しい人には、至福のときかもしれませんが)

2.ソフトの初回起動はインターネットにつながる環境で
 これはVisual Studioの「アカデミックパッケージ」と「theSpoke Premium」のみの話ですが、ソフトを継続して使うにはインターネットにつなげてライセンスの承認を行う必要があります。最初にVisual Studioを立ち上げたときにそんなようなウィンドウが立ち上がると思います。もし、インターネットにつながっていない場合、電話で凄く長い桁の番号を言って、承認番号を受け取らなくてはなりません。初回起動はインターネットのつながる環境で行いましょう。

3.他のSDKの前に先ずインストール
 後の章で紹介しますが、Visual Studioの環境は別のソフトを入れることで色々と拡張することができますが、Visual Studioを最初にインストールしておかないと、後にインストールするSDKのVisualStudio用の機能がインストールされないことがあります。そうなると、色々と面倒なことをしなくてはいけないので注意しましょう。

 と、まぁ思いつくのはこのくらいです。それほど難しいことはありませんので、ご安心ください。

これでおしまい

 環境の構築と言うよりは、C#の豆知識的なことがほとんどでしたが、C#は基本的にソフトを入れてしまえば全て環境が整います。C++の用に面倒な環境構築は必要ありません。DirectXの章でSDKをインストールしますが、そのときもインストールすれば終了です。

 ですが、C#とはのところで書いたように配布先での実行環境を整えさせるのが非常に大変です。時期ウィンドウズから標準化される技術を使っているため仕方のないことですが、インターネット上で配布する際には色々と不便なことが多いと思います。普通の人は、.NET Frameworkの存在すら知らないのですから…



 それでは、今回はこの辺りで。次回は、C#のプロジェクトの作り方とフォームデザインの仕方、プログラムの書き方(というか、書き込む場所)を簡単に説明します。コード自体の説明も多少入る予定ですが、とりあえず基本的なところだけ触れます。