Visual Basic 2023年振り返り

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

Visual Basic自体は冬の時代であるため、どうしても暗めのニュースが目立つようになってしまいます、最初は明るいニュースから書いていきます。

# 2023年の出来事
## twinBasic 2024年12月31日にVersion 1.0 リリース予定
【2024/10/16追記】
2024/09下旬にロードマップが変更されて、1st October 2024 →　31st December 2024 となりました。
【2024/07/06追記】
2024/07/05にロードマップが変更されて、1st July 2024 →　1st October 2024 となりました。
【2024/01/20追記】
2023/12/20にロードマップが変更されて、Tentative Release Date: 3rd January →　1st July 2024 となりました。

twinBASICはVisual Basic 6.0の100％互換性があることを目的とした最新のBASICコンパイラです。ネイティブコンパイラによる32bit/64bit実行プログラムを作成できます。
[Visual Basic 6.0の100％互換性 twinBASICの紹介](https://qiita.com/yaju/items/6ed4a4c3fcd7b0c24cab)

ロードマップを見ると2024年12月31日にVersion 1.0 をリリースする予定になっています。

https://github.com/twinbasic/twinbasic/issues/335

今年ではなく来年じゃないかというツッコミはおいておいて、順調に開発が進んでいることは素晴らしい。

もう一方の [RAD Basic](https://qiita.com/yaju/items/092c9a145ba8261538c6) のロードマップではVer 0.5.93(2023/11/27)となっています。

https://docs.radbasic.dev/doku.php?id=rbdoc:resources:release_notes

## Visual BasicのDiscord開設
Discord（ディスコード）とは. Discordは、アメリカ発のチャットサービスです。
2023年02月にDualBrain さんが、VB、クラシック、.NET のすべての言語向けにVB Discord サーバーをセットアップしました。もちろん、やりとりは英語となります。

https://discord.com/invite/Y8EH5fF6WG

## OpenSilver 2.0がVB.NETをサポート
OpenSilverは、WebAssembry上で動くSilverlight となります。
Visual Basic コミュニティ向けに、XAML ベースの Web アプリ開発、またはレガシー アプリケーションの移行の可能性を提供するようになりました。

https://opensilver.net/announcements/2-0/

https://www.youtube.com/watch?v=ZyctFzWKda8

## ModVB
[ModVB](https://qiita.com/yaju/items/2c154a939b9896c855e2)は、VB.NET用の拡張コンパイラです。
Visual StudioにModVBのVSIX（Visual Studio Extension）を導入することで、拡張機能が使用できるようになります。
作者のAnthony D. Green は、Microsoft で主に Roslyn コンパイラ チームのプログラムマネージャーをしていました。ModVBの開発は予定していたより遅れていますが、前進しています。

https://anthonydgreen.net/2023/11/03/autumn-2023-update/

|バージョン|機能内容|
| ---- | ---- |
|Wave 1|JSON リテラルとパターン マッチングを中心に展開|
|Wave 2|XML リテラルの強化|
|Wave 3|不明 Wave 2 と Wave 4の中間の機能強化|
|Wave 4|Async ストーリー強化|
|Wave 5|LINQ のより深い統合|

## .NET 8.0 リリース
2023/11/14 に「.NET 8.0」 がリリースされました。.NET 8.0は、本番利用に耐える品質とサポートが約束された長期サポート版（LTS版）の.NETとなります。

VB.NETの言語としての進化自体はやめてしまっていますが、.NET 8.0の機能追加は使えるようになっています。

## ExcelでWebスクレイピング(DevTools プロトコル対応)
筆者は、ExcelでWebスクレイピングをするのに、TinySeleniumVBA および SeleniumVBA(TinySeleniumVBA 機能強化版) をこれまで紹介してきました。
TinySeleniumVBA では、WebブラウザのバージョンアップがあるとSelenium WebDriverの更新が必要になります。これについては、yamato1413 さんが WebDriver 自動更新の別途モジュール([WebDriverManager-for-VBA](https://github.com/yamato1413/WebDriverManager-for-VBA))を提供しています。
ただ筆者は Mac版のExcel を使用しており、 TinySeleniumVBA こそ Mac に移植できたのですが、このWebDriver自動更新モジュールは使えないんですよね。

Playwright や Puppeteer のように DevTools プロトコル対応すれば、Selenium WebDriver 自体が不要となります。
誰かVBAでやってないかと検索してみると、昨年既に公開されてました。筆者が見つけたのが最近となりますので、今年の出来事として紹介します。

https://github.com/24000/ChromeControler-No-Selenium-WebDriver-VBAJSON/tree/master

コメント欄で作者の方と相談して、製品名は製品の特徴である「何もインストールしない」を謳った「ZeroInstall BrowserDriver for VBA」、略して「ZeroInstallBDr」となりました。

https://qiita.com/kabkabkab/items/9952a796ee9244fc98ad

これの使用方法など別途記事にしたいと思います。

【2023/12/21追記】

https://qiita.com/yaju/items/0807cc762af4a0568806

## ExcelにPythonが導入
Microsoftは8月23日「Python in Excel」のパブリックプレビューを発表しました。ExcelでPythonが使えるようになって、これでVBAは御役御免になってしまうのかと思われましたが、蓋を開けてみるとPY関数を使用して主にデータ分析について使用するに留まっています。

https://dekiru.net/article/24528/

## VBScriptを非推奨とする方針
Microsoftは10月10日に、WindowsクライアントOSで「VBScript」を非推奨とする方針を明らかにしました。

これはOS標準では搭載せず、[Windows の機能の有効化または無効化]の機能選択画面で「.NET Framework 3.5」を選択させるのと同様に「Visual Basic Script」が追加されるということです。
VBScriptを作成して他の方に提供しても、OS標準では動かなくなります。

下記ブログにて、VBA　開発への影響として懸念点を挙げています。

https://nolongerset.com/vbscript-deprecation/

>VBA 開発への影響
これにより、VBA 開発者にとっていくつかの重要な疑問が生じます。次のような一般的に使用されるリファレンスの多くは VBScript に関連しており、危険にさらされる可能性があるためです。
>
>Microsoft スクリプト ランタイム: scrrun.dll
Microsoft VBScript 正規表現 5.5 : vbscript.dll

* FileSystemObject
* Dictionaries
* Regular Expressions

これらが使用できなくなると、相当影響が出てしまいます。Microsoft　がどう判断するのか？ そのまま残すことになるといいですね。

【2024/06/04追記】

https://techcommunity.microsoft.com/t5/windows-it-pro-blog/vbscript-deprecation-timelines-and-next-steps/ba-p/4148301

>The scope of VBScript deprecation includes only vbscript.dll and no other libraries. This shall not impact any projects that are not dependent on vbscript.dll.
VBScriptの非推奨範囲はvbscript.dllのみで、他のライブラリは含まれません。これは、vbscript.dll に依存していないプロジェクトには影響しません。

scrrun.dll内のFileSystemObjectとDictionariesは大丈夫ですが、vbscript.dll内の正規表現(Regular Expressions)は使用できなくなりそうですね。

# 最後に
今年は、OpenSilver 2.0がVB.NETをサポート と Visual BasicのDiscord 開設されたのが大きいですね。しかし、VBScript を非推奨にしてくるとは思ってなかった。まーセキュリティを考えたら仕方ないのかな。
Microsoft は BASIC で起業したようなものなんだから、もっと大切にして頂きたいもんです。