Modernize Studio
言語:日本語
メールで相談

Delphiアプリを、ウェブへ移行する

Delphiは1990年代から2000年代にかけて業務ソフトウェアでよく選ばれた開発環境で、その頃のプログラムの多くが今も毎日使われています。BDE経由でParadoxやdBaseのテーブルを読んでいることも少なくありません。当方では、同じデータと同じルールのまま、SQLデータベースを使うウェブアプリに移行します。正確に設定されたパソコンがなければ動かない、という状態から抜け出せます。

なぜ今なのか

現在Delphiを保守しているEmbarcaderoは、Borland Database Engineを非推奨としています。ドキュメントには、BDEは今後改良されず、Unicodeに対応することもなく、新規開発に使うべきではないと明記され、FireDACへの移行が勧められています。それでも古いDelphiプログラムの多くは、今もBDE経由でParadoxやdBaseのテーブルを読み書きしています。

BDEは32ビットのWindowsと、ローカルネットワークでのファイル共有を前提に設計されました。共有ドライブ上のParadoxテーブルは、ロックファイルと、全パソコンで同一でなければならないBDE設定に依存しており、1台でも設定が違えばテーブルやインデックスが壊れることがあります。パソコンを入れ替えるたび、Windowsを新しくするたびに、手作業でのセットアップがまた一つ増えます。

  1. 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のタスクスケジューラーから起動されるプログラム。サーバー上の定期処理になります。

ウェブ版の画面

説明用の例、架空のデータ

在庫管理プログラムをWindows XP上のDelphiで作るとこう見えるという例と、同じデータをウェブアプリにしたもの。

つまみをドラッグするか、矢印キーを使ってください。

各部分の移行先

Delphiでは:フォーム(.dfm)とユニット(.pas)
ウェブアプリでは:ウェブページ(ロジックはサーバー側)
Delphiでは:BDE経由のParadoxまたはdBaseのテーブル
ウェブアプリでは:SQL ServerまたはMySQL(キーとリレーションシップつき)
Delphiでは:計算フィールドとルックアップフィールド
ウェブアプリでは:データベースまたはサービス内での計算と結合
Delphiでは:パソコンごとのBDEエイリアスと設定
ウェブアプリでは:サーバー上で設定する一つの接続
Delphiでは:QuickReportやFastReportの帳票
ウェブアプリでは:サーバーが作成するPDF文書
Delphiでは:全員で共有するネットワークドライブ
ウェブアプリでは:データベースが管理する同時アクセス

移行の進め方

  1. 48時間以内の診断

    プログラムとデータフォルダー(ParadoxやdBaseのファイル、またはデータベースのバックアップ)と、お手元にあればソースコード(.dpr、.pas、.dfm)をお送りください。48時間以内に書面の診断書でお答えします。現在のプログラムの働き、リスクのありか、ウェブ版の構成、パイロットモジュールの固定価格、残りの部分の見積もりです。無料で、何の義務も生じません。

  2. パイロットモジュール

    実データのコピーを使って、アプリの一部分、通常はいちばんよく使われる部分を作ります。残りを決める前に、社員の方に日々の業務で使っていただきます。

  3. 同じデータで、同じ結果

    同じレコードをDelphiプログラムと新しいアプリの両方で処理し、在庫数、合計、印刷される書類を照合します。見つけた業務ルールはすべて自動テストにもし、その後のリリースのたびに改めて確認します。すべての確認結果を記した報告書をお渡しします。

  4. 30日間の並行稼働

    アプリ全体が完成したら、Delphiプログラムも30日間並行して使います。違いがあれば旧プログラムが残っているうちに見つかり、合意した価格の範囲内で修正します。

よくある落とし穴と、その対処

  1. BDEとParadoxの動き方

    Paradoxのテーブルは、ロックファイル、ネットワーク上で共有する制御ファイル(PDOXUSRS.NET)、そしてLOCAL SHAREのように全パソコンで一致していなければならないBDE設定に依存しています。インデックスの破損や「Table is busy」エラーはよくあることです。移行前に修復できるものは修復し、読めないレコードはご報告します。

  2. 文字コード

    BDEはテーブルの言語ドライバーで決まるコードページでテキストを保存しますが、Delphi 2009以降はUnicode文字列を使います。アクセント付きの文字や記号は移行でつまずきやすい部分なので、テーブルごとに文字コードを確認し、変換後のテキストのサンプルを御社と一緒に照合します。

  3. データセットのイベントに隠れたロジック

    BeforePost、OnValidate、OnCalcFieldsに書かれたルールは、レコードの保存や表示のたびに目立たず実行され、フォームだけを見ていると見落としがちです。コードからイベントハンドラーをすべて洗い出し、それぞれが適用しているルールを一覧にします。

  4. 計算フィールドとルックアップフィールド

    テーブルにはなくプログラムの中だけにあるフィールドが、保存されたデータのように画面やレポートに表示されます。これらを計算値として再現し、元の値と照合します。

  5. ソースコードのないコンポーネント

    サードパーティー製パッケージの中には、特定のDelphiバージョン向けにコンパイル済みユニットとして購入されたものがあります。プログラムが表示ではなく計算にそれを使っている場合は、結果から動作を再構成し、両方のプログラムに同じデータを処理させて確認します。

  6. 日付と数値の書式

    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プログラムも手元に残しておき、実際の業務で結果を確かめられます。この期間に見つかった差異は、合意した価格の範囲内で修正します。

お問い合わせ

ご都合のよい方法をお選びください。1営業日以内に、日本語でメールにてお返事します。

メールで

riccardo@modernizestudio.com
メールを書く

プログラムとデータフォルダー(テスト用データでも構いません)か、何をしているかの簡単な説明をお送りください。1営業日以内にご返信します。

ファイルをお送りください

Access、Excel、VB6、Delphi、古い.NETで作られたプログラムなら、ファイル送付後48時間以内に無料の診断書をお届けします。

  1. ファイルのコピーを作成します。テスト用データでもかまいません。
  2. フォームまたはメールに添付します。パスワード付きの圧縮ファイルにし、パスワードは別送するのがおすすめです。ご希望があれば、先に秘密保持契約を結びます。
  3. 48時間以内に、診断書とパイロットモジュールの固定価格をお届けします。

イタリアを拠点に活動しています。

メッセージを送る

任意。データベース、Excelブック、スクリーンショット、仕様書など、10 MBまで。それより大きいファイルは、ダウンロードリンクをメッセージに記載してください。

メールで相談

ボタンを押すと、メッセージが入力された状態でメールソフトが開きます。メールソフトで「送信」を押すまで送信されません。

メールで相談