Slide 1

Slide 1 text

ZVKJGJ04%$+BQBO ࣗݾ؅ཧͷເͱ 4DSFFO5JNF"1*

Slide 2

Slide 2 text

͸͡Ίʹ ର৅ w ೔ʑͷ࣌ؒ؅ཧɾλεΫ؅ཧʹؔ৺͕͋Δਓ w 4DSFFO5JNFػೳʹڵຯ͕͋Δਓ w 4DSFFO5JNF"1*ͰԿ͕Ͱ͖Δͷ͔஌Γ͍ͨਓ

Slide 3

Slide 3 text

!ೣɼྉཧ "$PPLQBE*OD ΫοΫύουJ04ΞϓϦ ‣ 4XJGU6*ΛऔΓೖΕͨ ങ͍෺ػೳͷ։ൃ ࣗݾ঺հ IUUQTUFDIMJGFDPPLQBEDPNFOUSZLBJNPOPTXJGUVJ ౻ࡔ༞࢙ʢ:VKJ'VKJTBLBʣ !ZVKJG@

Slide 4

Slide 4 text

ࣗݾ؅ཧʁ

Slide 5

Slide 5 text

ࣗ਎ͷ؀ڥͷมԽ w άϧʔϓϦʔμʔʹͳͬͯ ‣ ࣮૷ʗϚωδϝϯτʗকདྷతͳ ల๬ʗٕज़తෛ࠴ͷฦࡁʗʜʜ w ϦϞʔτϫʔΫʹͳͬͯ ‣ ௨ۈ࣌ؒͷΧοτʗੜ׆ͱۀ຿ ͷ੾Γସ͑ʗӡಈෆ଍ʗʜʜ എܠ

Slide 6

Slide 6 text

࣌ؒͷ࢖͍ํ w ΍Γ͍ͨ͜ͱ͸୔ࢁ͋Δʜʜʂ ‣ ԿΛ༏ઌ࣌ؒ͠ΛͲ͏࢖͏͔ w ʮ͕࣌ؒͳ͍ʂʯͱࢥ͏ҰํͰɺ ແҙࣝʹ࣌ؒΛඅ΍͢͜ͱ΋͋Δ ‣ গ͠ٳܜ͢Δͭ΋Γ͕ɺεϚϗ Λͣͬͱʜʜ എܠ Ξχϝ ݸਓ։ൃ ೣͱ༡Ϳ ྉཧ ಡॻ ήʔϜ ӡಈ

Slide 7

Slide 7 text

࣌ؒΛ͏·͘࢖͑ΔΑ͏ʹͳΓ͍ͨʜʜ

Slide 8

Slide 8 text

