その1クリックが気に入らない。ShareX用の自分専用ツールをAIに作らせた

デスクトップアプリを作らせてみた

これまでのゲーム制作編では、AIにゼロからゲームを作らせて、動かして、注文を付けてきました。今回は少し方向を変えます。題材は、普段使っているWindowsの小さな不満です。

画像を右クリックして、いつものエディタで開く。そのために、毎回「その他のオプションを確認」を押さなければならない。

たった1クリックです。でも、何度も使う操作なので、その1クリックが気に入りません。

今回はこの不満を、AIに自分専用の道具を作ってもらうことで解消しました。最後には、別のPCへ持っていける導入用パッケージまで作っています。

スクリーンショットは、ずっとShareXを使っています

ShareXを使い始めたのは、フリーランスになった直後くらいです。何で知ったのかは、もう覚えていません。何かを探していて、偶然見つけたのだったと思います。

ShareXは、スクリーンショットの撮影や、撮った画像の簡単な編集などができるWindows用ツールです。それ以来、私のスクリーンショット用の定番になっています。

OneDriveなどにPrintScreenキーを横取りされるような使い方は、あまり好みではありません。スクリーンショットの操作は、自分で管理したい。その点も含めて、使い慣れたShareXを使い続けています。

ただ、今回の主役は撮影機能ではありません。付属のイメージエディタです。

ちょっとした画像編集に、ちょうどいい

ShareXのイメージエディタでは、よくこんな作業をしています。

  • 説明したい部分を枠で囲む。
  • 線や矢印を引く。
  • 文字やキャプションを入れる。
  • 見せたくない部分にモザイクをかける。
  • 必要な範囲だけクロップする。

仕事のエビデンス画像や、ブログに載せるスクリーンショットを、少しだけ加工したい。Adobe Photoshopを起動するほどではない。そんなときに、軽く起動してサッと編集できるのが気に入っています。

撮影した直後だけでなく、保存済みの画像を編集したいこともよくあります。今回の不満は、その画像を開くところから始まりました。

ShareXの画像エディターで猫の写真に文字、吹き出し、矢印、ぼかしとモザイクを加えた例

ShareXで猫の写真を編集した例です。文字や吹き出し、矢印、ぼかしとモザイクなど、ちょっとした説明用の加工を一つの画面で行えます。

よく使うShareXが、メニューの奥にいる

いろいろなソフトが右クリックメニューに対応した結果、旧コンテキストメニューはずいぶん長くなりました。私の環境では、べらぼうに長いです。

Microsoftも、旧メニューの長さや項目のまとまりにくさなどを課題として挙げ、Windows 11では、よく使う操作の配置やソフトごとの項目の整理を見直したと説明しています。モダンコンテキストメニューの設計意図(Microsoft公式)

その狙いは分かります。ただ、私の環境では、新旧どちらのメニューも長いです。モダンメニューの方が少し短くなってはいますが、それでも結構な長さがあります。

私の環境では、Windows 11で画像を右クリックしただけでは「ShareXで画像編集」が出てきません。旧コンテキストメニュー側にあるため、操作はこうなります。

右クリック → その他のオプションを確認 → ShareXで画像編集

整理前のWindows 11モダンコンテキストメニュー。ShareXの項目がなく、下部に「その他のオプションを確認」がある

整理前のモダンコンテキストメニューです。Clipchamp、フォト、ペイント、メモ帳の編集項目はありますが、ShareXは見当たりません。

画像を右クリックしたときにも「メモ帳で編集」が表示されますが、私がしたいのは画像そのものの編集なので、ここからメモ帳を使うことはありません。一方で、普段使うShareXは奥にいます。メニューの設計全体というより、私の使い方と、表に出ている項目が合っていないのが気になりました。

旧コンテキストメニューに表示されたShareXで画像編集とShareXイメージエディタで開くの項目

旧コンテキストメニューには「ShareXで画像編集」があります。このスクリーンショットでは「ShareXイメージエディタで開く」も表示されています。項目があっても、このメニューを開くひと手間が残ります。

比べると、旧メニューはやはりべらぼうに長く、モダンメニューでは項目が減っています。それでも、私が右クリックから使わないものはまだ並んでいます。

私にとっては、長さが少し短くなることに加えて、よく使うShareXをすぐ選べることが大事でした。

単に旧メニューへ戻すより、最初に出てくるメニューを、自分が使うものに合わせて整理したいと思いました。

そこで、AIに解決してもらう要求を二つに整理しました。

使わないものは隠す。よく使うShareXは表に出す。

不要な項目は「粛正」。ただし「恩赦」も用意する

まずは、私には不要な項目を非表示にしました。対象にしたのは、メモ帳(Notepad)、Clipchamp、フォト、ペイントなどです。これらのソフトが不要というより、私がこの右クリックメニューから使う必要がない、という話です。

レジストリエディタを開いて手作業で変更する代わりに、AIにPowerShellスクリプトを作ってもらいました。

ここで、消すだけにはしませんでした。非表示にする「粛正」と、必要になったら戻す「恩赦」の両方を用意しました。物騒な呼び方ですが、やりたいことは右クリックメニューの整理です。

