Ubuntu Weekly Recipe

第447回 Unity 8をちょっとだけ体感してみる

この記事を読むのに必要な時間:およそ 7 分

「Unity 8」はUbuntuの次世代インターフェースとして開発しているデスクトップUIです。先日リリースされたUbuntu 16.10では,最初からインストールされるようになりました。そこで今回はこのUnity 8を使う方法を紹介します。

Unity 8の進捗どうですか

「次世代インターフェースとして開発している」とか「次のリリースからUnity 7から移行する見込み」なんて言われてから幾星霜,ようやく「Unity 8」がUbuntu 16.10では最初からインストールされるようになりました。ただ,最初からインストールされているとは言っても,標準の環境になったわけではなく,あくまで「お試しできる」状態でしかありません。しかも試せる環境は原則として,IntelかNvidiaのGPU向けのオープンソースドライバーを使っている環境,もしくはKVM上の仮想マシンのみとなります。

Unity 8は次世代ディスプレイサーバーである「Mir」とセットで開発中のデスクトップインターフェースです。MirはLinuxのディスプレイサーバーとしてデファクトスタンダードの位置を確立しているX Window Systemを置き換えるために開発中のソフトウェアです。X Window Systemは登場から30年以上が経過して仕様やコードは複雑になり,現在のコンピューターの要件とはそぐわない部分も多々指摘されるようになってきました。2000年代のはじめ頃から,X Window Systemを置き換える機運が立ち上がり,その一つがFedoraをはじめとして様々なディストリビューションで利用できるようになってきたWaylandです。Unity 8も当初はWaylandを採用する予定でした。しかしながらスマートデバイス向けにUbuntu Touchを開発するにあたって,当時のWaylandではフォローできない機能がいくつかあったことなどから,結果的に独自開発を行うということでMirプロジェクトを立ち上げます※1)。

※1
JollaのSailfish OSがWaylandを採用しているように,現在ではWaylandもスマートデバイス向けの機能が一通り揃っています。むしろMirよりも開発は活発です。

Unity 8はこのMirの上で動くように,フルスクラッチで書きなおされています。組み込みデバイスを意識していたからか,Qt 5/QMLを使って開発することになりました。単にデスクトップPCだけでなく,スマートフォンのような小サイズ・高解像度なデバイスから,タブレットサイズ,さらにはTVのようなサイズは大きいものの距離が遠い表示デバイスにいたるまで,あらゆるレンジのデバイスでそれなりに使いやすいUIになるような作りを目指しています。いわゆる「Responsive UI」を開発当初から意識した実装となっているのです。

一般的には「Ubuntu Phone」「Ubuntu Tablet」と呼ばれる,Ubuntu Touchをインストールしたスマートデバイスは,すでにUnity 8とMirを製品で採用しています。Unity 8とMirの組み合わせは将来的にデスクトップ環境でも適用される見込みで,今回はその一歩です。ちなみに当初の予定では,Ubuntu 14.04 LTSの時点で今回のような「お試し機能」を用意し,Ubuntu 15.10では標準の環境となる予定でした。しかしながら実装の遅れやUbuntu Touchへの注力,systemdへの移行といった様々な要因が絡んで,16.10までずれこんだというわけです。2015年の年始にあわしろいくやさんが執筆された第356回「2015年のデスクトップ環境」では「15.10に間に合わせるべく開発することは可能なのかは疑問があります」とありますが,まさにそのとおりの結果となりました※2)。

※2
さらに1年たった今年2016年の年始に掲載された第404回「2016年のデスクトップ環境」では「30%くらいは17.04に先送りされるのではないかと思っていたりもするのですが」と書いてあったりします。はい,16.10での正式採用は諦めて,17.04以降に持ち越されました。
 

とは言えこれまで開発が停滞していたわけではなく,Ubuntu Touch向けがメインではあるものの開発は続いています。さらに2015年の第394回でも紹介したように「Ubuntu Personal」として仮想マシン上でUnity 8が使えるになったり,コンテナにインストールしたUnity 8を体験できるスクリプトが用意されたりと,これまでにもデスクトップで簡単に試す手段もいくつか提供されていました。

Ubuntuは比較的多くのユーザーを抱えているからか,開発中の新機能に対して喜んで人柱になるユーザーよりも,保守的なユーザーの割合が大きくなりがちです。そのため実験的な機能を導入してもなかなか試してもらえなかったり,ユーザーの数に見合ったフィードバックがもらえません。しかもいざそれを本番環境に採用した途端,多くの人に影響が出てしまうというジレンマを抱えています。実際,Ubuntu 11.04でGNOMEからUnityへ移行したときも,賛否両論巻き起こる状態でした。Unity 8ではその教訓を糧に,まずは一般ユーザーが簡単に試用できる環境を提供して,数リリース様子を見てから本番環境として採用するというスタンスを維持しています。

