[Excel で VBA] なぜプログラミングを学ぶのか
本講義では Excel 上で Visual Basic というプログラミング言語を利用する方法を学ぶ。
Excel 上で用いる Visual Basic は正式には Visual Basic for Applications (VBA) と呼ばれる。
書店のプログラミング言語コーナーには VBA に関する多くの教科書を取り扱っているので、興味のある学生は参考にしてみると良いだろう。
多くの人にとってプログラミング言語によるプログラミングは初めての経験であろうから、
しっかりと学習して着実に身に着けるように欲しい。
後期の授業では、Excel 上で利用できる Visual Basic for Applications (VBA) を用いて、
プログラミングの基礎を学ぶ。
まず、なぜプログラミングを学ぶのかを少し考えてみよう。
前期の授業では、主にメール/ワープロ (Word)/表計算 (Excel)/プレゼンテーション (PowerPoint) について学んだ。
これらのアプリケーションを使いこなせば、大学生活で必要なレポート・卒論等の作成に大いに役にたつ。
特に Excel は強力であり、うまく活用すれば卒業研究 (皆さんは ECP) においてグラフの作成やデータ解析等、多くの場面で役にたつだろう。
しかし、アカデミックな研究を行う際、 Excel の機能だけでは実現できない問題に直面することが多々ある。
例えば、
- あるシステムをモデル化して、その挙動を数値的に解析したい (シミュレーションしたい) 場合
- 実験から得られた大量のデータを処理し、何らかの計算を施したい場合
- 画像処理を行いたい場合
などである。
そのようなとき、Excel 以外の既存のアプリケーション (例えば画像処理ソフトなど) を利用できる場合もあるだろうが、
しかし、現実には既存のアプリケーションでは希望する機能が実現できない場合が多い。
その際は、自分でアプリケーションを作成して、コンピュータに望みの動作を実現させねばならない。
それを可能にするのがプログラミング言語によるプログラミングである。
少し大げさに言えば、プログラミングによりコンピュータに自分の思い通りの働きをさせることができるようになる。
そのためにプログラミングを学ぶわけである。
世の中には様々なプログラミング言語があり、それぞれ得意/不得意分野があり、用途によって使い分けられている。
- Visual Basic: (初心者向けだが、アプリケーションも書ける)
- C#:(Visual Basic の次のステップとして適している。初心者、上級者どちらもOK)
- Python:(機械学習やデータサイエンスで用いられる。最近の流行り)
- C/C++: (昔は標準だったがいまは上級者以上向けか)
- Java: (Web アプリケーションに強い。ビジネス向け)
- JavaScript: (ブラウザで動作するプログラムを書ける)
これらの言語はそれぞれ文法が微妙に異なるのだが、基本的な考え方は近いので、
一つの言語をマスターすれば他の言語をマスターするのは比較的容易である。
これらの中で Visual Basic (特に VBA) を学ぶのは、以下の理由による。
- 初心者用言語であるので C 言語/C++ に比べて親切な作りになっている
- Excel さえあれば実行できるので、余計な出費の必要がない (授業でやる以上これは大事)
- 興味がある人は、Visual Studio を購入して、付属の Visual Basic を利用した本格的なアプリケーション開発にステップアップすることも可能
Visual Basic for Applications (VBA) で何ができるかの例として
フーリエ解析による音声分析について紹介する。
以下の図は、上記書籍に基づいて、自動車のエンジン音をフーリエ解析して、
エンジンの回転数を見出している様子である。
このような解析は VBA を用いずに Excel のみで行うことは不可能であり、
VBA の機能を追加利用して初めて実現できると言える。
(Excel のみでは音声ファイルは読み込めないし、また、長時間の音声データのフーリエ解析も行えない)
このように、 VBA を活用すると Excel だけでは行えない複雑な解析が行えるようになる。
VBAを用いた次の例は、Excelで数字認識を行う例。
下記の私の著書「高校数学からはじめるディープラーニング」に基づいて、
ディープラーニングの畳み込みニューラルネットワーク (Convolutional Neural Networks, CNN) という手法をVBAで実現している。
このように、人工知能に関わるプログラミングも (その気になれば) VBA でも行える。
次に、VBA でモーターを制御する例について紹介する。
一般にモーターというとミニ四駆などの模型で用いられる DC モータと呼ばれるものを想像する方が多いのではないだろうか。
DC モーターは電圧を与えた際に (あるいはスイッチを ON にした際に)、電圧の大きさに応じた速さと向きで回転する。
DC モーター以外にも世の中には様々なモーターの種類があり、
速度指定、角度指定など様々な制御を行うことができる。
その中で、ステッピングモーターと呼ばれるモーターの制御を VBA から行っている動画を紹介する。
やや見にくいかもしれないが、Excel 上にボタンがいくつか配置されており、
押したボタン (「右回転」、「左回転」、「終了」) に応じて、
モータがそれぞれ右回転、左回転、停止を行っている模様である。
このとき、ステッピングモーターを制御するための流れは以下のようになっている。
ディスプレイ前の段ボールの上にステッピングモーターとモーター制御用回路があるのが見えるだろう。
Excel でモーターを制御する必然性はあまりないかもしれないが、
技術的にこのようなことも可能であるというデモンストレーションとして提示した。
なお、このモーター制御は以下の書籍を参考にしている。
VBA を利用するための準備→
Excel で学ぶ Visual Basic for Applications (VBA)に戻る