Slide 1

Slide 1 text

+BWB4DSJQUד 049׾荈⹛乼⡲ ,BOB[BXBSCNFFUVQ
 

Slide 2

Slide 2 text

"QQMF4DSJQU ˖ 049ך乼⡲׾荈⹛⻉ׅ׷׋׭ךأؙٔفز鎉铂 ˖ 4ZTUFN 䎃 ַ׵䲿⣘ׁ׸גְ׷ ˖ 㹋遤橆㞮׮ְ׹ְ׹֮׷ ˖ ،فٖحز ˖ ءٕؑ ˖ "VUPNBUPS

Slide 3

Slide 3 text

"QQMF4DSJQU ˖ 蕯䎁暴䗙ך֮׷鎉铂➬圫 ˖ 㷕统؝أزכװװ넝׭

Slide 4

Slide 4 text

"QQMF4DSJQU4BNQMF set urls to {"https://www.google.co.jp","http://www.yahoo.co.jp","https://www.apple.com"} set countOfUrls to count urls tell application "Safari" activate tell window 1 set firstTab to current tab repeat with i from 1 to countOfUrls set URL of document 1 to (item i of urls) if i = countOfUrls then exit repeat set current tab to (make new tab) end repeat set current tab to firstTab end tell end tell 4BGBSJ׾Ꟛְג
 ةـ׾鷄⸇׃אא
 אך63-׾Ꟛֻ

Slide 5

Slide 5 text

ˊ+BWB4DSJQUGPS"VUPNBUJPO3FMFBTF/PUF
 IUUQTEFWFMPQFSBQQMFDPNMJCSBSZNBDSFMFBTFOPUFT*OUFSBQQMJDBUJPO$PNNVOJDBUJPO3/ +BWB4DSJQU'PS"VUPNBUJPO"SUJDMFT*OUSPEVDUJPOIUNM +BWB4DSJQUGPS"VUPNBUJPO QSPWJEFTUIFBCJMJUZUPVTF+BWB4DSJQU GPSJOUFSBQQMJDBUJPODPNNVOJDBUJPO CFUXFFOBQQTJO049

Slide 6

Slide 6 text

+BWB4DSJQUGPS"VUPNBUJPO +9" ˖ "QQMF4DSJQUך➿剏ה׃גך+BWB4DSJQU ˖ את׶"QQMF4DSJQUך㹋遤橆㞮ָ+BWB4DSJQU׾ ؟ه٦ز׃׋הְֲ鑧 ˖ 049 :PTFNJUF ַ׵䲿⣘

Slide 7

Slide 7 text

+9"4BNQMF var urls = [ "https://www.google.co.jp", "http://www.yahoo.co.jp", "https://www.apple.com" ] var safari = Application("Safari") safari.activate() var w = safari.windows[0] var firstTab = w.currentTab() for (var i in urls) { w.tabs[0].url = urls[i] if (i == urls.length - 1) { break } var _tab = new safari.Tab() w.tabs.push(_tab) w.currentTab = _tab } w.currentTab = firstTab 4BGBSJ׾Ꟛְג
 ةـ׾鷄⸇׃אא
 אך63-׾Ꟛֻ

Slide 8

Slide 8 text

)FMMP8PSME أؙٔفزؒر؍ةBQQ

Slide 9

Slide 9 text

)FMMP8PSME

Slide 10

Slide 10 text

)FMMP8PSME

Slide 11

Slide 11 text

)FMMP8PSME

Slide 12

Slide 12 text

+9"ך剅ַֹ׋
 -FWFM ˖ "QQMJDBUJPOؙٓأך؎ٝأةٝأ׾⡲׷ ˖ فٗػذ؍׾铣׫鴥׬ ˖ فٗػذ؍׾剅ֹ䳔ִ׷ ˖ ًاحس׾ㄎן⳿ׅ

Slide 13

Slide 13 text

-FWFM var safari = Application("Safari") safari.activate() var w = safari.windows[0] console.log(w.tabs[0].url()) w.tabs[0].url = "https://www.google.co.jp" 4BGBSJ׾Ꟛְג
 植㖈ך63-׾⿫撑׃
 63-׾刿倜ׅ׷

Slide 14

Slide 14 text

+9"ך剅ַֹ׋
 -FWFM ˖ ءأذي؎كٝز׾ⵃ欽ׅ׷ ˖ وؐأؙٔحؙװؗ٦ن٦سⰅ⸂ ˖ ِ٦ؠ٦؎ٝةؙٓءّٝ"1*׾ⵃ欽ׅ׷ ˖ ㉏ְさ׻ׇت؎،ؚٗ ˖ /PUJDBUJPO 4BNQMF䖓鶢

