撮った画像に何度でも描き直しができる、「下書き帳つき」のスクリーンショットアプリを Windows 用に自作しました。
矢印や文字を書き込んで保存したあとでも、書き込む前の状態や途中の状態に、いつでも戻せます。
この記事では、どんな困りごとがあって、それをどう解消したのかをご紹介します。
書き込んで保存したら、もう直せない
手順書を作るとき、問い合わせに画面つきで答えるとき、報告書に画面を貼るとき。スクリーンショットに矢印を足したり、枠で囲んだり、短い説明を書き込んだりする作業は、多くの職場で日常的に発生します。
困るのは、そのあとです。「この矢印、ひとつ下の項目を指してほしい」「ここの文言は伏せておいてほしい」と言われたとき、書き込みが画像に焼き付いていると、手元の画像はもう直せません。撮り直すか、元画像を探し出して最初から描き直すことになります。
私自身、無料のスクリーンショットツール「Screenpresso」を長く使っていました。特に困っていないつもりでしたが、改めて振り返ると、不満はいくつもありました。
- 無料版でも、有料プランへの案内が定期的に表示される
- 保存できる画像の数に上限があるようだった
- 編集して保存した画像は、あとから再編集できない
- Windows 11 で他のショートカットとぶつかり、キー操作からの範囲選択がスムーズにいかなくなった
なかでも一番効いていたのが、3つ目の「再編集できない」でした。
友人の「ある。」から作り始めた
作るきっかけは、高校時代の友人との会話です。クライアントワークが一段落した時期に「欲しいアプリってある?」と聞いてみたところ、返ってきたのは「ある。」の一言。それがスクリーンショットアプリでした。
それなら、自分の不満をすべて解消したアプリを作って、友人にも渡そうと考えました。無償で渡したのには理由があります。自分のためだけに作ると、どうしても作り手の思い込みで使い勝手を決めてしまいます。普段から使う人の目を借りれば、客観的な視点を保てますし、的確なフィードバックで UI や使い勝手を磨けると考えました。
開発は、ショートカットキーからの撮影、ウィンドウを指定しての撮影、撮った画像の編集、編集履歴の保存、という順に進めました。
解決策:書き込みを「版」として残す
このアプリの画像エディタでは、矢印・四角や丸の囲み・文字・連番の番号札・ペン・蛍光ペン・モザイク・画像の貼り付けといった書き込みができます。
特徴は、書き込みを画像に焼き付けないことです。書き込みを足したり動かしたりするたびに、その時点の状態が「版」として自動で記録されます。画面の右側にある履歴の一覧には v1、v2、v3……と版が並び、クリックすればその時点の状態に戻ります。直前の操作を取り消す Ctrl+Z(元に戻す)と Ctrl+Y(やり直し)も使えます。


元の画像ファイルは一切書き換えません。書き込みを入れた画像が必要なときは、クリップボードへコピーするか、別の名前を付けて書き出します。ですから、送った後に修正を頼まれても、エディタで画像を開き直して矢印を1本動かし、書き出し直すだけで済みます。撮り直しも、最初からの描き直しも要りません。
仕組みとしては、書き込みを「絵」ではなく「データ」として持っています。矢印なら始点と終点、色、太さ。文字なら位置と内容とフォントサイズ。こうした情報を、パソコンの中に置く小さなデータベース(SQLite。1つのファイルで動くデータベースです)に、版番号を付けて追記していきます。実際のテーブル定義は次のとおりです。
CREATE TABLE IF NOT EXISTS revisions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
project_id INTEGER NOT NULL,
version_number INTEGER NOT NULL,
shapes_json TEXT NOT NULL,
description TEXT DEFAULT '',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY(project_id) REFERENCES projects(id) ON DELETE CASCADE
);
shapes_json に、その版の書き込みが丸ごと入ります。画像を開くと最新の版を読み込み、元画像の上に書き込みを描き直して表示します。画像そのものを何枚も保存するのではなく、書き込みの情報だけを積み重ねるので、版がいくら増えても元画像は1枚のままです。
私の知る限り、Screenpresso には編集履歴を残して過去の状態に戻る機能はありませんでした。この「版で残す」仕組みは、今回いちばん力を入れたところです。
撮ったら、そのまま編集へ
撮影から編集までの流れも、つなげてあります。
ショートカットキーで撮影すると、画面の右下に、撮った画像の縮小表示つきの小さな通知が出ます。そこには「画像エディタで編集」「保存フォルダを開く」の2つのボタンがあり、矢印を入れたいならエディタへ、ファイルを確認したいならフォルダへ、その場で選べます。通知は8秒ほどで消えますが、マウスを乗せている間は消えません。

エディタで書き込みを終えたら、Enter キーひとつでクリップボードへコピーしてエディタを閉じます。そのままチャットやメールに貼り付ければ完了です。
撮影と編集をひと続きにする発想は、Screenpresso に倣ったものです。ただ、友人にとっては初めての体験だったようで、いちばん喜んでくれたのがこの部分でした。
自分の道具だから、余計な制約がない
自分で作ったアプリなので、有料プランへの案内も、保存枚数の上限もありません。撮った画像は JPG と PNG の2形式で、決まったフォルダに日時の名前で保存され続けます。
撮影のショートカットキー、保存先のフォルダ、JPG の画質などは、設定ファイルを書き換えるだけで変更できます。Screenpresso で困った「Windows 11 の他のショートカットとぶつかる」問題も、ぶつからないキーに変えれば解消します。キーがほかのアプリと競合して登録できなかった場合は、パソコン右下のタスクトレイのメニューにその旨が表示されるので、原因にもすぐ気付けます。
結果どう変わったか
友人は自宅でも職場でも、このアプリを毎日のように使ってくれています。
そして私自身も、Screenpresso を完全にアンインストールしました。仕事でも私用でも、今はこの自作アプリだけで撮影と書き込みをしています。
作ってみて分かったのは、毎日使う道具の小さな不満は、自分では「特に困っていない」と思い込みやすいということです。友人に聞かれて改めて振り返るまで、私は再編集できないことを当たり前だと受け入れていました。
日々の業務の中で「この道具のここだけが不便」と感じているものがあれば、それは自分専用の道具を作る良いきっかけになります。今回のような、自分や職場向けの小さな専用ツールの開発も承っています。似たようなお困りごとがあれば、お気軽にお問い合わせください。
使用技術: Python, PyQt6, tkinter, Pillow, pystray, mss, SQLite, Win32 API, Windows