全く知らない技術をChatGPTと触ってみた

AutoHotkey, ChatGPT, Display Changer X, Windows

はじめに

NX開発推進部プロダクト開発第1G の寺島です。
普段はAndroidアプリの開発を行ってます。

最近生成AIによるコーディングがめざましい発展をしています。私も生成AIをAndroidアプリ開発に関するコーディングで活用しています。しかし、未知の技術領域でChatGPTを使った経験がなかったため、今回は「まったく知らない技術をChatGPTと二人三脚で触ってみる」というテーマで、試行錯誤の過程を記事にします。

自分がChatGPTを使いながら、やりたいことを実現した際の流れを紹介できればと思ってます。今後生成AIを使って、触ったことのない技術に挑戦しようとしている方々(エンジニア・非エンジニア問わず)の参考になれば幸いです。

ChatGPTを使って実現したいこと

私は家ではWindowsを使っています。Windowsを使っている際に、少し困っていることがあります。それはディスプレイの配置を設定することです。Windowsでは Windowsボタン + I から以下のような画面を開くことができます。

この画面でディスプレイの配置を設定できます。たとえば、ディスプレイ2を横に切り替えます。その時、切り替えた直後に設定を反映するために、「変更の維持」ボタンをおさないといけません。

ディスプレイの縦・横を切り替えたときに、このボタンを押すのがなかなか難しいです。添付した画像だけをみると『ボタンを押すの難しいか?』と思うかもしれないです。思った方は、ディスプレイの向きを左に90度物理的に回転させてから、画像の「変更の維持」までマウスを運んでみてください。体験すると分かりやすいのですが、結構煩わしいのではないかと思います。

スマホ等で見ている方もいるかもしれないので、図を使って説明します。

ディスプレイのマウス動かすの煩わしい.png

図のようにディスプレイの画面は横設定のままでディスプレイを縦向きにすると、マウスを動かす向きとマウスカーソルが動く向きがチグハグになり操作が難しいです。普段はこのマウスを動かす向きとマウスカーソルが動く向きが一致しているから、直感的に動かせているのだと思います。

そこで今回はこの煩わしさをなくすためにキーボードのボタンを押すだけでディスプレイの配置を変更できるようにします。

実現可能性の検討

まず、ChatGPTに以下のように相談してみました。
(ここから先ChatGPTに質問している内容は、全部1つのチャット内で完結しています。)

上記のように質問すると、3つの方法を提案してくれました。
ざっくりと回答を説明すると、以下のような内容でした。

方法1は、AutoHotkey + NirCmd + DisplaySwitchを使う方法でした。
こちらは3つのツールを組み合わせることで、1つのボタンでディスプレイの切り替えが可能だと教えてくれました。

方法2は、NirSoftのMultiMonitorToolを使ってディスプレイを細かく制御する方法でした。
コマンドラインでコマンドを実行すると、ディスプレイに関する設定を変更できると教えてくれました。

方法3は、DisplayChangerIIやDisplayChangerXを使う方法を提案してくれました。
実行ファイルをコマンドラインから実行させることで、複雑な画面構成を切り替えられることが分かりました。

ここで得られたツールの情報について詳しく調べてみることにしました。
調べる時には、各ツールの詳細についてもChatGPTに聞きました。
質問文は以下のようになります。

返ってきた内容をもとに自分でもGoogle検索をかけながら、詳細を調べました。

AutoHotkeyについて

Windowsでの自動化・ショートカット作成・マクロ操作を作るための無料ツールです。
スクリプトを書くことで Ctrl + S のようなショートカットキーを押した時に、設定した実行ファイル等を実行できるようです。
https://www.autohotkey.com/

具体的には以下のようなことができるみたいでした。

  • Ctrl + S を押すことで、指定ブラウザを開けるようにする
  • マウス操作を自動で行う
  • 定型文を Ctrl + Shift + E で自動入力

こちらのツール単体では、ディスプレイの操作をすることはできなさそうです。
別のツールと組み合わせることで、自分のやりたいことが実現可能そうでした。

NirSoft (MultiMonitorTool)について

こちらのツールを使うことで、コマンドラインからディスプレイの制御ができます。
https://www.nirsoft.net/utils/multi_monitor_tool.html

具体的には以下のようなことができるようです。

  • ディスプレイのON / OFF
  • プライマリディスプレイの変更(Windowsは主となるディスプレイを決められる)
  • ディスプレイの向きを変える
  • 現状の画面構成を保存/復元

こちらのツールを使うことで、ディスプレイの縦・横を変更することができそうでした。

DisplayChangerII や DisplayChangerXについて

DisplayChangerIIは公式にはサポートが終了しており、DisplayChangerXが作成されていました。
したがって、DisplayChangerXの詳細だけを調べています。
https://12noon.com/?page_id=4793

こちらはツールを使うことで以下のようなことができるようです。

  • ディスプレイの縦・横の変更
  • ディスプレイの解像度の変更
  • ディスプレイの配置や拡張・複製の変更

こちらのツールはNirSoftのMultiMonitorTool(以下、MultiMonitorTool)とできることはほぼ似た感じでした。
しかし、DisplayChangerXは30日間のみ無料で使用することができ、それ以降は課金をしないといけないようでした。

結果

調査の結果からAutoHotkeyとNirSoftのMultiMonitorToolを使うことで、実現できそうだと判断しました。
DisplayChangerXは、30日以上使用すると課金する必要があるため、選択肢から外しました。

