読者の方からのメール

1999/12/27


先日書いたMicrosoft Accessに関する話題「隔靴掻痒」について、幾人かのかたから情報を頂きました。

はじめはinakさんからのメールです。


はじめまして、大阪府在住のinak(37歳)と申します。

いつも楽しく「闘わないプログラマー」を拝読しています。
特に今回は私が普段仕事で使っているAccessの話でもあり、思わずメールを書
いてしまいました。

私は社員2,000人ほどのメーカー勤務で、いわゆる"社内プログラマー"(実際は
コンピュータのなんでも屋)をしています。
営業部門の業務アプリケーションを作成することが圧倒的に多いのですが、そ
のときに使う道具がほとんどAccessです(バックエンドはSQL Serverです)。

そういう状況ですが、今回Leptonさんの書かれたコラムがけしからん、などと
いうことは露ほども思っておりません。ほとんどご指摘の通りだと私も思いま
す。今回は、こういう奴もたまにはいる、という"生存証明"でメールさせてい
ただきます。


Accessを使っている理由

1.(基本的に)SQLの知識がなくとも済むから
2.MS OFFICEを買えば付いてくる(ただしプロフェッショナル版ですが)
3.(基本的に)開発実行環境が閉じている
4.ACCESS2000になってからSQL Serverのフロントエンドとして充実してきて
  いる
