2020-01-27 雑談 VBAはノンプロ用としてできることが多すぎるんですよね

ノンプロ用のマクロ言語としてはVBAは優秀すぎる、できることがおおすぎるんですね。どうしてなんでしょうか?
VBA
8
リンク web.archive.org Visual Basic for Applications
リンク simoz.com.au
根元 亮治@ルートアシスト @rootassist

VBAについて、 Microsoftは、2000年前後までは、 「アプリケーション開発の土台」に育てようとしていました。 VBA SDKを、様々なベンダーのアプリケーションに組み込んでもらい、 COMのインタフェースでそれらを連携することを考えていたようです。 xtech.nikkei.com/it/free/NSW/NE…

2021-12-20 13:34:46
根元 亮治@ルートアシスト @rootassist

また、その方針は、ビルゲイツの以下の文にも書かれています。 アプリケーションにプログラミング能力を持たせる構想の実現 Bill Gates BYTE Magazine, 1998 年 3 月号 1998 by the McGraw-Hill Companies, Inc. McGraw-Hill Companies, Inc web.archive.org/web/2002100506…

2021-12-20 13:34:47
根元 亮治@ルートアシスト @rootassist

また、VBAの開発支援のために、OfficeにはDeveloperバージョンが存在し、 コードのバージョン管理機能(Visual SourceSafeとの連携)、 クラスのライブラリアンなども用意されていました。 また、開発ガイドなどの(日本語にキチンと翻訳された)ドキュメントも出ていました。 pic.twitter.com/Pw2srzwv0Q

2021-12-20 13:34:48
拡大
拡大
拡大
拡大
根元 亮治@ルートアシスト @rootassist

しかしながらその後、Microsoftは.Netを打ち出し、 これらのVBAの戦略、そしてこれらの開発支援ツールも、その後にすべて放棄されました。 当時、活用していた自分としても残念でした。 現在のVBAは(PCローカル環境の)Officeのためだけのものとなりました。

2021-12-20 13:34:48
根元 亮治@ルートアシスト @rootassist

VBAのIDEは約四半世紀前のまま、これらの開発支援ツールを失っています。 Accessの隠し機能に SaveAsText と LoadFromText があって、Accessのほとんどの構成要素をテキストファイル形式で入出力できるのですが、 これはVSSとの連携機能の「残骸」のような気がします。 simoz.com.au/221Sample.aspx…

2021-12-20 13:34:48
根元 亮治@ルートアシスト @rootassist

しかしVBAは、その後のOfficeの機能アップにともなって64bit 対応され、 また、Excelの新しい機能もVBAからコントロールできるようになっています。 (ひょっとしたら、ローカルのOffice自体がCOMベースでできていて、必然的にそうなっただけ?)

2021-12-20 13:34:49
根元 亮治@ルートアシスト @rootassist

VBAの「新たなプログラミング環境の構築不要」で「Alt + F11」で一発起動というのは、 やはり大きな魅力です。

2021-12-20 13:34:49
根元 亮治@ルートアシスト @rootassist

VBAはVSTOアドインへ移行、という方針だったように記憶していますが、 それは別途 Visual Studio(.Net)を必要としますし、 「Alt + F11」で環境一発起動のVBAと比べれば簡便さに欠けるためか、 VBAと対抗できるほどに普及しているようには思いません。 docs.microsoft.com/en-us/archive/…

2021-12-20 13:34:49
ほえほえ@スプシマン @hoehoe1234

VBAはたぶん、ノンプロ用のマクロ言語としては「優秀すぎる」んだと思います。やる気になれば細かいところまで制御できてしまいますし、CreateObjectとWinAPIを使える時点でかなりの自由度が提供されてしまっています。なので当初よりも相当に普及しすぎたのでしょうか?

2022-01-26 18:38:09
ほえほえ@スプシマン @hoehoe1234

そのままでは退屈でも調べればわかる、便利になる。ってのはあれですね。よいゲームと同じです。使っている武器は同じでも熟練により比例的な差ができてしまう。だからVBAは「勉強されて過ぎてしまう」のだと思います。これがいいのか悪いのかはわかりませんが。

2022-01-26 18:39:25
ほえほえ@スプシマン @hoehoe1234

うがった見方ですが、もしかしてMSは「あえて機能アップデートはしない」と決めたのかな?って思います。完全なる後方互換性が求められるビジネスユースなので「もうこの当たりで進化はやめる」という選択がなされたのでしょうか?どうもそのような気がします。

2022-01-26 18:40:57
ほえほえ@スプシマン @hoehoe1234

ここから新しい機能を追加するとすると、オブジェクト指向か関数型言語か、それらの両方の機能を大幅に取り込むような方向になるのでそれらは「不適切である」って判断なんでしょうか?欲しい機能はいくつかはありますが。

2022-01-26 18:42:21
ほえほえ@スプシマン @hoehoe1234

なので希望としてはマイナーアップデートだと、実際にプログラミングの役に立つ短絡演算子、continue、例外連鎖(詳細情報)あたりがほしいですね。配列のスライスもほしいですがこれは望みすぎでしょう。

2022-01-26 18:44:32
ほえほえ@スプシマン @hoehoe1234

ある日なんとなく気がついて、VBAは機能が足りないんではなくて、ノンプロには不必要なレベルにまで機能拡張されてしまったんじゃないのかな?なんて思います。どうなんでしょうね。そう考えるとなんかVBAに感謝したくなります。よくぞここまで育ってくれたと。

2022-01-26 18:45:44
ほえほえ@スプシマン @hoehoe1234

多分ですが ①TypeName、VarType ②CallbyName、Run 当たりは本来不要なんでしょうね。その代わりにCreateObject系がもっと充実する感じでしょうか。APIも本来は禁止してCreateObject系経由がいいんでしょうね。とはいえ、VBAの進化に感謝です。

2022-01-26 18:47:46
泥臭IT担当者F @IT_craftmanship

VBAに関してはマイクロソフトの開発者が顧客がどのくらいIT音痴か把握せずに自分達の感覚で実装したら後に引けなくなった「人類に対する期待値が高過ぎた事例」だと思ってる。 実際ユーザーにはそんな高度な機能要らないし、その機能に気付いたターゲットじゃなかった顧客とか沢山居そう

2022-01-26 21:44:44
根元 亮治@ルートアシスト @rootassist

以前に一連のツイートをしたのですが、 VBAも当初は「アプリ開発プラットフォーム」を目指していたものでした。 「開発」タブも既定では非表示だったと思いますし、 そういう意味では仰る通り、 「機能に気づいたターゲットじゃなかった顧客」かもしれません。 twitter.com/rootassist/sta… twitter.com/IT_craftmanshi…

2022-01-27 17:52:45
根元 亮治@ルートアシスト @rootassist

当初はVBAのヘルプも(既定では)インストールしなかったと思います。 こういう経緯で、当初存在した開発ツール(バージョン管理など)も放棄されたので、 そういう意味では開発環境としては、 残念ながら20数年前よりも、さらに「劣化」しているとも言えると思います。 docs.microsoft.com/ja-jp/previous… pic.twitter.com/gBSaL0uuOi

2022-01-27 17:52:46
拡大
拡大
拡大
拡大
根元 亮治@ルートアシスト @rootassist

私自身は、2000年当時、MCSP契約してVB6/VBAで業務パッケージを開発していましたが、 一旦広げた手を引っ込める方針には(事情は分かりますが)、 「どうすんの?」と思った記憶があります。 web.archive.org/web/2000091621…

2022-01-27 17:52:46