Slide 1

Slide 1 text

perlΛWebAssembly্Ͱಈ͔ ͢ͱԿ͕خ͍͠ͷʁʁʁ macopy YAPC::Fukuoka 2025 ඇެࣜϦδΣΫτίϯ

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

ຊฤͰ͸͜͏͍͏τʔΫΛ΍ͬͨऀͰ͢

Slide 4

Slide 4 text

Do you know Perl??

Slide 5

Slide 5 text

Do you know WebAssembly??

Slide 6

Slide 6 text

WebAssembly(MDNΑΓ) • WebAssembly ͸ݱ୅ͷ΢Σϒϒϥ΢βʔͰ࣮ߦͰ͖ΔίʔυͷҰछ Ͱ͢ɻωΠςΟϒʹ͍ۙύϑΥʔϚϯεͰಈ࡞͢ΔɺίϯύΫτͳό ΠφϦʔܗࣜͷ௿ϨϕϧͳΞηϯϒϦʔ෩ݴޠͰ͢ɻ͞Βʹɺ C/ C++ɺC# ΍ Rust ͳͲͷݴޠͷίϯύΠϧઌͱͳΓɺͦΕΒͷݴޠΛ ΢Σϒ্Ͱ࣮ߦ͢Δ͜ͱ͕Ͱ͖·͢ɻ ·ͨɺJavaScript ͱฒ΂࣮ͯߦ ͢ΔΑ͏ʹઃܭ͞Ε͓ͯΓɺ྆ํΛҰॹʹಈ࡞ͤ͞Δ͜ͱ͕Ͱ͖· ͢ɻ

Slide 7

Slide 7 text

ͳΔ΄Ͳͳ͋

Slide 8

Slide 8 text

ͦ͏͍͑͹Perl͸

Slide 9

Slide 9 text

WebAssembly(MDNΑΓ) • WebAssembly ͸ݱ୅ͷ΢Σϒϒϥ΢βʔͰ࣮ߦͰ͖ΔίʔυͷҰछ Ͱ͢ɻωΠςΟϒʹ͍ۙύϑΥʔϚϯεͰಈ࡞͢ΔɺίϯύΫτͳό ΠφϦʔܗࣜͷ௿ϨϕϧͳΞηϯϒϦʔ෩ݴޠͰ͢ɻ͞Βʹɺ C/ C++ɺC# ΍ Rust ͳͲͷݴޠͷίϯύΠϧઌͱͳΓɺͦΕΒͷݴޠΛ ΢Σϒ্Ͱ࣮ߦ͢Δ͜ͱ͕Ͱ͖·͢ɻ ·ͨɺJavaScript ͱฒ΂࣮ͯߦ ͢ΔΑ͏ʹઃܭ͞Ε͓ͯΓɺ྆ํΛҰॹʹಈ࡞ͤ͞Δ͜ͱ͕Ͱ͖· ͢ɻ

Slide 10

Slide 10 text

ɹPerlɹ (ƅшƅ)ɹWebAssembly ɹɹɹʘʗ|ɹy |ʘʗ

Slide 11

Slide 11 text

ɹɹPerlшƅWebAssembly ɹɹɹɹlʗ|ɹy |ʘl

Slide 12

Slide 12 text

zeroperl

Slide 13

Slide 13 text

zeroperlͬͯԿ • perlίϚϯυΛWebAssembly޲͚ʹίϯύΠϧͨ͠΋ͷ • github.com/6over3/zeroperl • ۩ମతʹ͸wasi-sdkΛؚΊͯϏϧυͨ͠΋ͷ • wasi-sdk͸libcΛஔ͖׵͑ͯWASM͔ΒWASIΛ࢖͑ΔΑ͏ʹͨ͠΋ ͷͰ…

Slide 14

Slide 14 text

