なぜ今なのか
現在Delphiを保守しているEmbarcaderoは、Borland Database Engineを非推奨としています。ドキュメントには、BDEは今後改良されず、Unicodeに対応することもなく、新規開発に使うべきではないと明記され、FireDACへの移行が勧められています。それでも古いDelphiプログラムの多くは、今もBDE経由でParadoxやdBaseのテーブルを読み書きしています。
BDEは32ビットのWindowsと、ローカルネットワークでのファイル共有を前提に設計されました。共有ドライブ上のParadoxテーブルは、ロックファイルと、全パソコンで同一でなければならないBDE設定に依存しており、1台でも設定が違えばテーブルやインデックスが壊れることがあります。パソコンを入れ替えるたび、Windowsを新しくするたびに、手作業でのセットアップがまた一つ増えます。
- Windows 10マイクロソフトのサポート終了
移行する内容
プログラムと、それが依存するデータファイル。どんな状態であっても対応します。
フォームとデータ連動コントロール
.dfmファイルのフォーム(
TDBGrid、TDBEdit、TDBLookupComboBox、メイン/サブの構成)。同じ項目、同じ作業順のウェブページになります。Paradox、dBase、InterBaseのデータ
BDE経由で読むテーブル、またはInterBase、Firebird、SQL Server、Oracleなどのデータベース。データをSQL ServerまたはMySQLに移し、キー、インデックス、リレーションシップを保ちます。
データモジュールと業務ロジック
TDataModuleユニットのコード、BeforePostやOnCalcFieldsなどのデータセットイベント、計算フィールドとルックアップフィールド。これらのルールをサーバー側のサービスにまとめます。レポート
QuickReport、ReportBuilder、Rave Reports、FastReportの帳票。イベントにコードを持つものも含みます。同じ内容のPDF文書になります。
サードパーティー製コンポーネント
DevExpress、TMS、InfoPower、RxLibなどのパッケージのグリッド、エディター、ユーティリティ。特定のDelphiリリースに縛られていることがよくあります。プログラムが実際に使っている機能を確認します。
インポート、エクスポート、定期処理
他システムとのテキストやCSVのやり取り、会計事務所向けのエクスポート、Windowsのタスクスケジューラーから起動されるプログラム。サーバー上の定期処理になります。
ウェブ版の画面
- ダッシュボード
- 品目1,284
- 入出庫
- 仕入先
- レポート
| 電線 H07V-K 1.5 mm²、青EL-10215 · A-03-2 | 1,850 m | |
| ブレーカー C16 1P+NEL-20431 · B-01-4 | 46 個 | 最低在庫未満 |
| ジョイントボックス 100×100EL-30112 · B-02-1 | 312 個 | |
| LEDパネル 60×60、36 WEL-40877 · C-05-3 | 18 個 | 最低在庫未満 |
| 漏電遮断器 40 A 30 mAEL-20455 · B-01-5 | 27 個 | |
| 電線管 20 mm、グレーEL-50310 · A-07-1 | 940 m | |
| コンセント 16 AEL-60204 · B-03-2 | 9 個 | 最低在庫未満 |
| コード | 品名 | 保管場所 | 在庫数 | 最低 | 単位 |
|---|---|---|---|---|---|
| EL-10215 | 電線 H07V-K 1.5 mm²、青 | A-03-2 | 1,850 | 500 | m |
| EL-20431 | ブレーカー C16 1P+N | B-01-4 | 46 | 60 | 個 |
| EL-30112 | ジョイントボックス 100×100 | B-02-1 | 312 | 100 | 個 |
| EL-40877 | LEDパネル 60×60、36 W | C-05-3 | 18 | 24 | 個 |
| EL-20455 | 漏電遮断器 40 A 30 mA | B-01-5 | 27 | 20 | 個 |
| EL-50310 | 電線管 20 mm、グレー | A-07-1 | 940 | 300 | m |
| EL-60204 | コンセント 16 A | B-03-2 | 9 | 40 | 個 |
在庫管理プログラムをWindows XP上のDelphiで作るとこう見えるという例と、同じデータをウェブアプリにしたもの。
つまみをドラッグするか、矢印キーを使ってください。
各部分の移行先
- Delphiでは:フォーム(.dfm)とユニット(.pas)
- ウェブアプリでは:ウェブページ(ロジックはサーバー側)
- Delphiでは:BDE経由のParadoxまたはdBaseのテーブル
- ウェブアプリでは:SQL ServerまたはMySQL(キーとリレーションシップつき)
- Delphiでは:計算フィールドとルックアップフィールド
- ウェブアプリでは:データベースまたはサービス内での計算と結合
- Delphiでは:パソコンごとのBDEエイリアスと設定
- ウェブアプリでは:サーバー上で設定する一つの接続
- Delphiでは:QuickReportやFastReportの帳票
- ウェブアプリでは:サーバーが作成するPDF文書
- Delphiでは:全員で共有するネットワークドライブ
- ウェブアプリでは:データベースが管理する同時アクセス
移行の進め方
48時間以内の診断
プログラムとデータフォルダー(ParadoxやdBaseのファイル、またはデータベースのバックアップ)と、お手元にあればソースコード(.dpr、.pas、.dfm)をお送りください。48時間以内に書面の診断書でお答えします。現在のプログラムの働き、リスクのありか、ウェブ版の構成、パイロットモジュールの固定価格、残りの部分の見積もりです。無料で、何の義務も生じません。
パイロットモジュール
実データのコピーを使って、アプリの一部分、通常はいちばんよく使われる部分を作ります。残りを決める前に、社員の方に日々の業務で使っていただきます。
同じデータで、同じ結果
同じレコードをDelphiプログラムと新しいアプリの両方で処理し、在庫数、合計、印刷される書類を照合します。見つけた業務ルールはすべて自動テストにもし、その後のリリースのたびに改めて確認します。すべての確認結果を記した報告書をお渡しします。
30日間の並行稼働
アプリ全体が完成したら、Delphiプログラムも30日間並行して使います。違いがあれば旧プログラムが残っているうちに見つかり、合意した価格の範囲内で修正します。
よくある落とし穴と、その対処
BDEとParadoxの動き方
Paradoxのテーブルは、ロックファイル、ネットワーク上で共有する制御ファイル(
PDOXUSRS.NET)、そしてLOCAL SHAREのように全パソコンで一致していなければならないBDE設定に依存しています。インデックスの破損や「Table is busy」エラーはよくあることです。移行前に修復できるものは修復し、読めないレコードはご報告します。文字コード
BDEはテーブルの言語ドライバーで決まるコードページでテキストを保存しますが、Delphi 2009以降はUnicode文字列を使います。アクセント付きの文字や記号は移行でつまずきやすい部分なので、テーブルごとに文字コードを確認し、変換後のテキストのサンプルを御社と一緒に照合します。
データセットのイベントに隠れたロジック
BeforePost、OnValidate、OnCalcFieldsに書かれたルールは、レコードの保存や表示のたびに目立たず実行され、フォームだけを見ていると見落としがちです。コードからイベントハンドラーをすべて洗い出し、それぞれが適用しているルールを一覧にします。計算フィールドとルックアップフィールド
テーブルにはなくプログラムの中だけにあるフィールドが、保存されたデータのように画面やレポートに表示されます。これらを計算値として再現し、元の値と照合します。
ソースコードのないコンポーネント
サードパーティー製パッケージの中には、特定のDelphiバージョン向けにコンパイル済みユニットとして購入されたものがあります。プログラムが表示ではなく計算にそれを使っている場合は、結果から動作を再構成し、両方のプログラムに同じデータを処理させて確認します。
日付と数値の書式
ParadoxやdBaseの日付フィールド、昔2桁で入力された年、Windowsの地域設定によって変わる小数点記号は、データをSQLデータベースに移す際にどれも明示的な処理が必要です。インポート中に見つかった異常を一覧にし、御社と相談しながら解決します。
価格とお支払い
診断
無料
書面で、48時間以内
パイロットモジュール
€1,000–1,500
通常。着手時50%、検収時50%
お支払い条件
着手時に50%、検収時に50%をお願いしています。残金は本番稼働とソースコードの引き渡しの前にお支払いいただきます。大きなプロジェクトは、合意したフェーズごとのお支払いになります。
診断は無料です。先に進まないと決めた場合も、診断書はお手元に残り、費用は一切かかりません。
価格は固定で、作業開始前に書面で合意します。作業内容が変わる場合は新しい見積書をお送りし、ご承認をいただいてから追加作業に入ります。
全面移行の場合、一般的な開発会社の見積もりより40〜60%低い価格を目標にしています。オフィス費用も営業部門もない小さなスタジオだからこそ可能です。
価格は税抜です。
テストで裏付けた、実際の移行
NorthwindはマイクロソフトがAccessに同梱していたサンプルデータベースで、当方の顧客ではありません。公開されているコピーをSQLiteとPostgreSQLに移行し、すべてのテーブルとクエリを自動テストで元データと比較したうえで、その結果をもとに動くウェブアプリを構築しました。事例には数値を、同等性報告書にはすべての確認項目を掲載しています。
NorthwindはAccessのデータベースですが、Delphiでも同じ方法で進めます。移行し、同じデータで元のプログラムと結果を比べ、新旧を並行して動かします。

