Slide 1

Slide 1 text

USJDLBSU &YUFSOBM"DDFTTPSZೖ໳ ެࣜ'SBNFXPSLΛ࢖ͬͯϨγʔτϓϦϯλʔΛ੍ޚ͢Δʂ

Slide 2

Slide 2 text

ಥવͰ͕͢ Έͳ͞Μ

Slide 3

Slide 3 text

'SBNFXPSL ࢖ͬͯ·͔͢ʁ "QQMFϓϥοτϑΥʔϜ޲͚ͷ΋ͷ

Slide 4

Slide 4 text

ΞϓϦ։ൃʹ͔ܽͤͳ͍'SBNFXPSLͨͪ "QQMFެࣜͷ'SBNFXPSL͚ͩͰ΋ͨ͘͞Μ w 'PVOEBUJPO w 6*,JU w "QQ,JU w 4XJGU6* w $PNCJOF w FUDʜ

Slide 5

Slide 5 text

ΞϓϦ։ൃʹ͔ܽͤͳ͍'SBNFXPSLͨͪ "QQMFެࣜ'SBNFXPSL͸Կݸ͋ΔͰ͠ΐ͏ʁ w "໿ݸ w #໿ݸ w $໿ݸ

Slide 6

Slide 6 text

ݸʂ ਖ਼ղ͸$

Slide 7

Slide 7 text

w 5FDIOPMPHJFTϖʔδ w IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOUFDIOPMPHJFT w 'SBNFXPSL͕ͨ͘͞Μ w ࠓճ͓࿩͢Δ'SBNFXPSL΋ͦͷҰͭ ΞϓϦ։ൃʹ͔ܽͤͳ͍ 'SBNFXPSLͨͪ

Slide 8

Slide 8 text

&YUFSOBM'SBNFXPSLͱ͸ʁ w "QQMF͕ϦϦʔε͢Δ'SBNFXPSLͷҰͭ w ͦͷ໊ͷ௨Γ֎෦ΞΫηαϦͱ௨৴͢Δࣄ͕Ͱ͖Δ w ରԠ͢Δ֎෦ΞΫηαϦ͸-JHIUOJOH#MVFUPPUI઀ଓ ͷΞΫηαϦ w ࣮͸ϐϯ%PDLίωΫλ઀ଓʹ΋ରԠ͍ͯ͠Δ ରԠ͢Δ#MVFUPPUI͸#MVFUPPUI#3ɻ#MVFUPPUI-PX&OFSHZ͸$PSF#MVFUPPUI͕ରԠɻ

Slide 9

Slide 9 text

w ͦͷ໊ͷ௨ΓϨγʔτΛҹ࡮͢ ΔϓϦϯλʔ w αʔϚϧϓϦϯλʔͱ΋ݺ͹ΕΔ w จࣈ΍ਤܗΛҹ࡮Ͱ͖Δ ੍ޚ͢Δͷ͸ ϨγʔτϓϦϯλʔ Ҿ༻IUUQTTUBSNKQXQDPOUFOUVQMPBETNDQSJOU@KQH

Slide 10

Slide 10 text

8IZSFDFJQUQSJOUFS w ࣗ෼͕ϢϏϨδͱ͍͏104ϨδΞϓϦاۀʹۈΊͯΔ͔Β w ݸਓͰ΋ೖखՄೳ w ωοτ௨ൢͰߪೖՄೳ ਺ສԁ ɻϑϦϚΞϓϦ౳Ͱதݹ΋ग़඼͞Ε͍ͯΔ w ൺֱత؆୯ʹ࢓༷ॻ͕ೖखՄೳ w ௨৴σʔλྔ͕গͳ͘୯७ͰɺجຊతʹσʔλΛૹΔ͚ͩͰ͍͍

Slide 11

Slide 11 text

·ͣ͸४උ w J04ΞϓϦͷϓϩδΣΫτΛ࡞Δ w *OGPQMJTUʹҎԼͷ߲໨Λهड़͢ Δ w 6*4VQQPSUFE&YUFSOBM"DDFTTPSZ1SPUPDPMT w ػثͱͷ௨৴ϓϩτίϧ w ϕϯμʔ͝ͱʹҟͳΔ ૣ଎࡞Δ

Slide 12

Slide 12 text

ૣ଎࡞Δ ίʔυΛॻ͍͍ͯ͘&""DDFTTPSZ w ֎෦ΞΫηαϦ͸&""DDFTTPSZΫϥεͰද͞ΕΔ w ઀ଓࡁΈͷΞΫηαϦ͸&""DDFTTPSZ.BOBHFSͷDPOOFDUFE"DDFTTPSJFT ϓϩύςΟʹ֨ೲ͞Ε͍ͯΔ w ෳ਺ͷΞΫηαϦ͕͋Δ৔߹͸NPEFM/VNCFS΍QSPUPDPM4USJOHTϓϩύςΟ ΛΈͯ൑ఆ

Slide 13

Slide 13 text

ૣ଎࡞Δ ίʔυΛॻ͍͍ͯ͘&"4FTTJPO w ௨৴ηογϣϯͷ&"4FTTJPOΛ։࢝͢Δ w JOJUʹ௨৴͍ͨ͠&""DDFTTPSZͱQSPUPDPM4USJOHΛ౉͢ for accessory in EAAccessoryManager.shared().connectedAccessories { guard accessory.protocolStrings.contains("jp.star-m.starpro") else { continue } let session = EASession(accessory: accessory, forProtocol: "jp.star-m.starpro") }

