MirはUnity8のためだけに存在するのではない
「Mir」は「Canonical」主導で開発が行われ、将来「Ubuntu」で採用されるディスプレイサーバーです。「Ubuntu Desktop」では、「Unity8」とセットで利用することになります。
Mirは、コンピューターのディスプレイ上でアプリケーション管理を実現するためのプロジェクトである。
Mirは、現在のUbuntu Desktopや他の多くのLinuxディストリビューションで使用されている親しみ深いX-Windowsと対比できるソフトウェアである。
皆さんにMirの刺激的な内容をいくつか紹介しよう。
だがこの投稿内容の要点は、MirとUnity8の関連性を明らかにすることである。
多くの場合、MirはUnity8と共に語られる。
Unity8は、Canonicalの新しいユーザーインターフェイスシェルであり、エンドユーザーが直接触れるインターフェースであるため、Unity8と共に語られることは意外なことではない。
そしてMirだけがこれを実現できるのだ。
現在Unity8は、スマフォ(Ubuntu Phone)やタブレット(Ubuntu Tablet)で使用されており、またプレビュー版としてUbuntu 16.10でも利用可能である。
Unity8がなくても、Mirは利用できる
さて、MirはUnity8無しに利用できることを紹介したい。Unity8以外のシェルでも、インフォメーションセンターや電子掲示板といった組み込み向けの環境で利用される簡潔なUIでも、Mirが利用できるのだ。
3つの重要な要素を提供するMirの抽象レイヤーにより、MirはUnity8でなくとも利用可能だ。
3つの重要な要素とは、以下の通りである。
1.libmiral.so
Mirが提供する基本的なウィンドウマネージャー機能への安定したインターフェースを提供する。2.miral-shell
伝統的なウィンドウマネージャーやタイル型ウィンドウマネージャーの両方を提供するシェルのサンプル。3.miral-kiosk
基本的なウィンドウマネージャーのみ提供するキオスクのサンプル。サンプルはUbuntu 17.04から利用可能
サンプルである「miral-shell」と「miral-kiosk」サーバーは、Ubuntu 17.04のアーカイブから利用可能だ。また、 Kevin Gunn氏のブログでは、「kiosk」snapをベースとした「miral-kiosk」の提供について紹介されている。
これらのサンプルのより詳しい情報や使い方については、以下の私のブログを参照して欲しい。
Mirの使用
Mirはプログラミングライブラリーの集合体であり、Mir自体はアプリケーションではない。これは何をするにしても別途アプリケーションが必要になるということである。
Mirライブラリーを使用するには、以下の2種類の方法がある。
クライアント
アプリケーションを開発するなら、Mirをクライアントとして使用する。X11もそうだが、一般的に直接クライアント(アプリケーション)がMirにアクセスするのではなく、ツールキットを経由してMirを利用する。
サーバー
デスクトップ環境などシェルを実装するなら、Mirをサーバーとして使用する。ツールキットのMirのサポート状況
GTK+、Qt、SDL2の各ツールキットは、Mirのサポートが利用可能である。これらのツールキットを利用して開発されているアプリケーションは、ツールキットでMirのサポート機能が有効になれば、何もしなくてもそのままMir上で動作するはずである。
そしてUbuntuでは、各ツールキットのMirのサポート機能がデフォルトで有効になっている。
XアプリをサポートするためのXMir
加えてXmirという仕組みがある。これはMir上で動作するX11サーバーであり、これによりXベースのアプリケーションはMirサーバー上で動作できるようになる。
Mirサーバーを開発するためのMirAL
さてMirクライアントが動作するには、それに対応したMirサーバーが必要である。最近の開発サイクルにおいて、MirチームはMirALを生み出した。
MirALは、Mirサーバーを書くための推奨された方法であり、miral-examplesパッケージをインストールすれば、デモンストレーションを入手できる。
MirサーバーとクライアントをUnity7上のデスクトップで利用する
現在開発中のUbuntu 17.04なら、以下の方法でmiral-examplesパッケージをインストールできる。
sudo apt install miral-examples mir-graphics-drivers-desktop qtubuntu-desktop
miral-examplesをインストールすれば、Unity7上のデスクトップでMirサーバーをウィンドウとして動作させることができる。
アプリの起動とウィンドウマネージャー
そしてgeditのようなクライアントを、以下のようにそのサーバー内で起動することができる。
miral-shell&
miral-run gedit
miral-run gedit
この環境では、伝統的な(最も基本的な)ウィンドウ管理が行われるデスクトップになる。
タイル型ウィンドウマネージャー
伝統的なウィンドウマネージャーの代わりに、タイル型ウィンドウマネージャーも利用できる。以下のコマンドを実行する。
miral-shell --window-manager tiling&
miral-run qterminal
miral-run qterminal
もっと基本的なキオスク
以下のコマンドを実行すれば、もっと基本的なキオスクが利用できる。
miral-kiosk&
miral-run 7kaa
miral-run 7kaa
サンプルのMirサーバーは完全なデスクトップを提供しない
デスクトップに必要なランチャーや通知などのサポートは、上記のMirサーバーのサンプルではサポートしていない。しかしこれらのサンプルは、Unity8無しでMirが利用できるという潜在力を表したデモンストレーションである。
Mirが解決する問題や課題
Xウィンドウシステムは、コンピューターとの対話を実現するシステムとして長きに渡り成功を収めている。Xウィンドウシステムは、ハードウェアとドライバーの幅広い範囲において一貫した抽象化を提供している。
このおかげで多くのデスクトップ環境やGUIツールキットは、膨大の数の様々なコンピューターでXウィンドウシステムと共に動作できる。
しかし今やコンピューターは様々な使われ方をする時代になり、そして今日、時代に合わせた機能をXがサポートするには困難であるという懸念が顕在している。
Xウィンドウシステムが登場した時代
1980年、ほとんどのコンピューターは大型のコンピューターであり、専門的な管理者によって管理されていた。そして他の端末やコンピューターから大型コンピューターに接続することが最先端の使われ方だった。
その時代においてソフトウェアの開発コストは、あるアプリケーションが他のアプリケーションの接続を待ち受けることで得られる利益が大きく、無視できるコストだった。
Xウィンドウシステムはこのような環境で開発され、多くの変化に適合するように様々な拡張が行われてきた。
安全性に欠く
しかし今まで行われてきた拡張は、本質的に安全性に欠く。どのようなアプリケーションでもディスプレイ上で起きていることを検出することができ、影響を与えることができる。
例えばXeyesのようなディスプレイ上のマウスカーソルの動きを追跡するアプリケーションや、Tickeysのようなキーボードを監視しタイピング音を生成するアプリケーションを開発することができる。
つまりすべてのアプリケーションは、画面上で起きていることほぼすべてを追跡し、操作することができる。
Unity7やGNOME、KDEなどXベースのデスクトップではそれが可能なのだ。
Xウィンドウシステムの率直なウィンドウ管理は、世界中にあるインターネットに接続している何百万ものコンピューターにとって不完全な設計である。
クレジットカードによる取引や、オンラインバンキングの利用、出所不明のプログラムを積極的にインストールしてしまうコンピューターに精通していないユーザーによる管理が行われる今日、Xウィンドウシステムの設計では十分な安全性を提供できない。
このような状況が一般化していく中、新しいセキュリティー要件やグラフィックパフォーマンスの要求をXウィンドウシステムに求めるのは現実的ではない。
Xウィンドウシステムを置き換えるプロジェクト
Xウィンドウシステムを置き換えるオープンソースプロジェクトが少なくとも2つある。それはMirとWaylandである。
CanonicalはXウィンドウシステムをMirに置き換え、アプリが持つ必要がある情報のみをアプリに提供する。
すなわち、キー入力の情報やマウスカーソルの追跡情報はアプリに提供しない。
Mirは現代に要求される重要な機能を実現することができ、GPUのようなモダンなハードウェアを活用することができる。