データベースアクセスは、Delphi / C++Builderが得意とする分野です。最新のDelphi / C++Builderでは、FireDACと呼ばれる共通データベースアクセスコンポーネントを使って、多様なデータソースへのアクセスをサポートしています。そこで本ブログでは、Delphi / C++Builderをある程度使用したことのある方をを対象として、FireDACの基本的な利用方法を解説していきます。
第1回のテーマ
- データベースアクセスとは
- Delphi/C++Builderで利用できるDBコンポーネント
- FireDACを選択する理由
Table of Contents
データベースアクセスとは
最近は、多くの企業で在宅勤務への移行を検討する傾向が強く、それに伴ってテレワークの需要も増加してきています。そして自宅からセキュアなアクセスが可能なクラウドシステムへの切り替えや導入を行っている企業も今後増えていくことが考えられます。
クラウドシステムのバックグラウンドを支えているデータベースは、システムを構成する最重要な基幹、すなわち必要不可欠な存在です。
データベースアクセスとは、アプリケーションからデータベースへ接続するためのデータアクセス技術のことで、どんなコンピュータ言語で開発する場合もデータベースへアクセスするための手段を持っています。
データベースアクセスは、ライブラリやアクセスメソッド等で提供されており、これらを利用することでデータベースへ接続するアプリケーションが作成できます。
例えば、一般的なWindowsアプリケーションで広く普及しているODBC、ADOや、JavaプラットホームのJDBC、Microsoft .NET FrameworkのADO.NETなども、データベースアクセスの種類の一つです。
Delphi / C++Builderで利用できるDBコンポーネント
Delphi / C++Builderには、データベースへアクセスするためのライブラリが用意されており、それを「データベース(アクセス)コンポーネント」と呼んでいます。ただ、ここでは、便宜上その名称を「DBコンポーネント」と呼ぶことにします。
Delphi / C++Builderで利用可能なDBコンポーネントには、FireDACを除き、旧バージョンから用意されているものを含め以下のような種類があります。
※サードパーティ製品は除きます。
Delphi / C++Builderで提供しているDBコンポーネントは、以下のような特徴を持っています。
- ローコード開発
フォーム上にDBコンポーネントを配置し、プロパティの変更や必要なイベントを実装するだけで、比較的少ないコード量でデータベースアクセスが可能 - 単一のAPIからアクセスが可能
接続するデータベースごとに実装するコードが分ける必要はなく、同じ(単一)コードでデータベースアクセスが可能 - マルチデータベースのサポート
Oracle、MSSQLServer、DB2、PostgreSQL、MySQL、SQLite、InterBaseといった幅広いデータベースへのアクセスをサポート
上に挙げたDBコンポーネントの現状の機能について、簡単にまとめてみました。
DBコンポーネント名 | IBExpress | dbGo | dbExpress | BDE |
---|---|---|---|---|
エンバカデロのサポート状況 | ○ | ※1 | ※1 | × |
マルチデータベース対応 | InterBaseのみ | ※3 | ○ | ※2 |
マルチプラットホーム対応 | ○ | Windowsのみ | ○ | Win32のみ |
最新データベースバージョンのサポート | InterBaseのみ | ※3 | × | × |
BDEとの互換性 | × | × | × | – |
表1: FireDACを除くDBコンポーネントの機能一覧
上記の表が示すように
- 既に製品自体のサポートが終了
- 実行環境がWindows、Win32のみ等、動作プラットホームが限定される
- 最新のデータベースバージョンをサポートしていない
など、過去のDelphi / C++Builderバージョンでは問題なく利用できたDBコンポーネントでも最新バージョンのDelphi / C++Builderへ移行を行うと、現在の実行環境やニーズに適合していないため、アプリケーション拡張を阻害する要因になってしまいます。
もちろん、過去のDelphi / C++Builderバージョンで作成したプロジェクトをWindows 10へ移行することだけを目的として、最新のデータベースバージョンを利用しないといった限定的な条件であれば、引き続き利用できるDBコンポーネントもあります。
しかしながら、現在サポートが完全に終了しているBDEに関しては、そういうわけにはいきません。別のDBコンポーネントへの移行が必要です。ただ、BDEから別のDBコンポーネントへ移行を検討したとき、上記の中には、移行の工数に見合うような適切な選択肢がないため、推奨はしません。
FireDACを選択する理由
一方、FireDACは、もともとBDEの置き換えを目的のひとつに据えたエンタープライズ向けデータアクセスコンポーネントでした。
「AnyDAC」という名前でDA-SOFT社から販売されていたDBコンポーネントとしてスタートし、エンバカデロ・テクノロジーズが買収し、Delphi / C++Builder XE5から標準で搭載するようになり、その名称も「FireDAC」と改め、現在に至ります。
FireDAC(AnyDAC)は、以下の特徴を持っています。
- マルチデータベースのサポート
Oracle、MSSQLServer、DB2、PostgreSQL、MySQL、SQLite、InterBaseといった幅広いデータベースへのアクセスをサポートし、最新のデータベースバージョンにも対応しています。 - 広範なターゲットプラットフォームに対応
Win32, Win64, macOS, iOS, Android、Linuxなど - BDEとの互換性
データアクセスアーキテクチャが類似し、BDEからの移行が容易 - ハイパフォーマンスなデータアクセス
BDEと同等以上の実行パフォーマンス
FireDACを含む、現状のDelphi / C++Builderで利用可能なDBコンポーネントの機能をまとめた表は以下の通りです。
DBコンポーネント名 | IBExpress | dbGo | dbExpress | BDE | FireDAC |
---|---|---|---|---|---|
エンバカデロのサポート状況 | ○ | △※ | △※ | × | ○ |
マルチデータベース対応 | InterBaseのみ | △※ | ○ | △※ | ○ |
マルチプラットホーム対応 | ○ | Windowsのみ | ○ | Win32のみ | ○ |
最新データベースバージョンのサポート | InterBaseのみ | △※ | × | × | ○ |
BDEとの互換性 | × | × | × | – | ○ |
※△の詳細は、表1を参照してください。
表2: FireDACを含むDBコンポーネントの機能一覧
FireDACは、既存のDBコンポーネントと同じ特徴を持ちつつ、幅広いターゲットプラットフォーム、最新のデータベースバージョンをサポートしています。特に旧バージョンでBDEを利用したアプリケーションを構築している場合は、FireDACはBDEと互換性があり、親和性も高いため、移行に最も適したDBコンポーネントとなります。
次回は、FireDACの基本的な開発方法について解説していきます。