【E5】Delphiテクニカルセッション「DelphiによるEnterpriseアプリケーション開発～ 当社パッケージの内部構造、開発方法ご紹介」
株式会社エンハンサー
代表取締役 藤田 和宏

アジェンダ• はじめに• Enterpriseアプリケーションの特徴・課題• 当社パッケージ概要• 当社パッケージ構造• Delphiによる実装方法• まとめ2

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

「DelphiによるEnterpriseアプリケーション開発」

はじめに

3

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

はじめに• 本セッションは…
• 28thのSAP連携と同様、枯れた機能を使用した事例です• 当社パッケージ開発での課題と対応をご説明します• 課題解決の最適解とは限りません• 他セッションと併せていただく事で、「何か作れそうな気がする」という感覚を持っていただければと考えています。
4

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

「DelphiによるEnterpriseアプリケーション開発」

ENTERPRISEアプリケーションの特徴・課題

5

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

Enterpriseアプリケーションの特徴・課題

6

ライフサイクル

関連システム

監査対応

IT基盤の統合

配布方法

新技術への対応

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

Enterpriseアプリケーションの特徴・課題 ライフサイクル

7

長期間使用

担当交代

追加開発

•5～10年使
われる

•人事異動
や退職

•機能追加が前提

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

Enterpriseアプリケーションの特徴・課題 関連システム
基幹との連携• 単独では存在意義がない

8

直DBアクセス禁止• システム連携は専用API• 直DBアクセスはライセンス違反の可能性あり

異なるOS、DB• 直DBアクセス可の場合でも、そのDBは色々本文書の一部または全部の転載を禁止します。本文書の著作権は、著作者に帰属します。

Enterpriseアプリケーションの特徴・課題 監査対応

9

権限設定

ログ取得

• 機能毎の権限設定• データの値で権限設定• チェック機能も必要• 全ての操作を記録する• 使用機能• データ変更• 分析機能も必要

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

Enterpriseアプリケーションの特徴・課題 IT基盤の統合

APIの整備ユーザ認証•一般的方式による接続が求められる•入力/出力の両方が求められる•認証基盤の使用が求められる10

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

Enterpriseアプリケーションの特徴・課題 配布方法
対象ClientPC

同時に稼働するシステム• BtoCほどではないが多い。
• 異なるOS、バージョン対応が求められる• 同一クライアント上で異なるシステムの動作が求められる• 勤怠や旅費精算システ
ム

11

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

Enterpriseアプリケーションの特徴・課題 新技術への対応
サーバ環境• オンプレからクラウドへ

12

マルチデバイス• Windowsだけ
ではない• Desktop、Noteだけではない

その他色々• ビッグデータ• IOT…

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

Enterpriseアプリケーションの特徴・課題

担当交代
追加開発
13

• 引き継ぎが不十分でも、改修や作り直しが容易な構造でなければならない。

• 機能の追加・改修・廃止が容易にできなければならない。
• 作業を複数名で分担して実施できなければならない。

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

「DelphiによるEnterpriseアプリケーション開発」

当社パッケージ概要

14

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

当社パッケージ概要
アミューズメント業界向け
固定資産管理システム

データ量

初版
• 2006年リリース• DB直接アクセスの2層• DBはInterbase• 主要マスタ件数： 27万件
• 主要トランザクション件数： 159万件

最新版
導入件数
• 30店舗15• DataSnapでの3層• DBはPostgreSQL

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

「DelphiによるEnterpriseアプリケーション開発」

当社パッケージ構造

16

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

当社パッケージ初版

DB• データ管理• 権限管理17

クライ
アント• DB接続• 権限管理• データの取得• 各種業務ロジック• 取得データの描画• ログ取得• データ更新指示

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

当社パッケージ最新版

サーバ

DataSnap• データの取得• 取得データの描画• データ更新指示※業務ロジックなし• DB接続• 権限管理• ログ取得• 各種業務ロジック
18

クライ
アント

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

Delphiによる実装方法– メニュー– 機能（ワークフロー）• サブ機能（承認）• サブ機能（一覧）• サブ機能（詳細）19

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

Delphiによる実装方法– ピボットによる分析– 選択項目をグラフ化

20

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

当社パッケージ構造 初版

MENU

機能別ページ
サブ機能

DB

