17
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-12-30

#前置き
普段仕事では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デスクトップアプリ開発の選択肢として断然アリです。
すべてのコンポーネントを試したわけではないのでおそらく細かい不具合もありますが、
バージョンアップも頻繁に行われており積極的に報告するとみんなが幸せになれるかもしれません。

17
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?