Visual Basic 2022年の振り返り

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

Visual Basic 2005から、製品名称からは「.NET」という名前がなくなりましたが、他のVBと区別するためにVB.NETと呼称します。ちなみに、VB.NETは、Visual Basic 16.9が最終バージョンです。17.0に進めなかった。

# 2022年の出来事
## .NET 7.0 リリース
11月9日に「.NET 7.0」 がリリースされました。
パフォーマンスが改善されています。

https://qiita.com/RyotaMurohoshi/items/71a84fe7a5cf8df57054

.NET 7でLINQに追加されたメソッドであるOrderとOrderDescendingは使えました。
VB.NETは新機能の対応はしない方針ではあるが、こういう部分は対応します。

```vb
Dim arrayNumber = {4, 5, 1, 3, 2}

' ↓は1, 2, 3, 4, 5というIOrderedEnumerable<int>
Dim sortedNumber = arrayNumber.Order()

' ↓は5, 4, 3, 2, 1というIOrderedEnumerable<int>
Dim sortedDescNumber = arrayNumber.OrderDescending()

Dim arrayMessage = {"b", "a", "aa", "ab", "ba", "bb", "aaa"}

' ↓はa, aa, aaa, ab, b, ba, bbというIOrderedEnumerable<string>
Dim sortedMessage = arrayMessage.Order()

' ↓はbb, ba, b, ab, aaa, aa, aというIOrderedEnumerable<string>
Dim sortedDescMessage = arrayMessage.OrderDescending()
```

## .NET MAUIのリリース
5月23日に「[.NET Multi-platform App UI (MAUI)](https://learn.microsoft.com/ja-jp/dotnet/maui/what-is-maui?view=net-maui-7.0)」 がリリースされました。
.NET MAUIは、C#のみがサポートとなるため、どのみちVB.NETは蚊帳の外に置かれてしまいます。

## 人気言語ランキング 6位、13位
TIOBE Index for November 2022では、Visual Basicが6位、Classic Visual Basicが13位となっています。
昨年がVisual Basicが5位、Classic Visual Basicが11位なので微減です。

https://www.tiobe.com/tiobe-index/

# VB.NET向けの紹介記事
## レコード型
紹介だけでなく別途記事を書く予定ですが、C#9.0でレコード型(records)という新しい種類の型がありますが、VB.NETでは新機能の対応はしない方針になったため対応していません。
ソースジェネレータを使用してレコード型(records)を実現しています。

https://github.com/VBAndCs/VB-Record-Source-Generator

## Blazorアプリ
紹介だけでなく別途記事を書く予定ですが、BlazorアプリはC#のみとしてVB.NETは蚊帳の外だなと思ったのですが、VB.NETをC#の Blazorサーバープロジェクトと組み合わせる方法がありました。

https://www.c-sharpcorner.com/article/combine-c-sharp-and-vb-net-in-same-blazor-project/

# ExcelのVBA向けの紹介記事
Excelマクロのソースコードのバージョン管理について紹介します。
Pythonのoletoolsパッケージを使うことで下記のメリットがあります。

* Microsoft Officeがインストールされていない環境(例えばLinuxサーバー)でも動作
* マクロのセキュリティ設定変更が不要
* パスワードで保護されたマクロのVBAソースコードでも抽出可能

https://medium.com/@saso_33429/excel%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AEvba%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92azure-devops%E3%81%A7%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95-d20b751ddc30

# Visual Basic 6.0の100％互換ソフト
昨年紹介したVisual Basic 6.0の100％互換ソフトは1年後はどうなった？

## twinBASIC
[twinBASIC](https://twinbasic.com/)は、[CWaynePhillipsEA](https://twitter.com/WaynePhillipsEA)さんが個人で開発しています。
昨年に紹介した時は、VSCodeに拡張機能を用いた状態でした。今はVSCodeのソースをもとにウェブブラウザー上で動くようした[Monaco Editor](https://microsoft.github.io/monaco-editor/index.html)で開発されている。


下記は2022/0５/12の動画です。

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

開発版リリースです。ベータ版を試して別途記事を書く予定です。

https://github.com/twinbasic/twinbasic/releases

https://github.com/twinbasic/twinbasic/discussions/1272

## RAD Basic
[RAD Basic](https://www.radbasic.dev/)は、Carles Royanさんが個人で開発しています。
ベータ版を試すには、[Patreon](https://www.patreon.com/join/radbasic)にて月ごと支払うパトロンになる必要があり試せていません。

下記は2022/01/10の動画です。[Twitter](https://twitter.com/radbasic)上では、11月にはBETA 1バージョンをリリースする予定と記載されていました。

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

# 個人的なこと 
## TinySeleniumVBA
今年は個人的にはVB.NETに関しては特になかったのですが、昨年紹介したWebDriverを使ってブラウザー操作を行うSeleniumクライアント「[TinySeleniumVBA](https://qiita.com/yaju/items/9d1f189a5d2118a3f4d3)」が6月15日のIE11サポート終了に伴い、ExcelのVBAでIE操作していた方々がTinySeleniumVBAに乗り換える上でコメント欄にユーザーからの質問があり、それに対して回答していました。

https://qiita.com/uezo/items/66e20b064ffd5f239b9a

自宅のMacにはExcel 2019 for Macを使用しています。Parallels Desktop for Mac上にWindows 11があるのですが、Office 365のサブスクリプションを毎月払うはもったいないので入れていません。
MacのExcelではActiveXが使用できないので、TinySeleniumVBAがそのままでは動作しなかったのですが、コード量は少ないため解析すればMacで動かせると思い挑戦しました。
これで自宅でも回答用のプログラムが組めるようになりました。

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

TinySeleniumVBAを拡張したSeleniumVBAでもIEモード対応に少しだけお手伝いしました。

https://github.com/GCuser99/SeleniumVBA

# 最後に
Visual Basic Advent Calendar 2022が始まったばかりです、みなさん頑張って空き日を埋めましょう。