Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
【20250622】クライアントサイドで_ 高品質画像圧縮したいからウェブアプリ版 Squoo...
Search
asaringo
June 25, 2025
Programming
0
70
【20250622】クライアントサイドで_ 高品質画像圧縮したいからウェブアプリ版 Squoosh参照してwasmに手を出す
間違いあったら優しく教えてください
asaringo
June 25, 2025
Tweet
Share
More Decks by asaringo
See All by asaringo
[初登壇@jAZUG]アプリ開発者が気になるGoogleCloud/Azure+wasm/wasi
asaringo
0
280
Other Decks in Programming
See All in Programming
AI巻き込み型コードレビューのススメ
nealle
2
1.5k
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
280
2026年 エンジニアリング自己学習法
yumechi
0
140
CSC307 Lecture 02
javiergs
PRO
1
780
CSC307 Lecture 04
javiergs
PRO
0
660
今から始めるClaude Code超入門
448jp
8
9.1k
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
270
Python’s True Superpower
hynek
0
110
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
330
組織で育むオブザーバビリティ
ryota_hnk
0
180
Honoを使ったリモートMCPサーバでAIツールとの連携を加速させる!
tosuri13
1
180
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
1k
Featured
See All Featured
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
150
Building AI with AI
inesmontani
PRO
1
710
GraphQLとの向き合い方2022年版
quramy
50
14k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
57
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
440
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Designing Powerful Visuals for Engaging Learning
tmiket
0
240
From π to Pie charts
rasagy
0
130
A better future with KSS
kneath
240
18k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Optimizing for Happiness
mojombo
379
71k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
150
Transcript
クライアントサイドで 高品質画像圧縮したいから ウェブアプリ版 Squoosh 参照してwasmに手を出す 2025/06/22 あさりんご
徒然なるままに… wasmとの出会いを振り返る 結論ありきの順番ではなく、 探索していった時の順番で話してみる (スピーチ結論から話せと言われがちだけどほんとかな? ということでお試ししてみる)
Squoosh Googleが提供しているオープンソースの高品質画像圧縮アプリ ⇒今回はこのオープンソースから、mozjpeg(C言語の高品質画像 圧縮ライブラリ)をwasmにしてjsから呼べるようにしてみる
ここっぽい
すでにwasmのファイルあるっぽいけど、 生成方法は…? ( ゚Д゚) こやつか! 名前的に!
ぐっ… _(´ཀ`」 ∠)_
いったん理解より動かすの優先でいこ Emscriptenを使えるようにするぞ☆ bashで以下コマンドどん git clone https://github.com/emscripten-core/emsdk.git cd /mnt/c/Users/[お名前]/source/repos/emsdk ./emsdk install
latest ./emsdk activate latest source ./emsdk_env.sh 動かしてくうちにわかってくるだろ… ^^) _旦~~
MakefileをEmscriptenに読ませるぞ bashで以下コマンドどん git clone https://github.com/GoogleChromeLabs/squoosh.git cd /mnt/c/Users/[お名 前]/source/repos/squoosh/codecs/mozjpeg/ emmake make
最初makeだけで打っててうまくいかずなんでや…? とかなってた思ひ出 Emscriptenつかうのだから、それ用のコマンドを!
あれ足りないこれ足りない言われる エラー文言に従ってとにかく sudo apt update && sudo apt install [パッケージ名]
できたので使ってみる 生成されたmozjpeg_enc.js ⇒約3000行のコード(;´∀`)コレモウワカンネエナ このjsどうやって使うんや… いったんexportとかないかな ⇒最後の行にexport default Moduleあった ⇒多分importして使えばいいけど、何のメソッドが使えるんや…
これなに?
mozjpeg_enc.cpp⇒バインドファイル Makefileに指定ある バインドファイルを自由に書き換えて何を生成するか決められるんだ jsから何が呼び出せるものかはここ見ればわかるんだ! mozjpeg_enc.cpp Makefile
Mozjpeg_enc.cpp内のコメント • // The code below is basically the `write_JPEG_file`
function from • // https://github.com/mozilla/mozjpeg/blob/master/example.c • // I just write to memory instead of a file. ここ肝である感 I just wirteとかいってるけどめっちゃ大事なことしてくれてる... そこにしびれるあこがれる...☆
使ってみる 生成したmozjpeg_enc.jsとmozjpeg_enc.wasmを 使用したいプロジェクトに連れていく import MozjpegEnc from [ファイルの場所] const mozjpegEnc =
await MozjpegEnc(); const result = mozjpegEnc.encode([画像],[画像の横幅],[画像の 縦幅],[オプション]) ※詳しくはmozjpeg_enc.cpp参照
CanvasAPIで画像圧縮したのと 見た目品質あんま変わらんのやが…(^_^;) • CanvasAPIが使用するのはブラウザ内蔵のjpegエンコーダ/デ コーダ(具体的な実装不明) ⇒こやつ…そこそこ優秀なのでは • オプションをもう少しちゃんといじればよくなる? • そしてCanvasAPIのほうでOKとなったので、
難しいmozjpegとはバイバイしました。
いろいろ新体験 • Emscriptenをつかってみること • chatGPTヘルプもらいつつオープンソースのコードを見てみること • オープンソースから拝借してくること(していいんだ!) • C++に触れる •
個人がGitHubにコードを公開する意味を知る(今度やってみよう)