【コラム】QtとGTK アプリケーションの見た目とGUIツールキットのお話

こんにちは。今回のテーマは「QtとGTK アプリケーションの見た目とGUIツールキットのお話」です。Linuxを使い始めて少し慣れてきたけど何となく分かったような分からないような・・・そんなことってありませんか?少しずつ初心者向けのコラムも書いてみたいと思います。初心者の方の素朴な疑問が少しでも晴れる記事を書くことが出来ればなと思っています。

今回はGTK+やQtといったGUIツールキットについて少し書いてみます。

KDEとGNOMEで採用するアプリケーションが違う理由は?

Linuxに限らずBSD等のフリーなOSについて調べていると「GTKなアプリケーション」とか「〜〜はQt系」といった言い回しを目にすることが多くあると思います。同じような機能を持ったアプリケーションなのにKDEデスクトップ環境とGNOMEデスクトップ環境ではアプリケーションの名前が異なっていたりして初心者には混乱があるかも知れません。例えばPDFを閲覧するアプリケーションではKDEデスクトップ環境ではOkularなのに対してGNOMEデスクトップ環境では多くの場合Evinceが導入されていると思います。

これはKDEとGNOMEで開発に用いているGUIツールキットが異なることによります。KDEはQtを用いており、GNOMEはGTKを用いて開発されています。GUIツールキットについては後に簡単に解説しますが、とても大雑把に言えばアプリケーションの見た目を決める要素と言えます。見た目の統一感を図るためKDEではQtで開発されたアプリケーションを、GNOMEではGTKで開発されたアプリケーションを採用することになります。

GUIツールキットって何?

GUIツールキットとは名前の通りGUI(Graphical User Interface)を作るための部品を集めたツールです。ウィジェットツールとも呼ばれます。アプリケーションを開発する際に開発者はGUIツールキットを使うことで自らGUIの部品を作ることなく、ウィンドウやボタンなどのGUIパーツを配置し、機能を持たせることができます。つまりGUIツールキットはアプリケーションの見た目を担う部分であり、開発に用いるGUIツールキットが異なるとアプリケーションの見た目や質感が異なることになります。

GTK+とQt

GUIツールキットには多くの種類がありますが、Linux上で動作するアプリケーションの多くがGTK+かQtを使って作られています。Qt、GTK以外のGUIツールキットを挙げると、例えばJAVAベースのJavaFXやSwingやPythonなどの言語から使えるwxWidgetsなどがあります。wikipediaには多くのGUIツールが列挙されています。

GTKは歴史的にはGIMPという画像編集ソフトの実装のためにGIMP toolkitとして開発されましたが、その後はクロスプラットホームGUIツールキットとして多くのアプリケーションの開発に用いられています。GTKはC言語を用いて開発を行いますが、多くのプログラミング言語に対応したバインディングを用いることでC言語以外の言語でも開発を行えます。GNOME FoundationがメンテナンスをしてることもありGTKとGNOMEは密接な関係にあります。(参考:Wikipedia)

Qtはクロスプラットフォームアプリケーションフレームワークであり、サーバーソフトウェアやコンソールアプリの開発にも用いられるため、必ずしもGUIツールキットとしての機能を提供するわけではありませんが、GUIツールキットとして使われることも多くあります。発音をカタカナで表すと「キュート」が近いようです。洗練されたルックアンドフィールと商用版とフリー版のライセンスがあることなどから商用アプリケーションにも多く用いられます。QtはC++を用いて開発されていますが、コミュニティによって開発されている各言語用のバインディングを用いることやAPIをを用いることでC++以外のプログラミング言語で扱うこともできます。(参考:Wikipedia)

GUIツールキットが異なると見た目が大きく変わる

ここで一つの疑問が湧きます。KDEデスクトップを採用した環境にGTKアプリケーションを入れた正常に動作するのでしょうか?答えは正常に動作します。しかし、見た目(しばしばルックアンドフィールと呼ばれます。)はKDEの他のアプリケーションとは大きくかけ離れる場合があります。特にGTKのテーマが設定されていない状態だとデフォルトの野暮ったい見た目になってしまい周囲と調和がとれません。GTK系のアプリケーションだけが浮いてしまうことになります。

デスクトップ環境もGTK系とQt系がある

さて、ここで各デスクトップ環境とGUIツールキットの関係を整理しておきましょう。

デスクトップ環境 GUIツールキット
KDE Qt
GNOME GTK
Xfce GTK
LXDE GTK
LXQt Qt
Budgie GTK
MATE GTK
Cinnamon GTK

KDEやGNOMEのようなファットなデスクトップ環境は基本的な機能以外にも様々なツールを提供してくれます。もうお分かりの通り、これらの標準アプリケーションはデスクトップ環境の開発に用いられるGUIツールと同じツールを用いたものが採用されます。これによりそれぞれのデスクトップ環境により機能は同じなのに名前と見た目が異なるツールが搭載されることになるのです。

このように各デスクトップ環境がどのGUIツールキットで開発されているかを理解していると自ずと同梱されているアプリケーションの系統や自分がアプリケーションをインストールするときにどちらのGUIツールキットのアプリケーションを導入すれば良いか迷わずに済みます。

最後に

LinuxをGUI環境で使っているととても身近に感じるGUIツールキットについて書いてみました。Linuxを使い始めた頃の自分に説明するつもりで書きましたので、あまり一般受けする話ではなかったかも知れません。リクエストなどありましたらご連絡お待ちしております。

※内容については執筆時のものであり、時間経過とともに内容が古くなり現状と合わなくなる場合があります。ご容赦ください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です