そう思った理由は、以前とあるSNSのコミュニティにて"MS Excel""MS Access"の話題でとある人の「VBAできるといいのかな?」と発言から「VBAの仕組みは~」や「こんなマクロを作ったことがある」と話している中で、ある方が
「そんなのC言語でやればいいじゃん」
という発言をされる方がいました。続けて他の方
「JAVAで作れば余裕だよ」
と別の方が発言されたことから私は
「確かにC言語やJAVAでも可能でしょうが、今はExcelやAccessで使うVBAの話ですよ」
と返しましたら
「VBAしか出来ない奴にロクな奴はいないよ」
や
「その程度で語らないでくれるかな?」
という発言が続き、私はその話題から離れました。
今の仕事も"MS Excel"や"MS Access"でVBAを用いますが、自分は「プログラマー」と思わいませんし、人から「プログラマーですか?」と聞かれても「そんな大層な者ではありません。」と答えています。
余計な感情部分を入れて申し訳ございません。本題に戻りますが、
C言語やJAVA言語を使う人から見て、"MS Excel"や"MS Access"でVBAは無用の長物なのでしょうか?
C言語、C++組んで20年になります。
プログラム嚙り始めの人ほど、そう言うんですよ。
VBAはインタープリターなので速度の求められる処理には使いませんが、簡単な業務アプリも組んだりしてます。
言語やフレームワークには適材適所があるので
そのときの作ろうとする対象がCやJavaのほうが適したものだったか
話の流れが読めない人だったのでしょう、
「Excelのブックを生成する」というような仕事にCやJavaを使うのは無駄ですし、OS操作やJavaで便利なライブラリが提供されているものにVBAを使うの無駄でしょう。しかしながら仕事となると環境やコストの問題でベストの選択ができることは少ないと思います。
VBAの強みの一つは、オフィスならほぼ100%、一般家庭でもかなりの割合でインストール済みなので環境を選ばないところかとおもいます。
Javaはランタイムのインストールが要りますし、CはWindowsの場合開発環境の準備(と維持)が必要です。
私はプログラマをやっていますが
VBAはライブラリを使う言語として優秀で完成されていますしクライアントPCでOffice製品を操作するには今の所最適解だと思っています。
(サーバサイドで動かす場合はコストをかけても別の手段を検討します)
ご回答ありがとうございます。
それぞれに強みや弱みがあり用途としてはそれぞれに適材適所がある、という説明していただき嬉しく感じます。
全てがCやJAVAで出来て当然のような言われ方がとても辛かったです。
未だに私は「プログラマー」と呼べないですが、VBAでは色々とアプリケーションを提供してきました。それは今の仕事でも同じです。
求められるから望まれるとおりに作る、ただそれでだけです。
C言語やJAVA言語を使う人から見ても、
"MS Excel"や"MS Access"のVBAは有用なツールですよ。
Microsoft Officeに最初からVBAが入っているから、
ちょっとVBAでマクロを作ろう、という類のものですよ。
普通はコンパイラ環境であるC言語やJavaと、
特定アプリ用ツールのVBAを比較する人がいるならば、
それは恐らく同じ背景で議論していないと思います。
ご回答ありがとうございます。
確かにjan8さんの仰られるように同じ背景で議論してはいなかったです。その方々は「自分のほうが最も有用な言語を使いこなしている。」と言った感じでした。
なので有用なツールと言っていただけるのは嬉しいです。
VBAは無用とか,XX言語は無用,と考えるのはもったいないと思います
私はC言語もJAVA言語もVBAも業務で使っていますが
長所短所を理解したうえで上手く組み合わせる事が一番大事だと思います
例えば,文字列処理とか日付計算はC言語やJAVAで書くと結構面倒ですが
エクセル + VBAなら簡単です
VBAで処理速度が問題になる場合は,まず Excel 上で日付等の計算をして,結果をCSV形式のファイルで出力するVBAというかマクロを書いて,あとは C/C++ で CSVのファイルを読み込む,という感じでC言語とVBAを連携させます
ご回答、ありがとうございます。
それぞれの言語に長所、短所があるからこそ使い方や組み合わせ方が肝心なのですね。
そもそもが「XX言語が無用」とか考えるのは勿体無いというのはまさにその通りですね。
言語は目的や用途によって決まります。
Word や Excel、Access の動作をカスタマイズしたいのなら
VBA または、C# か .NET となり、
JAVA や C++ という選択肢はまず出てきません。
ただ、プログラムのセキュリティや信頼性に影響を与えるものなので
将来的には廃止されると思います。
ご回答、ありがとうございます。
目的や用途で異なるのは理解できます。
現状Excel、Access の動作をカスタマイズするのが主な業務なので将来的に廃止となると厳しいですね。
フリーランスでプログラマーをしている者です。
> C言語やJAVA言語を使う人から見て、"MS Excel"や"MS Access"でVBAは無用の長物なのでしょうか?
とのことですが、いやいや、そんなわけないです。安心してください、そのケースではVBAを使うのが、ほぼ最適でしょう。
CやJava、その他の言語でプログラムを書くときでも、作りたいものに依りますが、データベースシステム(DB)というものを使います。
大抵はMySQLなどを使いますが… MS Accessとほぼ同じ様な概念だと思ってください。 ユーザーインタフェースが主軸なのか、システムとしての存在が主軸なのかという程度の違いしかなくて、本質的なところ、つまりデータを綺麗に保存して読み出しやすくするという点においては、一緒です。
ですから、結局は「手続き的・数式的な処理」を行うプログラミング言語とDB(Access)との組み合わせでものを作るという訳で、CやJavaやその他Web系の言語における構成と変わりありません。
Excelについてどうかというと、Accessほどじゃないけど有用だし、既にExcelで運用している業務があるところで色々な効率化をする上でVBAを使うのは適切だと思います、僕も同じ状況なら、わざわざVBA以外の言語を持ち出そうとは思いません。
プログラミング言語は現在では主要なものですら100に届くぐらいあり、研究やビジネスで多少でも使われているものという絞り方なら1000を越えるでしょう。そうでないお遊び的なものも含めると万単位で存在します。
その中で、天下のMicrosoftさんが未だにVBAのサポートを続けていて、代わりになるものを出してないんですから、VBAに価値がないなんて事は有り得ないです。
ちなみに僕はVBAが苦手なので、ちょっとした処理だと、得意な言語で書いちゃう事もありますが、それは単に個々人の能力や得意不得意の問題であって、VBAの価値とは関係ないんじゃないですかね。
ご回答ありがとうございます。
とても丁寧な内容でじっくりと読ませていただきました。
現状の業務としてはVBAが適しているということで安心しました。
多種多様で色々な分野にそれぞれの言語があり、用途が異なるということが知ることができました。
事務・経理職なのか,
それともプログラマ・SEなどのエンジニアなのか
によって変わってきます。
オフィス製品を手作業で使うことが主な事務職の場合,
VBAだけでよいのです。
それだけできれば立派です。
「どうすればオフィスソフトを効率よく使えるだろうか」
という観点で,手作業を効率よく自動化してください。
いっぽうプログラマの場合,VBAだけではダメです。
「どうすればオフィスソフトのようなソフトを独自に開発して生み出せるだろうか」
「どうすれば,人間がオフィスソフトを触る手間を一切なくすことができるだろうか」
という観点で仕事するからです。
そして,ソフトを作るためには,CやJavaが必要になります。
VBAは「ソフトを作る」ための言語ではなく,
「オフィスソフト上での手作業を効率化する」ための言語ですからね。
事務職は,オフィスソフトを「使う側(ユーザ)」です。
エンジニアは,オフィスソフトを「作る側(ベンダ)」です。
対比のために,やや単純化してありますが。。
VBAの役目と,C・Javaの役目を
真っ二つに分けて比較すると上記のようになります。
ご回答、ありがとうございます。
ソフトの開発がプログラマであり、オフィスソフトの効率化でVBAを用いるのは事務職であるということが分かりました。
皆様、回答していただきありがとうございます。
言語によって畑が違うことや言語に無用の長物とは言わないという事でとても勉強になりました。
以下、日記として総括させていただきます。
ご回答、ありがとうございます。
2015/12/01 22:58:35Vacuumさんのお言葉に、当時の方がプログラム嚙り始めの人がどうかはわかりませんが、使い始めた時に「一番使える」と思って発言されたと思いました。感謝しあmす。
確かに速度を求める処理に対してVBAは向いていないですね。業務系アプリもありますが、電気計測でロガー代わりにアプリを組むことはありました。