Slide 1

Slide 1 text

Introduce Sub::Meta kobaken a.k.a @kfly8 Perlͷ։ൃମݧΛྑ͍͖ͯ͘͠💪

Slide 2

Slide 2 text

ࣗݾ঺հ • kobaken a.k.a @kfly8 • ϞόΠϧϑΝΫτϦʔ • ΤϯδχΞ૊৫։ൃ੹೚ऀ • Ωʔϫʔυ: ODHDɺίʔνϯάɺ 1on1ɺDevOpsɺJobDescription • Japan Perl Association ཧࣄ • ࠷ۙɺ່̑ࡀʹUNOͰෛ͚Δ

Slide 3

Slide 3 text

Perlͷ։ൃମݧΛྑ͍ͨ͘͠💪

Slide 4

Slide 4 text

։ൃମݧʹ͔ܽͤͳ͍ • ڧྗͳΤϥʔνΣοΫ • ิ׬ • ϑΥʔϚολ • ύϑΥʔϚϯε޲্ • ͳͲ

Slide 5

Slide 5 text

৘ใ ߏจɾ஋ɾܕ औಘ ར༻

Slide 6

Slide 6 text

৘ใ ߏจɾ஋ɾܕ औಘ ར༻ PPI Compiler::Lexer PPR

Slide 7

Slide 7 text

৘ใ ߏจɾ஋ɾܕ औಘ ར༻ Perl::Critic Perl::Lint Perl::MinimumV ersion Perl::LanguageS erver Spellunker::Pe rl

Slide 8

Slide 8 text

৘ใ ߏจɾ஋ɾܕ औಘ ར༻ RBS steep Sorbet RBI TypeProf ࢀߟɿhttps://techlife.cookpad.com/entry/2020/12/09/120454

Slide 9

Slide 9 text

৘ใ ߏจɾ஋ɾܕ औಘ ར༻ Sub::Meta

Slide 10

Slide 10 text

৘ใ ߏจɾ஋ɾܕ औಘ ར༻ Sub::Meta Types::TypedCodeRef Boundary Types::HasTypedMethods

Slide 11

Slide 11 text

খ·ͱΊ • PerlͰ։ൃମݧΛྑ͍͖ͯ͘͠💪 • ͦͷͨΊʹɺϓϩάϥϜ͔Β৘ใ Λऔಘ͠ར༻͢ΔྲྀΕΛଊ͑Δ • Sub::Meta͸ɺ͜ͷྲྀΕͰ͍͏ਅ ΜதͷཱͪҐஔ • ؔ਺ͷϝλ৘ใΛར༻͠΍͘͢ ΔͨΊͷΦϒδΣΫτ܅

Slide 12

Slide 12 text

PerlͰؔ਺ͷϝλ৘ใΛ ѻ͏ͱ͖ͷࠞཚ ಛʹҾ਺ɺฦΓ஋

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

ؔ਺addͷϝλ৘ใ ؔ਺໊͸ʁ add ύοέʔδ͸ʁ Foo Կߦ໨͔Βఆٛ͞Ε͍ͯΔʁ 3ߦ໨

Slide 15

Slide 15 text

use Sub::Identify; sub_name(\&add) # => add stash_name(\&add) # => Foo my ($file, $line) = get_code_location(\&add)

Slide 16

Slide 16 text

my $meta = Sub::Meta->new( sub => \&add ); $meta->subname # => add $meta->stashname # => Foo $meta->line # => 3

Slide 17

Slide 17 text

Ͱ͸ɺҾ਺͸ʁ

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

୔ࢁ͋ΔPerlͷ όϦσʔγϣϯϞδϡʔϧୡ

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

Ҿ਺όϦσʔγϣϯ܅͝ͱʹ ϝλ৘ใͷऔΓѻ͏ͷ໘౗

Slide 27

Slide 27 text

৘ใ ؔ਺ͷϝλ Sub::Meta Data::Validator Smart::Args Type::Params Function::Parameters Sub::WrapInType …

Slide 28

Slide 28 text

DEMO

Slide 29

Slide 29 text

ฦΓ஋όϦσʔγϣϯ܅΋ ಉ༷ͷΞϓϩʔνͰղܾ

Slide 30

Slide 30 text

৘ใ ؔ਺ͷϝλ Sub::Meta Return::Type Function::Return Sub::WrapInType …

Slide 31

Slide 31 text

·ͱΊ • Perlͷ։ൃମݧΛྑ͍͖ͯ͘͠ 💪 • Sub::Meta͸ɺؔ਺ͷҾ਺ɺฦ Γ஋΋ؚΊͨϝλ৘ใΛ Sub::Metaʹू໿͠ɺ౷Ұతͳ ΠϯλʔϑΣʔεͰؔ਺ͷϝλ ৘ใΛѻ͑ΔΑ͏ʹ͢Δ܅

Slide 32

Slide 32 text

ࠓޙ͸ʁ • Sub::MetaͷܕදݱΛ҆ఆͤ͞ Δ(issue #42) • Boundary ( Interface࣮૷ )ʹؔ ਺໊͚ͩͰͳ͘ɺฦΓ஋ɺҾ਺ ͷܕ΋Ճຯ͢Δ #1 • Ruby3 steepͷΑ͏ͳ੩తͳ νΣοΧʔͷPoC