その1
世の中にリレーショナルデータベースは数々ありますが、そのうちフリーで使えるものの中で、筆者はSQLiteが好きです。有名なところでMySQLはいろいろなCMSでも標準的にサポートされていたりしますが、いろいろな機能が用意されているだけに扱いが面倒です。
その点SQLiteは楽です。特にExcelのバックで動かすデータベースとしては最適だと思います。その理由は以下の通りです。
1.セットアップやメンテナンスが不要
PCで使うときにはダウンロード、インストールで即使用可能になります。
Excel VBAから使うときも、DLLをダウンロードしてくれば、それだけで使う準備完了です。
2.サーバが不要
アプリケーションローカルで使用できます。もちろんサーバに単にファイルを置くというのもありですヨ。
3.データ型がない
というのは言い過ぎですが、誤解を恐れずにいうと、型は、文字列と数値だけです。型変換などで悩む必要はありませんね。基本的に数値以外は文字列にすればOKです。
4.ひとつのファイルで完結
したがってバックアップもひとつのファイルをコピペするだけです。
5.SQL92に準拠
基本的にすべてのSQLが使えます。
6.OSを選ばない
WindowsでもMACでも同じファイルを使えます。以前はPDAでも、WindowsPCと同じファイルでデータを共有したことがあります。
7.GUIで直接操作できるツールもあります
Windows/MACともフリーソフトがあります。筆者はSQLite Database Manager を愛用しています。
8.Excel VBAから操作するためのDLLもあります
ExcelからSQLiteにアクセスするためには、ODBCを経由する方法がありますが、あらかじめデータベースファイルを作成しておく必要がありデータベースへの接続設定なども必要ですので、Excelアプリケーションから操作するには不向きだとおもいます。特に自分が使うものでないときには、使い勝手が悪いですね。
おすすめの方法は、DLLを組込む方法です。筆者のおすすめは、dhSQLiteです。このDLLの使い方などはそのうち別記事で紹介したいと思っています。今すぐ知りたい方は、ネットを検索してみてくださいね。
9.書込みが重なると、エラーになることがあります
読み込みは大丈夫ですが、同時に同じレコードを更新しようとしたりすると、エラーになったり、あとのほうが待たされたりします。実際にデータベースファイルに書き込んでいる時間は、通常10〜数十msecだとおもわれますので、書込みが重なることはマレですけどね。実際10〜15人が同時にアクセスするシステムで使用したことがありますが、特に問題になったことはありません。
その2
Excelは非常にいいアプリです。PCを買ってくれば、最初からOfficeが入っていて、当然Excelも使えるようになっていたりしますよね。したがってたいていの会社ではExcelはほぼすべての人がひととおり使えるようになっています。
データの入力や加工が容易で、データ分析したり、グラフを作ったりが簡単にできます、
筆者が最も気に入っているところは、その操作性もさることながら、Windows上で動くほぼすべての種類のアプリを開発できるところです。しかしExcel単独でアプリを作ると、データ件数が多くなるにつれて、起動時間や動作時間が長くなってきます、項目数やデータの文字数によって全然違いますが、感覚的にはデータが一万件をこえるとそのスピードが気になってきます。
そこで筆者は、業務システムとして使うときには、Excelとデータベースを連携してシステムを開発するようにしています。フロントエンド(ユーザとのインターフェース)として、入出力は使い慣れたExcelを使い、バックエンドではデータベースを動かす、というやり方です。そのメリットは以下のようなものがあります。
1.検索が簡単、速い
SQLクエリを使うことにより、複雑な検索も簡単に実行可。データ量が増えてもExcelほど検索スピードへの影響は大きくない。
2.データと処理の分離
処理は、VBAで、データはデータベースの中に、と分離できるので、処理変更やバージーョンアップ時にはワークブックだけ変更すればよい。
3.Excelワークブックの起動が速い
データが増えてもワークブック自体のサイズは変わらないので起動が遅くならない。
4.ユーザにやさしい
ユーザから見えるのはExcelだけ。使い慣れているのですぐ使える。