サイトアイコン Embarcadero RAD Studio, Delphi, & C++Builder Blogs

強力なデータベースアクセス機能の搭載により、DelphiはWPFやElectronよりも優位に

wp1 featured db access 2

Windowsデスクトップアプリケーションの構築において、他のフレームワークとDelphiを比較するには、どのようなアプローチを採ればよいのでしょうか。エンバカデロでは、Delphi、WPF .NET Framework、Electronの3つをWindowsデスクトップアプリケーション構築の観点で比較するホワイトペーパー「ベンチマークで検証!ベスト開発フレームワークとは」の執筆を委託しました。同書で使用したベンチマークアプリケーションは、Windows 10 Calculator(電卓)のクローンですが、3名のDelphi MVP(Most Valuable Professionals)の有志、1名のフリーランスのWPF開発者、1名のフリーランスのElectron開発者のエキスパートによって、それぞれのフレームワークによって再構築しています。

このブログ記事では、ホワイトペーパーで紹介されている「データベースアクセス」メトリックについて説明します。ベンチマークアプリケーションのCalculatorではデータベースを使用していないため、ここで紹介するのは、一般的なフレームワーク自身の評価になります。

データベースアクセス

フレームワークにデータベースアクセスをサポートするネイティブライブラリが搭載されているかは、重要な指標です。データの永続性は、多くのアプリケーションにとって不可欠であり、ユーザーフレンドリーな設計、優れた開発フレームワークとの統合は必須要件となります。

DelphiがWPF、Electronよりも優位に立つ点は、FMXフレームワークを用いることで、単一のソースコードセットを、すべての主要デスクトップ/モバイルプラットフォーム向けにバイナリコードとして実装でき、顧客へのリーチの最大化と、コードの重複やメンテナンス/アップグレードの労力の最小化が可能になることです。産業オートメーション用ロジックコントローラから世界規模の在庫管理システムに至るあらゆる規模のプロジェクトをサポートし、データベース負荷の大きいバックエンドからGUIクライアント側までの各層のアプリケーション構築をサポートしています。そして、Delphiの標準ライブラリでは、ほとんどすべてといっていいほどの種類のデータベースへの容易なアクセスが可能で、すべてのプラットフォーム上でOS機能へのアクセス、I/Oデバイスやハードウェアセンサーなどの利用にも対応しています。

WPF .NET Frameworkは、直接的にはWidowsコンピュータをターゲットとしています。WPFは主にクライアント側のデスクトップアプリケーションにフォーカスしたフレームワークですが、中間層やバックエンドのC#で実装したロジックや、ADO .NETエンティティフレームワークによるデータベースアクセスなどを利用することもできます。WPFでは、.NETライブラリ経由でWindows OS機能やI/Oデバイスへのアクセスも可能ですが、ネイティブコードではなく、マネージドコードにコンパイルされます。

Electronは、Chromiumブラウザベースで、すべてのデスクトップOSをターゲットとしたオープンソースフレームワークです。Electronは通常、Web中心のクライアント側アプリケーションにフォーカスしており、中間層やバックエンドの機能にはnode.jsを使用します。Electronでは、node.jsプロセスを介してハードウェアへのアクセスに対応しますが、node.jsライブラリを通して公開されているOS機能にのみアクセスすることができます。

それでは、各フレームワークの詳細を見ていきましょう。

Delphi

Delphiには、利用可能なほとんどすべての種類のデータベースに接続可能な複数のデータベースライブラリが搭載されています。データベースアクセス、クエリ、データの表示は、コンポーネントを用いてスムーズに統合されており、これは無料のCommunity Editionや、有償版のエントリーエディションであるProfessional版でも同様です。ホワイトペーパーではDelphiとWPFのスコアが同じですが、Delphiには、より統合されたツールチェーンと数多くのデータベースサポートが提供されています。

