• .NETから一言

パソコンを使っていたなら、一回ぐらい「ドットネット」という言葉を聞いたり、「.NET」という文字を見たり、したことがあるだろう。簡単に言うと、.NETとはマイクロソフトが開発したアプリケーションを作るための技術の総称である。もう少し詳しく言うと.NETとは「アプリケーションの開発/実行環境」である。

.NETは、1990年台の終わり頃から開発が始まり、2000年にはベータテストが行なわれ、最初の製品“.NET Framework 1.0”は2002年1月に登場した。それから21年あまり、ずっと開発が続いてきたため、様々な要素が付け加えられ、あるいは廃止されたため、複雑なものになり、かつ、インターネットには、いまでは役に立たない古い記述もあり、混乱もある。もっとも、マイクロソフトの技術には、混乱がみられないもののほうが少ないのだが。

もし、アプリケーションを使うだけで、プログラムも作らないし、システム管理もしないというのであれば、基本的には「ドットネット」のことを何も気にする必要はない。しかし、多少でもWindows上のプログラミングに興味があるなら、少しは.NETを理解しておく必要がある。.NETは、さまざまなプラットフォーム(OSとそれが動作するハードウェア・アーキテクチャとの組み合わせ)に対応しているが、今のところWindows以外ではマイナーな存在である。

.NETは、複雑だが、それは古い情報と新しい情報が交錯しているからでもある。現在のWindows 11と10に限って話をするとかなり簡単になる。

.NETで作られるアプリケーションには、いくつかの種類(あるいは作り方)がある。この種類により、実現可能なアプリケーションの範囲や、開発の困難さ(あるいは容易さ)が異なる。基本的な部分は同じだが、種類の選択を間違うと同じアプリケーションを作ったときの手間が異なってくる。

区別の1つは、どの「.NET実装」を使うかだ。現状、.NET実装には「.NET Framework 4.8」と「.NET 6/7」がある。.NET 6はサポート期間3年のLTS(Long Term Support。長期サポート。2024年11月まで)、.NET 7は、18か月サポートのSTS(Standard Term Support。標準期間サポート。2024年11月まで)であり、もちろん.NET 7のほうが新しく機能が追加されている。.NET 8がプレビュー中で、年内には正式版になる予定だ。次々と切り替わるので、互換性を損なうような破壊的なバージョンアップは行なわれない。

「.NET Framework 4.8」は、Windowsに標準で含まれているが、今後のメジャーバージョンアップはなくメンテナンスのみとなる。これに対して「.NET 6/7」は、オープンソースでかつWindows以外のプラットフォームで動作する。新しいWindowsの機能は今後.NETに入る可能性があるが、現状.NETは完全に.NET Frameworkの機能をカバーしておらず.NET Frameworkにしかない機能が存在する。どちらを使うかは開発者が決める。

もう1つの区別にGUIフレームワーク(ライブラリ)がある。簡単にいうと、GUIを作る方法が異なる。現状では、Windows 10/11向けにはWinForms、WPF、WinUIの3種類があり、テキストやグラフィックスの表示方法やボタンなどのGUI部品や機能が異なる。どれを使うのかは開発者の好みで決めるが、簡単にいうと、この順番で新しくなっていて、後の方が見た目がよい。しかし、最も古いWinFormsのほうがこなれていて制限が少なく、WinUIは今のところ制限も多く面倒なことが多い。Windowsでのアプリケーション開発は.NET技術で作るか、C++などでWin32機械語プログラムを作るか、のほぼどちらか。もちろん、スクリプト言語を使っての開発することも可能だが、商業アプリケーションには向いていない。

さらにアプリケーションの実行形式としては、Win32アプリ(Windows Desktopアプリケーション)と、UWP(Universal Windows Platform)アプリの2つが選択できる。前者は、Windows 10/11でしか動かないが最も記述の自由度が高い(古いWindowsでも動く)。後者は、複数のMicrosoftプラットフォーム(XBoxOS、Windows for IoTなど)で動かすことが想定されているが、その分制限がキツい。これも開発者が選択する。UWPでも見た目の派手なトランプゲームは作れるが、高度な機能を持つアプリケーションはWin32アプリになることが多い。

この区別を無理矢理1つにまとめたのが(表01)である。無難な組み合わせは.NET FrameworkでWinFormsかWPFを使ってデスクトップアプリを作ることである。アプリケーションにも依存するが、他の組み合わせでは制限が入る可能性がある。

  • ■表01

.NET Frameworkは、Windows Vistaの開発時、WinFXの名称でWin32APIに続く標準APIとされたことがある。しかし、ハードウェア関連の一部機能をカバーしておらず、Win32APIは、.NETの下層APIとして、いまだに生き続けている。特殊な場合を除けば、.NET Frameworkや.NETでWindowsのほとんどのアプリケーション開発に利用できる。Windowsでプログラムを作るなら、まずは、ここからスタートするのが最も着実な方法だ。GUIは、WPFを使うほうができることは多いが、その分学ばねばならないことも多い。WinFormsとWPFの使い分けはGUIの複雑さにある。テキスト入力やボタンなどGUI部品だけで作ることができるプログラムならばWinFormsでも問題ない。

今回のタイトル元ネタは、フレドリック・ブラウン(Fredric William Brown)の、「スポンサーから一言」(A Word from Our Sponsor)である。日本では、創元SF文庫のタイトルにも使われ、原書の書名“Honeymoon in Hell”(邦題「地獄の蜜月旅行」)の元になった短編よりもこちらが有名。