マイクロソフト(株) : 磯貝 直之氏/篠木 隆一郎氏
Windows 2000チーム徹底インタビュー (その5) アプリケーションとマクロの発展が、次の段階に到達した~Visual Basic for Applications~
2000年12月04日 03時56分更新
今まで、たとえばVBA 5.0の時に、Visual BasicとVBAとの間で、最も違っていた部分を考えてみた場合、あくまでもVBAというのは、Office側を操作することを目的としていたわけです。Office側、つまりOfficeアプリケーションの操作を目的としてたので、たとえば、Windows側が持っているAPIを直接操作するといったことは、非常に難しかったわけです。しかし、VBA 6.0では、今までVisual Basicで使えていた「Address Of演算子」という機能が利用可能となりました。この機能により、Windowsの持っているAPIを、VBAの側から直接使うことが容易となりました。
今まで、OSが実際に持っている機能というのは、まずOfficeがそれを使っていて、そのOfficeが持っている機能を、ユーザーがVBAから使うというステップだったわけです。そこが、VBA 6.0では、当然今までと同じようにOfficeの機能を使うこともできますが、Officeだけではなくて、Win32 APIを直接操作できるようになった。この機能を少し推し進めて考えてみると、アプリケーションとマクロの発展が、次の段階に到達したことが分かると思います。1つのアプリケーションだけで完結させずに、たとえば、複数のアプリケーションを連係させて利用する場合を考えると、OS側で持っているウィンドウの情報などといったものを取得するといった操作も必要になってくるわけです。ですから、そういった意味では、Officeのアプリケーションとしての壁が取り払われたのと同時に、VBAから見た場合、OfficeとOSの間にあった壁が取り払われたというのは、自然な流れなのかなと考えています。そのOfficeの機能を再利用してアプリケーションを開発する中で、あくまでも付加機能の1つとして、Windows APIを操作すると考えていただきたいです。
しかし、VBAの場合は、単独で動くアプリケーションを開発するという位置付けのものではなく、あくまでも何かホストアプリケーションがあって、そのホストアプリケーションを呼び出して、外部のアプリケーションが持っている機能をつなぎ合わせるためのコンシューマでしかありません。ですから、何か機能を新しく作って、それをプロバイドすることに関しては、それほど主体的には想定していないというわけです。
マクロプログラマと、一般的に言われるプログラマつまりEXEを作るプログラマとの違いは、ベースになるアプリケーションの機能を、どこまで詳しく知っているかという部分にあると思います。Officeの機能をVBAで使いこなそうとした場合、実はExcelやWordの機能を知り尽くしていないと使えないということになるわけです。どれだけオブジェクトモデルを理解してるかということよりも、Excelで何ができるかをとことん知り尽くしているんですね。実はそのほうが重要でして、VBA自体、言語は簡単なのでほかの開発言語と比較してもそれほど習得は難しくないわけです。となるとやはり、Officeアプリケーションの知識が重要になってくるわけですね。
Visual Basicプログラマがアプリケーションを開発する場合や、COMコンポーネントを開発するプログラマにとって重要なのは、システム全体をどのようにして構築するかということをビジョンとして持っていて、その環境の中でどういったパーツをコンポーネントとして作っていけばよいかということです。彼等は、常にそのことを念頭に置いてシステムを眺めている。もう全然アプローチの方法からして違うわけです。
COMアドインパッケージの例としては、(株)ナルボの「Word Reports 2000」という製品が紹介されています。もう製品名からも分かるように、Wordに対するCOMアドインなのですが、Wordをベースとして帳票を作成することができるわけです。この製品は、Wordの持つ機能を再利用して、帳票を非常にスムーズに作成していきます。Wordの持つ非常に高い機能、たとえば印刷機能などをうまく再利用している。こういった機能を、VBAおよびCOMアドインを使って開発したパッケージです。もともと株式会社ナルボという会社は、OCXコントロールをメインにされている会社でして、OfficeのCOMアドインだけではない。おそらく以前からコンポーネントの再利用ということを考え続けて来ているので、こういった製品を出されても不思議ではないんです。しかし今後の流れとしては、もしかしたらこういったパッケージよりも、どちらかというと、企業内のソリューションの方が用途として多いのでないかと考えています。
「Office 2000 Developer」という製品は、やはり「Office」と付いているとアプリケーションのスイートパッケージというイメージが非常に強い。しかし、特に企業内での業務として利用されている場合は、Officeの上での定型作業や共同作業に、どんどん利用していっていただきたい。ここの部分を、特に我々はフォーカスしていきたいです。我々は、「Office 2000 Developer」という製品は、一昔前のVisual Basicの役割を越えたのではないかと考えています。ちょっとした企業内アプリケーションを開発したりするには、「Office 2000 Developer」をお勧めしたいですね。