FireDACは、多様なエンタープライズデータベースへ接続できるマルチデバイス対応の共通データアクセスライブラリです。
その強力な共通アクセスアーキテクチャにより、FireDACは、Delphi / C++Builderアプリケーションから、InterBase、SQLite、 MySQL、SQL Server、Oracle、PostgreSQL、DB2、SQL Anywhere、Advantage DB、Firebird、Access、Informix、DataSnapなどのデータベース、さらにはNoSQLデータベースのMongoDBにも、高速なネイティブアクセスを提供します。

FireDACは、強力なデータアクセスをサポートするにもかかわらず、データアクセスを抽象化し、シンプルなアクセスが可能なアクセスレイヤーであり、実際の業務で使用される高負荷なアプリケーションの要求を満たすあらゆる機能を提供しています。

FireDACは、データベース固有の機能へのアクセスや高いパフォーマンスを犠牲にすることなく、多様なデータベースバックエンドにアクセスできる共通APIを提供します。FireDACを用いれば、PC、タブレット、スマートフォン向けのWindows、macOS、iOS、Androidアプリケーションで(Delphiの場合、さらにLinuxでも)、データアクセスがサポートされます。

以下は、FireDACでサポートされているすべてのデータベースの一覧です。このリストには、RAD Studioの各リリースでサポートされているデータベースバージョンが記載されています。

データベースFireDAC ドライバーIDSeattle (10.0)Berlin (10.1)Tokyo (10.2)Rio (10.3)Sydney (10.4)
SAP Advantage DatabaseADSv 8.0 – 10.1v 8.0- 12.0v 8.0 – 12.0v 8.0 – 12.0v 8.0 – 12.0
SAP SQL AnywhereASAv 5.0 – 12.0v 5.0 – 16.0v 5.0 – 16.0v 5.0 – 16.0v 5.0 – 16.0
IBM DB2 ServerDB2v 8.2 – 9.7v 8.2 – 9.7v 8.2 – 9.7v 8.2 – 9.7v 8.2 – 9.7
FirebirdFBv 1.5 – 2.5v 1.5 – 2.5v 1.5 – 2.5v 1.5 – 3.0v 1.5 – 3.0
InterBaseIBv 6.0 – XE7v 6.0 – XE7v 6.0 – 2017v 6.0 – 2017v 6.0 – 2020
IBM InformixInfxv 8.0 – 11.7v 8.0 – 11.7v 8.0 – 12.1v 8.0 – 12.1v 8.0 – 12.1
MongoDBMongov 3.0v 3.0v 3.0v 3.0v 3.0
Microsoft AccessMSAcc95 – 201095 – 201095 – 201595 – 201595 – 2015
Microsoft SQL ServerMSSQL2000 – 20082000 – 20082000 – 20162000 – 20172000 – 2017
MySQL ServerMySQLv 3.21 – 5.5v 3.21 – 5.6v 3.21 – 5.7v 3.21 – 6.xv 3.21 – 8.0
MariaDBMySQLn/an/av 5.5 – 10.1v 5.5 – 10.3v 5.5 – 10.3
Oracle ServerOrav 8.0 – 11.2v 8.0 – 12.1v 8.0 – 12.1v 8.0 – 12.1v 8.0 – 12.1
PostgreSQLPGv 7.4 – 9.1v 7.4 – 9.5v 7.4 – 9.5v 7.4 – 10.0v 7.4 – 12.0
PostgreSQL Enterprise ServerPGv 9.2v 9.2v 9.2v 9.2v 9.2
SQLiteSQLitev 3.0 – 3.8.7v 3.0 – 3.9.2v 3.0 – 3.9.2v 3.0 – 3.23.1v 3.0 – 3.31.1
TeradataTDatav 13.0 – 15.0v 13.0 – 15.0v 13.0 – 15.0v 13.0 – 15.0v 13.0 – 15.0
Generic ODBC sourcesODBCv 2.0 – 3.0v 2.0 – 3.8v 2.0 – 3.8v 2.0 – 3.8v 2.0 – 3.8

