.NET
VisualBasic

Visual Basic 2017年の振り返り

はじめに

これは、Visual Basic Advent Calendar 2017の1日目の記事となります。

何を書こうか迷ったのですが、今年はVisual Studio 2017が3月7日にリリースされたこともあり、Visual Basicに関連することを、つらつらと書いてみます。

VBの進化の歴史

昨年(2016年05月20日)、Visual Basicは1991年の誕生から25周年を迎えましたので、今年は26周年となります。

今までのVisual Basicの進化の歴史を整理してみます。一部Visual Basic wikipediaから抜粋

製品名 リリース 内部バージョン C# .NET Framework 変更点、備考
Visual Basic 1.0 1991 1.0 オブジェクト指向の基本的な部分を実装。日本では発売されなかった。
Visual Basic for MS-DOS 1992 1.0 Windows版との互換性は低いが、DOS版QuickBASICの後継バージョンとして使える。PC-98用の日本語版も発売されていた。
Visual Basic 2.0 1992 2.0 OLE, ODBC対応。日本語版は1993年で当初はODBC対応はなし。
Visual Basic 3.0 1993 3.0 日本では発売されなかった。
Visual Basic 4.0 1995 4.0 32 ビット版と 16 ビット版がある。
Visual Basic 5.0 CCE 5.0 ActiveXコントロール作成専用。フリー。Visual Basic 5.0のプロトタイプ。
Visual Basic 5.0 1997 5.0 Win32 ネイティブコードへのコンパイル機能をサポート。
Visual Basic 6.0 1998 6.0 旧来型 Visual Basic (Win32 ネイティブ) の最後のバージョン。
歴代VBの名作、未だに使われる
Visual Basic .NET 2002 7.0 1.0 1.0 初めての.NET
Visual Basic .NET 2003 2003 7.1 1.1 1.1 安定してきた.NET
Visual Basic 2005 2005 8.0 2.0 2.0,(3.0) 2005の新機能 - MSDN
Visual Basic 2008 2007 9.0 3.0 3.5,3.0,2.0 2008の新機能 - MSDN
Visual Basic 2010 2010 10.0 4.0 4.0 2010の新機能 - MSDN
Visual Basic 2012 2012 11.0 5.0 4.5 2012の新機能 - MSDN
Visual Basic 2013 2013 12.0 4.5.1 内部変更のみと思われる
Visual Basic 2015 2015 14.0 6.0 4.6 2015の新機能 - MSDN
Visual Basic 2017 2017 15.0 7.0 4.6.1,4.6.2 2017の新機能 - MSDN
Visual Basic 2017の新機能

※内部バージョン13.0は、忌み番号のためスキップされています。

リリースサイクルの短期化

今後はリリースサイクルの短期化によりマイナーリリースされていくようになります。
C# 7/VB 15(Visual Basic 15)に実装される予定の機能が以下のページにまとまっているわけですが、現状はC#7のマイナーリリースのみとなっています。
Language Feature Status

Visual BasicタグのIssuesは以下のページとなります。
Language-VBのIssues

.NET Core 2.0でVisual Basicをサポート

.NET Core 1ではVisual Basicがサポートされず、多くのVisual Basic開発者は落胆したが、.NET Core 2では一転して、Visual Basicがサポートが追加された。
Visual Studio 2017 version 15.3 にて .NET Core 2.0が使用できる。

ターニングポイント

私事ですが、仕事でDelphi5で開発しているアプリケーションの改善をやることがあります。Delphi5は1999年に発売されたもので、その当時はVB6.0よりDelphiと盛り上がっていた時期だと思います。その当時から5年間頃までに開発されたアプリケーションが未だに使用されています。使用しているお客さまからすれば動作に問題なければ関係ないですけどね。来年から.NETにリプレースしていく予定です。

そのDelphiを開発したアンダース・ヘルスバーグ氏が、BorlandからMicrosoftに1996年に移り、J++の作業後に2000年からC#言語の設計チームとなり2002年4月にC# 1.0をリリースします。

マイクロソフトでは、VS 2008までは言語ごとに開発チームがあり、各言語の特徴に応じた最適な機能が実装できるという利点があったが、その一方で「C#で実装されているものがVBで実装されない」といった言語ごとの格差が発生することになってしまった。
VS 2010の開発に当たり各言語チームを統合し、「Visual Studio Managed Languages Team」という1つのチームにした。また、C#とVBはアンダース・ヘルスバーグ氏が2つの言語を同時に設計することにより、格差がなくなるようにしました。参照:Visual Basic 2010の新機能
これにより、機能がC#に近づいた。

VS 2015の.NETコンパイラープラットフォーム「Roslyn(ロズリン)」が採用されました。Roslynでは、ブラックボックス化されたC# や Visual Basicのコード解析やオブジェクト生成のAPI等を公開しました、更にオープンソース化GitHubを使用しています。
当時、C#/VB間のソースコード自動変換がコピーアンドペーストするだけで自動的に変換されるデモが行われました。C#をコンパイル後にVisual Basicに変換されるために、正確にしかも必ず動作するように変換されるわけです。
これにより、人気が高いC#の開発が進むことになり、より引き離されていくようになった気がします。ただ、 .NET Core 2.0でVisual Basicがサポートされるようになったのも、Roslynがあればこそです。

最後に

上記記事によれば、Visual Basicにさほど明るい話題はなさそうです。
将来の設計計画ではC#の設計からVBを切り離し、新しい開発者の.NETのファーストクラス言語としての位置付けとのこと。

弟分であったC#は「出る杭は打たれるが、出過ぎた杭は打たれない。」というほど、出過ぎた杭になってしまい、Visual Basic vs C#なんて話題が懐かしむくらいになってしまいました。
また、さらに弟分のF#は量子コンピューター向け言語で使われるかもとのことで、未来があります。

兄貴分のVisual Basicは、もう大人になったので未来ある初学者に向けての教育向け言語として、やっていくことになるでしょう。なーんてね!