この記事は The Qt Blog の Creating devices with multiple UI processes using Wayland を翻訳したものです。
執筆: Johan Helsing, 2017年1月23日
一昔前のユーザーインターフェースのあるデバイスでは、ユーザーインターフェースを実行するプロセスが1つだけあるような設計になっていました。これはユーザーインターフェースからデバイスをコントロールするためのロジックを分離したとても良い設計で、エンドユーザーの操作に対して即座に反応することができました。ハードウェアのコストが下がり性能が向上するにつれ、デバイスができることが増えてきました。ユーザーインターフェースは、非同期のイベントや様々なソースから発生する情報を表示するなど、以前より多くの役割を担う必要がでてきました。SMS のみに対応したシンプルな携帯電話が様々な機能を搭載したフィーチャーフォンに進化し、現在では10年前のパソコンよりも性能がよいスマートフォンがあたりまえになっています。スマートフォンのすべての UI をシングルプロセスで実行するなんて想像しただけで発狂しそうです。というわけで、複雑なデバイスのユーザーインターフェースの構築には同じような技術を導入してはいかがでしょうか?
最近のアプローチは X のよりシンプルな代替である Wayland を使うことです。
Wayland では「コンポジタ」が個々のクライアントのコンテンツをアレンジしてスクリーンに出力する役割を担います。
以前のバージョンの Qt では Qt Window System (QWS) と呼ばれる、Wayland の設計とよく似た機能を提供していました。しかし、QWS は Qt ベースのクライアントのみをサポートし、設計が OpenGL などのハードウェアには最適化されていませんでした。Qt 5 では Wayland の対応を行いました。Wayland クライアントとしての Qt アプリケーションは Qt 5.4 にて正式対応となりました。
Qt 5.8 では Qt Wayland Compositor API が正式対応になりました。これにより、Qt の機能をもちいて独自の Wayland コンポジタを作成することができるようになりました。コンポジタを簡単に作成するために必要なすべてのツールも提供されます。強力かつシンプルな QML により、コンポジタの UI/UX を記載することが可能です。もちろん、C++ での作成にも対応しています。Qt Wayland Compositor API を採用するメリットは他にもあります。
この記事によって Qt Wayland Compositor API を活用してマルチプロセス対応のデバイスを開発に興味がわく人が増えてくれれば幸いです。10分程度のチュートリアルの動画にて、どのくらい簡単にコンポジタが作れるかを実際にお見せしたいと思います。
[embed]https://www.youtube.com/watch?v=9vWMUTvFgdU[/embed]
Qt 5.8 をダウンロード して、今すぐ開発をはじめましょう!