Slide 1

Slide 1 text

© Chatwork ϩʔΧϥΠθʔγϣϯɾαʔϏε 1ISBTF4USJOHT͜ͱ͸͡Ί ೥݄೔ɹϞόΠϧΞϓϦέʔγϣϯ։ൃ෦҆୐ਖ਼೭ $IBUXPSLגࣜձࣾ

Slide 2

Slide 2 text

໨త 2 ● 1ISBTF4USJOHTͷجຊతͳ࢖͍ํΛ఻͑Δ ● $IBUXPSLͷ1ISBTF4USJOHTར༻ϊ΢ϋ΢Λ఻͑Δ

Slide 3

Slide 3 text

1ISBTF4USJOHTͱ͸ -PDBMJ[BCMFTUSJOHTϑΝΠϧͷऔಘ ϒϥϯνઓུ 4UPSZCPBSEͷଟݴޠԽ 1 2 3 4 AGENDA ΞδΣϯμ

Slide 4

Slide 4 text

1ISBTF4USJOHTͱ͸ 1

Slide 5

Slide 5 text

1ISBTF4USJOHTͷྺ࢙ 5 ● ೥݄1ISBTF"QQαʔϏεɾϩʔϯν ● ೥1ISBTFʹαʔϏε໊มߋ ● ೥݄.FNTPVSDFࣾʹങऩ ● ೥݄೔1ISBTF4USJOHTʹαʔϏε໊มߋ

Slide 6

Slide 6 text

1ISBTF4USJOHTͱ͸ 6 ● ΢Σϒϕʔεͷ຋༁؅ཧ αʔϏε ● ຋༁Ωʔͱจݴͷ؅ཧ ● ຋༁ΤσΟλʔͷఏڙ ● ຋༁ϑΝΠϧͷΞ΢τϓοτ

Slide 7

Slide 7 text

1IBSFT4USJOHTΛ࢖ͬͯΈΔŠαϯϓϧϓϩδΣΫτ 7 ● αϯϓϧϓϩδΣΫτΛ࡞੒͠·ͨ͠ ● IUUQTHJUIVCDPNBUBLBJ04.FFUVQ ● 4XJGU੡ͷΞϓϦ͕ೖ͍ͬͯ·͢ ● 1ISBTF4USJOHTͷઃఆ αϯϓϧ ͕ೖ͍ͬͯ·͢ ● ֤छεΫϦϓτ͕ೖ͍ͬͯ·͢ ● 1ISBTF4USJOHTϓϩδΣΫτͷΞΫηεݖ͸͋Γ·ͤΜ🙇

Slide 8

Slide 8 text

Ωʔͷొ࿥ͱ຋༁

Slide 9

Slide 9 text

1ISBTF4USJOHTΛ࢖ͬͯΈΔŠΩʔͷొ࿥ 9 ● ʮ)FMMP 8PSMEʯͷΩʔͱ຋༁Λొ࿥ͯ͠ΈΔɻ

Slide 10

Slide 10 text

1ISBTF4USJOHTΛ࢖ͬͯΈΔŠΩʔͷొ࿥ 10 ● ʮ)FMMP 8PSMEʯͷΩʔͱ຋༁Λొ࿥ͯ͠ΈΔɻ

Slide 11

Slide 11 text

● ʮ)FMMP 8PSMEʯͷΩʔͱ຋༁Λొ࿥ͯ͠ΈΔɻ 1ISBTF4USJOHTΛ࢖ͬͯΈΔŠΩʔͷొ࿥ 11

Slide 12

Slide 12 text

● ʮ)FMMP 8PSMEʯͷΩʔͱ຋༁Λొ࿥ͯ͠ΈΔɻ 1ISBTF4USJOHTΛ࢖ͬͯΈΔŠ຋༁ͷొ࿥ 12

Slide 13

Slide 13 text