選定技術の検証

以下の2つのツールを使うことで、自分のやりたいことが実現できそうでした。

  • AutoHotkey
  • MultiMonitorTool

方針を確定させるために、上記の2つのツールについてより詳細を調べることにします。
まず、ディスプレイの状態を変更できないといけないので、MultiMonitorToolから簡単に触ってみました。

MultiMonitorTool

改めて、MultiMonitorToolの使い方やできることをChatGPTに質問してみました。

まず、以下の公式サイトから実行ファイルをダウンロードすることができるみたいだったので、ダウンロードしてみました。
https://www.nirsoft.net/utils/multi_monitor_tool.html

また、ChatGPTは具体的なコマンドの例をいくつか教えてくれていたので、その中でも以下の2つのコマンドを試してみることにしました。

  • ディスプレイの構成を保存する
  • 保存したディスプレイの構成を復元する

ディスプレイの構成を保存する

以下のようなコマンドを打つことで、ディスプレイの構成を設定ファイルとして保存ができるとのことでした。

ディスプレイの構成ファイルは”.cfg”というファイル名になるようでした。
デスクトップを保存先にして、上記のコマンドを打って試してみたところ、設定ファイルが保存されました。
あらかじめ、ディスプレイを縦置きした場合の状態の設定ファイルと横置きした場合の設定ファイルを保存しています。

  • portrait.cfg
  • landscape.cfg

設定ファイルは実際に保存できていたので、ディスプレイの構成を復元できるかを確認することにしました。

保存したディスプレイの構成を復元する

ChatGPTによると以下のようなコマンドを打つことで、ディスプレイの構成を復元できるとのことでした。

先ほど保存した以下のファイルを上記のコマンドで実際に読み込みました。

  • portrait.cfg
  • landscape.cfg

portrait.cfgを読み込みとディスプレイが縦向きになり、landscape.cfgを読み込むとディスプレイが横向きになります。

結果

MultiMonitorToolを使うことで、コマンドラインから画面の向きを切り替えることが可能でした。

AutoHotkey

次にAutoHotkeyを簡単に触って自分のやりたいことが可能か確認しました。
AutoHotkeyはドキュメントにサンプルコードがあったため、そのコードを試しました。
https://www.autohotkey.com/docs/v2/Tutorial.htm

AutoHotkeyについては、分かりやすいドキュメントが公式で存在したため、あまりChatGPTに聞く機会はありませんでした。
上記のリンクの内容を試すと、自分の指定したショートカットでMsgBoxを表示できました。

最終的に試したコードは以下のようになりました。

スクリプトを書いたのは良いのですが、これをどのようにすれば使えるようになるかわからなかったのでChatGPTに聞きました。

ChatGPTは以下の手順でショートカットが有効になると教えてくれました。

  • 手順1: スクリプトファイル(ahkの拡張子のファイル)を作成
  • 手順2: ahkの拡張子ファイルをダブルクリック
  • 手順3: 指定したショートカットを押す

記載したスクリプトは、 Ctrl + ; を押すと、”テスト”と書かれたメッセージボックスを出すという意図のスクリプトです。
ChatGPTに言われた手順を試してみると、実際にメッセージボックスが表示されました。

さらに調べた内容によるとMsgBoxを出すかわりに実行ファイルを呼び出すことも可能だということがわかってます。

MsgBoxの表示確認.png

結果

以下、2つのツールを使って、最終ゴールまで到達できそうなため方針を以下で確定しました。

  • MultiMonitorToolを使って、画面の向きを切り替える
  • AutoHotkeyを使って、ショートカットを設定する

実装編

方針が確定したので、ショートカットから画面の向きを切り替えられる状態までを実装します。
といっても画面の向きの切り替えについては、できるようになっています。

再掲すると以下の2つのコマンドを実行することで、画面の向きが切り替えられます。

縦向きにするには以下のコマンドを実行します。

横向きにするには以下のコマンドを実行します。

上記のコマンドを指定したショートカットで動かせるようになれば目標達成です。

ここでChatGPTに以下のように質問してみました。

ChatGPTは、以下のようなスクリプトを提案してくれました。

パスの部分は実際の設定ファイルのパスを指定します。
また今回は Ctrl + ; で縦向きの設定ファイルを読み込みようにしています。
上記をスクリプトにして実際に試したところ、 Ctrl + ; で画面の向きが切り替わることを確認できました。

また、さらにショートカットをもう1つ増やし、横向きのショートカットも作ってあげれば、簡単に画面の向きを切り替えられます。

実際に動かした様子

実際に動かした様子.gif

まとめ

今回は自分が触ったことのない技術領域でChatGPTを使ったときのことを記事にしてみました。個人的に生成AIを使って何かをやりたいときは、いきなり全部をやってもらうようにするよりは段階を踏んで指示出しをするスタイルで使っています。

たとえば、今回のようにだんだんと詳細を詰めていくのが良いのかなと思ってます。
今回は以下のような流れでした。

  1. ざっくり質問してみる
  2. 提案されたものを調査する
  3. 方針の確定
  4. 実装

そこまで複雑な内容でなければ、はじめて触った内容でも何ら問題なく実装を行うことができました。エンジニアでなくても、今回のようなショートカットを作ることは簡単にできそうです。

ここまで記事を読んでいただきありがとうございました。

参考

この記事を書いた人

寺島広
寺島広
レコチョクの寺島です。
Android アプリ開発に携わっています。
アニメ、ゲームなどが好きです。