🌏 English Edition is available here
記事1本に1時間……その半分が「画像処理」に使われていませんか?
ブログを書くのは楽しい。
でも、記事にスクリーンショットなどを張り付けようとすると、**「画像のリサイズ」と「WebP変換」**が必要ですよね。たとえそれが画像一つの作業であっても……正直、苦行ですよね。
記事1本に1時間……その半分が「画像処理」に使われていませんか? 1枚3分の作業でも、10枚あれば30分。100記事書けば50時間。 その時間を「執筆」に使えたら、もう1本渾身の記事が書けますよね。
スクショ張り付けステップを書き出すと以下になりますね。
- スクショを撮る
- ペイントや編集ソフトで開く
- 横幅をブログ用にリサイズする
- WebP形式で書き出す
- フォルダを整理する

これが記事1本につき5回、10回と繰り返すことに。こんな「単純作業」に貴重な時間を費やしたく…ねぇなぁ…。
集中力は有限だし、最大限執筆時間に神経を注ぎ込みたいですよね。
正直、41歳でAIエンジニアを目指すと決めた時、一番の敵は「時間」だった。
若い世代に追いつくためには、1秒でも長くコードを書き、思考を深める必要がある。
それなのに、スクショを撮るたびに編集ソフトを開き、同じ数値を打ち込んでリサイズする……。
この「脳のスイッチを切り替えるコスト」が、俺の学習と執筆の最大のボトルネック(障害)になっていたんだ。
「画像が重いとSEOに悪い。でも手間はかけたくない。」
エンジニアとして、**「同じ作業を3回繰り返したら自動化しろ」**という教えがある。AIエンジニア志望として、この悩みは『コード』で解決しましょう。
PrintScreenを押すだけ。3サイズのWebPが自動生成される世界へ
今回紹介する自作ツール ss_to_webp.pyw を導入すると、ブロガーの執筆環境はこう変わります。
「PrintScreenキーを叩く。以上。」
これだけで、クリップボードにある画像が以下の3つの最適化済みWebPとして、一瞬で専用フォルダに保存される。
- Original: 撮ったままのフルサイズ(バックアップ用)
- Thumb (1200px): PCブログ記事のメイン用
- Article (800px): スマホ閲覧やSNSシェアに最適な軽量版
リサイズ目的で編集ソフトを開く必要すらありません。
動的な「アスペクト比保持」と「条件付きリサイズ」: > 単に固定サイズに潰すのではない。元の画像サイズを判定し、指定幅より小さい場合は拡大せず、アスペクト比を維持したまま最適化するロジックを組んだ。 「不必要な計算リソースを消費せず、画質を担保する」。この小さなこだわりが、長期的なブログ運営のパフォーマンス(SEO)を支える「エンジニアの設計思想」なんだ。
【実証】ss_to_webp.pyw の仕組みと全コード公開
このツールは、Pythonの強力なライブラリを組み合わせて「常駐型オートメーション」を実現しています。
技術的なこだわりポイント
pynputによるキー監視: 特定のホットキー(PrintScreen)をバックグラウンドで待ち受けます。Pillow (Image.LANCZOS): 単なる縮小ではなく、文字の輪郭がボケにくい高品質なスケーリングアルゴリズムを採用しました。.pywによるステルス動作: 実行時に黒いコンソール画面を出さず、作業の邪魔をしないスマートな仕様です。

