7
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

【.NET】Microsoft、Visual Basicの進化やめるってよ

はじめに

Microsoftの「The Visual Basic Team」のブログが2020年3月11日に久しぶりに更新されました。

Visual Basicを使用する主な利点の1つは、言語が非常に長い間安定していることです。Visual Basicを使用している多くのプログラマーは、その安定性と記述スタイルが重要であることを示しています。今後、Visual Basicを言語として進化させる予定はありません。
Visual Basic support planned for .NET 5.0

.NET 5.0以降もVisual Basicのサポートされるのですが、Visual Basicの言語として進化はやめてしまうようです。
Visual Basic .NET 5 blog post #497

私は、Microsoft MVP(2010〜2012)をVisual Basic(現在は言語のカテゴリは無くなった)で取らせて頂いたので、恩義としてVisual Basic Advent Calendarを2014年から引き継いで主催しています。毎年12/1に振り返りの記事を書くためにウォッチしてきました。Visual Basicの言語として進化はやめるという発表はとても残念です。

.NET 5.0 とは

.NET Framework は、.NET Framework 4.8 が最新版でこれが最後になります。現在、クロスプラットフォーム対応のフレームワークとして、.NET Coreを開発しており、.NET Core 3.1(現時点:2020/03/15)が最新版となっています。
.NET Core 4 は Framework 4.X と紛らわしいから欠番にして、次は「5」徐々に .NET Core に一本化して、名前も「.NET」になります。予定では、2020年11月リリースとなります。以降は1年ごとにバージョン番号(.NET 6,7,8...)が上がって行きます。

WinForms / WPFの対応状況と今後

.NET Core 3.0(2019/09/23リリース)で、Windows Forms や WPF アプリケーションがサポートされましたが、Windows Formsデザイナはまだ対応できてませんでした。.NET Core 3.1(2019/12/03リリース) と Visual Studio 16.5 Preview 1 以降でオプションでプレビュー機能を有効にする必要がありますが、Windows Formsデザイナが表示されるようになりました。

しかし、Visual Basicに関してはサポート対象外になったため、WinForms / WPFのプロジェクトテンプレートが外されました。
自分の方で、ボタンを配置しただけの簡易なアプリケーションを試して動作するのは確認しましたが、マイクロソフトが公式にサポートしていない以上は仕事では使えません。

.NET 5.0では、WinForms / WPF をVisual Basicでも正式に対応すると今回の記事でアナウンスしたと思っています。

言語の進化とは

これまでの大きな進化としてLINQやラムダ式やAsync/Awaitの非同期などC#と共に追加されてきました。
直近の小さな進化として、タプルや2進数リテラルや数字区切り文字などの新機能の追加がありました。

これまでの新機能一覧は下記に記載しています。
Visual Basic 2017の新機能

Visual Basicの改善点を有志の方々がいろいろ提案していました。
今回の進化をやめるという発表は、これらの提案を受け付けないことになります。

改善案の一例として、パターンマッチングがあります。
Pattern Matching #124Pattern Matching #172

数値や文字列だけであれば、今でもSelect Case文で問題ありません。しかし、型によるパターンマッチングは出来ません。

Private Sub Button_Click(sender As Object, e As EventArgs) Handles OKButton.Click, CancelButton.Click

    Select Case sender
        Case Is OKButton
            DialogResult = DialogResult.OK
            Close()
        Case Is CancelButton
            DialogResult = DialogResult.Cancel
            Close()
        Case Is Nothing
            Throw New NullReferenceException("sender")
        Case Else
            Debug.Fail("Unknown sender.")
    End Select      
End Sub

最後に

正直言えば、ついに来てしまったという感じです。
InfoQの「.NETの将来に関するMicrosoftの計画」の記事(2017年2月)によれば、将来の設計計画ではC#の設計からVBを切り離し、新しい開発者の.NETのファーストクラス言語としての位置付けにするというのが現実になったということです。
C#は国際標準化機構 (ISO) によって標準化されているのに、Visual Basicはマイクロソフトの独自の言語ですからマイクロソフトの胸先三寸でどうにでもなってしまう。

英語圏からすれば、Visual Basicは最初に使用する言語としては分かりやすいのかも知れませんが、日本語を主とする日本では、最初の使用言語をC#にしても違和感はないです。
Visual Basicの改修案件はともかく、スクラッチ開発であれば今回の発表を理由の1つとして C#一択にしても構わないでしょう。

Visual Basicの言語の進化はやめるけどサポートは引き続き行なわれます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
7
Help us understand the problem. What are the problem?