Visual Basic 2024年振り返り

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

Visual BasicのDiscordから、幾つかネタを拾ってきてます。

https://discord.com/invite/Y8EH5fF6WG

# 2024年の出来事
## BASIC 60 周年おめでとうございます!
1964年5月1日、John G. Kemeny と Thomas E. Kurtz が BASIC を作成しました。これは史上最も簡単で最も人気のあるプログラミング言語となり、時間の経過とともに 300 を超えるさまざまな方言が出現しては消えていきました。
しかし、BASIC の歴史における大きな進歩は、27年後、ビル・ゲイツがアラン・クーパーのビジュアル デザイナーを QBasic に追加して Visual Basic を作成することを決定したときに起こりました。
Visual Basic は 1991 年 5 月にリリースされ、その 10 年間で最も人気のある高速アプリケーション プログラミング言語 (RAD) となり、何百万もの学生や非専門家のプログラマーが日常的な問題を解決するために使用しました。

https://qiita.com/yaju/items/eb2ef4648c73bdd5ace1

### トーマス・カーツ氏が死去
2024年11月12日、BASIC コンピュータ言語の創始者のである[トーマス・カーツ氏](
https://ja.wikipedia.org/wiki/%E3%83%88%E3%83%BC%E3%83%9E%E3%82%B9%E3%83%BBE%E3%83%BB%E3%82%AB%E3%83%BC%E3%83%84)が96歳で死去。

https://hackaday.com/2024/11/15/basic-co-inventor-thomas-kurtz-has-passed-away/

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

https://nolongerset.com/ukaug-2024/

直近のロードマップを見ると2024年12月31日に Version 1.0 をリリースする予定になっていますが、度々延期されていることを考慮すれば2025年内と考えます。

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

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

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

## Small Visual Basic 3.0がリリース
昨年にリリースされていたのですが、見つけたのが最近となりますので、今年の出来事として紹介します。

https://github.com/VBAndCs/sVB-Small-Visual-Basic

前進のSmall Basicは、8 歳以上の子供や初心者が簡単に学べる教育用言語として多くの学校で使用されていましたが、2013 年以降は更新されませんでした。一方、過去 10 年間で Scratch と Python の人気は子供や初心者の間で急速に高まりました。
Visual Small Basic の開発者 Mohammad Hamdy 氏は、Small Basic にビジュアル フォーム デザイナーを追加しました。過去 3 年間にわたって進化を続け、バージョン 3.0 に到達して言語にデバッガーが導入され、その他多くの改善が行われました。

## SeleniumVBA 5.8がリリース
uezoさんが開発したWebスクレイピングツール TinySeleniumVBA からフォークされた SeleniumVBA が、どんどん機能アップしています。

以前はクラスライブラリがアドインで提供されていたが、23年8月にリリースされた 4.4 から ActiveX DLLで提供するようになった。このActiveX DLLは前述した twinBASIC で作成されている。このライブラリはインストーラを用いてインストールされる。

https://github.com/GCuser99/SeleniumVBA

いまだにExcel VBAでWebスクレイピングすると「Selenium Basic」を紹介している記事が散見されますが、.NET Framework 3.5が必要だったり更新も停止しているので、SeleniumVBA か Webドライバすら不要な [ZeroInstall BrowserDriver for VBA](https://qiita.com/yaju/items/0807cc762af4a0568806) を推奨します。

## OpenSilver 3.0がリリース
OpenSilverは、WebAssembry 上で動く Silverlight となります。
昨年、2.0で VB.NET をサポートしました。

OpenSilver 3.0 では、既存の Visual Studio サポートに加えて VS Code のサポートが拡張され、開発環境が Windows、Mac、Linux システムに拡張されます。

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

目玉として、AI機能(現在プレビュー)をサポートした WYSIWYG UI デザイナーとなっており、自然言語コマンドを使用して変更を加えることができます。必要な変更を記述するだけで、XAML コードが自動的に更新されます。画像やモックアップをアップロードすると、AI が近似値を生成します。

<iframe width="560" height="480" src="https://www.youtube.com/embed/Em5NJ6S0u1E?si=KzfI7-oB9DasyDjd" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

## .NET 9.0 リリース
2024/11/13 に「.NET 9.0」 がリリースされました。

https://learn.microsoft.com/ja-jp/dotnet/core/whats-new/dotnet-9/overview

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

## ModVB
[ModVB](https://qiita.com/yaju/items/2c154a939b9896c855e2)は、VB.NET用の拡張コンパイラです。
Visual Studioに ModVB の VSIX（Visual Studio Extension）を導入することで、拡張機能が使用できるようになります。

今年は3記事です。何か変化あれば別途記事にします。

https://anthonydgreen.net/

## BlazorをVB.NETによるアプローチ
Blazorは C# しか対応していません。VB.NET で記述しようというアプローチです。

https://github.com/CoolCoderSuper/VBBlazor

2022年時は別の`BlazorVB`を[紹介した](https://qiita.com/yaju/items/12136f5520b54646982a)ことがあったのですが、前述のSmall Visual Basic 3.0の開発が忙しく更新されていません。

https://github.com/VBAndCs/BlazorVB

## Python in Excelがリリース
2024年9月16日に`Python in Excel`がMicrosoft 365 Business/Enterprise プランの Windows ユーザー向けに一般提供を開始しました。
ExcelでPythonが使えるようになって、これでVBAは御役御免になってしまうのかと思われましたが、蓋を開けてみるとPY関数を使用して主にデータ分析について使用するに留まっています。

https://forest.watch.impress.co.jp/docs/news/1624054.html

ところで、[Pyodide](https://pyodide.org/en/stable/)をご存じでしょうか？
Pyodideは、CPythonをWebAssembly/Emscriptenに移植したものです。ブラウザ向けのPythonランタイムとも言えます。
つまり、ブラウザ上でPythonが使えるため Webスクレイピングツール(例 TinySeleniumVBA 等)を使えば誰でも `Python in Excel`と似たことが出来そうです。

https://zenn.dev/bluepost/articles/93d1fa8eabce99

https://qiita.com/suzuki_sh/items/aa06142f2445b05b6331

## VBScriptの廃止スケジュールを公表
3つのフェイズに分けて、段階的にサポートが縮小される。

* フェイズ1：Windows 11 バージョン24H2ではプリインストールされデフォルト有効
* フェイズ2：2027年頃に「VBScript FOD」はデフォルト無効
* フェイズ3：「VBScript」は引退し、Windowsから削除される

https://forest.watch.impress.co.jp/docs/news/1593925.html

### 影響
フェイズ3で「VBScript」に関わるすべてのダイナミックリンクライブラリ（.dllファイル）はなくなるため、依存するアプリやシステムは動作しなくなる。

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)は使用できなくなりそうですね。

【2025/03/13追記】
Regular Expressionsの代替

https://github.com/sihlfall/vba-regex

https://www.devhut.net/the-end-of-regex-in-vba-not-quite-so-fast/
# 最後に
さすがに来年には、twinBasic が正式リリースされるでしょう。2021年に紹介してから3年は経ちますからね。
VBScript の廃止の方針により、これまで VBScript で作成してきたものを PowerShell へ移行するようになります。生成AIを使用する場合、VBScript から PowerShell に単純変換させるより、やりたいことを生成AIで作ってもらった方が良さそうです。