🌏 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」が常駐。永続化されます。

