『VBAはプログラミングではない』という声が掲示板やSNSを中心に時々みることがあります。個人的にはそんなこともなく、プログラミングだと思うのですが、どういう点がそうではないと見られてしまうのか、調査して、まとめていきたいと思います。
VBAを今後、本格的に勉強していきたいなーと思う人のモチベーションにつながってくれるとうれしいです。
こんにちは。当ブログの管理人の『くろん』です。
30代サラリーマン、新規事業推進室に所属。ブラック企業勤め時代に身に着けた業務効率化ノウハウをアウトプットしていきます。
読んでくれた方の業務が一秒でも早く終わりますように!と願いながら記事書いていきます!
VBAがプログラミングではないと言われるのはなぜ?
VBAがプログラミングではないと言われるのはなぜでしょう。
その意見を紐解いて行く前に、VBAとはそもそも何なのか、プログラミング言語ではないと言われてしまう所以についてまとめていきたいと思います。
1-1:VBAとは何か?
Visual Basic for Applications(VBA)は、Microsoft Officeのアプリケーションを自動化するためのプログラミング環境です。Excel、Access、Wordなどで使用され、ユーザーが繰り返し行うタスクを自動化したり、カスタマイズされた関数やマクロを作成することができます。
Excelのマクロ機能の裏側で動いているのもVBAです。例えば、下記は、A1セルにある値を、A2セルにコピーした行動をマクロで保存した際のVBAです。このように、マクロ機能の実態はVBAということがわかります。
Sub Macro1()
'
' Macro1 Macro
'
'
Range("A1").Select
Selection.Copy
Range("A2").Select
ActiveSheet.Paste
End Sub
1-2:VBAは非プログラミングと考える人の声
VBAをプログラミングではないと見なす主な理由は、マイクロソフトオフィスでしか使えない言語である点と、マクロ記録ツールとして利用されているにすぎないの2点にあると考えられます。
エクセルやワード、アクセスといったMicrosoft Officeの上でしか動かないという制約があるので、商用ソフトへの開発には利用できません。そのことが、プログラミング言語と呼ばれるにはふさわしくないと考えている人もいるようです。
また、先程述べたように、マクロの記録をすると実態はVBAであるからして、単なるマクロ記録ツールと見なし、複雑なアルゴリズムやデータ構造の操作、システムレベルのプログラミングといった、いわゆる「本格的な」プログラミング言語の特徴を欠いていると考える人もいます。
その2点から、VBAはプログララミング言語と呼ぶにはふさわしくないよねーと考える派閥がいるようです。
『VBAがプログラミングではない』ってのはおかしいと思う
2-1:プログラミング言語とは?
プログラミング言語(programming language)とは、主に人間がコンピュータプログラムを記述、編集するために用いる人工言語。作成したプログラムは機械語による記述に変換した後、コンピュータで実行できるようになる。
プログラミング言語とは – IT用語辞典
プログラミング言語とは、コンピューターに対して命令を与えるための形式化された言語と言えます。つまり、コンピュータが理解できて、その指示どおりの動作をするのであれば、それはプログラミング言語と言えます。
2-2:当てはめて考えると、VBAも立派にプログラミング言語
当てはめて考えてみると、VBAもプログラミング言語の基本的な要件を満たしていると言えます。条件分岐、ループ、関数の定義など、プログラムの流れを制御するための機能が十分にありますもんね。VBAを使って複雑な業務プロセスを自動化したり、ユーザー定義関数を作成したりすることは、間違いなくプログラミングの作業と言えます。
「VBAはプログラミングではない。」なんてことはなく教育的価値も
VBAはOffice上という限定的な用途には限られるものの、プログラミング言語として十分に言えると思います。また、とっつきやすいプログラミングであるからして、教育的な用途としても価値があります。そのあたりまとめていきたいと思います。
3-1:プログラミング教育への応用
VBAはプログラミングの基本概念を教えるための非常に有用なツールと言えます。特に、プログラミング初心者が論理的思考やコーディングの基礎を学ぶ上で、VBAは親しみやすい環境と言えると思います。
というのも、プログラムってすごい敷居が高い感じがしますが、VBAの場合は、特にエクセルにおいてですが、マクロ機能を使ってみてー。その中身がどんな感じなんだろー。と、エクセル上の動きをプログラムにするとこんな感じになるんだ。とリンクさせながら覚えることができるためです。そのやり方である程度のメソッドなどなどを理解できれば、0からプログラムを組むこともできるかなと思います。
また、エクセルはまだまだ業務で使うことが多いツールな上、自動化できれば業務を楽にできるんだろうなあというニーズはどこでも存在しうるので、プログラミング勉強するモチベーション維持に役立つんですよね。プログラミングを覚えよう!として勉強するよりも、日頃のこの業務をもっと楽にやりたい!のほうがテンション上がりますもんね。
3-2:VBAを学ぶ利点
VBAを学んでいけば、日頃の時間かかる業務(しかもおそらくは単純作業でクソめんどくさい)を自動化し、効率化することができます。また、これがきっかけで、プログラミングの基本概念を実践的な形で学ぶことができるため、他のプログラミング言語への理解を深める足掛かりとなると思うんです。そしたら、ガチなプログラミング言語である『Python』とかにとっつきやすくなります。
実際、筆者自身もマクロ→VBA→Pythonの流れでプログラミングに慣れ親しんできたという経緯がありますし、VBAはプログラムのとっかかりとして最適だと思います!
VBAはプログラミングではない。そう言われる理由は?まとめ
- VBAがプログラミングではないと言われてしまう訳
-
- Microsoft Officeのアプリケーションでしか使えない
- 『マクロ記録ツール』としての価値しかないと思われている
- VBAも立派にプログラミングだと思う点
-
- 条件分岐、ループ、関数の定義など、プログラミングに必要な要素は持ちえている。
- コンピューターに対して命令を与えるための形式化された言語であることは間違いない
そんなこんなで、『VBAはプログラミング言語ではない?』という疑問についてまとめてきました。個人的な結論としては、プログラミング言語だと思うし、初心者にもとっつきやすいこと間違いないので、最初に習うプログラミング言語としてはありだと思う。です。
一人でも多くの人が、VBAに興味をもって、プログラミングに取り組んでいただけると嬉しいです!