5.他のオフィス製品との連携が容易(資源を食わない(ホントか?))
6.桐ユーザーから転向したから(^^;


「6.桐ユーザーから転向したから」
個人的には「6.桐ユーザーから転向したから」というのが一番本音に近いか
もしれません。長らくWindows版のデータベースソフトの選択肢としてはAcce-
ssとParadoxとDBProしかなかったので、消去法的にAccessを選んだのが最初の
きっかけでした。その当時はVisualBasicもまだバージョン2だったのでVB
という選択肢もありませんでした。

「1.(基本的に)SQLの知識がなくとも済むから」

ご承知のようにAccessにはSQL文のプリプロセッサーとも言うべきクエリー
機能があります。とりあえずとっつきにくいSQL文を理解しなくとも、Acce
ssのクエリー機能で大半のデータベースへの問い合わせができてしまいます
(生成されるSQLの品質は別として)。これが便利でした。この機能がなければ
SQL Serverを使うこともなかったように思います。
当然今は、SQL文を直に書くこともできるようにはなりましたが、それでも
SQL文を直にデバッグするよりは、問い合わせの論理構造がビジュアルにわ
かるクエリーのほうが、データベースプログラマーにとっては開発生産性およ
び保守性が良いと思います。
VisualBasicに対する唯一無二のアドバンテージがこのクエリーなのではない
かとも思っています。

「3.(基本的に)開発実行環境が閉じている」

また、通常Accessでカスタムアプリケーションを開発する場合は、ActiveXを
使ったりしなくとも、とりあえずフォームもレポートも作成できます。という
か、それ以上のことをあえてAccessでやろうという気にもなりません。それな
ら当然Visual Basicを使うと思います。
結局社内で利用するアプリケーションはソッコーで作って、開発ドキュメント
なんかも作らない。そんな暇があったら他に火が吹いている案件をやっつける
、ということが多いので"お手軽RAD"として重宝しています。2〜3年たっ
ても、開発時のドキュメントがなくとも、とりあえずクエリーを見れば動作の
骨格は理解できて、ActiveXとか他の要素を考えなくても済むAccessは私にと
っては「awk」(爆)のように重宝です。

「4.ACCESS2000になってからSQL Serverのフロントエンドとして充実...」

まだ使いこなしているとまでは言えない状況ですが、SQL Serverのフロントエ
ンドとして今度のAccess2000は良くできています。SQL Serverのテーブル定義
、ビュー定義、ストアドプロシージャ、トリガー等々、Access側から作成コン
トロールできるようになって、私はVisualBasicの勉強を止めました。

あとは省略します...

最後に
>あれで本当にちゃんとしたアプリケーションが作れるんですか?

"ちゃんとした"アプリなんか作れるわきゃありません、と思います。(苦笑)
とはいえ、そういうアプリが何年も何事もなく数百ユーザーに使われている
事態が恐ろしくも現実にあることはあります。

以上、長々と駄文を書き連ねてしまい、失礼しました。
今後益々楽しいコラムの連載を継続していただけますようお願いいたします。

AccessではSQLを知らなくてもリレーショナル・データベースが扱えるという特徴はありますよね。まあ、これは長所なのか(はたまた短所なのか)分かりませんけど。あと、私はAccess 2000は使ったことが無いので分からないのですけど、Microsoft SQL Serverを使う場合には便利そうですね。というか、SQL Serverのフロントエンドとして、簡易アプリケーション開発ツールにするのがAccessの正しい使い方かも知れません。

次はkairyuさんからのメールです。


初めまして。「隔靴掻痒」に思わずうけてしまって、メール出してます。
やっぱりAccessと日々悪戦苦闘している身としては、一言言いたい。(^^)

ちなみに私は、派遣社員のプログラマでして、現在の派遣先では
Accessで、業務用のパッケージ作ってます。(Accessなんて使いたくないけど)
元々はIBM汎用機でCOBOL、Fortranのプログラムをやってました。
その後、UnisysのCOBOLもやりましたし、J-Star上でのCUSPでのプログラムも
やりました。
その後、派遣になってJ-Star入力を経て、どういう訳か、今は
Accessと心中するくらいつきあってます。(すでにおつきあい4年3ヶ月。。。)

最初はAccessだけでしたが、今は、SQLserverにDBをおいて
ユーザーの使用する部分がAccessです。
(MSのバグと修正がぐちゃぐちゃなおかげで苦労も多いです。まともに
バージョンアップができた試しがない・・・)
なぜ、Accessかというと誰でも簡単にフォーム、レポートをさわれるから。
レポートとフォームの作成がVBだけを使用するより簡単だからという理由です。

基本的にマクロは使ってはいけません。(Autoexecくらい)できるかぎり、
モジュールを書かないと後々困ります。
というのは、マクロ内は文字検索ができないからです。クエリーの中も、
当然、文字検索できません。だから、Aというテーブルがどこで使われているか
調べるとすると、モジュールだけならなんとか検索できます。
でも、マクロとクエリーはだめ。最後は力仕事です。
モジュールは検索できるといっても、すべてのモジュールから検索すると
フォームやレポートにもイベントプロシージャとして張り付いている
モジュールも検索対象になるので、下手をするとメモリー不足で
動かなくなります。(^^;;
というわけで、大きなMDBの場合には、モジュール1つずつ検索をかけます。

ついでに、Accessの過去のバージョンでは、ある日突然、クエリーが動かなく
なり、保存し直すと動くというよく分からない現象があったので、クエリーも
モジュール内で宣言します。(この場合の利点は、モジュールの検索で
済ませられること。)

いるかさんだの、構文の自動作成などよけいな機能はいりません。
まともに動くものを作って欲しいです。いるかさんに相談しても本当に
知りたいことは出てきません。

履歴管理・・・できません。そのためにモジュールのプロパティや、
モジュール内に事細かにコメントを記述します。でも、モジュールの
プロパティは文字数が決まっていてある程度までしか書けません。
で、文字数をオーバーすると古いコメントから消していきます。

確か、Access97からは、履歴管理の機能(アドインだったかな?)が
付いたはずなんですが、変なセキュリティもおまけについていて使いものに
ならなかったので使ってません。(あれを使ってるところあるのかしらん??)

最後はテキストに落として、Windows上で動くdiffもどきをかけるのが
一番です。

やはりちゃんとしたアプリケーションを作るためには、モジュール(Visual Basic for Application)を使うべきなのでしょうね。マクロは文字検索も出来ないのですね。マクロであまり複雑なことをやらせると、すぐにはまりそうです。履歴管理については、この後に頂いたメールで「Access97のデベロッパーズツールキットの中にVisual Source Safeという機能があって、これでソースの履歴がとれたようです。でも、変なロックがかかるのか、MDBが大きいためか、そのツールの不具合か主要なレポートがいくつか動かなくなったので、結局1週間ほどでお蔵入りになりました」という情報を頂きました。私も調べてみようかと思ったのですけど、まだ調べていません。
あと、kairyuさんは、ご自身のサイトでAccessの苦労話を書かれるそうなので、出来ましたらこちらからリンクを張らせていただきたいと思います ←さりげないプレッシャーです。

次はfutotamaさんからのメールです。


そして今回は「Access」です。
そう、私はleptonさんにとって天敵と呼ばれるような、
「昔COBOLやってて、今Accessで開発をやっている」という
職歴を持っているんです。いやホントです。

で、Accessですけど、結構複雑なこともできますよ。
通常の事務系アプリケーションであれば、すべて作り込めます。
ていうか、COBOLでできる事はAccessでもできるってカンジですか。

もっとも、おっしゃる通りに「ソース」という概念がないので、
世代管理だのなんだのができません。(diffもできませんね、確かに)
mdbファイルごとセーブをとるしかないのですが、
ちょっとデータいれただけでどんどんファイルサイズが
大きくなってしまい、ディスクエリアがすぐいっぱいに
なってしまいます。

それに、ブービートラップのごとく潜む数々のバグ。
スリル満点です。
COBOL時代にはコンパイラを疑うなんて
絶対にしなかった、というか考えたこともなかったですけど。

ところで、私はオブジェクト指向も、イベントドリブンも
あまり気にしてません。(笑)
サッカーのディフェンスが、ゾーンだろうがマンマークだろうが
最終的には1対1の勝負になるがごとく、
コンピュータに仕事をさせるのは所詮手続き型であると
思ってます。

いやあ、別に「天敵」では無いと思うのですけどねえ……。
「ブービートラップのごとく潜む数々のバグ」という表現がなかなか的を射ているというかなんというか。COBOLは私は知りませんけど、FORTRANでもCでも、自分の書いたプログラムがうまく動かないと、すぐに「コンパイラのバグだー」と騒ぐ奴がいます。まあそういうやつは、たいてい自分のプログラムにバグがあるものなんですけど、Accessの場合は、必ずしもそうとは言えないような……私も、以前使ってみて、どう考えても動きがおかしい、ってことがありましたし。確かに、スリル満点ですね。

最後はMyTimeさんからのメールです。


 Accessは、RDB入門用の簡易クライアントソフトです。ある程度以上の
規模の企業内での使用を前提にしています。通常は電算部門が作成したプロ
グラムを使用することが基本です。何も知らない素人が、0からアプリを作
成することは、そもそも想定されていません。だから、Personal版のOffice
にはAccessは含まれていません。
 Accessをプログラマの立場から見た場合には、レポートジェネレータ付の
VisualBasicでしかありません。下手にマクロやクエリーだけでアプリを組も
うとすると、地獄を見ます。VisualBasicの亜種としてしっかりとコーディン
グする必要があります。一旦Accessの癖がわかってしまうと、本家のVisual
Basicよりも簡単にDBアクセスを伴うアプリケーションが組めます。かれこれ
10本以上の実務用のAccessアプリを作ってきたからいえることかもしれま
せん。
 オブジェクト指向でのプログラムの組み方を理解していない人にとっては、
Accessのコーディングは確かにつらいかもしれません。オブジェクト化のレ
ベルは別にしても、ほとんどのものがオブジェクトとして扱うことができます。
簡単な独立した関数を書くだけならまだしも、本格的にアプリケーションを
組むためにはAccess流のオブジェクト指向を駆使しないとやりたいことが何
もできない場合が多いです。
 しかし、所詮はRDB入門用の簡易クライアントソフトです。おのずと限界も
あります。実行速度が遅い上に信頼性が低いため、100万レコード規模のデー
タを扱う場合には、決して使えません。ソース管理にしても、わざわざテキス
トにエクスポートしなければできません。(サードパーティーの製品でAccess
のマクロのバージョン管理ができるものも存在していますが、それを購入でき
るだけの予算があれば、私ならVisualBasicとSourseSafeでアプリを組みます。)
Access2000になって、MSDEをRDBエンジンとして使用すれば、データ量や信
頼性の問題はある程度解決しますが、ソースコードの問題だけは解決されていま
せん。
 Accessはある程度技術を持ったプログラマがプロトタイプアプリケーション
やRDBのデータメンテナンス用のアプリケーションを作る場合には絶大なる力を
発揮します。エンドユーザが使用する場合は、パワーユーザやサードパーティー
が作成したアプリケーションを使用するだけに留めていた方が幸せです。素人が
扱えるものではありません。

確かに、適用できる場面を選べば、それなりに強力なツールになりうるのでしょうね。ただ、いずれにしてもモジュールでコーディングする、というのが前提なのでしょうか。よく初心者向けAccess本などには、コーディングなしでアプリケーションが簡単に作れるかのごとき錯覚を招くような表現がありますけど、まあ幻想なのかも知れません。
あと、メールにあったAccessのバージョン管理ツールですが、MyTimeさんからの情報によれば、会社が無くなったそうです。あまり需要が無いのでしょうか。作りっぱなしのアプリケーションのようなものにしか適用しないから、あまり必要性が無いのかも知れません。

というわけでいろいろと情報ありがとうございます。Accessについては「一言いいたい」という方が多かったようで、頂いたメールも私が読んだだけでお終いにしてしまうのは勿体無いと思い、掲載させていただきました。皆さんメールの掲載を快くご許可いただきありがとうございます。

[Home] [戻る]


mailto:lepton@amy.hi-ho.ne.jp