言い換えると,今回のリリースでデスクトップ版のUnity 8がようやく一般ユーザーに試してもらえる品質になったということでもあるのです。

すみません,言い過ぎました。安心してください,いつもどおり見切り発車もいいところといった品質です。

Unity 8のテスト環境を用意する

さてここからはメディアキーを押すと固まることでも定評のあるUnity 8を実際に試してみることにしましょう。前述のとおりUnity 8を試すには,Ubuntu 16.10とIntelかNvidiaのGPUとオープンソースドライバーの組み合わせが必要です。ただ手元の環境はUbuntu 16.04 LTSを使い続けたいとか,Unity 8が固まった時に再起動しないといけないのは怖いといった理由で,実機では試しづらいこともあるでしょう。そこでQEMU/KVMを用いて仮想マシン上で試す方法を紹介します※3)。

※3
残念ながらVirtual Boxでは動きません。またVMWareは環境やバージョンによって動いたり動かなかったりするようです。

QEMU/KVMはたとえば本連載でもここ数回のセキュアブート関係の記事でも利用しているように,マシンエミュレーターであり仮想マシンを構築するために必要なソフトウェアです。仮想マシン管理ソフトウェアのvirt-managerやGNOME BoxesもバックエンドではQEMU/KVMを利用していますし,クラウド環境構築・管理ツールであるOpenStackや第345回第430回でも紹介しているOpenNebulaも計算ノードはQEMU/KVM上で動いていることが一般的です。QEMU/KVMの基本的な使い方を覚えておけば,これらのフロントエンドで何かトラブルがあったときに役に立つでしょう。今回はQEMU/KVMのコマンドをそのまま利用しますが,他のフロントエンドでもやり方が異なるだけでそのまま動くと考えてかまいません。

またUnity 8を動かすためには,仮想マシンのグラフィックデバイスとしてQXL-vga qxlオプション)を指定する必要があります。QXLは仮想マシンのリモートデスクトッププロトコルとして開発されたSPICE向けの仮想グラフィックデバイスです。

$ sudo apt install qemu-kvm
$ mkdir unity8 && $_
$ wget http://jp.releases.ubuntu.com/yakkety/ubuntu-16.10-desktop-amd64.iso
$ qemu-img create -f qcow2 unity8.qcow2 40G
$ qemu-system-x86_64 -m 2G -enable-kvm -vga qxl \
    -drive if=virtio,file=unity8.qcow2 \
    -cdrom ubuntu-16.10-desktop-amd64.iso

Ubuntuを普通にインストールしてください。インストールが完了したら再起動します。「Please remove the disc (中略) press ENTER:」というメッセージが出たら,ウィンドウを閉じて仮想マシンを終了しましょう。以降は,次のコマンドで仮想マシンを起動します。

$ qemu-system-x86_64 -m 2G -enable-kvm -vga qxl \
    -drive if=virtio,file=unity8.qcow2

SDLウィンドウ上にUbuntuデスクトップが表示されるはずです。ちなみにSDLではなくSPICEを使いたい場合は,次のようにオプションを変更してください。

$ qemu-system-x86_64 -m 2G -enable-kvm -vga qxl \
    -display none -spice port=5910,disable-ticketing \
    -drive if=virtio,file=unity8.qcow2

-display noneはSDLウィンドウを立ち上げないことを意味します。もしシリアルコンソールは標準出力に出力したい場合,このオプションではなく-nographicを指定してください。-spice port=5910,disable-ticketingでSPICEの設定を行っています。ポート5910番で待ち受け,接続時には認証を行わないという意味です。SPICEプロトコルで接続するためには,SPICEクライアントが必要です。Ubuntuであればspice-client-gtkパッケージのspicyコマンドかvirt-managerパッケージに同梱しているremote-viewerコマンドを利用すれば良いでしょう※4)。ちなみにspice-html5のようにWebSocketを使ったクライアントもあります。spice-html5を使えば,ビューワー側はWebブラウザーだけで完結します。

※4
Ubuntu 16.04 LTSのspicyはGTK+2アプリケーションです。Ubuntu 16.10からGTK+3対応になっています。それに対して,remote-viewerの方はUbuntu 16.04 LTSの時点でGTK+3に移行済みです。
spicyの場合:
$ sudo apt install spice-client-gtk
$ spicy -h localhost -p 5910

remote-viewerの場合:
$ sudo apt install virt-manager
$ remote-viewer spice://localhost:5910

図1 spicyの場合

画像

図2 remote-viewerは画面上部のグローバルメニューから操作する

画像

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入