Microsoft Visual Basic
テンプレート:Infobox テンプレート:プログラミング言語 Microsoft Visual Basic (マイクロソフト ヴィジュアル ベーシック)はマイクロソフトが提供するプログラミング言語。通常はVisual BasicまたはVBと呼ぶ。Visual Studioに組み込まれ、さまざまな種類のアプリケーション開発に用いられる。
目次
概要
初期のバージョンはBASICから派生したマイクロソフトのQuickBASICを拡張したもので、RADに対応した統合開発環境の名称でもあった。2002年にVisual Basic.NETという名前で7番目のバージョンがリリースされて以降は、それ以前とは大幅に位置付け・仕様が異なり、明確にプログラミング言語を指すようになった。Visual Basic.NET以降のVBはそれ以前と区別するためにまとめてVisual Basic.NETまたはVB.NETと呼ばれることがある。
もともとが初心者用言語のBASICから派生しているという来歴から、VBもプログラミング初心者用と言われることが多かったが、実際にはC#と同等の機能・性能を持っており、さまざまなビジネスシーンで活用されている。
もともとはフォーム上に、あらかじめ用意された各種のGUIパーツ(コントロール)を配置して、それらのプロパティが変更されたり、マウスでクリックされたりするなどイベントが発生した場合の処理を記述してゆくことで、プログラムを作成していくスタイルが特徴だったが、現在では多くの開発環境でこのようなスタイルでのプログラミングが可能であり、VBはその嚆矢であったことになる。グラフィックの描画など、GUIを実現するときに付随する定型的な画面管理はパーツの内部で行なわれるため、プログラマが直接記述する必要性が大幅に低減され、記述が煩雑になりがちなGUIを利用したプログラムを、簡単に作成することができる。
バージョン1.0ではWindows版の後にMS-DOS版が発売されており、キャラクタベースにもかかわらずコントロールを配置してGUIを構築することができた。ただしキャラクタベースであるため、フォームを使用した場合、グラフィックスの描画は不可能である。
言語仕様は、旧来のBASIC言語に比べ、構造化プログラミングの機能が加えられるなど大きく拡張されており、加えてオブジェクト指向に近い概念も取り入れられている。バージョン6.0以降のVisual Basicは高度な機能を持っており、高度な機能を提供するソリューションの開発も出来る。バージョン6.0以前ではオブジェクト指向の要素が十分には実装されておらず、特に継承にあたる機能が皆無だったが、バージョン7.0 (.NET 2002)以降では完全なクラスベースのオブジェクト指向の機能が実装されている。
バージョン5.0よりも前のバージョンではインタープリタ動作のみであったこともあり、実行速度ではCやC++で記述したネイティブプログラムに比べ10倍から20倍遅いと言われていた(実際には処理内容に応じて速度比較の結果は異なる)。バージョン5.0と6.0では、Win32 ネイティブコードへのコンパイルがサポートされ、速度面での大幅な改善が図られている。また、実行環境を.NET Frameworkに移したVB.NETでは、最終的にコンパイラが出力するコードはVisual C#等と同じ MSIL 中間コード (Javaのバイトコードに近い) であるため、他の.NET言語と比較して速度面でも遜色ないものとなっている。さらに、MSILは実行時に.NETのJITコンパイラにより最適化されたネイティブコードに変換されるため、Javaのバイトコードと比較して非常にオーバーヘッドが小さい。
DirectXに関してはDirectX7以降、Visual Basic上からでも利用が可能となっている。Visual Basic6.0ではVB用のCOMタイプ ライブラリを使用する事でDX7及び8を、VB7.0(.NET 2002)以降ではDX9を操作する為の.NETマネージ ライブラリ (Managed DirectX)が提供されている。なお、XNAのリリースに伴い、Managed DirectXの更新は終了しているが、Windows API Code Pack for Microsoft .NET Frameworkと呼ばれるWindows APIおよびDirectXを含むCOMコンポーネントの.NET用ラッパーライブラリを使用することで、VB.NETおよびVisual C#などの.NET言語からもDirect3D 10やDirect3D 11を使用することが可能となっている。
種類
Visual Basicには、大きく分けて2種類ある。1つはバージョン1.0から6.0までの旧来版、もう1つはバージョン 7.0 (2002) 以降の.NET Framework対応版である。.NET Frameworkに対応したバージョン7.0以降はバージョン6.0以前と比較して大きな変更が施され、互換性もない。
旧来版のバージョン
製品名 | テンプレート:Nowrap | テンプレート:Nowrap | テンプレート:Nowrap | 備考 |
---|---|---|---|---|
Visual Basic 1.0 | 1.0 | 1.0 | 1991年 | オブジェクト指向の基本的な部分を実装。日本では発売されなかった。 |
テンプレート:Nowrap | 1.0 | 1.0 | テンプレート:Nowrap | Windows版との互換性は低いが、DOS版QuickBASICの後継バージョンとして使える。PC-98用の日本語版も発売されていた。 |
Visual Basic 2.0 | 2.0 | 2.0 | 1992年 | OLE, ODBC対応。日本語版は1993年で当初はODBC対応はなし。 |
Visual Basic 3.0 | 3.0 | 3.0 | 1993年 | 日本では発売されなかった。 |
Visual Basic 4.0 | 4.0 | 4.0 | 1995年 | 32 ビット版と 16 ビット版がある。 |
Visual Basic 5.0 CCE | 5.0 | 5.0 | ActiveXコントロール作成専用。フリー。Visual Basic 5.0のプロトタイプ。 | |
Visual Basic 5.0 | 5.0 | 5.0 | 1997年 | Win32 ネイティブコードへのコンパイル機能をサポート。 |
Visual Basic 6.0 | 6.0 | 6.0 | 1998年 | 旧来型 Visual Basic (Win32 ネイティブ) の最後のバージョン。 |
Visual Basic 4.0
爆発的に普及が始まったWindows 95用のアプリケーション開発環境の一つとしてリリースされた。ボタンやコンボボックスのような標準コントロールに加え、サードパーティから発売されたコントロールをマウスを使ったGUI操作で配置することでアプリケーション画面を作成することができ、プログラム生産性が高いことが特徴だった。特に、サードパーティ製の高機能なコンポーネントが多く発売され、熟練開発者でなくとも操作性の高いアプリケーションが開発でき、当時のエンドユーザ・コンピューティングに大きな影響を与えた。
技術面で見ると、Visual C++などを用いてCOMのコントロール(OLEコントロール、OCX、後にActiveXコントロールと呼ばれる)を開発し、これらの部品群の組み立てをVisual Basicで行うことが容易にできた。特にExcelなどのアプリケーションをOLEを通じて制御することができるため、帳票を扱うような業務アプリケーション開発の分野で使われることも多かった。
また、Visual Basicで作成されたアプリケーションを実行するために、ランタイムをあらかじめインストールする必要があった。
Visual Basic 5.0
Win32 ネイティブコードへのコンパイル機能がサポートされるようになり、実行速度が大幅に向上した。 開発環境内でのインタープリタ実行も引き続きサポート。
Visual Basic 6.0
ActiveXに完全に対応し、ActiveXオブジェクトを使用することはもちろん作成することも可能。そのため、ActiveXコンポーネントとして公開されていたDAOやADO、oo4oなどを使用して、SQL ServerやOracleを制御することができ、多くのビジネスシーンで使用された。また、バージョン1.0からの経験も蓄積されていたためVisual Basic 6.0を扱えるプログラマ・情報量ともに豊富だった。
ただし、言語仕様が完全なオブジェクト指向言語ではなかったことや、複雑化するシステム環境に十分に対応できなかったり、開発容易性を確保するために機能的な制限があったため以下の不都合が指摘されてきた。
- コンポーネントのバージョンの違いからトラブルが起きやすい(DLL地獄)。
- 基本的にマルチスレッド機能が無い(ActiveX EXEでのみ可能)。
- 他の言語との情報共有が乏しい。
- アプリケーションのインストールが面倒である。
また、Webの普及とともにWebアプリケーションとしてシステムを構築する事案が増え、Java言語がウェブアプリケーションに柔軟に対応していたのに比較すると、Webアプリケーションの開発が面倒という指摘もあった。
これらの事から改良の手が加えられ、VB.NETが誕生した。しかし言語仕様の大幅な改訂のために、VB6とVB.NETとの互換性はほとんど無くなっている。
Visual Basic for Applications 7.0
Microsoft Officeでは、後述するVisual Basic for ApplicationsとしてVisual Basicによるマクロプログラミング環境が採用されている。Office 2007まではバージョン6系列のVisual Basicが採用されていたが、Office 2010では、バージョン番号を7.0としている[1]。
主な変更点として、64ビット環境への対応が挙げられる。LongPtr(32ビット環境・64ビット環境双方でポインタと同じ大きさとなる整数型)、LongLong(64ビット整数型、ただし64ビット環境でのみ使用可能)などのデータ型やそれに伴う変換関数の追加などが行なわれている。
.NET版のバージョン
テンプレート:Main バージョン 7.x に限り Visual Basic .NET と称しているが、それ以降も VB.NET の系列であることに違いはない。
製品名 | テンプレート:Nowrap | テンプレート:Nowrap | テンプレート:Nowrap | 備考 |
---|---|---|---|---|
Visual Basic .NET | 2002 | 7.0 | 2002年 | 言語仕様の大幅変更(完全なオブジェクト指向)。実行環境に .NET Framework 1.0 を採用。 |
テンプレート:Nowrap | 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年 | 2010年5月現在での最新版(5月現在ではExpressEditionのみ).NET Framework 4.0 に対応。 |
Visual Basic .NET 2002
2002年には、このVisual Basicを基に強いオブジェクト指向プログラミングの概念を取り入れた新しい言語Visual Basic.NETが開発された。VB.NETはVB6の後継言語とされ、マイクロソフト社の.NET Frameworkという新しい技術基盤に対応している。対応する.NETのバージョンは.NET Framework 1.0。
VB.NETは新たにウェブサーバ用のプログラム、Web用のプログラムが開発出来るなどのネットワーク開発機能が追加された。VB6の後継といっても、豊富なデバッグ機能が追加されたり、中間コード形式になるといった言語設計思想そのものが変わるなど、様々な点で大幅な機能の追加および削除が行われた。
Visual Basic .NET 2003
対応する.NETのバージョンは.NET Framework 1.1。
Visual Basic 2005
製品名称からは「.NET」という名前がなくなったが、上記のVB.NETと連続性がある言語である。言語仕様が強化され、C# 2.0同様にジェネリックの要素が導入されたほか、パーシャルクラスや演算子のオーバーロードなどがサポートされた。また、開発環境も大きく強化されている。対応する.NETのバージョンは.NET Framework 2.0。(開発環境の拡張機能をインストールすることで、.NET Framework 3.0の利用も可能となっている)
Visual Basic 2008
同時期にリリースされたC# 3.0に合わせて言語仕様が強化され、構造化照会構文であるLINQや、ラムダ式、匿名型などの要素が追加された。 対応する.NETのバージョンは.NET Framework 3.5。(3.5は3.0および2.0の完全なスーパーセットのため、3.0および2.0のアプリケーション開発も可能となっている)
Visual Basic 2010
対応する.NETのバージョンは.NET Framework 4.0(3.5、3.0、2.0での開発も可能)
旧来型Visual Basicのサポート
旧来型Visual Basicの最終バージョンであるVisual Basic 6.0は、2004年3月29日にService Pack 6がリリースされたのち、2005年3月31日にメインストリームサポート期間を終え、2008年4月8日に延長サポートの期間を終えた[2]。したがって現在は開発環境のサポートを打ち切られている。
しかしながら、後継のVB.NET以降との互換性がほとんどなく、他開発環境への移行も難しいことから、マイクロソフトはWindows VistaでのVisual Basic 6.0の開発環境の実行をサポートしている[3]。Visual Basic 6.0で製作されたアプリケーションについては、Windows VistaやWindows Server 2008、Windows 7での動作サポートを表明している[4]。
アプリケーションの実行環境
Visual Basicで作成したアプリケーションは、それ単体だけでは実行することができない。
バージョン6.0以前については、アプリケーション作成に使用したVisual Basicのバージョンに対応するランタイムライブラリのインストールが必要である。バージョン 7.0 (2002) 以降で作成したアプリケーションを実行するには、Visual C#やVisual J#と同じ実行基盤である.NET Frameworkが別途必要となる。
いずれも、作成したアプリケーションのパッケージに同梱して配布することがマイクロソフトにより認められている。
Visual Basic 言語が採用されているその他の環境
VBA (Visual Basic for Applications)
テンプレート:Main 個々のアプリケーション用のマクロ環境として実装されるVisual Basic。反復操作を自動化するだけでなく、Windowsのフォームやボタンなどのコントロールをドキュメント内に配置して、ドキュメント編集のためのGUIを構築することも可能となっている。言語仕様としては、本家のVisual Basicで.NET以降がリリースされたのちも、ドキュメントの互換性を保つ目的で、Visual Basic 6.0ベースのものが実装されている。ExcelやAccess、WordなどMicrosoft Officeの多くのアプリケーションで実装されているほか、独自に開発したアプリケーションにVBAを搭載することも可能で、サードパーティ製のアプリケーションにVBAが搭載される場合もある。本家Visual Basicとの大きな違いは、搭載アプリケーション内でしか実行できない点にある。
VBAでは、各アプリケーションをオブジェクトとして操作できるようになっており、Excelを例にとると、「ファイル全体」を表すBookクラス、「スプレッドシートのセル」を表すRangeクラスなどがVBAから操作できる。 また、VBAでゲームを作る試みも1997年位より始まっており、現在ではWindowsのAPIや、DirectXとのコラボが行われている。
VBScript (Visual Basic Scripting Edition)
Visual Studio マクロ
Microsoft Visual Studioでは、繰り返し発生する操作を自動化するために、Visual Basic言語によるIDEマクロ環境が用意されている。前述のVBAとは異なり、Visual Studioのバージョンに応じたVisual Basicが使用できるようになっており、Visual Studio .NET以降はVB.NETを使って.NET Frameworkを利用できるようになっている。なお、各マクロプロジェクトは、テキストファイルのソースコードではなく、.vsmacrosファイルにメタデータとしてバイナリ形式で保存されるようになっているが、各モジュールをVBのソースファイル (.vb)としてエクスポートあるいはインポートすることもできる。
関連項目
- Microsoft Visual Studio
- Microsoft Visual Basic .NET
- Visual Basic for Applications
- Twip
- Remote Data Objects (RDO)
- Gambas
脚注
外部リンク
- .Visual Studio 開発者向け技術情報
- .NET Framework 開発者向け技術情報
- .NET Framework を学習する
- Visual Basic をサンプルコードから学習する
- 公式ウェブサイト
- Visual Basic Tutorials テンプレート:En icon
- ↑ テンプレート:Cite web
- ↑ Visual Basic 6.0 ファミリ製品のライフ サイクル ガイドライン MSDN Visual Basicデベロッパーセンター
- ↑ よく寄せられる質問:Visual Studio と Windows Vista Microsoft Visual Studio デベロッパーセンター
- ↑ Windows Vista®、 Windows Server 2008®、および Windows 7 における Visual Basic 6.0 のサポートについて MSDN Visual Basicデベロッパーセンター