Visual Basic

Visual Basic (ヴィジュアル ベーシック)はマイクロソフトが1990年代に開発していたプログラミング言語およびその処理系。通常はVisual BasicまたはVBと呼ぶ。Visual Studioに組み込まれ、さまざまな種類のアプリケーション開発に用いられる。後継となるVisual Basic .NET (VB.NET) に関しては当該項目を参照。1970年代〜1980年代に開発されていた前身のMicrosoft BASICについては当該項目を参照。アプリケーション組み込み用の言語Visual Basic for Applicationsに関しては当該項目を参照。

Microsoft Visual Basic
開発元 マイクロソフト
初版 1.0 - 1991年 1991
最新版
6.0 / 1998年 1998
対応OS Microsoft Windows, MS-DOS
サポート状況 開発環境は2008年に終了
実行環境はサポート継続中[1]
種別 統合開発環境
ライセンス Microsoft EULA(プロプライエタリ
公式サイト https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/visual-basic-6.0-documentation
Visual Basic
パラダイム 手続き型, 制限付きのオブジェクト指向
登場時期 1991年 1991
設計者 マイクロソフト
開発者 マイクロソフト
最新リリース 6.0/ 1998年 1998
型付け 静的型付け
主な処理系 Microsoft Visual Basic
影響を受けた言語 BASIC, QuickBASIC
影響を与えた言語 Visual Basic .NET, TTSneo
プラットフォーム Microsoft Windows, MS-DOS
ライセンス Microsoft EULA
拡張子 .vb

なお、マイクロソフトのドキュメントでは、バージョン2005以降のVisual Basic .NETをVisual Basicと呼んでいるが、本記事では.NET非対応のVisual Basicのみを取り扱う。

言語の特徴

初期のバージョンBASICから派生したマイクロソフトのQuickBASICを拡張したもので、RADに対応した統合開発環境の名称でもあった。

もともとが初心者用言語のBASICから派生しているという来歴から、VBもプログラミング初心者用・入門者用と言われることが多かったが、実際にはさまざまなビジネスシーンで活用されている。

Microsoft Windows用のGUIアプリケーションを開発する場合、もっとも原始的な方法としてC/C++言語でWin32 APIを使い、コードベースですべてのGUI処理を記述していく方法がある。この方法はWindowsのすべての機能にアクセスでき、すべてを制御することができることがメリットだが、その代わりコード記述量は膨大なものとなり、開発効率が悪い(Microsoft Visual C++ではリソースエディタと呼ばれる、GUIの外観デザインを視覚的に設定できるツールも存在するが、これはRADではない)。

VBではフォーム上に、あらかじめ用意された各種のGUIパーツ(コントロール)を配置して、それらのプロパティが変更されたり、マウスでクリックされたりするなどイベントが発生した場合の処理を記述していくことでプログラムを作成していくスタイル(Rapid Application Development, RAD)が特徴だったが、現在では多くのGUIアプリケーション開発環境においてこのようなスタイルでのプログラミングが可能であり、VBはその嚆矢であったことになる。グラフィックの描画など、GUIを実現するときに付随する定型的な画面管理はパーツの内部で行なわれるため、プログラマが直接記述する必要性が大幅に低減され、記述が煩雑になりがちなGUIを利用したプログラムを、簡単かつ効率的に作成することができる。

バージョン1.0ではWindows版の後にMS-DOS版が発売されており、キャラクタベースにもかかわらずコントロールを配置してGUIを構築することができた。ただしキャラクタベースであるため、フォームを使用した場合、グラフィックスの描画は不可能である。

言語仕様は、旧来のBASIC言語に比べ、構造化プログラミングの機能が加えられるなど大きく拡張されており、加えてオブジェクト指向に近い概念も取り入れられている。VB4でクラスモジュール機構が導入された。VB5でインターフェイスの実装 (Implements) を利用したポリモーフィズムが導入された[2]。ただしバージョン6.0時点では、C++Javaといった言語と比較して、オブジェクト指向プログラミングのための機能が十分には実装されておらず、特にクラスの継承(実装継承)に相当する機能がなかった。なお、後継のVB.NETでは完全なクラスベースのオブジェクト指向の機能や、Visual C#と遜色のないソリューション・プロジェクト管理機能も実装されている。

DirectXのサポート

マルチメディアコンポーネントであるMicrosoft DirectXに関しては、一部のバージョンのみVisual Basic上からでも利用が可能となっている。Visual Basic 6.0ではVB用のCOMタイプ ライブラリを使用することでDirectX 7およびDirectX 8を利用できる[3][4]。 しかし、これらのVB向けDirectXインターフェイスは、Windows Vista以降ではサポートされていない[5]

歴史

Visual Basicのユーザーインターフェイスのドラッグ&ドロップデザインを作成したアラン・クーパー

Visual Basic 1.0がリリースされたのは1991年である。ユーザーインターフェイスを作成するためのドラッグ・アンド・ドロップのデザインは、アラン・クーパーが開発したプロトタイプのフォームジェネレータTripodに由来する[6][7][8]。マイクロソフトはクーパーと契約し、TripodをWindows 3.0用のプログラム可能なフォームシステムにするために、Rubyというコード名で開発した(後のスクリプト言語Rubyとは関係ない)。Tripodにはプログラミング言語は含まれていなかった。マイクロソフトはRubyと同社のQuickBASICを組み合わせてVisual Basicを作成することにした。インタフェースジェネレータRubyはVisual Basicの視覚的な部分を提供した。Rubyはまた、追加のコントロール(当時は「ギズモ」と呼ばれていた)を含むダイナミックリンクライブラリ(DLL)をロードする機能も提供し、これは後にVBXインターフェイスとなった[9]。アラン・クーパーは「Visual Basicの父」と呼ばれている[10]

Visual Basicには、大きく分けて2種類ある。1つはバージョン1.0から6.0までの旧来版、もう1つはバージョン 7.0 (2002) 以降の.NET Framework対応版である。.NET Frameworkに対応したバージョン7.0以降はバージョン6.0以前と比較して大きな変更が施され、互換性もない。

バージョンの履歴
製品名バージョンランタイム名リリース備考
Visual Basic 1.01.0VBRUN100.DLL1991年オブジェクト指向の基本的な部分を実装。日本では発売されなかった。
Visual Basic for MS-DOS1.0-1992年Windows版との互換性は低いが、DOS版QuickBASICの後継バージョンとして使える。

NEC PC-98用および富士通FMR用の日本語版も販売されていた。

Visual Basic 2.02.0VBRUN200.DLL (英語版)
VBRJP200.DLL (日本語版)
1992年OLE, ODBC対応。日本語版は1993年で当初はODBC対応はなし。
Visual Basic 3.03.0VBRUN300.DLL1993年日本では発売されなかった。
Visual Basic 4.04.0VBRUN400.DLL1995年32 ビット版と 16 ビット版がある。
Visual Basic 5.0 CCE5.0-1997年ActiveXコントロール作成専用。フリー。Visual Basic 5.0のプロトタイプ。
Visual Basic 5.05.0MSVBVM50.DLL1997年Win32 ネイティブコードへのコンパイル機能をサポート。
Visual Basic 6.06.0MSVBVM60.DLL1998年旧来型 Visual Basic (Win32 ネイティブ) の最後のバージョン。

Visual Basic 4.0

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を通じて制御することができるため、帳票を扱うような業務アプリケーション開発の分野で使われることも多かった。

Visual Basic 5.0

Win32 ネイティブコードへのコンパイル機能がサポートされるようになり、実行速度が大幅に向上した。 開発環境内でのインタプリタ実行も引き続きサポート。

Visual Basic 6.0

ActiveXに完全に対応し、ActiveXオブジェクトを使用することはもちろん作成することも可能。そのため、ActiveXコンポーネントとして公開されていたDAOADOoo4oなどを使用して、SQL ServerOracle DBを制御することができ、多くのビジネスシーンで使用された。また、バージョン1.0からの経験も蓄積されていたためVisual Basic 6.0を扱えるプログラマ・情報量ともに豊富だった。

Webアプリケーションを開発するための方法(IISによるサーバーサイドVBの実行、VBフォームへのWeb機能組み込み、Internet ExplorerでのVBホスティング)がいくつか用意されていた[11]

派生言語

Visual Basic for Applications (VBA)

Microsoft Officeのアプリケーション用のマクロ環境として実装されているVisual Basic。反復操作を自動化するだけでなく、Windowsのフォームやボタンなどのコントロールをドキュメント内に配置して、ドキュメント編集のためのGUIを構築することも可能となっている。言語仕様としては、本家のVisual Basicで.NET以降がリリースされたのちも、ドキュメントの互換性を保つ目的で、Visual Basic 6.0ベースのものが実装されている。ExcelAccessWordなどのアプリケーションで実装されているほか、独自に開発したアプリケーションにVBAを搭載することも可能で、サードパーティ製のアプリケーションにVBAが搭載される場合もある。本家Visual Basicとの大きな違いは、搭載アプリケーション内でしか実行できない点にある。

VBAを用いることで、対応するアプリケーション内の各要素をクラスオブジェクトとして操作できる。Excelを例にとると、「Excelアプリケーション」を表すApplicationオブジェクト、「Excelブック」を表すWorkbookオブジェクト、「スプレッドシート中のセルまたはセル範囲」を表すRangeオブジェクトなどがVBAから操作できる。

Office 2007まではバージョン6系列のVisual Basicが採用されていたが、Office 2010では、バージョン番号を7.0としている[12]。主な変更点として、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 .NET

Visual Basic 6.0の後継言語であり、.NETプラットフォームの一部である。Visual Basic .NETは.NET Frameworkを使ってコンパイルされ実行される。Visual Basic 6.0と後方互換性はない。自動移行ツールも用意されているが手動での手直しも必要となる。

Visual Studio マクロ

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日に延長サポートの期間を終えた[15]。したがって現在は開発環境のサポートを打ち切られている状態にある。

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実行(開発環境の実行)をサポートしている[16]。ただし、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以降での動作サポートが継続されている[17][18]。64bit OS上ではWOW64により動作する。

コード例

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

上記はコマンドボタン"Command1"に関連付けられているイベントハンドラーの例である。対応するコマンドボタンをクリックすると、メッセージボックスに「Hello, World」と表示される。

脚注

  1. Support Statement for Visual Basic 6.0 | Microsoft Docs
  2. VB Visual Basicの新機能の歴史1
  3. Visual Basic で DirectX を使おう | Microsoft Docs
  4. MSDN Online - DirectX Developer Center - DirectX for Visual Basic | Microsoft Docs
  5. DirectX Frequently Asked Questions - Windows applications | Microsoft Docs
  6. Cooper, Alan (1996年4月22日). Why I am "the father of Visual Basic"”. 2017年3月8日閲覧。
  7. Alan Cooper Receiving the Windows Pioneer Award 1994”. YouTube (2010年9月23日). 2020年5月3日閲覧。
  8. 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.)"
  9. The Birth of Visual Basic”. 2020年5月3日閲覧。
  10. Waite, Mitchell (1992). The Waite Group's Visual Basic How-To. Waite Group Press. 1-878739-09-3, 978-1-878739-09-4, pp. dedication page
  11. Visual Basic 6.0のWebツール | Microsoft Docs
  12. Compatibility Between the 32-bit and 64-bit Versions of Office 2010 | Microsoft Docs
  13. Marc D'Aoust (2000年12月). Avoid Writing Tedious, Boring Code”. Microsoft. 2008年11月10日閲覧。
  14. 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
  15. Visual Basic 6.0 ファミリ製品のライフ サイクル ガイドライン | Microsoft Docs
  16. [Visual Studio] 開発ツール対応 OS 一覧 – Cloud and Server Product Japan Blog
  17. Support Statement for Visual Basic 6.0 | Microsoft Docs
  18. Getting ready for Windows 10 – SDKs, compatibility, bridges | Building Apps for Windows

関連項目

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.