ダークモードにも少し対応
今は、TiMediaServerの更新開発フェーズで、一応、完成したかなあ、という段階だ。なので、オンラインヘルプの更新を行おうか、と、思ったりもしているのだが、この際なので、ダークモードにも少し対応させておく事にした。
ダークモードというのをGoogleで検索すると、色々とヒットする。
具体的には、macOSだとか、iOS以外に、Androidにも、ダークモードというのはある様なので、それらに関する情報がヒットする。
と、言う事で、巷では、ダークモードが大流行りな訳なのだが、実際の所、作者的には、ダークモードは、出始めの頃に少し使ってみた事がある以外は、全く使っていないモードになる。
つまり、出始めの頃には、どんなモノだろう? という好奇心もあったので、使ってみた訳なのだが、その結果として、普通に見づらくなる事が判ったので、それ以降、全く使わなくなった訳だ。
にも関わらず、macOS用の作者製アプリは全てダークモードに対応している。
これは何故なのか、というと、macOS用ソフトの場合、Apple純正のライブラリをリンクしていれば、自動的に、ダークモードに対応する様になっているからだ。
つまり、作者的には、macOS環境では、Xcodeを使ってApple純正のライブラリが使われる格好で開発しているので、Appleがダークモードを提供する様になると、自動的に、作者製ソフトもダークモードをサポートする様になった訳だ。
上記の様な格好になっているのは、タマタマ、という訳ではない。
何故なら、作者製のmacOS向けソフトは、昔、Javaを使って開発していたからだ。
これは、Javaを使って開発していると、macOS以外に、Ubuntuでも、更には、Windowsでも、普通に動作するアプリが開発できたし、その内、Androidが出てきたのだが、そのAndroid用アプリの開発言語としても、Javaが採用されたので、Javaを使って開発していれば、開発効率が非常に高い! と、思ったりもしていたからだ。
しかし、その内、macOSでのApple純正Javaのサポートは中止され、純正Javaを使ってmacOS向けにソフトを開発しようとすると、作者製ソフトで多用しているOpenGLを使うのが困難になったりした。
また、macOSがフルスクリーン表示をサポートする様になっても、Javaアプリでは、当該機能を使う事は困難、というか、実質的に不可能っぽかったので、代替機能として、全画面表示を自前でサポートしたりもした訳だ。
しかし、上記以外にも、Apple純正ソフトが普通に使っているのに、Javaアプリでは使えない! みたいな機能が増えてきた、という事もあったし、Apple純正Javaとは異なり、純正Javaで開発したソフトはmacOS用に普通にインストールしたり実行したりする事が出来なくなった! みたいな事もあった。
なので、そんな苦労してまでJavaで開発するよりは、ネイティブアプリ化した方が楽! という事で、ある時期からJavaでの開発を取りやめて、ネイティブアプリ化した結果、前述の様な、ダークモードにも、何もしなくても、対応できた訳だ。
と、言う事で、作者製のmacOS向けソフトはmacOSのダークモードに対応しているのだが、Windows向けソフトは対応していない。
その理由は、作者製ソフトは、大昔から、Windowsネイティブアプリなのだが、Windows的には、macOSとは異なり、だからといって、自動的にダークモードに対応させたりしてくれないからだ。
そして、前述の様に、作者的には、ダークモードを使っていないし、実際の所、Windowsが10からHiDPI表示に力を入れ始めた頃、それにも対応していなかった作者製アプリを使っていたユーザーからは、対応してくれないと表示が小さくて読めない! みたいなクレームメールがいくつも来ていた訳だ。
なので、HiDPI対応については、作者的にも、Windows10の初期段階から、結構、積極的に行ったのだが、ダークモードについては、サポートしていないからといって、別に、クレームメールは一つも来ていない。
更に言えば、作者の手持ちソフトを色々と確認してみた所、Win32APIを使っていると思われる昔からあるソフトは、全て、ダークモードには対応していない! という事が判った。
つまり、Windowsのダークモードに付き合っているソフトは、未だに少ない! と、考えられるので、別に、作者製ソフトもダークモードに対応させる必要性は感じていないのだが、ネットで検索してみると、Win32アプリでも、ダークモードに対応できる! みたいなマイクロソフトのページが見つかった。
なので、それを見てみた所、タイトルバーの色だけは、簡単にダークモード用に変更する事は出来る感じだった。
もっとも、前述のマイクロソフトのページは、やらせる気がない感じの記述内容になっていた。
具体的には、使用するC++の言語バージョンを上げないと動作しないコードをインクルードしなければならず、かつ、それをやってみても、マトモにビルドできない様なサンプルコードが記載されていた訳だ。
と、言う事で、ダークモードについては、Appleとマイクロソフトではやる気の違いが大きすぎる感じで、その結果として、macOSでは殆ど全てのソフトがダークモードに対応しているにも関わらず、Windowsでは、対応しているソフトはマイクロソフト純正品だけ? みたいな状況になっている、と、思われる。
なので、作者的にも、HiDPI対応とは異なり、ダークモード対応については、まだまだ、真面目にする気にはならないのだが、前述の様に、タイトルバーの色については、ダークモード用にする事が可能の様だった。
ただし、ダークモードの判定は、マイクロソフトのページに記載されているサンプルコードを動作させる事が出来なかったので、純正の方式は使えないのだが、更にネットを検索してみると、レジストリを参照すれば判定可能! みたいな一般開発者のページがヒットした。
そのやり方だと、普通にWindows11での判定はできたので、作者製ソフトの中では、テストアプリ扱いになっているTiMediaServerについては、そんな感じのやり方で、ダークモード時には、タイトルバーの色だけは変わる様にしておこうか、と、思っている今日この頃だ。

