2021年5月24日

VBAが初心者向け言語だと思われている理由考察雑感

16
ほえほえ@DX塾 @hoehoe1234

VBAが初心者向けだと思われそうな理由(実際の言語仕様は、C言語などより遥かに複雑)。 ①最初のイメージ。初心者用の言語だといわれていた。 ja.wikipedia.org/wiki/%E3%83%80…

2021-05-24 21:01:07
ほえほえ@DX塾 @hoehoe1234

②メモリが直接さわれない割には、それに代替えする手段がない(メモリがさわれない言語は、Python、Javaなどオブジェクトベース?もしくはバイト配列等が充実している)

2021-05-24 21:01:58
ほえほえ@DX塾 @hoehoe1234

③運が悪かった。同時期に勃興したC言語がOS記述言語だったので比較されてしまった。パスカルなど同時期の言語が実質消えてしまったことを考えると実は頑張っている。

2021-05-24 21:02:49
ほえほえ@DX塾 @hoehoe1234

④昔のイメージが強い MSX時代に代表される1行ごとのインタプリターのイメージが強い。コンパイルして実行ファイルを作るイメージもないし、逆にPythonのようなガチガチのスクリプトでもない。

2021-05-24 21:04:15
ほえほえ@DX塾 @hoehoe1234

⑤VBだけで完結していない。VBA、VisualBasicなどすべてホスト/画面IDEがある。スクリプト言語としてテキストベースの開発ができない(VBSでは一部可能だがそれは後の話し、これは大きいと思う。他言語はIDE、画面がビルトインでも実行ファイルが作れる。

2021-05-24 21:07:00
ほえほえ@DX塾 @hoehoe1234

⑥テキストのみの開発ができない。「⑤」の続きであるが、VBだけを使って開発ができない。そのためVBでのアルゴリズムなどが流通してなく、最終利用者コードのみであり高度な技法が紹介されていない。

2021-05-24 21:08:10
ほえほえ@DX塾 @hoehoe1234

⑦アルゴリズムが記述できない。できないというのは不正確だが他言語では動的データ構造+アルゴリズムを駆使できるが、フルエントなレコード型がないため高度なアルゴリズムは記述しにくい。

2021-05-24 21:09:04
ほえほえ@DX塾 @hoehoe1234

⑧ ⑦の延長で「VBによるアルゴリズム辞典」などがない。やはりテキストのみで動く環境がない、アルゴリズムの記述能力が低いためにどうしても「利用者視点でのコード」しか出回らない。

2021-05-24 21:11:40
ほえほえ@DX塾 @hoehoe1234

⑨ 配列と関数/プロシージャの記述がボイラー。過去の互換性のため不要な複雑さ、自由度があるにもかかわらず必要な機能が欠如している。

2021-05-24 21:13:25
ほえほえ@DX塾 @hoehoe1234

⑩意図的な設計とはおもうが、初心者にはやさしいが、中級者がその上に行こうとすると極端に難しい。WinApiなどを使わざるを得ない。また、さまざまな理由によりFW、ライブラリを作るのが困難。結果、これまたユーザコードしか出回らない。

2021-05-24 21:14:35
ほえほえ@DX塾 @hoehoe1234

⑪成功の復讐。初心者でもとりあえずかけて裾野が広い。言語設計者とMSの狙い通りだとおもう。そのため初心者層が圧倒的におおく、これをもって初心者用の言語と思われている嫌いがある。これは成功したことによる副作用なのむしろ喜ぶべきこと。

2021-05-24 21:16:32
ほえほえ@DX塾 @hoehoe1234

⑫ 複雑な概念がない。神社仏閣山は高いほうがありがたみがます。現代言語の高度な機能の殆どが実装されていない原始的な(ワイはすきだが)構文のみ。スクリプト言語に多く実装されている機能、概念がない。

2021-05-24 21:23:27
ほえほえ@DX塾 @hoehoe1234

⑬システム記述ができない。ネットワークサーバ、今であればwebサーバなどを記述する能力がない。これはテキストのみで動く環境がないことにも起因する。どうしてもスクリプト言語のPython、Rubyと比較されてしまう。

2021-05-24 21:25:03
ほえほえ@DX塾 @hoehoe1234

⑭実際にはある程度フルエントな使い方ができるが、それには自分ライブラリの構築、バリアントの理解、APIの理解などが必要になる。また仮にそれができても個人ベースでありVB全体のレベルとはならない。

2021-05-24 21:26:12
ほえほえ@DX塾 @hoehoe1234

⑮レコード型と参照型がなく、他言語との移植がほぼ不可能。クラスを使えば一部対応可能であるが、クラス数爆発問題がありなかなか難しい。

2021-05-24 21:27:13
ほえほえ@DX塾 @hoehoe1234

⑯制御構造の記述は、再帰、goto、gosub、doループとほぼ満足の行くものであるにも関わらずそのようなリファレンスコードが出回ってなく、りかいされていない。

2021-05-24 21:29:31
ほえほえ@DX塾 @hoehoe1234

⑰コレクション、配列リスト、辞書、FSOなど後付けでVBを補助するものがあるが、このような基本的なデータ構造を組み込みで持ってないためフルエントに利用、定番がさだまっているとはいえず、理解されていない。

2021-05-24 21:32:14
ほえほえ@DX塾 @hoehoe1234

⑱スクリプト言語であるにも関わらずスクリプトとして使用できない欠点は大きい。また、importシステムがないためライブラリをうまく使用できない。comを作って流通できるほど個人には暇もスキルもない。Pythonのコードベースの流通と比べると仕組みで負けているといえる。

2021-05-24 21:34:51
ほえほえ@DX塾 @hoehoe1234

⑲仮にa)スクリプトベースで稼働b)よいimportシステムc)名前空間がちゃんとしているd)主要データ構造を組み込み(または標準ライブラリで)提供しているe)データ構造を作れる仕組みの追加があれば一級の言語になると思われる。

