Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
C++Delphiデータベース

基礎から学べるFireDACデータアクセス再入門(第1回)

データベースアクセスは、Delphi / C++Builderが得意とする分野です。最新のDelphi / C++Builderでは、FireDACと呼ばれる共通データベースアクセスコンポーネントを使って、多様なデータソースへのアクセスをサポートしています。そこで本ブログでは、Delphi / C++Builderをある程度使用したことのある方をを対象として、FireDACの基本的な利用方法を解説していきます。

第1回のテーマ

  • データベースアクセスとは
  • Delphi/C++Builderで利用できるDBコンポーネント
  • FireDACを選択する理由

データベースアクセスとは

最近は、多くの企業で在宅勤務への移行を検討する傾向が強く、それに伴ってテレワークの需要も増加してきています。そして自宅からセキュアなアクセスが可能なクラウドシステムへの切り替えや導入を行っている企業も今後増えていくことが考えられます。

クラウドシステムのバックグラウンドを支えているデータベースは、システムを構成する最重要な基幹、すなわち必要不可欠な存在です。

データベースアクセスとは、アプリケーションからデータベースへ接続するためのデータアクセス技術のことで、どんなコンピュータ言語で開発する場合もデータベースへアクセスするための手段を持っています。

データベースアクセスは、ライブラリやアクセスメソッド等で提供されており、これらを利用することでデータベースへ接続するアプリケーションが作成できます。

例えば、一般的な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コンポーネントの機能一覧

※1 サポートは継続中ですが、不具合発生時の修正の優先度は高くありません。
※2 ODBC接続を除くと原則Paradox、dBaseのみ接続可能。ただし現在は動作保証外
※3 動作/挙動はADOに依存し、最新データベース対応状況もそれに準拠。エンバカデロでは未検証

上記の表が示すように

  • 既に製品自体のサポートが終了
  • 実行環境が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の基本的な開発方法について解説していきます。

 

基礎から学べるFireDACデータアクセス再入門

データベースアクセスは、Delphi / C++Builderが得意とする分野です。最新のDelphi / C++Builderでは、FireDACと呼ばれる共通データベースアクセスコンポーネントを使って、多様なデータソースへのアクセスをサポートしています。

そこで本連載では、FireDACの基本的な概念の理解から使い方、さらには応用方法までを学習できる記事を提供。Delphi / C++Builderでの開発経験はあるけれど、FireDACについては詳しくない。あるいは、今回データベースアプリケーションを構築するのに、どのような技術があるのかを知りたい。こんな悩みを抱えている方に最適なシリーズです。

バックナンバーはこちら


Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

IN THE ARTICLES