Ubuntu Frame:KioskおよびWayland埋め込みディスプレイ向け「オールインワン」ソリューション

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

Kiosk構築における「X11」という悩みの種

公共の検索端末でマウスカーソルを隠したり、Alt+Tabショートカットを無効化したりするために、徹夜したことはありませんか?以前、私は広告用ディスプレイでユーザーがブラウザを閉じられないようにするPythonスクリプトを「自作」するだけで、6時間以上費やしたことがあります。結局、誰かがキーボードを接続しただけで、すべてのセキュリティ層が崩れ去ってしまいました。

根本的な問題は、X11が現代の埋め込みデバイス向けに設計されていない点にあります。肥大化しており、権限管理が緩く、24時間365日の安定性を確保するための設定が極めて困難です。起動スクリプトにわずかなミスがあるだけで、Kiosk画面に無骨なデスクトップインターフェースが表示され、非常にプロフェッショナルとは言えない見た目になってしまいます。

そこで「救世主」として登場するのがUbuntu Frameです。CanonicalによってMir(Waylandコンポジット)をベースに設計されており、不要なデスクトップコンポーネントを完全に排除しています。Ubuntu Frameは、アプリケーションを全画面モードで最も安全に表示するという、ただ一つの任務に集中しています。

なぜUbuntu Frameは従来のソリューションより優れているのか?

技術的には、Ubuntu Frameはハードウェアとアプリケーションの間のスリムな中間層として機能します。グラフィックスドライバーやウィンドウ管理に苦労することなく、アプリケーションを投入するだけで、あとはFrameがすべて処理してくれます。

約50台のRaspberry Pi 4に実際に導入した結果、以下の3つの大きなメリットを実感しました。

  • デフォルトでのセキュリティ: Snapとして動作するため、アプリケーションは完全に分離(サンドボックス化)されます。ユーザーがメインシステムに脱出してシステムファイルを操作する方法はありません。
  • リソースの節約: 最小限のGNOME環境が約500MB〜800MBのRAMを消費するのに対し、Ubuntu Frameは100MB未満しか消費しません。
  • 正確なタッチ操作のサポート: Waylandプロトコルは、マルチタッチやスワイプジェスチャを、時代遅れのX11よりもはるかにスムーズに処理します。

Ubuntu Frameのステップバイステップ・インストールガイド

長期的な安定性を得るために、Ubuntu Server 22.04 LTSの使用をお勧めします。クリーンなサーバー上での手順は以下の通りです。

1. Snap経由でUbuntu Frameをインストールする

公式にSnapで配布されているため、インストールは1分もかかりません:

sudo snap install ubuntu-frame

インストールが完了したら、サービスが準備できているか確認します:

snap info ubuntu-frame

2. グラフィカルインターフェースを有効化する

SSH経由で操作している場合は、次のコマンドを使用してUbuntu Frameに画面の制御を要求します:

sudo snap set ubuntu-frame daemon=true

この時、コンピュータに直接接続されている画面が暗くなります。驚かないでください。これは、Frameがアプリケーションからのレンダリング命令を受け取る準備ができた合図です。

3. WPE WebKitでWeb Kioskを展開する

最近のプロジェクトの多くは、更新の容易さからWebアプリを使用しています。最も軽量なソリューションはWPE WebKitです。このブラウザにはアドレスバーやメニューがなく、Kioskに最適化されています。

sudo snap install wpe-webkit-mir-kiosk

次に、インターフェースを介してブラウザをUbuntu Frameの「脳」に接続します:

sudo snap connect wpe-webkit-mir-kiosk:wayland ubuntu-frame

最後に、ブラウザを目的のアドレス(例:blog itfromzero.com)に向けます:

sudo snap set wpe-webkit-mir-kiosk url=https://itfromzero.com

実践的な設定:小さくても重要なTips

実際のプロジェクトでは、デフォルトの画面のままにすることは稀です。ハードウェアに合わせて詳細なカスタマイズが必要になります。

画面の回転(Display Rotation)

広告用スタンディなどで画面を縦向き(Portrait)に設置する場合は、設定ファイル /var/snap/ubuntu-frame/current/frame.config を編集します。

# 画面を右に90度回転
output:HDMI-A-1:rotate=90

ファイルを保存し、サービスを再起動して変更を適用します:

sudo snap restart ubuntu-frame

診断モード

画面が期待通りに表示されないときは、推測に頼らないでください。診断(Diagnostic)モードを有効にして、FPSやドライバーのパラメータを確認しましょう:

sudo snap set ubuntu-frame diagnostic-display=true
sudo snap restart ubuntu-frame

Flutter、Qt、またはElectronを使用する場合の注意点

Webを使用せず、FlutterやQtでアプリを自作する場合も手順は同様です。アプリをSnapとしてパッケージ化し、waylandスロットに接続する必要があります。一点注意として、アプリがレンダリング先を認識できるように、常に環境変数 WAYLAND_DISPLAY=wayland-0 を宣言してください。

おわりに

X11からUbuntu Frameへの移行は、故障がちな古い車から完全自動運転の電気自動車にアップグレードするようなものです。セキュリティや表示の細かな不具合を心配する必要がなくなり、アプリの機能開発に100%集中できるようになります。

インストール中にIntelやAMDのグラフィックスカードに関連するエラーが発生した場合は、下にコメントを残してください。私がこれまでに遭遇した「難解な」ケースに基づき、サポートさせていただきます。

Share: