Slide 1

Slide 1 text

೔޲ڧ ͦΕͰ΋ͳΜͱ͔ͯ͠WebϖʔδΛTV΍WatchͰݟ͍ͨʂ J04%$-5

Slide 2

Slide 2 text

͸͡Ίʹ

Slide 3

Slide 3 text

w 8FCϖʔδΛද͍ࣔͨ͠ w 8FCϖʔδΛදࣔ͢Δʹ͸ɺ8FCϒϥ΢β͕ඞཁ ͸͡Ίʹ

Slide 4

Slide 4 text

w 8FCϖʔδΛද͍ࣔͨ͠ w 8FCϖʔδΛදࣔ͢Δʹ͸ɺ8FCϒϥ΢β͕ඞཁ w 8,8FC7JFX w 4'4BGBSJ7JFX$POUSPMMFS w 6*8FC7JFX ͸͡Ίʹ

Slide 5

Slide 5 text

w 4'4BGBSJ7JFX$POUSPMMFS w 8,8FC7JFX UW04΍XBUDI04ͷ8FC7JFXࣄ৘ 8FCϒϥ΢β

Slide 6

Slide 6 text

w 4'4BGBSJ7JFX$POUSPMMFS w 4BGBSJ4FSWJDFT͕JNQPSUͰ͖ͳ͍ w 8,8FC7JFX w 8FC,JU͕JNQPSUͰ͖ͳ͍ UW04΍XBUDI04ͷ8FC7JFXࣄ৘ 8FCϒϥ΢β 8FCϒϥ΢β͕ͳ͍

Slide 7

Slide 7 text

·ͱΊ

Slide 8

Slide 8 text

8BUDI04

Slide 9

Slide 9 text

UW04

Slide 10

Slide 10 text

8FCϖʔδ͸ݟΒΕΔ

Slide 11

Slide 11 text

Ͳ͏΍͍ͬͯΔͷ͔

Slide 12

Slide 12 text

Ͳ͏΍͍ͬͯΔͷ͔

Slide 13

Slide 13 text

Ͳ͏΍͍ͬͯΔͷ͔ "VUIFOUJDBUJPO4FSWJDFT

Slide 14

Slide 14 text

Ͳ͏΍͍ͬͯΔͷ͔ "VUIFOUJDBUJPO4FSWJDFT ೝূΛߦ͏ࡍʹར༻͢Δ w 4JHO*O8JUI"QQMF w 8FCೝূ

Slide 15

Slide 15 text

Ͳ͏΍͍ͬͯΔͷ͔ "VUIFOUJDBUJPO4FSWJDFT ೝূΛߦ͏ࡍʹར༻͢Δ w 4JHO*O8JUI"QQMF w ఏڙ͞Εͨ6*Λར༻ w 8FCೝূ w 8FCϏϡʔܦ༝ͰೝূΛߦ͏

Slide 16

Slide 16 text

Ͳ͏΍͍ͬͯΔͷ͔ "VUIFOUJDBUJPO4FSWJDFT ೝূΛߦ͏ࡍʹར༻͢Δ w 4JHO*O8JUI"QQMF w "QQMFͷ6*Λར༻ w 8FCೝূ w 8FCϏϡʔܦ༝ͰೝূΛߦ͏

Slide 17

Slide 17 text

8FCϏϡʔܦ ༝ೝূ

Slide 18

Slide 18 text

Ͳ͏΍͍ͬͯΔͷ͔ "VUIFOUJDBUJPO4FSWJDFT import SwiftUI import AuthenticationServices struct ContentView: View { @Environment(\.webAuthenticationSession) private var webAuthenticationSession var body: some View { Button { let url = URL(string: "https://ja.wikipedia.org/wiki/MAC")! Task { try await webAuthenticationSession.authenticate(using: url, callbackURLScheme: "",preferredBrowserSession: .ephemeral) } } label: { Text("Hello, world!") } } } 63-ࢦఆͰ֘౰ͷϖʔδΛදࣔՄೳ

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

w 4XJGU6* w 8FC"VUIFOUJDBUJPO4FTTJPO w XBUDI04 w UW04 w 6*,JU w "48FC"VUIFOUJDBUJPO4FTTJPO w XBUDI04 w UW04 Ͳ͏΍͍ͬͯΔͷ͔ "VUIFOUJDBUJPO4FSWJDFT

Slide 21

Slide 21 text

w 4XJGU6* w 8FC"VUIFOUJDBUJPO4FTTJPO w XBUDI04 w UW04 w 6*,JU w "48FC"VUIFOUJDBUJPO4FTTJPO w XBUDI04 w UW04 Ͳ͏΍͍ͬͯΔͷ͔ "VUIFOUJDBUJPO4FSWJDFT

Slide 22

Slide 22 text

UW04Ͱ "VUIFOUJDBUJPO4FSWJDFT

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

w UW04 w ϒϥ΢β͸։͔ͣɺઐ༻ͷը໘͕දࣔ͞ΕΔ w ۙ͘ͷJ1IPOFͰ8FC͕։͘ Ͳ͏΍͍ͬͯΔͷ͔ "VUIFOUJDBUJPO4FSWJDFT

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

6*8FC7JFXΛແཧ΍Γݺͼग़ͯ͠දࣔ

Slide 27

Slide 27 text

୅ସҊ

Slide 28

Slide 28 text

6*5FYU7JFX /4"UUSJCVUFE4USJOH

Slide 29

Slide 29 text

UW04Ͱ8FCϖʔδӾཡ 6*5FYU7JFX/4"UUSJCVUFE4USJOH w /4"UUSJCVUFE4USJOHʹ͸)5.-ΛಡΈࠐΉͨΊͷ "1*͕༻ҙ͞Ε͍ͯΔ w MPBE'SPN)5.- TUSJOHPQUJPOTDPNQMFUJPO)B OEMFS ͳͲ w USZBXBJU/4"UUSJCVUFE4USJOHGSPN)5.-

Slide 30

Slide 30 text

UW04Ͱ8FCϖʔδӾཡ 6*5FYU7JFX/4"UUSJCVUFE4USJOH w /4"UUSJCVUFE4USJOHʹ͸)5.-ΛಡΈࠐΉͨΊͷ "1*͕༻ҙ͞Ε͍ͯΔ w MPBE'SPN)5.- TUSJOHPQUJPOTDPNQMFUJPO)B OEMFS ͳͲ w USZBXBJU/4"UUSJCVUFE4USJOHGSPN)5.- w JNQPSU8FC,JU͕ඞཁ

Slide 31

Slide 31 text

UW04Ͱ8FCϖʔδӾཡ 6*5FYU7JFX/4"UUSJCVUFE4USJOH w /4"UUSJCVUFE4USJOHʹ͸)5.-ΛಡΈࠐΉͨΊͷ "1*͕༻ҙ͞Ε͍ͯΔ w MPBE'SPN)5.- TUSJOHPQUJPOTDPNQMFUJPO)B OEMFS ͳͲ w USZBXBJU/4"UUSJCVUFE4USJOHGSPN)5.- w JNQPSU8FC,JU͕ඞཁ w /4"UUSJCVUFE4USJOH EBUBPQUJPOT EPDVNFOU"UUSJCVUFT

Slide 32

Slide 32 text

UW04Ͱ8FCϖʔδӾཡ 6*5FYU7JFX/4"UUSJCVUFE4USJOH override func loadView() { let textView = UITextView() textView.panGestureRecognizer.allowedTouchTypes = [NSNumber(value: UITouch.TouchType.indirect.rawValue)] textView.isUserInteractionEnabled = true textView.backgroundColor = .systemCyan do { let attributedText = try NSAttributedString(data: html, options: [NSAttributedString.DocumentReadingOptionKey.documentType : NSAttributedString.DocumentType.html], documentAttributes: nil) textView.attributedText = attributedText } catch {} view = textView } BUUSJCVUFE5FYUʹ)5.-ͷ/4"UUSJCVUFE4USJOHΛઃఆ

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

ݟΒΕͳ͘͸ͳ͍ʜʁ

Slide 35

Slide 35 text

)5.-

Slide 36

Slide 36 text

57.-

Slide 37

Slide 37 text

"11 UW04Ͱ8FCϖʔδӾཡ 57.-Λ഑෍͢Δ αʔό )5.-

Slide 38

Slide 38 text

"11 UW04Ͱ8FCϖʔδӾཡ 57.-Λ഑෍͢Δ αʔό )5.- 57.- αʔόଆͰ57.-Λੜ੒ͯ͠഑෍

Slide 39

Slide 39 text

"11 UW04Ͱ8FCϖʔδӾཡ ࢀߟɿ)5.-Λ57.-ʹม׵͢Δ αʔό )5.- 57.-

Slide 40

Slide 40 text

UW04Ͱ8FCϖʔδӾཡ ࢀߟɿ)5.-Λ57.-ʹม׵͢Δ 0CKFDUJWF$ - (NSString* )getTvml: (NSString* )html { const char* buffer = [html UTF8String]; htmlDocPtr doc = htmlReadMemory(buffer, (int)html.length, "", "UTF-8", 0); xmlNodePtr root = xmlDocGetRootElement(doc); NSMutableString* mutableString = [NSMutableString stringWithString:@" .topLeftLogo { tv- position: top-left; color:rgb(255,255,255); tv-text-style: headline; }"]; [mutableString appendFormat:@"%@", [self parseTag:root]]; return mutableString; } - (NSString *)parseTag: (htmlNodePtr)ptr { NSMutableString* mutableString = [NSMutableString string]; for (htmlNodePtr node = ptr; node != NULL; node = node->next) { switch (node->type) { case XML_ELEMENT_NODE: if(node->children != NULL) { NSString* ret = [self parseTag:node->children]; [mutableString appendString:ret]; } break; case XML_TEXT_NODE: if (node->content != NULL) { NSString* content = [[NSString stringWithUTF8String:(char *)node->content] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if (content.length != 0) { [mutableString appendFormat:@"%@", content]; } } default: break; } } return mutableString; } MJCYNM)5.-QBSTFSΛ࢖ͬͨ57.-ม׵

Slide 41

Slide 41 text

5.7-EJW5FNQMBUF

Slide 42

Slide 42 text

ࣗݾ঺հ

Slide 43

Slide 43 text

No content