2000年6月にマイクロソフトが「Microsoft .NET」を発表してから早くも11年。編集長目線で現時点の.NETを整理し直す。
2000年6月にマイクロソフトが「Microsoft .NET」を発表してから、およそ11年が過ぎた。2002年3月に、そのMicrosoft .NET対応のソフトウェア開発環境である「Visual Studio .NET」が正式リリースされたが、それから数えても9年の月日が流れている。
2011年現在、「初期の『.NET』と現在の『.NET』では意味が異なる」と、筆者は考えている。例えば、その当時のMicrosoft .NETについて解説した記事である「基礎解説 初めてのMicrosoft .NET」を現時点で読んで「.NET」を語ると、ほかの開発者と議論がかみ合わないはずだ。
そこで本稿では、「.NETとは何か?」について、これから新たに.NETを始める開発者に向けて、2011年時点の視点でまとめ直すことにした。
以降で説明する内容は、マイクロソフトが公式に説明している内容ではなく、.NETの記事編集を担当する筆者がいま現在で感じている「.NETとは何か」である。さまざまな方面から異論や反論もあるかもしれないが、「筆者なりの考え」ということでご容赦いただきたい。
冒頭から「Microsoft .NET」という用語を使ってきたが、ここ数年でこの単語を用いている開発者に出会ったことがないし、文章も見掛けない。すでに「Microsoft .NET」という用語は、誰からも使われなくなっている。
そもそも、「Microsoft .NET」とは何なのか?
「Microsoft .NET」とは、マイクロソフトが2000〜2005年ごろまでに目指していた「構想」「ビジョン」である。つまり、このビジョンがすでになくなってしまっているのである。消えたビジョンの話など知りたくもないかもしれないが、「.NETを正確に知るには避けて通れない」と筆者は考えているので、ここでそのビジョンの内容について簡単に説明させていただこう。
●過去のマイクロソフトのビジョン「Microsoft .NET」
Microsoft .NET構想とは、デスクトップPCやサーバ・システム、生活関連の電子機器(腕時計や冷蔵庫など)、携帯電話およびスマートフォン、タブレットなど(※筆者も驚いたが、この当時からスマートフォンやタブレットという単語は存在していた)、ありとあらゆる情報システム&情報機器を、いつでもどこでも、プライベートかビジネスかにかかわらず、インターネット経由で連携させることである。次の図は、この世界観を表している。
この図を見ても分かるとおり、マイクロソフトは当時、Microsoft .NETの接続技術として、「XML Webサービス」という通信(=Communication)技術を重要視していた。そこで華々しく登場したのが、SOAPをベースとするXML Webサービスと、それを手軽に作成できる「ASP.NET Webサービス」(詳細後述)である。
2002年当時は、このXML Webサービスが非常に重要になると、多くの技術者に信じられていた。
●変わりゆく通信技術。XML Webサービスの衰退
雲行きが怪しくなったのは、「Amazon Webサービス」(以降、AWS)が各種データをWeb API経由で提供し始めてからであったと筆者は記憶している。このWeb APIは、もちろんXML Webサービス(SOAP形式のAPI)をサポートしていたが、さらにもう1つの通信技術もサポートしていた。それがREST形式のAPIである。
(ネット検索して調べたところ)2003年の段階で、AWSのSOAP利用が15%であるのに対し、REST利用は85%もあった。筆者もこの当時からAWSを試していたが、高機能でセキュリティが高いSOAPよりも、手軽でシンプルなRESTを好んで使っていた。その当時から、SOAPは内容が豊富すぎて重く、「エンタープライズ向けの技術」という印象があったし、実際に効率良く使いこなすには、Visual Studioのような高機能な開発ツールが必要だった。それに対し、RESTは庶民派で手軽だった。
RESTの勢いをさらに加速させたのが、2005年ごろから流行したブログ(Blog)だった。ブログは基本的にRSSやAtomなどのXML形式のフィード出力機能を搭載したので、これらの技術は瞬く間に普及した。この技術の人気を見て、Webデベロッパーの間でこれらを進化させたAtomPubが登場した。AtomPubは、RESTスタイルに準拠した通信技術である。
これらの一連の時代の流れが、XML Webサービスの衰退を決定的なものにした。そのため、RESTを軽視してXML Webサービスを重んじてきたマイクロソフトは、その対応を迫られることになるのである。
●マイクロソフトのRESTスタイルへの全力対応
2007年ごろから、マイクロソフトはRESTへの対応を加速させていった。(.NETの技術内容について詳しくは後述するが).NET Framework 3.5のWCF(Windows Communication Foundation)にREST APIを作成できる機能が追加されたのを皮切りに、WCF Data Servicesという、データベースのデータをRESTスタイルのWeb APIで公開できる機能も登場している。ほかにも、マイクロソフトのクラウド・プラットフォームである「Windows Azure」の通信技術には、基本的にREST APIが用いられている。
●現時点で「.NET」という用語の持つ意味
以上のような歴史の流れから、Microsoft .NET構想で用いられる技術は最初の想定とは異なるものになってきている。しかも、「マイクロソフトがこのビジョンをいまだに目指している」という話をまったく聞かない。確かに、似ているビジョンに「3スクリーン+クラウド」というものなどがあるが、これは扱っている技術が異なっているし、そもそもこれを「Microsoft .NET」とは呼んでいない。
以上を踏まえて、やはり、「『.NET』という単語からは、ビジョンは消えうせた」と言い切るのである。
それでは、そこに残ったのは何か?
残ったのは、「Microsoft .NET」を具体化するための実装技術であるライブラリ兼フレームワークの「.NET Framework」だけである。
「.NETとは、何なのか?」という問いに対する、現時点でのまっとうな答えは「.NET Frameworkの略語(もしくは通称)です」ということになる。すべての開発者で共有すべきビジョンや思想が失われている現状では、むしろそれ以外の思惑を、この単語に含めるべきではないだろう。
そしてこれは、結果的に非常に良いことだったと思う。ビジョンを表す「Microsoft .NET」と、それを具現化するための「.NET Framework」という説明は、単に「.NET」と略された場合に見分けが付かなかったからだ。
もともとInsider.NETには、「『.NET』はビジョンを指す単語として扱い、『.NET Framework』は基本的に略さない」という編集上のルールがあった。2005年以降は、緩やかなビジョンの喪失に合わせてそういったルールもなくなっていき、最終的に「.NET」は「.NET Framework」のことを指すようになった。従って、2003年ごろの記事の「.NET」と、2010年ごろの記事の「.NET」では、それが指し示す意味が異なることに注意しなければならない。
それでは、改めて問い直そう。
「.NET Frameworkとは何か?」
以下では、これについて簡単に説明しよう。
●.NET Frameworkの構成
.NET Frameworkは、次の図のように、
から構成される(ちなみに2011年5月時点で、.NET Frameworkの最新版はバージョン「4」である。これまで主に「1.0」「2.0」「3.0」「3.5」「3.5 SP1」がリリースされている)。
以下では、この構成図の各要素について簡単に説明していこう。
●CLR(共通言語ランタイム)
.NETアプリケーションを実行するためのエンジンとして機能するのが、「CLR(Common Language Runtime)」である。
.NETアプリケーションのソース・コードは、アプリケーションの開発時にコンパイラによって「IL(Intermediate Language:中間言語)コード」と呼ばれる形式に変換される。そして、実際にエンド・ユーザーがそれを実行する段階で、CLRによってILコードからマシン・コードに変換される。マシン・コードに変換された.NETアプリケーションは、これまたCLRが提供するバージョン管理機能や、基本的なセキュリティ機能、「ガベージ・コレクション(Garbage Collection)」と呼ばれるメモリ管理機能などを利用しながら実行される。
このように.NETプログラムはCLRによって完全に管理されることから、.NETプログラムのことを「マネージ・コード(managed code)」と呼ぶ(これに対し、従来のプログラムは「アンマネージ・コード:unmanaged code」と呼ばれる)。
CLRの機能を詳しく知るには、「解説 インサイド .NET Framework [改訂版]」や「.NETの動作原理を基礎から理解する!」をお勧めする。
●BCL(基本クラス・ライブラリ)
プログラムを記述するうえで必要な、基本的なクラス群を提供する。例えば、文字列を扱うStringクラス(System名前空間)や、Webアクセスを扱うWebClientクラス(System.Net名前空間)、ファイル入出力を扱うFileクラス(System.IO名前空間)などが提供されている。
BCLの基本的な機能は、「.NET TIPS」から目的別に調べられる。
●ADO.NETデータセット
データセットは、データベースのデータを扱える技術である。.NETの初期から提供されているため、機能も豊富で安定しており、仕組みも優れているため、現在でも第一線で活用されている。
データセットについて学ぶには、「ADO.NET基礎講座」がお勧めだ。
●ADO.NET Entity Framework
Entity Frameworkは、.NET Framework 3.5 SP1で追加された新しいデータ・アクセス技術で、「エンティティ」を定義することによって、オブジェクト指向の考えにのっとったデータベースの取り扱いが行える技術である。最新の.NET Framework 4で機能が豊富になってきているので、注目度が増してきている。
Entity Frameworkについて詳しくは、「連載:ADO.NET Entity Framework入門」を参照してほしい。
●LINQ to SQL
LINQ to SQLとは、データベースへのデータのクエリが、C#やVB(Visual Basic)のソース・コードとして手軽に記述できる言語機能「LINQ(言語統合クエリ)」が活用できるデータ・アクセス技術である。.NET Framework 3.5で追加されたので比較的新しい技術だが、Entity Frameworkが登場し、その技術からは(LINQ to SQLとほぼ同等の機能を持つ)LINQ to Entitiesが提供されているため、比較的軽めのプログラム以外ではLINQ to SQLは使われなくなってきている。
LINQ to SQLについては、「特集:C#プログラマーのためのLINQ超入門」や「特集:VBプログラマーのためのLINQ超入門」を一読するとよい。
●WCF Data Services
WCF Data Services(初期のころは「ADO.NET Data Services」とも呼ばれていた)は、前述のEntity Frameworkなどのデータ・アクセス技術と組み合わせて、データベースへのデータ・アクセスを提供するREST API(このプロトコルは、「OData」と呼ばれる)を自動作成するための技術である。この技術は、.NET Framework 3.5 SP1で追加された。
WCF Data Servicesの詳細は、「RESTスタイルのWebサービスを手軽に公開する『ADO.NET Data Services』」を参照されたい。
●WCF(SOAPやREST)
WCF(Windows Communication Foundation)は、.NET Framework 3.0で追加された通信技術で、SOAP形式やRESTスタイルの通信を実現できる。現時点で、XML Webサービスを作成したい場合は、この技術を利用する。
WCFを学ぶには、「Windows Communication Foundation概説」と「連載:実践! WCFプログラミング」がお勧めだ。
●ASP.NET Webサービス
ASP.NET Webサービスは、.NETが誕生したときから提供されている通信技術で、SOAP形式のXML Webサービスを作成できる。「メソッドを記述する感覚で手軽にXML Webサービスを作成できる」というメリットがある。WCFが登場してからはWCFに代替されることが増えている。
ASP.NET Webサービスについては、「連載:Windowsフォーム開発入門【Visual Studio 2010対応】 リモート・データ活用術〜ASP.NET Webサービス編〜」を参考にしてほしい。
●ASP.NET Webフォーム
ASP.NET Webフォームは、初期の.NETから提供されているWebアプリケーション構築フレームワークである。主に従来のVB6開発者層をターゲットにしており、Windowsアプリケーションの開発に近い手法でWebアプリケーションを開発できるのが特徴だ。主にイントラネット向けのWebアプリケーションでよく使われている。
ASP.NET Webフォームを学ぶには、「連載:プログラミングASP.NET」がお勧めだ。
●ASP.NET MVC
ASP.NET MVCは、.NET Framework 3.5 SP1で追加された新しいWebアプリケーション構築フレームワークで、Web開発の世界では標準となっているMVC(Model-View-Controller)パターンに基づいてWebアプリケーション開発が行えるのが特徴だ。HTML5などのWeb標準対応やスマートフォン向けのWebサイト作成などでも活用しやすいため、特に最近、注目度が高まってきている。
ASP.NET MVCを学ぶなら、「連載:ASP.NET MVC入門【バージョン3対応】」や「連載:ASP.NET MVC入門」、もしくは「連載:マイクロソフト技術による標準化志向Web開発ことはじめ」がお勧めである。
●Windowsフォーム
Windowsフォームは、.NET Framework 1.0から提供されているWindowsアプリケーション構築用のフレームワークで、「Windowsフォーム上へのドラッグ&ドロップでコントロールを貼り付け、そのコントロールがエンド・ユーザーにより何らかの操作をされたときの処理コードを記述する」という開発スタイルが特徴である。現状のWindowsアプリケーションに必要な機能はそろっているので、定評があり、いまも広く使用されている。
Windowsフォームを学ぶには、「連載:Windowsフォーム開発入門【Visual Studio 2010対応】」が役立つだろう。
●WPF
WPFは、.NET Framework 3.0で追加されたWindowsアプリケーション構築フレームワークで、GPUを活用した高度なレンダリングと、「XAML」(「ざむる」と読む)というXML形式のデザイン言語が特徴である。UX(ユーザー・エクスペリエンス=エンド・ユーザーの使い勝手)の重要性が注目される中で、より高度なUI(ユーザー・インターフェイス)を構築できる技術として活用されている。
WPFを学ぶには、「連載:WPF入門」がお勧めだ。
●複数の開発言語のサポート
上の構成図には載せなかったが、.NET Frameworkの重要なポイントとして、複数言語の対応が挙げられる。具体的には、C#/VB/C++/F#などの言語が扱える。このほかにも、Ruby言語(IronRuby)やPython言語(IronPython)など、さまざまな言語が利用できる。
以上、「.NETとは何か?」について現時点の筆者の考えを述べ、さらに.NET Frameworkを知るための必要最小限の事項をできるだけ短くまとめてみた。
Copyright© Digital Advantage Corp. All Rights Reserved.