SSブログ

まだCOMの世界が残っていた。 [ソフトウェア]

Windowsは.NETの世界になって久しいとは思うが、まだWin32APIも現役のようで、それを少し発展させたCOMとかの世界もまだ残っている。

特にどこにCOMの世界が残っているかというと、Office VBAとかが最先鋒である。いやこの場合最古参と言うべきか。VBAの歴史は知らないけど、多分Visual Basic 6.0あたりからの文法ややり方は変わっていない。

いつかはOfficeも平行しつつも.NETの方に移っていくんだろうなと思っていたら、どっこい移行もせずにVBAはCOMの時代から生き残っていたのだった。まぁ互換性のことを考えると移行するのも面倒だ、というか「昔のままである」というユーザーを他のものに移行させない強みの一つにさえなっている。

OpenOffice.orgが台頭してきた頃、なんとかMS Officeから脱却したいという気持ちもたくさんあって、その試行錯誤は見られたが最終的にマクロ動かなくなるじゃんよ、というネガティブな理由で以降は阻止された。おいおい、お前ら自らVBAなんて使わねーし、手も入れられないから別になくてもいいじゃんと思わなくはなかったが、そういう人に限ってOpenOfficeのちょっとした挙動の違いが気になって使いたくないみたいなんである。というか、外からもらったものがきちんと再現されないと言うのは厳しいというのもあって、玄人にも素人にも阻止された形となり現在に至る。

たぶんVBAを本格的にやっていたのは10年以上前のことなので、久しぶりにやるにあたって変わっているところがないかと色々調べてみたけれども、結局大して変わっていないというのが大方の見方であった。それどころかVBAに関しては全く.NETの影響が及んでいないとさえ言える。

https://teratail.com/questions/34616

ここに挙げた話は、PostgreSQLのドライバが.NETの仕組みで作られているので、VBAでは使えんよという話であった。ここで文法どころか、内部的な基盤もCOMから.NETに移行していないということがわかった。VBAはCOM時代の動作をしていて、内部的にも.NETの影響を受けていない、ということだそうだ。

しかし、これは手抜きと言わざるを得ないんじゃないかと思うのだが、COMもWin32APIも存命ということで、新しいことを学びなおさずとも既存の動作はできるということに他ならないわけだ。しかし、それでは.NET frameworkの存在としてはこの状況はあんまりじゃないか。わざわざ.NETを作った意味がさほどないんじゃないかと。結果的にはMFCみたいなライブラリをもっとシステム寄りにして、複数の言語で使えるようにしただけになってしまったのじゃなかろうか。

まぁWindowsのバージョンアップと同じように、同じことができるのに新しいものを導入するのはアホらしいという考え方からすると、別にCOM時代のVBAでいいんじゃね、ということになるんだろうけど、変えないことによって既得権益を守るというのはMSも守りに入ったものだなと思わざるを得ない。

とはいえ、LinuxカーネルをWindowsにぶち込むWSL2とか、ある意味革新的なこともしていたりします。あんなに嫌っていたOSS界隈なのに、そのままの環境を持ち込むなんて、結局便利で利益になるのならなんでもやる企業ということが改めてわかりました。Linuxをぶち込む以前にも、Iron PythonとかIron Rubyとか地道にOSSから掠め取ろうとしていたんですが、結局中途半端でWSLで全部盗んじゃおうという話になってしまったようです。まぁ僕としては便利になれば違法行為さえしていなければいいとは思うんですけどね。

VBAを扱うにあたって文法以外は大して覚えちゃいないわけですが、インターネットの蓄積も甚だしいわけで、ちょっとググるだけで出てくるのはありがたいことです。新し物好きではありますが、変えないところはあって良いのだと改めて思ったのであります。

コメント(0) 
共通テーマ:パソコン・インターネット

コメント 0