長谷川 裕行 (はせがわ ひろゆき)
有限会社 手國堂 代表取締役
http://www.hirop.com/
テクニカルライターとして活躍。プログラミングに関する著書多数、DB Magazineなどにも多くの記事を提供している。 |
コンピュータ・プログラムは、通常「プログラミング言語」を使って開発します。「プログラミング言語」とは、人間の思考をコンピュータの動作手順に置き換えるための「記述の約束ごと」のことですが、この約束ごとを実現するプログラム自体やそれに関連する補助的なプログラムを含めて「プログラミング言語」と呼ぶ場合もあります。
一般的には、あるプログラミング言語を用いてプログラムを開発するためのプログラム類をまとめて「~言語の処理系」などと表現します。また、総体的に「開発環境」「開発ツール」などと表現されることもあります。
主な開発環境には以下のような種類があります。
- 高級言語 -
英数字と記号を使った命令語によって文を作り、処理を記述していくスタイルです。言語の種類としてはC、C++、Pascal、FORTRAN、COBOL、BASICなどがよく知られています。
命令後を入力したプログラムの元となるファイルをソースファイルと言い、それをCPUの理解できる機械語に変換する仕組みと工程によって、コンパイラ型とインタプリタ型に分かれます。
コンパイラ型では、各言語専用のコンパイラによってソースファイルの内容を中間コードに変換し、それに様々な機能を提供するライブライファイルなどを結合するリンクの過程を経て、最終的な実行形式ファイルが出来上がります。
インタプリタ型では、ソースファイルの内容を逐次読み取っては機械語に変換して実行します。従って、コンパイルやリンクの工程はありません。
多くの高級言語はコンパイラ型です。インタプリタ型としてはBASICが有名です。
- データベース -
WindowsのAccessやDOSの桐、dBaseなどのデータベース・アプリケーションも開発ツールです。これらはデータベースを制御するデータベースエンジンと、画面や帳票などのデザイン機能、処理を自動的に実行する自動化機能を併せ持っており、処理対象の情報をデータベースとしている点を除けば高級言語と大きく変わりません。
高級言語でデータベースを扱う場合には、データベースエンジンを操作するライブラリなどの機能が別途必要ですが、データベース・アプリケーションには必要な機能がすべて組み込まれており、加えて画面や帳票の設計も簡単にできるものが多いので、業務用アプリケーションの開発では高級言語より便利です。
Windowsのデータベースとして定番となったAccessの場合、一般的な自動処理機能としてマクロが利用できる他に、VBをベースにしたVBAによって複雑な制御も可能となっています。
- RADツール -
RADとはRapid Application Developmentの頭文字を取ったもので、従来の開発環境より扱いの簡便なアプリケーション開発ツールを意味します。
一般的に、高級言語を利用しながらGUIによって簡便にプログラムを作ることのできる環境を指し、VBやDelphiなどがその代表格です。最近では、AccessなどのデータベースもRADツールと呼ばれることがあります。
大規模で複雑な処理を細かくチューニングして性能を上げる――といった芸当はできませんが、高度な知識や技術を要せず、素早く目的を達せられることが最大の利点です。特に業務で使用するアプリケーションでは、改良や手直しが頻繁に行われることが多いため、RADツールの簡便さが威力を発揮します。
また、本格的な高級言語の処理系に比べて学習が容易なため、技術者の養成に手間と経費がさほどかからないのも利点の1つです。
Windows上のアプリケーション開発は、DOS上のC言語やオフコン、あるいは汎用機のCOBOL、FORTRANなどの開発とは事情が異なります。Windows独特の作法を簡単に紹介しておきましょう。
- 基本的な開発手順 -
Windowsの操作環境はGUI(Graphical User Interface)であるため、Windowsアプリケーションではユーザーインターフェースにアイコン、メニュー、ダイアログボックスなどのコントロールを多用します。
これらコントロールは、基本的にアプリケーションではなくWindowsが管理しています。アプリケーションはWindowsの管理するコントロール類を利用して、自分のための処理を進めていきます。
そこで、ソースファイルをコンパイルし、リンクを経て出来上がったexeファイルに、さらにアイコンやメニューなどの実体部分を結合する工程が必要です。アイコンなどのコントロールを定義したものをリソースと呼び、これをexeファイルにバインドします。
要約すると、以下のような手順になります。
(1)ソースファイルの作成(コードの入力)
(2)リソースファイルの作成(コード入力またはGUI)
(3)中間ファイル生成(コンパイル)
(4)exeファイル生成(リンク)
(5)exeファイルの完成(リソースのバインド)
- 統合環境とVBの魅力 -
このように、Windowsアプリケーションの開発は非常に複雑な過程を経て行われます。プログラムの間違いを取り除くデバッグ作業も含めれば、アプリケーション開発は開発ツールとの闘い――といった趣きになります。
現在では、Visual C++などの開発環境でもDeveloper Studioなどの統合環境が用意され、プログラマーはソースファイルとリソースファイルを作りさえすれば、コンパイル~リンク~バインドの工程は自動的に処理されるようになっています。
統合環境が開発者にもたらす恩恵は計り知れません。しかし、基本的な操作が統一されている環境とは言っても、やはり上記のような段階的な手順を意識しない訳にはいきません。
確かに、上記手順の(3)~(5)が自動化されたことはありがたいのですが、言ってみればそれだけのことです。「プログラムを作る」という基本的な作業、設計やソースの記述の手順は統合環境であろうとなかろうと、本質的にまったく変わりません。
一方VBでは、フォームのデザインとソースコードの編集がすべて1つの環境の中にまとめられているため、リソースを用意するという意識すら持たないでアプリケーションを作ることができます。第1回で触れたAPI関数の呼出しにしても、意識する必要はまったくありません。
単に開発手順が自動化されただけではない、VBの魅力がここにあります。 |
VBの場合、Visual C++より遥かに簡単な作業でプログラムを作れます。
- VBによる開発手順 -
VBによる開発は、おおよそ以下のような手順となります。
(1)フォームのデザイン(Formウィンドウ)
(2)コードの入力(コードウィンドウ)
(3)exeファイル生成(コンパイル)
すべての作業がVBの統合環境内で完結し、他のツールを使う必要はありません。アイコンやマウスポインタ(カーソル)、あるいはビットマップなどを用いる場合には、それらをデザインするためのツールが必要ですが、プログラムを作るという基本作業では、統合環境を出る必要がないのです。
Visual C++などの処理系も現在ではかなり統合化が進んでいるため、単に開発手順だけを比べれば実のところそう大きな違いはありません。VBの最も便利な点は手順そのものの簡略化より、フォームを基準にアプリケーションをデザインできる――という点でしょう。
- フォームから始まるプログラミング -
VBでは、まず最初にユーザーインターフェースの中心となるフォームをデザインします。フォーム上にコマンドボタンやリストボックスなどを配するのも、ツールボックスから目的のコントロールをドラッグ&ドロップするだけ、という簡単さです。
肝心のコード入力も、そうして貼り付けたコントロールの受け取るイベントに対して、必要な処理を記述していく形となっています。従来型のアプローチでは、まずプログラム全体の構成を決め、それに合わせてユーザーインターフェースやソースコードを定めていく必要がありました。が、VBではフォームをデザインした時点でアプリケーションの骨格が出来上がってしまうため、あとはそれに「ソースコード」という「肉」を盛りつけていけばいいのです。
- "気楽さ"の利点と欠点 -
「アプリケーションの構成をソースコードではなくフォームを基準にして作り上げられる」という点が、VBの最もVBらしい特徴です。例えばVisual
C++でダイアログボックスを使用するには、まずダイアログボックスの機能とデザインを決め、それをリソースとして作成した上で、ダイアログボックスを制御してユーザーの設定した結果を得る――という処理をソースコードとして記述しなければなりません。
同じことをVBで行う場合、とにかくフォームをデザインし、メインとなるウィンドウからそのフォームを開く処理やフォーム上の設定を受け取る処理を記述すればいいのです。言葉で書くとその違いはつかみにくいかもしれませんが、実際にVisual
C++とVBで同じアプリケーションを開発してみれば、その違いは歴然です。
- しっかりした設計を -
これが、VBが直感的で初心者にも扱いやすいツールと言われる由縁です。が、この気楽さが裏目に出て、行き当りばったりのプログラミングをしてしまう可能性も否めません。VBの気楽さは、両刃の剣となる訳です。
どんなプログラムでも、しっかりした設計が最も大切です。気楽に開発できるということと、適当に設計しても構わないということとは別です。
VBが非常に簡単にアプリケーションを開発できることの利点は、各種ツールの操作や開発手順を覚える手間を、設計やテストといったアプリケーション開発の本質部分の方に回せることにあります。
手早く開発できることももちろん重要ですが、本当に大切なことは早さより「良質の設計」です。VBの簡便さは、そのことに寄与するものです。
業務用アプリケーション開発では、データベースの扱いが必須です。VBに限らず、あらゆるプログラミング言語にはOSを介してファイルを操作するための機能が備わっていますが、単なるOSレベルのファイルアクセスでは、業務や研究で用いるデータはさばき切れません。
- データアクセスコントロール -
業務や研究では、大量の書式化された情報を効率良く扱う必要があります。「大量の書式化された情報」とはデータベースです。そのため、開発ツールの側にデータベースを操作するための機能が備わっていることが、必須となるのです。
データベースは、データベースエンジンと呼ばれるプログラムによって管理され、開発環境の側からデータベースエンジンを制御して処理を進めます。VBには、データアクセスコントロールが備わっており、これによってデータベースエンジンを制御します。
データアクセスコントロールは、標準でMicrosoft Jetデータベースエンジン(以下「Jet」)を制御できるようになっています。JetはAccessのデータベースエンジンでもあり、従ってVBからAccessのmdbファイルをそのまま利用できることになります。もちろん、ODBCドライバを介することで、外の様々なデータベースエンジンも利用できます。
- Accessとの連携も可能 -
データアクセスコントロールの具体的な機能やプログラミング作法については、回を追って紹介していきます。重要なことは、VBでAccessと同じデータベースエンジンを扱えるということです。このことは、1つの業務処理を用途や開発目的などによって、AccessでもVBでも、あるいはその両方を混在させた形でも構築できる――ことを示しています。
基本的なデータの入力や印刷処理などをAccessで作り、大量のデータを高速に処理する必要のある部分だけをVBで作る、といった機能分担ができるのです。複数のメンバーによるプロジェクトで開発するような場合、メンバーのスキルや得意分野によって、Accessを使う部分とVBを使う部分に分けることも考えられます。
また、VBではODBCを介してSQL ServerなどのRDBMS(リレーショナルデータベース管理システム)を操作できるので、大規模なクライアント・サーバー型データベース管理システムの構築まで可能です。
近年、イントラネット環境で利用するWebアプリケーションの需要が高まっています。インターネットと違って組織内で稼働させるイントラネットの場合は、特に業務処理に関係するWebアプリケーションの存在が非常に重要です。
せっかくイントラネットを構築しても、単に電子メールや掲示板だけしか機能しないのでは話になりません。ブラウザを介して社内のデータベースにアクセスし、そこで業務処理が行えるようになってはじめて、イントラネットは意味を持ってきます。
そのWebアプリケーションの開発にも、VBは大活躍します。ここで言うVBは、開発環境としてのVisual
Basicではなく、VBスクリプトと呼ばれる言語仕様です。Microsoft社が無償提供しているWindowsNT
Server用のWebサイト管理システムIIS(Internet Information Server)にASP(Active
Server Pages)を組み込めば、VBスクリプトを使ってデータベースをアクセスするWebアプリケーションが作れます。
VBスクリプトはVBとまったく同じではありませんが、名前が示すとおり言語の基本的な部分は共通しています。VBの扱いを覚えれば、データベースを扱うWebアプリケーションの開発まで、その可能性が広がっていくのです。
|