今回も、Enterprise Article Challengeの素晴らしい寄稿を紹介します。Alberto Fornés氏は、RAD Studio / Delphiを活用して構築した「アップル追跡システム」です。これは、収穫したりんごを農場から消費者まで追跡するもので、「アップル」と言っても、あのAppleのことではありませんから、お間違えなく。🤪 実際、Albertoは、このジューシーな話で追跡した商品は、むしろオレンジがメインであったと言っています。
Table of Contents
Delphiプログラマーになった経緯
プログラミング言語にDelphiを選択したのは、ずっと前のことです。学生時代(専門は農業工学)、どんな演習でもコンピュータを使った計算をするのが大好きで、今でもSpectrum(ZX Sinclair 48, 48k)で初めて組んだプログラムのことをよく覚えています。
ウィークリープログラミングコレクティブルに申込んだところ、数週間後、DelphiのCD(たぶんバージョン1か2だったと思います)が届きました。たちまち、この言語のとりこになり、アプリ構築のスピードと効率性に魅せられてしまいました。専門知識を蓄えて、プログラミングを専業にするようになって以来、私の仕事における「定数」は、(僅かな例外を除き)Delphiであり、ほとんどのバージョンを使用してきました。
Delphiの用途
勤務先のMESURASOFT社で大半の時間取り組んできたプログラムは、青果物倉庫を管理するプログラム(製品名「KeepTrack」)です。
最初にエンタープライズ開発に使用したDelphiのバージョン
最初に使用したのはDelphi 7で、Accessデータベースを使って開発しました。しかし、そのシステムは長く続かず、私たちはすぐに、InterBaseをベースとしたFirebirdを用いて、クライアント/サーバー型のデータベースにアップグレードしました。
使用した機器
当時は、PALM社製PDAを使っていました。組んだプログラムのメモリ容量は12kでしたが、この機器は申し分ない働きをしました。また、これらのPDA用に、プログラム(私の記憶が正しければ、Pocket Studio)も作成しており、プログラミング言語としてPascalを使用しています。PDAとの通信およびデータの読取りに必要な同期処理プログラムのDLLも、Delphiでプログラミングしました。
Delphiによる倉庫在庫追跡の手法
当時、青果物を載せたパレットの追跡作業はバーコードで行っていましたが、RFID技術のことが話題にのぼるようになりました。そこで、自社用システムの構築を決め、入庫時にパレットの内部に装着するRFIDタグを設計しました。
情報はICチップ上に記録され、パレットの移動はリーダーとアンテナを介して追跡することができました。アンテナから読み取ったデータを収集するソフトウェアは、Delphiを用いて、Windowsサービスとしてプログラミングしました。 このプログラムは、タグの読取りに応じて、シリアルポート方式でパイロットランプ・ブザー警報を発する機能を担っていました。 このシステムは、若干の変更を加え、現在も使われています。
システムの特徴
このシステムは、入荷の登録、保管青果の動き、施した処理など、倉庫のあらゆる側面を網羅していました。システムを使用する倉庫作業員の数が増える中、システムは問題なく対応していました。こうした倉庫では、ラベリングが、顧客、出荷先、商品ごとに頻繁に変わるため、ラベルをデザインし、プログラム自体に組み入れるためのコンポーネントを、Delphiで作成しました。この機能を用いて、ユーザーは、各自のニーズに応じてラベルをデザインしたり、ラベル上のデータを注文書のデータと関連づけることができます。
選択できる付属コンポーネントの数が多いだけでなく、独自のコンポーネントを作成して、開発の可能性を広げ、自身のプログラムを適切に整備できる点は、私が最も気に入っているDelphiの特徴の一つです。選択肢が多すぎると、どのコンポーネントを使用すべきか、判断が難しいこともしばしばです。そして私はいつも、変更が必要になることを見据えて、ソースコードを保有することを推奨しています。このようにして、私たちは、PCからも、モバイルデバイスからも、送られてきた注文書を工業用プリンタで印刷し、印刷した注文書をWi-Fiで送信することができるようになったのです。
Delphiで解決したエンタープライズ開発における他の課題
対応すべき別の課題は、倉庫到着時の青果物積載トラックの重量を測定することでしたが、(もちろん)Delphiで開発しました。シリアルポートから測定値を取得後、各パレットをRFIDタグで識別、その重量を記録しました。同様の流れを既成のパレット上でも行っています。
作業員の経験を向上させ、仕事をしやすくするために、私たちは業務別に特定のプログラムを開発しています。タッチスクリーンを使用する必要がある場合には、指での入力や情報表示のフォームを調整しました。Delphiに搭載されている豊富なコンポーネントのおかげで、この要件も難なくクリアできました。使用したコンポーネントの中でも、数多くのスクリーンで使用した2つのオープンソースコンポーネントTVirtualStringTreeとTVirtualDrawTreeは、美しく滑らかな外観を与えてくれることを特記しておきたいと思います。
95、XP、7などWindowsの新しいバージョンが登場しても、このプログラムは見事に動作しました。この点も私がDelphiを気に入っている理由です、OSが変わってもアップグレード作業はほとんど必要ありません。Delphiの新バージョンが出たときも同様のことが言えます。新バージョンでもビルドできるようにするために、ほとんどコード変更する必要がないのです。
ASP.NETでアプリを動作させたいという要求にも対応
プログラム開発に専念する人は誰でも、継続的改善と新機能の追加の必要性を知っています。ある会社から、Webブラウザからクォリティコントロールを実行して、PCやタブレット、スマートフォンから入力できないだろうかと相談を受けました。最初、コントロール機能は、私たちが固定データを使って作成しましたが、まもなく、変更が頻繁に行われるという現場の事情から、ユーザー自身で作成できることが必要であるという認識に至りました。
これを行うために、私たちは、コントロール構造をDelphiプログラムから定義し、Webサーバー(IIS + ASP.NET) が動的に生成したhtmlページを提供するというシステムを構築しました。このWebシステムを通じて、倉庫の在庫をブラウザに表示させることができ、各保管ポイントにある商品を確認できるようになりました。
採用した技術やツール
私たちは常にDelphiを用いて課題の解決に取り組みました。 オープンソースライブラリ Delphi MVC Frameworkの登場によって、動的なクォリティコントロールページを提供するWindowsサービスを作成することができ、JWTを用いたユーザー検証を実装しました。このライブラリを使用すれば、ログの生成が可能となり、エラーの検出やアクティビティの確認に役立ちます。このライブラリは、長年Delphiに搭載されてきたWebBrokerをベースにしてきましたが、MVCフレームワークを用いることで、プログラム構造をさらに整備して、大きな成果を上げ、よりモダンなソフトウェアアーキテクチャを実装することが可能になりました。その後、在庫変動や青果物の動きをリアルタイムで確認できる機能を追加しています。同じサービスを通じて、在庫に変動があると、変動情報は、WebSocketを介して接続されたWebクライアントに送信されます。
エンタープライズプロジェクトで採用した他のコンポーネント
Delphiアプリケーション内では、 前述のTVirtualDrawTreeコンポーネントを使って、ユーザーにクォリティコントロールデザインフォームを表示させていますが、とても良好に動作し、使用において高い柔軟性を発揮します。このコントロールは、TWebBrowser
コンポーネントを用いて、プログラム内に表示させます。
かなり以前に、古いPALM社製デバイスをWindows Mobile(.NET + C#)でプログラムしたPDA用に変更、データベースサーバーに直接接続したところ、意に反して、幾つかの問題を生じました。しかし、これらの問題も、データベースアクセスをRESTサーバーを通じて接続する方法に変更すると、解消されました。これもDelphi MVCフレームワークで開発したサービスです。
サービスに追加した別の機能は、バーコードリーダーから送信される読取り値です。 ここでの通信はTCP/IPプロトコルによるため、Indyライブラリの TIdTCPClient コンポーネントを採用しました。この追加機能により、読取り情報を受信できるだけでなく、リーダーのディスプレイに確認やその他のデータを送信することもできます。
その他にDelphiと相性のよいコンポーネントやライブラリを挙げるとすれば、バーコード、TChartで作成したグラフ、PDFエクスポートを含む任意のレポートを設計できるFastReport 、プログラムのユーザーに対してhtmlヘルプを可視化し、優れたGUIスクリーンを実現できるHTMLコンポーネントライブラリがあります。
これらは、私個人のプログラムでも検証しています。詳細なソフトウェア製品ドキュメント(https://www.ticdoc.info)は、現在、スペイン語のみですが、他の言語にも更新されることを願っています。 同プログラムでは、ダイアグラムエディタ機能を組み込むことができるTMS Diagram Studioと、コードエディタ機能を組み込むためのオープンソースコンポーネント、 TSynEditも採用しています。同プログラムは無償ダウンロード可能です。
現在使用中のツール
最後に、スタイルや新しいコントロール用いることで、プログラムの視覚的側面を改善する必要があって、Delphi 7からDelphi 10.3 Rioに移行したことを付言しておきます。プログラムをコンパイルするためにほとんど変更を必要としなかったことは驚きでした。この点も、私がDelphiの採用を薦める理由のひとつです。私にとって、Windowsでデスクトッププログラムを開発する上で、Delphiは比類なき味方です。これまで、どんな課題でも解決してきたのですから。
この記事は、Enterprise Article Showcaseへ投稿されたものです。RAD Studio、Delphi、C++Builderと関連技術を用いて構築した開発プロジェクトの成功事例をお持ちの方は、ぜひご連絡ください。詳細はこちらをご覧ください。
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition