PC設定がプログラムのデグレを招く例(画面の表示スケール)

PC設定がプログラムのデグレを招く例(画面の表示スケール)

「何もしていないのに壊れた」
一般人から凄腕エンジニアまで幅広く使われる言葉です。
大抵はバタフライエフェクトのように、
思いもよらないところに原因があるものです。
今回はそのような一見不思議な出来事として、
PC設定がプログラムに影響を与えた事例を紹介します。

起こったこと

Visual Studio上でプログラムの修正をしていました。
言語はVB.netです。
デザイナー(GUIで画面作成ができる機能です)から
画面のコントロールの一つを修正したところ、
画面の表示がおかしくなってしまいました。
具体的に書くと、テキストボックスのプロパティを変更したら、
そのテキストや修正していないボタンの大きさや位置が変わり、
画面自体の大きさまで変わっていました。
サイズなんか変更していないのに。。。

原因は、ディスプレイのスケール(拡大率)を変更したことでした。
VSのデザイナーにはスケールに合わせて
自動で画面やコントロールのサイズや位置が修正される機能があります。
(ちょっと分かりづらいですがこちらを参照)
その機能がコントロールのプロパティを修正した時に動作したことで、
直接変更していなかった設定値が変わっていました。

また、ローカル端末のスケールを変更して
開発環境にリモート接続してそこで上記の修正を行っていました。
接続元のスケールに合わせて接続先のスケールが自動調整されていため、
ローカルPCの設定が巡り巡ってリモート先のVSに影響していたという話でした。
今回はローカル端末のスケールを不用意に変えないようにして解決としましたが、
接続方法やツールによって上手い対処方法は変わりそうですので
もし皆さんの環境でも似た事象が発生したら参考にしてみてください。

得られた教訓

この話から、
・何でも疑ってかかること
・細かい内容にも気を配ること
の大事さを改めて感じました。
今後も「まさかそんな理由で!?」な不具合があったら
記事にまとめていこうと思います。