大阪探検隊

Ctrl + マウスのホイールで、画面表示と文字を拡大できます 挿入画像はクリックすると拡大表示できます

📖 開発秘話マンガ ・ 第6巻

狙ったサイズに、
ピタッと収めよ

〜 スクショ圧縮ツール「ClipShot」開発記 〜

スクショを送ろうとするたび、「容量オーバーです」で弾かれる男がいた。 小さくしたいだけなのに、ペイントを開いて、貼って、形式を選んで、名前を付けて保存して……。 「貼って、サイズを言うだけで終わってほしい」——その願いを、相棒のAIが道具に変えた。全4話、どうぞ。

📛 いつも容量オーバー 🎯 目標サイズにピタッ 🔍 二分探索+段階縮小 📋 貼って、指定して、保存
ぼく容量オーバーに泣く人間
クロード相棒のAI(Claude Code)
ClipShotできあがった圧縮ツール

💡 下線付きの用語(末尾に ⓘ)はクリック/タップで意味の解説がポップアップで開きます。専門用語は、その場で確かめながら読めます。

EP.01

💥 事件発生 — また「容量オーバー」で弾かれた

送りたいのはスクショ1枚。なのに、たった数百キロバイトの壁に阻まれる。

1

問い合わせフォームに、資料アップロードに、フリマの出品欄。「画像は2MBまで」「500KB以内」——スクショを貼ろうとするたび、「ファイルサイズが大きすぎます」の赤い文字。送りたいだけなのに、進めない。

2

小さくする手順がまた面倒。ペイントを開いて → 貼り付けて → サイズを勘で変えて → 形式を選んで → 名前を付けて保存。「これで500KB以内に収まった?」は、保存してみるまで分からない。オーバーしてたら、やり直し。

ぼく「500KB以内にして」って言われても、どのくらい縮めればちょうど収まるのか、勘でしか分からないんだよ! 何回も保存し直してる。

クロードそれ、人間が勘でやる仕事じゃない。「このサイズに収めて」と数字で言えば、機械がちょうどに合わせる——そういう道具を作ろう。貼って、サイズを言うだけ、でね。

EP.02

🕵 調査 — 「ちょうどに収める」が、意外と難しい

画像を小さくする方法はある。問題は「狙った大きさにピタッと止める」ことだった。

3

画像を軽くする方法は2つ。①画質を落とす(JPEGやWebPで“粗く”する)。②解像度を小さくする(そもそも縦横のドット数を減らす)。どちらもサイズは減る。でも——「じゃあ画質をいくつにすれば、ちょうど500KBになる?」には、誰も即答できない。

ぼく画質90%で試したら600KB。80%で400KB。……じゃあ85%? 結局また“勘で当てる”に戻ってる!

クロード1%ずつ全部試すと遅い。でも幸い、画質を上げればサイズも必ず増える——この“素直な関係”が使える。だったら、片っ端から試さなくても、賢い探し方があるよ。

ぼく賢い探し方?

クロード」だ。数当てゲームで『真ん中は? 大きい? 小さい?』と半分ずつ範囲を絞る、あれだよ。」

🎯 目標「500KB以内で、いちばんキレイに」 ① 画質を「二分探索」で当てる 画質 低 画質 高 50%→まだ重い 25%→軽すぎ 37%→ちょうど! 半分ずつ絞って、収まる中で いちばん高い画質を数回で発見 まだ無理なら ② 解像度を縮小 0.8倍ずつ 最大8回まで 小さくして再挑戦
🎯 二段構えの作戦。まず①画質を二分探索で当て、それでも収まらなければ②解像度を段階的に縮小してもう一度。品質と解像度、両方のダイヤルを賢く回す。
EP.03

🎯 山場 — 二分探索、そしてPNGという例外

中核は約25行の関数。だが、その中に「収める工夫」と「譲らない主義」が詰まっていた。

4

できあがった心臓部が encodeToTarget()。やっていることはシンプルだ。画質を0.05〜1.0の範囲で二分探索し、目標サイズに収まる中で一番高い画質を数回で見つける。それでも収まらなければ、解像度を0.8倍して、最初からやり直す。これを最大8回。

