Slide 1

Slide 1 text

TypeScriptͰ ίϚϯυϥΠϯ
 ύʔαʔ NodeֶԂ34ݶ໨ ҏ౻ɹӯ

Slide 2

Slide 2 text

ࣗݾ঺հ • ҏ౻ɹӯ (͍ͱ͏ɹ͖͋ͱʣ • @akito0107 • όοΫΤϯυΤϯδχΞ • Go / TypeScriptΛॻ͍͍ͯ·͢ • https://blog.akito0107.dev

Slide 3

Slide 3 text

໨࣍ • ίϚϯυϥΠϯύʔαʔΛ࡞ͬͨ࿩ • ͳͥ࡞͔ͬͨ • Demo • ࢖͍ํʹ͍ͭͯ

Slide 4

Slide 4 text

Node.jsͰ
 ίϚϯυϥΠϯπʔϧΛ࡞Δ • ҎԼͷΑ͏ͳϥΠϒϥϦ͕༗໊ • substack/minimist • tj/commander • cacjs/cac • yargs/yargs • ෳࡶͳΦϓγϣϯΛύʔε͢Δͱ͖ʹਏ͍

Slide 5

Slide 5 text

Option Hell • ex) kubectl


Slide 6

Slide 6 text

Sub command΋ ͭΒ͍

Slide 7

Slide 7 text

ίϚϯυϥΠϯͷΦϓγϣϯ • ͋Δఔ౓ෳࡶͳίϚϯυΛ࣮૷͠Α͏ͱͨ͠ ৔߹ɺΦϓγϣϯͷ਺͕Ͳ͏ͯ͠΋๲Ε্ ͕ͬͯ͠·͏ • طଘϥΠϒϥϦͰෳࡶͳΦϓγϣϯΛѻ͓͏ ͱ͢Δͱݫ͍͠(ͱࢥͬͯΔ)

Slide 8

Slide 8 text

ex) commander

Slide 9

Slide 9 text

ex) commander ܕ͕΄͍͠ʂʂʂʂ

Slide 10

Slide 10 text

ܕ͕ͭ͘΍ͭΛ࡞ͬͨ • https://github.com/akito0107/marron-glace • σϞ

Slide 11

Slide 11 text

ϑϥάͷఆٛͷ࢓ํ • makeStringFlag / makeBooleanFlag … • ͜ΕΒͷؔ਺ʹɺϑϥάͷ໊લͱΦϓγϣϯ ʢσϑΥϧτ࣌ͷ஋ɺhelpͰදࣔ͢Δจݴͳ ͲʣΛ౉͢

Slide 12

Slide 12 text

<= Stringͷͱ͖͸stringҎ֎ڐ༰͠ͳ͍ <=helpͷͱ͖ͷจݴ <= -s Ͱ΋ड͚ΒΕΔΑ͏ʹ —flag1 ͷϑϥάΛఆٛ —flag2 ͷϑϥάΛఆٛ

Slide 13

Slide 13 text

ϑϥάͷreduce • reduceFlagͰෳ਺ͷϑϥάΛ·ͱΊΔ • reduceFlagͷฦΓ஋΋flagͳͷͰɺ࠶౓ reduce͢Δ͜ͱ͕Ͱ͖Δ

Slide 14

Slide 14 text

makeCommand • flagΛmakeCommandͷύϥϝʔλʹ౉͢ <= ͜ͷ͋ͨΓ͸helpͰग़͢΍ͭ

Slide 15

Slide 15 text

(positional)Arguments • `mv src target` ͷsrc, targetͷΑ͏ʹɺίϚϯ υʹΘͨ͢Ҿ਺΋ܕ෇͖Ͱαϙʔτ

Slide 16

Slide 16 text

makeCommandʹΘͨ͢ <= ͜͜ʹิ׬͕ޮ͘

Slide 17

Slide 17 text

Sub commands • makeSubcommandHandlerΛ࢖͏ <= ͜͜ʹsubCommandΛ͍ΕΔ

Slide 18

Slide 18 text

Sub commandΛ࡞Δ <= ਌ίϚϯυͷflag <= subίϚϯυͷflag ↑ ਌ίϚϯυͱreduce͢Δ <- ਌ίϚϯυͷflagͱ
 subίϚϯυͷflag͕྆ํ࢖͑Δ

Slide 19

Slide 19 text

ͦͷଞ • —helpͰϔϧϓίϚϯυ • ಠࣗܕͷflag • ৄ͘͠͸ϒϩάʹ

Slide 20

Slide 20 text

·ͱΊ • TypeScriptܕਪ࿦͕όϦόϦޮ͘ίϚϯυϥ ΠϯπʔϧΛ࡞ͬͨ • όάͳͲ͋Γ·ͨ͠Β࿈བྷ͍ͯͩ͘͠͞ʂ

Slide 21

Slide 21 text

͋Γ͕ͱ͏͍͟͝·ͨ͠