Windowsの設定を変更する以上、元へ戻す手段を確保してから変更します。「使わないから隠したけれど、やっぱり必要だった」に対応できるようにしておきました。

作ったファイルは ContextMenu-Trim.ps1 です。このスクリプトも自分用に作成したもので、公開配布はしていません。Windows PowerShell 5.1で起動し、番号を選ぶ形にしました。私の保存先なら、次のように実行します。

& 'C:\usr\ps1\ContextMenu-Trim.ps1'
番号 操作
1 対象の登録情報を確認するだけ。設定は変更しない
2 見つかった対象項目を非表示にする。「粛正」
3 このツールが非表示にした項目を戻す。「恩赦」
0 終了する

実際の画面は英語表記で、「粛正」「恩赦」は私の呼び方です。まず1で対象を確認し、2で非表示にします。戻したければ再実行して3を選びます。

WebでWindowsの動作を変える方法を探すと、レジストリを直接書き換える手順をよく見かけます。私が目にする記事の多くにも、変更の危険性や「自己責任で」という注意書きがあります。今回は、そうした変更を行うなら、安全性と元に戻せることを重視したい、という思いもありました。

スクリプトは、対象の4本のソフトのパッケージ情報からメニュー拡張の識別子を調べ、現在のユーザーの HKCU\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Blocked に登録します。ソフト本体をアンインストールする処理ではありません。また、PNGだけでなく、その拡張が対象とするファイル種別全体に作用します。

AIにスクリプトを書かせれば、それだけで安全になるわけではありません。だからこそ、変更前に対象を確認できることと、加えた変更を記録して戻せることを、ツールの機能として持たせました。

変更記録は %LOCALAPPDATA%\PersonalContextMenuTrim\state.json に保存します。既に非表示になっている登録はそのままにし、復元時も、このツールの目印が残っている値だけを削除します。レジストリ全体のバックアップではなく、自分が加えた変更を記録して戻す仕組みです。

この state.json を削除すると、スクリプトの復元機能で変更を戻せなくなるため、残しておきます。

エクスプローラーを勝手に終了させる処理もありません。表示が変わらなければ、ファイル操作が終わったタイミングでタスクマネージャーから再起動する案内を出します。Windowsや対象ソフトのバージョンで表示が変わる可能性もあるため、操作後の確認までを一組にしています。

起動方法を調べるところから、AIに任せた

次は、ShareXを表に出す番です。

こちらがShareXの起動コマンドを調べ、引数まで揃えてAIに渡したわけではありません。イメージエディタを外部から直接起動できるのか、できるならどう呼ぶのか。その調査からAIに頼みました。

調査・相談を経て、実装は開発作業をAIに任せるためのツール「Codex」で進めました。制作時の依頼には、次のように書いています。

Windows11で画像を右クリックしたときに表示されるモダンコンテキストメニュー にShareXイメージエディタで開くを追加する。

作成したプロジェクト名は ShareXImageEditorContext です。画像編集機能そのものを新しく作るのではなく、選んだ画像をShareXへ渡す、小さな橋渡しのツールです。

調査で分かった起動方法は、次の形でした。

ShareX.exe -ImageEditor "画像ファイルのパス"

-ImageEditor と画像パスを渡す方法は、ShareX公式のコマンドライン引数の説明にも掲載されています。実際の起動時には、ShareX.exeの所在も指定します。

ここまでを自分で調べてから「このコードを書いて」と頼むのではなく、調査、起動方法の特定、Windows側の登録方法の検討、実装、確認と修正までをAIに担当させました。

最初の実装では、まだ目的を達成していなかった

ただし、一発で終わったわけではありません。

最初に作られたのは、ShareXを起動するラッパーと、旧コンテキストメニュー用の登録処理でした。ビルドはできても、それでは今回なくしたかった「その他のオプションを確認」が残ります。

途中で作業の完了状況を確認すると、AIも「主目的のモダンコンテキストメニューへの追加は未実装」と訂正しました。そこで、モダンメニュー対応を続けるよう指示しています。

コードができたことと、こちらの不満が解消したことは別でした。今回の合格条件は、あくまで「画像を右クリックして、最初のメニューからShareXのイメージエディタを開けること」です。

修正後は、Windowsのメニュー拡張用インターフェース IExplorerCommand をC++のDLLで実装し、パッケージの登録情報と組み合わせる構成になりました。この仕組みはMicrosoftの公式資料でも説明されています。

実物の主な構成は、次のとおりです。

ファイル 担当すること
Program.cs / ShareXImageEditorContext.csproj C#・.NET 8の起動用ツール
Command.cpp モダンメニューの表示条件と、選択画像をShareXへ渡す処理
AppxManifest.xml メニュー拡張とCOMサーバーの登録情報
publish-modern.ps1 / install-modern.ps1 開発用のビルド・パッケージ作成と登録・削除
build-release.ps1 / distribution 別PC向けの署名済みパッケージと導入用ファイルの作成

