Upgrade to Pro — share decks privately, control downloads, hide ads and more …

対話を頑張らなくても作れるSiri Shortcuts向けIntents App Extension

対話を頑張らなくても作れるSiri Shortcuts向けIntents App Extension

Maika Yamada

August 27, 2021
Tweet

More Decks by Maika Yamada

Other Decks in Technology

Transcript

  1. ର࿩ΛؤுΒͳͯ͘΋࡞ΕΔ
    4JSJ4IPSUDVUT޲͚
    *OUFOUT"QQ&YUFOTJPO
    J04%$+BQBOEBZ
    ໌౉ຑҥՖ !N@ZBNBEB

    View Slide

  2. ࣗݾ঺հ
    w ໌౉ຑҥՖ
    w 5XJUUFS!N@ZBNBEB
    w 4UVEZQMVT *OD
    w ʙ
    w ࣄ຿৬ˠ4*FSˠݱࡏ
    w ϞόΠϧΫϥΠΞϯτάϧʔϓॴଐJ04&OHJOFFS
    w J04%$ʹͯҎԼͷςʔϚͰ-5΁ొஃ
    w J04ʹ͓͚Δ4JSJ4IPSUDVUT࠷খ࣮૷ʴЋ

    View Slide

  3. ͜ͷτʔΫͰ
    ࿩͢͜ͱɾ࿩͞ͳ͍͜ͱ
    ఻͍͑ͨ͜ͱ

    View Slide

  4. ͜ͷτʔΫͰ࿩͢͜ͱ
    w ΞϓϦ͕ىಈ͍ͯ͠ͳͯ͘΋ಈ࡞͢ΔΑ͏ɺϝΠϯλʔήοτͱ͸ҟͳΔ*OUFOUT"QQ
    &YUFOTJPOΛ༻͍ͯॲཧ͕׬݁͢Δ4JSJ4IPSUDVUT࣮૷ͷҰ෦
    w ࣮૷͢Δ͏͑Ͱԡ͓͖͍͑ͯͨ͞ϙΠϯτΛɺϦϦʔεࡁΈͷ4UVEZQMVTΞϓϦ΁࣮ࡍʹ
    ؚ·ΕΔιʔείʔυ౳΋ྫͱͯ͠هࡌͭͭ͠ղઆ
    w શମతͳ࣮૷ʹ͍ͭͯ஌Γ͍ͨํ͸ɺ"QQMFͷαϯϓϧϓϩδΣΫτɺ4PVQ$IFG͕͓͢͢Ί
    ࣮ࡍʹࢀߟʹ࣮ͭͭ͠૷ΛਐΊ·ͨ͠

    w "QQMF%FWFMPQFSc4PVQ$IFG
    w IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTJSJLJU
    TPVQ@DIFG@BDDFMFSBUJOH@BQQ@JOUFSBDUJPOT@XJUI@TIPSUDVUT
    w w

    View Slide

  5. ͜ͷτʔΫͰ࿩͞ͳ͍͜ͱ
    w *OUFOUT"QQ&YUFOTJPOΛ༻͍Δ͕ɺΞϓϦ͕ىಈࡁΈͰ͋Δ͜ͱΛલఏͱ͠
    ͯಈ࡞͢Δ࣮૷ʹ͍ͭͯ
    w ΞϓϦ಺Ͱಛఆͷը໘͔Βผͷը໘΁ભҠ͢Δૢ࡞Λ໨తͱ͢ΔͳͲ
    w ࢀߟ
    w 88%$c&NQPXFSZPVSJOUFOUT
    w IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

    View Slide

  6. ͜ͷτʔΫͰ࿩͞ͳ͍͜ͱ
    w /46TFS"DUJWJUZΛ༻͍ͨɺΞϓϦ಺ͷಛఆͷը໘Λ։͘ͷΈͳͲͷ͘͝୯७ͳγϣʔτΧ
    οτରԠͷ࣮૷ʹ͍ͭͯ
    w ࢀߟ
    w J04%$cJ04ʹ͓͚Δ4JSJ4IPSUDVUT࠷খ࣮૷ʴЋ
    w IUUQTGPSUFFKQJPTEDKBQBOQSPQPTBMDDEFBGEEEGB
    CFBC
    w J04ʹ͓͚Δ4JSJ4IPSUDVUT࠷খ࣮૷ʴЋεϥΠυॻ͖ى͜͠ͱิ଍
    w IUUQTUFDITUVEZQMVTDPKQFOUSZ

    View Slide

  7. ͜ͷτʔΫͰ఻͍͑ͨ͜ͱ
    w ର࿩ͷઃܭΛ͖ͪΜͱ͠ͳͯ͘΋ɺ࣮༻ʹ଱͑͏Δ4JSJ4IPSUDVUT͸࡞ΕΔ
    w ͨͩ͠ɺϢʔβʔʹΤϥʔͱ஌ΒͤΔέʔε͸పఈతʹ໢ཏͨ͠΄͏͕਌੾
    w 4JSJ4IPSUDVUTͷ࣮૷ࣗମ͸೉͘͠ͳ͍ʂ
    w 9DPEF্Ͱ͔͠։͚ͳ͍ઐ༻ϑΝΠϧ JOUFOUEFOJ
    fi
    UJPO
    Λ༻͍Δඞཁ͕͋
    Δ͕ɺ։ൃऀ͕ؾΛݣͬͯॻ͘ιʔείʔυͷྔ͸গͳΊ
    w 88%$ͷಈըΛ؍ͳ͕Β࣮૷͕໘౗ͩͬͨΤϥʔέʔε࣮૷ͳͲΛൃදࢿ
    ྉʹ٧ΊࠐΜͩͷͰɺօ༷ͷ4JSJ4IPSUDVUT࣮૷࣌ʹ໾ʹཱͯ͹خ͍͠

    View Slide

  8. ΞδΣϯμ
    w 4UVEZQMVTͰϦϦʔεͨ͠ษڧه࿥Λೖྗ͢Δ4JSJ4IPSUDVUT֓ཁ
    w 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚ΔΞΫγϣϯͷબఆ
    w ର࿩ͷઃܭ
    w ΞΫγϣϯຖʹೖྗΛड͚෇͚Δύϥϝʔλઃܭ
    w ೖྗ͞ΕͨύϥϝʔλͷΤϥʔॲཧઃܭʴ࣮૷ྫ
    w ԡ͓͖͍࣮͑ͯͨ͞૷Λ঺հ
    w ΞΫγϣϯ׬ྃޙɺΞϓϦʹભҠͯ͠΍Γ͍ͨ͜ͱ͕͋Δ৔߹ͷ࣮૷

    View Slide

  9. 4UVEZQMVTͰϦϦʔεͨ͠
    ษڧه࿥Λೖྗ͢Δ4JSJ4IPSUDVUT֓ཁ

    View Slide

  10. ྦྷܭձһ਺ສਓΛಥഁʂେֶडݧੜͷਓʹਓ͕ར༻
    ֶश಺༰Λه࿥ɺՄࢹԽ͠ɺֶशϢʔβʔಉ࢜ͰγΣΞ͠ྭ·͠߹͏ֶश؅ཧ4/4
    4UVEZQMVT

    View Slide


  11. 4JSJ4IPSUDVUTΛ༻͍ͯ
    ษڧΛه࿥Ͱ͖ΔػೳΛϦϦʔε🎉
    4UVEZQMVT
    ྦྷܭձһ਺ສਓΛಥഁʂେֶडݧੜͷਓʹਓ͕ར༻
    ֶश಺༰Λه࿥ɺՄࢹԽ͠ɺֶशϢʔβʔಉ࢜ͰγΣΞ͠ྭ·͠߹͏ֶश؅ཧ4/4

    View Slide

  12. ษڧه࿥ͱ͸
    ษڧͨ͠಺༰Λද͢σʔλ
    w ษڧͨ͠೔࣌ͱɺҎԼͷษڧʹؔ͢Δ஋Λத৺ʹߏ੒͞Εͨه࿥ͷ͜ͱ
    ˒ษڧʹར༻ͨ͠ڭࡐ
    ˒ษڧ࣌ؒ
    ˒ษڧྔ ߹ܭPSൣғ

    w ϖʔδຖɾষຖͳͲ୯Ґ͸ڭࡐͷઃఆʹ४ڌ
    w ϝϞ
    w ఴ෇ը૾

    View Slide

  13. ษڧه࿥ͱ͸
    ษڧͨ͠಺༰Λද͢σʔλ
    ڭࡐຖ΍ຊ୨ͷΧςΰϦ୯ҐͰ
    ूܭ͞ΕͨϨϙʔτͰݟ௚ͤΔ
    ษڧه࿥Λอଘ͢Δͱ
    λΠϜϥΠϯʹ౤ߘ͞Εɺ
    ଞͷϢʔβʔ͔Β͍͍Ͷʂ΍
    ίϝϯτΛड͚Δࣄ͕Մೳ

    View Slide

  14. 4JSJ4IPSUDVUT΁ରԠͨ͠ૢ࡞
    ษڧه࿥Λೖྗ͢Δը໘ʹͯՄೳͳૢ࡞ΛҰ௨Γ

    View Slide

  15. ษڧͨ͠಺༰Λೖྗ

    View Slide

  16. ετοϓ΢ΥονΛ։࢝
    ੍ݶ࣌ؒΛઃఆͯ͠
    λΠϚʔΛ։࢝

    View Slide

  17. ܭଌ։࢝ޙʹ
    ετοϓ΢ΥονͷҰ࣌ఀࢭ
    ܭଌҰ࣌ఀࢭதʹ
    ετοϓ΢Υονͷ࠶։
    ܭଌ։࢝ޙʹ
    λΠϚʔͷҰ࣌ఀࢭ
    ܭଌҰ࣌ఀࢭதʹ
    λΠϚʔͷ࠶։

    View Slide

  18. λΠϚʔͰܭଌதͷ
    ࢒Γ੍ݶ࣌ؒΛ֬ೝ
    ετοϓ΢ΥονͰܭଌதͷ
    ܦա࣌ؒΛ֬ೝ

    View Slide

  19. ετοϓ΢ΥονͰ
    ܭଌΛ׬ྃ
    λΠϚʔͰ
    ܭଌΛ׬ྃ
    ܭଌؚ͕࣌ؒ·Εͨ
    ษڧΛه࿥͢Δ

    View Slide

  20. ରԠͨ͠ૢ࡞
    w ษڧͨ͜͠ͱΛه࿥͢Δ
    w ͜Ε͔Βษڧ͢ΔڭࡐͰετοϓ΢ΥονɾλΠϚʔͷܭଌ։࢝͢Δ
    w ετοϓ΢ΥονɾλΠϚʔͷܭଌҰ࣌ఀࢭɾ࠶։͢Δ
    w ετοϓ΢ΥονɾλΠϚʔͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ
    w ετοϓ΢ΥονɾλΠϚʔͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ

    View Slide

  21. 4JSJ4IPSUDVUTར༻ঢ়گ
    ˞೥݄೔ʙ݄೔࣌఺
    w ษڧه࿥ؔ࿈ͷૢ࡞ΛγϣʔτΧοτͰ࣮ߦͨ͠
    w ճ਺ɿ ճ
    w ਓ਺ɿ ਓ
    ˞ಋೖࡁΈͷ'JSFCBTF"OBMZUJDTͰ͸ϝΠϯλʔήοτະىಈͩͱΠϕϯτ͕
    ૹ৴Ͱ͖ͳ͔ͬͨͨΊɺγϣʔτΧοτ࣮ߦ࣌ʹϩάΛϩʔΧϧ%#΁อଘͯ͠
    ࣍ճΞϓϦىಈ࣌ʹҰׅૹ৴ͯ͠ूܭ ೥݄·Ͱͷ࣮૷౰࣌

    View Slide

  22. ΞδΣϯμ
    w 4UVEZQMVTͰϦϦʔεͨ͠ษڧه࿥Λೖྗ͢Δ4JSJ4IPSUDVUT֓ཁ
    w 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚ΔΞΫγϣϯͷબఆ
    w ର࿩ͷઃܭ
    w ΞΫγϣϯຖʹೖྗΛड͚෇͚Δύϥϝʔλઃܭ
    w ೖྗ͞ΕͨύϥϝʔλͷΤϥʔॲཧઃܭʴ࣮૷ྫ
    w ԡ͓͖͍࣮͑ͯͨ͞૷Λ঺հ
    w ΞΫγϣϯ׬ྃޙɺΞϓϦʹભҠͯ͠΍Γ͍ͨ͜ͱ͕͋Δ৔߹ͷ࣮૷

    View Slide

  23. 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚Δ
    ΞΫγϣϯͷબఆ

    View Slide

  24. 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚Δ
    ΞΫγϣϯͷબఆ
    ˚
    ੾Γ෼͚ํ
    ̋
    ର৅ͷػೳ͸ܾఆࡁΈͰɺ۩ମతʹͲͷૢ࡞ΛͲͷΑ͏ʹड͚෇͚Δ͔

    View Slide

  25. ิ଍ɿΞΫγϣϯͷzબఆzʹ͍ͭͯ
    w "QQMF͕4JSJ4IPSUDVUTͷ࣮૷ΛקΊ͍ͯΔͷ͸ɺΞϓϦΛར༻͢Δ্ͰԿճ
    ΋܁Γฦ͠ߦΘΕΔૢ࡞
    w %FTJHOJOH(SFBU4IPSUDVUTͰɺ۩ମྫΛަ͑ͯબఆج४͕ݴٴ͞Ε͍ͯΔ
    w IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

    View Slide

  26. ରԠͨ͠ૢ࡞
    w ษڧͨ͜͠ͱΛه࿥͢Δ
    w ͜Ε͔Βษڧ͢ΔڭࡐͰετοϓ΢ΥονɾλΠϚʔͷܭଌ։࢝͢Δ
    w ετοϓ΢ΥονɾλΠϚʔͷܭଌҰ࣌ఀࢭɾ࠶։͢Δ
    w ετοϓ΢ΥονɾλΠϚʔͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ
    w ετοϓ΢ΥονɾλΠϚʔͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ

    View Slide

  27. ରԠͨ͠ૢ࡞
    w ษڧͨ͜͠ͱΛه࿥͢Δ
    w ͜Ε͔Βษڧ͢ΔڭࡐͰετοϓ΢ΥονͷܭଌΛ։࢝͢Δ
    w ͜Ε͔Βษڧ͢ΔڭࡐͰλΠϚʔͷܭଌΛ։࢝͢Δ
    w ετοϓ΢ΥονͷܭଌΛҰ࣌ఀࢭ͢Δ
    w λΠϚʔͷܭଌΛҰ࣌ఀࢭ͢Δ
    w ετοϓ΢ΥονͷܭଌΛ࠶։͢Δ
    w λΠϚʔͷܭଌΛ࠶։͢Δ
    w ετοϓ΢ΥονͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ
    w λΠϚʔͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ
    w ετοϓ΢ΥονͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ
    w λΠϚʔͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ

    View Slide

  28. ͲΜͳʹେ͖ͯ͘΋̍ͭͷػೳʂ
    ʮษڧΛه࿥͢ΔʯΞΫγϣϯΛ
    ࣮૷͠Α͏ʂ
    ΋͠΋ʜ

    View Slide

  29. 4UVEZQMVT
    ϚείοτΩϟϥΫλʔ
    ϓϥγ

    View Slide

  30. ͖ͬ͞ऴΘͬͨษڧΛ
    ه࿥ͯ͠ɺεϚϗ͸৮Βͣʹ
    ࣍ͷษڧΛ࢝ΊΔϓϥ

    View Slide

  31. )FZ 4JSJ
    ษڧΛه࿥͢Δʂϓϥʂ

    View Slide

  32. ͲͷΑ͏ʹه࿥͠·͔͢ʁ
    ษڧͨ͜͠ͱΛه࿥
    ετοϓ΢ΥονͰܭଌΛ࢝ΊΔ
    λΠϚʔͰܭଌΛ࢝ΊΔ
    ܭଌதͷετοϓ΢ΥονΛҰ࣌ఀࢭ
    ʜ

    View Slide

  33. ετοϓ΢ΥονͰ
    ࣌ؒΛܭΓͳ͕Βษڧ͢Δϓϥ

    View Slide

  34. )FZ 4JSJ
    ษڧΛه࿥͢Δʂϓϥʂ

    View Slide

  35. ͲͷΑ͏ʹه࿥͠·͔͢ʁ
    ษڧͨ͜͠ͱΛه࿥
    ετοϓ΢ΥονͰܭଌΛ࢝ΊΔ
    λΠϚʔͰܭଌΛ࢝ΊΔ
    ܭଌதͷετοϓ΢ΥονΛҰ࣌ఀࢭ
    ʜ

    View Slide

  36. ͍͍ͪͪԿΛ͢Δ͔બͿͷ͸
    ໘౗͍͘͞ϓϥɻ
    ͋ͱͰΞϓϦىಈͯ͠ೖྗ͢Δϓϥ

    View Slide

  37. ରԠͨ͠ૢ࡞
    w ษڧͨ͜͠ͱΛه࿥͢Δ
    w ͜Ε͔Βษڧ͢ΔڭࡐͰετοϓ΢ΥονͷܭଌΛ։࢝͢Δ
    w ͜Ε͔Βษڧ͢ΔڭࡐͰλΠϚʔͷܭଌΛ։࢝͢Δ
    w ετοϓ΢ΥονͷܭଌΛҰ࣌ఀࢭ͢Δ
    w λΠϚʔͷܭଌΛҰ࣌ఀࢭ͢Δ
    w ετοϓ΢ΥονͷܭଌΛ࠶։͢Δ
    w λΠϚʔͷܭଌΛ࠶։͢Δ
    w ετοϓ΢ΥονͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ
    w λΠϚʔͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ
    w ετοϓ΢ΥονͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ
    w λΠϚʔͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ

    View Slide

  38. ରԠͨ͠ૢ࡞
    w ษڧͨ͜͠ͱΛه࿥͢Δ
    w ͜Ε͔Βษڧ͢ΔڭࡐͰετοϓ΢ΥονͷܭଌΛ։࢝͢Δ
    w ͜Ε͔Βษڧ͢ΔڭࡐͰλΠϚʔͷܭଌΛ։࢝͢Δ
    w ετοϓ΢ΥονͷܭଌΛҰ࣌ఀࢭ͢Δ
    w λΠϚʔͷܭଌΛҰ࣌ఀࢭ͢Δ
    w ετοϓ΢ΥονͷܭଌΛ࠶։͢Δ
    w λΠϚʔͷܭଌΛ࠶։͢Δ
    w ετοϓ΢ΥονͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ
    w λΠϚʔͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ
    w ετοϓ΢ΥονͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ
    w λΠϚʔͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ
    ͍ͬͺ͍͋Γ͗ͯ͢
    ԿΛ࢖͑͹΍Γ͍ͨ͜ͱ͕Ͱ͖Δͷ͔
    ෼͔Βͳ͍ϓϥʂ

    View Slide

  39. ରԠ͢Δૢ࡞Λ·ͱΊΔ
    w ·ͱΊΔج४
    w ΞΫγϣϯΛར༻͢Δ৔໘
    w ݺͼ͔͚ΔϑϨʔζ͕ྨࣅͦ͠͏ͳૢ࡞ΛͭͷΞΫγϣϯͱ͢Δ

    View Slide

  40. ษڧه࿥ͷΞΫγϣϯΛ
    ར༻৔໘ຖʹ·ͱΊͨ݁Ռ

    View Slide

  41. w ษڧͨ͜͠ͱΛه࿥͢Δ
    w ͜Ε͔Βษڧ͢ΔڭࡐͰετοϓ΢ΥονͷܭଌΛ։࢝͢Δ
    w ͜Ε͔Βษڧ͢ΔڭࡐͰλΠϚʔͷܭଌΛ։࢝͢Δ
    w ετοϓ΢ΥονͷܭଌΛҰ࣌ఀࢭ͢Δ
    w λΠϚʔͷܭଌΛҰ࣌ఀࢭ͢Δ
    w ετοϓ΢ΥονͷܭଌΛ࠶։͢Δ
    w λΠϚʔͷܭଌΛ࠶։͢Δ
    w ετοϓ΢ΥονͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ
    w λΠϚʔͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ
    w ετοϓ΢ΥονͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ
    w λΠϚʔͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ

    View Slide

  42. ར༻৔໘ຖʹΞΫγϣϯΛ෼཭ͨ݁͠Ռ
    w ஝ੵͨ͠"OBMZUJDTΠϕϯτ͔Β࡯͢Δʹɺར༻͢ΔϢʔβʔʹͱͬͯ͸z͋ͬ
    ͯ౰ͨΓલzͷػೳͱͯ͠ఆண͍ͯ͠Δ༷ࢠ
    w Ϣʔβʔ͔Βʮ4JSJ4IPSUDVUT͸Ͳ͏΍ͬͯར༻͢Δ͔ʯͷ໰͍߹Θͤ͸গʑ
    ͘Δ΋ͷͷɺʮܭଌ։࢝͸Ͱ͖͕ͨҰ࣌ఀࢭͷํ๏͕෼͔Βͳ͍ʯ౳ͷ໰͍
    ߹Θͤ͸͖͍ͯͳ͍
    w ΞΫγϣϯΛ࣮ߦ͢Δํ๏͑͞෼͔Ε͹ɺར༻ํ๏͸ࠔΒͳ͍

    View Slide

  43. ΞδΣϯμ
    w 4UVEZQMVTͰϦϦʔεͨ͠ษڧه࿥Λೖྗ͢Δ4JSJ4IPSUDVUT֓ཁ
    w 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚ΔΞΫγϣϯͷબఆ
    w ର࿩ͷઃܭ
    w ΞΫγϣϯຖʹೖྗΛड͚෇͚Δύϥϝʔλઃܭ
    w ೖྗ͞ΕͨύϥϝʔλͷΤϥʔॲཧઃܭʴ࣮૷ྫ
    w ԡ͓͖͍࣮͑ͯͨ͞૷Λ঺հ
    w ΞΫγϣϯ׬ྃޙɺΞϓϦʹભҠͯ͠΍Γ͍ͨ͜ͱ͕͋Δ৔߹ͷ࣮૷

    View Slide

  44. ΞΫγϣϯຖʹ࣮૷Λड͚෇͚Δ
    ύϥϝʔλઃܭ

    View Slide

  45. 4JSJ4IPSUDVUTͷର࿩ઃܭ
    "QQMFͷ͓͢͢Ί
    4JSJͱϢʔβʔؒͰ૝ఆ͢Δ΍ΓͱΓΛ୆ຊܗࣜʹى͜͢
    ୆ຊΛ΋ͱʹϑϩʔνϟʔτΛى͜͢

    View Slide

  46. Ҿ༻ݩɿ%FTJOJOH(SFBU4IPSUDVUTc88%$7JEFPT"QQMF%FWFMPQFS

    View Slide

  47. 4JSJ4IPSUDVUTͷର࿩ઃܭ
    "QQMFͷ͓͢͢Ί
    4JSJͱϢʔβʔؒͰ૝ఆ͢Δ΍ΓͱΓΛ୆ຊܗࣜʹى͜͢
    ୆ຊΛ΋ͱʹϑϩʔνϟʔτΛى͜͢
    ˠ͔ͬ͠Γઃܭ͢Δͱɺ"MFYBεΩϧ΍(PPHMFΞγελϯτ޲͚ΞϓϦͳͲ
    ଞͷԻ੠ର࿩6*ʹ΋ྲྀ༻͕Մೳ

    View Slide

  48. 4UVEZQMVTͷษڧه࿥ػೳΞΫγϣϯ
    w ೖྗ͞Εͨ಺༰ͰษڧΛه࿥͢Δ
    w ษڧه࿥ͷετοϓ΢ΥονΛ։࢝
    w ษڧه࿥ͷλΠϚʔΛ։࢝
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛҰ࣌ఀࢭ
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ࠶։
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ׬ྃ
    w ܭଌதͷษڧه࿥Λ֬ೝ

    View Slide

  49. 4UVEZQMVTͷษڧه࿥ػೳΞΫγϣϯ
    w ೖྗ͞Εͨ಺༰ͰษڧΛه࿥͢Δ
    w ษڧه࿥ͷετοϓ΢ΥονΛ։࢝
    w ษڧه࿥ͷλΠϚʔΛ։࢝
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛҰ࣌ఀࢭ
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ࠶։
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ׬ྃ
    w ܭଌதͷษڧه࿥Λ֬ೝ

    View Slide

  50. ษڧه࿥ͷೖྗͰड͚෇͚͍ͯΔύϥϝʔλ
    w ษڧ։࢝࣌ࠁ
    w ڭࡐ
    w ษڧ࣌ؒ
    w ֶशྔ
    w ߹ܭPSൣғ
    w ϝϞ
    w ը૾
    w 5XJUUFSͷڞ༗εςʔλε

    View Slide

  51. ษڧه࿥ͷೖྗͰड͚෇͚͍ͯΔύϥϝʔλ
    w ษڧ։࢝࣌ࠁɹˠΞΫγϣϯ࣮ߦ࣌ͷ೔࣌Λࣗಈతʹೖྗ
    w ڭࡐ
    w ษڧ࣌ؒ
    w ֶशྔ
    w ߹ܭPSൣғ
    w ϝϞ
    w ը૾ɹˠ୺຤ͷը໘ΛݟΔૢ࡞͕ඞਢͰຊ຤స౗ɺ౤ߘޙʹޙ෇͚ՄೳͳͷͰͦͪΒͰରԠΛ͓ئ͍
    w 5XJUUFSͷڞ༗εςʔλεɹˠલճͷ0/0''εςʔλεΛҾ͖ܧ͗
    ΞϓϦը໘Ͱड͚෇͚ΔΑΓɺՄೳͳݶΓ࡟ݮ

    View Slide

  52. γϣʔτΧοτܦ༝ͰೖྗΛड͚෇͚Δύϥϝʔλ
    w ڭࡐ
    w ษڧ࣌ؒ
    w ֶशྔ
    w ߹ܭPSൣғ
    w ϝϞ

    View Slide

  53. γϣʔτΧοτܦ༝ͰೖྗΛड͚෇͚Δύϥϝʔλ
    w ڭࡐ
    w ษڧ࣌ؒ
    w ֶशྔ
    w ߹ܭPSൣғ
    w ϝϞ
    ৚݅෇͖ͰඞਢʹͳͬͨΓɺ৚͖݅ͭͰೖྗෆՄ

    View Slide

  54. Ҿ༻ݩɿ%FTJHOHSFBUBDUJPOTGPS4IPSUDVUT 4JSJ BOE4VHHFTUJPOTc88%$7JEFPT"QQMF%FWFMPQFS

    View Slide

  55. Ҿ༻ݩɿ%FTJHOHSFBUBDUJPOTGPS4IPSUDVUT 4JSJ BOE4VHHFTUJPOTc88%$7JEFPT"QQMF%FWFMPQFS
    4UVEZQMVTͷษڧه࿥౤ߘΞΫγϣϯ͸ɺ
    #BEύλʔϯ4VNNBSZͰ࣮૷

    View Slide

  56. *OUFOUTJOUFOUEFGJOJUJPO

    View Slide

  57. *OUFOUTJOUFOUEFGJOJUJPO
    Ϣʔβʔ͕γϣʔτΧοτΞϓϦ͔Β
    ΞΫγϣϯΛ௥Ճͨ͠ࡍɺ
    Ұ൪্ͷαϚϦͰΞΫγϣϯ͕ੜ੒
    ˞Α͘࢖͏ૢ࡞ؔ܎ͷγϣʔτΧοτʹ͍ͭͯ
    J04͔ΒͷఏҊΛܦ༝ͨ͠৔߹͸আ͘

    View Slide

  58. "QQMF͓͢͢Ίઃܭͷ௨Γͷ৔߹
    ษڧه࿥ͷ౤ߘɾܭଌ׬ྃ࣌ʹ͸ҎԼͷΞΫγϣϯΛ४උ
    w ษڧ࣌ؒΛه࿥
    w ڭࡐ ೚ҙ

    w ษڧ࣌ؒ ඞਢ

    w ษڧྔ
    w ษڧྔΛه࿥
    w ڭࡐ ඞਢ

    w ษڧ࣌ؒ ೚ҙ

    w ษڧྔ ඞਢ

    w ษڧ࣌ؒͱษڧྔΛه࿥
    w ڭࡐ ඞਢ

    w ษڧྔ ඞਢ

    w ษڧ࣌ؒ ඞਢ

    View Slide

  59. 4UVEZQMVTͷษڧه࿥ػೳΞΫγϣϯ
    w ೖྗ͞Εͨ಺༰ͰษڧΛه࿥͢Δ
    w ษڧه࿥ͷετοϓ΢ΥονΛ։࢝
    w ษڧه࿥ͷλΠϚʔΛ։࢝
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛҰ࣌ఀࢭ
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ࠶։
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ׬ྃ
    w ܭଌதͷษڧه࿥Λ֬ೝ

    View Slide

  60. 4UVEZQMVTͷษڧه࿥ػೳΞΫγϣϯ
    w ೖྗ͞Εͨ಺༰ͰษڧΛه࿥͢Δ
    w ษڧه࿥ͷετοϓ΢ΥονΛ։࢝
    w ษڧه࿥ͷλΠϚʔΛ։࢝
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛҰ࣌ఀࢭ
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ࠶։
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ׬ྃ
    w ܭଌதͷษڧه࿥Λ֬ೝ
    ษڧ࣌ؒ
    ษڧྔ
    ษڧ࣌ؒͱษڧྔ
    ษڧ࣌ؒ
    ษڧ࣌ؒͱษڧྔ

    View Slide

  61. ରԠͨ͠ૢ࡞
    w ೖྗ͞Εͨ಺༰ͰษڧΛه࿥͢Δ
    w ษڧه࿥ͷετοϓ΢ΥονΛ։࢝
    w ษڧه࿥ͷλΠϚʔΛ։࢝
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛҰ࣌ఀࢭ
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ࠶։
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ׬ྃ
    w ܭଌதͷษڧه࿥Λ֬ೝ
    ษڧ࣌ؒ
    ษڧྔ
    ษڧ࣌ؒͱษڧྔ
    ษڧ࣌ؒ
    ษڧ࣌ؒͱษڧྔ
    ྨࣅΞΫγϣϯଟ਺
    ˠϢʔβʔ͕ࠞཚͦ͠͏
    ˠ"QQMF͓͢͢ΊઃܭΛ΋ͱʹ࣮૷͸அ೦

    View Slide

  62. ରԠͨ͠ૢ࡞
    w ೖྗ͞Εͨ಺༰ͰษڧΛه࿥͢Δ
    w ษڧه࿥ͷετοϓ΢ΥονΛ։࢝
    w ษڧه࿥ͷλΠϚʔΛ։࢝
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛҰ࣌ఀࢭ
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ࠶։
    w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ׬ྃ
    w ܭଌதͷษڧه࿥Λ֬ೝ
    ษڧ࣌ؒ
    ษڧྔ
    ษڧ࣌ؒͱษڧྔ
    ษڧ࣌ؒ
    ษڧ࣌ؒͱษڧྔ
    zର࿩ΛؤுΒͳͯ͘΋z
    ࣮༻ʹ଱͑͏Δ4JSJ4IPSUDVUT͸࡞ΕΔ
    ྨࣅΞΫγϣϯଟ਺
    ˠϢʔβʔ͕ࠞཚͦ͠͏
    ˠ"QQMF͓͢͢ΊઃܭΛ΋ͱʹ࣮૷͸அ೦

    View Slide

  63. "QQMF͓͢͢ΊઃܭΛఘΊͨ݁Ռ
    w ΞΫγϣϯ͸ར༻͢Δ৔໘͝ͱʹ੾Γ෼͚ͯඞཁ࠷খݶʹཹΊΔ
    w ษڧه࿥ͷ౤ߘΛ൐͏ΞΫγϣϯ͸ύϥϝʔλຖʹ੾Γ෼͚ͣɺแׅతʹαϙ
    ʔτ
    w ৚݅෇͖ඞਢύϥϝʔλɾ৚݅෇͖ೖྗෆՄύϥϝʔλ͸ɺγϣʔτΧοτ࣮ߦ
    ࣌ʹ൑ఆͯ͠Τϥʔͱͯ͠஄͘
    w ͢΂ͯͷύϥϝʔλΛԻ੠ର࿩Ͱ΋ద੾ʹೖྗΛड͚෇͚ΒΕΔ૝ఆΛఘΊͯɺ
    γϣʔτΧοτΞϓϦͷखೖྗ6*ܦ༝Ͱͷ࣮ߦ࣌ʹ૝ఆ௨Γಈ࡞͢Δ͜ͱΛ໨
    ࢦͨ͠

    View Slide

  64. ΞδΣϯμ
    w 4UVEZQMVTͰϦϦʔεͨ͠ษڧه࿥Λೖྗ͢Δ4JSJ4IPSUDVUT֓ཁ
    w 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚ΔΞΫγϣϯͷબఆ
    w ର࿩ͷઃܭ
    w ΞΫγϣϯຖʹೖྗΛड͚෇͚Δύϥϝʔλઃܭ
    w ೖྗ͞ΕͨύϥϝʔλͷΤϥʔॲཧઃܭʴ࣮૷ྫ
    w ԡ͓͖͍࣮͑ͯͨ͞૷Λ঺հ
    w ΞΫγϣϯ׬ྃޙɺΞϓϦʹભҠͯ͠΍Γ͍ͨ͜ͱ͕͋Δ৔߹ͷ࣮૷

    View Slide

  65. ೖྗ͞Εͨύϥϝʔλͷ
    Τϥʔॲཧઃܭʴ࣮૷ྫ

    View Slide

  66. Τϥʔͱ͢ΔέʔεΛ੔ཧ

    View Slide

  67. ύϥϝʔλຖͷόϦσʔγϣϯͦͷ
    w ษڧ࣌ؒ
    w ෼ ࣌ؒ
    ΑΓେ͖͍஋
    w ֶशྔ
    w ߹ܭPSൣғ
    w ্ݶ
    ΑΓେ͖͍஋
    w Լݶ
    ΑΓখ͍͞஋
    ֤ύϥϝʔλຖʹɺೖྗ͞Εͨ஋ΛΤϥʔͱ͢ΔέʔεΛॻ͖ى͜͠

    View Slide

  68. ύϥϝʔλຖͷόϦσʔγϣϯͦͷ
    ղܾࡁΈͷଞύϥϝʔλͷ஋Λ৚݅ʹΤϥʔͱ͢ΔέʔεΛॻ͖ى͜͠
    ᶃ ڭࡐ
    ᶄ ษڧ࣌ؒˠᶃ͕ೖྗࡁ
    ᶅ ֶशྔˠᶃᶄ͕ೖྗࡁ
    w ߹ܭPSൣғ
    ᶆ ϝϞˠᶃᶄᶅ͕ೖྗࡁ
    ύϥϝʔλఆٛॱʹೖྗ஋Λղܾ
    ΞΫγϣϯຖʹੜ੒͞ΕΔ
    *OUFOU)BOEMJOHQSPUPDPMͷ͏ͪ
    ύϥϝʔλຖͷSFTPMWFϝιου
    ͕࣮ߦ

    View Slide

  69. ύϥϝʔλຖͷόϦσʔγϣϯͦͷ
    ղܾࡁΈͷଞύϥϝʔλͷ஋Λ৚݅ʹΤϥʔͱ͢ΔέʔεΛॻ͖ى͜͠
    ษڧه࿥ͱͯ͠ड͚෇͚Δσʔλͱͯ͠੒ཱ͠ͳ͍έʔε
    w ษڧ࣌ؒ
    w ڭࡐͳ͔ͭ͠ษڧ࣌ؒͳ͠
    w ֶशྔ
    w ߹ܭPSൣғ
    w ൣғͷ৔߹ɺ։͕࢝ऴྃΑΓେ͖͍஋
    w ൣғͷ৔߹ɺ։࢝·ͨ͸ऴྃͷΈҎ্ͷ஋
    w ڭࡐͳ͠Ͱ߹ܭPSൣғ΁Ҏ্ͷ஋Λઃఆ
    w ษڧ࣌ؒͳֶ͔ͭ͠शྔͳ͠

    View Slide

  70. ύϥϝʔλͷೖྗ஋Ͱ͸൑ఆͰ͖ͳ͍ΤϥʔΛॻ͖ى͜͠
    w Πϯλʔωοτͷ઀ଓεςʔλε
    w ΦϑϥΠϯͰ͋Δ
    w ΦϯϥΠϯͷঢ়ଶͰΞϓϦΛىಈ࣌ʹվΊͯૹ৴ॲཧΛࢼߦ͢Δ࢓༷
    w 4UVEZQMVTΞϓϦͰͷϩάΠϯεςʔλε
    w ະϩάΠϯͰɺษڧه࿥Λ౤ߘ͢ΔઌͷΞΧ΢ϯτ͕ෆ໌
    w ڭࡐ
    w બ୒ͨ͠ڭࡐ͕ݱࡏຊ୨ʹଘࡏ͠ͳ͍
    w ࣗ෼ͷຊ୨ʹଘࡏ͢ΔڭࡐͰͳ͍ͱษڧه࿥ΛೖྗͰ͖ͳ͍࢓༷
    w ϝϞ
    w /(ϫʔυΛؚΉ
    w /(ϫʔυ͸ΧελϚʔαϙʔτͰৗ࣌ௐ੔Ͱ͖ΔͨΊɺ༗ແΛαʔόʔͰ൑ఆ͢Δ࢓༷

    View Slide

  71. ੔ཧͨ͠ΤϥʔΛ࣮૷

    View Slide

  72. ΤϥʔΛఆٛ *OUFOUTJOUFOUEFGJOJUJPO

    ྫɿೖྗ͞Εͨ஋ͰษڧΛه࿥͢Δֶशྔൣғऴྃͷ஋
    ύϥϝʔλຖͷόϦσʔγϣϯ
    ͦͷɾͦͷͷΤϥʔΛఆٛ

    View Slide

  73. ΤϥʔΛఆٛ *OUFOUTJOUFOUEFGJOJUJPO

    ྫɿೖྗ͞Εͨ஋ͰษڧΛه࿥͢Δֶशྔൣғऴྃͷ஋
    ύϥϝʔλຖͷόϦσʔγϣϯ
    ͦͷɾͦͷͷΤϥʔΛఆٛ
    ύϥϝʔλ࡞੒࣌ʹࣗಈੜ੒͞ΕΔ
    Τϥʔέʔε ܕʹΑΓ಺༰͸ҟͳΔ
    ͸ɺ
    *OQVUͷઃఆʹԠͯ͡ΤϥʔΛදࣔ
    ύϥϝʔλຖͷSFTPMWFϝιουͰରԠෆཁ

    View Slide

  74. ΤϥʔΛฦ٫ d*OUFOU)BOEMFSTXJGU

    ྫɿೖྗ͞Εͨ஋ͰษڧΛه࿥͢Δֶशྔൣғऴྃͷ஋
    public func resolveEnd(


    for intent: PostStudyRecordIntent,


    with completion: @escaping (PostStudyRecordEndResolutionResult) -> Void) {


    guard let end = intent.end, Int(truncating: end) > 0 else {


    completion(PostStudyRecordEndResolutionResult.notRequired())


    return


    }


    guard intent.material != nil else {


    completion(PostStudyRecordEndResolutionResult.unsupported(forReason: .noMaterial))


    return


    }


    guard let start = intent.start, Int(truncating: start) > 0 else {


    completion(PostStudyRecordEndResolutionResult.unsupported(forReason: .noStart))


    return


    }


    /* lessThanStartValue, failureLackParameterͷέʔεΛলུ */


    completion(PostStudyRecordEndResolutionResult.success(with: Int(truncating: end)))


    }

    View Slide

  75. ΤϥʔΛฦ٫ d*OUFOU)BOEMFSTXJGU

    ྫɿೖྗ͞Εͨ஋ͰษڧΛه࿥͢Δֶशྔൣғऴྃͷ஋
    public func resolveEnd(


    for intent: PostStudyRecordIntent,


    with completion: @escaping (PostStudyRecordEndResolutionResult) -> Void) {


    guard let end = intent.end, Int(truncating: end) > 0 else {


    completion(PostStudyRecordEndResolutionResult.notRequired())


    return


    }


    guard intent.material != nil else {


    completion(PostStudyRecordEndResolutionResult.unsupported(forReason: .noMaterial))


    return


    }


    guard let start = intent.start, Int(truncating: start) > 0 else {


    completion(PostStudyRecordEndResolutionResult.unsupported(forReason: .noStart))


    return


    }


    /* lessThanStartValue, failureLackParameterͷέʔεΛলུ */


    completion(PostStudyRecordEndResolutionResult.success(with: Int(truncating: end)))


    }
    ֶशྔͷه࿥ʹ͸ڭࡐ͕ඞਢͳͷͰ
    ڭࡐ͕ͳ͍ࢫΤϥʔΛฦ٫

    View Slide

  76. ΤϥʔΛฦ٫ d*OUFOU)BOEMFSTXJGU

    ྫɿೖྗ͞Εͨ஋ͰษڧΛه࿥͢Δֶशྔൣғऴྃͷ஋
    public func resolveEnd(


    for intent: PostStudyRecordIntent,


    with completion: @escaping (PostStudyRecordEndResolutionResult) -> Void) {


    guard let end = intent.end, Int(truncating: end) > 0 else {


    completion(PostStudyRecordEndResolutionResult.notRequired())


    return


    }


    guard intent.material != nil else {


    completion(PostStudyRecordEndResolutionResult.unsupported(forReason: .noMaterial))


    return


    }


    guard let start = intent.start, Int(truncating: start) > 0 else {


    completion(PostStudyRecordEndResolutionResult.unsupported(forReason: .noStart))


    return


    }


    /* lessThanStartValue, failureLackParameterͷέʔεΛলུ */


    completion(PostStudyRecordEndResolutionResult.success(with: Int(truncating: end)))


    }
    ֶशྔͷऴྃʹ͸։࢝ͷઃఆ͕ඞਢͳͷͰ
    ։͕࢝ઃఆ͞Ε͍ͯͳ͍ࢫΤϥʔΛฦ٫

    View Slide

  77. ΤϥʔΛఆٛ *OUFOUTJOUFOUEFGJOJUJPO

    ྫɿೖྗ͞Εͨ஋ͰษڧΛه࿥͢Δ 1PTU4UVEZ3FDPSE
    3FTQPOTF
    ύϥϝʔλͷೖྗ஋ͷΈͰ͸൑ఆͰ͖ͳ͍
    ΤϥʔΛఆٛ

    View Slide

  78. ΤϥʔΛฦ٫ d*OUFOU)BOEMFSTXJGU

    ྫɿೖྗ͞Εͨ஋ͰษڧΛه࿥͢Δ 1PTU4UVEZ3FDPSE
    3FTQPOTF
    public func handle(


    ɹɹɹɹintent: PostStudyRecordIntent,


    ɹɹɹɹcompletion: @escaping (PostStudyRecordIntentResponse) -> Void) {


    guard CurrentUser.isLogin else {


    completion(


    PostStudyRecordIntentResponse(code: .failureStatusLogout, userActivity: nil))


    return


    }


    /* failureOffline, failureNotFoundBookshelfEntryͷέʔεɺͦͷଞ΋Ζ΋ΖͷॲཧΛলུ */


    StudyRecordRepository.create(studyRecord: studyRecord, success: { _ in


    completion(PostStudyRecordIntentResponse(code: .success, userActivity: userActivity))


    }, ngWordsDetected: {


    completion(


    ɹɹɹɹɹɹɹɹPostStudyRecordIntentResponse(code: .failureNgWordsDetected, userActivity: nil))


    }


    }

    View Slide

  79. ΤϥʔΛฦ٫ d*OUFOU)BOEMFSTXJGU

    ྫɿೖྗ͞Εͨ஋ͰษڧΛه࿥͢Δ 1PTU4UVEZ3FDPSE
    3FTQPOTF
    public func handle(


    ɹɹɹɹintent: PostStudyRecordIntent,


    ɹɹɹɹcompletion: @escaping (PostStudyRecordIntentResponse) -> Void) {


    guard CurrentUser.isLogin else {


    completion(


    PostStudyRecordIntentResponse(code: .failureStatusLogout, userActivity: nil))


    return


    }


    /* failureOffline, failureNotFoundBookshelfEntryͷέʔεɺͦͷଞ΋Ζ΋ΖͷॲཧΛলུ */


    StudyRecordRepository.create(studyRecord: studyRecord, success: { _ in


    completion(PostStudyRecordIntentResponse(code: .success, userActivity: userActivity))


    }, ngWordsDetected: {


    completion(


    ɹɹɹɹɹɹɹɹPostStudyRecordIntentResponse(code: .failureNgWordsDetected, userActivity: nil))


    }


    }
    ະϩάΠϯͷ৔߹ɺ
    ϩάΠϯ͔ͯ͠Β࣮ߦͯ͠΄͍͠ࢫΤϥʔΛฦ٫

    View Slide

  80. ΤϥʔΛฦ٫ d*OUFOU)BOEMFSTXJGU

    ྫɿೖྗ͞Εͨ஋ͰษڧΛه࿥͢Δ 1PTU4UVEZ3FDPSE
    3FTQPOTF
    public func handle(


    ɹɹɹɹintent: PostStudyRecordIntent,


    ɹɹɹɹcompletion: @escaping (PostStudyRecordIntentResponse) -> Void) {


    guard CurrentUser.isLogin else {


    completion(


    PostStudyRecordIntentResponse(code: .failureStatusLogout, userActivity: nil))


    return


    }


    /* failureOffline, failureNotFoundBookshelfEntryͷέʔεɺͦͷଞ΋Ζ΋ΖͷॲཧΛলུ */


    StudyRecordRepository.create(studyRecord: studyRecord, success: { _ in


    completion(PostStudyRecordIntentResponse(code: .success, userActivity: userActivity))


    }, ngWordsDetected: {


    completion(


    ɹɹɹɹɹɹɹɹPostStudyRecordIntentResponse(code: .failureNgWordsDetected, userActivity: nil))


    }


    }
    ϝϞʹ/(ϫʔυؚ͕·Ε͍ͯͨ৔߹ɺ
    ෆద੾ͳจࣈྻؚ͕·Ε͓ͯΓ౤ߘʹࣦഊͨ͠ࢫ
    ΤϥʔΛฦ٫

    View Slide

  81. ΞδΣϯμ
    w 4UVEZQMVTͰϦϦʔεͨ͠ษڧه࿥Λೖྗ͢Δ4JSJ4IPSUDVUT֓ཁ
    w 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚ΔΞΫγϣϯͷબఆ
    w ର࿩ͷઃܭ
    w ΞΫγϣϯຖʹೖྗΛड͚෇͚Δύϥϝʔλઃܭ
    w ೖྗ͞ΕͨύϥϝʔλͷΤϥʔॲཧઃܭʴ࣮૷ྫ
    w ԡ͓͖͍࣮͑ͯͨ͞૷Λ঺հ
    w ΞΫγϣϯ׬ྃޙɺΞϓϦʹભҠͯ͠΍Γ͍ͨ͜ͱ͕͋Δ৔߹ͷ࣮૷

    View Slide

  82. ΞΫγϣϯ׬ྃޙɺΞϓϦʹભҠ͠
    ͯ΍Γ͍ͨ͜ͱ͕͋Δ৔߹ͷ࣮૷

    View Slide

  83. ษڧه࿥౤ߘޙɺࠓिͷ໨ඪਐḿΛ౤ߘͰ͖Δ
    ه࿥ޙɺҰఆͷਐḿ཰Λୡ੒ͨ͠ࡍʹදࣔ
    ษڧه࿥Λ౤ߘ
    ౤ߘͨ͠ه࿥ͰҰఆͷୡ੒཰Λ
    ຬͨ͢ͱɺݱࡏͷୡ੒ਐḿ཰Λ
    ౤ߘ͢Δ͜ͱ͕Մೳ
    ʢ͜ΕҎ֎ʹୡ੒཰Λใࠂ͢Δػ
    ձΛઃ͚͍ͯͳ͍ʣ

    View Slide

  84. ษڧه࿥ͷ౤ߘΛ൐͏ΞΫγϣϯ׬ྃޙͷϏϡʔͰදࣔ෼ذ
    ࠓिͷ໨ඪʹҰఆͷਐḿ͕͋ͬͨ͜ͱΛ஌Βͤɺ౤ߘ͍ͨ͠৔߹͸λοϓΛ༠ಋ
    ࠓिͷ໨ඪਐḿ͕͋ͬͨ͜ͱΛซه
    Լͷ׬ྃϘλϯΛԡԼͤͣʹ
    Ϗϡʔ෦෼ΛԡԼ͢Δͱ
    ΞϓϦ͕ىಈ
    ΞϓϦىಈޙɺࣗಈతʹ
    ࠓिͷ໨ඪਐḿ౤ߘը໘΁ભҠ

    View Slide

  85. ΞΫγϣϯ׬ྃޙͷϏϡʔදࣔ༗ແ͸੾Γସ͑Մೳ
    0''ʹ͢ΔͱɺΞΫγϣϯ׬ྃ࣌ͷ
    Ϗϡʔ͸දࣔ͞Εͳ͍
    ΞΫγϣϯ׬ྃޙʹඞਢͷಈ࡞͸ɺ
    ΞϓϦ΁ͷભҠΛ൐Θͣʹ
    ΞΫγϣϯதʹ׬݁͢΂͖

    View Slide

  86. ΞΫγϣϯ׬ྃϏϡʔλοϓͰΞϓϦىಈ࣌ͷ࣮૷
    d*OUFOU)BOEMFSTXJGU
    public func handle(


    intent: PostStudyRecordIntent,


    completion: @escaping (PostStudyRecordIntentResponse) -> Void) {


    /* Τϥʔॲཧ΍౤ߘॲཧ͸লུ */


    let userActivity = NSUserActivity(


    activityType: “Info.plist>NSUserActivityTypesʹఆٛࡁΈͷ໊લ"


    )


    userActivity.title = "ษڧΛه࿥͢Δ"


    userActivity.userInfo = ["study_challenge": "ࠓिͷ໨ඪਐḿͷ಺༰"]


    completion(


    PostStudyRecordIntentResponse(


    code: .success, userActivity: userActivity)


    )


    }

    View Slide

  87. ΞΫγϣϯ׬ྃϏϡʔλοϓͰΞϓϦىಈ࣌ͷ࣮૷
    4DFOF%FMFHBUFTXJGU ·ͨ͸"QQ%FMFHBUFTXJGU

    func scene(


    _ scene: UIScene,


    continue userActivity: NSUserActivity) {


    // userActivity.activityType͓ΑͼuserInfoΛղੳͯ͠ը໘ભҠ


    }

    View Slide

  88. ࢀߟ
    w 4PVQ$IFG αϯϓϧίʔυ

    w IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTJSJLJU
    TPVQ@DIFG@BDDFMFSBUJOH@BQQ@JOUFSBDUJPOT@XJUI@TIPSUDVUT
    w 88%$c&NQPXFSZPVSJOUFOUT
    w IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

    View Slide

  89. ࢀߟ
    w J04%$cJ04ʹ͓͚Δ4JSJ4IPSUDVUT࠷খ࣮૷ʴЋ
    w IUUQTGPSUFFKQJPTEDKBQBOQSPQPTBMDDEFBGEEEGB
    CFBC
    w J04ʹ͓͚Δ4JSJ4IPSUDVUT࠷খ࣮૷ʴЋεϥΠυॻ͖ى͜͠ͱิ଍
    w IUUQTUFDITUVEZQMVTDPKQFOUSZ

    View Slide

  90. ࢀߟ
    w %FTJHOJOH(SFBU4IPSUDVUT
    w IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED
    w %FTJHOHSFBUBDUJPOTGPS4IPSUDVUT 4JSJ BOE4VHHFTUJPOT
    w IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

    View Slide

  91. Α͍4JSJ4IPSUDVUTରԠΛʂ

    View Slide