● ʮ)FMMP 8PSMEʯͷΩʔͱ຋༁Λొ࿥ͯ͠ΈΔɻ 1ISBTF4USJOHTΛ࢖ͬͯΈΔŠ຋༁ͷొ࿥ 13

Slide 14

Slide 14 text

● ʮ)FMMP 8PSMEʯͷΩʔͱ຋༁Λొ࿥ͯ͠ΈΔɻ 1ISBTF4USJOHTΛ࢖ͬͯΈΔŠ຋༁ͷొ࿥ 14

Slide 15

Slide 15 text

● ʮ)FMMP 8PSMEʯͷΩʔͱ຋༁Λొ࿥ͯ͠ΈΔɻ 1ISBTF4USJOHTΛ࢖ͬͯΈΔŠ຋༁ͷొ࿥ 15

Slide 16

Slide 16 text

● ʮ)FMMP 8PSMEʯͷΩʔͱ຋༁Λొ࿥ͯ͠ΈΔɻ 1ISBTF4USJOHTΛ࢖ͬͯΈΔŠ຋༁ͷొ࿥ 16

Slide 17

Slide 17 text

● ʮ)FMMP 8PSMEʯͷΩʔͱ຋༁Λొ࿥ͯ͠ΈΔɻ 1ISBTF4USJOHTΛ࢖ͬͯΈΔŠ຋༁ͷొ࿥ 17

Slide 18

Slide 18 text

຋༁ґཔ

Slide 19

Slide 19 text

1ISBTF4USJOHTΛ࢖ͬͯΈΔŠෳ਺Ωʔͷొ࿥ 19 ● ʮΞοϓάϨʔυʯʹؔ ͢ΔΩʔΛͭొ࿥ ● ೔ຊޠ༁ͷΈ༻ҙ

Slide 20

Slide 20 text

1ISBTF4USJOHTΛ࢖ͬͯΈΔŠෳ਺Ωʔͷొ࿥ 20 ● ϓϩδΣΫτϖʔδʹ ʮTranslations requiredʯ ● ͭͷΩʔ͕ະ຋༁ͩͱ ෼͔Δ

Slide 21

Slide 21 text