Slide 15

Slide 15 text

+9"ך剅ַֹ׋
 -FWFM ˖ ⴽղך"QQMJDBUJPO؎ٝأةٝأず㡦׾鸬䵿 ˖ 4BGBSJך63-׾.FTTBHFד鷏⥋הַ ˖ ؙٔحفن٦سⰻ㺁דٔو؎ٝت涫ꐮהַ ➙㔐כ䪔׻זְָ䩛갫כ知⽃

Slide 16

Slide 16 text

+9"ד⢪ִ׷"1* ˖ "QQMJDBUJPO嫣ח⢪ִ׷"1*ָ殯ז׷ ˖ וֲװ׏ג锃ץ׷ַ˘ ˖ չأؙٔفزؒر؍ةBQQպךչٓ؎ـٓٔպ ˖ ًصُ٦ך<ؐ؍ٝسؐ>̔<ٓ؎ـٓٔ>

Slide 17

Slide 17 text

˖ ⵃ欽׃׋ְ،فٔ׾鼅䫛ׅ׷ ٓ؎ـٓٔ

Slide 18

Slide 18 text

˖ ،فָٔ䲿⣘ׅ׷"1*ָ然钠דֹ׷ ٓ؎ـٓٔ

Slide 19

Slide 19 text

ٓ؎ـٓٔך铣׫ַ׋ד כת׏׋הֿ׹

Slide 20

Slide 20 text

ٓ؎ـٓٔך铣׫ַ׋ד כת׏׋הֿ׹ ˖ 剑ⴱך؎ٝرٝزָًاحسせַ ˖ 如ך؎ٝرٝزָ䒷侧׌ז ˖ 如ך؎ٝرٝزכ

Slide 21

Slide 21 text

ٓ؎ـٓٔך铣׫ַ׋ד כת׏׋הֿ׹ ˖ 瘶ִ剑穄䒷侧ד床ׅؔفءّٝ)BTI䕎䒭 ˖ <>➰ֹכؔفءّشٕ ˖ ⢽EVQMJDBUF PCK \UPQBUI SFQMBDJOHUSVF^

Slide 22

Slide 22 text

ٓ؎ـٓٔך铣׫ַ׋ד כת׏׋הֿ׹ ˖ 痥♧䒷侧ךչⰻ㺁պָ剅ְגזְ ˖ זח׾䭷㹀׃׋׵ְְך

Slide 23

Slide 23 text

ٓ؎ـٓٔך铣׫ַ׋ד כת׏׋הֿ׹ ˖ 瘶ִ䭷㹀׃זְ ˖ )BTIך׫床ׅ ˖ ⢽NBLF \OFXPCK BUQBUI^

Slide 24

Slide 24 text

"QQMF4DSJQUַ׵ך 獳嗂儗ח涪欰׃׋ ♶侭さָ鋅ִ׋孡ָׅ׷

Slide 25

Slide 25 text

ٓ؎ـٓٔך鷄⸇ ˖ ⵃ欽׃׋ְ،فָٔٓ؎ـٓٔחזְ㜥さ ˖ 鷄⸇ׅ׷ֿהָדֹ׷ ˖ BQQؿ؋؎ٕ׾湫䱸䭷㹀ׅ׷

Slide 26

Slide 26 text

ٓ؎ـٓٔך鷄⸇ ˖ 鷄⸇نةַٝ׵BQQ׾䭷㹀ׅ׷

Slide 27

Slide 27 text

+9"ךرغحؚ ˖ DPOTPMFMPHرغحؚ ˖ رغحؖ 4BGBSJ8FC*OTQFDUPS

Slide 28

Slide 28 text

4BGBSJדرغحؚ ˖ 049 &M$BQJUBO ַ׵䲿⣘ ˖ IUUQTEFWFMPQFSBQQMFDPNMJCSBSZNBD SFMFBTFOPUFT*OUFSBQQMJDBUJPO$PNNVOJDBUJPO 3/+BWB4DSJQU'PS"VUPNBUJPO"SUJDMFT 049IUNM

Slide 29

Slide 29 text

رغحؖך彊⪒ ˖ 4BGBSJך8FC*OTQFDUPS׾剣⸬חׅ׷ ˖ 4BGBSJך橆㞮鏣㹀歗꬗ַ׵鏣㹀 ˖ <鑫稢>̔<ًصُ٦غ٦חꟚ涪ًصُ٦׾邌爙>

