Slide 1

Slide 1 text

5FTU1MBOͷ࢖͍ಓ )","5"5FTU/JHIU

Slide 2

Slide 2 text

1SPpMF struct Profile { let name = "Kazuya Ueoka" let twitter = "@fromkk" let github = "fromkk" let qiita = "fromkk" let company = "Timers Inc." } • 2

Slide 3

Slide 3 text

88%$Ͱൃද IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

Slide 4

Slide 4 text

#FGPSF5FTU1MBO w ؀ڥͷมߋʹऑ͔ͬͨ w $*্Ͱݴޠ΍஍ҬΛม͑ͯςετ͠Α͏ͱ͢Δͱ YDPEFCVJMEUFTUͷΦϓγϣϯΛઃఆ࣮ͯ͠ߦ͕ඞཁ w UFTU-BOHVBHF΍UFTU3FHJPOͰมߋ͍ͯͨ͠ 4

Slide 5

Slide 5 text

"GUFS5FTU1MBO w ςετͷ؀ڥઃఆΛॊೈʹઃఆՄೳ w YDUFTUQMBOͱ͍͏+40/ϑΝΠϧͰෳ਺؀ڥΛઃఆ w ෳ਺ͷ؀ڥΛߏஙͯ͠Ұؾʹ࣮ߦՄೳ w ௨ৗ͸Ϣχοτςετ͚࣮ͩߦͯ͠ɺॏ͍6*ςετ͸ผͷ 5FTU1MBOʹ෼͚ͯ؅ཧͳͲ 5

Slide 6

Slide 6 text

5FTU1MBOͷઃఆํ๏ 4DIFNFͷฤूը໘Ͱ5FTUΛબ୒

Slide 7

Slide 7 text

ςετ͢Δλʔήοτͷ௥Ճ

Slide 8

Slide 8 text

ςετͷλʔήοτΛબ୒

Slide 9

Slide 9 text

$POpHVSBUJPOΛબ୒ w 4IBSFE4FUUJOHTͰॳ ظ஋Λઃఆ w $POpHVSBUJPOΛ௥ Ճ͢Δͱܧঝ͞ΕΔ w ࠨԼͷϘλϯ͔Βߏ ੒Λ௥Ճɾ࡟আ͢Δ͜ ͱ͕Մೳ 9

Slide 10

Slide 10 text

ઃఆ߲໨ w ςετͷ࣮ߦ࣌ͷઃఆΛมߋ ͢Δࣄ͕Մೳ Ҿ਺ɺ؀ڥม ਺ɺϩέʔϧ৘ใͳͲ w ςετͷ࣮ߦॱং΍ίʔυΧ όϨοδʹؔ͢Δ߲໨΍Ϋ ϥογϡ࣌ʹऔಘ͢Δ৘ใͳ Ͳ΋

Slide 11

Slide 11 text

࣮ߦ w 㵰6Ͱݱࡏબ୒தͷશͯͷςετϓϥϯ͕࣮ߦ͞ΕΔ w ෳ਺ͷ$POpHVSBUJPO͕ଘࡏ͢Δঢ়ଶͰςετ࣮ߦϘλϯΛӈ ΫϦοΫ͢Δͱ$POpHVSBUJPOΛબΜͰ࣮ߦՄೳ w ίϚϯυϥΠϯ͔Β͸YDPEFCVJMEUFTUUFTU1MBO5FTU1MBO໊

Slide 12

Slide 12 text

13 ߋʹࡉ͔͍5FTU1MBOͷઃఆํ๏΋όονϦܝࡌʂ

Slide 13

Slide 13 text

5FTU1MBOͷ࢖͍ಓ

Slide 14

Slide 14 text

5FTU1MBOͷ࢖͍ಓ ຋༁͕ਖ਼͘͠ઃఆ͞Ε͍ͯΔ͔

Slide 15

Slide 15 text

લఏ

Slide 16

Slide 16 text

લఏ

Slide 17

Slide 17 text

લఏ

Slide 18

Slide 18 text

