OSS開発ツール/GUIツールキット
総論[編集]
GUIツールキットとは、やや不正確だが分かりやすくいうと、LinuxやBSDなどのような、WindowsやMac OS 以外のOSのGUIアプリケーションを開発できる開発環境である。
より正確にいうと、GUIツールキットとは、特定のデスクトップ環境に対応した、GUI開発環境のためのアプリケーション群のことである。
とはいえ、Windowsユーザーには「デスクトップ環境」という言葉は聞き慣れないだろう。(さすがに「GUI」や「開発環境」などの用語は、初歩的なので解説しない。)
なので当ページでは「デスクトップ環境」についても解説する。
デスクトップ環境とは[編集]
Gnome | KDE |
---|---|
![]() |
![]() |
windowsでは、マイクロソフト社というひとつの会社が、そのOS用のGUI(グラフィカル ユーザー インターフェース)も作っており、ユーザーの入手したOSには、インストール時から既にGUIが最初から付属している。なので、windowsの利用では、わざわざGUIとOSカーネルなどとの組み合わせを、ユーザーが自分で入れ替えたりすることは出来無いのが普通であるし、そのような事を意識する必要もない。
しかし、UnixやLinuxは、必ずしも1社で統一的に生産しているわけではない。そのため、いくつもの団体や開発者集団が、GUI環境を、開発している。
そのため、Linux用のGUI環境は何十種類もあり、Linux等の利用者は、自分で、どの開発者集団のつくったGUIを使用するかを、自由に選ぶこともできる。
要するに、まるでアプリケーションを入れ替えたりするくらいの気軽な感覚で、LinuxなどではGUIを入れ替えることが出来る。
誤解のないように言うが、けっして、GUIの設定を自分好みにカスタマイズする(例えばタスクバーのサイズを変更するとか)、という意味ではなく、そもそもGUIデスクトップ自体を、他の開発者集団のつくった、まったく別のプログラムで書かれた別種のGUIデスクトップに入れ替える事が、Linuxなどでは、できるのである。
このためLinuxやBSDなどオープンソース界隈では、GUIデスクトップそのものを提供するソフトウェアすらも、ひとつのアプリケーションとして認識する必要があり、Linuxなどでは、このようなGUIデスクトップそのものの提供をするアプリケーションのことを「デスクトップ環境」(desktop manager、desktop environment)という。
※ 詳しくは『w:デスクトップ環境』を参照せよ。
さまざまな開発者集団が、それぞれのデスクトップ環境を発表している。
たとえば、GNOMEというデスクトップ環境が、LinuxではubuntuやFedoraなどの大手Linuxコミュニティの標準設定でのデスクトップ環境として採用されている。
「GNOME」のほかにもデスクツップ環境はあり、「KDE」(ケーデーイー)など、まったく別のデスクトップ環境もある。
ツールキットとは[編集]
LinuxのようなオープンソースでのGUI開発の場合、OSの仕組みを理解しなくても、既存のプログラミング言語(たとえばC言語など)に追加で組み込んで、画像表示などをできるアプリを開発できるようにするツールが、提供されており、たとえば「ツールキット」などと呼ばれています。
たとえばC言語なら、冒頭のinclude文で、その開発用ツールキットの導入を宣言することで、使用できるようになります。(ただし、あらかじめOSに、GUI表示用ツールキットとGUI開発用ツールキットとを、インストールしておく必要がある。)
このようなオープンソースOS用のGUI開発用ツールキットは、さきほどの「デスクトップ環境」の解説でも述べたように、一般にLinuxでは、何種類もGUIデスクトップがあるので、GUI開発用ツールキットも(デスクトップ環境ごとに)対応して何種類もあります。そして、一般的に異なるGUIデスクトップ用につくられたアプリケーションには互換性がないので、よって、異なる開発用ツールキットどうしにも互換性がないのです。
つまり、あるGUIのGUI開発用ツールキットを仮に「A」として、それとは別のGUIのGUI開発用ツールキットを仮に「B」とした場合、Aで開発されたアプリは、A用の環境でだけ、動作できます。Aで開発されたアプリは、B用の環境では動作できないのです。
いっぽう、ウィンドウズやマックOSならば、そのようなツールキット的なものが、OS開発企業により、あらかじめ1種類に統一されておりますので、いちいち、動作環境で悩む必要がないです。
GnomeとGTK[編集]
デスクトップ環境 | Gnome | KDE |
---|---|---|
ツールキット | GTK | Qt |
画面 | ![]() |
![]() |
LINUXのほとんどのGUIアプリは、じつはGUIが、GNOME(グノーム)というGUIに事実上は統一されており、そしてツールキットがGNOME用のGTK(ジーティーケー)というツールキットに統一されています。
なぜ、わざわざこのような事を紹介するかというと、GUIには、GNOME以外のものもあるからです。(たとえば「自動車」と一口にいっても、ホンダ車だけでなく、トヨタ車とかマツダ車とか、いろんなのがあるのと同様です。) LINUXのGUIには、GNOMEとは他の異なる別のGUIとして、KDE(ケーディーイー)というのがあります。ホンダ車とマツダ車とは、まったく別物のように、GNOMEとKDEも、まったく別物です。
GNONEとKDEとで共通してる性質は、単に、LINUX用のGUIである、という点だけです(例えるなら、トヨタ車とホンダ車とマツダ車で共通してるのは、単に「日本車である」という事だけのように)。
なぜ、わざわざこのような事を紹介するかというと、「GUI」と「GNOME」とを混同する人が、ときどきいるからです。(自動車に例えるなら、「マツダ車」を「自動車」そのものと混同するようなのと同様である。)
- (余談) なお、「GTK」 とは GIMP Toolkit の略です(GIMP(ギンプ)とは、LINUX用の お絵描きソフト のひとつです。もともとGIMPを開発するためのソフトとして、GTKが開発されたという歴史があった)。GIMP Toolkit の名前は覚えなくてもいいです。それより気をつけてほしいのは、GTKは けっして「GUI Toolkit」(×) の略ではないことに気をつけてください。ときどき、まちがえて GUI と GNOME と GTK とを混同する人がいます。
自動車産業に例えるなら、GTKはさしずめ、(自動車の)製図とか生産工場の部品とか、そこらへんでしょう。とにかく、GTKとGUIとGNOMEとは、まったく違うので、混同しないでください。
LINUXには、GNONEのほかにもGUIがあり、Cinnamon(シナモン)やMATE(マテ)など、ほかにもGUIがありますが、しかしこのGUIはもともとGNOMEをベースにつくられており、また、GTK用のコードに合わせて動作されるように作られています。
なので、LINUX用のGUIアプリをC言語などでつくる人は、プログラム中でGTKの提供する関数を呼び出すコードを書くことになります。
LINUXのGUIには、GNOME系のGUIとは他の系統として、KDE(ケーディーイー)というのがありますが、これはツールキットが異なり、QtというGUIツールキットを採用しています。また、Qt用コードの文法は、GTK用コードの文法とは異なります。
よって、GTKにあわせて書いた(C言語などの)コードは、KDEをGUIとする環境では動きません。もし、むりやり起動しても、異常停止などをする場合があります。同様に、Qtにあわせて書いたコードは、GNOME系のGUIでは動きません。
もし、あるLINUXアプリケーションが、GNOMEでもKDEでも正常に動作する場合、その仕組みは、そのアプリのプログラマーが両方のGUIツールキットむけに2倍の量のコードを書いているとか、または、それに類する対策をしてあるからです。
よって、あまりにもマイナーなGUIは、アプリ制作者がそのGUIにむけて開発しなくなるので、そのGUIは対応アプリが少なくなります。
なお、ひとつのパソコンにKDEとGNOMEを両方ともインストールできますので、一見するとKDEとGNOMEの両方で使えるアプリでも、パソコンに内部には単にKDEとGNOMEの両方ともインストールしてあるだけかもしれません。
なお、GUI開発用の「ツールキット」のような開発用ソフトウェアを制作する手間は、事実上はOSをつくる手間、またはOSの部品をつくる手間にちかく、普通の人には、なかなかツールキットそのものは作れないです。