Slide 30

Slide 30 text

رغحؖך彊⪒ ˖ +9"ה4BGBSJ8FC*OTQFDUPS׾ꟼ鸬בֽ׷ ˖ 4BGBSJךًصُ٦ַ׵鏣㹀 ˖ <Ꟛ涪>̔< مأزせ >̔<+4$POUFYUTך8FC؎ٝ ألؙة׾荈⹛涸ח邌爙>

Slide 31

Slide 31 text

رغحؖך饯⹛ ˖ +9"ך؝٦س⚥חEFCVHHFSה鎸鶢 ˖ 㹋遤ׅ׷ ˖ 䔲鑩皘䨽דCSBLF׃ג8FC*OTQFDUPSָ饯⹛

Slide 32

Slide 32 text

رغحؖך饯⹛ var hoge = function() { debugger console.log("hoge") } debugger console.log("fuga") hoge()

Slide 33

Slide 33 text

رغحؖך饯⹛

Slide 34

Slide 34 text

رغحؖך岣䠐挿 ˖ "QQMJDBUJPO 4BGBSJ ׾乼⡲׃גְ׷ה饯⹛׃ז ְ㜥さָ֮׷ ˖ 4BGBSJ♳ד؝٦س׾剅ֹ䳔ִ׷ה✮劍׃זְ䮙⹛ ׾ׅ׷㜥さָ֮׷

Slide 35

Slide 35 text

4UBOEBSE"EEJUJPOT ˖ זחַה⤑ⵃז堣腉׾鷄⸇ׅ׷ٓ؎ـٓٔ ˖ ت؎،ؚٗהַ/PUJDBUJPOהַ ˖ "QQMJDBUJPOؙٓأחغ؎ٝس׃ג⢪ֲ ˖ *ODMVEF4UBOEBSE"EEJUJPOTفٗػذ؍

Slide 36

Slide 36 text

4UBOEBSE"EEJUJPOT

Slide 37

Slide 37 text

4UBOEBSE"EEJUJPOT4BNQMF var app = Application.currentApplication() app.includeStandardAdditions = true app.displayAlert("֮׵٦ה") var Hello = function() { try { app.displayDialog("ֿ׿ח׍׻") console.log("כ׹٦") } catch(e) { console.log("ּ׏לְ") } } Hello() Hello() app.displayNotification("ק׿ע׿",{withTitle:"׋ְה׷",subtitle:"ׁע׋ְה׷"})

Slide 38

Slide 38 text

4UBOEBSE"EEJUJPOT ˖ ٓ؎ـٓٔ׾铣׮ֲ ˖ ⦐➂涸ח 鋙ִגֶֻץֹ"1* ˖ ؿ؋؎ٕ SFBEXSJUF  ˖ ؙٔحفن٦س TFU5IF$MJQCPBSE5PUIF$MJQCPBSE  ˖ ؎ٝةؙٓءّٝ EJTQMBZ%JBMPH/PUJDBUJPOTBZ

Slide 39

Slide 39 text

4UBOEBSE"EEJUJPOT ˖ 窫㼎ח鋙ִגֶֻץֹ"1* ˖ ءٕؑأؙٔفزㄎן⳿׃ EP4IFMM4DSJQU

Slide 40

Slide 40 text

EP4IFMM4DSJQU4BNQMF var app = Application.currentApplication() app.includeStandardAdditions = true var stdout = app.doShellScript("whoami") console.log(stdout) try { stdout = app.doShellScript("ls NOT_EXIST") } catch (e) { var stderr = e.message console.log(stderr) }

Slide 41

Slide 41 text

4ZTUFN&WFOUT ˖ ءأذي׾֮אֲַչ"QQMJDBUJPOպ ˖ ؗ٦ن٦سⰅ⸂הַ ˖ وؐأؙٔحؙהַ ˖ 049ך橆㞮鏣㹀הַ ˖ ؿٕؓت٦،ؙءّٝהַ

Slide 42

Slide 42 text

4ZTUFN&WFOUT

Slide 43

Slide 43 text

4ZTUFN&WFOUT4BNQMF var safari = Application("Safari") safari.activate() delay(2) var se = Application("System Events") se.keystroke("l", {using:"command down"}) delay(2) se.keystroke("http://www.google.com") delay(2) se.keyCode(76)

Slide 44

Slide 44 text

