Skip to content

GUIライブラリを新しいライブラリに移行する準備として調査を行う #1460

Description

@ma8ma

GUIライブラリを新しいライブラリに移行する準備として調査を行う

背景や動機

JDimが現在利用しているGUIライブラリはgtkmm3です。
gtkmm3の最終バージョンであるgtkmm 3.24は2018年にリリースされており、現在は新機能の追加がなくメンテナンスモードに入っています。

gtkmmの基盤となるGTKのバージョンは、GTK4が2020年にリリースされ、またGTK5の開発が進んでおりライブラリの世代交代が進められています。

そこで、JDimでも新しいGUIライブラリに対応するため調査を行うことを提案します。

GTK3のサポート終了について

GTK2のサポートは、GTK4のリリースに伴い終了しました。
これは、GTKを開発するGNOMEが3つ以上のバージョンを並行してメンテナンスしない方針をとっているためです。
このため、GTK5がリリースされると、GTK3のサポートが終了する可能性が高まります。

GTK3のメンテナンス終了後、どの程度利用可能かは不透明であり移行には時間と労力がかかるため、早めに検討を進める必要があります。

GTK2 EOL: https://blog.gtk.org/2020/12/16/gtk-4-0/

Snapパッケージ

Snapパッケージは、Canonicalが開発・メンテナンスを行うgnome extensionを利用しています。

Note

Snapは、アプリケーションの依存関係をまとめて提供するパッケージ形式であり、Canonicalが提供する環境で動作します。

現在はUbuntu Core 22をベースとしたgnome-42-2204を利用していますが、
Ubuntu Core 24をベースとしたgnome-46-2404はgtkmm3を直接サポートしなくなりました。

Ubuntu 22.04 LTSの標準サポートは2027年4月に終了する予定ですが、Snapパッケージのランタイムはさらに長期間サポートされる予定です。
ただし、古いランタイムを利用し続けるとJDimの動作環境サポートに負担がかかるため、2027年を目安にランタイム移行を目指す予定です。

リスク

2027年までにGUIライブラリの移行を達成できなかった場合のリスクについて述べます。

JDim本体のリスク

2027年までに移行を達成できなくてもすぐに問題が起こる可能性は低いです。
ただし、新しいディストリビューションの機能やハードウェアへの対応が難しくなる可能性があります。

さらに、GTK5リリース後にGTK3のメンテナンスが終了する可能性があり、移行が急務となるかもしれません。
このリスクが表面化すると、開発・保守の継続に関わる重大な問題となります。

Snapパッケージのリスク

2027年までに移行を達成できなかった場合には、次の二つの選択肢があります。
一つ目はUbuntu Core 22を利用し続ける方法、二つ目はUbuntu Core 24に移行する方法です。

  • Ubuntu Core 22を利用し続ける

    • 移行の必要はありませんが、Canonicalによるサポート終了後にセキュリティリスクや機能の欠落が発生する可能性があります。
    • JDimの動作環境サポート範囲が拡大するため、メンテナンス負担が増加する問題があります。
    • 最終的にCanonicalが古いバージョンのGNOME extensionの提供を終了すれば利用できなくなります。
  • Ubuntu Core 24に移行する

    • gtkmm3が含まれないため、独自にビルドして組み込むか、aptパッケージを追加する必要があります。
    • Ubuntu Core 24のgnome extensionとの互換性や不具合が発生しないかを事前にテストする必要があります。

このリスクが表面化すると、JDimの動作環境の更新に支障が生じるため対応を決める必要があります。

GUIライブラリの候補

機能が豊富にありC++で利用しやすいライブラリを挙げます。
いずれのライブラリも移行が行えるか調査を行う必要があります。

  • gtkmm4(GTK4): 現在JDimが利用しているgtkmm3の後継ライブラリです。

    • GTK4はWaylandへの移行が進んでおり、X11固有の機能が削除されています。
    • GTK5では、X11のサポート終了が開発チームで検討されています。
  • Qt6: Qt6はクロスプラットフォーム対応の機能が豊富なGUIライブラリです。

    • クロスプラットフォームのアプリケーションを作成するのに適しており、特にこの目的ではGTKよりも広く使用されています。
    • Qt6の見た目をGNOMEなどのデスクトップで調和させるには、追加設定が必要になる可能性があります。

LinuxではGTKやQtが有力な選択肢ですが、次のGUIライブラリも目的や用途に合わせて使われています。

  • wxWidgets: クロスプラットフォームのGUIライブラリです。

    • 描画処理はOSネイティブなGUIライブラリで行うためルック・アンド・フィールがマッチします。
    • GTKやQtと比べて機能の数、コミュニティの大きさ、ドキュメントや資料などの規模が小さいです。
  • FLTK: 軽量に設計されたGUIライブラリです。

    • クロスプラットフォーム対応しており、依存関係が少なくコンパイルが早いです。
    • UIや機能がシンプルなため複雑なアプリケーションには不向きです。

解決方法

移行時に想定される技術的課題を具体的に洗い出します。
まずは、第一候補としてgtkmm4の調査を行います。

  1. 現在使われているGTKの機能をリストアップしてまとめます。
  2. gtkmm4のドキュメントを参考に移行で問題になる部分を調べます。
    https://docs.gtk.org/gtk4/migrating-3to4.html
  3. gtkmm4で削除、非推奨、または互換性がない機能があれば代替の方法を考えます。
  4. gtkmm4への移行が技術的に困難な場合は、Qt6への移行の可能性を検討します。
  5. Snapパッケージのgnome extensionのサポートを考慮し、2025年末までに移行方針を決定する予定です。
  6. GUIライブラリを決めて移行作業を開始する段階に進んだら新たにissueを作成し、対応策を検討します。

移行の課題:

  • GTK3版との共存が可能か
  • gtkmm4で実現できない機能をどうするか(放棄して移行、または他のライブラリを採用して実現)

移行作業:

  • プロトタイプ開発
  • ユーザーによるテスト

代替案

GUIライブラリの候補で説明したとおり、GTK4はX11固有の機能が削除されているため無くなった機能をどう代替するのかが課題です。

Qt6は、GTK4で削除された機能を代替できる可能性があり、JDimのデザインを維持できるかもしれません。
詳しく調査を行ってライブラリの変更に問題がなければ、Qt6の採用も有力な選択肢と考えています。

wxWidgetsやFLTKは機能が限定され、JDimの機能を完全に移行するには技術的な課題が多いです。

追加の情報

GUIライブラリ移行についてご意見・アイデアをコメントしていただけると幸いです。

Metadata

Metadata

Assignees

No one assigned

    Labels

    buildビルドに関するトピックfeature機能の追加と削除help wantedボランティア求む
    No fields configured for Feature.

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions