Visual Basic.NET(VB.NET)とは?できることと活用シーンを入門者向けに解説!
プログラミング言語の人気ランキングでも上位に位置するVisual Basic .NET、片や常に下位を彷徨うVisual Basic。
名前だけはよく聞くものの、違いについてよく知らないという方も多いのではないでしょうか。
本記事ではVBとVB.NETの違いについて、またVB.NETでできることや特徴、活用シーンについて説明します。
後半では話題のVB6からVB.NETへのマイグレーション案件について、移行が迫られている背景と技術的側面とについて解説します。
VBとVB.NETのバージョン履歴
VBとVB.NETの違いについて知るには、VBとVB.NETの歴史を追うのが近道です。
一般的な「VB」「VB.NET」の定義はありますが、個々のエンジニアが全員VB.NETの歴史に詳しい訳ではありません。
会話の流れでVBという単語が出てきた際は、どちらのことを話しているか意識しておくと誤解や認識違いを防げます。
バージョン履歴(抜粋)
最初にVisual Basicのバージョン履歴を見ていきましょう。
- Visual Basic 1.0
- Visual Basic for MS-DOS
- Visual Basic 2.0
- (中略)
- Visual Basic 5.0
- Visual Basic 6.0
MS-DOS(エムエスドス・Microsoft Disk Operating System)はWindowsよりも前にMicrosoftが開発したOS。
MS-DOS版のVBだから「for MS-DOS」を付けるという具合です。
続けてVisual Basic.NETのバージョン履歴を確認してみましょう。
- Visual Basic .NET
- Visual Basic .NET 2003
- Visual Basic 2005
- Visual Basic 2008
- (中略)
- Visual Basic 2017
- Visual Basic 2019
「.NET」が付いています。.NET Frameworkに対応したためです。
実は最初の頃に命名規則が安定しないのは、システム開発の現場ではよくあることです。
「VB」「VB.NET」の定義
VB.NET以外の他のプログラミング言語やフレームワークにもいえることですが、バージョンの命名規則は変則的になる場合があります。
例えば「PHP 6」は欠番ですし、AngularJS(v1.x)とAngular(v2.0以降)は、VBとVB.NETのように別言語のような扱いになっています。
ここは「そういうもの」だと思って下さい。
肝心なのは案件やドキュメントの中で、「VB」「VB.NET」という名称をどのように定義して使用しているか常に確認することです。
多くの記事ではVB6以前を指して「VB」、VB.NET以降を指して「VB.NET」と定義しています。本記事でもこの定義で記述します。
注意が必要なのは「Visual Basic 20XX」で、これらは「.NET」が付いていませんが中身は「VB.NET」です。
VBとVB.NETの違い
VBとVB.NETの歴史上の名称の不一致については説明しました。
では中身はどのくらい違うのでしょうか。先に書いてしまうとほとんど別物・別のプログラミング言語です。
であればこそ技術記事でこれらの名称は区別され、ウィキペディアでさえ別のページ扱いになっています。
なお、Visual Basicについては以下の記事で紹介していますので、Visual Basicについて詳しく知りたい方は併せてご参照ください。
Visual Basicとは?できることやインストール方法、基本的な文法を確認しよう。VBAとVBの違いも紹介!
VB6とVB.NET
よく「VB6」という単語を聞くことがあります。
これはVBの最後のバージョンが6.0であり、VB.NETに移行せずに古いシステムをそのまま維持し続けているからです。
VBは1990年代に全盛期を迎え、多くのシステム構築に利用されました。VBが持つ学習コストの低さと開発時間の短さが理由でした。
ここで2002年にVB.NETが登場します。しかしVB.NETはVB6との互換性がほとんどなく、移行があまり進みませんでした。
VB.NETからのオブジェクト指向
VB.NETはオブジェクト指向型のプログラミング言語です。そしてVB.NETになってから積極的にオブジェクト指向の概念が流入してきました。
実際、VBは手続き型のプログラミング言語ですが、継承や変数のスコープなどを除けば、オブジェクト指向のようなことは可能です。
今では当たり前の考え方でも、当時は手続き型プログラミングが主流でした。
<関連記事>
オブジェクト指向とは?オブジェクト指向の基本を徹底解説!メリットやカプセル化の概念は?おすすめオブジェクト指向言語も紹介
手続き型言語とは?オブジェクト指向言語と比較しわかりやすく解説!メリットやPythonにおすすめの型を紹介!
このためVBとVB.NETの違いだけでなく、当時と今とでプログラミングパラダイムに違いがあるという方が正しいかもしれません。
これから新規にVBでアプリケーションを作成することは恐らくないでしょう。
今後求められるのはVBを読んで理解し機能を追加・修正、そして後述するマイグレーションを行うことのできる能力です。
Visual Basic.NET(VB.NET)の特徴
VB.NETは他の言語に比べプログラミング初心者向けの言語といわれています。
理由はプログラミング初心者がつまずきやすい文法間違いを犯しにくい仕様だからだと考えられます。
学習難易度が低い
C言語やC++に比べると自然言語に近い文法規則のため、プログラミング初心者の方が学びやすい言語です。
また統合開発環境を利用すれば、GUI操作でフォームやボタンを配置できます。
簡単にWindowsフォームアプリケーションを作成できるでしょう。
ツールボックスから部品を選択・配置して、フォーム部品とメソッドを紐付けるだけで簡単に画面が作れます。
可読性が高く書きやすい
例えばVB.NETの変数宣言の順番は独特です。実際にメソッドの一例を見てみましょう。
- Public Sub sample()
- Dim sampleStr As String = “sample”
- Console.WriteLine(sampleStr)
- End Sub
「Dim sampleStr As String = “sample”」が変数の宣言です。Javaではこれを「String sampleStr = “sample”;」と表現します。
String(文字列型)の宣言の位置が前後しているのが分かります。
またJavaでは文末に「;」が付いていますが、VB.NETでは文末には何も付けないのでスッキリしています。
他にも細々とした文法上の違いがあり、必然的に可読性が高く修正時のミスが少ないプログラムになります。
.NET Frameworkへアクセス
VB.NETは.NET Frameworkを利用して様々な機能を実装することができます。
.NET FrameworkはWindowsにインストールされているアプリケーションの開発・実行環境です。フレームワークとしての機能も有しています。
「ASP.NET MVC」「WPF(Windows Presentation Foundation)」などを利用したアプリケーションが開発できます。
.NET frameworkをわかりやすく解説!導入手順やインストールできない場合の対処法は?バージョン確認方法もご紹介
VB.NETでできること
VB.NETでできる代表的なことについて見ていきましょう。
オブジェクト指向・手続き型プログラミング共に可能
VB.NETはオブジェクト指向型言語です。しかし歴史的経緯からも明らかなようにVB.NETも元はVBです。基本的な記法は変わりません。
VB.NETはいくつかのVBの機能を引き継いでおり、仕様的にも手続き型プログラミングを行うことができるようになっています。
そして後述しますがVB.NETエンジニアは元々VBエンジニアであったか、既存システム改修のために習得した方がほとんどです。
多くのエンジニアが手続き型を経験しており、絶対にオブジェクト指向でないといけない雰囲気であることは少ないです。
これにより臨機応変にオブジェクト指向・手続き型を切り替え、制作するアプリケーションに適したパラダイムを選択できます。
ダック・タイピングと多態性
ダック・タイピングとは動的型付けのオブジェクト指向プログラミング言語でできる変わった型付け方法のことです。
これを利用するとより自由なクラス設計が行えるようになります。
ダック・タイピングが行えるということは、ポリモーフィズム(多態性)の性質を持つということでもあります。
VB.NETの活用シーン
VB.NETでどのようなアプリケーションが作れるのでしょうか。
ここではVB.NETプロジェクト作成時にアプリケーションの種類として選択できるものの中から、代表的なものについてご紹介します。
Windowsフォームアプリケーション
私達が日常的に使用している、アプリケーションを起動するとウィンドウが開き画面が表示されるタイプのアプリケーションです。
コンソールアプリケーション
Windowsのコマンドプロンプトで実行するアプリケーションです。
Windowsサービス
「Windowsサービス」とはタスクマネージャーを開いた時に表示される歯車アイコンのアプリケーションです。
WindowsサービスはOS起動中にバックグラウンドで実行されるため、例えば監視ツールやマネージャーなどを作ることができます。
Webアプリケーション
「ASP.NET MVC」というWebアプリケーションフレームワークを利用します。
名前の通りMVC(Model・View・Controller)パターンでWebアプリケーションの開発を行うことができます。
MVCについては以下の記事で詳しく解説していますので、MVCについて知りたい方は併せてご参照ください。
MVCとは?MVCの基本をわかりやすく解説!設計でのそれぞれの役割と機能は?MVC使用のメリットと有効な使い方もご紹介
C#とVB.NETの人気・案件数
C#とVB.NETは技術選定時に候補として上がることが多いですが、現状VB.NETよりもC#の案件数が多い状況です。
C#は文法的にJavaやC++を利用している方に馴染み深く、新しい機能の実装状況もVB.NETよりC#の方が早く、採用されやすいためです。
新規開発でC#とVB.NETどちらを選ぶかと問われたらC#だと思います。
プロジェクトメンバーのスキルや企業のナレッジ、既存プロダクトがVBやVB.NETであればそのまま採用する場合が多いでしょう。
VB6からVB.NETへの移行が急務
古いシステムのバージョンアップは簡単ではありません。何年、何十年と経ってからでは、まず開発環境やツールを確保するのが大変です。
VBを扱えるエンジニアの方も、VB.NETを扱えるエンジニアの方も多くいますが、両言語に理解があり開発ができるエンジニアは希少です。
どちらを学習するにしても「VBとVB.NETの違い」で述べたコストが発生します。そして残念ながらVBには人気がありません。
つまり人員確保や開発環境の用意は、時が経つにつれて難しくなっていきます。
VBで長年に渡り運用されたシステムは大規模になっており、開発にかかる期間や費用が大きいという問題がありました。
しかしVB6の最後の開発環境であるVisual Studio 2008が2018年に延長サポートを終了し、VBは確実に縮小する方向に進んでいます。
直ぐに動かなくなるということはないものの、移行を真剣に考える企業が増えてきました。
VB.NETへのマイグレーション
VBのVB.NETへのマイグレーションには高いハードルがあります。自動変換ツールを使用しても100%修正をすることはできません。
変換できない個々のケースに関しては、VB.NETが扱えるエンジニアの修正作業が必要です。
Visual Basic アップグレード ウィザードの利用
「Visual Basic アップグレード ウィザード」という自動変換ツールがあるにはあります。
しかしこの自動変換機能では完全に移行を行うことはできず、エラーが発生した場合は手動で修正を行う必要があります。
また厄介なのがサードパーティ製のライブラリやツールを使用している場合で、こちらは変換ツールの対象外です。
リビルドやリプレースの選択も
現在動作しているアプリケーションの仕様を紐解き、システム自体を新しく開発したりSaaS型のサービスに移行する手段を取る場合もあります。
この場合はVBが読めるエンジニアと優秀な要件定義・設計が行えるエンジニアが必要不可欠です。
技術選定ではVB.NETだけでなくC#やJavaなども候補に上がることが多いようです。
移行サービス・案件を経て
VBからVB.NETへ移行したサービスはこれからも運用され続けていきます。コストを考えれば当分リビルドやリプレースは行われないでしょう。
VB.NETへのマイグレーションを専門的に請け負う企業は、技術記事などでアピールしインバウンド営業を行っています。
今後も市場全体として見た場合の規模は小さいものの、移行そのものや移行後のシステムの機能追加・修正案件は発生すると考えられます。
おわりに
VB.NETのサービスがこれから急激に増えることはありませんが、市場では一定の需要を維持してゆくものと推測されます。
今までVBしか触ってこなかった方も、今後はVB.NETやオブジェクト指向の概念を取り入れていくことを余儀なくされると思います。
余裕のあるうちにVB.NETの学習に取り組んでみてはいかがでしょうか。
toiroフリーランスは、SHIFTグループがプライムとして参画している独自案件をフリーランスエンジニア向けに紹介する唯一のプラットフォームサービスです。
エージェントによるサポートもありますので、ご利用を検討してみてはいかがでしょうか。