.NET/C#概要 -.NET 全貌-

ホームC#プログラミング応用講義 > .NET 全貌

目次

ネットワーク

C# 言語を習得する上で、また発展的な内容を学ぶ上で、「.NET」を理解せずに通り過ぎることはできません。ここでは .NET について理解を深めようと思います。
「.NET」という言葉を聞いて、インターネットを思い浮かべると .NET をまず理解できます。難しく考える前に、.NET という言葉からネットワークということを捉えてみましょう。

コンピューティングの歴史の中で、ネットワークが占める重要度はこれまで急激な勢いで成長してきました。この成長は今後も続いていくと考えられます。
この成長は主に「ADSL」の普及が大きく関わっています。インターネットというものを急に身近にさせたのは常時接続という環境でしょう。

ネットワーク社会においてその成長を助けたのは「HTTP」という転送方法と、「HTML」というデータ形式です。ホーム ページにアクセスする際に「http://」というワードをつけるのはご存知と思います。そ してホームページを構成する最もポピュラーなデータ形式が「HTML」です。

ネットワークの発展とともに、HTML だけでなく「サーバアプリケーション(Web アプリケーション)」が重要になりました。ショッピングサイトはすべてこれで動いていますし、単純に掲 示板なども Web アプリケーションで構成されています。

.NET 構想というのはこの Web アプリケーションを発達させることに重点が置かれ ています。発達というあいまいな言葉を使ったのは、その範囲が広いからです。
たとえば、プラットフォームを選ばないということもこのひとつです。モバイルの発達によって Web アプリケーションには実行(閲覧)環境も重要な項目のひとつになりました。

アプリケーションの巨大化とともに、そのシステム管理も重要な項目のひとつです。
このような広い範囲にわたって、巨大化するネットワーク社会に柔軟に対応できる環境を「.NET」 と呼びます

.NET がサポートされた環境は常にネットワークとの連携が強く、データベース管理な ども強力にサポートされます。あなたのパソコン・あなたのPDA・あなたの携帯電話、そして企業の中企 業同士、すべてが .NET 環境になるとそのすべてが連携する関係になります。

その連携の中で使われるプロトコルは特別なものではなく、HTTP がそのまま採用さ れているため、利用者には何の手間も要りません。セキュリティの面においても HTTP は洗練されてきましたし、HTTP が採用されていることは非常に重要です。

.NET とは何かを考えるときに細かいことをまず捉えず、ネットワークを重要視しているという点にまず注目してください。

プラットフォーム

ネットワークが多くの環境を結ぶことはすでに述べました。その中で重要になったのは「プラットフォーム」 という言葉 です。
このプラットフォームという言葉を大いに普及させたのは「Java」です。これまではすでに 述べました。

しかし、.NET においては Java におけるプラットフォームを選ばないということをさらに発展させているといえます。これはどちらかというと「パワー」の面において発展させています。

Java はインターネットでも携帯電話でも Windows でも Linux でも動きます。しかし残念ながら実行速度や Windows との連携は評価できません。
このプラットフォームを選ばない、どこでも実装できるという能力のまま、Windows との連携やパワーをアップさせたのが「.NET」です。

Windows 上とインターネット上でその .NET 環境を実装するのが「.NET Framework」です。これに関しては詳しく知る必要があるのであとで詳しく説明します。
Linux 上でも Mono プロジェクトを中心として徐々に実装されつつありますし、モバイルに関しては「.NET Compact Framework」がサポートします。

これらのプラットフォームサポート環境は私が今これを書いている時点では完全であるとはいえません。特に、Linux における Mono プロジェクトと、Windows における .NET Framework のサポートを比較すると、大きく .NET Framework がリードします。しかし、私がこれまで「Microsoft .NET」と書かず、「.NET」と書いてきたのはさまざまなところで .NET サポートが始まっているからです。

最も大きなことは「Delphi」の .NET サポートです。Borland 社が .NET サポートに意欲を注いでいることは大きく、この社は Borland C# Builder まで作っています。これからは Microsoft だけではなく、今後広い範囲で .NET がサポートされるのは確実です。

.NET Framework

これまで説明していなかった .NET Framework についてここでお話します。

まず、.NET Framework には新しい API が用意されています。この API は Win32 API とは違います。これは .NET 戦略の目的を実現させるために、Web 関連 API が多数用意されています。
その中でも XML が最も大きいです。これは次期マークアップ言語です。これを利用すれば幅広くデータを保存することができます。

ワードなどのソフトは独自の保存形式を採用しましたが、XML 対応形式で保存すれば互換性が一気に高くなります。バイナリデータではなくテキストデータで保存されるという点も魅力的です。ワードだけではなく、数式表 現など複雑なファイルの保存でも柔軟に対応できます。
XML に関してはこの辺で終わらせ、.NET Framework に話を戻します。

.NET Framework においてはその API がきれいに整理されていることも重 要です。名前空間というシステムが、名前の衝突などを防ぎ、関連性のある API (クラス) をまとめて整理します。

そして .NET Framework は API、つまり材料だけを提供するのではなく、実行環境も提供します。
.NET アプリケーションは OS の上で動作するのではなく、.NET Framework に組み込まれたエンジンの上で動作します

そのエンジンが「CLR(CommonLanguageRuntime)」で す。これを忘れては問題にならないというほど、この CLR の存在は重要です。.NET アプリケーションはすべてこの CLR の上で実行されます。
そしてこの CLR は実行するだけでなく監視もします。

これまでプログラマにゆだねられてきたメモリ管理セキュリティの考慮は不要になり、CLR がそれを代行してくれます。残念ながらウイルス作成者にとっては CLR の登場は止めを刺す存在になります。CLR 上で動くものは安全性が高いので、「マネージ(ド)コード(Managed Code)」 と呼ばれ、それ以外の普通のものを「アンマネージコード」と呼ばれます。

.NET Framework が提供するものはすべてプログラマ・ユーザの両方に利益をもたらすものです。.NET Framework はただの「枠組み」ではありません。質の高いクラスライブラリと実行環境を備えた強力かつ柔軟な枠組みです。

.NET を単純な言葉で説明するのが難しく、それを理解するのが難しいのはこのような広範囲にわたる戦略であるからです。

同じAPIの利用

「API」 という言葉が出てきて「また?」と思われるかもしれませんが、最後に始めに述べた「インターネッ ト」に話を戻します。

これまで Web アプリケーションWin32 API などの Windows アプリケーションに提供する強力なライブラリとはまったく無縁のものでした。
しかし、.NET がそれを変えてくれます。

.NET Framework における API はすべてではないもののその多くは Windows/Web アプリケーション両方で利用できるよう設計されています。
よって Windows アプリケーションでの知識はまったく無駄になることなく Web アプリケーションに移行できるという大きな利点があります。

Windows/Web アプリケーションで同じ API を利用できるという点は .NET においての特徴の1つですから、きちんと覚えておいてください。

[ ステップアップC# ] [ C#プログラミング応用講義 ]