「プログラミング/共通知識」の版間の差分

削除された内容 追加された内容
→‎オープンソースなどでGUIアプリを開発する場合: 『OSS開発ツール/GUIツールキット』に移動した話題を全て除去。
543 行
 
このため、もしかしたら将来的には、マイクロソフト社によるGUI技術のサポートは、Win32APIではなくDirectXを優先する可能性もありえます。
 
=== オープンソースなどでGUIアプリを開発する場合 ===
せっかく理工専門書のある大型書店などに行っても、そこですらリナックスでのGUI開発の方法を書いた書籍が置いてなかったりしますので、あきらめたほうが良いと思います。しかし、どうしてでも、リナックスなどでリナックス用GUIアプリなどを開発したい場合、下記のようなソフトがあります。
 
 
LinuxのようなオープンソースでのGUI開発の場合、OSの仕組みを理解しなくても、既存のプログラミング言語(たとえばC言語など)に追加で組み込んで、画像表示などをできるアプリを開発できるようにするツールが、提供されており、たとえば「ツールキット」などと呼ばれています。
 
たとえばC言語なら、冒頭のinclude文で、その開発用ツールキットの導入を宣言することで、使用できるようになります。(ただし、あらかじめOSに、GUI表示用ツールキットとGUI開発用ツールキットとを、インストールしておく必要がある。)
 
このようなオープンソースOS用のGUI開発用ツールキットは、一般に、ひとつのプログラミング言語に対して、何種類もGUIがあるので、GUI開発用ツールキットも何種類もあります。そして、一般的にことなるGUI用につくられたアプリケーションには互換性がないので、よって、異なる開発用ツールキットどうしにも互換性がないのです。
 
つまり、あるGUIのGUI開発用ツールキットを仮に「A」として、それとは別のGUIのGUI開発用ツールキットを仮に「B」とした場合、Aで開発されたアプリは、A用の環境でだけ、動作できます。Aで開発されたアプリは、B用の環境では動作できないのです。
 
いっぽう、ウィンドウズやマックOSならば、そのようなツールキット的なものが、OS開発企業により、あらかじめ1種類に統一されておりますので、いちいち、動作環境で悩む必要がありません。
 
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の部品をつくる手間にちかく、普通の人には、なかなかツールキットは作れません。
 
== 脚注 ==