Visual Basic .NET
Visual Basic .NET (ヴィジュアル ベーシック ドットネット)はマイクロソフトが開発したプログラミング言語およびその処理系。VB.NETとも呼ばれる。Visual Basic(バージョン6.0まで、VB6)の後継である。マイクロソフトが推進している.NETで開発された言語である。
Visual Studio 2005以降、旧呼称の「Visual Basic」が用いられるが、6.0以前との互換性はなく、.NETベースであることには変わりない。
C++、Java、C#などのC系言語と比較して文法が自然言語に近いため、。本格的なソフトウェア開発にも使用できる。
Microsoft Windows用のアプリケーション、Webアプリケーション、モバイル向けアプリケーションなどを開発できる。利用可能なVisual StudioプロジェクトテンプレートもVisual C#とほぼ同様である。
アプリケーションは.NET Framework上で動作するほか、オブジェクト指向が取り入れられるなど、前バージョンのVisual Basic 6.0からの変更点は多く両者の互換性は低い。旧VB製アプリケーションを延命するため、VB.NETリリース後も旧開発環境やランタイムのサポートが条件付きで継続された。また、移行を容易にするアップグレードウィザードや一部機能の互換ライブラリも実装されている 。
Windows付属のメモ帳等でプログラミングも可能だが、統合開発環境を使うのが一般的である。当初は旧VBと同様に有償でのみ提供されていたが、バージョン2005以降は機能制限版であるExpressエディションが、またバージョン2013以降はProfessionalエディション相当の機能でライセンス制約の強いCommunityエディションが無償で配布されている。
旧VBはVisual C++と比較して実行速度が遅いこともあったが、.NET FrameworkベースになったVB.NETでは、コンパイラが出力するコードはVisual C#等と同じCILであり、他の.NET言語と比較して速度は遜色ない。CILは実行時にJITコンパイラにより最適化されたネイティブコードに変換される。
2022年 .NET 7で事前コンパイルもサポートされ、軽量化や高速化が期待できる。
Direct3Dなどのマルチメディアコンポーネントを含むMicrosoft DirectXについて、VB.NETはDirectX 9を操作するライブラリ、Managed DirectXが提供されている。XNAのリリースに伴いこれの更新は終了しているが、以下のライブラリでDirectX 9-12を使用できる:
Windows API Code Pack for Microsoft .NET Framework (Windows API)
C++/CLIなどのグルー言語で独自のラッパーを作成することで、DirectXを間接的に利用することも可能である。
以下はどちらもメッセージボックスに"Hello, World"のメッセージとOKボタンを表示させるものである:
旧Visual Basicのコード例:
Visual Basic .NETのコード例:
旧VBやVBScript に実装されていた旧MsgBox関数は互換機能でサポートされている  が、以下のように()を使い記述しなければならない:
VB6ではクラスモジュール、メンバー変数やメソッドのカプセル化、インターフェイスによるポリモーフィズムをサポートしていた。ただしクラスの継承はサポートせず、オブジェクト指向を完全サポートしているとは言い難かった。VB.NETではこれがサポートされ本格的なオブジェクト指向言語となった。
VB6では固有のステートメントでフォーム制御や文字列操作をプログラミングしていたが、VB.NETではC#などと共通に使われる.NET Frameworkの標準ライブラリに従ったプログラミングが必要となった。旧VBプログラマのノウハウが通用しにくい状況が生まれた。。
VB6ではエラー発生時にOn Error GoTo文でエラー処理にジャンプさせる方式であった。VB.NETではC#やJavaなどと同様に、Try - Catch - Finallyによる例外処理を記述できる。これによって呼び出し先メソッド内部で生じたエラーを、呼び出し側メソッドで取り扱うことができるようになり、プログラムの柔軟性が増した。
他の.NET言語との互換性確保のため、固定長文字列は (基本データ型としては) サポートされなくなった。Visual Basic 6.0互換関数では可能だが、マルチバイト文字では正常に動作しないため、目的の出力形式にエンコードしてバイト数をカウントしてから処理するといったコーディングが必要となる。
以下はコンソールに"Hello, World!"と出力する例である:
バージョン7.xに限り｢Visual Basic .NET｣と称しているが、従来のように｢Visual Basic｣と名称が改められた8.0以降もVB.NETの系列であることに違いはない。Microsoft.VisualBasic.dll、vbc.exe、Visual Studio IDEのバージョン情報ダイアログに見られるように、製品および内部バージョンはVisual Studioと同様のバージョン番号が割り当てられている。内部バージョン13は忌み番のためスキップされた。
2002年に、Visual Basicを基にオブジェクト指向プログラミングを取り入れた新しい言語であるVisual Basic .NETの開発環境・処理系として、Microsoft Visual Studio .NET (Microsoft Visual Basic .NET) がリリースされた。VB.NETはVB6の後継言語とされ、マイクロソフト社の.NET Frameworkという新しい技術基盤に対応している。対応する.NETのバージョンは.NET Framework 1.0。
VB.NETは新たにウェブサーバ用のプログラム、Web用のプログラムが開発できるなどのネットワーク開発機能が追加された。VB6の後継といっても、豊富なデバッグ機能が追加されたり、中間コード形式になるといった言語設計思想そのものが変わるなど、様々な点で大幅な機能の追加および削除が行われた。
対応する.NETのバージョンは.NET Framework 1.1。
製品名称からは「.NET」という名前がなくなったが、上記のVB.NETと連続性がある言語である。言語仕様が強化され、C# 2.0同様にジェネリックの要素が導入されたほか、パーシャルクラスや演算子のオーバーロードなどがサポートされた。また、開発環境も大きく強化されている。
対応する.NETのバージョンは.NET Framework 2.0であるが、Visual Studio用の拡張をインストールすることで.NET Framework 3.0対応アプリケーションの開発も可能になる。
同時期にリリースされたC# 3.0に合わせて言語仕様が強化され、構造化照会構文であるLINQや、ラムダ式、匿名型などの要素が追加された。
対応する.NETのバージョンは.NET Framework 3.5(.NET 3.5は3.0および2.0の完全なスーパーセットのため、3.0および2.0のアプリケーション開発も可能となっている)。
対応する.NETのバージョンは.NET Framework 4.0(3.5、3.0、2.0での開発も可能)。
C#の言語設計者として知られるアンダース・ヘルスバーグ氏が設計に携わり、VBとC#との間の言語間の格差の低減が図られるようになった 。
.NET Framework 4.5とともに公開。Visual Studio 2012に同梱される。
C# 5.0同様、非同期プログラミングを言語仕様レベルでサポートするAsync/Await構文を導入した。
.NET Framework 4.5.1とともに公開。Visual Studio 2013に同梱される。Developer Packをインストールすることで.NET Framework 4.5.2対応アプリケーションの開発も可能になる。
2015年に.NET Framework 4.6とともに公開。Visual Studio 2015に同梱される。Roslynと呼ばれるコンパイラレイヤーにより、Visual C#と同等のIDE機能を備えるに至った。
VB 14の主要な新機能は下記のとおり。
Null値反映演算子 ?.
NameOf演算子
2017年にVisual Studio 2017とともに公開。15.0、15.3、15.5、15.8のリビジョンで新しいVisual Basic 15の言語機能を拡張した。
2019年にVisual Studio 2019とともに公開。.NET Core に重点を置いた Visual Basic の最初のバージョンとなった。