kondoumh のブログ

- とあるソフトウェアエンジニアのめったに更新されないブログ -

iEdit 2.30 リリース

f:id:kondoumh:20160410114137p:plain

約3年!!放置しておりました。ご無沙汰してました。

今回、機能追加やバグ修正はありません。

HiDPI 環境対応

最近 HiDPI をサポートした PC やタブレットが増えて、MacBook の Retina ディスプレイさながらテキストやアイコンなどを高い画素密度で美しく表示できる環境が普及しています。残念ながら iEdit を HiDPI 環境で動かすと、ツールバーのボタンや各ビューのスケールが縮小されてとても使えない状態になってしまいます。

f:id:kondoumh:20180212120614p:plain

本格的に対応するとなると、ウィンドウ生成周りや描画周り (特にダイアグラム部分) のレガシーなコードを書き直す必要がありますが、全く気乗りしない作業です。それで放置期間が長引いてしまいました。

今回、HiDPI を無視するビルドオプションの存在を知ったのがリリースのきっかけでした。このオプションでビルドしたバイナリを実行すると OS は「こいつ HiDPI って知らずに起動してるじゃん」と気付いて、どんな高精細のディスプレイ上でも、昔ながらの SVGA 的なサイズ感 *1 に調整してくれます。HiDPI じゃない環境では従来通り起動されます。実は起動用アイコンのプロパティで互換性の設定をすれば同じようなことができるのですが、利用者の手間が増えてしまうのと、必ずしも有効になるわけではなかったので、ビルドオプションで対応することにしました*2

f:id:kondoumh:20180212120653p:plain

ツールバーは16色のまま、ダイヤグラムは GPU によるレンダリングにも対応しないため*3、古臭い感が抜けませんが、まあベースが古いので・・。しかし、Microsoft はレガシー Win32 アプリの面倒をよく見てくれて助かります*4

Windows 10 サポート

前回リリース時はまだ Windows 8 時代で Windows 10 は Insider Preview でしたが、今や Windows 7 に拮抗するシェアを獲得しています。私も会社のラップトップが Windows 7 ですが Windows 10 オンリーになる日もそう遠くなさそうです*5。今回は Windows 7 でも動作確認してるので、おそらく 8 / 8.1 でも動作するのではないかと思います 。

Windows 10 サポートでやったことは最新の Visual C++ 2017 (内部バージョン 14.1) と Windows SDK (10.0.14393.0) でビルドしたこと、バージョン判定ロジックを修正したことぐらいです。Visual Studio 2017 でインストーラもガラリと変ってしまい、環境構築やプロジェクトの移行方法がよく分からなかったことも放置期間が長引いた原因になりました。

今後

ということで、ビルドし直しただけに近いリリースですが、マイナーバージョンを1つ上げました。 今後どの程度更新するか謎ですが、

  • コードベースの大幅変更を予定しない
  • 開発環境を常に最新版に更新して保守用環境 = 日常使いの環境にしておく

という状態になったので気楽に更新できる気がしています。

*1:96DPI のディスプレイに表示した感じです。

*2:開発機が MacBook なので VMware Fusion 上の 仮想マシン (Windows 10 Fall Creators Update) で HiDPI を有効にして確認していますが、このバージョンではスケーリングの描画がかなり改善されたみたいなので、初期バージョンの Windows 10 では表示のされ方が異なるかもしれません。

*3:GPU を活かすべく Direct 2D も試してましたがそのコードも revert しました。

*4:なんとストアに出すためのオプションまであります。Windows は元来下位互換性を重視するプラットフォームですけどね。ディベロッパーが UWP アプリをガンガン開発してくれないからかもしれませんが。

*5:Update による違いがどのぐらい顕著になっていくのかは今のところ謎です。Windows 10 も古いビルドはサポート終了になっていたりします。