非NVIDIA出力1枚 + NVIDIA出力8枚を、使いやすく整列するソフトを作った話
非NVIDIA出力1枚 + NVIDIA出力8枚を、使いやすく整列するソフトを作った話
はじめに
マルチディスプレイ環境を大きくすると、意外なところで運用が難しくなります。
特に、
- NVIDIA GPU に 8 画面
- iGPU(Intel 内蔵GPU)に 1 画面
というような構成では、Windows の画面番号 と NVIDIA コントロールパネル側の認識 がきれいに揃わず、日常運用で混乱しやすくなります。
今回作ったのは、そうした環境で
- 画面の物理的な並びを安定して管理
- NVIDIA 側 1〜8、非NVIDIA 側 9 のような独自ルールで表示
- ドラッグで並べて、Windows の実配置へ適用
- 将来的にはカーソル循環やマルチスクリーン表示アプリにもつなげる
ための、画面整列ソフトです。
この記事では、
詳しい仕組みの話 と、
PCにそこまで詳しくない人にも分かる話 を、両方混ぜて説明します。
まず結論
このソフトの考え方は、かなりシンプルです。
- Windows は「実際に効く画面配置」を担当
- ソフトは「どの物理モニターがどれか」を追跡
- 番号はソフト独自で付ける
これだけです。
Windows の「1番モニター」「2番モニター」という表示は、見た目上は分かりやすいのですが、
再起動や接続状態の変化でズレることがあります。
一方、実際の運用では、
- いつもの左上のモニター
- NVIDIA 側の 3 番として扱いたい画面
- 非NVIDIA 側の管理用画面
のように、人間側の使い方 のほうが重要です。
そのズレを埋めるのが、このソフトです。
1. そもそも何が困るのか
よくある理想
たとえば 9 画面あるとき、使う側としてはこう考えます。
- NVIDIA 側の 8 枚は 1〜8 で綺麗に並んでほしい
- iGPU 側の 1 枚は 9 番扱いにしたい
- 画面配置を変えても、同じ物理画面は同じ役割でいてほしい
- 再起動しても運用が崩れてほしくない
これは自然な感覚です。
実際に起こること
しかし実際には、
- Windows の画面設定で見える番号
- NVIDIA コントロールパネルで見える番号
- 物理的な並び
- アプリが実際にウィンドウを出す先
が、きれいに一致しないことがあります。
特に iGPU + NVIDIA の混在環境 では、
NVIDIA 側だけで並び替えをすると、Windows 側の画面設定が思ったようにならないことがあります。
つまり、「見えている番号」と「実際に使いたい並び」がズレる のが問題です。
2. かんたんに言うと
このソフトは、たとえるとこういう役割分担です。
Windows
机そのもの
- どこに何を置くか
- どこからどこへマウスが動くか
- どれがメイン画面か
を決める土台です。
自作ソフト
席表を管理する人
- この席はいつものAさん
- この席はNVIDIA側の3番
- この席は管理用の9番
というふうに、実物を見分けて覚えておく 役目です。
独自番号
席札
Windows が何番と呼んでいようが関係なく、
- これは 1
- これは 2
- これは 9
と、人間が使いやすい番号を付けます。
3. なぜ Windows だけではうまくいかないのか
Windows は「番号中心」ではない
ここが大事です。
Windows は、内部的には
「今つながっている表示パス」
を基準に画面管理しています。
簡単に言うと、
- どの GPU の
- どの表示出力が
- どのモニターにつながっていて
- 仮想デスクトップ上のどこにあるか
を見ています。
つまり Windows が重視しているのは、
見た目の 1 / 2 / 3 番号 ではなく、
実際に成立している接続と配置 です。
だから起きること
その結果、
- 再起動で番号がズレる
- 同じモニターなのに別番号になる
- 非NVIDIA の画面が途中番号に入る
- NVIDIA 側の都合と Windows 側の都合が揃わない
ということが起きます。
Windows から見ると壊れているわけではなく、
その時点で成立している構成を正しく扱っている だけです。
でも、使う人間からすると分かりにくい。
そこで、運用ルールを自作ソフト側で持つ必要があります。
4. なぜ NVIDIA 側で並べると Windows が狂うのか
問題の本質
NVIDIA コントロールパネルは、当然ながら
NVIDIA GPU に接続されている表示 を中心に見ます。
一方 Windows は、
- NVIDIA 側 8 画面
- iGPU 側 1 画面
を 全部まとめたシステム全体 として扱います。
つまり、
- NVIDIA は NVIDIA 側の世界を見ている
- Windows は全体世界を見ている
という違いがあります。
その結果
NVIDIA 側で「8枚を綺麗に並べた」としても、
Windows 側はその後に全体を再評価します。
すると、
- 非NVIDIA画面が途中番号に割り込む
- Windows の識別番号が変わる
- 見た目上、整列が崩れたように見える
ことがあります。
これは故障ではなく、
違う視点で再構成されている だけです。
5. このソフトがやっていること
5-1. 物理モニターを追跡する
このソフトは、単純な「Windowsの番号」ではなく、
モニターの識別情報を使って、
- 前回と同じ物理モニターか
- NVIDIA 側か
- 非NVIDIA 側か
- どの接続口に近いか
を判断します。
もう少し具体的に言うと、Windows の表示番号は再起動や検出順でズレることがあるので、ソフトは番号そのものを信用しません。その代わりに、たとえば次のような情報を使います。
monitorDevicePathadapterId + targetId + connectorInstance- EDID 情報
これらを組み合わせて、
- 前回の左上のモニターはこれ
- NVIDIA 側の8枚はこれ
- iGPU 側の1枚はこれ
というふうに、実物ベースで追跡します。
monitorDevicePath とは何か
これは、Windows がそのモニターを内部で管理しているデバイスの道筋 のようなものです。
言い換えると、そのモニター自身の住所 に近い情報です。
Windows の表示番号より安定していて、同じ型番のモニターが複数あっても区別の手がかりになります。
adapterId + targetId + connectorInstance とは何か
これは、どのGPUの、どの表示先で、どのコネクタ寄りか を表す組み合わせです。
adapterId= どの GPU かtargetId= その GPU のどの表示ターゲットかconnectorInstance= その出力口をさらに見分ける補助情報
つまり、これはモニターそのものというより、どの接続位置にぶら下がっているかを追う情報です。
EDID とは何か
EDID は、モニターが自分の情報をPCへ伝えるためのデータです。
メーカー名、製品コード、解像度に関する情報などが入っています。
ただし、EDID だけでは同じ型番のモニターを完全に区別できないこともあるので、これ単独ではなく、上の情報と合わせて使います。
なぜここまでやるのか
これをやる理由は単純で、Windows の番号だけでは運用が安定しないからです。
たとえば再起動後に、Windows 上では非NVIDIA 側の画面が 5 番になっていたとしても、ソフト側では
- この実物は iGPU 側の管理用画面
- だから独自番号では 9 番扱い
と判断できます。
そのため、再起動や再認識が起きても、
同じ実物を同じ役割として扱いやすくなります。
5-2. 独自番号を付ける
番号は 2 モードで考えています。
モード1: 運用固定モード
- NVIDIA 側 = 1〜8
- 非NVIDIA 側 = 9
これが、いちばん実運用向けです。
モード2: 並び順モード
- 左から右
- 上から下
のような順番で、1,2,3… と付けます。
こちらは、見た目重視で扱いやすいモードです。
5-3. ドラッグで配置する
ソフト上で画面をドラッグして並べ替え、
その結果を Windows に適用します。
これにより、
- マウスの移動
- ウィンドウの配置
- メイン画面
- 仮想デスクトップ上の位置関係
が、実際の運用に合った形になります。
6. このソフトでできること
現時点または今後の発展も含めると、次のような機能が考えられます。
配置管理
- 画面をドラッグして並べる
- メイン画面を切り替える
- 現在のレイアウトを保存する
- 保存済みレイアウトへ戻す
- 再起動後に再適用する
運用番号管理
- NVIDIA 側 1〜8 固定
- 非NVIDIA 側 9 固定
- 並べた順番で 1..N の採番
- どちらのモードでも切り替え可能
見える化
- 各画面の識別表示
- 色分け表示
- 独自番号表示
- NVIDIA / 非NVIDIA の区別表示
今後の拡張
- カーソルの上下左右ラップ
- 8画面またぎの専用プレーヤー
- 一部画面だけ PowerPoint、中央は動画などの領域割当
- 9番画面を操作画面として固定運用
7. 何が一番価値なのか
このソフトの価値は、単なる「並べ替え」ではありません。
価値1: 番号の混乱を減らせる
Windows と NVIDIA の番号がズレても、
自分のルールで一貫して扱える のが大きいです。
価値2: 再起動後も運用が崩れにくい
Windows の見た目番号が変わっても、
物理モニター追跡で戻しやすいです。
価値3: 混在構成でも使いやすくできる
iGPU + NVIDIA という、少し扱いにくい構成でも、
人間側の都合で整列管理 できます。
価値4: 専用システムへの土台になる
将来的に、
- 動画ウォール
- 複数画面プレーヤー
- 監視画面システム
- 店舗・展示用のサイネージ
- プレゼン・映像送出ツール
へ発展させる土台になります。
8. 具体例
たとえば 9 画面構成で、次のような使い方ができます。
例1: 管理しやすい番号付け
- NVIDIA 側の 8 画面 → 1〜8
- iGPU 側の管理画面 → 9
Windows が途中で 5 番と見せてきても、
このソフトの上では 9 番として扱えます。
例2: 再起動後の復元
再起動したら Windows の番号がズレた。
でもこのソフトは、
「これは前回の左端の物理モニター」
と認識して、独自ルールで再配置できます。
例3: 将来の映像分割
- 左 2 画面 → PowerPoint
- 中央 4 画面 → 動画
- 右 2 画面 → ロゴや情報表示
- 9 番画面 → 操作画面
のような構成へ発展させることもできます。
9. 技術寄りに見るとどういうソフトか
少し技術寄りに言うと、このソフトは
- Windows の実表示構成
- 物理モニター追跡
- 独自の論理番号
- UI 上のドラッグ操作
- Windows への適用
を分離して考えています。
この分離がポイントです。
悪い設計
- Windows の番号をそのまま信じる
- NVIDIA 側番号もそのまま信じる
- 両者の番号を無理やり一致させようとする
これは、混在環境で壊れやすいです。
良い設計
- Windows は実配置だけ担当
- モニター追跡はソフトで担当
- 番号は独自に付ける
- UI 上の運用を人間基準で作る
これなら、番号の揺れに強くなります。
10. こんな人に向いている
このソフトは、次のような人に向いています。
- マルチディスプレイを大量に使う人
- NVIDIA + iGPU の混在環境で困っている人
- Windows と NVIDIA の番号ズレに悩んでいる人
- サイネージや映像表示の土台を作りたい人
- 将来的に複数画面向けアプリを作りたい人
11. まとめ
このソフトの考え方を、最後にもう一度シンプルに書くとこうです。
Windows
実際に効く配置を担当する
自作ソフト
どの物理モニターがどれかを追跡する
自作ソフトの番号
人が使いやすい名前を付ける
この3つを分けることで、
iGPU + NVIDIA の混在環境でも、実用的で分かりやすい画面管理 ができるようになります。
Windows 単体では難しいことも、
「実配置」と「運用ルール」を分けるだけで、かなり扱いやすくなります。
おわりに
マルチディスプレイ環境は、画面が増えるほど「表示する」こと自体より、
どう管理するか が大事になります。
今回のソフトは、派手な見た目のツールというより、
混乱しやすい環境を、ちゃんと運用できる形に整えるための道具 です。
同じように、
- Windows の番号が信用できない
- NVIDIA 側と Windows 側で感覚がズレる
- 混在構成でも安定して管理したい
という悩みがあるなら、この方向はかなり有効です。
付記: 今後やりたいこと
- カーソル上下左右ラップ
- 配置プロファイルの複数管理
- 識別表示の強化
- 8画面またぎ専用プレーヤー
- 領域ごとのコンテンツ割当
- 操作用画面と表示用画面の分離