- ベストアンサー
vbaがプログラマとして人気のない理由
よく、vbaでプログラムを組めてもプログラマーにはなれない、や vbaは一流のプログラミング言語ではない、 と言われますが それはvbaの需要がないからですか? それとも他の言語に比べると簡単だからですか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >vbaは一流のプログラミング言語ではない、と言われますが 私自身は、聞いたことはありません。昔のMicrosoft のパンフで、VBは、お遊びだなんていう書き方を読んだことがありますから、それと同じか、それ以下というべきなのでしょうか? 最初にいえるのは、Office というシステムに依存して、VBAに割り当てられたメモリは極端に少ないのです。ひとつのプロシージャで数千行ということは出来ません。 でも、VBAは、非常に需要は高いです。VBAをなくしますと言ったら、世界中のOffice ユーザーから非難轟々とでます。事実、それがあったので、VBAをなくすプランは、頓挫してしまいました。 現行のVBAでは、本格的なオブジェクト指向でプログラミングが出来ないだけで、全うなプログラム言語であるのは間違いありません。しかし、Office のアプリケーションに依存していますので、そのオブジェクトに依存してしまいます。WordとExcelの違い、Outlook とそれら二つとは、ほとんど共通性がありません。 Office VBAにもプロの世界がありますが、ほとんど知られていない世界です。Office VBAを専門に扱う人は、VB/C# などを使いこなせるはずです。また、ASP, WScript なども使いこなします。ふつうは、Office VBAの専門にしている人は、ひとつの会社で、構築した知識はあっても、普通は、独立したプログラマとしては、特殊すぎて存在しえないものだと思うのです。 Mougで掲示板に書いている、ある方のように、Office VBAの開発で、一件、数百万円も稼ぐそうですが、なかなか、そのような仕事をキープし続けるのは無理だと思います。むろん、Office VBAの開発と言ってはいても、Visual Basic for Application というだけのものではなく、様々な周辺知識がないと維持できないわけです。 Office VBAやその周辺を扱う技術というのは、入門レベルの底辺の人がものすごく広いということです。ところが、その入門レベルから、次のステップが限りなくレベルが高いし、次のステップに進むための橋渡しになるものがありません。それに、上級レベルまで覚えても、こんどは活かせる場所がほとんどありません。特に、Excelは、記録マクロ程度でも、VBAを使いこなせると宣言する人もいますから、全体的なレベルを押し下げていることには違いはありません。Access とは、ずいぶん印象が違います。Office VBAでも、ものすごく高度なことは出来ますが、そうしたものが、独立して存在しているわけではないのです。 最後に、あくまでも、アプリケーションを操作するのが、VBAの主たる目的なので、そうすると、プログラム言語としての使用範囲が限られます。ただ、学ぶ言語としては、結果が早く分かるし、かなり明確な目的を持って使えますから、実用度は高いと言えます。ただ、いつまでも、アプリケーションの枠組みからは越えることが出来ないわけです。
その他の回答 (5)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 最初に、前回の発言の元はWikiPedia の日本語版の内容の間違いが発端で、それがキーワードとして触発された内容でした。 決して、特定の方のレスには関係がありません。私の不用意な言葉で、不愉快に思われた方には、お詫び申し上げます。 少し補足させていただきますが、この質問は、Yes/No や白・黒をはっきりとさせるようなことは難しいのではないでしょうか?単に、機能論だけでは治まらないからです。 他のC++ /VB.Netなど、単独でアプリケーションとして作られる言語と、プログラム言語として、VBAを考えること自体が間違いかもしれません。たとえば、TextStream 系の言語、また、JavaScript やVBScript は、コンパイル(Perlは可能)が出来ないだけではなく、非常に周りの環境に影響されやすい言語です。その点では、VBAは、ある程度の言語としての共有性や安定性は保たれているように思います。プログラム言語としての開発環境も整えられていると思います。 >vbaは一流のプログラミング言語ではない、と言われますが 前回、否定しましたが、VBAは、プログラミング言語として、自由に使える部分が制約されています。にもかかわらず、驚くべきレベルでExcel VBAなどを使える人も中にはいます。しかし、VBAは、アプリケーションの一部でしか過ぎません。すでにアプリケーションが成立しているから、構築していく部分や、使用される対象や範囲が違ってきます。 言い換えれば、大抵のことはアプリケーション側でまかなえるので、VBAは、本格的なプログラミングを要求されません。それに安住してしまう人がほとんどだと思います。それ以上に、技術を上げようと考える人は、本当に少ないようですし、VBAからでは、先に進めるための情報の入手手段がないように思います。いずれにしても、C++やJava があるなら、VBAのままの知識ではたりませんから、どういう手段だとしても、別途学ばなくてはなりません。もし、問題があるというなら、Microsoft 側のプログラミング言語の一覧パンフで書いているように、VBAではなくて、VB6そのものだと思います。 ただ、個人的な経験から言うと、VBAを一通り学んでいなかったら、自学学習では、VB6やVB.Net は手が出ませんでした。
お礼
難しい問題なのですね。 ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17069)
(1)VBAの代表的なものは、エクセルVBAでしょう。これはエクセルの処理と本来、不即不離のものです(オブジェクトというプログラム群がエクセル処理のものが集っている)。それ以外の処理を望んでも無いものねだりなんです。 そして一般社会の業務は、データ処理にしてもエクセルでは不十分です。もともとそういう層をターゲットにしたソフトではない。 しかしEUCなどで、一般でも使えるように降りてゆくべき社会のニーズもある。その場合エクセルやエクセルユーザー層も、プロも無視できない。 しかし、プロがメインで使うには向かない。 AccessVBAになると、ある会社ではプロもそれを使ってシステムにしている(実例有り)かもしれないが、他社の業務では、そうでないから、プロとしては、十分でないことになる。オラクルなどと比べるとやはり弱い面があるわけです。 そして他の業務などはぜんぜん役に立たないわけです。 (2)大体の傾向として、素人から勉強して、VBAまでならやれる状態になるコースをとると思うが、その場合、そこから先がプロとしては不安である場合がほとんどとおもう。 エクセルというもののコンピュター処理での必要知識は偏っていること。一例で通信、画像処理関係。 それ以外に必要とする難しい言語や仕組みアルゴリズムや利用するソフトがいっぱいである。 新しい会社の仕事を請け負ったら、業務知識+必要コンピュタ知識 など沢山勉強せねばならず、さらに日進月歩でご苦労なことだ。 そういうことをプロは知っているから、採用側は今後(一から)相当鍛えなおし、勉強してもらわないと使い物にならない、とう思いになるのではないか。それなら養成する会社は、ド素人と余り変わらないと思い、既経験者を採用側は不安になるのでは。 VBAも、.NETの時代になって同系統が進歩してしまったから、学び直しになるので、なおさら採用側はVBでの開発が多くても、今後相当鍛えなおし、勉強してもらわないと、と言う状態になったのではないでしょうか。
お礼
大変参考になりました。ありがとうございます。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
一言で言えば、とっても使いにくい。 プログラマーから見ると、たいしたこともできない癖に、システムに依存しすぎて汎用性が無い・・に尽きるでしょう。 自分(あるいは会社という狭い世界)の使用しているシステムに依存する部分が多い。officeのバージョンがちょっと違うだけで動かない。都度、そのマシンに何かを追加しないと動かない。 「vbaでプログラムを組めてもプログラマーにはなれない」ではなくて、VBAの知識があまり役に立たないということでしょう。 VBAでも相当のことはできます。ゲームでさえ作れる。 猫とエクセル ( http://www.geocities.co.jp/SiliconValley-Cupertino/8748/ ) エクセルExcel大事典 マクロVBAワークシート関数入門応用使い方講座 ( http://home.att.ne.jp/zeta/gen/excel/ ) 「vbaは一流のプログラミング言語ではない」 汎用性に乏しい・・これが一番の理由でしょうね。たとえばjavaならどんなマシンでもそのまま使えるといっても良い。 コードが読みにくい・・Pascalなら誰が書いてもほとんど同じでメンテナンスしやすい。 Perlなら文字処理が楽で、好きなように日常会話に近い・・ 「それはvbaの需要がないからですか?」 ・・これは意外とある。社内でのみ使用するものなら、これに勝るものは無いかも。VBAが自由に扱えれば就職には事欠かない。 「それとも他の言語に比べると簡単だからですか?」 慣れたらどれだって簡単。まあ、あまり複雑なことはできないかも。
お礼
確かにそういう意味ではvbaは不便ですね。 ありがとうございます。
正確にはVBAはプログラミング言語ではありません。マクロ言語です。もともとはマクロ然とした文法でしたが、MSの方針により、途中からVBと同じ文法がとられるようになりました。 プログラミング言語というと、一般にはコンパイルしてEXEファイルを作成できるものをいいます。VBAのようにアプリケーションの中だけで動作するものはマクロ言語です。 質問のようなことは聞いたことがないのですが、逆にいえば、VBAすらできない人はプログラマーにはなれないでしょう。 エクセルを使いこなしている人のうちのかなりの数の人がマクロを使用しています。このサイトを見ても、マクロについての質問がけっこうありますし、答える人もたくさんいます。需要がないことはありません。 一時期、BASICは構造化プログラミングが難しく、ほかの言語より一段下に見られた時期もありましたが、今はかなり構造化の手法が取り入れられ、先輩(後輩?)言語にさほど見劣りしないところまで成長しました。 ただ、C言語(これは後輩)などと比べると、生成された実行ファイルが低速であることは否めません。ですので、本格的な実用アプリ製作には向かないのも事実で、もっぱら日曜プログラマーに使われています。
お礼
vbaはマクロ言語なのですね。 ありがとうございます。
- x1va
- ベストアンサー率26% (802/3006)
基本的にはMicrosoft Officeで簡単な作業を自動化するためのもので、本格的なソフトウェアを作るためのものではありません。 例えるなら日曜大工程度の簡単なものを作るには良いけれど、本職の大工が家を建てるには不足するような感じでしょうか。
お礼
とてもよくわかりました。 ありがとうございます。
お礼
お詳しいですね!デメリット・メリットを教えて頂きありがとうございます。