Snappy 開発ブログ 第2話

スナッピー2 ブログ

最初にぶつかった壁「デュアルモニター対応」

こんにちは。

前回は、Snappyを作ろうと思ったきっかけについてお話ししました。今回は、開発を始めて最初に直面した大きな壁、「デュアルモニター対応」について書いてみようと思います。


シングルモニターでは問題なし

最初の試作品は、思っていた以上に順調でした。
画面をドラッグして範囲を選択し、そのままコピーや保存ができる。
基本的な機能はすぐに完成し、「これなら意外と早く完成するかも」と思っていました。

ところが…。


デュアルモニターで事件発生

開発用PCを普段使っているデュアルモニター環境で動かしてみると、すぐに異変に気付きました。

画面をドラッグすると、

  • 選択範囲がズレる
  • マウスカーソルと枠が一致しない
  • モニターをまたぐと位置がおかしくなる

「なぜ?」

シングルモニターでは正常なのに、デュアルモニターだけで発生する不具合です。

ここから原因探しが始まりました。


原因はWindowsのDPI倍率

調査を進めていくと、犯人はWindowsの表示倍率(DPIスケーリング)でした。

例えば、

  • 左モニター:100%
  • 右モニター:150%

このような設定になっていると、Windows内部では座標の扱いが変わるため、単純な座標計算では正しい位置を取得できません。

最初は「座標がズレているだけ」と思っていましたが、実際にはWindowsがモニターごとに異なる倍率で画面を管理していることが原因でした。


解決まで試行錯誤

何度もプログラムを書き直し、テストを繰り返しました。
100%・125%・150%・175%など、さまざまな組み合わせで検証し、不具合を一つずつ修正。

「これで直った!」と思っても、別の環境では再びズレる…。

そんなことの繰り返しでした。
開発は思っていた以上に地道な作業ですが、その分、一つ問題を解決できた時の達成感は格別です。


より多くの環境で快適に

Snappyは、自分だけが使えれば良いソフトではありません。
さまざまなモニター環境やWindowsの設定でも、ストレスなく使えることを目標にしています。
細かな部分ほど目立ちませんが、こうした積み重ねが「使いやすいソフト」につながると考えています。


次回予告

次回は、開発を進める中で欠かせない存在となったAIとの共同開発についてご紹介します。
AIをどのように活用しながらSnappyを進化させているのか、その裏側をお届けします。

今後もSnappyの開発ブログをよろしくお願いいたします!