2021-05-24 21:36:52
ほえほえ@DX塾 @hoehoe1234

⑳これまでの考察により、VBAが初心者用の言語だとみられるのは「MSがそのようにとどめていて、それが狙いであるから」といえる。むしろグルー言語のVBAが大成功しすぎてしまって管理できなくなった結果、このような不満が生じているのではないかと思う次第。おしまい。

2021-05-24 21:38:01
ほえほえ@DX塾 @hoehoe1234

JSの本質的な価値はブラウザで動くことだけだし、VBAも同様にエクセルの組み込み言語であるということだけ。しかし、この唯一の価値がすべてを肯定する。仮にVBA以外のよい言語がエクセルに実装されれば躊躇なく乗り換えればよいだけのはなし。

2021-05-24 21:44:36
ほえほえ@DX塾 @hoehoe1234

多くのスキル、知識、方法論は無駄にはならない。それは割と汎用的だから。エクセルのオブジェクトモデル、シートの扱い、全体のアプリの構築方法、、、大きく変わるとしたら内部でデータを持ちやすくなるのとファイル関係、外部通信、テキスト処理ぐらいでそれはアプリの作り方に比べれば割と些末。

2021-05-24 21:46:23
ほえほえ@DX塾 @hoehoe1234

しかし、実際はその些末なところでいらぬ苦労をしているのでエクセルに新言語(搭載されるとしたらたぶんJavaScriptかな?)を待っているのだろう。今のVBAに決定的に欠けているのがそこだからだ。しかし、一般的な業務アプリではそのようなことは不要であることが多いので単に新言語の修得でよい。

2021-05-24 21:48:02
ほえほえ@DX塾 @hoehoe1234

アプリの構築の知識、経験を10としたらVBAの割合は3程度だろうか?これは「VBAが言語的に複雑・難しすぎる」ことに起因している。もっとシンプルな言語であれば言語自体に必要な知識、経験は1~2ぐらいの割合になるイメージ。

2021-05-24 21:49:28
ほえほえ@DX塾 @hoehoe1234

これはほんと不思議なんだけど1年もやればVBAがどれだけ複雑で難しくて試してみなければわからない挙動が多くて過去の互換性の呪縛があるかは分かると思うので、「VBAが簡単」などといっているのは単に表面をなぞったけの一見さんか、本当のエクスパートだけだろう。

2021-05-24 21:50:57
残りを読む(7)

コメント

まきにょ @makinyopp1 2021年5月24日
VBAもVBA.Netになるかと思ったらならなかったねぇ…N88→QuickBASIC→VB5/6→VB.Netと付き合ってきたおっさんだけどVBAはよく分からないw VB6を知ってる人向けのVBAの手引きに巡り会えなかった
1
魔法少女チノ@ゆずと八月と角砂糖 @nsmr0604 2021年5月24日
ExcelのマクロにPythonが使えるようになるという噂は結局どうなったのか
3
Haruka McMahon @regicat 2021年5月25日
昔は開発環境が有償で高くて個人では手がだせなかったけど、Excelなら PCに入ってることが多かったから初心者が気軽に手を出せたって要因もありそう。
8
thee tsurumi @gs263 2021年5月25日
実務で役立てるのに一番の近道だから。 officeのマクロ言語であるVisual Basic for ApplicationsをCとかpythonとかと言語仕様比べるのはナンセンスな気もするけど、、、 比べるならGoogle Apps Scriptとかなんじゃないの?
4
thee tsurumi @gs263 2021年5月25日
VBAはメモリが直接触れないとか、実行環境のベースがOSでも仮想マシンでも無く、officeというアプリなんだからそりゃいじれないよ。
7
nanashisan @nanashi36861236 2021年5月25日
Excel導入したら開発環境が整うから以外にないでしょ。 無知な人からしたら、書いたプログラムの動かし方すらわからないんだから。 会社とか、自分で環境変えられないパソコンでも、Excel入ってたら使えるから、勉強する動機もできやすいし。
1
01_02_05 @01_02_05 2021年5月25日
試しやすいからだと思ってた。ちょっと書いてすぐ動かせる。 IDE入れなくても良いし、環境変数をいじる必要もないし、マクロの記録で自動コーディングしてくれるトコ?そのコードそのまま使うとえらい事になるけど。
1
h_sakurai @h_sakurai 2021年5月25日
VBScriptはJScriptと同様ASPで使われていて、コマンドラインから実行できますよ。 VisualBasicはGUIを簡単に構築できて凄かったです。 Windowsのコンポーネントを扱いやすいAppleのSwiftみたいな層の言語ですね。
0
ばびっと2号 @_Babbit2 2021年5月25日
元まとめの1から20…「初心者向けだと思われそうな理由」を抜粋したものにはなっておらず、VBAの言語としての特徴を―それが初心者向けという印象につながるか否かに関係なく―一通り並べただけになっているように見えるんだけどそれでいいんだろうか。
2
Jiro Kita / 喜多 次郎 / KtJ Dragon @ktjdragon 2021年5月27日
昔からMicrosoftがVBA含むBASIC系言語を「複雑なことは苦手だが簡単に導入できる」処理系として実装してきたから、以上の理由があるんだろうか?
1