わたしの名はフレイ 作家・デザイナー見習い
神々とともに生きる詩人 一等星シリウスの導きを信じて

Linuxデスクトップの問題

Linuxデスクトップがなぜ使われないか

Linuxデスクトップがなぜ使われないか。それは、「わざわざWindowsからOSをLinuxに変えるメリットや必要性がない」ということである。

現状のLinuxデスクトップは、ただ「面白そうだから」使ってみようという人であふれており、そうした人々は少しLinuxを試した上で、「Windowsと何も変わらない」と思って、「わざわざLinuxを使う必要性がない」ということに気付いて、定住せずにまだWindowsの元居た古巣に戻ってしまう。

そう、どうにかして、WindowsユーザーをLinuxに「移住」させるには、新しい家として「定住」するに足るメリットを示さなければならない。

多くのアプリケーション、特にAdobe PhotoshopIllustratorのような「使えるアプリケーション」は、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のような新しいデスクトップ環境がどんどん生まれており、UbuntuFedoraの公式フレーバー(最初からデスクトップ環境をカスタマイズして変えてある環境)にも採用されている。そのうち、これらのひとつが流行して、Linuxデスクトップが「きちんと使われて流行る日」は来るのではないかと僕は期待している。

また、LibreOfficeを無料版のMS-Officeとして、「こちらの無料版のOfficeを使いましょう」と言っている人間は、何も分かっていない。パソコンを使う仕事で、MS-Officeの入っていないパソコンが事務用途で使えるわけがなく、どこでもMS-Officeはプリインストールで導入されている。要するに、「WindowsにMS-Officeが入っているのは当たり前」なのである。そのMS-Officeの入ったパソコンをLinuxLibreOfficeに変えるということは、MS-Officeを失うことに等しい。Linuxデスクトップユーザーになることは、LibreOfficeを手に入れたメリットよりも、MS-Officeを失った不利益の方が大きい。だから、単純にLinuxデスクトップは使われないのである。どうにかして、MS-Officeを失った不利益よりも、LibreOfficeを手に入れたメリットの方を向上させれば、いつか使われるものになるだろう。

要するに、今のLinuxは、「無料のものをあげましょう」と言っておいて、有料のすでにあるものを奪っていく行為に等しいのである。ここをどうにかして、有料のWindowsよりも優れたものを与えるようなOSにすれば、Linuxデスクトップは使われる日が来るだろう。

ツールキットとビューの面白さ

XやWindowsに言えることとして、「ツールキットやビューの面白さ」というのがある。

たとえば、昔はファイル一覧を見るのも、コンソールでlsを実行するなど、テキストベースのビューで閲覧するのが普通だった。

grepsedを使ってフィルター処理を行い、bashなどにパイプで渡すなど、「コマンドとテキストで行うから便利な側面」というのも確かにある。

だが、GTK/QtアプリケーションやWindowsアプリケーションは、リストビューやツリービューやアイコンなどの「専門のコントロール」すなわち「ツールキット」を用いてアプリケーションを構築する。ウィンドウにはタイトルバーがつき、大きさや重ね合わせを変えられる。

これは、プログラミングを行う上でも面倒くさい仕組みで、GTKやQtのGUIフレームワークの仕様を覚えなければならず、多くの場合コマンド・テキストベースよりも複雑で理解し辛いプログラムになる。

だが、Windowsの画期的な点とは、こうしたツールキットやビューの面白さにある。インタラクティブにマウスに反応し、さまざまな「細かい作業」のできるGUIツールキットを使ったアプリケーションは、使うのがとても面白いのである。

こうした「ツールキットとビューの面白さ」は、LinuxUNIXにはもともと無かったものだが、X11GTKやQtを使うことで、これを存分に楽しむことができる。特に、GTKやQtはソースコードが公開されているため、「自分でツールキットを作る」というまた別の面白さが存在する。

Linuxを使いやすいものにするために

Linuxを使いやすいものにするために必要なのは、僕が思うに以下のような方針を決めることだと思う。

1.最初から全部の情報を見せて、最も少ない手順で操作出来るようにすること

2.画面上の混乱や変化を最低限にし、驚きの少ない自然な操作を可能にすること

3.何がどの機能、どのアプリケーションを意味しているのかを明確にすること

4.きちんと美しく整理・統合されたものにすること

5.アクションに応じて出てくるメニューなどは、絶対に「自然」の範囲をはみ出さないようにすること

6.分からなくなった時は、何をすればヘルプや解説を得られるのかを明確にし、出来るだけ最初から解説を表示するようにすること

7.ヘビーユーザーのために、たくさんの操作法を可能にすると同時に、画面を整理し、初心者に必要のないインターフェースを初心者が見なくても良いようにすると同時に、どこを操作すればそうした画面の設定を変えられるのか、というボタンを一番目立たせること

8.デザインの基本と同じように、目立たせるべきものと目立たなくて良いものの優先順位をきちんと決めて、その上で良く整理され、統合されたインターフェースをすること

悪い例は、Microsoft OfficeGIMPのようなどこに何があるのかさっぱり分からないアプリケーションで、良い例はEclipseAdobe Illustratorのような考え抜かれたアプリケーションだ。

僕は、昔から「自然」という発想によるインターフェースを良く考える。自然に機能が配置・準備され、自然な挙動を示し、それが自然にそうデザインされるべきである、といった「自然なGUI」というものを考える。そこでは、全てのことに根拠を求めて、どんなところにどんな機能があるのか、デザイナーのようにきちんと考える。ただの機械ではなく、操作環境なのだということを意識する。

