オピニオン:.NET&開発環境の考察

現実に最も使える.NETのバージョンはどれ?

デジタルアドバンテージ 一色 政彦
2009/10/06
2009/10/07 更新

 .NET Framework(以降、.NET)ベースのアプリケーションを開発し、それを実際にユーザーや顧客に使ってもらう場合、「.NETおよびVisual Studioの、どのバージョンを使うべきか?」は重要な検討事項になる。本稿では、その検討の際に参考となる情報や筆者の考えを提示する。

.NETバージョンを検討するための3つの観点

 .NETのバージョンを決定するには、次の3つの観点から検討できると筆者は考えている。

・実行環境となるWindows OS
・.NETのサポート期間
・利用するVisual Studio

 もちろん、これは絶対的な基準ではない。例えば利用するテクノロジが決まっている場合は、それに応じて.NETバージョンが決定される。.NET 4.0の新機能を利用するには、.NET 4.0を使うしかない。なお.NET 4.0は、次期Visual Studioである「Visual Studio 2010」とともに出荷される.NET Frameworkの最新版で、リリースは来年になると予想される。

 本稿で考察するのは、そのような特定のテクノロジへの結び付きを考慮から外して、より多くの開発者から見て「どの.NETバージョンを使うべきか?」の一般論である。

[注意]本稿で提示する一部データの出典について

 本稿で表のタイトルに「*出典」という表記がある場合は、下記のアンケートから引用しています。なお、これらの表は、(本稿の内容と関連のない)一部のデータを省略しています。

出典:@IT『.NET開発者中心コーナー開設アンケート』(2009年9月)
 ・調査対象:Windows/.NETベースの業務アプリケーション開発に携る@IT読者
 ・有効回答数:387件


実行環境となるWindows OSに関する検討

 まずアプリケーションの実行環境となるWindows OSについて考察していこう。

現在のWindows OSの利用状況

 (本稿が掲載されている)@IT/.NET開発者中心コーナーでは、先日、「.NET開発者中心 開設アンケート」を実施し、その1項目で「いま現在、開発中のアプリケーションの実行環境として、どのような『(a)クライアント端末のOS』『(b)アプリケーション・サーバのOS』を対象としているか?」という質問をした(複数回答可)。

 その結果を集計し、各Windows OSが選択された割合(以降、対応率)を計算してまとめたのが下の表である(Windows OS以外の項目は除外した)。

Windows OS 対応率
 95/98/Me 4.1%
 NT Workstation 3.9%
 2000 Professional 24.5%
 XP 90.2%
 Vista 37.5%
(a)アプリケーション実行環境:クライアントOS *出典
「.NET開発者中心 開設アンケート」の「上記アプリケーションの実行環境について、『a.クライアント端末のOS』『b.アプリケーション・サーバのOS』のそれぞれに該当するものを、いくつでもお選びください。」(原文のまま)という質問に対する返答結果。
アプリケーションによっては、クライアントOSをサポートせずに、サーバのみを対象とするソフトウェアやWindows OSを対象にしないもの(例えばモバイル端末を対象にするアプリケーションなど)もあることに注意してほしい。この表の数値は各OSを相対化して比較可能にしているだけで、アプリケーションの一般的な対応率を表しているとはいえない。あくまで各OSを比較するうえでの参考値としてご覧いただきたい。

Windows OS 対応率
 NT Server 3.4%
 2000 Server 18.1%
 Server 2003 64.6%
 Server 2008 20.7%
