Edited at

DelphiでLinux GUIアプリケーション開発


前置き

普段仕事ではC#ばかりですが、趣味ではDelphiを美味しく頂いてます。

Delphi 10.2 Tokyo からは Enterprise 以上のエディションに

x64 Linuxコンパイラが追加され、UbuntuおよびRedHat Enterprise Linux向けの

コンソールアプリやサービスなどを開発することが出来るようになりました。


あれ…GUIは?

しかし残念なことにGUIアプリケーション開発には対応していません。

FireMonkeyはOpenGLなどを使って自前でUI描画してるのになんで対応してへんの?とも思いますが、

おそらく「Linuxデスクトップに需要あるのか?」という感じで優先度が下げられているのだと思います。

EmbarcaderoのロードマップにもLinux GUIの記載がありますが

あくまで検討中であり対応するかどうかすら決まってない状態です。

[2019/06/26編集]

Enterpriseエディション以上にバンドルされることになりました。

とはいえ完全な吸収・統合ではなくOEMでダウンロード権が付くイメージなので、

引き続きKSDevが開発していくようです。

元々KSDevから購入してた人への特典等は一切ありませn(ry)


颯爽と登場したFmxLinux

そうは言っても今どきのLinuxデスクトップはリッチなUIを備えているし、

ユーザーフレンドリーなツールが充実すれば自ずと需要も増えるんじゃないの?

個人的にはもう需要とか知らんからとにかくLinux GUIアプリ作ってみたい

ということでCrossVclで有名なKSDevの力作、FmxLinuxの出番です。

こちらは有償製品で、スタイルパックやCrossVclなど

他製品とセットで買うと多少お安く購入できます。

単品でも4万円ほどしますが、更新費用がかからない永久ライセンスとなります。

(KSDevの気が変わらなければ、ですが…)

バンドルなのでEnterpriseエディション以上であれば無料で使えます。

ただ、KSDevから購入すれば優先的なバージョンアップを受けることができ、

今後もしOEM契約解消された場合でも引き続き使用可能となります。

Enterprise以上のユーザは特別価格$99で購入できるようなので、死ぬほど使い倒す方は

今のうちに保険として購入しておくのもありです。


FmxLinuxのざっくり使用方法

インストールに関してはわざわざ書くほどでも

ないくらいシンプルであっさり終わるので省略します。

ここでは実際に開発する方法を軽く説明します。

(FmxLinuxは執筆時の最新版 v1.34 を使用)


まずいつもどおりマルチプラットフォームプロジェクトを

新規作成してフォームデザイン&コーディングします。

FmxLinux01.png

LinuxはOSXと同じでTMainMenuを使用することでメニューも作れます。

※ちなみにこのサンプルは、別件で開発中のPC88風フィルタアプリと同じ処理を

 選択した画像に適用するもので、GUIの他にTBitmapなどをがっつり使っています。

プロジェクトマネージャを右クリックすると

Add Linux Platformメニューが

追加されていますのでクリックします。

FmxLinux02.png

FmxLinux03.png

はい、これだけです。

あとはEmbarcaderoのドキュメントでも説明されている通りに

Linux環境への接続設定を行い、PAServerを実行してデバッグ開始すれば起動します。

Windows

FmxLinux04.png

Ubuntu

VirtualBox_Ubuntu_30_12_2018_01_54_12.png

RedHat Enterprise Linux

FmxLinux05.png

ついでにXubuntu、Ubuntu Budgie、ChaletOS、Voyager Linux

OtherLinux.png

キャプチャにはありませんが、TOpenDialogによるファイル選択ダイアログもしっかり開きます。

尚、FmxLinuxに搭載されているテーマはUbuntuとRHELのみで、

Ubuntu以外のディストリではすべてRHELテーマで表示されるので見た目が一致しません。


各ディストリビューションの対応状況

FmxLinux公式フォーラムで有志によって報告されているものです。

また問題のあるものでも今後のバージョンアップで解消される可能性があります。

(太字は私が日本語環境で動作確認したものとなります)

動作するディストリ

Antergos 17.11.

antiX 17.2

ArchBang Linux Winter 0112

ArcoLinux v18.11.2

Artix Linux LXQT 2018.10.13

AV Linux (2018.06.25)

BackBox Linux 5.2

Black Lab Enterprise Linux 8

Bluestar Linux 4.19.2

Bodhi Linux 5.0.0

BunsenLabs Linux Helium

CAINE 10.0

Calculate Linux 18

CentOS 7

ChaletOS 16.04.2

Debian 9.1

Deepin 15.4.1

Devuan 2.0.0 ASCII

Endless OS 3.5

ExTiX 19.0

Fedora 26

Feren OS (July 2018)

GeckoLinux Static Plasma

Gentoo Linux 2016.07.04

Kali Linux 2017.2

KDE neon

Kubuntu 18.10

Linspire 8.0 RC1

Linux Kodachi 5.2

Linux Lite 4.2

Linux Mint 18.1

Lubuntu 17.10

LXLE Linux 16.04.4

Mageia 6.1

Manjaro Linux 17.0

MX Linux 17.1

Namib GNU/Linux Budgie 18.08

Neptune 5.6

NuTyX MATE 10.4

OpenMandriva Lx 3.0

openSUSE Leap 42.2

Oracle Linux 7.6

Parrot Studio 3.8

PCLinuxOS 2017.07

Peach OSI 16.04 TW

Peppermint 9

Pinguy OS 18.04.1

Pisi Linux 2.1 ATA

Pop!_OS 18.10

Porteus 4.0 MATE

Redcore Linux Hardened 1806

Red Hat Enterprise Linux 7

Robolinux Cinnamon 10.3

ROSA Fresh KDE R10

Sabayon Linux 18.05 GNOME Edition

Scientific Linux 7.4

Solus 3 GNOME

SolydXK 9

SparkyLinux 4.9

Tails 3.10.1

Trisquel 8.0 LTS Flidas

Ubuntu 16.10

Ubuntu Budgie 18.04.1

Ubuntu MATE 18.04.1

Ubuntu Studio 18.10

Ultimate Edition 5.0

Void Linux MATE (2018.11.11.);

Voyager 18.04 LTS

Xubuntu 18.04

Zorin OS 12.1 Core

問題のあるディストリ

4MLinux 27.0

AUSTRUMI 3.9.0

Chakra GNU/Linux 2017.10 Goedel

elementary OS 5.0

Fatdog64 Linux 800

KaOS 2018.12.

KNOPPIX 8.1

Q4OS 2.6 Scorpion

Slacko Puppy 6.3

Slax 9.6.0

SliTaz GNU/Linux 4.0

SwagArch GNU/Linux 18.12.


まとめ

Delphi Enterprise エディション以上が必要というハードルはありますが、

かなりしっかり動作するのでLinuxデスクトップアプリ開発の選択肢として断然アリです。

すべてのコンポーネントを試したわけではないのでおそらく細かい不具合もありますが、

バージョンアップも頻繁に行われており積極的に報告するとみんなが幸せになれるかもしれません。