࣌ؒɾλεΫ؅ཧ ϙϞυʔϩ 5JNF5JNFS (FUUJOH5IJOHT%POF (5% 0NOJ'PDVT λεΫγϡʔτ࢓ࣄज़ 5BTL$IVUF$MPVE λΠϜτϥοΩϯάπʔϧ 5ZNF Ψϯτνϟʔτ όʔϯμ΢ϯνϟʔτ ϓϥϯχϯάϙʔΧʔ εϓϦϯτϓϥϯχϯά 5PHHM 8BLB5JNF (PPHMF,FFQ 5SFMMP "TBOB 1JWPUBM5SBDLFS 5SBDLJOH5JNF 5JNJOH Ϛχϟʔφͷ๏ଇ 5PEPJTU ΞΠϏʔɾϦʔɾϝιου 5IJOHT 0NOJ1MBO λεΫϖσΟΞ

Slide 9

Slide 9 text

ྫɿ5BTL$IVUF$MPVE w ʮλεΫγϡʔτ࣌ؒज़ʯ ʹଇͬͨλεΫϦετܕͷπʔϧ ᶃ ʮຊ೔̍೔෼ͷ࢓ࣄʯΛ̍γʔτͰ؅ཧ͢Δ ᶄ ʮ͜Ε͔Β΍Δ࢓ࣄͷϦετʯͱ ʮ͜͜·Ͱʹ΍ͬͨ࢓ࣄͷϦετʯΛҰݩ؅ཧ͢Δ ᶅ ʮ̍෼Ҏ্࣌ؒͷ͔͔Δ͜ͱʯ͸͢΂ͯ؅ཧ͢Δ ᶆ ͢΂ͯͷ࢓ࣄͷʮݟੵ΋Γ࣌ؒʯΛग़͓ͯ͘͠ ᶇ ʮຊ೔̍೔෼ͷ࢓ࣄʯ͕͢΂ͯऴΘͬͨΒԿ࣌ʹͳΔ ͔ͷ༧ଌΛࣗಈࢉग़͢Δ͜ͱͰɺৗʹ࢓ࣄͷऴΘΔ࣌ ؒʢ·ͨ͸ब৸࣌ࠁʣΛϦΞϧλΠϜʹ೺Ѳ͢Δ ࣌ؒɾλεΫ؅ཧπʔϧ IUUQTCMPHUBTLDIVUFDMPVEXIBUJTUBTLDIVUF

Slide 10

Slide 10 text

w ʮ࣌ؒͷ࢖͍ํʯͷݱঢ়೺Ѳ͕Ͱ͖Δ ‣ ࢖్ෆ໌͕࣌ؒݟ͑ͯ͘Δ ‣ ༧ଌͱ࣮੷ͷζϨ͕ݟ͑ͯ͘Δ ˣ w ݟੵΓΛਫ਼៛Խ͠΍͍͢ ‣ ʮ͜ΕͳΒͰ͖ͦ͏ʂʯͱ ֬৴Λ࣋ͯΔ༧ఆʹͰ͖Δ ‣ ࣗ෼ΛίϯτϩʔϧͰ͖͍ͯΔ ײ֮ʹͳΔʢ҆ఆͯ͠ḿΔʣ ࣌ؒɾλεΫ؅ཧπʔϧ IUUQTCMPHUBTLDIVUFDMPVEXIZJTOUUBTLDIVUFDMPVEDSBNQFE ࣗ෼͕ಛʹײͨ͡Ձ஋

Slide 11

Slide 11 text

໨ࢦ͍ͨ͠ํ޲͸ݟ͕͑ͨʜʜ w ͳ͔ͳ͔ܧଓͰ͖ͳ͍ w ଞπʔϧͱೋॏ؅ཧʹͳͬͯ ໘౗ʹͳΔʗݟͳ͘ͳΔ w ࡞ۀʹ຅಄͍ͯͯ͠ɺ։࢝ɾऴྃ ͷه࿥Λ๨ΕΔ w ରԠͰ่͖ͣյ͠͸͡ΊΔ ಥવͷׂΓࠐΈɺ୤ઢɺʜʜ ࣌ؒɾλεΫ؅ཧπʔϧ

Slide 12

Slide 12 text

ࣗ෼ʹ߹͏࠷ߴͷղܾࡦ͕΄͍͠ʜʜ

Slide 13

Slide 13 text

࣌ؒΛ͏·͘࢖͏ͨΊʹ ɾ࢖్ෆ໌࣌ؒΛ೺Ѳ͍ͨ͠ ɾ༧ଌͱݱ࣮ͷζϨΛೝ͍ࣝͨ͠

Slide 14

Slide 14 text

͓ۚΛ͏·͘࢖͏ͨΊʹ ɾ࢖్ෆ໌ۚΛ೺Ѳ͍ͨ͠ ɾ༧ଌͱݱ࣮ͷζϨΛೝ͍ࣝͨ͠

Slide 15

Slide 15 text

͏·͍͍ͬͯ͘Δଞͷࣄྫ͸ʁ ྫɿՈܭ฽ΞϓϦͷޱ࠲࿈ܞ w ΫϨδοτΧʔυ΍ۜߦͷ໌ࡉ ͳͲ͕ࣗಈͰه࿥ɾ෼ྨ͞ΕΔ ࢴ΍දܭࢉͰؤுΔͷ͸ଓ͔ͳ͍͕ɺ ࣗಈͰେମ࡞ΒΕΔͳΒଓ͚ΒΕΔ ܧଓ͢ΔͨΊʹ͸

Slide 16

Slide 16 text

4DSFFO5JNF

Slide 17

Slide 17 text

4DSFFO5JNFͱ͸ʁ

Slide 18

Slide 18 text

֓ཁ w ೥ɺJ04Ͱొ৔ w ΞϓϦ΍8FCαΠτ͝ͱʹ Ͳͷ͘Β͍࣌ؒΛඅ΍ͨ͠ͷ͔ ·ͱΊͨϨϙʔτͰ֬ೝͰ͖Δ w ࢖༻࣌ؒͷ੍ݶΛઃ͚ΒΕΔ 4DSFFO5JNF IUUQTTVQQPSUBQQMFDPNKBKQ)5

Slide 19

Slide 19 text

֓ཁ w ೥ɺJ04Ͱొ৔ w ΞϓϦ΍8FCαΠτ͝ͱʹ Ͳͷ͘Β͍࣌ؒΛඅ΍ͨ͠ͷ͔ ·ͱΊͨϨϙʔτͰ֬ೝͰ͖Δ w ࢖༻࣌ؒͷ੍ݶΛઃ͚ΒΕΔ 4DSFFO5JNF IUUQTTVQQPSUBQQMFDPNKBKQ)5

Slide 20

Slide 20 text

ͦͷଞͷػೳ w ಉҰ"QQMF*%ͷσόΠεͳΒ NBD04ͱJ04ʹ·͕ͨͬͨ ࢖༻ঢ়گ΋֬ೝͰ͖Δ w ௨஌ͷճ਺ɺ্࣋ͪ͛ճ਺ɺ ্࣋ͪ͛ͯ࠷ॳʹ࢖༻ͨ͠ "QQ΋֬ೝͰ͖Δ 4DSFFO5JNF

Slide 21

Slide 21 text

