これが定番！RAD Studioで実践する既存システムのモダナイズ
第34回 エンバカデロ・デベロッパーキャンプ

株式会社ドリームハイブ
代表取締役 山本 悟

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

はじめに 日々、新たな技術が生まれ、市場環境も変化し続けるIT業界。毎回新規開発ではキャッチアップも容易ではありません。そこで、既存システムをできる限り活用し、新規開発に比べてコスト削減・トラブル低減が見込める「モダナイゼーション」の手法が注目を集めています。今回、RAD Studioで既存アプリケーションをモダナイズする手法を、定番とも言えるいくつかのパターンを例に、デモを交えて紹介します。

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

モダナイゼーション

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

モダナイゼーションとは
 「モダナイゼーション」とは、従来のシステムを有効活用しながら、最新のテクノロジーに適合できるように最新化（現代化）することです
モダナイゼーションで期待される効果低コストで最新技術に適合本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

全リプレースによるリスクを回避

短期間で求める結果を実現
4

モダナイゼーションの一般的な手法

Rewrite
機能は変えずに書き直し。古いコードの移植にばかりこだわらずに、Delphiの生産性を活かして、書き直すことも手段のひとつ

Re-interface
古いアプリケーションは塩漬けにするものの、新しいシステムからアクセスできるようにインターフェイスを用意。中間サーバーはその解決策のひとつ

Re-host
稼働環境のみを移行。Delphiの場合、再コンパイルだけで新バージョンにという選択か？

Replace
古いシステム機能の一部を新しい技術で再構築。全体を作り直すのではないので、古いアーキテクチャで融通が利かない部分には有効な手段

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

5Re-host 稼働環境のみを移行。Delphiの場合、再コンパイルだけで新バージョンにという選択か？

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

Re-host
 何も手を入れず 古いソースを新しい環境でビルドしたい BDEをそのまま使いたい• (DB構成はそのまま)

 古いDelphiでビルドしたEXEを最新のWindows環境で動かしたい

問題の先り本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

7

Rewrite 機能は変えずに書き直し。古いコードの移植にばかりこだわ
らずに、Delphiの生産性を活かして、書き直すことも手段のひとつ

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

既存のVCLアプリケーション
 勤怠管理 VCL Windows C/Sアプリケーションです。
クライアントサーバー

アプリケーション
Windowsクライアント

Interbase

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

ソースコードが無いケースもあります。
当時のコンポーネントが無い

9

勤怠管理アプリケーション(VCL) 勤怠システムの画面（Delphiで構築したWindowsアプリケーション）• 勤怠データ(メイン)• 社員管理マスター• 部署管理マスター

 使用機能等• データベース: InterBase

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

部署マスター

社員マスター

見積詳細テーブル

部署ID
部署名

部署ID
社員ID
氏名

社員ID
勤怠Status
日時10Re-interface
 古いアプリケーションは塩漬けにするものの、新しいシステムからアクセスできるようにインターフェイスを用意。中間
サーバーはその解決策のひとつ

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

さまざまなDB接続モダナイゼーション
 既存のVCL少しの変更でさまざまなDBへのモダナイゼーション

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

さまざまなDBに接続の為のモダナイゼーション
 既存VCLのアプリケーションから更にさまざまなDB接続をしていく

部署マスター

社員マスター

見積詳細テーブル

部署ID
部署名

部署ID
社員ID
氏名

社員ID
勤怠Status
日時

既存DB

RAD Server

接続をちょい足し本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

13

勤怠管理システムに外部のDB接続
 既存の勤怠管理システムに会議室管理システムDB接続• 直接接続するのはセキュリティに問題がある 中間サーバーを立てる事により勤怠管理システムと分離

RAD Server

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

会議室予約システムDB

14

中間サーバーを立てる事により勤怠管理システムと分離
 RAD Server側のシステム構築
会議室予約システムDB

RAD Serverはシンプルな構成で中間サーバーを構築できます

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

15

中間サーバーを立てる事により勤怠管理システムと分離
 コード
procedure TKaigiResource1.Get(const AContext: TEndpointContext; const ARequest: TEndpointRequest; const
AResponse: TEndpointResponse);var
mm: TMemoryStream;
begin// Sample code
mm := TMemoryStream.Create;
FDConnection1.Connected := True;
FDTable1.Active := True;
FDSchemaAdapter1.SaveToStream(mm, TFDStorageFormat.sfJSON);
mm.Position := 0;
AResponse.Body.SetStream(mm,'application/json', True);end;

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

16

データモジュールにTEMSFireDACClientの追加
 クライアント側データモジュールにコンポーネントを追加• TEMSProvider, TEMSFireDACClient, TFDSchemaAdapter,
TFDTableAdapter, TFDMemTable, TDataSource
データモジュール

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

RAD Server

17勤怠管理システムに会議室情報を表示
 勤怠管理システムに会議室画面を追加

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

18

印刷方法のモダナイゼーション
 既存のVCL少しの変更でさまざまな帳票を出力するモダナイゼーション

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

印刷方法のモダナイズ• 既存のVCLアプリにPDF出力機能を追加• スマートフォンで印刷するの？

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

20

Replace 古いシステム機能の一部を新しい技術で再構築。全体を作り直すのではないので、古いアーキテクチャで融通が利かない部分には有効な手段

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

クラウド接続でモダナイゼーション
 既存VCLのアプリケーションから• RAD Server + Enterprise Connect• クラウドDB接続をしていく

部署マスター

社員マスター

見積詳細テーブル

部署ID
部署名

部署ID
社員ID
氏名

社員ID
勤怠Status
日時

既存DB

RAD Server
RAD Serverを利用しEnterprise Connecter側のデータを間接的にデータ取得する事でセキュリティ担保本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

22

まとめ
 Rewrite• 既存VCLアプリ DelphiでRewrite Re-interface• RAD Serverを用いた 既存VCLでさまざまなDBと接続• Fast Reportを使いモダンな印刷方法

 Replace• （仮）FireDAC + Enterprise Connecterを使い既存VCLでクラウドデータを処理本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

23

THANKS!
www.embarcadero.com/jp
第34回 エンバカデロ・デベロッパーキャンプ

本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。