モダンメニューからの実際の呼び出しは、Command.cpp がShareXを直接起動します。C#の起動用ツールを経由してからShareXを呼ぶ流れではありません。

メニューはPNGやJPEGなど、対象の画像ファイルを選んだ場合に表示します。複数選択では、選んだものがすべて対象画像なら表示し、各画像をShareXへ渡す実装です。

AI側でビルドや登録状態、画像で表示対象になり、画像以外では非表示になることを確認した後、実際の右クリック操作は私が確認しました。そこでようやく「期待する動作をした」と返せました。

右クリック → ShareXイメージエディタで開く

なくしたかった1クリックが、なくなりました。

整理後のモダンコンテキストメニュー。ShareXイメージエディタで開くが直接表示され、Clipchamp、フォト、ペイント、メモ帳の編集項目は非表示

整理後は、モダンメニューから「ShareXイメージエディタで開く」を直接選べます。私がここから使わないClipchamp、フォト、ペイント、メモ帳の編集項目も非表示になりました。

別のPCにも持っていけるところまで作る

自分のPCで動いたので、最初の目的は達成です。ただ、別のPCでも同じように使いたくなりました。

そこで、追加でこう頼みました。

期待する動作をした。別PCでも使用可能なパッケージを作成する。

登録やパッケージ化まで、AIが何も言われずに勝手にやったわけではありません。こちらが次のゴールを伝え、そのための作業を進めてもらいました。

できあがったのは ShareXImageEditorContext-1.0.1-x64.zip です。中には、次のファイルをまとめています。

ShareXImageEditorContext-1.0.1-x64/
  ShareXImageEditorContext.msix
  ShareXImageEditorContext.cer
  Install.cmd
  Install.ps1
  Trust-Certificate.ps1
  Uninstall.cmd
  package-info.json
  README.txt

MSIXはWindowsにソフトを導入するためのパッケージ、CERはその署名を確認するための公開証明書です。秘密鍵はZIPに含めていません。

用意した導入手順は、次のとおりです。

  1. Windows 11のIntel/AMD 64bit版PCに、ShareX本体をインストールします。
  2. ZIPをすべて展開し、Install.cmd を通常のダブルクリックで実行します。
  3. ShareXが自動検出されなければ、ファイル選択画面で ShareX.exe を指定します。
  4. 初回は、自己署名の公開証明書を登録するために管理者承認を行います。
  5. 画像を右クリックして動作を確認します。項目が出なければ、サインアウトして再サインインします。

このツールは現在のユーザーに登録し、証明書をPCのTrustedPeopleストアへ登録する処理だけで管理者権限を使います。.NETは同梱する構成なので、導入先での追加インストールは不要です。ARM版は対象にしていません。

開発中の登録では dist フォルダーを残す必要がありましたが、配布版はWindowsがパッケージを管理します。導入後は、ZIPを展開したフォルダーを移動・削除できる形になっています。

削除は Uninstall.cmd、またはWindowsの「インストールされているアプリ」から行います。ShareX本体は削除しません。ShareXのパス設定と証明書は再インストール用に残す仕様で、証明書まで削除する場合の手順は同梱の README.txt に記載しています。

旧開発版を登録済みのPCでは、先に旧フォルダーの install-modern.ps1 -Uninstall で登録を解除する手順です。

ここで確認できているのは、制作したPCでの動作と、別PC向けパッケージの作成までです。署名やパッケージ内容などの検証報告はありますが、別PCでの実動作確認はまだできていません。

ソース一式と最新バイナリー

ソースと公開用のWindows版ZIPはGitHubに置いています。ShareX本体は別途必要です。導入時には、上記のとおり自己署名の公開証明書登録を伴います。

「作るほどでもない不満」が、道具を作る理由になった

今回できたことは、ShareXを右クリックメニューの表側へ出すことです。機能だけ見れば、小さなものです。

でも、私にとって大きかったのは、普段の「これ、ちょっと面倒だな」を、自分専用の道具にして解消できたことでした。

自分が使うものなので、不特定多数のために機能を増やす必要はありません。必要な画像を、いつものエディタで、少ない操作で開ければ十分です。その実現方法を調べ、プロジェクトを作り、ビルドして登録するところまでAIに任せられました。

こちらが担当したのは、不満を言葉にすること、元へ戻せる条件を付けること、できたものを実際に使って目的を満たしたか判断することです。そして、動いたら次にどこまで仕上げたいかを伝えました。

この経験は、その後のWAV→MP3変換ツール制作につながります。次は ShareXImageEditorContext を参考プロジェクトとして、「これと同じ系統で作る」と頼めるようになりました。

次の記事では、単純な橋渡しから一歩進めて、ビットレートやステレオ/モノラルを設定できる軽量なGUIツールを作ります。日常の小さな不満が、もう一本の自分専用ツールにつながりました。

次の記事:WAV→MP3変換ツール編

関連記事:ShareXの編集機能を、自分専用に作り直す。重すぎた1.0.0から毎日使えるAF-ImageEditor 1.3.0へ

デスクトップアプリ制作の一覧へ

afさんのAIラボのトップへ

コメント

タイトルとURLをコピーしました