Microsoft Visual Basic

プログラミング言語 >>他のプログラミング言語 ■カテゴリ / ■テンプレート Microsoft Visual Basic （マイクロソフト ヴィジュアル ベーシック）はマイクロソフトが1990年代に開発していたプログラミング言語およびその処理系。通常はVisual BasicまたはVBと呼ぶ。Visual Studioに組み込まれ、さまざまな種類のアプリケーション開発に用いられる。後継となるMicrosoft Visual Basic .NETに関してはそちらの項目を参照。1970年代〜1980年代に開発されていた前身のMicrosoft 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言語に比べ、構造化プログラミングの機能が加えられるなど大きく拡張されており、加えてオブジェクト指向に近い概念も取り入れられている。ただしバージョン6.0まではオブジェクト指向の要素が十分には実装されておらず、特に継承にあたる機能が皆無だった。なお、後継のVB.NETでは完全なクラスベースのオブジェクト指向の機能や、Visual C#と遜色のないソリューション・プロジェクト管理機能も実装されている。 バージョン5.0よりも前のバージョンではインタプリタ動作のみであったこともあり、実行速度ではCやC++で記述したネイティブプログラムに比べ10倍から20倍遅いと言われていた[要出典]（実際には処理内容に応じて速度比較の結果は異なる）。バージョン5.0と6.0では、Win32 ネイティブコードへのコンパイルがサポートされ、速度面での大幅な改善が図られている。 マルチメディアコンポーネントであるMicrosoft DirectXに関しては、一部のバージョンのみVisual Basic上からでも利用が可能となっている。Visual Basic 6.0ではVB用のCOMタイプ ライブラリを使用することでDirectX 7およびDirectX 8を利用できる 。 しかし、これらのVB向けインタフェースは、Windows Vista以降ではサポートされていない。 Private Sub Command1_Click() MsgBox "Hello, World" End Sub 上記はコマンドボタン"Command1"に関連付けられているイベントハンドラーの例である。対応するコマンドボタンをクリックすると、メッセージボックスに「Hello, World」と表示される。 Visual Basicには、大きく分けて2種類ある。1つはバージョン1.0から6.0までの旧来版、もう1つはバージョン 7.0 (2002) 以降の.NET Framework対応版である。.NET Frameworkに対応したバージョン7.0以降はバージョン6.0以前と比較して大きな変更が施され、互換性もない。 爆発的に普及が始まったWindows 95用のアプリケーション開発環境の一つとしてリリースされた。ボタンやコンボボックスのような標準コントロールに加え、サードパーティーから発売されたコントロールをマウスを使ったGUI操作で配置することでアプリケーション画面を作成することができ、プログラム生産性が高いことが特徴だった。特に、サードパーティ製の高機能なコンポーネントが多く発売され、熟練開発者でなくとも操作性の高いアプリケーションが開発でき、当時のエンドユーザー・コンピューティング（en:End-user computing）に大きな影響を与えた。 技術面で見ると、Visual C++などを用いてCOMのコントロール（OLEコントロール、OCX、後にActiveXコントロールと呼ばれる）を開発し、これらの部品群の組み立てをVisual Basicで行うことが容易にできた。特にExcelなどのアプリケーションをOLEを通じて制御することができるため、帳票を扱うような業務アプリケーション開発の分野で使われることも多かった。 また、Visual Basicで作成されたアプリケーションを実行するために、ランタイムをあらかじめインストールする必要があった。 Win32 ネイティブコードへのコンパイル機能がサポートされるようになり、実行速度が大幅に向上した。 開発環境内でのインタプリタ実行も引き続きサポート。 ActiveXに完全に対応し、ActiveXオブジェクトを使用することはもちろん作成することも可能。そのため、ActiveXコンポーネントとして公開されていたDAOやADO、oo4oなどを使用して、SQL ServerやOracleを制御することができ、多くのビジネスシーンで使用された。また、バージョン1.0からの経験も蓄積されていたためVisual Basic 6.0を扱えるプログラマ・情報量ともに豊富だった。 Microsoft Officeでは、後述するVisual Basic for ApplicationsとしてVisual Basicによるマクロプログラミング環境が採用されている。Office 2007まではバージョン6系列のVisual Basicが採用されていたが、Office 2010では、バージョン番号を7.0としている。 主な変更点として、64ビット環境への対応が挙げられる。LongPtr（32ビット環境・64ビット環境双方でポインタと同じ大きさとなる整数型）、LongLong（64ビット整数型、ただし64ビット環境でのみ使用可能）などのデータ型やそれに伴う変換関数の追加などが行なわれている。 言語仕様が完全なオブジェクト指向言語ではなかったことや、複雑化するシステム環境に十分に対応できなかったり、開発容易性を確保するために機能的な制限があったため以下の不都合が指摘されてきた。 コンポーネントのバージョンの違いからトラブルが起きやすい（DLL地獄）。 基本的にマルチスレッド機能が無い（ActiveX EXEでのみ可能）。 他の言語との情報共有・連携性が乏しい。 VBランタイムが別途必要となるなど、アプリケーションのインストールに手間がかかる。 また、Visual Basic 6.0ではWebアプリケーションを開発するための方法（IISによるサーバーサイドVBの実行、VBフォームへのWeb機能組み込み、Internet ExplorerでのVBホスティング）がいくつか用意されていたが、Webの普及とともにWebアプリケーションとしてシステムを構築する事案が増え、Java言語がウェブアプリケーションに柔軟に対応していたのに比較すると、Webアプリケーションの開発が面倒という指摘もあった[要出典]。 これらの問題点を解消するために改良が加えられ、Visual Basic .NET が誕生した。しかし言語仕様の大幅な改訂のために、VB6とVB.NETとの互換性はほとんど無くなっている。Visual Basic .NET以降のVBはそれ以前と区別するためにまとめてVisual Basic .NETまたはVB.NETと呼ばれることがある。 旧来型Visual Basicの最終バージョンであるVisual Basic 6.0は、2004年3月29日にService Pack 6がリリースされたのち、2005年3月31日にメインストリームサポート期間を終え、2008年4月8日に延長サポートの期間を終えた。したがって現在は開発環境のサポートを打ち切られている状態にある。 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実行（開発環境の実行）をサポートしている。ただし、64bit環境でのIDE実行はサポートされない。また、Windows 7およびWindows Server 2008 R2以降では開発環境の実行サポートも打ち切られている（ただしマイクロソフトによると、Windows 7やWindows 8においてVisual Basic 6.0 IDEをテストし、アプリケーションの互換性に深刻な不具合がないかどうかを確認して、必要に応じて不具合の軽減措置を取ったとされている）。 なお、Visual Basic 6.0で作成されたアプリケーションや、OSに同梱されるVB6ランタイムについては、Windows Vista、Windows Server 2008、Windows 7、Windows 8、およびWindows Server 2012での動作サポートがマイクロソフトによって表明されている。Windows 10でのVB6アプリケーション動作に関しても、サポートの継続がマイクロソフト公式ブログにて言及されている。 Visual Basicで作成したアプリケーションは、それ単体だけでは実行することができない。 アプリケーション作成に使用したVisual Basicのバージョンに対応するランタイムライブラリのインストールが必要である。 作成したアプリケーションのパッケージに同梱して配布することがマイクロソフトにより認められている。 Microsoft Officeのアプリケーション用のマクロ環境として実装されているVisual Basic。反復操作を自動化するだけでなく、Windowsのフォームやボタンなどのコントロールをドキュメント内に配置して、ドキュメント編集のためのGUIを構築することも可能となっている。言語仕様としては、本家のVisual Basicで.NET以降がリリースされたのちも、ドキュメントの互換性を保つ目的で、Visual Basic 6.0ベースのものが実装されている。ExcelやAccess、Wordなどのアプリケーションで実装されているほか、独自に開発したアプリケーションにVBAを搭載することも可能で、サードパーティ製のアプリケーションにVBAが搭載される場合もある。本家Visual Basicとの大きな違いは、搭載アプリケーション内でしか実行できない点にある。 VBAでは、各アプリケーションをオブジェクトとして操作できるようになっており、Excelを例にとると、「ファイル全体」を表すBookクラス、「スプレッドシートのセル」を表すRangeクラスなどがVBAから操作できる。 また、VBAでゲームを作る試みも1997年位より始まっており[要出典]、現在[いつ?]ではWindowsのAPIや、DirectXとのコラボが行われている。 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では廃止された。 Microsoft Visual Studio Microsoft Visual Basic .NET Visual Basic for Applications Twip Remote Data Objects (RDO) Gambas Delphi ^ Visual Basic で DirectX を使おう ^ MSDN Online - DirectX Developer Center - DirectX for Visual Basic ^ DirectX に関してよく寄せられる質問 ^ Rice, Frank; Microsoft Corporation (2009年11月). “Office 2010 の 32 ビット バージョンと 64 ビット バージョンとの互換性”. MSDN ライブラリ. マイクロソフト. 2010年12月23日閲覧。 ^ Visual Basic 6.0のWebツール ^ Visual Basic 6.0 ファミリ製品のライフ サイクル ガイドライン MSDN Visual Basicデベロッパーセンター ^ 開発ツール対応 OS 一覧 ^ Windows Vista、Windows Server 2008、Windows 7、および Windows 8 に対する Visual Basic 6.0 のサポートに関する声明 ^ Getting ready for Windows 10 – SDKs, compatibility, bridges | Building Apps for Windows .Visual Studio 開発者向け技術情報 公式ウェブサイト Visual Basic Tutorials （英語）