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
hate HEIC
Search
shimayuu
August 26, 2025
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
hate HEIC
webにおける画像の扱い方やHEIC形式の変換について書いてます
shimayuu
August 26, 2025
More Decks by shimayuu
See All by shimayuu
CyberAgent YJC Connect
shimaf4979
1
210
Other Decks in Programming
See All in Programming
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
2k
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
230
Contextとはなにか
chiroruxx
1
330
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
340
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
680
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
2.1k
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.2k
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
140
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
240
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
180
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.6k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
410
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Site-Speed That Sticks
csswizardry
13
1.2k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.6k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
170
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Believing is Seeing
oripsolob
1
150
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Agile that works and the tools we love
rasmusluckow
331
21k
Transcript
shimayuu(Asa) 個人開発における HEIC形式との向き合いかた BEELT#11
大前提:ほとんどのプレビューはピクセル列である 簡単な例 : RGBAの場合 ピクセル ピクセル = 構成する最小の点
大前提:ほとんどのプレビューはピクセル列である Red,Green,Blue,Alphaを8bit(0~255)で表す 一つのピクセル = 8*4 = 32bit =4byteを持つ 縦、横ともに3つずつピクセル 4
* 3 * 3 = 36byte
大前提:ほとんどのプレビューはピクセル列である 3000*1600の写真なら...(単純計算) 4 * 3000 * 1600 = 19200000byte ≃
18.8MB (1MB = 1024byte)
圧縮とは 圧縮の一例:Run-Length Encoding (RLE)
圧縮とは(可逆圧縮) エンコード デコード ほぼ同じ
見ているものはデコードされたもの ハードウェアレベルだから超速い エディタで見れないのは デコード機能ないから
圧縮とは その他:DCT(離散コサイン変換)、イントラ予測 圧縮手法_WebP_Google for Developers https://developers.google.com/speed/webp/docs/compression?hl=ja 人間は色相よりも輝度に敏感 色相の解像度を下げちゃえ (Chroma Subsampling)
そもそも予測できたら良くね? 分割もっと多かったら良くね?
非可逆圧縮とは 圧縮したら完全な状態には戻せない 違う
HEICのアルゴリズム HEVC/H.265 ビデオ圧縮技術 がベース 単純な圧縮効率はHEIC>webP 「HEIF コンテナに HEVC を格納したファイル」であり
デコードが遅い、利権の問題で普及しずらかった(昔) https://www.mc-if.org/hollywood-workshop
Apple製品における自動補完機能早見表(実験済み) iOS Mac 写真アプリからなら どのブラウザでもjpegに自動変換 ファイルアプリからは送信できる Webkitブラウザ(Safari)はaccept明示で 変換、表示は可能 他のブラウザは変換されず、ブラウザ上 でほとんど表示できない
(ファイル自体は受け取れる)
なぜ自動変換 @umashiba(umashiba) Webブラウザ、レンダリングエンジン、JavaScriptエンジンの整理&図視化 https://qiita.com/umashiba/items/8cb47825624c5cb043d6 よく見るやつ
Webkit なぜ自動変換(iOSの場合) @umashiba(umashiba) Webブラウザ、レンダリングエンジン、JavaScriptエンジンの整理&図視化 https://qiita.com/umashiba/items/8cb47825624c5cb043d6 Appleがwebkit強制 ↓ どのブラウザから でも変換できる
時代の変化 EUで規制解除 Apple Inc. https://www.apple.com/newsroom/2024/01/apple-announces-changes-to-ios-safari-and-the-app-store-in-the-european-union/
時代の変化 日本でも新法成立で変わるかも 【スマホソフトウェア競争促進法、2025年12月〜】 BUSINESS LAWYERS 、スマホ競争促進法とは?アプリ提供者への影響を弁護士が解説 https://www.businesslawyers.jp/articles/1422
時代の変化 20xx年問題 HEICユーザーがブラウザの選択へ @umashiba(umashiba) Webブラウザ、レンダリングエンジン、JavaScriptエンジンの整理&図視化 https://qiita.com/umashiba/items/8cb47825624c5cb043d6
時代の変化 考察:あんま変わんなそう ①EUの現状→ほとんど変わっていない ②Appleの言い分もすごく筋が通っている https://www.jftc.go.jp/file/241205_gijiroku_4.pdf 令和6年12月5日(木) スマートフォンにおいて利用される特定ソフトウェアに係る 競争の促進に関する検討会(第4回)議事録
どこに刺さるか ・高画質写真管理をする人 ・webKit縛り撤廃を見据えてる人 ・脱獄iOS向けサイトを考えている人
実装編
実装方法一覧 フロント→heic2any→メモリすごい食う 汎用API→cloudflare,cloudinary→高いよ 😭 サーバー→そんなユーザーいる? サーバーレス→c++ライブラリきついよ
計測時間 EC2でlibvips+libheif(C++)→早すぎる lambdaでsharpライブラリ(libheifをリンク)→面倒
保守性 個人開発において大事なこと 拡張性 料金 1 4 95 : :
現在の設計
Docker buildxでもかなりmakeに失敗する libheif libvips libaom x265 libde265 Macだと環境が合わない sharp +
権利の問題でライブラリ にはlibheif関連含まれてないよ
Macだと環境が合わない DockerはLinux上だけ MacだとVMの上 ホスト依存も一部有
Macだと環境が合わない ならちゃんとLambda環境でビルドしよう libheif libvips libaom x265 libde265 レイヤーだと 256MBまで レイヤー
現在の設計
ありがとうございました! https://www.pamfree.com/