-PDBMJ[BCMFTUSJOHTϑΝΠϧͷऔಘ 2

Slide 22

Slide 22 text

΢Σϒϖʔδ͔Βμ΢ϯϩʔυ

Slide 23

Slide 23 text

● ӳޠͷʮ%PXOMPBEʯϘλϯΛԡ͢ -PDBMJ[BCMFTUSJOHTϑΝΠϧͷऔಘŠ΢Σϒ͔Βμ΢ϯϩʔυ 23

Slide 24

Slide 24 text

● ϑΝΠϧϑΥʔϚοτΛબ୒ɾ֬ೝ -PDBMJ[BCMFTUSJOHTϑΝΠϧͷऔಘŠ΢Σϒ͔Βμ΢ϯϩʔυ 24

Slide 25

Slide 25 text

● ʮ%PXOMPBEʯϘλϯΛԡ͢ -PDBMJ[BCMFTUSJOHTϑΝΠϧͷऔಘŠ΢Σϒ͔Βμ΢ϯϩʔυ 25

Slide 26

Slide 26 text

● ʮ)FMMP 8PSMEʯͷΩʔͱ຋༁Λొ࿥ͯ͠ΈΔɻ -PDBMJ[BCMFTUSJOHTϑΝΠϧͷऔಘŠ΢Σϒ͔Βμ΢ϯϩʔυ 26

Slide 27

Slide 27 text

© Chatwork ಉ͡ૢ࡞Λݴޠͷ਺ ͚ͩ܁Γฦ͢

Slide 28

Slide 28 text

© Chatwork ໘౗Ͱ͢Ͷ

Slide 29

Slide 29 text

QISBTFίϚϯυ

Slide 30

Slide 30 text

QISBTFίϚϯυŠ࢖ͬͯΈΔ 30 ● phrase pull ● શݴޠͷϑΝΠϧ͕ ● ద੾ͳύεʹ ● μ΢ϯϩʔυ͞ΕΔ

Slide 31

Slide 31 text

QISBTFίϚϯυŠΠϯετʔϧํ๏ 31 ● CSFXΛ࢖͏ $ brew tap phrase/brewed $ brew install phrase

Slide 32

Slide 32 text

QISBTFίϚϯυŠॳظઃఆ 32 ● phrase init ● ϓϩδΣΫτͷࢦఆ ● ϑΝΠϧϑΥʔϚοτͷ ࢦఆ ● μ΢ϯϩʔυύεͷࢦఆ ● FUD

Slide 33

Slide 33 text

QISBTFίϚϯυŠॳظઃఆϑΝΠϧQISBTFZNM 33 ● ● en, ja ʹల։ ● access_token͸ ● อଘ͠ͳ͍

Slide 34

Slide 34 text

QISBTFίϚϯυŠBDDFTT@UPLFOͷઃఆ 34 ● [TISD ● ؀ڥม਺ͱͯ͠ઃఆ export PHRASEAPP_ACCESS_TOKEN="͋ͳͨͷτʔΫϯ"

Slide 35

Slide 35 text

ϒϥϯνઓུ 3

Slide 36

Slide 36 text

ෳ਺ͷϓϩδΣΫτ͕ಉ࣌ʹ૸ͬͨΒ

Slide 37

Slide 37 text

ෳ਺ϓϩδΣΫτŠͲ͏͢Δ 37 ● ྫ͑͹ ● དྷ೥Ձ֨վఆ͠·͢ ● ผ1+΋ಈ͍ͯ·͢

Slide 38

Slide 38 text

ෳ਺ϓϩδΣΫτŠ(JUͳΒ 38 ● ֤ʑʹ(JUͷϒϥϯν࡞੒ ● Ձ֨վఆϒϥϯν ● ผ1+ϒϥϯν

Slide 39

Slide 39 text

ෳ਺ϓϩδΣΫτŠ(JUͳΒ 39 ● ֤ʑʹ(JUͷϒϥϯν࡞੒ ● Ձ֨վఆϒϥϯν ● ผ1+ϒϥϯν ● Ձ֨վఆͷจݴมߋ͕ ● ผ1+ʹऔΓࠐ·ΕΔ

Slide 40

Slide 40 text

1ISBTF4USJOHTͷϒϥϯν

Slide 41

Slide 41 text

1ISBTF4USJOHTͷϒϥϯνŠུ֓ͱઃఆ 41 ● σϑΥϧτͰ͸Φϑ

Slide 42

Slide 42 text

1ISBTF4USJOHTͷϒϥϯνŠུ֓ͱઃఆ 42 ● σϑΥϧτͰ͸Φϑ ● γϯϓϧͳػೳͷΈఏڙ ● ࡞੒ɾ੾ସ ● Ϛʔδ

Slide 43

Slide 43 text

1ISBTF4USJOHTͷϒϥϯνŠུ֓ͱઃఆ 43 ● σϑΥϧτͰ͸Φϑ ● γϯϓϧͳػೳͷΈఏڙ ● ࡞੒ɾ੾ସ ● Ϛʔδ ● (JUͱ1ISBTF4USJOHT ● ϒϥϯνಉظͰ͖ͳ͍

Slide 44

Slide 44 text

1ISBTF4USJOHTͷϒϥϯνŠ3VCZ4DSJQUT 44 ● 3VCZ4DSJQUTΛ༻ҙ ● QISBTFCSBODIUYU ● 1ISBTF4USJOHTͷϒ ϥϯν໊Λอଘ ● ϒϥϯνରԠͤͨ͞ QISBTFQVMM༻εΫϦϓ τΛ༻ҙ

Slide 45

Slide 45 text

4UPSZCPBSEͷଟݴޠԽ 4

Slide 46

Slide 46 text

6*ͷଟݴޠԽ

Slide 47

Slide 47 text

4XJGU6*ͷଟݴޠԽ 47 ● ΩʔΛ௚઀ॻ͚Δ struct SwiftUIView: View { let item: SampleItem var body: some View { Text("hello_world") .navigationTitle(item.title) } }

Slide 48

Slide 48 text

4XJGU6*ͷଟݴޠԽ 48 ● ΩʔΛ௚઀ॻ͚Δ struct SwiftUIView: View { let item: SampleItem var body: some View { Text("hello_world") .navigationTitle(item.title) } }

Slide 49

Slide 49 text

4UPSZCPBSEͷଟݴޠԽ 49 ● ΩʔΛ௚઀ॻ͘ͱ

Slide 50

Slide 50 text

4UPSZCPBSEͷଟݴޠԽ 50 ● ΩʔΛ௚઀ॻ͘ͱΩʔ͕ग़Δ

Slide 51

Slide 51 text

4XJGU6*ͷଟݴޠԽ 51 ● ίʔυͰରԠ @IBOutlet var helloLabel: UILabel! { didSet { helloLabel.text = NSLocalizedString(“hello_world” comment: "Hello, World!") } }

Slide 52

Slide 52 text

4UPSZCPBSE͚ͩͰଟݴޠԽ

Slide 53

Slide 53 text

4UPSZCPBSEͷଟݴޠԽ 53 ● ӈΧϥϜ ● 'JMF*OTQFDUPS ● -PDBMJ[BUJPO

Slide 54

Slide 54 text

4UPSZCPBSEͷଟݴޠԽ 54 ● ӈΧϥϜ ● 'JMF*OTQFDUPS ● -PDBMJ[BUJPO ● ࠨΧϥϜ ● 1SPKFDUOBWJHBUPS ● TUSJOHT

Slide 55

Slide 55 text

4UPSZCPBSEͷଟݴޠԽ 55 ● TUSJOHTΛฤू "DKP-2Z-Psf.text" = "hello_world";

Slide 56

Slide 56 text

4UPSZCPBSEͷଟݴޠԽ 56 ● TUSJOHTΛฤू "DKP-2Z-Psf.text" = "͜Μʹͪ͸ɺੈք!";

Slide 57

Slide 57 text

4UPSZCPBSEͷଟݴޠԽ 57 ● TUSJOHTΛฤू "DKP-2Z-Psf.text" = "͜Μʹͪ͸ɺੈք!";

Slide 58

Slide 58 text

ͦΕɺશͯͷ4UPSZCPBSEͰख࡞ۀ͢Δͷ

Slide 59

Slide 59 text

MTYTίϚϯυ

Slide 60

Slide 60 text

MTYTίϚϯυŠུ֓ͱΠϯετʔϧ 60 ● TUSJOHTͷฤूΛࣗಈԽ https://github.com/ataka/ls2xs $ brew install ataka/formulae/ls2xs

Slide 61

Slide 61 text

MTYTίϚϯυŠུ֓ͱΠϯετʔϧ 61 ● σΟϨΫτϦΛҾ਺ʹ MTYT࣮ߦ

Slide 62

Slide 62 text

·ͱΊ 62 ● 1ISBTFͷ؆୯ͳ঺հΛ͠·ͨ͠ ● μ΢ϯϩʔυΛָʹ͢ΔQISBTFίϚϯυΛ঺հ͠·ͨ͠ ● ϒϥϯνػೳͱαϙʔτ༻ͷεΫϦϓτΛ঺հ͠·ͨ͠ ● 4UPSZCPBSE͚ͩͰ຋༁͢Δํ๏ͱMTYTίϚϯυΛ঺հ͠·ͨ͠

Slide 63

Slide 63 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·͢ɻ J04ͱ"OESPJEͷ ΤϯδχΞืूதͰ͢

Slide 64

Slide 64 text

ಇ͘Λ΋ͬͱָ͘͠ɺ૑଄తʹ