コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

「Visual Basic .NET」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
m編集の要約なし
Cewbot (会話 | 投稿記録)
m Bot作業依頼: sourceタグをsyntaxhighlightタグに置換 (Category:非推奨のsourceタグを使用しているページ) - log
50行目: 50行目:


従来のVisual Basicのコード例:
従来のVisual Basicのコード例:
<source lang="vb">
<syntaxhighlight lang="vb">
Private Sub Command1_Click()
Private Sub Command1_Click()
MsgBox "Hello, World"
MsgBox "Hello, World"
End Sub
End Sub
</syntaxhighlight>
</source>


Visual Basic .NETのコード例:
Visual Basic .NETのコード例:
<source lang="vbnet">
<syntaxhighlight lang="vbnet">
'Imports System.Windows.Forms ' Windows Forms の場合。
'Imports System.Windows.Forms ' Windows Forms の場合。
'Imports System.Windows ' WPF の場合。
'Imports System.Windows ' WPF の場合。
64行目: 64行目:
MessageBox.Show("Hello, World")
MessageBox.Show("Hello, World")
End Sub
End Sub
</source>なお、Visual Basic .NETでも旧VBや[[VBScript]]<ref>[https://msdn.microsoft.com/ja-jp/library/cc410277.aspx MsgBox 関数]</ref> <ref>[https://msdn.microsoft.com/ja-jp/library/cc392490.aspx バージョン情報 (VBScript)]</ref>に実装されていた旧MsgBox関数などの互換機能はライブラリによってサポートされている<ref name=":0" /> <ref>[https://msdn.microsoft.com/ja-jp/library/139z2azd%28v=vs.90%29.aspx MsgBox 関数 (Visual Basic)]</ref> <ref>[http://www.atmarkit.co.jp/fdotnet/vblab/opensemi_06/opensemi_06_02.html 第6回 VB開発者が最新.NET Frameworkを効率よく習得する方法 - @IT]</ref>が、以下のように<code>()</code>を使ったメソッド呼び出しの形で記述しなければならない。
</syntaxhighlight>なお、Visual Basic .NETでも旧VBや[[VBScript]]<ref>[https://msdn.microsoft.com/ja-jp/library/cc410277.aspx MsgBox 関数]</ref> <ref>[https://msdn.microsoft.com/ja-jp/library/cc392490.aspx バージョン情報 (VBScript)]</ref>に実装されていた旧MsgBox関数などの互換機能はライブラリによってサポートされている<ref name=":0" /> <ref>[https://msdn.microsoft.com/ja-jp/library/139z2azd%28v=vs.90%29.aspx MsgBox 関数 (Visual Basic)]</ref> <ref>[http://www.atmarkit.co.jp/fdotnet/vblab/opensemi_06/opensemi_06_02.html 第6回 VB開発者が最新.NET Frameworkを効率よく習得する方法 - @IT]</ref>が、以下のように<code>()</code>を使ったメソッド呼び出しの形で記述しなければならない。
<source lang="vbnet">
<syntaxhighlight lang="vbnet">
Imports Microsoft.VisualBasic.Compatibility ' ファイル先頭に記述する。
Imports Microsoft.VisualBasic.Compatibility ' ファイル先頭に記述する。
Private Sub Button1_Click(ByVal sender As System.Object, _
Private Sub Button1_Click(ByVal sender As System.Object, _
71行目: 71行目:
MsgBox("Hello, World")
MsgBox("Hello, World")
End Sub
End Sub
</syntaxhighlight>
</source>


==== オブジェクト指向への対応 ====
==== オブジェクト指向への対応 ====
87行目: 87行目:
== コード例 ==
== コード例 ==
以下はコンソールに"Hello, World!"と出力する例である。
以下はコンソールに"Hello, World!"と出力する例である。
<source lang="vb">
<syntaxhighlight lang="vb">
Module Module1
Module Module1
Sub Main()
Sub Main()
93行目: 93行目:
End Sub
End Sub
End Module
End Module
</syntaxhighlight>
</source>


== 歴史 ==
== 歴史 ==

2020年7月5日 (日) 22:44時点における版

Visual Basic .NET
パラダイム 構造化プログラミング, 命令型プログラミング, オブジェクト指向, 宣言型プログラミング
登場時期 2001年 (23年前) (2001)[1]
設計者 マイクロソフト
開発者 マイクロソフト
最新リリース 2019 (16.2)/ 2019年7月24日 (5年前) (2019-07-24)
型付け 強い静的型付け
主な処理系 .NET FrameworkRoslyn コンパイラ および Mono
方言 .NET 2002 (7.0), .NET 2003 (7.1), 2005 (8.0), 2008 (9.0), 2010 (10.0), 2012 (11.0), 2013 (12.0), 2015 (14.0), 2017 (15.0), 2019 (16.0)
影響を受けた言語 Visual Basic, C#
影響を与えた言語 Small Basic
プラットフォーム Microsoft Windows
ウェブサイト Visual Basic
拡張子 .vb
テンプレートを表示

Visual Basic .NET (ヴィジュアル ベーシック ドットネット)はマイクロソフトが開発したプログラミング言語およびその処理系。VB.NETと略されて呼ばれることが多い。.NETに対応していない旧来のVisual Basic(バージョン6.0まで、VB6)の後継である。

なおVisual Studio 2005以降では、「Visual Basic .NET」や「VB.NET」という呼称ではなく、従来のように「Visual Basic」という呼称が用いられるようになっている[2]が、6.0以前との互換性はなく、また.NETベースであることには変わりない。

概説

C++JavaC#などのC系言語と比較して、VB/VB.NETは文法が自然言語に近いため、プログラミング初心者にも比較的習得しやすく、また使いやすいといわれている[要出典]が、本格的なソフトウェアの作成にも使用できる。なおVB.NETはマイクロソフトが推進している.NETの一環で開発された言語であり、アプリケーション実行コードは.NET Framework上で動作するほか、言語仕様にオブジェクト指向が本格的に取り入れられるなど、前バージョンのVisual Basic 6.0からの変更点はかなりの数にのぼり、言語仕様の互換性は低い。VB.NETに移行できない旧VB製アプリケーションを救済するため、VB.NETがリリースされた後にリリースされたMicrosoft Windows OSにおいても、旧VBの開発環境や旧VBランタイムのサポートが条件付きで継続されるなどの特別延命措置が図られたりしている。Visual Basic .NETには、従来のVisual Basicからの移行を容易にするアップグレードウィザード[3]や、従来の一部機能を実現する互換ライブラリが実装されている[4] [5]

コンパイラはマイクロソフトから無料で提供されているので、Windows付属のメモ帳等を使ってプログラムすることもできるが、専用に開発された統合開発環境を使って開発するのが一般的である。

かつては旧来のVisual Basicと同様、製品は有償でのみ提供されていたが、バージョン2005以降は機能制限版であるExpressエディションが、またバージョン2013以降はProfessionalエディション相当の機能を持ちライセンス制約の強いCommunityエディションがそれぞれ無償で配布されている。

VB.NETではMicrosoft Windows用のアプリケーション開発、Web用のアプリケーション開発、およびモバイル向けのアプリケーション開発などを行なうことができる。利用可能なVisual Studioプロジェクトテンプレートも、Visual C#とほぼ同様である。

実行速度

旧来のVBはVisual C++と比較してアプリケーションの実行速度性能に問題が発生することもあったが、実行環境を.NET Frameworkに移したVB.NETでは、最終的にコンパイラが出力するコードはVisual C#等と同じMSIL中間コード (Javaのバイトコードに近い) であるため、他の.NET言語と比較して速度面でも遜色ないものとなっている。なお、MSILは実行時に.NETのJITコンパイラにより最適化されたネイティブコードに変換される。

DirectXのサポート

Direct3Dなどのマルチメディアコンポーネントを含むMicrosoft DirectXに関しては、VB.NETおよびVisual C#などの.NET言語からDirectX 9を操作するための.NETマネージ ライブラリであるManaged DirectXが提供されている。なお、XNAのリリースに伴い、Managed DirectXの更新は終了しているが、Windows API Code Pack for Microsoft .NET Frameworkと呼ばれるWindows APIおよびDirectXを含むCOMコンポーネントの.NET用ラッパーライブラリ、もしくはオープンソース開発されているSlimDXライブラリやSharpDXライブラリなどを使用することで、.NET言語からもDirectX 9、DirectX 10、DirectX 11やDirectX 12を使用することが可能となっている。C++/CLIなどのグルー言語により独自のラッパーを明示的に作成することで、.NET言語からDirectXを間接的に利用することも可能である。

従来のVisual Basicとの文法の比較

これらは旧Visual BasicとVisual Basic .NETの文法の類似点を示したサンプルコードである。どちらもメッセージボックスに"Hello, World"のメッセージとOKボタンを表示させるものである。

従来のVisual Basicのコード例:

Private Sub Command1_Click()
    MsgBox "Hello, World"
End Sub

Visual Basic .NETのコード例:

'Imports System.Windows.Forms ' Windows Forms の場合。
'Imports System.Windows ' WPF の場合。
Private Sub Button1_Click(ByVal sender As System.Object, _
              ByVal e As System.EventArgs) Handles Button1.Click
    MessageBox.Show("Hello, World")
End Sub

なお、Visual Basic .NETでも旧VBやVBScript[6] [7]に実装されていた旧MsgBox関数などの互換機能はライブラリによってサポートされている[5] [8] [9]が、以下のように()を使ったメソッド呼び出しの形で記述しなければならない。

Imports Microsoft.VisualBasic.Compatibility ' ファイル先頭に記述する。
Private Sub Button1_Click(ByVal sender As System.Object, _
              ByVal e As System.EventArgs) Handles Button1.Click
    MsgBox("Hello, World")
End Sub

オブジェクト指向への対応

VB6ではクラスモジュールの定義、メンバー変数やメソッドのカプセル化、インターフェイスの実装によるポリモーフィズムをサポートしていた。ただしクラスの継承はサポートせず、オブジェクト指向プログラミングを完全サポートしているとは言い難かった。VB.NETではクラス継承がサポートされ、本格的なオブジェクト指向言語となった。

.NET Frameworkライブラリ

VB6ではVisual Basicに固有のステートメントによってフォームの制御や文字列の操作をプログラムしていたが、VB.NETではC#などと共通に使われる.NET Frameworkの標準ライブラリに従ったプログラミングが必要となった。このため、従来のVBプログラマのノウハウが通用しにくい状況が生まれた。このことがVBプログラマがVB6からVB.NETへの移行が進まない原因の一つではないかとの指摘がある[要出典]

エラー処理

VB6ではエラー発生時にOn Error GoTo文によってメソッド内のエラー処理にジャンプさせる方式であった。VB.NETではC#Javaなどと同様に、Try - Catch - Finallyによる例外処理を記述できる。これによって呼び出し先メソッド内部で生じたエラーを、呼び出し側メソッドで一括して取り扱うことができるなど、プログラムの柔軟性が増した。

固定長文字列の廃止

他の.NET言語との互換性確保のため[10]、固定長文字列は (基本データ型としては) サポートされなくなった。Visual Basic 6.0互換関数が用意されているが、マルチバイト文字では正常に動作しないため、目的の出力形式にエンコードしてバイト数をカウントしてから処理を行うといったコーディングが必要となる。

コード例

以下はコンソールに"Hello, World!"と出力する例である。

Module Module1
    Sub Main()
        Console.WriteLine("Hello, World!")
    End Sub
End Module

歴史

バージョン7.xに限りVisual Basic .NETと称しているが、従来のようにVisual Basicと名称が改められた8.0以降もVB.NETの系列であることに違いはない。Microsoft.VisualBasic.dllやvbc.exe、およびVisual Studio IDEのバージョン情報ダイアログに見られるように、製品バージョンおよび内部バージョンはVisual Studioと同様のバージョン番号が割り当てられている。また、内部バージョン13は忌み番のためスキップされた。

バージョンの履歴
製品名 バージョン 内部バージョン リリース 備考
Visual Basic .NET 2002 7.0 2002年 言語仕様の大幅変更(完全なオブジェクト指向)。実行環境に .NET Framework 1.0 を採用。
Visual Basic .NET 2003 2003 7.1 2003年 .NET Framework 1.1 に対応。
Visual Basic 2005 2005 8.0 2005年 .NET Framework 2.0 に対応。
Visual Basic 2008 2008 9.0 2007年 LINQやラムダ式の導入など言語機能を強化。.NET Framework 3.5 に対応。
Visual Basic 2010 2010 10.0 2010年 .NET Framework 4.0 に対応。
Visual Basic 2012 2012 11.0 2012年 .NET Framework 4.5 に対応。Async/Awaitの導入。
Visual Basic 2013 2013 12.0 2013年 .NET Framework 4.5.1 に対応。
Visual Basic 2015 2015 14.0 2015年 .NET Framework 4.6 に対応。
Visual Basic 2017 2017 15.0, 15.3, 15.5, 15.8 2017年
Visual Basic 2019 2019 16.0 2019年 .NET Core対応に重点を置く。

Visual Basic .NET (2002) (VB.NET 7.0)

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の後継といっても、豊富なデバッグ機能が追加されたり、中間コード形式になるといった言語設計思想そのものが変わるなど、様々な点で大幅な機能の追加および削除が行われた。

Visual Basic .NET 2003 (VB.NET 7.1)

対応する.NETのバージョンは.NET Framework 1.1。

Visual Basic 2005 (VB 8.0)

製品名称からは「.NET」という名前がなくなったが、上記のVB.NETと連続性がある言語である。言語仕様が強化され、C# 2.0同様にジェネリックの要素が導入されたほか、パーシャルクラスや演算子のオーバーロードなどがサポートされた。また、開発環境も大きく強化されている。

対応する.NETのバージョンは.NET Framework 2.0であるが、Visual Studio用の拡張をインストールすることで.NET Framework 3.0対応アプリケーションの開発も可能になる。

Visual Basic 2008 (VB 9.0)

同時期にリリースされたC# 3.0に合わせて言語仕様が強化され、構造化照会構文であるLINQや、ラムダ式匿名型などの要素が追加された。 対応する.NETのバージョンは.NET Framework 3.5(.NET 3.5は3.0および2.0の完全なスーパーセットのため、3.0および2.0のアプリケーション開発も可能となっている)。

Visual Basic 2010 (VB 10.0)

対応する.NETのバージョンは.NET Framework 4.0(3.5、3.0、2.0での開発も可能)。

C#の言語設計者として知られるアンダース・ヘルスバーグ氏が設計に携わり、VBとC#との間の言語間の格差の低減が図られるようになった[11] [12]

Visual Basic 2012 (VB 11.0)

.NET Framework 4.5とともに公開。Visual Studio 2012に同梱される。

C# 5.0同様、非同期プログラミングを言語仕様レベルでサポートするAsync/Await構文を導入した。

Visual Basic 2013 (VB 12.0)

.NET Framework 4.5.1とともに公開。Visual Studio 2013に同梱される。Developer Packをインストールすることで.NET Framework 4.5.2対応アプリケーションの開発も可能になる[13]

Visual Basic 2015 (VB 14.0)

2015年に.NET Framework 4.6とともに公開。Visual Studio 2015に同梱される。Roslynと呼ばれるコンパイラレイヤーにより、Visual C#と同等のIDE機能を備えるに至った[14]

VB 14の主要な新機能は下記のとおり。

  • Null値反映演算子 ?.
  • 複数行の文字列リテラル
  • NameOf演算子
  • 文字列補間
  • 行末コメント

Visual Basic 2017 (VB 15.x)

2017年にVisual Studio 2017とともに公開。15.0、15.3、15.5、15.8のリビジョンで新しいVisual Basic 15の言語機能を拡張した[15]

Visual Basic 2019 (VB 16.0)

2019年にVisual Studio 2019とともに公開[16]。.NET Core に重点を置いた Visual Basic の最初のバージョンとなった[17]

脚注

関連項目

外部リンク