Windowsデスクトップアプリケーションの構築において、他のフレームワークとDelphiを比較するには、どのようなアプローチを採ればよいのでしょうか。エンバカデロでは、Delphi、WPF .NET Framework、Electronの3つをWindowsデスクトップアプリケーション構築の観点で比較するホワイトペーパー「ベンチマークで検証!ベスト開発フレームワークとは」の執筆を委託しました。同書で使用したベンチマークアプリケーションは、Windows 10 Calculator(電卓)のクローンですが、3名のDelphi MVP(Most Valuable Professionals)の有志、1名のフリーランスのWPF開発者、1名のフリーランスのElectron開発者のエキスパートによって、それぞれのフレームワークによって再構築しています。
このブログ記事では、ホワイトペーパーで紹介されている「データベースアクセス」メトリックについて説明します。ベンチマークアプリケーションのCalculatorではデータベースを使用していないため、ここで紹介するのは、一般的なフレームワーク自身の評価になります。
Table of Contents
データベースアクセス
フレームワークにデータベースアクセスをサポートするネイティブライブラリが搭載されているかは、重要な指標です。データの永続性は、多くのアプリケーションにとって不可欠であり、ユーザーフレンドリーな設計、優れた開発フレームワークとの統合は必須要件となります。
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 ドライバーID | Seattle (10.0) | Berlin (10.1) | Tokyo (10.2) | Rio (10.3) | Sydney (10.4) |
---|---|---|---|---|---|---|
SAP Advantage Database | ADS | v 8.0 – 10.1 | v 8.0- 12.0 | v 8.0 – 12.0 | v 8.0 – 12.0 | v 8.0 – 12.0 |
SAP SQL Anywhere | ASA | v 5.0 – 12.0 | v 5.0 – 16.0 | v 5.0 – 16.0 | v 5.0 – 16.0 | v 5.0 – 16.0 |
IBM DB2 Server | DB2 | v 8.2 – 9.7 | v 8.2 – 9.7 | v 8.2 – 9.7 | v 8.2 – 9.7 | v 8.2 – 9.7 |
Firebird | FB | v 1.5 – 2.5 | v 1.5 – 2.5 | v 1.5 – 2.5 | v 1.5 – 3.0 | v 1.5 – 3.0 |
InterBase | IB | v 6.0 – XE7 | v 6.0 – XE7 | v 6.0 – 2017 | v 6.0 – 2017 | v 6.0 – 2020 |
IBM Informix | Infx | v 8.0 – 11.7 | v 8.0 – 11.7 | v 8.0 – 12.1 | v 8.0 – 12.1 | v 8.0 – 12.1 |
MongoDB | Mongo | v 3.0 | v 3.0 | v 3.0 | v 3.0 | v 3.0 |
Microsoft Access | MSAcc | 95 – 2010 | 95 – 2010 | 95 – 2015 | 95 – 2015 | 95 – 2015 |
Microsoft SQL Server | MSSQL | 2000 – 2008 | 2000 – 2008 | 2000 – 2016 | 2000 – 2017 | 2000 – 2017 |
MySQL Server | MySQL | v 3.21 – 5.5 | v 3.21 – 5.6 | v 3.21 – 5.7 | v 3.21 – 6.x | v 3.21 – 8.0 |
MariaDB | MySQL | n/a | n/a | v 5.5 – 10.1 | v 5.5 – 10.3 | v 5.5 – 10.3 |
Oracle Server | Ora | v 8.0 – 11.2 | v 8.0 – 12.1 | v 8.0 – 12.1 | v 8.0 – 12.1 | v 8.0 – 12.1 |
PostgreSQL | PG | v 7.4 – 9.1 | v 7.4 – 9.5 | v 7.4 – 9.5 | v 7.4 – 10.0 | v 7.4 – 12.0 |
PostgreSQL Enterprise Server | PG | v 9.2 | v 9.2 | v 9.2 | v 9.2 | v 9.2 |
SQLite | SQLite | v 3.0 – 3.8.7 | v 3.0 – 3.9.2 | v 3.0 – 3.9.2 | v 3.0 – 3.23.1 | v 3.0 – 3.31.1 |
Teradata | TData | v 13.0 – 15.0 | v 13.0 – 15.0 | v 13.0 – 15.0 | v 13.0 – 15.0 | v 13.0 – 15.0 |
Generic ODBC sources | ODBC | v 2.0 – 3.0 | v 2.0 – 3.8 | v 2.0 – 3.8 | v 2.0 – 3.8 | v 2.0 – 3.8 |
以下は、FireDAC ODBC Bridgeドライバーを使用して接続テストを行ったデータベースの一覧です。
データベース | バージョン |
---|---|
SAP Adaptive Server Enterprise | v 15.0 |
IBM DB2 AS/400 | n/a |
QuickBooks | v 16.0 |
InterSystems Cache | 2014 |
Pervasive SQL | v 10.0 |
DBase | n/a |
Excel | n/a |
MicroFocus Cobol | n/a |
Ingres Database | n/a |
SAP MaxDB | n/a |
Clarion | n/a |
SolidDB | n/a |
Unify SQLBase | n/a |
FireDACに加えて、Delphi / RAD Studioでは、さまざまな商用ないしはオープンソースのデータベースアクセスソリューションを提供しているサードパーティエコシステムが存在します。例えば、ATOZED SoftwareのCrossTalkなどのサードパーティソリューションを用いれば、Delphi / C++から、.NETライブラリにアクセスすることもできます。
WPF .NET Framework
WPFでは、C#コードを介してデータベースへの接続、クエリ、エントリが可能なADO.NETエンティティフレームワークを含む、データベースライブラリへのアクセスをサポートしています。Microsoft .NET Frameworkでは、以下のデータプロバイダーのみを提供しています。
- .NET Framework Data Provider for SQL Server
- .NET Framework Data Provider for OLE DB
- .NET Framework Data Provider for ODBC
- .NET Framework Data Provider for Oracle
- .NET Framework Data Provider for SQL Server Compact 4.0
ホワイトペーパーでは、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つの開発フレームワーク比較の詳細は、ホワイトペーパー「ベンチマークで検証!ベスト開発フレームワークとは」(日本語版)をダウンロードしてご覧ください。
関連記事
この記事で紹介したホワイトペーパーに関連するブログ記事は、いくつも公開されています。
- 公開!ホワイトペーパー「ベンチマークで検証!ベスト開発フレームワークとは」
- DelphiはWPFやElectronと比較して劇的な生産性向上を実現
- Delphiビジュアル開発手法はWPF、Electronと比較して5倍の生産性を発揮
- Delphiが提供するApp Storeへのスピード配置機能がWPFとElectronを大きくリード
- Delphiは、変化の激しいElectronやすでに古い技術となってしまったWPF .NET Frameworkと比較して、長期的な実現可能性を提供
また、この記事で言及したFireDACによるデータアクセス手法を解説した入門記事も公開されています。