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

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

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

D0337ede0237cdaff325101c71617a3b?s=128

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

  2. ࣗݾ঺հ w ໌౉ຑҥՖ w 5XJUUFS!N@ZBNBEB w 4UVEZQMVT *OD w ʙ

    w ࣄ຿৬ˠ4*FSˠݱࡏ w ϞόΠϧΫϥΠΞϯτάϧʔϓॴଐJ04&OHJOFFS w J04%$ʹͯҎԼͷςʔϚͰ-5΁ొஃ w J04ʹ͓͚Δ4JSJ4IPSUDVUT࠷খ࣮૷ʴЋ
  3. ͜ͷτʔΫͰ ࿩͢͜ͱɾ࿩͞ͳ͍͜ͱ ఻͍͑ͨ͜ͱ

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

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

    CFBC w J04ʹ͓͚Δ4JSJ4IPSUDVUT࠷খ࣮૷ʴЋεϥΠυॻ͖ى͜͠ͱิ଍ w IUUQTUFDITUVEZQMVTDPKQFOUSZ
  7. ͜ͷτʔΫͰ఻͍͑ͨ͜ͱ w ର࿩ͷઃܭΛ͖ͪΜͱ͠ͳͯ͘΋ɺ࣮༻ʹ଱͑͏Δ4JSJ4IPSUDVUT͸࡞ΕΔ w ͨͩ͠ɺϢʔβʔʹΤϥʔͱ஌ΒͤΔέʔε͸పఈతʹ໢ཏͨ͠΄͏͕਌੾ w 4JSJ4IPSUDVUTͷ࣮૷ࣗମ͸೉͘͠ͳ͍ʂ w 9DPEF্Ͱ͔͠։͚ͳ͍ઐ༻ϑΝΠϧ JOUFOUEFOJ

    fi UJPO Λ༻͍Δඞཁ͕͋ Δ͕ɺ։ൃऀ͕ؾΛݣͬͯॻ͘ιʔείʔυͷྔ͸গͳΊ w 88%$ͷಈըΛ؍ͳ͕Β࣮૷͕໘౗ͩͬͨΤϥʔέʔε࣮૷ͳͲΛൃදࢿ ྉʹ٧ΊࠐΜͩͷͰɺօ༷ͷ4JSJ4IPSUDVUT࣮૷࣌ʹ໾ʹཱͯ͹خ͍͠
  8. ΞδΣϯμ w 4UVEZQMVTͰϦϦʔεͨ͠ษڧه࿥Λೖྗ͢Δ4JSJ4IPSUDVUT֓ཁ w 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚ΔΞΫγϣϯͷબఆ w ର࿩ͷઃܭ w ΞΫγϣϯຖʹೖྗΛड͚෇͚Δύϥϝʔλઃܭ w

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

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

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

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

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

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

  15. ษڧͨ͠಺༰Λೖྗ

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

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

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

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

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

    ετοϓ΢ΥονɾλΠϚʔͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ
  21. 4JSJ4IPSUDVUTར༻ঢ়گ ˞೥݄೔ʙ݄೔࣌఺ w ษڧه࿥ؔ࿈ͷૢ࡞ΛγϣʔτΧοτͰ࣮ߦͨ͠ w ճ਺ɿ ճ w ਓ਺ɿ ਓ

    ˞ಋೖࡁΈͷ'JSFCBTF"OBMZUJDTͰ͸ϝΠϯλʔήοτະىಈͩͱΠϕϯτ͕ ૹ৴Ͱ͖ͳ͔ͬͨͨΊɺγϣʔτΧοτ࣮ߦ࣌ʹϩάΛϩʔΧϧ%#΁อଘͯ͠ ࣍ճΞϓϦىಈ࣌ʹҰׅૹ৴ͯ͠ूܭ ೥݄·Ͱͷ࣮૷౰࣌
  22. ΞδΣϯμ w 4UVEZQMVTͰϦϦʔεͨ͠ษڧه࿥Λೖྗ͢Δ4JSJ4IPSUDVUT֓ཁ w 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚ΔΞΫγϣϯͷબఆ w ର࿩ͷઃܭ w ΞΫγϣϯຖʹೖྗΛड͚෇͚Δύϥϝʔλઃܭ w

    ೖྗ͞ΕͨύϥϝʔλͷΤϥʔॲཧઃܭʴ࣮૷ྫ w ԡ͓͖͍࣮͑ͯͨ͞૷Λ঺հ w ΞΫγϣϯ׬ྃޙɺΞϓϦʹભҠͯ͠΍Γ͍ͨ͜ͱ͕͋Δ৔߹ͷ࣮૷
  23. 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚Δ ΞΫγϣϯͷબఆ

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

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

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

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

    λΠϚʔͷܭଌΛҰ࣌ఀࢭ͢Δ w ετοϓ΢ΥονͷܭଌΛ࠶։͢Δ w λΠϚʔͷܭଌΛ࠶։͢Δ w ετοϓ΢ΥονͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ w λΠϚʔͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ w ετοϓ΢ΥονͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ w λΠϚʔͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ
  28. ͲΜͳʹେ͖ͯ͘΋̍ͭͷػೳʂ ʮษڧΛه࿥͢ΔʯΞΫγϣϯΛ ࣮૷͠Α͏ʂ ΋͠΋ʜ

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

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

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

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

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

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

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

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

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

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

    λΠϚʔͷܭଌΛҰ࣌ఀࢭ͢Δ w ετοϓ΢ΥονͷܭଌΛ࠶։͢Δ w λΠϚʔͷܭଌΛ࠶։͢Δ w ετοϓ΢ΥονͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ w λΠϚʔͰܭଌதͷ࣌ؒΛ֬ೝ͢Δ w ετοϓ΢ΥονͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ w λΠϚʔͰͷܭଌΛ׬ྃ͠ɺษڧΛه࿥͢Δ ͍ͬͺ͍͋Γ͗ͯ͢ ԿΛ࢖͑͹΍Γ͍ͨ͜ͱ͕Ͱ͖Δͷ͔ ෼͔Βͳ͍ϓϥʂ
  39. ରԠ͢Δૢ࡞Λ·ͱΊΔ w ·ͱΊΔج४ w ΞΫγϣϯΛར༻͢Δ৔໘ w ݺͼ͔͚ΔϑϨʔζ͕ྨࣅͦ͠͏ͳૢ࡞ΛͭͷΞΫγϣϯͱ͢Δ

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

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

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

  43. ΞδΣϯμ w 4UVEZQMVTͰϦϦʔεͨ͠ษڧه࿥Λೖྗ͢Δ4JSJ4IPSUDVUT֓ཁ w 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚ΔΞΫγϣϯͷબఆ w ର࿩ͷઃܭ w ΞΫγϣϯຖʹೖྗΛड͚෇͚Δύϥϝʔλઃܭ w

    ೖྗ͞ΕͨύϥϝʔλͷΤϥʔॲཧઃܭʴ࣮૷ྫ w ԡ͓͖͍࣮͑ͯͨ͞૷Λ঺հ w ΞΫγϣϯ׬ྃޙɺΞϓϦʹભҠͯ͠΍Γ͍ͨ͜ͱ͕͋Δ৔߹ͷ࣮૷
  44. ΞΫγϣϯຖʹ࣮૷Λड͚෇͚Δ ύϥϝʔλઃܭ

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

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

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

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

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

    ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ࠶։ w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ׬ྃ w ܭଌதͷษڧه࿥Λ֬ೝ
  50. ษڧه࿥ͷೖྗͰड͚෇͚͍ͯΔύϥϝʔλ w ษڧ։࢝࣌ࠁ w ڭࡐ w ษڧ࣌ؒ w ֶशྔ w

    ߹ܭPSൣғ w ϝϞ w ը૾ w 5XJUUFSͷڞ༗εςʔλε
  51. ษڧه࿥ͷೖྗͰड͚෇͚͍ͯΔύϥϝʔλ w ษڧ։࢝࣌ࠁɹˠΞΫγϣϯ࣮ߦ࣌ͷ೔࣌Λࣗಈతʹೖྗ w ڭࡐ w ษڧ࣌ؒ w ֶशྔ w

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

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

    ϝϞ ৚݅෇͖ͰඞਢʹͳͬͨΓɺ৚͖݅ͭͰೖྗෆՄ
  54. Ҿ༻ݩɿ%FTJHOHSFBUBDUJPOTGPS4IPSUDVUT 4JSJ BOE4VHHFTUJPOTc88%$7JEFPT"QQMF%FWFMPQFS

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

  56. *OUFOUTJOUFOUEFGJOJUJPO

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

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

    ඞਢ  w ษڧྔ w ษڧྔΛه࿥ w ڭࡐ ඞਢ  w ษڧ࣌ؒ ೚ҙ  w ษڧྔ ඞਢ w ษڧ࣌ؒͱษڧྔΛه࿥ w ڭࡐ ඞਢ  w ษڧྔ ඞਢ  w ษڧ࣌ؒ ඞਢ
  59. 4UVEZQMVTͷษڧه࿥ػೳΞΫγϣϯ w ೖྗ͞Εͨ಺༰ͰษڧΛه࿥͢Δ w ษڧه࿥ͷετοϓ΢ΥονΛ։࢝ w ษڧه࿥ͷλΠϚʔΛ։࢝ w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛҰ࣌ఀࢭ w

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

    ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ࠶։ w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ׬ྃ w ܭଌதͷษڧه࿥Λ֬ೝ ษڧ࣌ؒ ษڧྔ ษڧ࣌ؒͱษڧྔ ษڧ࣌ؒ ษڧ࣌ؒͱษڧྔ
  61. ରԠͨ͠ૢ࡞ w ೖྗ͞Εͨ಺༰ͰษڧΛه࿥͢Δ w ษڧه࿥ͷετοϓ΢ΥονΛ։࢝ w ษڧه࿥ͷλΠϚʔΛ։࢝ w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛҰ࣌ఀࢭ w

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

    ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ࠶։ w ษڧه࿥ͷετοϓ΢ΥονɾλΠϚʔΛ׬ྃ w ܭଌதͷษڧه࿥Λ֬ೝ ษڧ࣌ؒ ษڧྔ ษڧ࣌ؒͱษڧྔ ษڧ࣌ؒ ษڧ࣌ؒͱษڧྔ zର࿩ΛؤுΒͳͯ͘΋z ࣮༻ʹ଱͑͏Δ4JSJ4IPSUDVUT͸࡞ΕΔ ྨࣅΞΫγϣϯଟ਺ ˠϢʔβʔ͕ࠞཚͦ͠͏ ˠ"QQMF͓͢͢ΊઃܭΛ΋ͱʹ࣮૷͸அ೦
  63. "QQMF͓͢͢ΊઃܭΛఘΊͨ݁Ռ w ΞΫγϣϯ͸ར༻͢Δ৔໘͝ͱʹ੾Γ෼͚ͯඞཁ࠷খݶʹཹΊΔ w ษڧه࿥ͷ౤ߘΛ൐͏ΞΫγϣϯ͸ύϥϝʔλຖʹ੾Γ෼͚ͣɺแׅతʹαϙ ʔτ w ৚݅෇͖ඞਢύϥϝʔλɾ৚݅෇͖ೖྗෆՄύϥϝʔλ͸ɺγϣʔτΧοτ࣮ߦ ࣌ʹ൑ఆͯ͠Τϥʔͱͯ͠஄͘ w

    ͢΂ͯͷύϥϝʔλΛԻ੠ର࿩Ͱ΋ద੾ʹೖྗΛड͚෇͚ΒΕΔ૝ఆΛఘΊͯɺ γϣʔτΧοτΞϓϦͷखೖྗ6*ܦ༝Ͱͷ࣮ߦ࣌ʹ૝ఆ௨Γಈ࡞͢Δ͜ͱΛ໨ ࢦͨ͠
  64. ΞδΣϯμ w 4UVEZQMVTͰϦϦʔεͨ͠ษڧه࿥Λೖྗ͢Δ4JSJ4IPSUDVUT֓ཁ w 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚ΔΞΫγϣϯͷબఆ w ର࿩ͷઃܭ w ΞΫγϣϯຖʹೖྗΛड͚෇͚Δύϥϝʔλઃܭ w

    ೖྗ͞ΕͨύϥϝʔλͷΤϥʔॲཧઃܭʴ࣮૷ྫ w ԡ͓͖͍࣮͑ͯͨ͞૷Λ঺հ w ΞΫγϣϯ׬ྃޙɺΞϓϦʹભҠͯ͠΍Γ͍ͨ͜ͱ͕͋Δ৔߹ͷ࣮૷
  65. ೖྗ͞Εͨύϥϝʔλͷ Τϥʔॲཧઃܭʴ࣮૷ྫ

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

  67. ύϥϝʔλຖͷόϦσʔγϣϯͦͷ w ษڧ࣌ؒ w ෼ ࣌ؒ ΑΓେ͖͍஋ w ֶशྔ w

    ߹ܭPSൣғ w ্ݶ  ΑΓେ͖͍஋ w Լݶ  ΑΓখ͍͞஋ ֤ύϥϝʔλຖʹɺೖྗ͞Εͨ஋ΛΤϥʔͱ͢ΔέʔεΛॻ͖ى͜͠
  68. ύϥϝʔλຖͷόϦσʔγϣϯͦͷ ղܾࡁΈͷଞύϥϝʔλͷ஋Λ৚݅ʹΤϥʔͱ͢ΔέʔεΛॻ͖ى͜͠ ᶃ ڭࡐ ᶄ ษڧ࣌ؒˠᶃ͕ೖྗࡁ ᶅ ֶशྔˠᶃᶄ͕ೖྗࡁ w ߹ܭPSൣғ

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

    ߹ܭPSൣғ w ൣғͷ৔߹ɺ։͕࢝ऴྃΑΓେ͖͍஋ w ൣғͷ৔߹ɺ։࢝·ͨ͸ऴྃͷΈҎ্ͷ஋ w ڭࡐͳ͠Ͱ߹ܭPSൣғ΁Ҏ্ͷ஋Λઃఆ w ษڧ࣌ؒͳֶ͔ͭ͠शྔͳ͠
  70. ύϥϝʔλͷೖྗ஋Ͱ͸൑ఆͰ͖ͳ͍ΤϥʔΛॻ͖ى͜͠ w Πϯλʔωοτͷ઀ଓεςʔλε w ΦϑϥΠϯͰ͋Δ w ΦϯϥΠϯͷঢ়ଶͰΞϓϦΛىಈ࣌ʹվΊͯૹ৴ॲཧΛࢼߦ͢Δ࢓༷ w 4UVEZQMVTΞϓϦͰͷϩάΠϯεςʔλε w

    ະϩάΠϯͰɺษڧه࿥Λ౤ߘ͢ΔઌͷΞΧ΢ϯτ͕ෆ໌ w ڭࡐ w બ୒ͨ͠ڭࡐ͕ݱࡏຊ୨ʹଘࡏ͠ͳ͍ w ࣗ෼ͷຊ୨ʹଘࡏ͢ΔڭࡐͰͳ͍ͱษڧه࿥ΛೖྗͰ͖ͳ͍࢓༷ w ϝϞ w /(ϫʔυΛؚΉ w /(ϫʔυ͸ΧελϚʔαϙʔτͰৗ࣌ௐ੔Ͱ͖ΔͨΊɺ༗ແΛαʔόʔͰ൑ఆ͢Δ࢓༷
  71. ੔ཧͨ͠ΤϥʔΛ࣮૷

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

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

    ύϥϝʔλຖͷSFTPMWFϝιουͰରԠෆཁ 
  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))) }
  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))) } ֶशྔͷه࿥ʹ͸ڭࡐ͕ඞਢͳͷͰ ڭࡐ͕ͳ͍ࢫΤϥʔΛฦ٫
  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))) } ֶशྔͷऴྃʹ͸։࢝ͷઃఆ͕ඞਢͳͷͰ ։͕࢝ઃఆ͞Ε͍ͯͳ͍ࢫΤϥʔΛฦ٫
  77. ΤϥʔΛఆٛ *OUFOUTJOUFOUEFGJOJUJPO ྫɿೖྗ͞Εͨ஋ͰษڧΛه࿥͢Δ 1PTU4UVEZ3FDPSE 3FTQPOTF ύϥϝʔλͷೖྗ஋ͷΈͰ͸൑ఆͰ͖ͳ͍ ΤϥʔΛఆٛ

  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)) } }
  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)) } } ະϩάΠϯͷ৔߹ɺ ϩάΠϯ͔ͯ͠Β࣮ߦͯ͠΄͍͠ࢫΤϥʔΛฦ٫
  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)) } } ϝϞʹ/(ϫʔυؚ͕·Ε͍ͯͨ৔߹ɺ ෆద੾ͳจࣈྻؚ͕·Ε͓ͯΓ౤ߘʹࣦഊͨ͠ࢫ ΤϥʔΛฦ٫
  81. ΞδΣϯμ w 4UVEZQMVTͰϦϦʔεͨ͠ษڧه࿥Λೖྗ͢Δ4JSJ4IPSUDVUT֓ཁ w 4JSJ4IPSUDVUTͰૢ࡞Λड͚෇͚ΔΞΫγϣϯͷબఆ w ର࿩ͷઃܭ w ΞΫγϣϯຖʹೖྗΛड͚෇͚Δύϥϝʔλઃܭ w

    ೖྗ͞ΕͨύϥϝʔλͷΤϥʔॲཧઃܭʴ࣮૷ྫ w ԡ͓͖͍࣮͑ͯͨ͞૷Λ঺հ w ΞΫγϣϯ׬ྃޙɺΞϓϦʹભҠͯ͠΍Γ͍ͨ͜ͱ͕͋Δ৔߹ͷ࣮૷
  82. ΞΫγϣϯ׬ྃޙɺΞϓϦʹભҠ͠ ͯ΍Γ͍ͨ͜ͱ͕͋Δ৔߹ͷ࣮૷

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

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

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

  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) ) }
  87. ΞΫγϣϯ׬ྃϏϡʔλοϓͰΞϓϦىಈ࣌ͷ࣮૷ 4DFOF%FMFHBUFTXJGU ·ͨ͸"QQ%FMFHBUFTXJGU func scene( _ scene: UIScene, continue userActivity:

    NSUserActivity) { // userActivity.activityType͓ΑͼuserInfoΛղੳͯ͠ը໘ભҠ }
  88. ࢀߟ w 4PVQ$IFG αϯϓϧίʔυ  w IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOTJSJLJU TPVQ@DIFG@BDDFMFSBUJOH@BQQ@JOUFSBDUJPOT@XJUI@TIPSUDVUT w 88%$c&NQPXFSZPVSJOUFOUT

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

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

    IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED
  91. Α͍4JSJ4IPSUDVUTରԠΛʂ