ͦͷଞͷػೳ w ಉҰ"QQMF*%ͷσόΠεͳΒ NBD04ͱJ04ʹ·͕ͨͬͨ ࢖༻ঢ়گ΋֬ೝͰ͖Δ w ௨஌ͷճ਺ɺ্࣋ͪ͛ճ਺ɺ ্࣋ͪ͛ͯ࠷ॳʹ࢖༻ͨ͠ "QQ΋֬ೝͰ͖Δ 4DSFFO5JNF

Slide 22

Slide 22 text

ݸਓతͳܦݧஊ w ར༻੍ݶΛઃఆͯ͠΋ʜʜ w ʮԆ௕ʯΛԿ౓΋ͯ͠͠·͏ w ઐ༻ύείʔυΛઃఆͯ͠΋ ͳΊΒ͔ʹೖྗͯ͠Ԇ௕ʜʜ 4DSFFO5JNF

Slide 23

Slide 23 text

ૉ੖Β͍͠఺ w ໘౗ͳه࿥ૢ࡞͸ཁΒͳ͍ ‣ ͨͩ࢖͍ͬͯΔ͚ͩͰ0, w ԿʹͲͷ͘Β͍࣌ؒΛ࢖͔ͬͨ ٬؍తͳ਺஋ͰೝࣝͰ͖Δ 4DSFFO5JNF

Slide 24

Slide 24 text

Կͱ͔׆༻Ͱ͖ͳ͍͔#

Slide 25

Slide 25 text

88%$Ͱ l.FFUUIF4DSFFO5JNF"1*z$

Slide 26

Slide 26 text

4DSFFO5JNF"1*ͱ͸ʁ

Slide 27

Slide 27 text

֓ཁ w ೥ɺJ04Ͱొ৔༧ఆ ‣ 4XJGU4XJGU6* w ͭͷ'SBNFXPSLͰߏ੒͞ΕΔ ‣ %FWJDF"DUJWJUZ ‣ .BOBHFE4FUUJOHT ‣ 'BNJMZ$POUSPMT 4DSFFO5JNF"1* IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

Slide 28

Slide 28 text

4DSFFO5JNF"1* ManagedSettings DeviceActivity FamilyControls อޢऀΞΧ΢ϯτʹΑΔঝೝ ϓϥΠόγʔͷอޢ ར༻੍ݶͷ੍ޚ ࢖༻ঢ়گͷ؂ࢹ ΞϓϦىಈͤͣίʔυ࣮ߦ ΞϓϦ͔Β੍ݶͷઃఆɾղআ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO.BOBHFE4FUUJOHT IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO%FWJDF"DUJWJUZ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO'BNJMZ$POUSPMT ͭͷ'SBNFXPSL

Slide 29

Slide 29 text

4DSFFO5JNF"1* ͭͷ'SBNFXPSL ManagedSettings DeviceActivity FamilyControls อޢऀΞΧ΢ϯτʹΑΔঝೝ ϓϥΠόγʔͷอޢ ར༻੍ݶͷ੍ޚ ࢖༻ঢ়گͷ؂ࢹ ΞϓϦىಈͤͣίʔυ࣮ߦ ΞϓϦ͔Β੍ݶͷઃఆɾղআ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO.BOBHFE4FUUJOHT IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO%FWJDF"DUJWJUZ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO'BNJMZ$POUSPMT

Slide 30

Slide 30 text

ŠŠ"1*ŠŠ 4DSFFO5JNF"1* w ैདྷɿଞΞϓϦ΍8FCͷ࢖༻ঢ়گΛ ɹɹɹ։ൃऀ͕ѻ͏͜ͱ͸Ͱ͖ͳ͍ ɹɹɹˣ w ࠓճɿϓϥΠόγʔΛอޢͭͭ͠ ɹɹɹΞϓϦ͔Β؂ࢹͰ͖ΔΑ͏ʹͳΔ% %FWJDF"DUJWJUZɿ࢖༻ঢ়گͷ؂ࢹ

Slide 31

Slide 31 text

w %FWJDF"DUJWJUZ/BNF w %FWJDF"DUJWJUZ&WFOU w %FWJDF"DUJWJUZ4DIFEVMF 4DSFFO5JNF"1* ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ w %FWJDF"DUJWJUZ$FOUFS w %FWJDF"DUJWJUZ.POJUPS ؂ࢹର৅ͷఆٛ ؂ࢹʹؔ͢Δ੍ޚ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOEFWJDFBDUJWJUZ %FWJDF"DUJWJUZɿ࢖༻ঢ়گͷ؂ࢹ

Slide 32

Slide 32 text

w %FWJDF"DUJWJUZ/BNF w %FWJDF"DUJWJUZ&WFOU w %FWJDF"DUJWJUZ4DIFEVMF 4DSFFO5JNF"1* %FWJDF"DUJWJUZɿ࢖༻ঢ়گͷ؂ࢹ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOEFWJDFBDUJWJUZ ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ w %FWJDF"DUJWJUZ$FOUFS w %FWJDF"DUJWJUZ.POJUPS ߦಈ ࣌ؒଳ ؂ࢹର৅ͷఆٛ ؂ࢹʹؔ͢Δ੍ޚ

Slide 33

Slide 33 text