よくある質問
DelphiプログラムがネットワークドライブのParadoxテーブルを使っています。データを移行できますか?
できます。ParadoxやdBaseのファイルを直接読み込んでSQL ServerまたはMySQLに変換し、移行の前後でレコード数と合計を照合します。破損したレコードは黙って捨てず、ご報告します。
新しいバージョンのDelphiに移行するだけではだめですか?
それも選択肢で、プログラムによってはそれが妥当な場合もあります。アプリはWindowsプログラムのまま、BDEをFireDACに置き換え、コードを最新にします。どのブラウザからでも使え、各パソコンへのインストールが不要であることが必要なら、ウェブアプリのほうが合っています。どちらも成り立つ場合は、診断で両者を比較します。
ソースコードがありません。問題になりますか?
必ずしも問題にはなりません。使用中のプログラム、データファイル、操作の様子を録画したものから作業できます。ソースコードがあれば診断はより正確になり、情報が足りない点はその旨をはっきりお伝えします。
どのバージョンのDelphiに対応していますか?
1990年代初期のBorland版から現在のEmbarcadero版まで、どのバージョンで書かれたプログラムにも対応します。バージョンが主に影響するのは文字列の扱いと使えるコンポーネントで、診断書に記載します。
ウェブアプリでFirebirdやInterBaseのデータベースを使い続けられますか?
ほかのプログラムがまだそのデータベースに依存しているなら可能です。ウェブアプリは同じデータベースに接続し、データベースの変更は後日行うことも、行わないこともできます。
30日間の並行稼働では何をするのですか?
社員の方は新しいアプリで仕事をしながら、Delphiプログラムも手元に残しておき、実際の業務で結果を確かめられます。この期間に見つかった差異は、合意した価格の範囲内で修正します。
その他のサービス
すべてのサービス- 古いソフトウェアの刷新Access、Excel VBA、VB6、Delphi、古い.NETをウェブ向けに作り直す
- Microsoft Accessからウェブアプリへテーブル、クエリ、フォーム、レポート、VBAを、SQL ServerまたはMySQL上のウェブアプリに移行します。
- Excel VBAからウェブアプリへマクロ、ユーザーフォーム、連動するシートを持つブックを、複数人で使えるウェブアプリにします。
- VB6アプリの移行Visual Basic 6のプログラムを、ソースコードの有無にかかわらずC#とウェブへ移行します。
- 古い.NETアプリの刷新WinFormsやASP.NET Web Formsのアプリを、使える部分は活かしながらASP.NET Coreへ移行します。
お問い合わせ
ご都合のよい方法をお選びください。1営業日以内に、日本語でメールにてお返事します。
メールで
riccardo@プログラムとデータフォルダー(テスト用データでも構いません)か、何をしているかの簡単な説明をお送りください。1営業日以内にご返信します。
ファイルをお送りください
Access、Excel、VB6、Delphi、古い.NETで作られたプログラムなら、ファイル送付後48時間以内に無料の診断書をお届けします。
- ファイルのコピーを作成します。テスト用データでもかまいません。
- フォームまたはメールに添付します。パスワード付きの圧縮ファイルにし、パスワードは別送するのがおすすめです。ご希望があれば、先に秘密保持契約を結びます。
- 48時間以内に、診断書とパイロットモジュールの固定価格をお届けします。
イタリアを拠点に活動しています。