🎯 目標サイズに収める心臓部app.js・encodeToTarget()
// ざっくり日本語にした擬似コード
let scale = 1.0;                       // まずは等倍から
for (let i = 0; i < 8; i++) {          // 解像度の段階縮小は最大8回
  // ── 画質を二分探索(JPEG / WebP)──
  let lo = 0.05, hi = 1.0, best = null;
  for (let n = 0; n < 8; n++) {        // 8回で十分に絞れる
    const q = (lo + hi) / 2;
    const blob = encode(scale, q);     // canvasから書き出し
    if (blob.size <= target) {         // 収まった → もっと高画質を狙う
      best = blob;  lo = q;
    } else {                           // 重い → 画質を下げる
      hi = q;
    }
  }
  if (best) return best;               // 収まった中で最高画質を採用
  scale *= 0.8;                        // ダメなら解像度を縮めて再挑戦
}

ぼく1%刻みで100回試すかと思ったら、8回で当たるのか。速い! ……でもPNGって、これ画質のツマミ無いよね?

クロード鋭い。「画質を落とす」という概念が無い形式なんだ(劣化しない代わりに、細かくサイズを削れない)。だからPNGだけは二分探索をせず、解像度の縮小だけで目標に寄せる。文字のくっきりさを守りたい人のために、あえて画質を犠牲にしない

🛟 「絶対に壊さない」という保険

目標が極端に小さくて、8回縮小しても収まりきらないこともある。そのとき道具はエラーで止まらず、“いちばん近い形”を返して「目標は超えたよ」と正直に伝える「必ず収める」より「破綻せず、できる限り近づける」。道具は、無茶を言われても黙って最善を尽くす。

EP.04

🎉 完成 — 貼って、サイズを言って、保存

心臓部さえできれば、あとは“気持ちよく使える皮”をかぶせるだけ。

5

Print Screen で撮って、CtrlV で貼る。あとは「JPEGで、300KB以内」のように指定して保存ボタン。目標サイズはスライダーでも決められる(10KB〜5MB)。ちょうどに収まった1枚が、すぐ手に入る。

1
入力経路は3つとも用意

貼り付け(CtrlV)、ボタンで読み取り、ファイルのドラッグ&ドロップ。好きなやり方で放り込める。

2
かんたん設定プリセット

「メール添付」「フリマ出品」みたいに、形式と目標サイズの“よく使う組み合わせ”をワンタップで。毎回スライダーを触らなくていい。

3
連続保存がなめらか

初回だけ保存先フォルダを選べば、以降は確認なしでポンポン保存。何枚も処理する日にストレスがない。

4
覚える設定・忘れる設定を分ける

言語やダークモードはずっと記憶。かんたん設定は閉じたらリセット。「毎回まっさらがいい設定」と「覚えててほしい設定」を意図的に分けた。

ぼく「保存してみるまで分からない」が、「指定した数字で必ず出てくる」になった。もう赤い『容量オーバー』を見なくて済む……!

クロード今回は公開したから、同じ悩みの人が誰でも使える。日本語と英語、明るい画面と暗い画面、スマホでも。せっかくの道具、独り占めしなくていいからね。

「保存してみないと分からない」が、
「言ったサイズで、ちょうど出てくる」に。

🎯 このツールは、実際に無料で使えます

ClipShot を開く(無料・登録不要)

ブラウザだけで動作。貼り付けた画像は外部に送信されません。

USAGE

🖱 実際の画面で、使い方(3ステップ)

できあがった道具を、本物の画面で。「貼って・決めて・保存」の3手を、実際のスクショで追います。

1