以下は、FireDAC ODBC Bridgeドライバーを使用して接続テストを行ったデータベースの一覧です。

データベースバージョン
SAP Adaptive Server Enterprisev 15.0
IBM DB2 AS/400n/a
QuickBooksv 16.0
InterSystems Cache2014
Pervasive SQLv 10.0
DBasen/a
Exceln/a
MicroFocus Coboln/a
Ingres Databasen/a
SAP MaxDBn/a
Clarionn/a
SolidDBn/a
Unify SQLBasen/a

FireDACに加えて、Delphi / RAD Studioでは、さまざまな商用ないしはオープンソースのデータベースアクセスソリューションを提供しているサードパーティエコシステムが存在します。例えば、ATOZED SoftwareのCrossTalkなどのサードパーティソリューションを用いれば、Delphi / C++から、.NETライブラリにアクセスすることもできます。

WPF .NET Framework

WPFでは、C#コードを介してデータベースへの接続、クエリ、エントリが可能なADO.NETエンティティフレームワークを含む、データベースライブラリへのアクセスをサポートしています。Microsoft .NET Frameworkでは、以下のデータプロバイダーのみを提供しています。

ホワイトペーパーでは、WPF .NET Frameworkでもデータベースアクセスについて高いスコアを獲得していますが、これはODBCサポートによるものです。上記以外のデータプロバイダーは、サードパーティから入手することになります。ただし、必要なさまざまなライブラリをインストールし、最新の状態になるようメンテナンスしていく労力が追加でかかることになります。

Electron

Electronには、ネイティブデータベースアクセスライブラリは含まれていません。つまり、データベースアクセスに必要な機能を含む場合、それらすべてを単一のパッケージでインストールすることはできません。Electronでは、NodeJS経由でデータアクセスが可能となり、JavaScript実装を含む、サーバーおよびサーバーレスデータベースを利用するための複数のオープンソースライブラリを利用できます。ただし、必要なさまざまなデータベースライブラリをインストールし、最新の状態になるようメンテナンスしていく労力がかかることになります。

以下は、ElectronでNodeJSからOracleデータベースに接続するために必要な作業を説明した記事です。

https://docs.oracle.com/en/cloud/paas/exadata-express-cloud/csdbp/connect-node-js.html

データベース接続パッケージは、以下のようにパッケージマネージャー経由で利用することもできます。

https://www.npmjs.com/package/mssql

3つのいずれのフレームワークでも、ほぼすべてのデータベースにアクセスするためのなんらかの方法が用意されています。ただし、Delphi / RAD Studioには、3つのフレームワークの中では最も豊富なサポートが提供されるデータベースアクセス機能が付属しています。加えて、このデータベースアクセスコンポーネントはDelphiに標準で付属しているため、必要なサードパーティライブラリをインストールし、最新の状態になるようにメンテナンスしていくという労力はかかりません。Delphiには、オプションで使用できるサードパーティのデータベースアクセスコンポーネントの豊富なエコシステムもあります。WPF .NET Frameworkはレガシーフレームワークであり、Microsoftによれば、出荷されるデータプロバイダーは5つのみです(公平を期すために、ODBCを介して多くのデータベースにアクセスできることを付記しておきます)。Electronには、データベースアクセスコンポーネントは付属していませんが、NodeJSエコシステムを用いることができます。ただし、その維持のために追加の労力がかかることを忘れてはいけません。総括すると、Delphiが、他の2つのフレームワークよりも多くのデータベースに即対応可能であり、より柔軟で統合されたツールチェーンを提供していると言えます。

3つの開発フレームワーク比較の詳細は、ホワイトペーパー「ベンチマークで検証!ベスト開発フレームワークとは」(日本語版)をダウンロードしてご覧ください。

関連記事

この記事で紹介したホワイトペーパーに関連するブログ記事は、いくつも公開されています。

また、この記事で言及したFireDACによるデータアクセス手法を解説した入門記事も公開されています。

モバイルバージョンを終了