w ཁૉ ‣ ର৅ΞϓϦ΍8FCυϝΠϯɼ ΧςΰϦͷτʔΫϯ ‣ ࢖༻࣌ؒͷᮢ஋ 4DSFFO5JNF"1* %FWJDF"DUJWJUZ&WFOUɿର৅ߦಈͷఆٛ public struct DeviceActivityEvent { public init( applications: Set = [], categories: Set = [], webDomains: Set = [], threshold: DateComponents ) } IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOEFWJDFBDUJWJUZEFWJDFBDUJWJUZFWFOU ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ import DeviceActivity // ྫɿʮSNSʯΧςΰϦͰܭ30෼අ΍ͨ͜͠ͱͷఆٛ let snsEvent = DeviceActivityEvent( categories: [ (SNS ΧςΰϦͷ token) ], threshold: DateComponents(minute: 30) )

Slide 34

Slide 34 text

w ཁૉ ‣ ։࢝࣌ࠁ ‣ ऴྃ࣌ࠁ ‣ ܁Γฦ͠ͷ༗ແ ‣ ࣄલ༧ࠂ࣌ؒ 4DSFFO5JNF"1* %FWJDF"DUJWJUZ4DIFEVMFɿର৅࣌ؒଳͷఆٛ public struct DeviceActivitySchedule { public init( intervalStart: DateComponents, intervalEnd: DateComponents, repeats: Bool, warningTime: DateComponents? = nil ) } IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOEFWJDFBDUJWJUZEFWJDFBDUJWJUZTDIFEVMF ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ import DeviceActivity // ྫɿຖ೔ͷ໷10࣌ʙே5࣌ͱ͍͏࣌ؒଳͷఆٛ let night = DeviceActivitySchedule( intervalStart: DateComponents(hour: 22, minute: 0), intervalEnd: DateComponents(hour: 5, minute: 0), repeats: true, warningTime: nil )

Slide 35

Slide 35 text

w %FWJDF"DUJWJUZ/BNF w %FWJDF"DUJWJUZ&WFOU w %FWJDF"DUJWJUZ4DIFEVMF 4DSFFO5JNF"1* %FWJDF"DUJWJUZɿ࢖༻ঢ়گͷ؂ࢹ ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ w %FWJDF"DUJWJUZ$FOUFS w %FWJDF"DUJWJUZ.POJUPS & ؂ࢹର৅ͷఆٛ ؂ࢹʹؔ͢Δ੍ޚ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOEFWJDFBDUJWJUZ

Slide 36

Slide 36 text

4DSFFO5JNF"1* %FWJDF"DUJWJUZ$FOUFSɿର৅Λ؂ࢹ͢Δ let allDays = DeviceActivitySchedule( intervalStart: DateComponents(hour: 0, minute: 0), intervalEnd: DateComponents(hour: 23, minute: 59), repeats: true ) let events: [DeviceActivityEvent.Name: DeviceActivityEvent] = [ .encouraged: DeviceActivityEvent( applications: [ਪ঑͍ͨ͠AppͷτʔΫϯ], threshold: DateComponents(minute: 15) ) ] ᶃର৅Λఆٛ ɾຖ೔ʢʙʣ ɾਪ঑͍ͨ͠ΞϓϦʢྫɿֶशܥʣ ɹΛ෼࢖ͬͨͱ͖ ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOEFWJDFBDUJWJUZEFWJDFBDUJWJUZDFOUFS

Slide 37

Slide 37 text

4DSFFO5JNF"1* %FWJDF"DUJWJUZ$FOUFSɿର৅Λ؂ࢹ͢Δ let allDays = DeviceActivitySchedule( intervalStart: DateComponents(hour: 0, minute: 0), intervalEnd: DateComponents(hour: 23, minute: 59), repeats: true ) let events: [DeviceActivityEvent.Name: DeviceActivityEvent] = [ .encouraged: DeviceActivityEvent( applications: [ਪ঑͍ͨ͠AppͷτʔΫϯ], threshold: DateComponents(minute: 15) ) ] let center = DeviceActivityCenter() try? center.startMonitoring(.example, during: allDays, events: events) ᶄ؂ࢹ։࢝ ᶃର৅Λఆٛ ɾຖ೔ʢʙʣ ɾਪ঑͍ͨ͠ΞϓϦʢྫɿֶशܥʣ ɹΛ෼࢖ͬͨͱ͖ ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOEFWJDFBDUJWJUZEFWJDFBDUJWJUZDFOUFS

Slide 38

Slide 38 text

w %FWJDF"DUJWJUZ/BNF w %FWJDF"DUJWJUZ&WFOU w %FWJDF"DUJWJUZ4DIFEVMF 4DSFFO5JNF"1* %FWJDF"DUJWJUZɿ࢖༻ঢ়گͷ؂ࢹ ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ w %FWJDF"DUJWJUZ$FOUFS w %FWJDF"DUJWJUZ.POJUPS & ؂ࢹର৅ͷఆٛ ؂ࢹʹؔ͢Δ੍ޚ "QQ&YUFOTJPOͰ Πϕϯτൃੜ࣌ʹίʔυ࣮ߦ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOEFWJDFBDUJWJUZ

