エンジニアリング

ブラウザだけでHEICをPNGに変換する方法(heic-to × WebAssembly)

iPhoneで撮った写真をWebツールに読み込ませたら「この画像は開けません」——HEICあるあるですよね。サーバーに画像を送らず、ブラウザの中だけでHEICをPNGに変換したくて、heic-toというライブラリをWebAssemblyで動かしました。ライブラリ選定の理由、約3MBを必要なときだけ読む遅延読込、LGPLとの向き合い方、そして変換中トーストが消えるバグまで、自作ツールに組み込んだ実装の勘所をまとめます。

ブラウザだけで完結する画像マスクアプリ「もざいくにゃん」を作った話(React + Canvas + Cloudflare Pages)

顔をモザイクで隠したい、スクショに写り込んだ住所やAPIキーを消したい——でも他人のサーバーに画像をアップロードするのは少し怖いですよね。そこで画像を一切ネットに出さず、ブラウザ内のCanvasだけで加工する無料ツール「もざいくにゃん」を作りました。React CDN・完全クライアント処理・Cloudflare Pagesという低コスト構成を、実装のポイントとあわせて紹介します。

PWAの自動更新が「古い版のまま」になる原因とキャッシュ制御(_headers / vite-plugin-pwa)

vite-plugin-pwaのautoUpdateは入れたのに、デプロイしても一部のユーザーに古い版が表示され続ける——その犯人はService WorkerではなくCDN/ブラウザのHTTPキャッシュでした。_headersで入口ファイルをno-cacheにする対策を、ケースA(Vite)/ケースB(素のHTML)の使い分けと検証手順まで解説します。

無料でお問い合わせフォームを作る方法|GAS+スプレッドシート+Gmail通知(外部サービス不要)

外部サービスに頼らず、Google Apps Scriptとスプレッドシート・Gmailだけで無料のお問い合わせフォームを作る方法を、当ブログの実装をもとに解説します。送信内容をスプレッドシートに記録しつつGmailで通知する構成で、バリデーション・スパム対策・デプロイ時のハマりどころまでまとめました。

WebサイトにCtrl+Z(Undo / Redo)を実装する方法(Reactのkeydown + 履歴スタック)

Webアプリに Ctrl+Z / Ctrl+Y の Undo・Redo を入れる方法を、自作の画像マスクサイトの実装をもとに解説します。Reactのkeydownイベントで操作を拾い、ops / redoStack という2本の履歴スタックで状態を巻き戻す設計、入力欄でのショートカット無効化やMac/Windows両対応のコツまで、実コード抜粋付きでまとめました。

複数フリマの在庫・粗利を1画面で管理できる無料アプリ「ざいこにゃん」|メルカリ・ラクマ・minne対応・登録不要

メルカリ・ラクマ・BASE・minneなど複数のフリマ/ECの在庫・売上・粗利を1画面で管理できる無料アプリ「ざいこにゃん」を作りました。登録不要・ブラウザだけで動き、データは端末内だけに保存。福袋やセット販売の原価も自動で按分計算します。

Claude Codeでブログに上げる画像を一括リサイズする方法|SEOを保つNode.jsツール自作

ブログにアップロードする写真が1〜2MBで重くて困っている人向けに、Claude Codeに「画像縮小して」と頼むだけで自動リサイズが走る環境の作り方を解説します。Node.js+sharpの自作ツールをSkillとして登録し、SEOで失わないライン(最大幅1600px・JPG品質80)を守りつつ容量32%削減する実装例付き。