(b)アプリケーション実行環境:サーバOS *出典
「.NET開発者中心 開設アンケート」の結果の一部。
この表の数値はあくまで参考値としてご覧いただきたい。
サーバOSをサポートせずに、クライアントOSのみを対象とするソフトウェアも少なくないことに注意してほしい。そのため、クライアントOSに比べると、全体的に利用率は少なめになっているようだ。

 上記の2つの表を見ると、Windows 95/98/Me、Windows NT Workstation /Serverの対応率は4%未満である。しかも、これらのOSはすでに延長サポートが切れており(後掲の表を参照)、今後、その利用率はますます下がっていくことが予想される。つまり一般的に見て、これらのOSに対応するのは、少なくなるユーザーに向けて開発コストを掛けなければならないという意味で、費用対効果の面で不利である。

 上記の理由から、「Windows 95/98/Me、Windows NT Workstation /Serverはサポートしない」のが最も賢明な選択だと筆者は思う(あくまで一般論として考えている。どうしてもこれらのOSをサポートしなければならないケースなども、もちろんあり得るので、実際にはケース・バイ・ケースで対処する必要がある)。

 筆者の現時点における結論は、一般的に、(これらのOSより後のバージョンである)Windows 2000 Professional/Server以降のクライアント/サーバOSを対象とするのが、より多くのエンド・ユーザーをより効果的に対象にできるので、費用対効果の面で有利であるということだ。

 なお、Windows 2000 Professional/Serverは「2010年7月13日」に延長サポートが終了する(下記の表を参照)。このため、数年後には、Windows 2000が対象OSから外してWindows XP以降を対象OSにすることが一般的に推奨されるようになると予想される(これは実際に1年後、2年後にWindows 2000の利用状況を見て判断する必要があるだろう)。

Windows OS 製品発売日 メインストリーム
・サポート終了日
延長サポート
終了日
 95 1995年8月15日 2000年12月31日 2001年12月31日
 NT Workstation 4.0 1996年7月29日 2002年6月30日 2004年6月30日
 NT Server 4.0 1996年7月29日 2002年12月31日 2004年12月31日
 98 1998年6月30日 2002年6月30日 2006年7月11日
 Me 2000年12月31日 2003年12月31日 2006年7月11日
 2000 2000年3月31日 2005年6月30日 2010年7月13日
 XP 2001年12月31日 2009年4月14日 2014年4月8日
 Server 2003 2003年5月28日 2010年7月13日 2015年7月14日
 Vista 2007年1月25日 2012年4月10日 2017年4月11日
 Server 2008 2008年5月6日 2013年7月9日 2018年7月10日
 Server 2008 R2 2009年10月22日 2013年7月9日 2018年7月10日
 7 2009年10月22日 2015年1月13日 2020年1月14日
各Windows OSのサポート期間(延長サポート終了日順)
Windows 2000 Professional/Serverは、まとめて「Windows 2000」と表記。
延長サポート期間になると、デザインの変更や機能の要求などが行えなくなり。セキュリティ関連以外の修正プログラムのサポートが制限されるなど、サポート内容が限定的になる。

 それでは、Windows 2000 Professional/Server以降のクライアント/サーバOSを対象とするために、どのような.NETバージョンを選択すればよいのかを考えていこう

各.NETバージョンと対応OSの関係

 ここでは、各.NETバージョンと対応OSの関係を表にまとめた。

Windows OS .NETバージョン
.NET 1.0 .NET 1.1 .NET 2.0 .NET 3.0 .NET 3.5 .NET 4.0
 95
×
×
×
×
×
×
 NT 4.0
×
×
×
×
 98
×
×
×
 Me
×
×
×
 2000
×
×
×
 XP
 Server 2003
 Vista
×
 Server 2008
×
 Server 2008 R2
×
×
 7