今のGNOMEは、リーナス・トーバルズが言っているように、「ユーザーを馬鹿だと見なしている」と思う。デスクトップ環境のことを何も知らない素人のことしか考えていない。本当は、Linuxはある程度慣れた人間しか使わないはずだ。だから、一般的Linuxユーザーのことを考えていない。一般的Linuxユーザーに良いようにしたいなら、もっとUNIXとの親和性を高め、そして管理が簡単にコマンドと設定ファイルで出来るような、そういうものにしなければならないはずだ。ある意味、最近は自動設定するようになったのは良いが、もし手動設定に戻したい場合にどうすれば良いのか良く分からなかったりする。そうした、一般的なLinuxユーザー、もっと言えばパソコンオタクやIT上級者のために使いやすい機能環境を作らなければ、Linuxユーザーは減るばかりで増えることは無いだろう。

GNOMEのインターフェースは簡単にし、分かりやすくするのは良いが、本当に大切な効率性や考えなければならないこと、手間の削減のようなことを見落としている。その方が初心者向けにすることよりも優先度は高いはずだ。

新機能提案:GUIパイプ(コピー&ペーストとパイプの類似性)

僕は、X11の新しい機能の提案として、GUIパイプを提案する。

UNIXではパイプを使うことで、あるプログラムの出力を別のプログラムの入力に与えることが出来る。

僕は、GUIでテキストをコピー&ペーストしたり、いったんファイルに保存して開いたりすることが、このパイプと類似していると思う。

だから、GUIでもパイプのようにテキストとコマンドを介して、処理を自動化出来ないかと思う。

このためには、GUIのプログラムの機能をコマンドから呼び出せなければならない。

そして、実現するとこのようになる:

$ cat test.txt | msoffice.sort('A_to_Z') | msoffice.creat_toc('.table') | illustrator.make_textbox('center').set_background('black').save_png('view.png')

このようにすると、GUIのアプリケーションをコマンドで自動化し、UNIXの今までのコマンドプログラムとも連携出来る。ややオブジェクト指向のコードに似ている。

まるでGUIコマンドラインの融和を見ているようだ。

新しいデスクトップインターフェース

僕は、新しいデスクトップ環境のインターフェースを考えた。

まず、画面の一番上に、今開いているアプリケーションの一覧をアイコンで表示する。これは、Windows 7のタスクバーと同様。Dockのように動く。

そして、画面の上から二番目のバーに、アプリケーションのメニューバーを表示する。これは、Macでアプリケーションメニューを表示するのと同様。

一番上のアプリケーション一覧をタブのようにして、アプリケーションのアイコンをクリックすることでメニューバーの表示を切り替える。

その上で、その下の大きなスクリーン画面には、アプリケーションのウィンドウを表示する。

最後に、画面の一番下に、今開いているアプリケーションのウィンドウ一覧を表示する。これは、Windows XPのタスクバーと同様。

ウィンドウ一覧に表示されるのは、一番上のアプリケーションアイコン(アプリケーションタブ)で選択されたアプリケーションのみ。

そして、アプリケーションタブを画面左に表示したり(UbuntuのUnityと同様)、NeXTSTEPのようにウィンドウ一覧をDockのように表示することもできるようにする。

要するに、こんな感じ。

+-----------+----+-----------------+
| App1 App2 |App3| Computer System |
+-----------+----+-----------------+
| File Edit View Search Tools Help |
+----------------------------------+
|                                  |
|  +-------------+                 |
|  | Window2  _+x|                 |
|  +-------------+                 |
|  |             |                 |
|  |       +-------------+         |
|  |       | Window1  _+x|         |
|  |       +-------------+         |
|  +-------|             |         |
|          |             |         |
|          |             |         |
|          |             |         |
|          +-------------+         |
|                                  |
+---------+------------------------+
| Window1 | Window2 Window3        |
+---------+------------------------+

あるいは、アプリケーションアイコンからメインメニューを伸ばす感じにしてはどうだろうか。

+-----------+----+-----------------+
| App1 App2 |App3| Computer System |
+-----------+----+---+-------------+
|           | File   |             |
|           | Edit   |             |
|           | View   |             |
|  +--------| Window |             |
|  | Window2+--------+             |
|  +-------------+                 |
|  |             |                 |
|  |       +-------------+         |
|  |       | Window1  _+x|         |
|  |       +-------------+         |
|  +-------|             |         |
|          |             |         |
|          |             |         |
|          |             |         |
|          +-------------+         |
|                                  |
+---------+------------------------+
| Window1 | Window2 Window3        |
+---------+------------------------+

これは、ウィンドウ一覧もメニューにすることで、バーをひとつだけにでき、画面を巨大なバーが占領しなくても済むようにできる。

+-----------+-------+--------------+
| App1 App2 |Windows| Place System |
+-----------+-------+-+------------+
|           | Window1 |            |
|           | Window2 |            |
|           | Window3 |            |
|  +--------| Window4 |            |
|  | Window2+---------+            |
|  +-------------+                 |
|  |             |                 |
|  |       +-------------+         |
|  |       | Window1  _+x|         |
|  |       +-------------+         |
|  +-------|             |         |
|          |             |         |
|          |             |         |
|          |             |         |
|          +-------------+         |
|                                  |
|                                  |
|                                  |
+----------------------------------+