perlΛWASMͰಈ͔ͯ͠Կ͕خ͍͠ͷʁ • zeroperlͷಈػ: ExifToolΛWebͰಈ͔͍ͨ͠ • exiftool.org • ը૾ͷϝλσʔλͰ͋ΔExifΛಡΈॻ͖͢ΔϞδϡʔϧ(Perl੡) • github.com/6over3/exiftool • JavaScript͔ΒExifToolΛ࢖͑ΔΑ͏ʹ͢Δ

Slide 15

Slide 15 text

1. PerlͰॻ͔Εͨࢿ࢈Λ࢖͍͍ͨ

Slide 16

Slide 16 text

ͦͷଞPerlͰॻ͔Εͨ΋ͷͰWASMͰಈ͔ͨ͠ Β(ໝ૝) • pt-query-digest • ϒϥ΢β্ͰϚΠάϨʔγϣϯ͍ͨ͜͠ͱ͕͋Δ͔Ͱ͍͏ͱṖ • ΤοδͳΒ༗༻͔ʁ͏ʔΜͲ͏ͩΖ͏ • όΠΦܥͩͱPerlͷίʔυͷࢿ࢈͕͋ΔΒ͍͠

Slide 17

Slide 17 text

2. ΤοδͰಈ͔͍ͨ͠

Slide 18

Slide 18 text

WASMϕʔεͷΤοδίϯϐϡʔςΟϯά؀ڥ • Fastly Compute@Edge • WasmEdge • github.com/WasmEdge/WasmEdge • ࣗલͰFaaSΛཱͯΔ৔߹ʹ࢖͏ίϯϙʔωϯτ • Cloud fl are WorkersͰ΋WASM͸ಈ͘

Slide 19

Slide 19 text

3. ܰྔαϯυϘοΫεͱͯ͠ಈ͔͍ͨ͠

Slide 20

Slide 20 text

Anybatross • ΧϠοΫ͕ެ։͍ͯͨ͠ YAPC::Fukuoka޲͚ͷίʔυΰ ϧϑίϯςεταΠτ • Ϣʔβʔ͔Βૹ৴͞Εͨίʔυ Λ࣮ߦ͢ΔαϯυϘοΫε؀ڥ ͱͯ͠WASMͱzeroperl͕༻͍ ΒΕ͍ͯΔ

Slide 21

Slide 21 text

[AD]ཪଆϒϩά΋ॻ͍ͨͷͰͥͻʂ https://techblog.kayac.com/dive-to-anybatross

Slide 22

Slide 22 text

4. Only perl can parse Perl

Slide 23

Slide 23 text

???????

Slide 24

Slide 24 text

PerlΛύʔε͍ͨ࣌͠ʹ࢖͏ʂ

Slide 25

Slide 25 text

ࢥ͍ग़͢γϦʔζ • YAPC::Japan::Online 2022ͷΞϯΧ ϑΝϨϯεͰࢲ͕࿩ͨ͠΍ͭ • Perlͱͯ͠ղऍͰ͖ͨΒফ͑Δͱ͍͏ ϧʔϧͩͬͨ • ౰࣌͸GoͰήʔϜ෦෼Λॻ͍ͯύʔε Λ֎෦ίϚϯυݺͼग़͠Ͱ΍͍ͬͯͨ

Slide 26

Slide 26 text

ࠓͳΒWebͰ ΍ΕΔͷͰ͸ͳ͍͔ʁʁʁʁʁ

Slide 27

Slide 27 text

ϓϨΠ

Slide 28

Slide 28 text

࣮͸Τά͍ߏ଄ Perl on WASM on WASM #SPXTFS (PPO8"4. &CJUFO XB[FSP [FSPQFSM

Slide 29

Slide 29 text

·ͱΊ • ϒϥ΢β౳Ͱಈ͔ͤΔzeroperlͱ͍͏ͷ͕͋ΔΑ • WASMࣗମ͸ϒϥ΢βͰಈ͔͢Ҏ֎ͷ༻్΋͋ΔΑ • Perl͸͓΋͠ΖݴޠͳͷͰɺ͓΋͠ΖݴޠΛ͋ͪͪ͜Ͱ ಈָ͔͍ͤͯ͠Α