Ubuntu Touchで導入されている仕組みとその紹介
2023年10月2日、「Ubuntu Touch」を開発している「UBports」は、以下で「Ubuntu Touch」で導入している仕組みを紹介しています。Ubuntu TouchとUbuntu Desktop
「Ubuntu Touch」と「Ubuntu Desktop」はいずれも「Ubuntu」ベースのOSです。現在最新版の「Ubuntu Touch」は「Ubuntu 20.04 LTS」ベースで開発されており、将来的に「Ubuntu 22.04 LTS」へ移行することになるでしょう。
さて「Ubuntu Desktop」はデスクトップ向けのOSであり、その一方で「Ubuntu Touch」はモバイルデバイス向けのOSです。
端的に言い換えれば「Ubuntu Desktop」はPC向けのOSであり、「Ubuntu Touch」はスマホ向けのOSです。
異なるユーザーインターフェース
いずれもグラフィカルなユーザーインターフェースを提供していますが、対象とするデバイスフォームファクターは大きく異なります。PCでは主にキーボードやマウスを利用して操作しますが、スマホではタッチ操作が主体です。
そのため「Ubuntu Touch」ではスムーズにスマホ上でジャスチャー操作が行えるように、OSに調整が施されています。
1. 読み込み専用のファイルシステム
「Ubuntu Desktop」と異なり「Ubuntu Touch」では、読み込み専用のルートファイルシステム(/)を採用しています。これは安定性と安全性に対する方針や考え方が「Ubuntu Desktop」と異なるためです。
分かりやすく言えば、システムが読み込み専用になっています。
読み書き可能な領域
もちろんそのままだとユーザーは何もデータを保存できなくなるため、別途読み書き可能な領域をルートファイルシステム下にマウントしています。例えばユーザーのホームディレクトリーの「/home」や、「/var/log」など実行時に読み書きが必要な領域はバインドマウントにより「/userdata」へリンクされています。
システムの保護
スマホはPCと異なり、気軽にOSの再インストールや修復を行えません。また「Ubuntu Desktop」で「Ubuntu」が提供していないサードパーティー製のアプリやライブラリー導入することで、「Ubuntu Desktop」が起動しなくなってしまったり、アップグレードに失敗した経験を持つユーザーもいるでしょう。
システムを読み込み専用にすることで、このようなシステムの破壊からOSを保護できるようになります。
アップグレード処理の簡素化
またシステムのアップグレード処理も簡素化され、ユーザーがインストールしたソフトウェアの競合といったアップグレードを阻害する要因やリスクを大幅に軽減することができます。システムリセットの簡素化
加えてシステムをリセットして工場出荷時の状態に戻す処理も簡素化されます。2. Libertine
先程も紹介したとおり「Ubuntu Touch」は「Ubuntu」ベースのOSであり、「apt」によるソフトウェアのインストールが可能です。しかしルートファイルシステムが読み込み専用のため、そのままではソフトウェアをインストールできません。
そこで登場するのが「Libertine」です。
コンテナ内でアプリを実行
「Libertine」はLXCコンテナ内でアプリを実行する仕組みや環境を提供します。「Libertine」は扱いやすいUIを提供しており、インストールしたいパッケージ名を入力するだけで、インストールするパッケージの提案やインストールを実行できます。
アプリのインストールが完了すれば、そのアプリのランチャーが「Ubuntu Touch」のメインメニューに登録されるようになっています。
その様子は以下の動画で紹介されています。
以下の動画では「Ubuntu Touch」に著名な画像編集アプリの「GIMP」をインストールしています。
デスクトップ向けアプリのUIとコンバージェンス
「GIMP」もそうですが、デスクトップ向けのアプリはデスクトップに合うようにデザインが調整されています。スマホで「GIMP」を利用して画像を編集するのは大変でしょう。
そこで出てくるのがコンバージェンスです。
スマホにデスクトップPCで利用するような外部ディスプレイを接続すれば、「Ubuntu Touch」はデスクトップモードに切り替わり、「Ubuntu Touch」のUIがデスクトップ向けのUIに変化します。
この時スマホの画面はタッチパッドの代わりになります。
つまりスマホをデスクトップデバイスの代わりに活用できるということです。
3. Waydroid
「Android」アプリを使いたいと思うユーザーは多いでしょう。しかし共通部分があると言えども「Ubuntu Touch」は「Android」ではありません。
そこで出てくるのが「Waydroid」です。
コンテナ内でアプリを実行
「Waydroid」はLXCコンテナ内でAndroidアプリを実行する仕組みや環境を提供します。「Waydroid」では「Mesa」のレンダリング機能を活用し、最小のオーバーヘッドでAndroidアプリを実行できるようにしています。
ただしスマホによってはベンダー固有のルートファイルシステムが必要になり、「PinePhone」のようなスマホでは「LineageOS」のイメージが必要になります。
でも制限がある
残念ながらライセンスの問題により、Googleのサービスに依存するアプリでは問題が発生する可能性があります。他にも例えばネット銀行アプリのようなブートローダーやルートファイルシステムをチェックするアプリでも、問題が発生する可能性があります。
加えて「Waydroid」が提供していないハードウェア機能に依存するアプリも問題が発生するでしょう。
課題もある
アプリの互換性の問題以外にも、いくつか課題があります。「Waydroid」はコンテナ管理のため、CPUなどスマホのハードウェアリソースに追加コストがかかります。
また「Ubuntu Touch」と「Waydroid」間で2種類のOSが相互に作用するため、これに起因する問題が発生する可能性があります。
例えばスマホのサスペンドとサスペンドからの復帰時に問題が発生する可能性があります。
加えて「WhatsApp」のような「Ubuntu Touch」上でネイティブに動作しないアプリは、ネイティブに動作するアプリに比べバッテリーへの影響が大きくなる可能性があります。
Waydroidはあくまでオプション
「Waydroid」は「Ubuntu Touch」上で「Android」アプリを利用したいユーザーに向けたオプションであり、「Waydroid」を利用するにはユーザーが手動で「Waydroid」をインストールする必要があります。「Waydroid」では多くの機能が動作するようになっていますが、まだ実験的な機能の提供になっています。
4. Clickable
「Clickable」とはソフトウェアをパッケージングするツールです。
「Ubuntu Desktop」で言うところの「snapcraft」に相当します。
パッケージで配布する
「Ubuntu Touch」上でネイティブに動作するアプリは「Qt/QML」を利用して開発され、「Click」パッケージで配布されます。このパッケージを作成するためのツールが「Clickable」です。
ちなみに「Click」パッケージを発展させたものが「Snap」パッケージです。
アプリの開発からデプロイまでのツール群
「Clickable」にはアプリのコンパイルやデバイスへのインストール、アプリの実行とデバッグ、そして完成したアプリを「OpenStore」にアップロードする一連のツールが含まれています。またターゲットアーキテクチャー(x86/arm64)を簡単に選択できるようになっています。
アプリの開発動画
「UBports」は以下でアプリの開発動画を公開しています。「Ubuntu Touch」上でネイティブに動作するアプリに関心ある方は、是非参考にして頂ければと思います。
Ubuntu Touchとは
「Ubuntu Touch」は、スマートフォンやタブレットなどモバイルデバイス向けのOSであり、ユーザーのプライバシーと自由を尊重するOSです。UbuntuベースのOS
「Ubuntu Touch」は「Ubuntu」ベースで開発されているOSであり、開発は「UBports」コミュニティーにより行われています。モバイルのUXとデスクトップのUX
外部ディスプレイとキーボード、そしてマウスをモバイルデバイスに接続すれば、UIがデスクトップ向けのUIに変化し、デスクトップとして活用することもできます。つまり1つのモバイルデバイスで、モバイルのUXとデスクトップのUXを利用することができます。
Ubuntu Touchがサポートしているデバイス
「Ubuntu Touch」がサポートしているデバイスや、各デバイスで利用可能な機能及び制限は、以下を参照してください。Ubuntu Touchインストーラー
「Ubuntu Touch」は「UBports Installer」を利用してインストールします。「UBports Installer」は、「Windows」「macOS」「Linux」に対応しています。
「UBports Installer」の使い方は、以下の動画を参考にしてください。