×
×
各.NETバージョンと対応OSの関係(延長サポート終了日順)
Windows NT Workstation/Server 4.0は、まとめて「Windows NT 4.0」と表記。
Windows 2000 Professional/Serverは、まとめて「Windows 2000」と表記。
上記で「○」となっているものは、各OSのすべてのエディションに対応しているという意味ではなく、同OSの一部のエディションで非対応でも「○」としているので注意してほしい。例えば.NET 4.0は、Windows XP Media Center EditionやWindows XP Tablet PC Editionをサポートしていない(それ以外のWindows XPのエディションには対応している)。
一部、サービスパックの適用が必要なOSもあるが、この表では省略している。
.NET 4.0に関する対応OSの記述は、「.NET Framework 4 Beta 1のダウンロード・ページ」をベースに記載しているが、あくまでBeta 1におけるサポート対象のOSである。RTM版のサポート対象OSに関してはまだ決定されておらず、RTMの際に変更になる可能性があるので注意してほしい。

 この表を見ると、まず.NET 1.0は最近のOSに対応しておらず、利用価値が低いことが分かる。さらに.NET 1.1は過去〜現在のOSに対しては非常に広範に対応しているものの、新しいWindows 7と次期Windows Server 2008 R2に対応しておらず、将来性がない。これらの理由から、.NET 1.0/1.1は選択肢から外してよいだろう。ちなみに、マイクロソフトは「.NET Framework 移行センター」というサイトを新設して、.NET 1.0/1.1からの移行を開発者に呼びかけている。

 前述の推奨OSの結論から、今後1年はWindows 2000以降をサポートしている方が、より広範囲なユーザーをターゲットにできる。この理由から、.NET 3.0/3.5/4.0は選択肢から外れ、「現時点で最も効果的な.NETバージョンは.NET 2.0である」と筆者は考えている。

 しかしながら、前述のとおり、「2010年7月13日」にWindows 2000の延長サポートが終了し、それを契機に(アンケート結果で「24.5%」と高い)Windows 2000のユーザー比率は次第に減っていくと思われる。従って、その数年後(例えば2012年ごろ)にはWindows 2000を対応OSから外していけるのではないかと筆者は予想している(Windows 2000はシンプルで安定したOSとして人気が高く、なかなかユーザー比率は減らないかもしれないが……)。

 Windows 2000を対応OSから外した場合、.NET 3.0/3.5を飛び越えて.NET 4.0を採用することがベスト・チョイスになる可能性が高い。まだ.NET 4.0の開発生産性や使い勝手、安定性など、見えない部分が多すぎるので断言はできないが、対応OSは.NET 3.0/3.5とほとんど変わらず、しかもこれらの.NETバージョンよりも機能が豊富なためである。

 話は脱線するが、ちなみに、VB6(Visual Basic 6)はWindows 7とWindows Server 2008 R2でもサポートされることがすでに発表されている。

.NETのサポート期間に関する検討

 続いて、.NETのサポート期間の観点から、「どの.NETバージョンを使うべきか」を考えていこう。

 各.NETバージョンのサポート期間は、下の表のようになっている。

.NETバージョン 製品発売日 メインストリーム
・サポート終了日
延長サポート終了日
.NET 1.0 2002年4月15日 2007年07月10日 2009年07月14日
.NET 1.1 2003年7月10日 2008年10月14日 2013年10月8日
.NET 2.0 2006年2月17日 2011年04月12日 2016年04月12日
.NET 3.0 2007年1月23日 2012年04月10日 2017年04月11日
.NET 3.5 2007年11月20日 2013年04月9日 2018年04月10日
.NET 4.0 2010年前半 2015年前半 2020年前半
各.NETバージョンのサポート期間(製品発売日順)
.NET 3.5のサポート情報は「マイクロソフト プロダクト サポート ライフサイクル」のサイトから入手できなかったため、その対応開発環境であるVisual Studio 2008の内容を記載している(.NETランタイムのサポート期間が開発環境よりも先に切れることはないと想定)。
.NET 4.0のサポート情報はあくまで予想であり、何の確証もないことをお断りしておく。

 この表を見ると、.NET 1.0のサポート期間はすでに切れており、絶対に使うべきではない。また、.NET 1.1のサポート期間は4年後に切れる予定なので、当分は使えそうである。

 .NET 2.0/3.0/3.5/4.0は、約7/8/9/11年後にサポート期限切れとなり、いずれもかなり余裕がある。つまり、.NETのサポート期間の観点からも.NET 2.0以降を使う方がベターだといえる(最新版を使うのがベスト)。

 前述した対応OSを見直すと、.NET 2.0と.NET 3.0/3.5には違いがあるが、.NET 3.0と.NET 3.5には違いがない。(.NET 3.0と比べて).NET 3.5は1年サポート期間が長いことを考えれば、よほど特別な理由がなければ、あえて.NET 3.0を選択する必要はないだろう。.NET 3.0はWindows Vistaに標準搭載されてはいるが、Vistaの利用者が少ないいまの状況では、大きなメリットがあるとはいえない。