Slide 39

Slide 39 text

w ೥ɺJ04Ͱొ৔ w ଞΞϓϦ΍γεςϜͱ࿈ܞͰ͖Δ ػೳ֦ுͷ࢓૊Έ w ༻్͝ͱʹ&YUFOTJPO͕͋Δ ิ଍ɿ"QQ&YUFOTJPOͱ͸ʁ IUUQTEFWFMPQFSBQQMFDPNKQBQQFYUFOTJPOT 9DPEFͷ/FXˠ5BSHFUͰ֬ೝͰ͖Δ "QQ&YUFOTJPOͷςϯϓϨʔτҰཡ IUUQTEFWFMPQFSBQQMFDPNMJCSBSZBSDIJWFEPDVNFOUBUJPO(FOFSBM$PODFQUVBM&YUFOTJCJMJUZ1(JOEFYIUNM

Slide 40

Slide 40 text

4DSFFO5JNF"1* %FWJDF"DUJWJUZ.POJUPSɿ؂ࢹ݁ՌΛ΋ͱʹίʔυ࣮ߦ import DeviceActivity class MyMonitorExtension: DeviceActivityMonitor { override func intervalDidStart(for activity: DeviceActivityName) { super.intervalDidStart(for: activity) } override func intervalDidEnd(for activity: DeviceActivityName) { super.intervalDidEnd(for: activity) } override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) { super.eventDidReachThreshold(event, activity: activity) // ಛఆͷΞΫςΟϏςΟͷ࢖༻͕࣌ؒᮢ஋ʹୡͨ͠Βɺ͕͜͜ݺ͹ΕΔʢΞϓϦΛىಈ͍ͯ͠ͳͯ͘΋ʣ } } ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻIUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOEFWJDFBDUJWJUZEFWJDFBDUJWJUZNPOJUPS

Slide 41

Slide 41 text

IUUQTUXJUUFSDPNZVKJG@TUBUVT ࣮ݱͰ͖ΔͷͰ͸ʜʜʂʁ

Slide 42

Slide 42 text

4DSFFO5JNF"1* ManagedSettings DeviceActivity FamilyControls อޢऀΞΧ΢ϯτʹΑΔঝೝ ϓϥΠόγʔͷอޢ ར༻੍ݶͷ੍ޚ ࢖༻ঢ়گͷ؂ࢹ ΞϓϦىಈͤͣίʔυ࣮ߦ ΞϓϦ͔Β੍ݶͷઃఆɾղআ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO.BOBHFE4FUUJOHT IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO%FWJDF"DUJWJUZ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO'BNJMZ$POUSPMT ͭͷ'SBNFXPSL

Slide 43

Slide 43 text

4DSFFO5JNF"1* %FWJDF"DUJWJUZɿ࢖༻ঢ়گͷ؂ࢹ import DeviceActivity class MyMonitorExtension: DeviceActivityMonitor { override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) { super.eventDidReachThreshold(event, activity: activity) // ಛఆͷΞΫςΟϏςΟͷ࢖༻͕࣌ؒᮢ஋ʹୡͨ͠Βɺ͕͜͜ݺ͹ΕΔʢΞϓϦΛىಈ͍ͯ͠ͳͯ͘΋ʣ } } ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOEFWJDFBDUJWJUZEFWJDFBDUJWJUZNPOJUPS

Slide 44

Slide 44 text

4DSFFO5JNF"1* %FWJDF"DUJWJUZ.BOBHFE4FUUJOHTɿ؂ࢹར༻੍ݶͷ੍ޚ import DeviceActivity import ManagedSettings class MyMonitorExtension: DeviceActivityMonitor { let store = ManagedSettingsStore() override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) { super.eventDidReachThreshold(event, activity: activity) // ಛఆͷΞΫςΟϏςΟͷ࢖༻͕࣌ؒᮢ஋ʹୡͨ͠Βɺ͕͜͜ݺ͹ΕΔʢΞϓϦΛىಈ͍ͯ͠ͳͯ͘΋ʣ } } ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPONBOBHFETFUUJOHTNBOBHFETFUUJOHTTUPSF

Slide 45

Slide 45 text

4DSFFO5JNF"1* %FWJDF"DUJWJUZ.BOBHFE4FUUJOHTɿ؂ࢹར༻੍ݶͷ੍ޚ import DeviceActivity import ManagedSettings class MyMonitorExtension: DeviceActivityMonitor { let store = ManagedSettingsStore() override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) { super.eventDidReachThreshold(event, activity: activity) if event == .encouraged { // ਪ঑ΠϕϯτʢྫɿֶशܥΞϓϦΛ30෼࢖͏ʣΛୡ੒ͨ͠Βɺ͢΂ͯͷΞϓϦ΁ͷར༻੍ݶΛղআ͢Δ store.shield.applications = nil } } } ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPONBOBHFETFUUJOHTNBOBHFETFUUJOHTTUPSF

Slide 46

Slide 46 text

৭ʑͰ͖ͦ͏ʜʜʂ

Slide 47

Slide 47 text

4DSFFO5JNF"1* .BOBHFE4FUUJOHT4UPSFɿ༷ʑͳ੍ݶͷઃఆ w ΞϓϦ΍8FCͷγʔϧυҎ֎ʹ΋ɺ৭ʑͳ߲໨ΛઃఆͰ͖Δ ‣ σόΠε੍ݶܥ ΞΧ΢ϯτ৘ใ ϞόΠϧ௨৴ ύείʔυ ʜʜ ‣ ίϯςϯπϑΟϧλϦϯάܥ "QQ4UPSF՝ۚ (BNF$FOUFS ϨʔςΟϯά੍ݶ ʜʜ ‣ 8FCίϯςϯπͷ੍ݶܥ 4BGBSJͷ$PPLJFϙϦγʔ ʜʜ ‣ ʜʜ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPONBOBHFETFUUJOHTNBOBHFETFUUJOHTTUPSF ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPONBOBHFETFUUJOHTΑΓ

Slide 48

Slide 48 text

4DSFFO5JNF"1* .BOBHFE4FUUJOHT6*ɿγʔϧυͷݟͨ໨Λม͑Δ w γʔϧυͷϘλϯ΍ ΞΠίϯɺλΠτϧɺ ৭ͳͲΛมߋͰ͖Δ w ΞϓϦͷಛੑʹ͋ͬͨ ར༻੍ݶ࣌ͷԋग़ʹ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO.BOBHFE4FUUJOHT6* ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ .FFUUIF4DSFFO5JNF"1*IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXEDΑΓ

Slide 49

Slide 49 text

4DSFFO5JNF"1* ManagedSettings DeviceActivity FamilyControls อޢऀΞΧ΢ϯτʹΑΔঝೝ ϓϥΠόγʔͷอޢ ར༻੍ݶͷ੍ޚ ࢖༻ঢ়گͷ؂ࢹ ΞϓϦىಈͤͣίʔυ࣮ߦ ΞϓϦ͔Β੍ݶͷઃఆɾղআ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO.BOBHFE4FUUJOHT IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO%FWJDF"DUJWJUZ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO'BNJMZ$POUSPMT ͭͷ'SBNFXPSL

Slide 50

Slide 50 text

'BNJMZ$POUSPMTʁ

Slide 51

Slide 51 text

4DSFFO5JNF"1* લఏɿ͋͘·ͰϖΞϨϯλϧίϯτϩʔϧ w J$MPVEͷʮϑΝϛϦʔڞ༗ʯͱڧ͘ඥ෇͍͍ͯΔ ‣ 4DSFFO5JNF"1*Λ࢖͏ʹ͸ɺอޢऀͷঝೝ͕ඞཁ ͓ࢠ༷༻J$MPVEΞΧ΢ϯτ͚ͩͰ࢖͑Δʂʂʂ ௨ৗΞΧ΢ϯτʢ؅ཧऀอޢऀଆʣͰ͸࢖͑ͳ͍ w "QQMFͷ%FWFMPQFS'PSVNTͰ΋ҙݟ͕౤ߘ͞Ε͍ͯΔ IUUQTEFWFMPQFSBQQMFDPNGPSVNTUISFBE ‣ େਓͩͬͯ΄͍͠ʂࣗݾ؅ཧ͍ͨ͠ʂʂʂ

Slide 52

Slide 52 text

4DSFFO5JNF"1* 'BNJMZ$POUSPMTɿอޢऀΞΧ΢ϯτʹΑΔঝೝ import FamilyControls AuthorizationCenter.shared.requestAuthorization { result in switch result { case .success: break case .failure(let error): …… } } ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOGBNJMZDPOUSPMTBVUIPSJ[BUJPODFOUFS w ঝೝΛٻΊΔ࣮૷͸؆୯ w ঝೝޙɺࣗಈͰ੍໿͕ͭ͘ ‣ อޢऀҎ֎͸ͦͷΞϓϦΛ ফͤͳ͘ͳΔ ‣ J$MPVE͔ΒαΠϯΞ΢τ Ͱ͖ͳ͘ͳΔ

Slide 53

Slide 53 text

ϓϥΠόγʔͷอޢ

Slide 54

Slide 54 text

4DSFFO5JNF"1* લఏɿϓϥΠόγʔอޢͷॏࢹ ͲΜͳΞϓϦ΍8FCΛӾཡ͔ͨ͠ɺ ຊਓͱอޢऀҎ֎ʹ͸෼͔Βͳ͍ઃܭ w ར༻ΞϓϦ΍ӾཡαΠτ͝ͱʹ PQBRVFτʔΫϯ͕ఏڙ͞ΕΔ ‣ %FWJDF"DUJWJUZ .BOBHFE4FUUJOHTͰ ର৅ͷࢦఆʹ࢖͏ w ΞϓϦ໊΍63-͸औಘͰ͖ͳ͍ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOGBNJMZDPOUSPMTGBNJMZBDUJWJUZ ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ

Slide 55

Slide 55 text

4DSFFO5JNF"1* 'BNJMZ"DUJWJUZ1JDLFSɿର৅ͷબ୒ͱτʔΫϯऔಘ w 4XJGU6*Ͱઐ༻ͷ ίϯϙʔωϯτ͕ ఏڙ͞Ε͍ͯΔ w ϢʔβʔʹΑΔબ୒Ͱ ॳΊͯτʔΫϯΛऔಘ Ͱ͖Δ import FamilyControls struct ContentView: View { @State var selection = FamilyActivitySelection() var body: some View { VStack { FamilyActivityPicker(selection: $selection) } } } IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOGBNJMZDPOUSPMTGBNJMZBDUJWJUZQJDLFS ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ ˞ࢀߟɿJ04ʹ͋Δྨࣅը໘ ʢεΫϦʔϯλΠϜͷ੍ݶઃఆʣ w DBUFHPSZ5PLFOT w BQQMJDBUJPO5PLFOT w XFC%PNBJO5PLFOT

Slide 56

Slide 56 text

4DSFFO5JNF"1* ManagedSettings DeviceActivity FamilyControls อޢऀΞΧ΢ϯτʹΑΔঝೝ ϓϥΠόγʔͷอޢ ར༻੍ݶͷ੍ޚ ࢖༻ঢ়گͷ؂ࢹ ΞϓϦىಈͤͣίʔυ࣮ߦ ΞϓϦ͔Β੍ݶͷઃఆɾղআ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO.BOBHFE4FUUJOHT IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO%FWJDF"DUJWJUZ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPO'BNJMZ$POUSPMT ͭͷ'SBNFXPSL

Slide 57

Slide 57 text

4DSFFO5JNF"1*͸ ࣗݾ؅ཧʹ׆༻Ͱ͖Δͷ͔ʜʜʁ#

Slide 58

Slide 58 text

࣌ؒΛ͏·͘࢖͑ΔΑ͏ʹͳΓ͍ͨʜʜ ˣ ɾ࢖్ෆ໌࣌ؒΛ೺Ѳ͍ͨ͠ ɾ༧ଌͱݱ࣮ͷζϨΛೝ͍ࣝͨ͠ ˣ ݟੵΓΛਫ਼៛Խͯ͠ɺ༧ఆ௨ΓʹਐΊ΍͍͢ঢ়ଶʹ͍ͨ͠

Slide 59

Slide 59 text

4DSFFO5JNF"1* ࣮ݱͰ͖ΔͷͰ͸ʁͱໝ૝͍ͯͨ͜͠ͱ w J1IPOF.BDͰ͍ͭԿΛ͔ͨ͠Λऔಘ ˣ w ࣗ࡞ͷ࣌ؒɾλεΫ؅ཧπʔϧʹࣗಈه࿥ ˣ w ࣌ؒͷ࢖͍ํͷશ๴Λ೺ѲͰ͖Δ

Slide 60

Slide 60 text

4DSFFO5JNF"1* ࣮ݱͰ͖ΔͷͰ͸ʁͱໝ૝͍ͯͨ͜͠ͱ w J1IPOF.BDͰ͍ͭԿΛ͔ͨ͠Λऔಘ ˣ w ࣗ࡞ͷ࣌ؒɾλεΫ؅ཧπʔϧʹࣗಈه࿥ ˣ w ࣌ؒͷ࢖͍ํͷશ๴Λ೺ѲͰ͖Δ ͓ࢠ༷༻ΞΧ΢ϯτݶఆ'

Slide 61

Slide 61 text

4DSFFO5JNF"1* ࣮ݱͰ͖ΔͷͰ͸ʁͱໝ૝͍ͯͨ͜͠ͱ w J1IPOF.BDͰ͍ͭԿΛ͔ͨ͠Λऔಘ ˣ w ࣗ࡞ͷ࣌ؒɾλεΫ؅ཧπʔϧʹࣗಈه࿥ ˣ w ࣌ؒͷ࢖͍ํͷશ๴Λ೺ѲͰ͖Δ ͓ࢠ༷༻ΞΧ΢ϯτݶఆ' ϓϥΠόγʔ΁ͷ഑ྀ͔Β ಺༰ͷશࣗಈऔಘ͸ෆՄೳ

Slide 62

Slide 62 text

4DSFFO5JNF"1*͸ ͲͷΑ͏ͳΞϓϦͰ࢖͏ͷ͔ʁ

Slide 63

Slide 63 text

4DSFFO5JNF"1* ͋ͳͨͷΞϓϦͰ࢖͏ͳΒʜʜʁ w ϢʔβʔʹࢠͲ΋ؚ͕·ΕΔΞϓϦͰ͸׆༂ͦ͠͏ ‣ ྫɿֶशܥɺΤϯλϝܥɺʜʜ w ϞόΠϧσόΠε؅ཧʢ.%.ʣҎ֎ͷબ୒ࢶΛఏڙͰ͖Δ ‣ อޢऀҎ֎͕ղআͰ͖ͳ͍8FCίϯςϯπͷϑΟϧλ ‣ ୯७ͳ੍࣌ؒݶ͚ͩͰ͸ͳ͘ɺ༷ʑͳ৚݅Ͱ੍ݶɾղআ͢Δ࢓૊Έ ‣ ʜʜ

Slide 64

Slide 64 text

ࠓޙʹ޲͚ͯ

Slide 65

Slide 65 text

4DSFFO5JNF"1*ͷൃల w 4DSFFO5JNF"1*ͷ1SPQPTBM ‣ ࣮ݱ͞Ε͍ͯͳ͍࢓༷΋͋Δ w ͜͏ͳͬͨΒ͍͍ͳʜʜ( ‣ ͓ࢠ༷༻ΞΧ΢ϯτҎ֎Ͱ΋࢖͑Δ ‣ NBD04ʹ΋"1*ఏڙ͞ΕΔ ࠓޙʹ޲͚ͯ IUUQTTDSFFOUJNFBQJDPNTDSFFOUJNFBQJ GVODRVFSZ&WFOUT GSPN%BUF UP%BUF ɹɹɹɹɹɹɹɹɹFWFOU5ZQFT<PQFO"QQ DMPTF"QQ> <&WFOU>

Slide 66

Slide 66 text

4DSFFO5JNF"1*ͷൃల w 4DSFFO5JNF"1*ͷ1SPQPTBM ‣ ࣮ݱ͞Ε͍ͯͳ͍࢓༷΋͋Δ w ͜͏ͳͬͨΒ͍͍ͳʜʜ( ‣ ͓ࢠ༷༻ΞΧ΢ϯτҎ֎Ͱ΋࢖͑Δ ‣ NBD04ʹ΋"1*ఏڙ͞ΕΔ ࠓޙʹ޲͚ͯ IUUQTTDSFFOUJNFBQJDPNTDSFFOUJNFBQJ GVODRVFSZ&WFOUT GSPN%BUF UP%BUF ɹɹɹɹɹɹɹɹɹFWFOU5ZQFT<PQFO"QQ DMPTF"QQ> <&WFOU>

Slide 67

Slide 67 text

ࣗݾ؅ཧʹ͸ผͷσʔλ΋׆༻ ࠓޙʹ޲͚ͯ 4DSFFO5JNF"1*Ҏ֎ʹ΋ɺ৭ʑͳํ๏Ͱࣗಈه࿥ w ࣗ୐಺ͷ༷ʑͳηϯαʔ ‣ ΧϝϥʗೋࢎԽ୸ૉೱ౓ܭʗʜʜ w NBD04্ͷσʔλ ‣ ΞΫςΟϒͳ΢Οϯυ΢ʗϒϥ΢βͷཤྺʗʜʜ w "QQMF੡඼ ‣ )FBMUI,JUʜʜਭ຾΍ӡಈͷ࣌ؒ ‣ /FBSCZ*OUFSBDUJPO'SBNFXPSLʜʜՈͷதͰͷߦಈ ‣ ʜʜ IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

Slide 68

Slide 68 text

·ͱΊ ࣗݾ؅ཧͷເͱ4DSFFO5JNF"1* w എܠ ‣ ࣌ؒɾλεΫ؅ཧͷͨΊʹɺࣗ෼ʹ߹ͬͨ࠷ߴͷπʔϧ͕΄͍͠ ‣ ࢖్ෆ໌࣌ؒΛ೺ѲͰ͖ΔΑ͏ʹɺ͋ΒΏΔߦಈΛࣗಈͰه࿥ͯ͠Έ͍ͨ w 4DSFFO5JNF"1*͕J04͔Βొ৔͢Δ͕ɺݱঢ়Ͱ࢖͑Δͷ͸͓ࢠ༷༻J$MPVEΞΧ΢ϯτͷΈ ‣ %FWJDF"DUJWJUZɿ࢖༻ঢ়گͷ؂ࢹʗ؂ࢹ݁ՌΛ΋ͱʹίʔυ࣮ߦ ‣ .BOBHFE4FUUJOHTɿ༷ʑͳར༻੍ݶͷઃఆɾղআ ‣ 'BNJMZ$POUSPMTɿอޢऀΞΧ΢ϯτʹΑΔঝೝʗϓϥΠόγʔอޢͷͨΊͷτʔΫϯఏڙ w 4DSFFO5JNF"1*Ҏ֎ʹ΋ɺ৭ʑࢼ͠ͳ͕Βࣗݾ؅ཧͷͨΊͷπʔϧΛ࡞͍͖͍ͬͯͨ) ࣌఺ͷ৘ใͰ͢ɻ#FUBͷͨΊมߋ͞Ε͍ͯΔ৔߹͕͋Γ·͢ɻ

Slide 69

Slide 69 text

IUUQTDPPLQBEDPOOQBTTDPNFWFOU w 4XJGU6* w $PNQPTJUJPOBM-BZPVUT w ػೳ୯ҐͷϛχΞϓϦ w .VMUJQFFS$POOFDUJWJUZ ɹ౳ͷτϐοΫͰ࿩͠·͢ʂ