×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Bitkey Inc. Connect Product Noriki Takahashi αΫοͱ࡞Δ੩తղੳπʔϧ -import ͷґଘ੍ޚπʔϧΛ࡞Δ-
Slide 2
Slide 2 text
Outline 2 2 1. ࣗݾհ 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ 3. ܗੜπʔϧ: skeleton 4. ੩తղੳ༻ύοέʔδ: analysis 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 6. ·ͱΊ
Slide 3
Slide 3 text
1. ࣗݾհ 3 ● ∁ڮయੜ(Noriki Takahashi) ○ Twitter: @norinoriki0 ○ GitHub: nrnrk ● גࣜձࣾBitkey ○ bitkey platform ͱ͍͏"ΧΪ"ͷϓϥοτϑΥʔϜͷ։ൃ ● Go Ͱ GKE ্Ͱಈ͘APIαʔόʔͷ։ൃͳͲΛ͍ͯ͠·͢ ● झຯ: ֶɾཧֶ ○ zk-SNARKs ͷֶతͳଆ໘ΛטΈࡅ͘هࣄΛॻ͍ͨΓͯ͠·͢
Slide 4
Slide 4 text
1. ࣗݾհ 4 ● ∁ڮయੜ(Noriki Takahashi) ○ Twitter: @norinoriki0 ○ GitHub: nrnrk ● גࣜձࣾBitkey ○ bitkey platform ͱ͍͏"ΧΪ"ͷϓϥοτϑΥʔϜͷ։ൃ ● Go Ͱ GKE ্Ͱಈ͘APIαʔόʔͷ։ൃͳͲΛ͍ͯ͠·͢ ● झຯ: ֶɾཧֶ ○ zk-SNARKs ͷֶతͳଆ໘ΛטΈࡅ͘هࣄΛॻ͍ͨΓͯ͠·͢
Slide 5
Slide 5 text
1. ࣗݾհ 5
Slide 6
Slide 6 text
ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ 6 6
Slide 7
Slide 7 text
7 7 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ
Slide 8
Slide 8 text
8 8 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ go.mod ϑΝΠϧϨϙδτϦʹҰͭ → Go Module ͕1ͭͷϞϊϨϙ
Slide 9
Slide 9 text
9 9 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ ͍ΘΏΔϥΠϒϥϦ ؔߏମͳͲ͕ೖ͍ͬͯΔ ϞϊϨϙͷଞͷύοέʔδ͔Βར༻͞ΕΔ͜ ͱΛఆ
Slide 10
Slide 10 text
10 10 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ ֤छαʔϏε HTTPαʔόʔgRPCαʔόʔͳͲ ଞ͔Β import ͞Εͯ΄͘͠ͳ͍
Slide 11
Slide 11 text
11 11 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ ࠔΔ͜ͱ ҙਤ͠ͳ͍ґଘ͕͋ͬͯϏϧυ͕௨Δ ྫ: serviceB → serviceA
Slide 12
Slide 12 text
12 12 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ ղܾํ๏͍͔ͭ͋͘Δ
Slide 13
Slide 13 text
13 13 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ ղܾํ๏ᶃ internal ύοέʔδΛར༻ serviceA,B,C ͦΕͧΕͷύοέʔδͰެ։͠ ͨ͘ͳ͍ύοέʔδ internal ͷதʹೖΕΔ
Slide 14
Slide 14 text
14 14 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ ղܾํ๏ᶃ internal ύοέʔδΛར༻ serviceA,B,C ͦΕͧΕͷύοέʔδͰެ։͠ ͨ͘ͳ͍ύοέʔδ internal ͷதʹೖΕΔ → ڞ௨ར༻͢ΔͷϥΠϒϥϦͱͯ͠Γ ग़͢ͷͰɺશ෦ internal ͷதʹೖΕΔ͜ͱʹ...
Slide 15
Slide 15 text
15 15 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ ղܾํ๏ᶄ Go Module ͷׂ serviceA,B,C ҎԼʹ go.mod Λ͓͍ͯผͷϞ δϡʔϧͱΈͳ͢
Slide 16
Slide 16 text
16 16 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ ղܾํ๏ᶄ Go Module ͷׂ serviceA,B,C ҎԼʹ go.mod Λ͓͍ͯผͷϞ δϡʔϧͱΈͳ͢ → ཧ͕ࡶʹͳΔͷͰආ͚͍ͨ
Slide 17
Slide 17 text
17 17 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ ղܾํ๏ᶃɺᶄඪ४తͳํ๏͕ͩɺզʑʹ ϑΟοτ͠ͳ͍...
Slide 18
Slide 18 text
18 18 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ ղܾํ๏ᶅ linter Ͱ੍ޚ ύοέʔδؒͷґଘΛνΣοΫͯ͠CIͳͲͰ੍ ޚͰ͖ΔΑ͏ʹ͢Δ
Slide 19
Slide 19 text
19 19 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ ● Go ͷϞϊϨϙͷҰྫ ղܾํ๏ᶅ linter Ͱ੍ޚ ύοέʔδؒͷґଘΛνΣοΫͯ͠CIͳͲͰ੍ ޚͰ͖ΔΑ͏ʹ͢Δ → ͪΐͬͱअಓͬΆ͍͕ɺࠓճ͜ΕΛࢼ͢
Slide 20
Slide 20 text
ґଘੑΛνΣοΫ͢ΔΑ͏ͳ linter Λ୳ͦ͏ 20 20 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ
Slide 21
Slide 21 text
͏ʔΜɺɺɺͳ͍ 21 21 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ
Slide 22
Slide 22 text
ࣗ࡞ linter Ͱ͍͔͘... 22 22 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ
Slide 23
Slide 23 text
Ͱ੩తղੳ͔ɺ ͳΜ͔େมͦ͏ͩͳ 23 23 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ
Slide 24
Slide 24 text
ͱࢥͬͪΌ͍·ͨ͠ 24 24 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ
Slide 25
Slide 25 text
͕ɺ͔͠͠ 25 25 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ
Slide 26
Slide 26 text
࣮ࡍʹͬͯΈΔͱ݁ߏ؆୯ʂ 26 26 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ
Slide 27
Slide 27 text
skeleton (ܗੜπʔϧ) ४ެࣜͷ analysis ύοέʔδͷ ͓͔͛Ͱ؆୯ʹαΫοͱ࡞Εͨ 27 27 2. ϞϊϨϙ։ൃͰؾʹͳΔ͜ͱ
Slide 28
Slide 28 text
ܗੜπʔϧ: skeleton 28 28
Slide 29
Slide 29 text
● skeleton Goͷ੩తղੳπʔϧͷͨΊͷܗΛੜͯ͘͠ΕΔπʔϧ ԼهίϚϯυͰΠϯετʔϧͰ͖·͢ go install github.com/gostaticanalysis/skeleton/v2@latest 3. ܗੜπʔϧ: skeleton 29
Slide 30
Slide 30 text
● skeleton 30 3. ܗੜπʔϧ: skeleton
Slide 31
Slide 31 text
● skeleton 31 module ໊Λࢦఆͯ͠ܗ(εέϧτϯ) Λੜ 3. ܗੜπʔϧ: skeleton
Slide 32
Slide 32 text
● skeleton 32 ίϚϯυ࣮ߦ༻ͷϩδοΫ ͓ܾ·ΓͷϩδοΫ͕͋Δ 3. ܗੜπʔϧ: skeleton
Slide 33
Slide 33 text
● skeleton 33 ղੳ༻ͷϩδοΫΛఆٛ ࠷ݶ͜͜ʹϩδοΫΛॻ͚ͩ͘Ͱ OK 3. ܗੜπʔϧ: skeleton
Slide 34
Slide 34 text
● skeleton 34 ୯ମςετ 3. ܗੜπʔϧ: skeleton
Slide 35
Slide 35 text
● skeleton 35 ୯ମςετ༻ͷσʔλ ੩తղੳͳͷͰ ςετ༻σʔλ = ιʔείʔυ 3. ܗੜπʔϧ: skeleton
Slide 36
Slide 36 text
੩తղੳ༻ύοέʔδ: analysis 36 36
Slide 37
Slide 37 text
● analysis ύοέʔδ ○ ੩తղੳ༻ͷ"४ެࣜ"ύοέʔδ (golang.org/x/tools/go/analysis) ■ → ੩తղੳʹ͓͚ΔϝΠϯͷϩδοΫ͚ͩʹूதͰ͖Δ 4. ੩తղੳ༻ύοέʔδ: analysis 37
Slide 38
Slide 38 text
● analysis ύοέʔδ ○ ੩తղੳ༻ͷ"४ެࣜ"ύοέʔδ (golang.org/x/tools/go/analysis) ■ → ੩తղੳʹ͓͚ΔϝΠϯͷϩδοΫ͚ͩʹूதͰ͖Δ ○ ಛ ■ Analyzer ߏମͰ੩తղੳͷ݁Ռͷ࠶ར༻͕؆୯ʹ 4. ੩తղੳ༻ύοέʔδ: analysis 38
Slide 39
Slide 39 text
● analysis ύοέʔδ ○ ੩తղੳ༻ͷ"४ެࣜ"ύοέʔδ (golang.org/x/tools/go/analysis) ■ → ੩తղੳʹ͓͚ΔϝΠϯͷϩδοΫ͚ͩʹूதͰ͖Δ ○ ಛ ■ Analyzer ߏମͰ੩తղੳͷ݁Ռͷ࠶ར༻͕؆୯ʹ ○ ઌఔͷ skeleton Ͱੜ͞ΕͨίʔυͰΘΕ͍ͯΔ 4. ੩తղੳ༻ύοέʔδ: analysis 39
Slide 40
Slide 40 text
● Analyzer ߏମ(࠶ར༻ͳ͠ͷ࠷γϯϓϧͳྫ) 4. ੩తղੳ༻ύοέʔδ: analysis 40 mylinter.go
Slide 41
Slide 41 text
● Analyzer ߏମ(࠶ར༻ͳ͠ͷ࠷γϯϓϧͳྫ) 4. ੩తղੳ༻ύοέʔδ: analysis 41 analyzer ͷ໊শ (≒ linter ͷ໊শ) mylinter.go
Slide 42
Slide 42 text
● Analyzer ߏମ(࠶ར༻ͳ͠ͷ࠷γϯϓϧͳྫ) 4. ੩తղੳ༻ύοέʔδ: analysis 42 υΩϡϝϯτ analyzer ʹ͍ͭͯͷ આ໌ mylinter.go
Slide 43
Slide 43 text
● Analyzer ߏମ(࠶ར༻ͳ͠ͷ࠷γϯϓϧͳྫ) 4. ੩తղੳ༻ύοέʔδ: analysis 43 ղੳ༻ϩδοΫ → ࠷ݶɺ͜͜ʹϩ δοΫॻ͚ͩ͘Ͱ OK mylinter.go
Slide 44
Slide 44 text
● Analyzer ߏମ ͷ࠶ར༻ ● Analyzer ߏମΛఆٛ͢Δࡍʹɺଞͷ Analyzer Λར༻͢Δ͜ͱ͕Ͱ͖Δ 4. ੩తղੳ༻ύοέʔδ: analysis 44
Slide 45
Slide 45 text
● Analyzer ߏମ ͷ࠶ར༻ ● Analyzer ߏମΛఆٛ͢Δࡍʹɺଞͷ Analyzer Λར༻͢Δ͜ͱ͕Ͱ͖Δ ● ྫ: golang.org/x/tools/go/analysis/passes/inspect.Analyzer Λ༻͍ͯϊʔ υͷϑΟϧλϦϯά 4. ੩తղੳ༻ύοέʔδ: analysis 45
Slide 46
Slide 46 text
● Analyzer ߏମ ͷ࠶ར༻ ● Analyzer ߏମΛఆٛ͢Δࡍʹɺଞͷ Analyzer Λར༻͢Δ͜ͱ͕Ͱ͖Δ ● ྫ: golang.org/x/tools/go/analysis/passes/inspect.Analyzer Λ༻͍ͯϊʔυ ͷϑΟϧλϦϯά 4. ੩తղੳ༻ύοέʔδ: analysis 46 Analyzer ͷ࠶ར༻ͷ؆୯ͳྫͱͯ͠ɺ ࣝผࢠ͕ "gopher" ͱͳ͍ͬͯΔͷΛݟ͚ͭΔ࣮ྫΛݟͯΈΔ → ࣍ͷεϥΠυ ※ skeleton ͔Βੜ͞ΕΔαϯϓϧ
Slide 47
Slide 47 text
4. ੩తղੳ༻ύοέʔδ: analysis 47
Slide 48
Slide 48 text
4. ੩తղੳ༻ύοέʔδ: analysis 48 mylinter.go
Slide 49
Slide 49 text
4. ੩తղੳ༻ύοέʔδ: analysis 49 ࠶ར༻͢Δ Analyzer Λఆٛ ͜͜ͰɺAST ݕࠪ༻ ͷ Analyzer Λར༻ golang.org/x/tools/go/ analysis/passes/ inspect mylinter.go
Slide 50
Slide 50 text
4. ੩తղੳ༻ύοέʔδ: analysis 50 run ͷதͰ inspect.Analyzer ͷग़ ྗ͢Δ݁ՌΛར༻ mylinter.go
Slide 51
Slide 51 text
4. ੩తղੳ༻ύοέʔδ: analysis 51 ast.Ident (Identifier = ࣝผࢠ) ͷΈʹߜΔͨ ΊͷϑΟϧλ mylinter.go
Slide 52
Slide 52 text
4. ੩తղੳ༻ύοέʔδ: analysis 52 inspect Λར༻ͯ͠ ast.Ident ͷΈʹߜͬͯ ॲཧ͢Δ ଞͷ AST ͷϊʔυ͕ དྷͨͱ͖ͷॲཧΛॻ͔ ͳͯ͘ྑ͍ʂ mylinter.go
Slide 53
Slide 53 text
4. ੩తղੳ༻ύοέʔδ: analysis 53 ಠࣗͷϩδοΫ͜͜ ͚ͩ analysis ύοέʔδΛ ͏͜ͱͰ͜͜ʹ͚ͩ ूத͢Δ͜ͱ͕Ͱ͖Δ mylinter.go
Slide 54
Slide 54 text
● [༨ஊ] inspect Analyzer ͷఆٛ 4. ੩తղੳ༻ύοέʔδ: analysis 54
Slide 55
Slide 55 text
● [༨ஊ] inspect Analyzer ͷఆٛ 4. ੩తղੳ༻ύοέʔδ: analysis 55 ͜͜Ͱ࠶ར༻͢Δ݁Ռͷ ܕΛఆٛ
Slide 56
Slide 56 text
ύοέʔδґଘ੍ޚπʔϧ࣮ 56 56
Slide 57
Slide 57 text
● ύοέʔδґଘ੍ޚπʔϧ(banimport)࣮ ○ ࣮ݱ͍ͨ͜͠ͱ ■ ύοέʔδؒͷґଘΛ੍ޚ͍ͨ͠ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 57
Slide 58
Slide 58 text
● ύοέʔδґଘ੍ޚπʔϧ(banimport)࣮ ○ ࣮ݱ͍ͨ͜͠ͱ ■ ύοέʔδؒͷґଘΛ੍ޚ͍ͨ͠ ○ ༷ ■ ېࢭ͢Δґଘ͕͋ͬͨΒՕॴΛಛఆͯ͠ΤϥʔΛฦ͢ ■ ઃఆϑΝΠϧ (.banimport.json) ● ېࢭ͢Δґଘͷjsonఆٛ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 58
Slide 59
Slide 59 text
● ᶃ skeleton Ͱܗ࡞ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 59
Slide 60
Slide 60 text
● ᶄ ςετ࡞ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 60
Slide 61
Slide 61 text
● ᶄ ςετ࡞ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 61 ςετσʔλ࡞ → ࠓճෳͷύοέʔδͷґଘؔ ͷςετ͕͍ͨ͠ͷͰߏΛগ͠มߋ
Slide 62
Slide 62 text
● ᶄ ςετ࡞ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 62 ෦ʹෳͷύοέʔδ͕͋Δ͜ͷ ·ͱ·ΓΛҰͭͷσʔληοτͱ͢ Δ
Slide 63
Slide 63 text
● ᶄ ςετ࡞ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 63 ͜Ε svca, svcb, svcc ͔Βར༻͞ ΕͯOK
Slide 64
Slide 64 text
● ᶄ ςετ࡞ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 64 ͜͜ͷؒͰґଘΛ࣋ͨͳ͍Α͏ͳ ϧʔϧʹ͢Δ
Slide 65
Slide 65 text
● ᶄ ςετ࡞ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 65 testdata/src/a/srcb/ main.go testdata/src/a/srcc/main.go
Slide 66
Slide 66 text
● ᶄ ςετ࡞ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 66 svcb → svcc ʹґଘΛ͓ͨͤͯ͘ → ͜ΕΤϥʔͱͯ͠ݕग़͢Δ testdata/src/a/srcb/ main.go testdata/src/a/srcc/main.go
Slide 67
Slide 67 text
● ᶄ ςετ࡞ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 67 ίϝϯτͰϝοηʔδͷظΛهࡌ // want <͜͜ʹهࡌ> ← analysistest ύοέʔδ͕ղऍ testdata/src/a/srcb/ main.go testdata/src/a/srcc/main.go
Slide 68
Slide 68 text
● ᶄ ςετ࡞: ઃఆϑΝΠϧ࡞ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 68 ઃఆϑΝΠϧΛ࡞ Ͳͷύοέʔδ͔ΒͲͷ ύοέʔδʹґଘΛ࣋ͨͳ ͍Α͏ʹ͢Δ͔Λઃఆ .banimport.json
Slide 69
Slide 69 text
● ᶄ ςετ࡞: ઃఆϑΝΠϧ࡞ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 69 svca ͔Β svcb, sbcc ʹґଘ Λ࣋ͨͳ͍Α͏ʹ͢Δ .banimport.json
Slide 70
Slide 70 text
● ᶄ ςετ࡞: ઃఆϑΝΠϧ࡞ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 70 svca, svcb, svcc ૬ޓʹґ ଘΛ͍͚࣋ͬͯͳ͍ .banimport.json
Slide 71
Slide 71 text
● ᶄ ςετ࡞: ςετͷ࣮ߦ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 71 ςετͷ࣮ߦ
Slide 72
Slide 72 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 72 banimport_test.g o
Slide 73
Slide 73 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 73 ςετͷσʔληοτΛϧʔϓ (b, c ͷςετσʔλՃ) banimport_test.g o
Slide 74
Slide 74 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 74 analysistest ͷσϑΥϧτͷ testadata ύε banimport_test.g o
Slide 75
Slide 75 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 75 import ͷґଘېࢭͷઃఆϑΝΠϧͷಡΈࠐΈ banimport_test.g o
Slide 76
Slide 76 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 76 import ͷґଘېࢭͷઃఆΛϑϥάͱͯ͢͠(࣍ͷᶅ࣮ Ͱհ) banimport_test.g o
Slide 77
Slide 77 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 77 ςετσʔλΛࢦఆ࣮ͯ͠ߦ banimport_test.g o
Slide 78
Slide 78 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 78 ςετΛߦ͏ Analyzer Λࢦఆ banimport_test.g o
Slide 79
Slide 79 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 79 ղੳ͢ΔରͷύοέʔδΛࢦఆ banimport_test.g o
Slide 80
Slide 80 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 80 testdata ͷதͰظ(want)Λॻ͘ͷͰ͜͜ͷϩδοΫεοΩϦʂ banimport_test.g o
Slide 81
Slide 81 text
● ᶅ ࣮ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 81 ϝΠϯͱͳΔϩδοΫΛॻ͘
Slide 82
Slide 82 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 82 banimport.go
Slide 83
Slide 83 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 83 Analyzer ͷఆٛ import ͔͠ݟͳ͍ͷͰ ґଘͳ͠ banimport.go
Slide 84
Slide 84 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 84 ϑϥάҾͷఆٛ flags ύοέʔδͱಉͷ ܗͰఆٛՄೳ banimport.go
Slide 85
Slide 85 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 85 run ؔ ϝΠϯͷॲཧΛߦ͏ؔ → ࣍ͷεϥΠυ banimport.go
Slide 86
Slide 86 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 86 banimport.go
Slide 87
Slide 87 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 87 ઃఆ jsonͷύʔε banimport.go
Slide 88
Slide 88 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 88 ֤ϑΝΠϧͷ import ఆٛͷΈॲ ཧ͢Δ banimport.go
Slide 89
Slide 89 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 89 import ͷύεΛऔಘ ※ จࣈྻϦςϥϧ͕ Value ʹೖ͍ͬͯΔͷͰ Unquote ͕ඞཁ banimport.go
Slide 90
Slide 90 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ 90 ېࢭ͢Δґଘ͕ݟ ͔ͭͬͨ߹ɺ ϝοηʔδΛग़͢ banimport.go
Slide 91
Slide 91 text
● ᶆ ಈ࡞֬ೝ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 91
Slide 92
Slide 92 text
● ᶆ ಈ࡞֬ೝ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 92
Slide 93
Slide 93 text
● ᶆ ಈ࡞֬ೝ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 93
Slide 94
Slide 94 text
● ᶆ ಈ࡞֬ೝ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 94
Slide 95
Slide 95 text
● ᶆ ಈ࡞֬ೝ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 95
Slide 96
Slide 96 text
● ᶆ ಈ࡞֬ೝ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 96
Slide 97
Slide 97 text
● ᶆ ಈ࡞֬ೝ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 97
Slide 98
Slide 98 text
● ᶆ ಈ࡞֬ೝ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 98 ग़ྗ݁Ռ
Slide 99
Slide 99 text
● ᶆ ಈ࡞֬ೝ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 99 ग़ྗ݁Ռ
Slide 100
Slide 100 text
● ᶆ ಈ࡞֬ೝ 5. ύοέʔδґଘ੍ޚπʔϧ࣮ 100 ग़ྗ݁Ռ testdata/src/a/srcb/ main.go
Slide 101
Slide 101 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ ϞϊϨϙͰύοέʔδґଘͷ੍ޚ͕ Ͱ͖ΔΑ͏ʹͳͬͨʂʂ
Slide 102
Slide 102 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ skeleton Λ͑αΫοͱ࡞ΕΔʂ
Slide 103
Slide 103 text
5. ύοέʔδґଘ੍ޚπʔϧ࣮ ͪ͜Β https://github.com/nrnrk/banimport
Slide 104
Slide 104 text
·ͱΊ 104 104
Slide 105
Slide 105 text
● ·ͱΊ ○ skeleton ΛͬͯαΫοͱ੩తղੳπʔϧ͕࡞ΕΔʂ ○ ϞϊϨϙͳͲͰύοέʔδؒͷґଘΛ੍ޚ͍ͨ͠߹ ■ ͞Βʹɺinternal ύοέʔδͷར༻Ϟδϡʔϧͷׂ͕ϑΟοτ͠ͳ͍߹ ■ → banimport Λͬͯύοέʔδؒͷґଘ੍ޚΛࢼ͢Ձ͋Γʂ ■ CI ͳͲʹΈࠐΉͱޡͬͨ import ͕͛Δ ○ ͦͷଞ ■ skeleton ͷຊޠ README ■ Go ͷ AST ͷೖతͳ༰ʹ͍ͭͯͷաڈͷൃද (એ) 105 6. ·ͱΊ