利用するVisual Studioに関する検討

 最後に、「どのVisual Studioバージョンを使うべきか?」を考察していこう。

 前述した「.NET開発者中心 開設アンケート」では、その1項目で「アプリケーション開発で現在どの開発ツールを使用しているか?」という質問もしている(複数回答可)。

 その結果を集計し、各Visual Studioバージョンの選択率(以降、利用率)を計算してまとめたのが下の表である(Visual Studio以外の項目は除外した)。この表の右端には、参考までに、それぞれのVisual Studioバージョンに対応する.NETバージョンも記述した。

Visual Studioバージョン 利用率 対応.NETバージョン
Visual Studio 6.0以前 17.8% 非.NET
Visual Studio .NET 2002 2.6% .NET 1.0
Visual Studio .NET 2003 19.6% .NET 1.1
Visual Studio 2005 37.2% .NET 2.0
Visual Studio 2008 36.7% .NET 2.0/3.0/3.5
Visual Studio 2010 未測定 .NET 2.0/3.0/3.5/4.0
現在使用している開発ツール+対応.NETバージョン *出典
「.NET開発者中心 開設アンケート」の「上記アプリケーション開発で現在使用している開発ツールを、いくつでもお選びください。」(原文のまま)という質問に対する返答結果。

 この表を見ると、Visual Studio 2005/2008の利用率がほぼ同じくらい高くなっている。このことから、多くの.NET開発者がすでに.NET 2.0以降を利用していることが分かる。

 筆者は、Visual Studio 2005で.NET開発に必要十分な基本機能がそろったと考えているが、Silverlight開発など新技術開発が必要になると、やはり現最新版の開発環境であるVisual Studio 2008が必要になる。Visual Studio 2008であれば、.NETバージョンのマルチターゲット機能(=.NET 2.0/3.0/3.5を選択可能)があるので、Windows 2000をサポートするために.NET 2.0を採用することもできる。

 これらを総合的に考えて、現時点ではVisual Studio 2008を利用するのがベストだと考えている。

 しかしながら、この状況はすぐに変わるかもしれない。というのも、Visual Studio 2010が2010年前半には正式リリースされると見られ、Visual Studio 2010はマルチターゲット機能(=.NET 2.0/3.0/3.5/4.0を選択可能)を搭載しているため.NET 2.0開発が行えるからだ。

 Visual Studio 2010はその使い勝手や開発生産性などが未知数だが、次々に開発環境を買い換えることができない状況であれば、いまは取りあえずVisual Studio 2010を待つ方がよいかもしれない。

一般論として最も使える.NET/Visual Studioバージョンとは?

 以上の内容をまとめると、.NETバージョンについては以下のような結論になる。

・.NET 1.0 → 絶対使わない方がいい
・.NET 1.1 → 使わない方がいい
・.NET 2.0 → 現時点ではベスト
・.NET 3.0 → 特別な理由があれば使ってもよい
・.NET 3.5 → 使ってもよい
・.NET 4.0 → 数年後にはベストになるかも

 また、Visual Studioバージョンについては以下のような結論になる。

・Visual Studio .NET 2002 → 絶対使わない方がいい
・Visual Studio .NET 2003 → 使わない方がいい
・Visual Studio 2005 → 使ってもよい
・Visual Studio 2008 → 現時点ではベスト
・Visual Studio 2010 → 近い将来、ベストになるかも

 現時点では、「Visual Studio 2008で.NET 2.0開発」が最も効果的な選択であろう。これが将来的(数年後?)には、「Visual Studio 2010で.NET 4.0開発」が最も効果的な選択になると予想される。End of Article

インデックス・ページヘ  「オピニオン 一色 政彦」
更新履歴
【2009/10/7】以下の注意書きを追記しました。

.NET 4.0に関する対応OSの記述は、「.NET Framework 4 Beta 1のダウンロード・ページ」をベースに記載しているが、あくまでBeta 1におけるサポート対象のOSである。RTM版のサポート対象OSに関してはまだ決定されておらず、RTMの際に変更になる可能性があるので注意してほしい。」



Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

業務アプリInsider 記事ランキング

本日 月間
ソリューションFLASH