擬似クラスは完全排除
今は、Ubuntu向けソフトのWayland対応をしようとしていて、画面録画ツールである所のTiDesktopRecorderの更新作業は終わりつつある。今回の更新で最も苦労したのは、Wayland環境用のAPIドキュメントが無かった事なのだが・・・
APIドキュメントが無かったのは、そもそも、API自体が存在しなかったから! と、言えるかもしれないのだが、もし、今現在使えている手法をAPIと呼ぶとしても、そんな手法は、近い将来使えなくなる可能性が高い!! から、という事かもしれない。
つまり、今回の更新を始めた頃に記事に書いた様に、Ubuntuのシステム開発者的には、アプリケーション開発者に対しては、少なくとも今はまだ、Waylandセッションには来るな! という感じなのかもしれない。
と、言う事で、作者は、今回、今現在使える手法を使って、TiDesktopRecorderで、Waylandセッションでの全画面/領域指定/ウインドウ録画を可能にしたのだが、近い将来、動作しなくなる可能性も無きにしもあらずだ。
具体的には、細かいDBusのコマンド体系が変更になる可能性もあれば、権限制限を強化してサードパーティー製アプリが当該DBusコマンドを利用できなくする可能性もあれば、Waylandの提供元が開発を進めている全く別のAPIに鞍替えする、なんて可能性もある訳だ。
なので、普通に考えれば、今現在、Waylandセッションでの画面録画処理を実装するのはリスクが高いのだが、来年の10月には、Windows10のサポートが終了する事になっている。
つまり、それまでに、Windows11に対応しないPCを持っている人は、そのPCのOSをUbuntuに入れ替える可能性も高いので、それまでに、Waylandセッションで普通に動作するプロプライエタリなソフトも存在している! という事にしておかないと、Linuxというのは、やはり、社会主義国みたいなOSなんだなあ、と、思われる事になる筈だ。
社会主義国? と、思う人もいるかもしれないのだが、これは、つまり、一般人、つまり、サードパーティー開発者には、自由がない、という事を意味している。
なので、中央集権的に、OSの機能なんかは整えられていくかもしれないのだが、資本主義国のWindows/macOSの様には、サードパーティー製ソフトによる機能拡張なんかは行われないので、画一的な面白くない環境になりがちになる。
Linuxというのは、一番、自由なOSだ! という声も聞こえてきそうなのだが、少し前の記事に書いた様に、Waylandセッションで動作するUbuntuというのは、サードパーティー製ソフトに対して色々と権限制限をしているので、例えば、Mutterが提供しているキャプチャーAPIなんかは、サードパーティーに開放されていない。
もっとも、RemoteDesktop APIは、今現在、サードパーティー製ソフトである所の作者製ソフトでも、普通に使えているので、そのAPIを使えば、少なくとも普通の画面キャプチャーは可能だ。
と、言う事で、RemoteDesktop APIが今現在サードパーティー製ソフトで使えているのは、このAPIを使えなくすると、サードパーティー製のリモートデスクトップソフトが開発不可能になるから! というのなら、まだ、良いのだが、単に、権限制限を、まだ、入れていないだけ、という可能性もある。
何故なら、ネットで調べていると、Mutterに直接コマンドを送る、前述の画面キャプチャー用APIも、Waylandセッションが登場したばかりの頃には、サードパーティー製ソフトでも利用できていたみたいだからだ。
と、言う事で、Linuxというのは、近い将来、システム絡みのソフトはシステム開発者のみが提供する格好になり、サードパーティーお断り! みたいな感じになる可能性も普通にある。
何故なら、それがセキュリティ的に望ましいから! で、それ以上の説明は不要とされるかもしれない今日この頃だ。
ちなみに、今日の表題はどういう意味なのか、というと、今回の開発では、Waylandセッションでリモートデスクトップソフトを開発するために必要になる画面キャプチャー/仮想キーボード・マウス入力に関するAPIドキュメントを参照できなかったので、今現在、それらを実現できているGnome-Remote-Desktop-Daemonのソースコードを参照したのだが、そのコードには、擬似クラスが多用されていたので、作者製ソフトでは、それらを全て排除した、という事だ。
何故、そんな事をしたのか、というのには、二つの理由があって、その一つ目としては、今回の開発の最初の頃に書いた様に、OSSのソースコードは、不必要に! 複雑化されている、という事に起因する。
つまり、Gnome-Remote-Desktop-Daemonでは、DBusのAPIを使って画面キャプチャーを実現しているのだが、これも今回の開発の最初の頃に書いた様に、非常に難解なコードになっているので、少なくとも、Wayland用画面キャプチャーのサンプルコードとしては不適切な訳だ。
なので、作者的には、DBusのシーケンスを分かり易くするために、不必要なコードを全て削除してきたのだが、最終的には、Gnome-Remote-Desktop-Daemonが使用している擬似クラスについても排除した。
具体的には、擬似クラスを使うのをやめて、必要な処理だけを、ベタな格好で書き直した。
その結果として、それなりに分かりやすいコードになっているのだが、それでも、画面キャプチャー用には1000行近いソースコードが必要になっている。
二つ目の理由としては、ライセンスの問題を回避するためだ。
つまり、Gnome-Remote-Desktop-Daemonのソースコードの原型を残してしまうと、作者製ソフトも、GPL相当のライセンスにしなければならなくなるので、原型を残さない様にしてみた訳だ。
何にしても、Waylandセッション用の画面キャプチャー・仮想キーボード・マウス入力処理が、これからどうなっていくのは、要注目だ。
つまり、もし、サードパーティーを締め出す方向に動くのだとしたら、前述した様に、Linuxの社会主義国化が加速する事になる。
まあ、元々、Linuxというのは、資本主義国ではないので、今頃、何を言っているの? みたいな人も多いのかもしれないのだが・・・

