スポンサーリンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« Mirror-DTC for Mac 1.4.1を公開 | トップページ | 次はAmuseGraphics系 »

macOS10.15対応も行なった

今日は、Mirror-DTC for Mac Ver1.4.1をリリースしたのだが、予定より、2日くらいは遅くなった。これは、結局はヤメたのだが、転送対象ウインドウを隠す処理の導入方法を検討した事と、macOS10.15への対応が必要になった事が原因だ。

まず、Mac版では、Windows / Ubuntu版には実装した、転送対象ウインドウを隠す処理を実装しなかったのだが、これは、色々と調査したり、試したりした結果として、macOSで同様の処理を実現する事は不可能、と、判断したからだ。

macOSでも、Accessibility 関連のAPIを利用すれば、他プロセスのウインドウを移動する事は可能なのだが、今回、初めて試してみたところでは、Ubuntu18.04LTSの様に、移動範囲は限られていて、デスクトップ領域から完全に消え去る所までは動かせなかった。

例えば、大きく右側に移動させてみても、ウインドウの最小化ボタンが見えるくらいの範囲はデスクトップに残されるし、左側に移動させても同様だ。そして、下側に移動させても同程度の大きさの領域は残され、上側に移動させると全領域が残される。

つまり、Accessibllity関連のAPIを利用してウインドウを移動させても、ユーザーがマウスを使って、再度、そのウインドウを移動可能な位置にまでしか移動できないので、このAPIを使って、ウインドウを完全に隠す事は出来なかった訳だ。

なので、更に、色々と調べてみたのだが、実現可能な方法は見つからず、「Stack Overflow」で、作者と同様の機能を実現したいと鑑みられる人の以下の様な質問は発見できたのだが、その質問への回答も付いていなかった訳だ。

Cocoa Accessibility API: Hide a window

と、言う事で、macOSでも、Accessibility関連のAPIを利用すれば、指定ウインドウを画面の端に移動する、程度のことは可能、ということは判っているのだが、その方法では、ウインドウを完全に隠すことにはならない。

また、それ以前の問題として、macOSでは、Accessibility関連のAPIを使おうとすると、ユーザーに特別な設定を要求することになるので、直感的には、コンピュータの制御が必要とされない筈のトランスポーターで、そういう設定をユーザーに要求するのもどうか、という事もあったので、macOS版トランスポーターでは、転送画面を隠す処理は実装しないことにした。

と、言うことなので、mac版トランスポーターでは、転送対象としたウインドウもデスクトップに残されるのだが、これは、Windows / Ubuntuと比べて、macOSの自由度が低いためなので、作者が処理の実装をサボった結果ではない。

更に言えば、Windows / Ubuntu版では、ファイル転送時にサーバーが表示する各種ダイアログは最前面表示する様に変更したのだが、macOS版では、この処理も実装しなかった。

これは、macOSの場合、前述のAccessibility関連の話と同様に、プログラム的にはウインドウを最前面に持って行こうとしても、出来なくされていて、最前面ではない場合には、Dockのアイコンが注意勧告する、みたいな格好になっていたからだ。

つまり、プログラム的に最前面表示指定してみても、結局は、ユーザーがDockのアイコンをクリックしないと最前面には移動しないので、そんな処理を実装してみても、ユーザー操作が多くなるだけなので、操作性を改悪することにしかならない、ということで、実装はヤメることにした訳だ。

で、表題にした様に、今回、macOS10.15対応も行なったのだが、これは、macOS10.15では、画面キャプチャーを行う為にも、ユーザー設定が必要になる予定になっているからだ。

つまり、Mojaveでは、マイクからの録音をするソフトの初回実行時には、マイクからの録音を行おうとしている、というダイアログが表示され、ユーザーがそのダイアログで録音を許可しなかった場合、録音データは供給されないので、当該ソフトは実質的には使い物にならなくなる様になったのだが、次バージョンである所のCatalinaでは、デスクトップ等の画面収録についても、同様の処理が追加されることになった訳だ。

もっとも、少なくともβ5の現時点では、画面収録に関しては、その旨が通知されるものの、設定は環境設定に移動して行う必要があって、設定を行っても、そのままではソフトは正常に動作継続できないので、その時点で、ソフトを終了させ、再度、起動し直す必要がある。

これは、作者が調査した結果ではなくて、macOSが表示しているダイアログにその旨が書かれているので、間違いはない筈だ。

と、言うことで、macOS10.15 Catalinaでは、Mirror-DTC Server / Transporter / TiExtenderの様に、画面収録機能を実装しているソフトの場合、画面収録を開始したタイミングでmacOSがその旨のダイアログを表示し、設定する旨の応答をユーザーが行えば、環境設定の当該ウインドウが開かれるのだが、そこで画面収録を許可しても、一旦、プログラムを終了させないと、正常な動作継続は行えない仕様になった訳だ。