4ZTUFN&WFOUT4BNQMF var se = Application("System Events") var safari = Application("Safari") safari.activate() delay(1) var toolbar = se.uiElements["Safari"].uiElements[0].uiElements[4] toolbar.uiElements[1].click() delay(1) toolbar.uiElements[5].click() delay(1) se.keyCode(125) // down arrow delay(1) se.keyCode(76) // enter

Slide 45

Slide 45 text

4ZTUFN&WFOUT ˖ ٓ؎ـٓٔ׾铣׮ֲ ˖ ⦐➂涸ח 鋙ִגֶֻץֹ"1* ˖ (6*乼⡲ VJ&MFNFOUNFOV  ˖ ؗ٦ن٦س LFZTUSPLFLFZ$PEF

Slide 46

Slide 46 text

VJ&MFNFOUך岣䠐挿 ˖ ،ؙإءؽٔذ؍ ˖ VJ&MFNFOUך䱱׶倯

Slide 47

Slide 47 text

،ؙإءؽٔذ؍ ˖ VJ&MFNFOU׾䪔ֲ儗חכ埄ꣲָ䗳銲חז׷ ˖ ءأذي橆㞮鏣㹀 ˖ <إُؗٔذ؍הفٓ؎غء٦>̔
 <فٓ؎غء٦>̔<،ؙإءؽٔذ؍>

Slide 48

Slide 48 text

،ؙإءؽٔذ؍鏣㹀

Slide 49

Slide 49 text

،ؙإءؽٔذ؍ت؎،ؚٗ ˖ ⴱ㔐㹋遤儗כֿ׿ז䠬ׄךت؎،ָؚٗ邌爙ׁ ׸׷

Slide 50

Slide 50 text

