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**](https://fmxlinux.com)の出番です。

~~こちらは有償製品で、スタイルパックやCrossVclなど~~
~~他製品とセットで買うと多少お安く購入できます。~~
~~単品でも4万円ほどしますが、更新費用がかからない永久ライセンスとなります。~~
~~（KSDevの気が変わらなければ、ですが…）~~
バンドルなのでEnterpriseエディション以上であれば無料で使えます。
ただ、KSDevから購入すれば優先的なバージョンアップを受けることができ、
今後もしOEM契約解消された場合でも引き続き使用可能となります。
Enterprise以上のユーザは特別価格$99で購入できるようなので、死ぬほど使い倒す方は
今のうちに保険として購入しておくのもありです。

#FmxLinuxのざっくり使用方法
インストールに関してはわざわざ書くほどでも
ないくらいシンプルであっさり終わるので省略します。

ここでは実際に開発する方法を軽く説明します。
（FmxLinuxは執筆時の最新版 v1.34 を使用）

---
まずいつもどおりマルチプラットフォームプロジェクトを
新規作成してフォームデザイン＆コーディングします。
![FmxLinux01.png](https://qiita-image-store.s3.amazonaws.com/0/281731/9cea39e1-e270-d5fe-f639-b53683fa7a15.png)
LinuxはOSXと同じで`TMainMenu`を使用することでメニューも作れます。
※ちなみにこのサンプルは、別件で開発中のPC88風フィルタアプリと同じ処理を
　選択した画像に適用するもので、GUIの他にTBitmapなどをがっつり使っています。

プロジェクトマネージャを右クリックすると
`Add Linux Platform`メニューが
追加されていますのでクリックします。
![FmxLinux02.png](https://qiita-image-store.s3.amazonaws.com/0/281731/cc8fce2e-7702-e959-0fac-e267aa8a66f8.png)
![FmxLinux03.png](https://qiita-image-store.s3.amazonaws.com/0/281731/cd11811f-1c74-e2c3-d385-96110c953fcd.png)

はい、これだけです。
あとはEmbarcaderoのドキュメントでも説明されている通りに
Linux環境への接続設定を行い、PAServerを実行してデバッグ開始すれば起動します。

Windows
![FmxLinux04.png](https://qiita-image-store.s3.amazonaws.com/0/281731/c4e8ddd9-d101-e174-18a7-b9094b30919e.png)
Ubuntu
<img width="960" alt="VirtualBox_Ubuntu_30_12_2018_01_54_12.png" src="https://qiita-image-store.s3.amazonaws.com/0/281731/6a1ebbf8-c54b-e032-723c-b69d53ad5409.png">
RedHat Enterprise Linux
<img width="640" alt="FmxLinux05.png" src="https://qiita-image-store.s3.amazonaws.com/0/281731/45bc2150-c94b-73c8-4581-c4ab9af1812d.png">
ついでにXubuntu、Ubuntu Budgie、ChaletOS、Voyager Linux
<img width="643" alt="OtherLinux.png" src="https://qiita-image-store.s3.amazonaws.com/0/281731/25fe93b6-0848-c4de-13d9-f2a5ca262284.png">
キャプチャにはありませんが、`TOpenDialog`によるファイル選択ダイアログもしっかり開きます。

尚、FmxLinuxに搭載されているテーマはUbuntuとRHELのみで、
Ubuntu以外のディストリではすべてRHELテーマで表示されるので見た目が一致しません。

#各ディストリビューションの対応状況
FmxLinux公式フォーラムで有志によって報告されているものです。
また問題のあるものでも今後のバージョンアップで解消される可能性があります。
（太字は私が日本語環境で動作確認したものとなります）

<details><summary>動作するディストリ</summary><div>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**
</div></details>

<details><summary>問題のあるディストリ</summary><div>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.
</div></details>

#まとめ
Delphi Enterprise エディション以上が必要というハードルはありますが、
かなりしっかり動作するのでLinuxデスクトップアプリ開発の選択肢として断然アリです。
すべてのコンポーネントを試したわけではないのでおそらく細かい不具合もありますが、
バージョンアップも頻繁に行われており積極的に報告するとみんなが幸せになれるかもしれません。