この項目では、1990年代に開発されていたプログラミング言語Visual Basicおよびその統合開発環境について説明しています。.NETに対応したVisual Basicについては「Visual Basic .NET 」をご覧ください。
Visual Basic (ヴィジュアル ベーシック、略称 VB)は、マイクロソフト が1991年に公開したプログラミング言語 および統合開発環境 である。GUI 部品を画面上に配置しながらWindows 向けアプリケーション を容易に開発できる環境を提供し、1990年代における Windowsソフトウェア 開発の普及に大きな役割を果たした。
従来系統の開発は Visual Basic 6.0 を最後に終了し、その後は.NET 環境向けの後継言語であるVisual Basic .NET (VB.NET)へ移行している。本記事では .NET 以前の Visual Basic を対象とする。
Visual Basicは、同じくマイクロソフトによって開発されていたQuickBASIC を拡張・発展させたものである。
汎用プログラミング言語としてのVBは、QuickBASIC同様、構造化プログラミング のパラダイムを取り入れたBASIC である。1970年代から1980年代にかけて広く使われていた、構造化以前のBASIC(行番号 やGOTO文 を用いるスタイル)とは大きく異なっている。加えてオブジェクト指向 に近い概念も取り入れられている。
VB4でクラス モジュール機構が導入された。VB5でインターフェイス の実装(Implements)を利用したポリモーフィズム が導入された[ 2] 。ただしバージョン6.0時点では、C++ やJava といった言語と比較して、オブジェクト指向プログラミングのための機能が十分には搭載されておらず、特にクラスの継承 (実装継承)に相当する機能がなかった。なお、後継のVB.NETでは完全なクラスベース のオブジェクト指向の機能が搭載された。
統合開発環境 (IDE)としてのVBは、主にグラフィカルユーザーインターフェイス (Graphical User Interface、GUI)を持つアプリケーションソフトウェア を効率的に開発するための視覚的プログラミング環境である。基本的にコンソールアプリケーション の開発は想定されていない[ 注釈 1] 。
VBでは、まずGUIデザイナー画面において視覚的表示されるフォーム (英語版 ) (ウィンドウ )上に、ボタン やテキストボックス など、「コントロール」と呼ばれるあらかじめ用意された各種のGUI部品(ウィジェット )を、マウス によるドラッグ&ドロップ などを用いて配置する。このデザイナー上で確認できる表示結果は、GUIアプリケーションが実際に起動されたときの結果に近いものとなる(WYSIWYG )。次に、それらのGUI部品において、マウス でクリックされたり、テキスト内容などのプロパティ が変更されたり、といった「イベント 」が発生した場合に実行させたいことをコードで記述していくことでプログラム を作成していく。このスタイルはRapid Application Development (RAD)とも呼ばれる。
VBの特徴は、RADスタイルのプログラミングである、とリリース当時のMSのリーフレットなどではその特徴が解説された。 [要出典 ]
グラフィックスの描画など、GUIを実現するときに付随する定型的な画面管理は各部品の内部で行なわれるため、プログラマ が直接記述する必要性が大幅に低減され、記述が煩雑になりがちなGUIを利用したプログラムを、簡単かつ効率的に作成することができる。このプログラミングスタイルは、後発のDelphi やWindows Forms などでも採用されており、VBはRADの先駆けのひとつであったともいえる。
バージョン1.0ではWindows版の後にMS-DOS 版が発売されており、キャラクタベースにもかかわらずコントロールを配置してGUIを構築することができた。ただしキャラクタベースであるため、フォームを使用した場合、グラフィックスの描画は不可能である。
なおMicrosoft Windows 用のGUI アプリケーション を開発する場合、もっとも原始的な方法としてC /C++ 言語でWindows API を使い、コードベースでメッセージループやウィンドウプロシージャといったすべてのGUI処理を記述していく方法がある。この方法はWindowsのすべての機能にアクセスでき、すべてを制御することができることがメリットだが、その代わりコード記述量は膨大なものとなり、開発効率が悪い。このような作業を隠蔽・省略して、直感的かつ迅速にアプリケーションを開発できるようにしてくれるのが、VBのようなRAD環境である。Microsoft Visual C++ ではリソースエディタと呼ばれる、GUIの外観デザインを視覚的に設定できるツールも存在するが、これはRADではない。MFC のフレームワークを利用することで定型的なコードの記述量は減るものの、VBほど直感的にGUIアプリケーションを開発できるようになるわけではない。C/C++は言語仕様や概念自体が難解でVBよりも習得しづらく、エンドユーザー・コンピューティング の観点からもハードルが高い。
Private Sub Command1_Click () MsgBox "Hello, World" End Sub 上記はコマンドボタン "Command1"に関連付けられているイベントハンドラー の例である。対応するコマンドボタンをクリックすると、メッセージボックス に「Hello, World」と表示される。
マルチメディアコンポーネントであるMicrosoft DirectX に関しては、一部のバージョンのみVisual Basic上からでも利用が可能となっている。Visual Basic 6.0ではVB用のCOM タイプ ライブラリを使用することでDirectX 7およびDirectX 8を利用できる[ 4] [ 5] 。しかし、これらのVB向けDirectXインターフェイス は、Windows Vista 以降ではサポートされていない[ 6] 。
Visual Basicのユーザーインターフェイスのドラッグ&ドロップデザインを作成したアラン・クーパー Visual Basic 1.0がリリースされたのは1991年である。ユーザーインターフェイスを作成するためのドラッグ・アンド・ドロップ のデザインは、アラン・クーパー が開発したプロトタイプのフォームジェネレータTripodに由来する[ 7] [ 8] [ 9] 。マイクロソフトはクーパーと契約し、TripodをWindows 3.0用のプログラム可能なフォームシステムにするために、Rubyというコード名で開発した(後のスクリプト言語Ruby とは関係ない)。Tripodにはプログラミング言語は含まれていなかった。マイクロソフトはRubyと同社のQuickBASIC を組み合わせてVisual Basicを作成することにした。インタフェースジェネレータRubyはVisual Basicの視覚的な部分を提供した。Rubyはまた、追加のコントロール(当時は「ギズモ」と呼ばれていた)を含むダイナミックリンクライブラリ (DLL)をロードする機能も提供し、これは後にVBX (英語版 ) インターフェイスとなった[ 10] 。アラン・クーパーは「Visual Basicの父」と呼ばれている[ 11] 。
Visual Basicには、大きく分けて2種類ある。1つはバージョン1.0から6.0までの旧来版、もう1つはバージョン 7.0(2002)以降の.NET Framework 対応版である。.NET Frameworkに対応したバージョン7.0以降はバージョン6.0以前と比較して大きな変更が施され、互換性もない。
バージョンの履歴 製品名 バージョン ランタイム名 リリース 備考 Visual Basic 1.0 1.0 VBRUN100.DLL 1991年 オブジェクト指向の基本的な部分を実装。日本では発売されなかった。 Visual Basic for MS-DOS 1.0 - 1992年 Windows版との互換性は低いが、DOS版QuickBASICの後継バージョンとして使える。NEC PC-98用および富士通FMR用の日本語版も販売されていた。
Visual Basic 2.0 2.0 VBRUN200.DLL (英語版) VBRJP200.DLL (日本語版) 1992年 OLE, ODBC対応。日本語版は1993年で当初はODBC対応はなし。 Visual Basic 3.0 3.0 VBRUN300.DLL 1993年 日本では発売されなかった。 Visual Basic 4.0 4.0 VBRUN400.DLL 1995年 32 ビット版と 16 ビット版がある。 Visual Basic 5.0 CCE 5.0 - 1997年 ActiveXコントロール作成専用。フリー。Visual Basic 5.0のプロトタイプ。 Visual Basic 5.0 5.0 MSVBVM50.DLL 1997年 Win32 ネイティブコードへのコンパイル機能をサポート。 Visual Basic 6.0 6.0 MSVBVM60.DLL 1998年 旧来型 Visual Basic (Win32 ネイティブ) の最後のバージョン。
32 ビット版と 16 ビット版の Windows プログラムを開発できる最初のバージョンとなった。爆発的に普及が始まったWindows 95 用のアプリケーション開発環境の一つとしてリリースされた。ボタンやコンボボックス のような標準コントロールに加え、サードパーティー から発売されたコントロールをマウスを使ったGUI操作で配置することでアプリケーション画面を作成することができ、プログラム生産性が高いことが特徴だった。特に、サードパーティ製の高機能なコンポーネントが多く発売され、熟練開発者でなくとも操作性の高いアプリケーションが開発でき、当時のエンドユーザー・コンピューティング に大きな影響を与えた。VB4 の言語仕様が Office 95 の VBA に切り出され、Word VBA、Excel VBA、Access VBA の仕様とも融合した。
技術面で見ると、前のバージョンまではVBXコントロールを使っていたが、このバージョンからVisual C++などを用いてCOM のコントロール(OLE コントロール、OCX、後にActiveXコントロールと呼ばれる)を開発し、これらの部品群の組み立てをVisual Basicで行うことが容易にできた。特にExcel などのアプリケーションをOLEを通じて制御することができるため、帳票を扱うような業務アプリケーション開発の分野で使われることも多かった。
Win32 ネイティブコードへのコンパイル機能がサポートされるようになり、実行速度が大幅に向上した。開発環境内でのインタプリタ実行も引き続きサポート。
ActiveXに完全に対応し、ActiveXオブジェクトを使用することはもちろん作成することも可能。そのため、ActiveXコンポーネントとして公開されていたDAO やADO 、oo4o などを使用して、SQL Server やOracle DB を制御することができ、多くのビジネスシーンで使用された。また、バージョン1.0からの経験も蓄積されていたためVisual Basic 6.0を扱えるプログラマ・情報量ともに豊富だった。
Webアプリケーション を開発するための方法(IIS によるサーバーサイドVBの実行、VBフォームへのWeb機能組み込み、Internet Explorer でのVBホスティング)がいくつか用意されていた[ 12] 。
Visual Basic for Applications (VBA)[ 編集 ] Microsoft Office のアプリケーション用のマクロ環境として実装されているVisual Basic。反復操作を自動化するだけでなく、Windowsのフォームやボタンなどのコントロールをドキュメント内に配置して、ドキュメント編集のためのGUIを構築することも可能となっている。言語仕様としては、本家のVisual Basicで.NET以降がリリースされたのちも、ドキュメントの互換性を保つ目的で、Visual Basic 6.0ベースのものが実装されている。ExcelやAccess 、Word などのアプリケーションで実装されているほか、独自に開発したアプリケーションにVBAを搭載することも可能で、サードパーティ製のアプリケーションにVBAが搭載される場合もある。本家Visual Basicとの大きな違いは、搭載アプリケーション内でしか実行できない点にある。
VBAを用いることで、対応するアプリケーション内の各要素をクラスオブジェクトとして操作できる。Excelを例にとると、「Excelアプリケーション」を表すApplicationオブジェクト、「Excelブック」を表すWorkbookオブジェクト、「スプレッドシート中のセルまたはセル範囲」を表すRangeオブジェクトなどがVBAから操作できる。
Office 2007まではバージョン6系列のVisual Basicが採用されていたが、Office 2010では、バージョン番号を7.0としている[ 13] 。主な変更点として、64ビット 環境への対応が挙げられる。LongPtr(32ビット環境・64ビット環境双方でポインタと同じ大きさとなる整数型)、LongLong(64ビット整数型、ただし64ビット環境でのみ使用可能)などのデータ型やそれに伴う変換関数の追加などが行なわれている。
VBScript (Visual Basic Scripting Edition)[ 編集 ] Active Server Pages (ASP)の既定の言語であり、Windows スクリプティングやクライアント側のウェブページ スクリプティングでも利用される。文法はVBに似ているがVBランタイムではなくvbscript.dllで実行される別の言語である。ASPおよびVBScriptは、.NET Framework を使ったASP.NET とはまた別物である。
Visual Basic 6.0の後継言語であり、.NET プラットフォームの一部である。Visual Basic .NETは.NET Frameworkを使ってコンパイルされ実行される。同時期にリリースされたC# の姉妹言語であり、Visual Basic 6.0と後方互換性 はない。自動移行ツールも用意されているが手動での手直しも必要となる。IDEとしてはVisual C# と遜色のないソリューション・プロジェクト管理機能も実装されている。
のちにMono や.NET Core 環境にも移植され、クロスプラットフォームとなった。
Microsoft Visual Studio では、繰り返し発生する操作を自動化するために、Visual Basic言語によるIDEマクロ環境が用意されている。前述のVBAとは異なり、Visual Studioのバージョンに応じたVisual Basicが使用できるようになっており、Visual Studio .NET以降はVB.NETを使って.NET Frameworkを利用できるようになっている。なお、各マクロプロジェクトは、テキストファイルのソースコードではなく、.vsmacrosファイルにメタデータ としてバイナリ形式で保存されるようになっているが、各モジュールをVBのソースファイル (.vb) としてエクスポートあるいはインポートすることもできる。公式のマクロ機能はVisual Studio 2010までの提供となり、2012では廃止された。
Visual Basic 5 以前のバージョンでは、Pコード へのコンパイルのみをサポートしていた。Pコードは言語ランタイムによって解釈される。Pコードのメリットは、ポータビリティと小さなバイナリサイズであるが、実行時に解釈するレイヤーが追加になるため実行速度が遅くなる。Visual Basicアプリケーションの実行にはMicrosoft Visual Basicランタイム(MSVBVMxx.DLL)が必要であり、xx は50、60などのバージョン番号が入る。MSVBVM60.dllはWindows 98からWindows 7までのバージョンのWindowsのすべてのエディション(一部の Windows 7のエディションを除く)で標準コンポーネントとしてインストールされていた。Windows 95マシンはプログラムが必要としているDLLをインストーラで配布する必要があった。作成したアプリケーションのパッケージにランタイムを同梱して配布することがマイクロソフトにより認められている。Visual Basic 5 と 6 はコードを Win32 ネイティブとPコードのどちらにでもコンパイルできたが、いずれにせよビルトインの関数やフォームの利用にランタイムを必要とした。
VB.NET 以前のVisual Basicでは以下の不都合が指摘されていた。
旧来型Visual Basicの最終バージョンであるVisual Basic 6.0は、2004年3月29日にService Pack 6がリリースされたのち、2005年3月31日にメインストリームサポート期間を終え、2008年4月8日に延長サポートの期間を終えた[ 16] 。したがって現在は開発環境のサポートを打ち切られている状態にある。
Visual Studio .NET 2003以前のIDE製品は、Windows Vista およびWindows Server 2008 上での実行サポートが打ち切られたが、Visual Basicに関しては後継のVB.NET以降との互換性がほとんどなく、他開発環境への移行も難しいことから、マイクロソフトは例外的に32bit版のWindows VistaおよびWindows Server 2008でのVisual Basic 6.0のIDE実行(開発環境の実行)をサポートしている[ 17] 。ただし、64bit環境でのIDE実行はサポートされない。また、Windows 7 およびWindows Server 2008 R2 以降では開発環境の実行サポートも打ち切られている(ただしマイクロソフトによると、Windows 7やWindows 8 においてVisual Basic 6.0 IDEをテストし、アプリケーションの互換性に深刻な不具合がないかどうかを確認して、必要に応じて不具合の軽減措置を取ったとされている)。
Visual Basic 6.0で作成されたアプリケーション や、OSに同梱されるVB6ランタイムについては、Windows 7以降およびWindows Server 2008以降での動作サポートが継続されている[ 1] [ 18] 。64bit OS上ではWOW64 により動作する。
^a b Support Statement for Visual Basic 6.0 | Microsoft Docs ^ VB Visual Basicの新機能の歴史1 ^ プログラミング Visual Basicでコンソールプログラムの開発 ^ Visual Basic で DirectX を使おう | Microsoft Docs ^ MSDN Online - DirectX Developer Center - DirectX for Visual Basic | Microsoft Docs ^ DirectX Frequently Asked Questions - Windows applications | Microsoft Docs ^ Cooper, Alan (1996年4月22日). “Why I am "the father of Visual Basic" ”. 2017年3月8日閲覧。 ^ “Alan Cooper Receiving the Windows Pioneer Award 1994 ”. YouTube (2010年9月23日). 2020年5月3日閲覧。 ^ Lohr, Steve (2008). Go To: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Maverick Scientists, and Ico (revised ed.). Basic Books. p. 96. ISBN 9780786730766 . https://books.google.com/?id=XfPLVx6qS_cC&pg=PA96&lpg=PA96&dq=%22Windows+Pioneer%22+cooper+site+microsoft.com#v=onepage&q=%22Windows%20Pioneer%22%20cooper%20site%20microsoft.com&f=false . "Cooper ... gained industry recognition as the "Father of Visual Basic." (Microsoft's lawyers once sent Cooper a cease-and-desist order, demanding that he stop using that title. But after Cooper complained, Gates patched things up and even lauded him as a "Windows Pioneer" at an industry conference.)" ^ “The Birth of Visual Basic ”. 2020年5月3日閲覧。 ^ Waite, Mitchell (1992). The Waite Group's Visual Basic How-To. Waite Group Press.ISBN 1-878739-09-3 ,978-1-878739-09-4 , pp. dedication page ^ Visual Basic 6.0のWebツール | Microsoft Docs ^ Compatibility Between the 32-bit and 64-bit Versions of Office 2010 | Microsoft Docs ^ Marc D'Aoust (2000年12月). “Avoid Writing Tedious, Boring Code ”. Microsoft . 2008年11月10日閲覧。 ^ Andrew Troelsen (2008). Pro VB 2008 and the .NET 3.5 Platform: The expert's voice in .NET . Apress. p. 5. ISBN 1-59059-822-9 . https://books.google.com.au/books?id=y0uURUiVhgwC ^ Visual Basic 6.0 ファミリ製品のライフ サイクル ガイドライン | Microsoft Docs ^ [Visual Studio] 開発ツール対応 OS 一覧 – Cloud and Server Product Japan Blog ^ Getting ready for Windows 10 – SDKs, compatibility, bridges | Building Apps for Windows 低水準言語 高水準言語
1950年代 1960年代 1970年代 1980年代 1990年代 2000年代 2010年代 2020年代
架空の言語