،ؙإءؽٔذ؍ ثؑحؙ؝٦س var se = Application("System Events") if(se.uiElementsEnabled()) { console.log("،ؙإءؽٔذ؍ OK") } else { console.log("،ؙإءؽٔذ؍ NG") // ⟃♴כءأذي橆㞮鏣㹀ך،ؙإءؽٔذ؍鏣㹀׾Ꟛֻ؝٦س var pref = Application("System Preferences"); var pane = pref.panes.byId("com.apple.preference.security") pane.anchors["Privacy_accessibility"].reveal(); pref.activate() }

Slide 51

Slide 51 text

VJ&MFNFOUך䱱׶倯 ˖ 4ZTUFN&WFOUTךVJ&MFNFOUTꂁ⴨ַ׵׋ו׷

Slide 52

Slide 52 text

ה֮׷⢽ var se = Application("System Events") var app = se.uiElements[TARGET_APP_NAME].uiElements[TARGET_APP_NAME] var main_area = app.uiElements[5].uiElements["Box"].uiElements[0] var table1 = main_area.uiElements[0].uiElements[0] var tab = main_area.uiElements["Peers"] var table2 = main_area.uiElements[7].uiElements[0].uiElements[0]

Slide 53

Slide 53 text

וֲװ׏ג鋅אֽ׷ך

Slide 54

Slide 54 text

EVNQVJ&MFNFOUT var se = Application("System Events") se.uiElements[TARGET_APP_NAME].entireContents().forEach(function(v, i, a){ console.log(`${Automation.getDisplayString(v)}`); console.log(`${v.name()} / ${v.description()}`); })

Slide 55

Slide 55 text

EVNQVJ&MFNFOUT var se = Application("System Events") se.uiElements[TARGET_APP_NAME].entireContents().forEach(function(v, i, a){ console.log(`${Automation.getDisplayString(v)}`); console.log(`${v.name()} / ${v.description()}`); }) ׅץגך㶨銲稆 VJ&MFNFOUךꥡ㾴׾邌爙 㼎韋VJ&MFNFOUךفٗػذ؍ 邌爙ׁ׸גְ׷ذؗأز瘝

Slide 56

Slide 56 text

EVNQ穠卓⢽  "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@    LBOB[BXB@SC@垥彊ؐ؎ٝسؐ   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ SBEJP(SPVQTBU     OVMMٓإؚٓؔ٦ف   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ SBEJP(SPVQTBU  SBEJP#VUUPOTCZ/BNF أٓ؎سٖ؎،ؐز    أٓ؎سٖ؎،ؐزٓآؔنةٝ   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ DIFDLCPYFTCZ/BNF وأة٦׾㢌刿    وأة٦׾㢌刿ثؑحؙنحؙأ   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TUBUJD5FYUTCZ/BNF ة؎زٕ皘勴剅ֹ    ة؎زٕ皘勴剅ֹذؗأز   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU     OVMMأؙٗ٦ٕ걄㚖   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  TUBUJD5FYUTCZ/BNF ،ؾ،ٓٝأ    ،ؾ،ٓٝأذؗأز   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  DIFDLCPYFTCZ/BNF ة؎زٕ    ة؎زٕثؑحؙنحؙأ   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  DIFDLCPYFTCZ/BNF 劤俑    劤俑ثؑحؙنحؙأ   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  DIFDLCPYFTCZ/BNF أٓ؎س殢〾    أٓ؎س殢〾ثؑحؙنحؙأ   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  VJ&MFNFOUTBU     OVMMꟚꟗ欽♲錬نةٝ   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  TUBUJD5FYUTCZ/BNF 胜兝    胜兝ذؗأز   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  CVUUPOTBU     OVMMنةٝ   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  QPQ6Q#VUUPOTBU     OVMMهحف،حفنةٝ   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  DPMPS8FMMTBU     OVMMؕٓ٦ٕؐؑ   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  CVUUPOTCZ/BNF وأة٦أٓ؎س׾箟꧊    وأة٦أٓ؎س׾箟꧊نةٝ   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU     OVMMأؙٗ٦ٕ걄㚖   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU     OVMMأؙٗ٦ٕ걄㚖   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  TDSPMM#BSTBU     OVMMأؙٗ٦ٕغ٦   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  TDSPMM#BSTBU  WBMVF*OEJDBUPSTBU     OVMM⦼؎ٝآ؛٦ة   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  TDSPMM#BSTBU  CVUUPOTBU     OVMM♳ぢֹ濶⽩نةٝ   "QQMJDBUJPO 4ZTUFN&WFOUT BQQMJDBUJPO1SPDFTTFTCZ/BNF ,FZOPUF XJOEPXTCZ/BNF LBOB[BXB@SC@ TDSPMM"SFBTBU  TDSPMM#BSTBU  CVUUPOTBU     OVMM♴ぢֹ濶⽩نةٝ 

Slide 57

Slide 57 text

EVNQ穠卓⢽ "QQMJDBUJPO 4ZTUFN&WFOUT  BQQMJDBUJPO1SPDFTTFT CZ/BNF ,FZOPUF  XJOEPXT CZ/BNF LBOB[BXB@SC@  TDSPMM"SFBT BU   CVUUPOT CZ/BNF وأة٦أٓ؎س׾箟꧊  وأة٦أٓ؎س׾箟꧊نةٝ

Slide 58

Slide 58 text

זַזַא׵ְ

Slide 59

Slide 59 text

⯓➂ך濼䜋׾⦵׶׷ ˖ +9"ך6*ًٖؒٝزךؙٔٝ׾《䖤ׅ׷أؙٔفز2JJUB
 IUUQRJJUBDPN[BLVSPJTIJLVSPJUFNTEFCBFD ˖ .BDךؗ٦ن٦سⰅ⸂ծوؐأؙٔحؙ׾+BWB4DSJQUד +9" 2JJUB
 IUUQRJJUBDPN[BLVSPJTIJLVSPJUFNTBGBCFBECBGVJFMFNFOU

Slide 60

Slide 60 text

׌ְע⸔ַ׷ ָ ת׌蕱遤

Slide 61

Slide 61 text

ָ׿ל׷׃ַזְ قٕفى٦

Slide 62

Slide 62 text

أؙٔفزך⥂㶷 ˖ չأؙٔفزؒر؍ةBQQպד箟꧊׃׋׮ך׾
 ⥂㶷ׅ׷儗חכؿ؋؎ٕؿؓ٦وحز׾鼅ץ׷ ˖ أؙٔفز ˖ أؙٔفزغٝسٕ ˖ ،فٔ؛٦ءّٝ ˖ ذؗأز

Slide 63

Slide 63 text

أؙٔفزך⥂㶷 ˖ չأؙٔفزؒر؍ةBQQպד箟꧊׃׋׮ך׾
 ⥂㶷ׅ׷儗חכؿ؋؎ٕؿؓ٦وحز׾鼅ץ׷ ˖ أؙٔفز ˖ أؙٔفزغٝسٕ ˖ ،فٔ؛٦ءّٝ ˖ ذؗأز 鑫稢ⶴ䠥

Slide 64

Slide 64 text

暴ⴽזꟼ侧 ˖ 暴㹀ךة؎ىؚٝדㄎן⳿ׁ׸׷ꟼ侧 ˖ 寸׭׵׸׋せ⵸ד㹀纏׃גֶֻ ˖ SVOׅץגךؿؓ٦وحز ˖ PQFO%PDVNFOUT QSJOU%PDVNFOUT JEMF  SFPQFO RVJU،فٔ؛٦ءّٝؿؓ٦وحز

Slide 65

Slide 65 text

SVO ˖ +9"㹋遤儗חㄎן⳿ׁ׸׷ꟼ侧 ˖ 䒷侧׾《׶䪔ֲֿהָדֹ׷ var run = function(argv) { console.log(`${argv[0]}`) }

Slide 66

Slide 66 text

暴ⴽזꟼ侧 ˖ 暴㹀ךة؎ىؚٝדㄎן⳿ׁ׸׷ꟼ侧 ˖ 寸׭׵׸׋せ⵸ד㹀纏׃גֶֻ ˖ SVOׅץגךؿؓ٦وحز ˖ PQFO%PDVNFOUT QSJOU%PDVNFOUT JEMF  SFPQFO RVJU،فٔ؛٦ءّٝؿؓ٦وحز 鑫稢ⶴ䠥

Slide 67

Slide 67 text

؝وٝسٓ؎ٝדך㹋遤 ˖ PTBTDSJQU؝وٝس׾⢪ֲ ˖ TDQUז׵׉ךתת䭷㹀 ˖ PTBTDSJQUNZ@TDSJQUTDQU ˖ ذؗأز䕎䒭ז׵ؿؓ٦وحز׾䭷㹀 ˖ PTBTDSJQUM+BWB4DSJQUNZ@TDSJQUKT

Slide 68

Slide 68 text

؎ٝةؙٓذ؍ـٌ٦س ˖ PTBTDSJQUJד饯⹛דֹ׷ ˖ 㼎鑧涸؎ٝة٦ؿؑ؎أ ˖ JSC׫׋ְז׮ך ˖ DUSMEד䫙ֽ׷

Slide 69

Slide 69 text

㢩鿇ٓ؎ـٓٔךⵃ欽 ˖ 0CK$JNQPSU׾⢪׏גٓ؎ـٓٔ׾铣׫鴥׭׷ ˖ FYJUDPEF➰ֹד穄✪׃׋׶橆㞮㢌侧׾⿫撑׃׋׶ׅ ׷ךחTUEMJC׾铣׫鴥׬ֿהָ㢳ְ ˖ $PDPBךٓ؎ـٓٔ׾⢪ֲֿה׮״ֻ֮׷ ˖ $PNNPO+4װ#SPXTFSJGZה鸬⹛ז׿גֿה׮דֹ׷ 鑫稢ⶴ䠥

Slide 70

Slide 70 text

תה׭

Slide 71

Slide 71 text

תה׭ ˖ "QQMF4DSJQUד⳿勻׷ֿהכקרדֹ׷ ˖ 荈⹛⻉⤑ⵃ

Slide 72

Slide 72 text

תה׭ ˖ سًُؗٝزָ㼰זְ ˖ "QQMF4DSJQUךسًُؗٝز׾׫זָ׵
 չ䱿庠պ׾⫴ַׇ׷ךָ״ְ ˖ ׋׌׃䗳׆׃׮鎸鶢倯岀ָوحؾؚٝ׃גְ ׷鏬דכזְךד岣䠐
 劤أٓ؎س剑ⴱך؟ٝفٕד4BGBSJךةـ ׾乼⡲׃גְ׷鿇ⴓהַ

Slide 73

Slide 73 text

תה׭ #BTIד⳿勻׷ֿהכ #BTIדװ׸

Slide 74

Slide 74 text

תה׭ #BTIד⳿勻׷ֿהכ #BTIדװ׸ +9"ח⡦ד׮װ׵ׇ״ֲהׅ׷ךדכזֻծ䖤䩛♶䖤䩛ח 䘔ׄגⳢ椚ⴓⶴ׃ծ׉ךֲִד鸬䵿ׇׁ׷ֿהָꅾ銲דׅ
 EP4IFMM4DSJQU׾崞欽׃ת׃׳ֲ

Slide 75

Slide 75 text

5PNPLB[V,JZPIBSB IUUQHJUIVCDPNLJZPIBSB IUUQGBDFCPPLDPNUPNPLB[VLJZPIBSB 5IBOLZPV