今回のEnterprise Article Challengeの記事は、Didier Cabalé氏の投稿で、長期間にわたって利用されている大規模プロジェクト「SCULi」のWindowsアプリケーション開発についてです。SCULi」は、Liebherr社の建設、海上、採掘用機械の診断とメンテナンスの根幹を担うシステムで、すべてDelphiで記述されており、17年前に産声をあげて以来、Windows OSの数々の変更やRAD Studioの進化の中で、着実に歩みを続けています。これこそがDelphiの真髄で、静かに、しかし堅固に、高い信頼性を発揮して、確実に動作し続けています。このような実績を上げている開発ツールは、実際、他には見当りません。6000を超えるLiebherrの社内外ユーザーが、日々、SCULiを使用しています。
Table of Contents
SCULiエンタープライズ開発とは?
「SCULi」は、「Service Client Universal」の略語で、Liebherr社の建設機械、海上クレーン、採鉱用製品の開発、製造およびサービス工程で使用されています。このシステムを用いて、Liebherr電子デバイスまたは ECU(電子制御装置)上で定期メンテナンスの診断と実施を行っています。
SCULiは、「シンプルな」診断ツールというだけでなく、様々なサービスの提供が可能な統合システムです。各種機能や通信プロトコルといったサービスが、いわゆる拡張を通じて、統合されています。
SCULiの機能
搭載されている各種機能の一例です。
エンジン用
その他のSCULiエンタープライズ開発ダッシュボード
- ポンプコード(省略)
- エラーメモリ
- シリンダーカットオフ
- クリックテスト(省略)
- 抽気
- 圧縮試験
- DPEフィルターのメンテナンス
- エンジン全体図と主要な関連変数を表示する数十個のグラフィカルツール
エンジン コントローラ / マシン コントローラ用
マシンコントローラ用
- モジュール情報(省略)
- ファイル転送
- モニタリングエミュレータ
「拡張機能」のライブラリは、SCULi プログラムの一部で、関数ブリックを参照します。その役割は、以下のとおりです。
- 「エンジン」型コントローラへの特定の接続
- 「マシン」型コントローラへの特定の接続
- コントローラから抽出されたメッセージ
- メッセージデータベースの検索と表示
- コントローラの個別インターフェイスとモニター
- 写真等、プログラムのリソース
- アプリケーションのフレームワーク
- 任意のマシン / エンジン用の自社製識別システム「Liquid」
- アプリケーションのイベントブローカー
SCULiは、世界各地で、6000を超えるLiebherrの社内外ユーザーに活用されています。
車上制御および遠隔操作が可能です。
SCULiエンタープライズ開発のアーキテクチャ
ターゲットシステムは、Windows 7~Windows 11です。
以前は、ライセンス認証には設定可能なMarx製ドングルを使用していました。現在は独自のアクセス管理システムを運用中で、これには証明書の保存とライセンスファイル用にハードウェアドングルが必要となります。構築したライセンスシステムは、ターゲットのECUの識別子パターン(LiUIP)に対するユーザーレベルに応じて、機能の有効化 / 無効化します。
SCULiエンタープライズ開発におけるMicrosoft COMの役割
COM アーキテクチャは、アプリケーションの主骨格から拡張機能を切り離すことができます。これにはいくつかのメリットがあります。
- Liebherr子会社間で分散開発を可能にする
- 統合テストを可能にする
- スクリプトでSCULiへのコマンドを実行できる
COMとDelphiの統合方法
Delphiで.tlb ファイルを作成、編集します。
そして、*TLB.pas インターフェイスソースファイルに変換することで、プロジェクト全体で使用できるようになります。
SCULi と ECU ハードウェア間の通信方法
2014年以前は、SCULi と ECUの間の通信レイヤは、フレームワーク拡張の一部でした。ECUの種類に従って、異なる通信プロトコルに準拠しなければなりませんでした。
2014以降、ECUとの通信は、外部の特殊レイヤMComに一任されています。
- ロギング / エラートラッキングシステム: SmartInspect と EurekaLog
- 翻訳:POEdit と DXGetText
- セットアップ: Inno Setupでビルド
- プロジェクト規模:1000あまりのユニットファイル
SCULi開発にDelphiを選んだ理由
SCULi プロジェクトは2006年にスタートしました。当時、Delphiは、堅牢で高速なWin32 アプリケーション構築のための最有力候補でした。また、Delphiは、当時、 私たちが目指していたCOMベースのアーキテクチャに対して開発が可能な、最も有力な候補でした。
さらに、Delphiには、あらゆる機能を網羅した広範なサードパーティ製ライブラリが用意されていました。2009年に、プロジェクト全体をDelphi 2009に移行しました。
採用したサードパーティ製ライブラリ
採用したサードパーティ製ライブラリの一覧
- DCPCrypt2 DISQLite3 GDIPlus Indy10
- JCL + JVCL
- Python for Delphi
- RE (Regular Expression) TeeChart-Pro
- TMS
- TurboPower Virtual TreeView wPDF
- XML Parser (destructor.deから)
SCULiエンタープライズ開発プロジェクトを振り返って
2023年、プロジェクト開始から17年後の今も、Delphiは、生成されたバイナリのコンパクトさとスピード、柔軟でパワフルなコンポーネントセットという強みによって、Win32 アプリケーション構築ツールとして市販されている他の開発ツールを凌駕し続けています。Delphi 2009からDelphi次世代バージョンへの移行によって、開発者の生産性の向上を実現(多数の言語機能の強化)しました。その開発能力の可能性は、Win32プラットフォームにとどまらず、幅広いプラットフォーム (Android、Linux、macOS、iOSなど)に対しても発揮されることでしょう。
この記事は、Enterprise Article Showcaseへ投稿されたものです。RAD Studio、Delphi、C++Builderと関連技術を用いて構築した開発プロジェクトの成功事例をお持ちの方は、ぜひご連絡ください。詳細はこちらをご覧ください。