5FTU1MBOʹ"NFSJDB ӳޠ Λ௥Ճͯ͠ΈΔ

Slide 19

Slide 19 text

ςετ͕ίέ·ͨ͠

Slide 20

Slide 20 text

೔ຊޠ͚ͩςετ͢Δ৔߹ʹͨ·ͨ· ੒ޭ͢Δ͜ͱ͕͋Δ͔΋ʁ

Slide 21

Slide 21 text

5FTU1MBOͷ࢖͍ಓ Locale ͷະઃఆΛݟ͚ͭΔ

Slide 22

Slide 22 text

೔෇ͷ୯ҐΛมߋ͍ͨ͠ TU import Foundation struct DayConverter { static func convert(day: Int, for languageCode: String) -> String { if languageCode == "en" { let day = day let number = NSNumber(value: day) let numberFormatter = NumberFormatter() numberFormatter.numberStyle = .ordinal return numberFormatter.string(from: number)! } else { return String(day) } } }

Slide 23

Slide 23 text

લఏ

Slide 24

Slide 24 text

5FTUͯ͠ΈΔ 24

Slide 25

Slide 25 text

5FTU1MBOʹ೔ຊͷઃఆΛ௥Ճ

Slide 26

Slide 26 text

ίέͨʁୈʁ

Slide 27

Slide 27 text

मਖ਼ͯ͠ΈΔ import Foundation struct DayConverter { static func convert(day: Int, for locale: Locale) -> String { if locale.languageCode == "en" { let day = day let number = NSNumber(value: day) let numberFormatter = NumberFormatter() numberFormatter.locale = locale numberFormatter.numberStyle = .ordinal return numberFormatter.string(from: number)! } else { return String(day) } } }

Slide 28

Slide 28 text

ແࣄςετ͕௨ͬͨ

Slide 29

Slide 29 text

ϝϦοτʗσϝϦοτ w ϝϦοτ w ฐࣾͰ։ൃɾӡ༻͍ͯ͠ΔΞϓϦέʔγϣϯͷ'BNNͰ΋5FTU1MBOΛ׆༻ w ಋೖ͢ΔதͰͭෆ۩߹Λݟ͚ͭΔ͜ͱ͕Ͱ͖ͨ w σϝϦοτ w ςετͷ࣮ߦճ਺͕૿͑ΔͷͰ୯ʹςετʹ͔͔Δ͕࣌ؒ৳ͼͯ͠·͏ w ීஈ࢖͍͢Δ5FTU1MBOͱ$*্Ͱ࣮ߦ͢Δ5FTU1MBOΛ෼͚ΔͳͲͯ͠ӡ༻ Λઃܭ͢Δͷ͕Αͦ͞͏ 29

Slide 30

Slide 30 text

·ͱΊ w 5FTU1MBO͕ग़Δ·Ͱ͸؀ڥΛಈతʹมߋͯ͠ͷςετ͸ͱͯ΋ େม͕ͩͬͨͱͯ΋؆୯ʹγϛϡϨʔτग़དྷΔ༷ʹͳͬͨ w %*๨ΕͳͲ͕ؾ෇͖қ͘ͳͬͨͷͰ׆༻ͯ͠ΈΔͷ͸Φεεϝ w αϯϓϧίʔυҰԠ্͛ͯ·͢ IUUQTHJUIVCDPNGSPNLL5FTU1MBO%FNP)BLBUB5FTU/JHIU 30

Slide 31

Slide 31 text

:PV5VCF https://youtu.be/z1Ez3LLpTDg

Slide 32

Slide 32 text

13 32

Slide 33

Slide 33 text

• αʔόʔαΠυΤϯδχΞ (PHP, Golang, AWS) • AndroidΤϯδχΞ (Kotlin) • iOSΤϯδχΞ (Swift) TimersͰ͸ݱࡏΤϯδχΞશ৬छ࠾༻தʂ ৄ͘͠͸”Timers”Ͱݕࡧ 33

Slide 34

Slide 34 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 34