貼り付ける(CtrlV

アプリを開いたら CtrlVPrint ScreenWinShiftS で撮ったスクショが、そのまま入ります。「クリップボードから読み取る」ボタンや、画像ファイルのドラッグ&ドロップでもOK。

ClipShotの最初の画面。中央に『Ctrl+V でスクショを貼り付け』と表示され、クリップボードから読み取る・画像ファイルを選択のボタン、右上に『外部送信なし』の表示がある
最初の画面。ここにスクショを貼るだけで始まります。
2

形式とサイズを決める

貼り付けると、右側に設定が出ます。「かんたん設定」から『ブログ/Web(WebP・500KB)』『メール添付(JPEG・1MB)』『最軽量(WebP・200KB)』などをワンタップで選ぶだけ。いまの見込みサイズが「46KB ✓目標内」のようにその場で表示され、目標に収まっているか一目で分かります。細かく決めたい人は「こまかく設定」で形式・目標サイズ・画質を直接いじれます。

スクショを貼り付けた後の編集画面。左に画像プレビュー、右に『かんたん設定』(そのまま/ブログ・Web/メール添付/最軽量)と、現在のファイルサイズ『46KB 目標内』、ファイル名、保存ボタンが並ぶ
左にプレビュー、右に設定。プリセットを選ぶと、収まる見込みサイズがすぐ出ます。
3

保存する(CtrlS

あとは「保存する」ボタン(CtrlS)。初回だけ保存先フォルダを選べば、次からは確認なしでポンポン保存できます。ファイル名は自由に決められ、日時の自動付与も可能。保存後はそのまま次のスクショを CtrlV で貼り替えられるので、何枚でも連続で処理できます。

右側の設定パネルの拡大。かんたん設定のプリセット、目標サイズ『57KB 目標内』、ファイル名、青い『保存する』ボタン、下部に『保存しました。そのまま次のスクショを Ctrl+V で貼れます』の表示
設定パネルの拡大。プリセット → サイズ確認 → 保存まで、視線は上から下へ一直線。

🌗 日本語/英語・明るい/暗い、どれでも

右上のボタンで、表示言語(日本語・英語)とテーマ(ライト・ダーク)をいつでも切り替えられます。この好みは次回も覚えているので、一度決めればずっとそのまま。英語表示では合言葉が「Stays on your PC=画像はあなたのPCの中だけ」に。

ダークモードの最初の画面(日本語)。暗い背景に『Ctrl+V でスクショを貼り付け』の案内
ダークモード(日本語)
英語表示・ダークモードの画面。『Ctrl+V to paste your screenshot』『Stays on your PC』と表示
英語表示(ダーク)
EXTRA

🔬 おまけ — スクショだからこそ「外に出さない」

スクリーンショットは、いちばん“見られたくない画面”を含みがち。だから設計の芯にした。

1
画像はブラウザの中だけで処理

圧縮も保存も、すべてあなたのブラウザ内()で完結。サーバーには一切アップロードしない

2
外部への通信路を塞ぐ

を厳格にして、自分自身以外への通信・インラインの怪しいコードを禁止。仕組みとして“漏れない”ようにしてある。

3
保存先の“鍵”は持ち歩かない

連続保存のための保存先フォルダの許可は、その場のメモリに置くだけで、ディスクに残さない。閉じれば消える。便利さのために安全を売らない。

🧠 なぜ「公開ツール」でこそ徹底するのか

自分専用なら「自分が気をつければいい」で済む。でも公開して他人にも使ってもらう道具は、使う人の画面を預かる。だからこそ「そもそも外に送らない=送りようがない」という構造にしておく。信頼は、お願いではなく設計で担保する——これは第4巻の「保存しない・送らない」とも地続きの考え方です。

FAQ

❓ よくある質問

Q1. ClipShotは何ができる? お金はかかる?

スクショを貼って、形式(PNG/JPEG/WebP)と目標サイズを指定すると、その大きさに収めて保存してくれる無料のブラウザツールです。登録不要。こちら(clipshot-three.vercel.app)から今すぐ使えます。

Q2. どうやって目標サイズにピタッと収めるの?

JPEG/WebPは画質を二分探索して、目標に収まる中で一番きれいな画質を数回で見つけます。それでも収まらなければ解像度を段階的に縮小。画質を落とせないPNGは、解像度の縮小だけで対応します(文字のくっきりさを守るため)。

Q3. 貼った画像は外部に送られない?

送られません。圧縮も保存もブラウザの中だけで完結し、サーバーには一切上げません。スクショは見られたくない画面を含みがちなので、この安全設計を最優先にしています。

END

🌙 教訓 — 「結果が読める」だけで、面倒は消える

大きな発明はしていない。ただ「勘で当てる」を「数字で指定する」に変えただけ。

📌 この一件で学んだこと

  • 面倒の正体は「結果が読めないこと」。保存してみるまで分からない、をなくすだけで作業は一変する。
  • 規則性を見つければ、総当たりは要らない。「画質を上げれば必ず重くなる」を利用した二分探索で、100回が数回に。
  • 速さのために、得意分野を潰さない。PNGは劣化させず解像度だけで寄せる——形式の性格を尊重する。
  • 公開する道具ほど、安全は構造で担保する。「送らない」ではなく「送りようがない」を作る。

これで、自家製の道具はまた1つ増えました。この「AI探検隊」は、AIで「Webサイト・音楽・画像」を実際につくって見せる場所です。 画像まわりでは、フォルダごと一括で軽くする『Snapfit』(第2巻)もあります。 あなたの“いつもの面倒”も、きっと数字で指定できる道具に変えられます。

スクショの「容量オーバー」に、
もう悩まない。

ClipShot は無料・登録不要。読んだあと、そのまま使えます。AIでつくる実演記事もどうぞ。

🎯 ClipShotを使う(無料)↗ 📸 Snapfit(一括画像変換) 🎨 AIギャラリー 💻 Claude Codeのすすめ 🏠 トップページ