言い換えれば、macOS10.15では、実際に画面収録が必要になったタイミングでmacOSにその処理をブロックされ、ユーザーがブロックを解除したとしても、プログラムを終了させない限り、動作継続は不可となることになるので、これでは、ユーザーの印象がいたって悪くなる。

なので、macOS10.15対応としては、実際に画面収録を行う必要が生じる前に、内部処理として画面収録を行ってみることで、上記の様なmacOSの仕組みを動作させてしまう、という対応を取ることにした訳だ。

更に言えば、トランスポーターは、最初、macOS10.15 Catalinaでは、全く動作しなかったのだが、これは、デスクトップ上のウインドウを列挙して、そのウインドウの名称を取得する処理についても、画面収録プライバシーの範疇に入っていたからだ。

つまり、ユーザーが画面収録を許可しないと、通常はウインドウのデータベースにあるkCGWindowNameキーのデータが取り出せなくなっているので、トラブルになる訳だ。

何故なら、トランスポーターは、基本的には、ウインドウリストを採取した後、そのリストの中から対象ウインドウを指定して初めて、そのウインドウの映像をキャプチャーするので、ウインドウリストが作成できないと、ウインドウキャプチャーも行えない。

そして、上記のAPIを使用しても、前述のmacOSによるダイアログは表示されないので、ユーザー的には、何も列挙されていないウインドウリストを眺めているしかなくなる訳だ。

なので、トランスポーターでは、本来、まだ、画面キャプチャーが必要になっていないタイミングで、Serverと同様に、内部処理として画面キャプチャーを行ってみることで、macOSの画面収録用ダイアログを表示させる様にした。

と、言うことなので、macOS10.15では、画面収録関係の処理が変更されるのだが、上記の様に、macOSからの注意勧告ダイアログが表示されずに、処理がブロックされてしまうケースもある感じなので、今まで動作していたソフトが普通にクラッシュしたりするケースも出てくるかもしれない。

その場合には、「シスフム環境設定」-「セキュリティとプライバーシ」の「プライバシー」に追加されることになる筈の「画面収録」で、そのソフトを指定してやる必要があるかもしれない。

macOSからの注意勧告ダイアログが表示される場合にも、初回実行時には、正常に動作を継続させる事は出来ないので、そのソフトが画面収録プライバシーを必要とする事が明らかな場合には、予め、手動で、設定を行っておくのが良いかもしれない。

もっとも、例えば、Mirror-DTC Serverの場合、画面収録以外に、マイク録音、アクセシビリティーAPIの利用も必須なので、正常動作させたければ、少なくとも、3つの設定を、間違わずに行っておく必要があるので、勘弁してくれ、と、言いたくなるのは作者だけではないかもしれない。

まあ、同様の話はWindows10にもあって、作者製ソフトがマトモに動作しない! といったクレームメールをもらって、詳細を確認してみると、録音許可が行われていなかっただけだった、みたいな事も多々あった。

なので、上記の様な話はmacOSに限った話ではないのだが、ユーザーとしても開発者としても、OSがどんどん不便になっていくのは如何なものか、と、思ってしまう今日この頃だ。

ちなみに、少し前に書いた様に、macOS10.15では、Appleの公証がないソフトは普通に立ち上げる事が出来なくなっている。

このため、作者的には、Mirror-DTC for Mac Ver1.4.1 Client / Server / Transporterは全てAppleの公証を得たバイナリにしたのだが、この公証を得る為には、署名も必要になるので、Appleにデペロッパー登録していない人は、実質的に、macOS10.15で普通に動作するプログラムは公開できない事になる。

もっとも、作者的にも、Windows用ソフトには署名していないので、作者製ソフトは、Windows10では普通に立ち上げる事は出来ないのだが、それでも、普通に利用されている。

これは、Windowsでは、ソフトに署名する為には、毎年数十万円程度の維持費がかかる認証機関への登録が必須なため、大昔から、署名されるソフトは大手企業のソフトに限られていたから、かもしれない。

つまり、Windows環境では、殆どのソフトは署名されない状態で公開されてきているので、実質的に、Windows版ソフトには署名は不要、という民意が得られている訳なのだが、macOS用ソフトに署名するためには、Appleにデベロッパー登録が必要になるのだが、その費用としては、年間1万数千円程度でしかないので、macOS用ソフトに対する署名/公証が一般化するかどうかは見ものかもしれない。

まあ、macOS 10.15 Catalinaでも、少なくともβ版の現状では、数日前に書いた様に、アイコンの右クリックからの起動で、公証がないソフトも実行は可能になっているので、Windowsソフトと同様に、普通に、署名や公証がないソフトも利用可能ではあるのだが。

« Mirror-DTC for Mac 1.4.1を公開 | トップページ | 次はAmuseGraphics系 »

2019年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google