Visual Basic 2019年の振り返り

# はじめに
これは、[Visual Basic Advent Calendar 2019](https://qiita.com/advent-calendar/2019/vb)の1日目の記事となります。

# 2019年の出来事
今年は 2019年4月2日 に「Visual Studio 2019」の正式版がリリースしました。これにより、「Visual Basic 2019」も同時リリースされたことになります。
これまでVisual Basicでは2003年からバージョンに年番号を付けていたのですが、リリースサイクルを短期化したのでC#同様に内部バージョンの「Visual Basic 16.0」というようになっていくことになります。
ただ、書籍などは以前とのからみで「Visual Basic 2019」というタイトルにしていくでしょう。

Microsoftの「The Visual Basic Team」のブログは残念ながら12/1時点で何も更新されていません。
https://devblogs.microsoft.com/vbteam/

# Visual Basic 16.0 の新機能
>Visual Basic 16.0 は、Visual Basic ランタイム (microsoft.visualbasic.dll) より多くの機能を .NET Core に多く提供することに重点を置いており、.NET Core に重点を置いた Visual Basic の最初のバージョンです。
>https://docs.microsoft.com/ja-jp/dotnet/visual-basic/getting-started/whats-new#visual-basic-160

Visual Basic 16.0 以降では、コメントは、明示的な行継続の後と、スペースとその後にアンダースコアで始まる行のステートメント内でも使用できます。

```vb:VB16.0以降
Public Sub Main()
    cmd.CommandText = ' Comment is allowed here without _
    "SELECT * FROM Titles JOIN Publishers " _ ' This is a comment
    & "ON Publishers.PubId = Titles.PubID " _
 _ ' This is a comment on a line without code
    & "WHERE Publishers.State = 'CA'"
End Sub
```

VB言語の将来に関するMicrosoftのGitHubは以下のページとなります。

* [VBLangのIssues](https://github.com/dotnet/vblang/issues)
* [Language-VBのIssues](https://github.com/dotnet/roslyn/issues?q=is%3Aissue+is%3Aopen+label%3ALanguage-VB)

Visual Basic 16.1 と 16.2 では C# との相互運用性の改善と新機能の追加がされる予定でしたが、12/1時点で何もリリースされていません。

## .NET Core 3.0
NET Core 3.0 が 9月23日 にリリースされ、Windows Forms や WPF アプリケーションがサポートされました。

>.NET Core 4 は Framework 4.X と紛らわしいから欠番にして、次は「5」
徐々に .NET Core に一本化して、名前も「.NET」に
.NET Framework は 4.8 を最後のバージョンにすると明言
2020年11月に .NET 5 、以降毎年6, 7, 8, ...
https://ufcpp.net/blog/2019/5/build2019/

## BlazorとXamarin Formsはサポート対象外
### Blazorとは
Blazor フレームワークは Microsoft が主導で開発しているオープンソースの SPA(Single Page Webアプリケーションフレームワーク)です。SPA として有名なものに、Electron があります。Electron はJavascript がベースですが、Blazor は ASP.NET Core(C#)を用いてブラウザ上(WebAssembly)で動作させています。
Blazor とは「Rust で WebAssembly」、「C/C++ で WebAssembly」のように直接 WebAssembly という技術ではなく、WebAssembly で書かれた.NETのインタプリタ(CLI)がブラウザで動作する技術となります。そのため処理性能は少し期待できませんが、開発の利便性のメリットは享受できます。

>Blazorは、通常の.NETアセンブリを実行するWebAssemblyベースの.NETランタイムで実行されます。したがって、VBを.NET標準ライブラリにコンパイルできる場合、Blazorアプリで動作するはずです。コンポーネントレンダリングロジックの作成に使用されるRazor構文（.cshtml）はC＃ベースであり、これを変更する予定はありませんが、アプリロジックの残りのすべてはVBで記述できます。
[VBをサポートする予定はありますか？](https://github.com/aspnet/AspNetCore/issues/16458)


ちなみに Electron として「[Electron.NET](https://github.com/ElectronNET/Electron.NET)」があり、これは Electron を.NETに移植したものではなく、ASP.NET Core と Electron を組み合わせたものです。これなら、ASP.NET Core としてVB.NET が使用できそうです。 

### Xamarin Forms
Xamarin Forms とは、iOS, Android などのモバイル、タブレット、およびデスクトップ アプリを構築する .NET 開発者に、完全にクロスプラットフォームな UI ツールキットです。Android の API を C# から呼び出せるようにした「Xamarin.Android」、同じく iOS の API を C# から呼び出せるようにした「Xamarin.iOS」があります。

Xamarin.Forms での Visual Basic の使用にはもちろん制限事項がありますが使用はできます。

* [VB.NET から Xamarin.Forms を使う](https://www.xlsoft.com/jp/products/xamarin/xamarin-forms_visual-basic.html)
* [Visual Basic.NET を使用した Xamarin. フォーム](https://docs.microsoft.com/ja-jp/xamarin/cross-platform/platform/visual-basic/xamarin-forms)

# 最後に
ITエンジニア側では正直 Visual Basic.NET の将来性はまったくもって期待できませんが、非ITエンジニアなら Excel の VBA や WSH(VBScrip) としては、まだまだ活躍はするでしょう。

社会人でプログラムを学ぼうとしている人が増えてきています。その人達が学んだプログラムを活用できるとしたら、Excel の VBA ですね。
ここ数年は働き方改革という政府のワードで、RPA導入がもてはやされてきています。RPAツールを使わなくても、既存の Excel の VBA を使用して効率化って何年も前からやってきているはずですが、属人的から解放されつつ、人材の環境が整い始めているということですかね。

* [「Excelできる人が辞めてしまったので手作業で」→「Excelできる人が入社し自動化」→「否定されてExcelできる人退職〜無限ループ」の地獄の流れ「まさにうちもこれ」 - togetter](https://togetter.com/li/1194490)
* [RPA導入に於ける注意点 - officeの杜](https://officeforest.org/wp/2019/03/22/rpa%E5%B0%8E%E5%85%A5%E3%81%AB%E6%96%BC%E3%81%91%E3%82%8B%E6%B3%A8%E6%84%8F%E7%82%B9/)