サブ機能
•
サブ機能21••

プログラムが巨大になり見通しが悪い
作業の分担に不都合
コーディングルール違反でスパゲティ化しやすい

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

当社パッケージ構造 最新版 クライアント

MENU

機能別ページ

全体用
接続用

サブ機能
サブ機能用
サブ機能
サブ機能用
サブ機能
サブ機能用
画面デザインの変更影響が少ないため、作業分担が容易
22

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

サブ機能毎に画面、ロジック、データ処理を分離→作業分担が容易→追加開発が容易→不具合が局所化

当社パッケージ構造 最新版 サーバ
DB
全体用

DB接続用

接続用
DB

サブ機能用サブ機能用

機能毎に独立しているため変更影響が限定的で、作業分担が容易
23

サブ機能用

SAP接続用システム
連携用

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

データ仮想化レイヤを入れるべきでした当社パッケージ構造 構想版 サーバ
DB
DB接続用

全体用
接続用

DB

サブ機能用
サブ機能用

サブ機能用

24

データ仮想化
レイヤ

SAP接続用システム
連携用

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

当社パッケージ構造 移行中

MENU

機能別ページ

DB

サブ機能
サブ機能サブ機能サブ機能用

機能を切り出して…

25

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

当社パッケージ構造 移行中

MENU

機能別ページ

DB

サブ機能
サブ機能
接続用
サブ機能
サブ機能用

DataSnap化

26

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

「DelphiによるEnterpriseアプリケーション開発」

DELPHIによる実装方法

27

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

Delphiによる実装方法• 当社パッケージの構造を簡略化したサンプル– サーバのデータを取得する簡単なアプリケーション– 画面とロジックを分離– DataSnapを使用
28

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

サンプル•••••••

29

メニュー: TCategoryPanelGroup
機能毎の画面: TPageControl
サブ機能の画面: TFrame
サブ機能毎の処理: TDataModule
接続: TSQLConnection
DB接続： FireDAC
DataSnapでサーバに接続

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

Delphiによる実装方法• フレーム– サブ機能の画面に使用します。
– フォームに貼り付けて使用します。
– フォーム上のコンポーネントとして動作するので、OnCreate、OnDestoryがありません。
30

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

Delphiによる実装方法• データモジュール– サブ機能のロジックに使用します。
– クライアントではデータの描画用加工等が中心– サーバでは業務ロジックの適用が中心

31

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

Delphiによる実装方法• DataSnap Server– サーバで必要なコンポーネントと、初期設定が行われたプロジェクトを作成。

32

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

Delphiによる実装方法（デモ）

機能変更
クライアント作成②

サーバ作成• 仕様変更を想定• 表示部分の変更• ロジックの変更• DataSnapの設定• クライアントに実装したロジックを、サーバを使用する3層に書き換える• DataSnap Serverを作成• フォームアプリケーション

クライアント作成①• アプリケーションの作成• 2層を想定しクライアントにロジックを実装する

33

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

「DelphiによるEnterpriseアプリケーション開発」

まとめ34

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

まとめ• 「見た目」と「ロジック」は分離しましょう• Delphiの古い機能で簡単に分離できます– DataModule– Frame– Action• VCLとFMXの互換性に注意しましょう– 業務ロジックと描画関係はしっかり分離– ComponentによってはVCL専用だったりします– 当社はVCL中心なので問題少ないですが…
35

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

自己紹介会社
••
•

名前URL
主な事業

私株式会社エンハンサー
http://www.enhancer.co.jp
AMO（未稼働システムの改修サポート含む）
DWHパッケージ導入支援
アミューズメント業界向けパッケージ開発

以前はあまり営業活動をしない会社でしたが…
今年は、増員したので頑張って営業中！！

36••••

名前
役職
EmailFacebook

藤田 和宏
代表取締役
kazuhiro.fujita@enhancer.co.jp
https://www.facebook.com/kazuhiro.fujita.92•

略歴 1994年

パソコン通信にはまる
Turbo Pascalに出会い初の業務アプリ開発
Delphiに出会い、開発の容易さに驚愕
C++Builderに出会う
DWH導入支援開始
自社パッケージリリース(C++Builder)
DataSnap導入(Delphi)
法人成り

1996年
1997年
2002年
2006年
2008年
2010年

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

Thank you!