あなたの Delphi デスクトップアプリケーションが、
Linux でも動きます。
FMXLinux をインストールすると、sgcUI の FireMonkey コントロールが Linux64 の実際のデスクトップアプリケーションで動作します。Windows や macOS で配布しているものと同じフォーム、同じコードで、見た目も同じです。
- Delphi
- FireMonkey
- FMXLinux
- Linux64
- Ubuntu 22.04 以降
Delphi のデスクトップ開発者にとって、Linux は常に難しいプラットフォームでした。コンパイラは Linux64 を対象にできますが、ビジュアルなアプリケーションには FireMonkey が必要で、Linux 上の FireMonkey には FMXLinux アドオンが必要です。これまで sgcUI が Linux64 で提供していたのは、データモデル、インポートとエクスポート、PNG や SVG へのヘッドレスレンダリングといった、ビジュアルではない部分だけでした。
それが今日から変わります。FMXLinux を IDE にインストールすれば、sgcUI の FireMonkey コントロールが Linux64 でコンパイルして実行できます。データグリッド、チャート、ゲージ、ダッシュボード、プランナー、マップ、ダイアグラムなど、スイート全体が対象です。この記事のスクリーンショットはすべて Ubuntu 上で撮影したもので、Windows や macOS で動くものと同じデモプロジェクトを使っています。
1 分でわかる Linux64 上の sgcUI。Ubuntu で動作している実際のデモを録画しました。YouTube でも公開中。
コントロールだけでなく、フルアプリケーションも
UI スイートを評価する最良の方法は、完成したアプリケーションを見ることです。sgcUI Suite デモはまさにそれで、それぞれが十数個の製品を組み合わせ、ナビゲーション、ライブデータ、複数のページを備えた 1 つのプログラムになっています。そのすべてが、変更なしで Linux64 上で動作します。
トレーディングデスク
Markets デモには、毎秒約 1,000 件の更新を送り込むシミュレーターがあります。ウォッチリストグリッドは価格の変動に合わせて赤と緑に点滅し、ローソク足チャートにはボリンジャーバンド、移動平均、出来高、RSI のペインが表示され、セクターのツリーマップが市場の動きを示します。
工場の制御室
Factory デモは、ボトリングプラントの HMI です。OEE カード、7 セグメントのボトルカウンター、アニメーションするコネクターを備えたラインのプロセスフロー、アナンシエーターパネル、円形とリニアのゲージ、アラーム上限と下限を持つ 12 個のセンサーのライブトレンドを表示します。
Fleet、ERP、Project Portfolio
Fleet デモは、スペインとポルトガルの地図上で 48 台の車両を追跡し、ルート、停車地、車両グリッド、アラート一覧を表示します。ERP デモは、KPI カード、チャート、ゲージ、顧客マップを並べたダッシュボードで始まり、顧客、計画、レポート、分析のページへと続きます。Portfolio デモは、12 件のプロジェクトと 520 件のタスクをクリティカルパス付きのガントチャートでスケジューリングします。
sgcUI が Linux デスクトップにもたらすもの
sgcUI は、1 つのコア、1 つのテーマエンジン、1 つの作法を共有するネイティブ UI 製品のスイートです。Linux64 では、スイート全体の FireMonkey コントロールを利用できます。
- sgcGrid:ライブフィード、データセット、大規模なテーブル向けのデータグリッドです。並べ替え、グループ化、集計、フィルター行、検索パネル、Excel エクスポートを備えています。
- sgcCharts:ビジネスチャートとライブストリーム向けの 21 種類のシリーズです。折れ線や棒から、ローソク足、ツリーマップ、ファネルまで揃っています。
- sgcGauges:目標、機械、制御室向けの 14 種類の計器です。
- sgcDashboard:数値を 1 つの画面に変えるタイルと KPI カードです。
- sgcPlanner:1 つのデータモデルで動くスケジューラー、ガント、カンバンです。
- sgcPivotGrid:フィールドリスト付きのピボットテーブルとピボットチャートです。
- sgcMaps:マーカー、ルート、オフラインタイルに対応したネイティブマップです。
- sgcDiagram:データを描画するダイアグラムエディターとレイアウトです。
- sgcNavigation、sgcToolbar、sgcEditors、sgcWizard:サイドバー、タブ、ツールバー、ステータスバー、入力コントロール、複数ステップのフォームなど、アプリケーションを支える部品です。
- sgcSpreadsheet、sgcRichEdit、sgcReports、sgcPDF、sgcChat:スプレッドシート、リッチテキスト、レポート、PDF ドキュメント、チャットをアプリケーション内で利用できます。
グリッドについては、専用の画像を用意しました。Ubuntu 上で 100,000 行を表示している FilterAndFind デモで、ヘッダーのフィルターボタン、フィルター行、“Ask the grid” ボックスが見えます。マウスホイールで滑らかにスクロールでき、Ctrl+End を押すと一気に 100,000 行目へ移動します。
必要なもの
- Delphi 13 の Enterprise または Architect。Linux64 コンパイラが含まれています。
- GetIt からインストールする FMXLinux アドオン。有効なサブスクリプションを持つ Enterprise と Architect のお客様が利用できます。
- ソースコード付きの sgcUI エディション。FireMonkey ユニットは、お客様のプロジェクトと一緒に Linux64 向けにコンパイルされます。
- IDE からのビルドとデバッグに使う PAServer を備えた、実機または仮想の Linux マシン。アプリケーションには glibc 2.34 以降が必要なので、Ubuntu 22.04 以降と GTK3 を使用してください。
Linux64 上の sgcUI は、Ubuntu 22.04 と Ubuntu 24.04 で、Delphi 13 と FMXLinux 1.84 を使ってテストしています。
最初の Linux64 アプリケーションを作る
- GetIt から FMXLinux をインストールし、IDE を再起動します。
- Linux マシンで PAServer を起動し、IDE で接続プロファイルを作成して Linux SDK をインポートします。手順は通常の Delphi Linux64 プロジェクトと同じです。
- sgcUI の
Sourceフォルダーを Linux 64-bit のライブラリパス(ツール、オプション、言語、Delphi、ライブラリ)に追加し、コンパイラがそのプラットフォーム用の sgcUI ユニットを見つけられるようにします。 - FireMonkey アプリケーションを開くか新規作成し、プロジェクトウィンドウでターゲットプラットフォームの Linux 64-bit を追加して選択します。
- フォームに sgcUI コントロールを配置して実行します。IDE がプロジェクトをコンパイルし、PAServer 経由でデプロイして、Linux デスクトップ上で起動します。
Linux 専用のコードを書く必要はありません。次は Hello Grid クイックスタートの完全なソースです。デザイナーで 3 つの列を定義した、TsgcFMXGrid を 1 つ置いたフォームです。
uses
System.SysUtils, System.Classes, FMX.Types, FMX.Controls, FMX.Forms,
// sgc
sgcGrid_Data, sgcGrid_FMX;
procedure TfrmHelloGrid.FormCreate(Sender: TObject);
begin
{ BeginUpdate / EndUpdate repaint the grid once, after the last row }
Grid.Data.BeginUpdate;
try
{ AppendRow(Key, [City, Country, Population]) }
Grid.Data.AppendRow('Madrid', ['Madrid', 'Spain', 3416771]);
Grid.Data.AppendRow('Paris', ['Paris', 'France', 2102650]);
Grid.Data.AppendRow('Berlin', ['Berlin', 'Germany', 3755251]);
Grid.Data.AppendRow('Rome', ['Rome', 'Italy', 2749031]);
finally
Grid.Data.EndUpdate;
end;
end;
チャートも同じ要領です。TsgcFMXChart コントロールが TsgcChart コンポーネントを描画し、各シリーズもコンポーネントで、ここでは TsgcChartSeries_Line を使います。コードはポイントを追加するだけです。
uses
// sgc
sgcCharts_Chart, sgcCharts_Series, sgcCharts_FMX;
const
CS_VISITS: array [0 .. 6] of Integer = (420, 515, 480, 610, 590, 380, 350);
procedure TfrmHelloChart.FormCreate(Sender: TObject);
var
i: Integer;
begin
{ X is the day, Y the visitors. The chart repaints by itself }
for i := Low(CS_VISITS) to High(CS_VISITS) do
serVisits.AddXY(i + 1, CS_VISITS[i]);
end;
プロジェクトウィンドウで Windows、macOS、Linux 64-bit のいずれかを選べば、同じ 2 つのフォームがそれぞれのプラットフォームで動きます。
フォームから高度なアプリケーションへ
上で紹介した Suite デモは同じ部品で作られており、ソースコードは sgcUI に同梱されています。大規模な Linux64 アプリケーションを管理しやすくするための考え方を紹介します。
- Suite デモから始める。 ERP、Factory、Fleet、Markets、Portfolio は、ナビゲーション、ページ、テーマ、データシミュレーターを備えた完成したアプリケーションです。プロジェクトに最も近いものを選び、シミュレーターを自分のデータに置き換えてください。
- フォームデザイナーで設計する。 デモの画面はコードではなく
.fmxファイルにあります。そのため、Windows 上の IDE で見たものがそのまま Linux で動きます。 - データはモデルに持たせる。 sgcUI のすべてのコントロールは、フレームワークに依存しないモデルを描画します。グリッドデータ、チャート、プランナーデータ、ダイアグラムドキュメントです。業務コードはモデルとやり取りするので、プラットフォームにも UI フレームワークにも依存しません。
- 更新をまとめる。 ライブ画面では、変更の連続を
BeginUpdateとEndUpdateで囲んでください。コントロールは値ごとではなく、まとまりごとに 1 回だけ描画します。 - テーマは 1 つで統一する。 コントロールはアプリケーションのライトまたはダークテーマに従います。Factory デモのようなダークな制御室の画面でも、コントロールごとにスタイルを設定する必要はありません。
- サーバー側でもレンダリングする。 同じモデルから、グリッド、チャート、ゲージ、ダッシュボードをウィンドウなしで PNG や SVG にレンダリングできます。Linux64 のサービスで、レポート、メール、Web エンドポイント向けの画像を生成でき、この部分にはアドオンは不要です。
- 配布先のディストリビューションでテストする。 フォントやウィンドウマネージャーは Linux デスクトップごとに異なります。最終的な画面は、対象のシステムで確認してください。
今すぐ試す:コンパイル済み Linux64 デモ 274 本
Linux で sgcUI が動くところを見るのに、Delphi も FMXLinux もライセンスも必要ありません。全製品の FireMonkey デモ、合計 274 本のプログラムを Linux64 向けにコンパイルし、1 つのアーカイブにまとめました。
sgcUI_bin_linux64.tar.xz をダウンロード
tar -xJf sgcUI_bin_linux64.tar.xz
./run.sh # choose a demo from the list
./run.sh Charts # only the demos of one product
# or start one demo directly
cd Grid/FilterAndFind
GDK_BACKEND=x11 ./FilterAndFindFMX
デモは、Ubuntu 22.04 以降、および glibc 2.34 以降と GTK3 を備えた他のディストリビューションで、X11 または XWayland ディスプレイ上で動作します。オンラインマップを使うデモには、libcurl とインターネット接続も必要です。詳細はアーカイブ内の README.txt をご覧ください。
1 つのコードベースで、すべてのデスクトップへ
Windows、macOS、そして Linux64 まで、同じ FireMonkey フォームと同じ sgcUI コントロールで対応できます。コンパイル済みのデモをダウンロードして、お手元の Linux デスクトップで動作をご確認ください。
ご質問やご意見がありましたら、お問い合わせください。コードを書いた本人たちがお返事します。
