猫の手ツール

Step 4: Quality & Ethics

18. なぜ「端末内完結」に
そこまでこだわったのか

インフラエンジニアとしての信念と、一人のユーザーとしての直感。証明写真という極めてデリケートな情報を扱うツールだからこそ、私は「データを預からない」という道を選びました。

1. 「もし自分が使うなら」というシンプルで強固な問い

インターネット上には、無料で画像を加工できる便利なツールが溢れています。しかし、それらの多くは、一度画像をサーバーへアップロードし、サーバー側で処理をしてから結果をダウンロードさせる仕組みを採用しています。

「管理者の顔も見えないどこかのサーバーに、自分の顔写真を送りたくない」。履歴書に貼るための大切な写真を扱う際、私自身が感じたこの「生理的な抵抗感」こそが、本ツールの開発の原点でした。たとえ利用規約に「保存しません」と書かれていても、技術的に送信されている以上、その約束は管理者の善意に依存してしまいます。

2. インフラエンジニアがたどり着いた「究極の防御」

インフラエンジニアは、日々「いかにデータを守るか」という難問と向き合っています。暗号化、ファイアウォール、アクセス制御……どれだけ堅牢な城を築いても、100%の安全を保証することは困難です。

しかし、唯一 100% 安全と言い切れる方法があります。それが 「そもそもデータを預からないこと」 です。サーバーにデータが送られなければ、データベースからの流出も、通信傍受による盗難も、物理的に不可能です。

この考え方は Privacy by Design(プライバシー・バイ・デザイン) と呼ばれ、現代のシステム設計において最も重要視されている概念の一つです。利便性とプライバシーのどちらかを犠牲にするのではなく、技術によって両立させる。これがエンジニアとしての私の誠実さの示し方でした。

3. 技術が自由を支える:Before / After

かつてはサーバーサイドで行うのが一般的だった画像処理も、現代のブラウザ性能(Canvas API、File APIなど)を駆使すれば、端末内で完結させることが可能です。

【Before】従来のサーバー処理型(リスクあり)

// ユーザーの画像をサーバーへ送信
const formData = new FormData();
formData.append('image', file);

// サーバーからの返答を待つ(この間にデータがネットワークを流れる)
const response = await fetch('https://api.example.com/process-image', {
  method: 'POST',
  body: formData
});

【After】猫の手ツールの端末処理型(セキュア)

// 画像をメモリ上でプレビュー(サーバー送信なし)
const objectUrl = URL.createObjectURL(file);
const img = new Image();
img.src = objectUrl;

// Canvas APIで描画処理を実行
img.onload = () => {
  const ctx = canvas.getContext('2d');
  ctx.drawImage(img, 0, 0, targetWidth, targetHeight);
  // 全てはブラウザ内のメモリ上で完結する
};

4. 注意点:端末内完結のトレードオフ

この設計は理想的ですが、開発においては特有の「落とし穴」もあります。

  • メモリ消費の増大: 高解像度の画像をブラウザ内で処理すると、タブのメモリ使用量が急増します。特にスマホなどの低スペック端末では、タブがクラッシュしないよう注意深いメモリ管理が求められます。
  • 処理時間のデバイス依存: サーバーの強力なCPUではなく、ユーザーの端末性能に依存するため、古い端末ではリサイズや合成に時間がかかる場合があります。
  • 実装の複雑化: 本来サーバーサイドのライブラリ(ImageMagickなど)で行えることを、全て生のJavaScriptや軽量ライブラリで自前実装する必要があり、開発コストは高くなります。

5. まとめ:設計で保証する信頼

「猫の手ツール」を通じて証明したかったのは、高度な機能を提供するために、必ずしもユーザーのプライバシーを代償にする必要はないということです。セキュリティを利用者の「注意」や「自己責任」に委ねるのではなく、システムの「設計」そのもので保証する。

Canvas APIやFile APIを深く学ぶことは、単に「ブラウザで絵を描く」以上の意味を持ちます。それは、ユーザーが自分のデータを自分の手の中に留めながら、インターネットの恩恵を最大限に享受できる「自由」を技術で支えることなのです。

© 2026 nekonote-tools.com