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

マルチプラットフォーム(SwiftUI)ドキュメントアプリ

notoroid
January 27, 2021

 マルチプラットフォーム(SwiftUI)ドキュメントアプリ

2021年1月札幌iPhoneアプリ開発懇談会オンラン勉強会でのプレゼンテーション使用。
Appleのマルチプラットフォームアプリについてマルチプラットフォームとドキュメントアプリの観点から説明。Appleのドキュメントアプリのコアのアイデアが2004年から変わりがないのが難という話。

#SwiftUI #Swift #iOS #iPhoneApp #macOS #macOSApp #iPadOS #iPadApp

notoroid

January 27, 2021
Tweet

More Decks by notoroid

Other Decks in Programming

Transcript

  1. ॆిใࠂ͞Μ #BUUFSFDFJWFS w όοςϦʔϞχλʔ ϢʔςΟϦςΟʔ  w ࠷େ୆ ࣮ػ ϦϞʔτ୆

     w ख࣋ͪͷJ1IPOF͔Βଞʹ͍࣋ͬͯΔ J1IPOF J1BEͳͲͷػثͷόοςϦʔঢ়ଶ֬ ೝՄೳ w ࣗ୐ʹ͋ΔJ1IPOFͷόοςϦʔঢ়ଶ֬ೝՄ ೳ
  2. ॆిใࠂ͞Μ #BUUFSFDFJWFS w "QQMF8BUDIରԠ w $PNQMJDBUJPOTରԠ w ॆి׬ྃ௨஌ w ॆి׬ྃΛ఻͑ͯ͘ΕΔ௨஌Λ௥Ճ

    w ҎԼʹࢦఆ͢Δ͜ͱͰόοςϦʔΛέ Ξ͢Δ͜ͱ͕Մೳ w Կ͔ͱߴ͍J1IPOFΛ௕࣋ͪͤ͞Δͷʹ༗༻
  3. $BUBMZTUͱNVMUJQMBUGPSNᶃ ൃද೥ 4%, JOGPQMJTU $BUBMZTU  6*,JU ͭ J04 NBD04ڞ༗

    NVMUJQMBUGPSN 4XJGU6*  6*,JU"QQ,JU J04 NBD04ͦΕͧΕ
  4. $BUBMZTUͱNVMUJQMBUGPSNᶄ w $BUBMZTU w J1BEΞϓϦΛNBD04্Ͱಈ͔͢͜ͱΛ໨ࢦ͢ w <ܽ఺>$BUBMZTUͰ͸NBD04্Ͱ6*,JUػೳΛݺͼग़͠Ͱͷཹҙ఺͕ଟ͍ w NVMUJQMBUGPSN 4XJGU6*

     w J04NBD04ͰιʔεͰ6*ؚΊڞ༗Ͱ͖Δίʔυ͸͋Δ͕ผΞϓϦ w <ܽ఺>֤ωΠςΟϒ6*ίʔυΛഉআͰ͖͕ͨύϥμΠϜγϑτͷӨڹେ
  5. NVMUJQMBUGPSNରԠGSBNFXPSL w ௨஌ 6TFS/PUJ f i DBUJPO  w "7'BVOEBUJPO

    w $PSF*NBHF $PSF%BUB w 4QSJUF,JU 4DFOF,JU 4JSJ,JU w /4'JMF8SBQQFS w $PNCJOFGSBNFXPSL
  6. 6OJGPSN5ZQF*EFOUJ f i FS w ೥ࡦఆ w %PDVNFOU5ZQFͰࢦఆ͢Δ w 04ʹϑΝΠϧσʔλछผͷ੔ཧͷͨΊʹಋೖ

    w ΞϓϦ͕Πϯετʔϧ͞ΕΔ͜ͱͰϑΝΠϧσʔλఆ͕ٛ૿Ճ w ૿Ճ͢ΔϑΝΠϧσʔλఆٛΛద੾ʹ෼ྨɺࣝผͷͨΊʹࡦఆ
  7. 6OJGPSN5ZQF*EFOUJ f i FS֓ཁ w "QQMFͷϑΝΠϧσʔλఆٛ w ֊૚ߏ଄Ͱ؅ཧ͞Ε͍ͯΔ w ̎छ

    &YQPSUFE5ZQF*EFOUJ f i FSTͱ*NQPSUFE5ZQF*EFOUJ f i FST  w &YQPSUFEʙ͸ΞϓϦಠࣗͷϑΝΠϧσʔλܗࣜΛࢦఆ w *NQPSUFE͸ΞϓϦಠࣗҎ֎ͷϑΝΠϧσʔλܗࣜΛࢦఆ
  8. 6OJGPSN5ZQF*EFOUJ f i FS֓ཁ w "QQMFͷϑΝΠϧσʔλఆٛ w ֊૚ߏ଄Ͱ؅ཧ͞Ε͍ͯΔ w ̎छ

    &YQPSUFE5ZQF*EFOUJ f i FSTͱ*NQPSUFE5ZQF*EFOUJ f i FST  w &YQPSUFEʙ͸ΞϓϦಠࣗͷϑΝΠϧσʔλܗࣜΛࢦఆ w *NQPSUFE͸ΞϓϦಠࣗҎ֎ͷϑΝΠϧσʔλܗࣜΛࢦఆ
  9. %PDVNFOU5ZQFT 65*Tͷ༻్ 04 ΞϓϦ ಛఆͷ֦ுࢠ෇͖ ϑΝΠϧΛ։͖͍ͨ w ϑΝΠϧΛλοϓͨ͠ͱ͖ʹىಈ ͢ΔΞϓϦΛಛఆ͍ͨ͠ w

    ϑΝΠϧ։͚ΔީิΛग़͍ͨ͠ w ϑΝΠϧͷΞΠίϯϓϨϏϡʔ ΞΠίϯΛද͍ࣔͨ͠ w )BOEP f f Մೳ͔  w FUD
  10. %PDVNFOU5ZQFT 65*Tͷ༻్ 04 ΞϓϦ ಛఆͷ֦ுࢠ෇͖ ϑΝΠϧΛ։͖͍ͨ w ϑΝΠϧΛλοϓͨ͠ͱ͖ʹىಈ ͢ΔΞϓϦΛಛఆ͍ͨ͠ w

    ϑΝΠϧ։͚ΔީิΛ;΍͍ͨ͠ w ϑΝΠϧͷΞΠίϯϓϨϏϡʔ ΞΠίϯΛද͍ࣔͨ͠ w FUD 04ͷڍಈ͸ஔ͍͓͍ͯͯ υΩϡϝϯτϑΝΠϧΛ։ ͖͍ͨ
  11. 6OJGPSN5ZQF*EFOUJ f i FSTGSBNFXPSL w NVMUJQMBUGPSNϑϨʔϜϫʔΫ w 4XJGUͷΈରԠ ࣮࣭NVMUJQMBUGPSNͰ͔͠࢖͍ͬͯͳ͍ 

    w υΩϡϝϯτΞϓϦͰѻ͏ϑΝΠϧσʔλఆٛΛࢦఆՄೳ w 65*΍֦ுࢠͰϑΟϧσʔλఆٛࢦఆՄೳ w Α͘࢖͏ϑΝΠϧͷϓϦηοτఆٛ͋Γ w υΩϡϝϯτͰಡΈࠐΈՄೳͳϑΝΠϧσʔλఆٛΛ65*΋͘͠͸ؔ࿈৘ใͰࢦ ఆՄೳ ֦ுࢠͳͲ
  12. υΩϡϝϯτΞϓϦͰಡΈࠐΉϑΝΠϧΛࢦఆ͢Δᶃ import SwiftUI import UniformTypeIdentifiers extension UTType { static var

    exampleText: UTType { UTType(importedAs: "com.example.plain-text") } } struct FooDocumentAppDocument: FileDocument { … // ࢲతܗࣜΛࢦఆ static var readableContentTypes: [UTType] { [.exampleText] } … }
  13. υΩϡϝϯτΞϓϦͰಡΈࠐΉϑΝΠϧΛࢦఆ͢Δᶃ import SwiftUI import UniformTypeIdentifiers extension UTType { static var

    nekonekoDocument: UTType { UTType(importedAs: "com.nekoneko.document") } } struct FooDocumentAppDocument: FileDocument { … // ଘࡏ͠ͳ͍UTI͸ϥϯϥΠϜΤϥʔͱͳΔ static var readableContentTypes: [UTType] { [.nekonekoDocument] } … }
  14.   NBD04 J04 $PSF%BUB $PSF"OJNBUJPO $PSF*NBHF NBD04 NVMUJQMBUGPSN J04

    J1BE04 "7'PVOEBUJPO 4XJGU6* 6TFS/PUJ f i DBUJPOT 4DFOF,JU 4QSJUF,JU 4JSJ,JU 4JSJ,JU "VUJP5PPM#PY 5JHFS -FPQBSE  65*
  15.   NBD04 J04 $PSF%BUB $PSF"OJNBUJPO $PSF*NBHF NBD04 NVMUJQMBUGPSN J04

    J1BE04 "7'PVOEBUJPO 4XJGU6* 6TFS/PUJ f i DBUJPOT 4DFOF,JU 4QSJUF,JU 4JSJ,JU 4JSJ,JU "VUJP5PPM#PY 5JHFS -FPQBSE  65*
  16. w 6OJGPSN5ZQF*EFOUJ f i FS"QQMFެࣜ w IUUQTEFWFMPQFSBQQMFDPNMJCSBSZBSDIJWFEPDVNFOUBUJPO(FOFSBM$PODFQUVBM %FW1FEJB$PDPB$PSF6OJGPSN5ZQF*EFOUJ f i

    FSIUNM w .BD΍J04ͰϑΝΠϧͷछྨΛදࣝ͢ผࢠ6OJGPSN5ZQF*EFOUJ f i FSTΛ֦ுࢠ͔Βௐ΂Δ 4XJGUͰ ߦͰग़དྷΔ OJXBUBLPͷ͸ͯͳϒϩά w IUUQTOJXBUBLPIBUFOBCMPHKQFOUSZ w <J04>ࠓ͔Β͸͡ΊΔυΩϡϝϯτϕʔε"QQ2JJUB w IUUQTRJJUBDPNHBDIBMBUUFJUFNTCBDCFCE w HBDIBMBUUF%PDVNFOU#BTFE"QQ w IUUQTHJUIVCDPNHBDIBMBUUF%PDVNFOU#BTFE"QQ
  17. w $PU& f i UPS w IUUQTHJUIVCDPNDPUFEJUPS$PU&EJUPS w %PDVNFOU1BDLBHFT w

    IUUQTEFWFMPQFSBQQMFDPNMJCSBSZBSDIJWFEPDVNFOUBUJPO$PSF'PVOEBUJPO $PODFQUVBM$'#VOEMFT%PDVNFOU1BDLBHFT%PDVNFOU1BDLBHFTIUNM BQQMF@SFGEPDVJEJ$)48 w 6OJGPSN5ZQF*EFOUJ f i FS$PODFQUT w IUUQTEFWFMPQFSBQQMFDPNMJCSBSZBSDIJWFEPDVNFOUBUJPO'JMF.BOBHFNFOU $PODFQUVBMVOEFSTUBOEJOH@VUJTVOEFSTUBOE@VUJT@DPODVOEFSTUBOE@VUJT@DPODIUNM