Linuxデスクトップとは
Linuxデスクトップがなぜ使われないか
Linuxデスクトップがなぜ使われないか。それは、「わざわざWindowsからOSをLinuxに変えるメリットや必要性がない」ということである。
現状のLinuxデスクトップは、ただ「面白そうだから」使ってみようという人であふれており、そうした人々は少しLinuxを試した上で、「Windowsと何も変わらない」と思って、「わざわざLinuxを使う必要性がない」ということに気付いて、定住せずにまだWindowsの元居た古巣に戻ってしまう。
そう、どうにかして、WindowsユーザーをLinuxに「移住」させるには、新しい家として「定住」するに足るメリットを示さなければならない。
多くのアプリケーション、特にAdobe PhotoshopやIllustratorのような「使えるアプリケーション」は、Windowsにはあっても、Linuxにはない。あったとしても、知名度が無く、使えるような雰囲気がしないのである。ユーザーも少ない。多くの人がGNOME 3とKDE Plasma 5だけを試して、Windowsに戻る。
だが、僕が思うに、Linuxデスクトップの使いやすさや品質は、年を経るごとに向上していると思う。GNOME 2はWindows XPの劣悪な模倣品だったが、GNOME 3はスマホの画面操作などを取り入れて「スマートなシェル」を提示した。また、KDE 4/Plasma 5も、Windowsっぽかったインターフェースを改め、Windowsよりも美しい統一感のあるデザイナブルなインターフェースになった。
そして、最近では、Cinnamon, MATE, Budgie, Pantheon, Deepinのような新しいデスクトップ環境がどんどん生まれており、UbuntuやFedoraの公式フレーバー(最初からデスクトップ環境をカスタマイズして変えてある環境)にも採用されている。そのうち、これらのひとつが流行して、Linuxデスクトップが「きちんと使われて流行る日」は来るのではないかと僕は期待している。
また、LibreOfficeを無料版のMS-Officeとして、「こちらの無料版のOfficeを使いましょう」と言っている人間は、何も分かっていない。パソコンを使う仕事で、MS-Officeの入っていないパソコンが事務用途で使えるわけがなく、どこでもMS-Officeはプリインストールで導入されている。要するに、「WindowsにMS-Officeが入っているのは当たり前」なのである。そのMS-Officeの入ったパソコンをLinuxのLibreOfficeに変えるということは、MS-Officeを失うことに等しい。Linuxデスクトップユーザーになることは、LibreOfficeを手に入れたメリットよりも、MS-Officeを失った不利益の方が大きい。だから、単純にLinuxデスクトップは使われないのである。どうにかして、MS-Officeを失った不利益よりも、LibreOfficeを手に入れたメリットの方を向上させれば、いつか使われるものになるだろう。
要するに、今のLinuxは、「無料のものをあげましょう」と言っておいて、有料のすでにあるものを奪っていく行為に等しいのである。ここをどうにかして、有料のWindowsよりも優れたものを与えるようなOSにすれば、Linuxデスクトップは使われる日が来るだろう。
ツールキットとビューの面白さ
XやWindowsに言えることとして、「ツールキットやビューの面白さ」というのがある。
たとえば、昔はファイル一覧を見るのも、コンソールでlsを実行するなど、テキストベースのビューで閲覧するのが普通だった。
grepやsedを使ってフィルター処理を行い、bashなどにパイプで渡すなど、「コマンドとテキストで行うから便利な側面」というのも確かにある。
だが、GTK/QtアプリケーションやWindowsアプリケーションは、リストビューやツリービューやアイコンなどの「専門のコントロール」すなわち「ツールキット」を用いてアプリケーションを構築する。ウィンドウにはタイトルバーがつき、大きさや重ね合わせを変えられる。
これは、プログラミングを行う上でも面倒くさい仕組みで、GTKやQtのGUIフレームワークの仕様を覚えなければならず、多くの場合コマンド・テキストベースよりも複雑で理解し辛いプログラムになる。
だが、Windowsの画期的な点とは、こうしたツールキットやビューの面白さにある。インタラクティブにマウスに反応し、さまざまな「細かい作業」のできるGUIツールキットを使ったアプリケーションは、使うのがとても面白いのである。
こうした「ツールキットとビューの面白さ」は、LinuxやUNIXにはもともと無かったものだが、X11でGTKやQtを使うことで、これを存分に楽しむことができる。特に、GTKやQtはソースコードが公開されているため、「自分でツールキットを作る」というまた別の面白さが存在する。
僕が作りたいのはワークスペース環境
また、僕が作りたいのは、カーネルというよりも、ワークスペース環境である。
アラン・ケイが考えて、AppleやMSが実装したような、GUIのワークスペース環境を、僕は作りたい。
OSを作ることも必要だが、もっとも必要なのはウィンドウシステムやツールキットの知識だ。それがC/C++で作ることができるようになりたい。
だから、必要なのはプログラミングとデザインのスキルである。
僕がワークスペース環境に求めるものは二つ。
まず、「ワンクリックでポチポチと切り替えられる」ということ。この点において、僕はGNOME 3の何度もクリックが必要なUIよりもWindowsのタスクバーやKDEやMATEの方を好む。
もうひとつは、「画面の推移や表示の領域を最低限のサイズにする」ということ。この点においても、僕はGNOME 3の全画面ランチャーよりも、最低限のサイズで表示されるWindowsのスタートメニューを好む。
なんだかんだ言って、Windows 95からXPまでの「昔のWindowsのUI」は使いやすかった。Vistaは不安定で、7ぐらいからUIが変わった。僕は、7のUIは最初は好きではなかったが、今ではもう慣れてしまった。
コンテンツ
X11の基本
Linux X11(1.アーキテクチャ)を参照のこと。
X11の応用
Linux X11(2.ツールキットとデスクトップ環境)を参照のこと。
X11設定とプログラミング
X11設定とプログラミングを参照のこと。
関連ページ
アプリケーション開発
アプリケーション開発に、ウィンドウシステムの開発に関連する内容があります。
GUI開発
GUI開発も参照のこと。
簡単な説明
X
- X
- Xはクライアント・サーバーで動くため、たとえば複数のX端末からひとつの中央ワークステーションに接続したり、たくさんの分散コンピュータにひとつのモニターから接続したりできる
- イベントメッセージ
- Xプロトコル、ネットワーク透過
- Xサーバー・Xクライアント
- Xlib
- Xプロトコルの詳細を知らなくても、Xlibを使うことでXアプリケーションが開発できる
- XlibではWindowsのメッセージループと同じイベントループでプログラムを記述する
- Motif
- 昔はMotifがXで標準的で、GIMPももともとはMotifで書かれていたが、Motifはフリーでなかった
- GTK
- GNOMEや多くのLinuxアプリケーションで使われているウィジェットツールキット
- Xlibには標準でボタンやメニューなどのウィジェットコントロールが用意されておらず、それぞれのツールキットが作ることになっている
- GTKはC言語でありながらオブジェクト指向とイベント駆動のシグナルハンドラに対応し、VBのように「main関数から実行されるのではなく、それぞれのシグナルに応じた関数が実行される」というモデルでプログラミングができる
- 最初からC言語以外のさまざまな言語で使われることを考慮しており、言語バインディングが豊富で、RubyやC#などからGTKを使うこともできる
- GTKの著名なアプリケーションはお絵描き・フォトレタッチソフトのGIMPやInkscapeなど。
- そもそもGTKは「GIMP Toolkit」を意味し、GIMPの副産物として開発された。GTKの開発元はBSDと同じUCバークレー校。
- GLib, GDK, Cairo, ATK, Pango
- GLibを使うことで、C言語でもオブジェクト指向プログラミングができる
- GDKはGTKの下位レベルレイヤーで、低レベルなグラフィックス描画処理を担当する
- Cairoはベクターグラフィックス処理を行うためのライブラリ
- ATKはアクセシビリティツールキットで、障害を持つ人などに対応する
- Pangoは英語以外の日本語などのたくさんのローカル言語に対応する
- Binとコンテナ
- ボックスとテーブル
- シグナルハンドラ
- オブジェクト指向ツールキット
- ウィジェット階層
- 言語バインディング
- Gtkmm
- PyGObject
- Ruby/Gtk
- Gtk#
- ValaとGenie
- Glade
- pkg-config
- Qt
- 昔はKDEで使われていたQtがフリーでなく、Harmony(代替Qtを作るプロジェクト)やGTK/GNOMEを作る必要があった
- 今はQtもフリーである
- C++で、美しい見た目を持ち、Windowsなどでも動くクロスプラットフォーム性が売り(一応GTKもWindowsで動くが、Qtほど美しくない)
- PyQt
- QtRuby
- ウィンドウマネージャ
- Blackbox派生
- Window Maker
- enlightenment
- 「ハッと息をのむほど美しい」という豪華なウィンドウマネージャ
- 高度なライブラリを提供するなど、既にデスクトップ環境に近い
- twm派生
- タイル型
- Linuxにはさまざまなタイル型ウィンドウマネージャがある
- Windows95風
- JWMはXlibで書かれており、「羽のように軽い」
- デスクトップ環境など
- GNOME
- Linuxの事実上の標準デスクトップ環境
- GNOME 2まではシンプルかつ簡単なデスクトップ環境を目指しており、言ってしまえば「パソコン初心者向けのデスクトップ環境」だった
- 「ユーザーを馬鹿だとみなすGNOMEの姿勢は本質的に誤り」とリーナス・トーバルズからも批判された
- GNOME 3からはユーザーインターフェースを抜本的に一新し、GNOME-Shellと呼ばれる新しいGUIを採用、アクティビティバーから全ての操作を行うようにし、標準アプリケーションのメニューバーやタスクバーは大胆に削除した
- デスクトップ環境はデフォルトで高度な機能を提供せず、拡張機能によって自分の好きなデスクトップにカスタマイズすることができる
- GNOME 3は当初は大不評だったが、今見ると「WindowsのパクリだったGNOME 2に比べて、独自性があっていい」というユーザーも
- CORBA
- 分散システム。ネットワーク上の複数のコンピュータにおいて、言語やプラットフォームをまたいでシステムを構築できる
- たとえば古いシステムを再利用して、プラットフォームが別の環境とネットワークで接続したり、コンポーネントとして再利用したりできる
- GNOMEではCORBAを使うことで、LinuxとWindowsが互いにメッセージをやり取りしたり、GNOMEアプリケーションを複数のホストから構築したり、さまざまなアプリケーションや言語でBonoboコンポーネントを使うことができる
- D-Bus
- GNOME 3ではCORBAではなくD-Busが標準になった
- D-BusはLinuxカーネルやKDEでも使われているプロセス間通信の仕組みで、CORBAと同じようにインターフェース定義によってそれぞれのプロセスがネットワークで通信できる
- Gconf, dconf
- Windowsのレジストリと同じ設定データベースシステム
- GnomeVfs, GVfs, GIO
- ネットワーク上のたとえばFTPなどのストレージを、ローカルにあるものと同じように使用できる仮想ファイルシステム
- GNOMEアプリケーション
- MATE, Cinnamonなど
- GNOME 3はメニューバーやタスクバーを廃止したが、これが不評であったためMATEがGNOME 2からforkし、GNOME 3とは別の道を行くCinnamonが開発されている
- KDE
- KDE Frameworks
- Plasma
- KDE 4以降ではKDEのデスクトップ環境のことをPlasmaと呼ぶ
- 透明で美しいが、少し不安定で動かないこともある
- KDEアプリケーション
- CMake
- Xfce
- シンプルで軽量。GNOMEやKDEよりもUNIXの本来の哲学に近い
- Xfce-GoodiesではWebKitを使用したMidoriと呼ばれるブラウザなど、軽量アプリケーションも開発している
- LXDE, LXQt
- 軽量だけを目指すデスクトップ環境。仮想環境でも優れたパフォーマンスを発揮する
- Budgie, Pantheon, Deepinなど
- 最近は新しいデスクトップがいろいろと開発されており、Budgie, Pantheon, DeepinなどはUbuntuやFedoraなどのフレーバー(デスクトップ環境だけを変えたバージョン)にも対応されるなど波に乗っている
- Wayland