プログラミング初心者の私が、AIに手伝ってもらいながらWindows向けのスクリーンショットアプリを作り、GitHubに公開しました。
「こんなツールがあれば便利なのに」と思ったものを、AIと相談しながら形にしていく過程はとても楽しく、勉強にもなりました。この記事では、作ったアプリの紹介と、作ってみて分かったことをまとめます。
作ったもの:Quick Screenshot
PrintScreenキーを押すだけで、各ディスプレイの画面を、1枚ずつ別々の画像ファイルとして自動保存するツールです。軽量で、すぐに動くことを目指しました。
Windows標準の「Snipping Tool」が個人的に使い勝手が悪く、ただただ「Print Screen」キーを押す度に画面をフォルダに突っ込んでくれるツールを想像して作成しました。
主な機能
1. マルチモニターに対応
ディスプレイごとの解像度やスケーリング(100%、125%など)を個別に認識し、縦横比を保ったまま、画面ごとに1枚ずつきれいに保存します。複数のモニターを使っていると、1枚の画像に全部つながって保存されて困ることがありますが、それを避けられます。
2. Windows標準のスクショ機能を自動で切り替え
起動するとPrintScreenキーの割り当てがこのアプリ優先になり、アプリを終了すると元の設定に自動で戻ります。設定を手作業でいじらなくて済みます。
3. システムトレイに常駐
タスクバー右下の通知領域に常駐するので、作業の邪魔になりません。ワンクリックで保存先のフォルダを開けます。
4. 設定画面(GUI)つき
保存先フォルダの指定と、保存形式(PNG / JPEG)の切り替えが、画面上の操作でできます。

使っている技術
動作環境は Windows 10 / 11、Python 3.10以上です。使っている主なライブラリは次のとおりです。
- mss:画面のキャプチャ
- pynput:キーボードの入力を常に監視(PrintScreenキーの検知)
- pystray:システムトレイへの常駐
- customtkinter:設定画面のGUI
- Pillow:画像の処理
パッケージ管理には、高速で扱いやすい uv を使っています。
苦労したところ
一番の山場は、システムトレイ(pystray)とGUI(CustomTkinter)を同時に動かしたときの競合でした。両方を別々のスレッドで動かすと、画面がフリーズしてしまいます。
最終的には、メインスレッドでフラグを監視し続けるループを作ることで解決し、固まらない快適な動作になりました。
作ってみて
自分の困りごとから始めたので、完成したあとも実際に使い続けられるのがうれしいところです。
おわりに
初心者でも、AIと一緒なら、欲しいツールを形にしてGitHubで公開するところまで進められました。コードはGitHubで公開しているので、気になった方はぜひのぞいてみてください。


