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
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Pe...
Search
mackee
December 09, 2025
Programming
810
0
Share
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
YAPC::Fukuoka 非公式リジェクトコン 2025
mackee
December 09, 2025
More Decks by mackee
See All by mackee
Agentに至る道 〜なぜLLMは自動でコードを書けるようになったのか〜
mackee
6
5.4k
今!ソフトウェアエンジニアがハードウェアに手を出すには
mackee
14
6.8k
ワンバイナリWebサービスのススメ
mackee
10
8.6k
tanukistack ライブコーディング / tanukistack live-coding
mackee
0
580
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
1.1k
perl for shell, awk and sed programmers
mackee
3
2.8k
今更GoのWebフレームワークを作ろうとしているワケ / Why am I trying to create a Go web framework now?
mackee
1
1.1k
database/sqlでNullを扱う歴史とsql.Null[T]の登場 / sql.Null[T] history
mackee
0
980
マイクロサービス化を利用した Goへの移行事例
mackee
0
1.1k
Other Decks in Programming
See All in Programming
Programming with a DJ Controller — not vibe coding
m_seki
3
170
AI時代のエンジニアリングの原則 / Engineering Principles in the AI Era
haru860
0
610
2026_04_15_量子計算をパズルとして解く
hideakitakechi
0
110
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
290
Angular Signal Forms
debug_mode
0
120
Back to the roots of date
jinroq
0
440
検索設計から 推論設計への重心移動と Recall-First Retrieval
po3rin
4
1.1k
[RubyKaigi 2026] Require Hooks
palkan
1
230
CursorとClaudeCodeとCodexとOpenCodeを実際に比較してみた
terisuke
1
490
GitHubCopilotCLIをはじめよう.pdf
htkym
0
270
実用!Hono RPC2026
yodaka
2
270
アクセシビリティ試験の"その後"を仕組み化する
yuuumiravy
1
170
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
5.9k
Faster Mobile Websites
deanohume
310
31k
Abbi's Birthday
coloredviolet
2
7.2k
Claude Code のすすめ
schroneko
67
220k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
180
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
Ethics towards AI in product and experience design
skipperchong
2
260
Designing Experiences People Love
moore
143
24k
Automating Front-end Workflow
addyosmani
1370
200k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
perlΛWebAssembly্Ͱಈ͔ ͢ͱԿ͕خ͍͠ͷʁʁʁ macopy YAPC::Fukuoka 2025 ඇެࣜϦδΣΫτίϯ
None
ຊฤͰ͜͏͍͏τʔΫΛͬͨऀͰ͢
Do you know Perl??
Do you know WebAssembly??
WebAssembly(MDNΑΓ) • WebAssembly ݱͷΣϒϒϥβʔͰ࣮ߦͰ͖ΔίʔυͷҰछ Ͱ͢ɻωΠςΟϒʹ͍ۙύϑΥʔϚϯεͰಈ࡞͢ΔɺίϯύΫτͳό ΠφϦʔܗࣜͷϨϕϧͳΞηϯϒϦʔ෩ݴޠͰ͢ɻ͞Βʹɺ C/ C++ɺC# Rust
ͳͲͷݴޠͷίϯύΠϧઌͱͳΓɺͦΕΒͷݴޠΛ Σϒ্Ͱ࣮ߦ͢Δ͜ͱ͕Ͱ͖·͢ɻ ·ͨɺJavaScript ͱฒ࣮ͯߦ ͢ΔΑ͏ʹઃܭ͞Ε͓ͯΓɺ྆ํΛҰॹʹಈ࡞ͤ͞Δ͜ͱ͕Ͱ͖· ͢ɻ
ͳΔ΄Ͳͳ͋
ͦ͏͍͑Perl
WebAssembly(MDNΑΓ) • WebAssembly ݱͷΣϒϒϥβʔͰ࣮ߦͰ͖ΔίʔυͷҰछ Ͱ͢ɻωΠςΟϒʹ͍ۙύϑΥʔϚϯεͰಈ࡞͢ΔɺίϯύΫτͳό ΠφϦʔܗࣜͷϨϕϧͳΞηϯϒϦʔ෩ݴޠͰ͢ɻ͞Βʹɺ C/ C++ɺC# Rust
ͳͲͷݴޠͷίϯύΠϧઌͱͳΓɺͦΕΒͷݴޠΛ Σϒ্Ͱ࣮ߦ͢Δ͜ͱ͕Ͱ͖·͢ɻ ·ͨɺJavaScript ͱฒ࣮ͯߦ ͢ΔΑ͏ʹઃܭ͞Ε͓ͯΓɺ྆ํΛҰॹʹಈ࡞ͤ͞Δ͜ͱ͕Ͱ͖· ͢ɻ
ɹPerlɹ (ƅшƅ)ɹWebAssembly ɹɹɹʘʗ|ɹy |ʘʗ
ɹɹPerlшƅWebAssembly ɹɹɹɹlʗ|ɹy |ʘl
zeroperl
zeroperlͬͯԿ • perlίϚϯυΛWebAssembly͚ʹίϯύΠϧͨ͠ͷ • github.com/6over3/zeroperl • ۩ମతʹwasi-sdkΛؚΊͯϏϧυͨ͠ͷ • wasi-sdklibcΛஔ͖͑ͯWASM͔ΒWASIΛ͑ΔΑ͏ʹͨ͠ ͷͰ…
perlΛWASMͰಈ͔ͯ͠Կ͕خ͍͠ͷʁ • zeroperlͷಈػ: ExifToolΛWebͰಈ͔͍ͨ͠ • exiftool.org • ը૾ͷϝλσʔλͰ͋ΔExifΛಡΈॻ͖͢ΔϞδϡʔϧ(Perl) • github.com/6over3/exiftool
• JavaScript͔ΒExifToolΛ͑ΔΑ͏ʹ͢Δ
1. PerlͰॻ͔Εͨࢿ࢈Λ͍͍ͨ
ͦͷଞPerlͰॻ͔ΕͨͷͰWASMͰಈ͔ͨ͠ Β(ໝ) • pt-query-digest • ϒϥβ্ͰϚΠάϨʔγϣϯ͍ͨ͜͠ͱ͕͋Δ͔Ͱ͍͏ͱṖ • ΤοδͳΒ༗༻͔ʁ͏ʔΜͲ͏ͩΖ͏ • όΠΦܥͩͱPerlͷίʔυͷࢿ࢈͕͋ΔΒ͍͠
2. ΤοδͰಈ͔͍ͨ͠
WASMϕʔεͷΤοδίϯϐϡʔςΟϯάڥ • Fastly Compute@Edge • WasmEdge • github.com/WasmEdge/WasmEdge • ࣗલͰFaaSΛཱͯΔ߹ʹ͏ίϯϙʔωϯτ
• Cloud fl are WorkersͰWASMಈ͘
3. ܰྔαϯυϘοΫεͱͯ͠ಈ͔͍ͨ͠
Anybatross • ΧϠοΫ͕ެ։͍ͯͨ͠ YAPC::Fukuoka͚ͷίʔυΰ ϧϑίϯςεταΠτ • Ϣʔβʔ͔Βૹ৴͞Εͨίʔυ Λ࣮ߦ͢ΔαϯυϘοΫεڥ ͱͯ͠WASMͱzeroperl͕༻͍ ΒΕ͍ͯΔ
[AD]ཪଆϒϩάॻ͍ͨͷͰͥͻʂ https://techblog.kayac.com/dive-to-anybatross
4. Only perl can parse Perl
???????
PerlΛύʔε͍ͨ࣌͠ʹ͏ʂ
ࢥ͍ग़͢γϦʔζ • YAPC::Japan::Online 2022ͷΞϯΧ ϑΝϨϯεͰࢲ͕ͨͭ͠ • Perlͱͯ͠ղऍͰ͖ͨΒফ͑Δͱ͍͏ ϧʔϧͩͬͨ • ࣌GoͰήʔϜ෦Λॻ͍ͯύʔε
Λ֎෦ίϚϯυݺͼग़͠Ͱ͍ͬͯͨ
ࠓͳΒWebͰ ΕΔͷͰͳ͍͔ʁʁʁʁʁ
ϓϨΠ
࣮Τά͍ߏ Perl on WASM on WASM #SPXTFS (PPO8"4. &CJUFO XB[FSP
[FSPQFSM
·ͱΊ • ϒϥβͰಈ͔ͤΔzeroperlͱ͍͏ͷ͕͋ΔΑ • WASMࣗମϒϥβͰಈ͔͢Ҏ֎ͷ༻్͋ΔΑ • Perl͓͠ΖݴޠͳͷͰɺ͓͠ΖݴޠΛ͋ͪͪ͜Ͱ ಈָ͔͍ͤͯ͠Α