このツールを動かすには、以下の外部ライブラリが必要です。ターミナル(コマンドプロンプト)でサクッとインストールしておきましょう。
Bash
pip install Pillow pynputPython
# -*- coding: utf-8 -*-
"""
Screenshot to WebP Converter (ss_to_webp)
Author: Eishi Giken (ask-asuka-tech.tech)
Description: Automatically resizes and converts screenshots to WebP format.
License: MIT
"""
import os
import datetime
import time
from PIL import Image, ImageGrab
from pynput import keyboard
# --- 設定:保存先 ---
# 実行したユーザーのデスクトップに自動で「ScreenShot_dev」フォルダを作成する
BASE_DIR = os.path.join(os.path.expanduser("~"), "Desktop", "ScreenShot_dev")
# 生成したいサイズ設定 { "フォルダ名": 横幅(px) }
TARGET_SIZES = { "original": None, "thumb": 1200, "article": 800
}
def prepare_folders(): """実行時に必要なフォルダをすべて作成する""" for name in TARGET_SIZES.keys(): path = os.path.join(BASE_DIR, name) if not os.path.exists(path): os.makedirs(path, exist_ok=True) print(f"Directory created: {path}")
def save_multi_screenshots(): """クリップボードから画像を取得し、各サイズでWebP保存する""" # OSの書き込みラグを考慮し、わずかに待機 time.sleep(0.3) try: img = ImageGrab.grabclipboard() # クリップボードの中身がImageオブジェクトであることを確認 if isinstance(img, Image.Image): timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") for name, width in TARGET_SIZES.items(): save_path = os.path.join(BASE_DIR, name, f"ss_{timestamp}_{name}.webp") # リサイズ処理(指定幅より大きい場合のみLANCZOSで縮小) if width and img.size[0] > width: w_percent = (width / float(img.size[0])) h_size = int((float(img.size[1]) * float(w_percent))) resized_img = img.resize((width, h_size), Image.LANCZOS) resized_img.save(save_path, "WEBP", quality=85) else: img.save(save_path, "WEBP", quality=85) print(f"Success! Saved 3 sizes at [{timestamp}]") else: print("Notice: No image found in clipboard.") except Exception as e: print(f"Error during processing: {e}")
def on_press(key): """キー入力を検知(PrintScreenキー)""" if key == keyboard.Key.print_screen: save_multi_screenshots()
def main(): """メイン実行ループ""" prepare_folders() print("-" * 50) print(f"[Monitoring...] Target: {BASE_DIR}") print("Press 'PrintScreen' to save images as WebP.") print("To stop, press Ctrl+C in this window.") print("-" * 50) try: with keyboard.Listener(on_press=on_press) as listener: listener.join() except KeyboardInterrupt: print("\nStopping monitoring...")
if __name__ == "__main__": main()ソースコードをGitHubで公開しました
ブロガーの皆さんがすぐに自分の環境で試せるよう、ソースコード一式をGitHubリポジトリにアップロードしました。スター(Star)をいただけると、41歳新米エンジニアの励みになります!
🔗 wisdom-kojuroh / ss_to_webp (GitHub)
画像処理のストレスが消え、書くことだけに集中できる未来
このツールを導入してから、俺のブログ執筆時間は体感で30%以上短縮されました。
何より、「画像を加工しなきゃ」という心理的なハードルが消えたことが最大の収穫です。AIエンジニアを目指す者として、日常の小さな不便を技術で解決する。
これが俺の、そしてこのブログ 「Ask-Asuka Tech(叡志技研)」 の第一歩。
🌍 Global Developer’s Guide (Strategic Overview)
Automated WebP Workflow for Tech Bloggers
- The Core Problem: Linear workflows in image processing create a cognitive load that kills a developer’s deep work.
- The Engineering Edge: Unlike generic tools, ss_to_webp.pyw implements conditional execution logic. It skips redundant processing if the source is already optimized, ensuring a high-performance output with zero-touch automation.
- The Tech Stack: Integrated Pillow (LANCZOS) for anti-aliasing during downsampling and pynput for non-blocking event listening.
- The Benefit: It transforms a manual “3-minute chore” into a 0-second background process, allowing developers to maintain their “Flow State.”
【Action】今すぐ「執筆環境を整えよう」を手に入れよう!
ブロガーなら、画像を使って手順を紹介する機会は多いはずだ。 俺のこのブログでも、これからそういう記事がどんどん増えていく。
だからこそ、まずは執筆に集中できる「環境」を整えよう。 このコードをコピーして、あなたのPCに忍ばせてみてほしい。 明日から、画像編集ソフトを開く時間はゼロになる。
浮いたその30分で、もう一言、読者の心を動かす文章が書けるはずだ。 画像編集なんていう「作業」はプログラムに任せて、俺たちブロガーは「思考」と「創造」に全力を注ごうぜ。
このツールは、単なるプログラミングの練習じゃない。俺のブログ [WordPress・運営] を支える、文字通りの基盤なんだ。
「明日の記事、もっと楽に書けるかもな」 そう思ってくれたなら、ぜひ 叡志技研(Ask-Asuka Tech) をお気に入りに入れて、これからの進化をチェックしてくれ。 技術で日常を変えていく。それが、俺たちのスタイルだ。
💡 さらに便利に使うためのTips:Windows起動時に自動実行させる
毎回手動でスクリプトを実行するのは面倒。
Win + R キーで shell:startup と入力して開くフォルダに、この .pyw ファイルのショートカットを入れておきましょう。これで、PCを立ち上げた瞬間から「PrintScreen即WebP」が常駐。永続化されます。