Slide 14

Slide 14 text

ૣ଎࡞Δ ίʔυΛॻ͍͍ͯ͘&"4FTTJPO w &"4FTTJPO͸JOQVU4USFBNͱPVUQVU4USFBNΛ͍࣋ͬͯΔ w JOQVU4USFBN͔ΒσʔλΛಡΈग़ͯ͠ड৴ w PVUQVU4USFBNʹσʔλΛॻ͖ࠐΜͰૹ৴ w 4USFBNʹEFMFHBUFΛ౉ͯ͠3VO-PPQʹεέδϡʔϧͯ͠։͘ guard let session = EASession(accessory: accessory, forProtocol: protocolString), let outputStream = session.outputStream else { return nil } outputStream.delegate = self outputStream.schedule(in: .current, forMode: .default) outputStream.open()

Slide 15

Slide 15 text

ૣ଎࡞Δ ίʔυΛॻ͍͍ͯ͘ /4 4USFBN w 4USFBN͸ੲͳ͕Βͷ/44USFBN w 0VUQVU4USFBNʹ6OTBGF1PJOUFS6*OUͱͯ͠όΠτྻΛ౉͢ // "0"ͱ͚ͩҹࣈͯ͠վߦ͠ϖʔύʔΧοτ͢Δ var bytes: [UInt8] = [0x30, 0x0e, 0x0a, 0x1b, 0x64, 0x03] let length = outputStream.write(&bytes, maxLength: bytes.count) if length < 0 { print("error!") } else if length == 0 { print("full.") } else { if length != bytes.count { print("write data was split.") } // ॻ͖ࠐΜͩσʔλͷ࡟আ bytes = Array(bytes.dropFirst(length)) }

Slide 16

Slide 16 text

ૣ଎࡞Δ ίʔυΛॻ͍͍ͯ͘จࣈҹ࡮ w ελʔਫ਼ີ੡ϓϦϯλʔ͸4UBS13/5ͱ͍͏ϑΥʔϚοτ w 4IJGU+*4ͷςΩετͱ"4$**ͷ੍ޚจࣈͰఆٛ͞Ε੍ͨޚίϚϯυ͔ΒͳΔ w ೔ຊޠͷςΩετ΋ҹ࡮Մೳʂ let hello = Array("͜Μʹͪ͸ɺiOSDC 2023!".data(using: .shiftJIS)!) var bytes: [UInt8] = hello + [0x0e, 0x0a, 0x1b, 0x64, 0x03] let length = outputStream.write(&bytes, maxLength: bytes.count)

Slide 17

Slide 17 text

ૣ଎࡞Δ ίʔυΛॻ͍͍ͯ͘ը૾ҹ࡮ w ը૾Λҹ࡮ͯ͠ΈΔ w ͪΐͬͱσʔλྔ͸ଟ͍ͷͰ֓ཁ͚ͩ w ന͔ࠇ͔ͷϞϊΫϩը૾ w XJEUIͱIFJHIUΛϔομʹ౉ͯ͋͠ͱ͸ CJUͣͭന GBMTF ͔ࠇ USVF ͔ͷσʔλ Λ٧Ί͍ͯ͘

Slide 18

Slide 18 text

ΞϓϦͷϦϦʔεͱ1SPEVDU1MBO*% 11*% ݸਓͰΞϓϦΛϦϦʔε͢Δͷ͸೉͍͔͠΋ʜ w &YUFSOBM"DDFTTPSZΛ࢖ͬͨΞϓϦΛϦϦʔε͢Δʹ͸11*%͕ඞཁ w 11*%͸࢖༻͍ͨ͠ΞΫηαϦͷϕϯμʔʹґཔͯ͠औಘ͢Δඞཁ͕͋Δ w ΞΫηαϦϕϯμʔ͸΢ΣϒαΠτͰϑΥʔϜΛ༻ҙ͍ͯ͠Δ͕ձ໊ࣾͳͲΛ ٻΊΒΕΔ৔߹΋ଟ͍ w ݸਓͷΞϓϦΛରԠͯ͘͠ΕΔϕϯμʔ͕͋Δͷ͔͸ෆ໌ w खݩͰσόοάϏϧυͰ༡Ϳ෼ʹ͸໰୊ͳ͍

Slide 19

Slide 19 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ࢀߟ w IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOFYUFSOBMBDDFTTPSZ w IUUQTEFWFMPQFSBQQMFDPNMJCSBSZBSDIJWFGFBUVSFEBSUJDMFT &YUFSOBM"DDFTTPSZ15*OUSPEVDUJPO*OUSPEVDUJPOIUNMBQQMF@SFG EPDVJE51 w IUUQTEFWFMPQFSBQQMFDPNMJCSBSZBSDIJWFEPDVNFOUBUJPO$PDPB $PODFQUVBM4USFBNT4USFBNTIUNMBQQMF@SFGEPDVJEJ αϯϓϧίʔυ IUUQTHJUIVCDPNUSJDLBSU&YUFSOBM"DDFTTPSZ1SJOUFS4BNQMF