Slide 1

Slide 1 text

Kyome αΠϘ΢ζϞόΠϧ Meetup in େࡕ 2023/06/16 Accelerate.vDSPͱSwift ChartsͰͿ্͕ͪΖ͏ʂ Mobile Meetup

Slide 2

Slide 2 text

#cybozu_mobile ࣗݾ঺հ IUUQTLZPNFJP ,ZPNF ,ZPNFTVLF CybozuͰkintoneϞόΠϧͷiOSΛ୲౰ ۀ຿ޮ཰Խ΍OSSϥΠϒϥϦͷ։ൃӡ༻ʹੵۃత झຯͰmacOS޲͚ͷϢʔςΟϦςΟΞϓϦ։ൃ

Slide 3

Slide 3 text

#cybozu_mobile Audio Visualizer 🎵

Slide 4

Slide 4 text

#cybozu_mobile Audio Visualizer 🎵 ԻΛՄࢹԽ͢Δ΍ͭ Χοί͍͍ʂʂ

Slide 5

Slide 5 text

#cybozu_mobile Audio Visualizer 🎵 ԻΛՄࢹԽ͢Δ΍ͭ Χοί͍͍ʂʂ ࡞ͬͯΈΑ͏🔨

Slide 6

Slide 6 text

#cybozu_mobile ࣮૷ͷํ਑

Slide 7

Slide 7 text

#cybozu_mobile 1. ϛϡʔδοΫΞϓϦ͔ΒۂͷϦετΛऔಘ 2. ۂͷ࠶ੜ࣌ʹԻݯσʔλΛऔಘͯ͠దٓՃ޻ 3. ԻݯσʔλΛجʹ SwiftUI Ͱ Audio Visualizer Λදࣔ ࣮૷ํ਑

Slide 8

Slide 8 text

#cybozu_mobile MediaPlayer Framework Λ࢖͏ MPMediaLibrary.requestAuthorization() ͰϛϡʔδοΫΞϓϦͷ
 ϥΠϒϥϦ΁ͷΞΫηεΛཁٻͰ͖Δ Info.plist ʹ NSAppleMusicUsageDescription Λهड़͢Δඞཁ͕͋Δ MPMediaQuery.songs().items ͰۂҰཡΛऔಘͰ͖Δ λΠτϧɺΞʔτϫʔΫɺԻݯϑΝΠϧͷύεͳͲ͕ೖखՄೳ ࣮૷ํ਑ɿϛϡʔδοΫΞϓϦ͔ΒۂͷϦετΛऔಘ

Slide 9

Slide 9 text

#cybozu_mobile ࣮૷ํ਑ɿۂͷ࠶ੜ࣌ʹԻݯσʔλΛऔಘͯ͠దٓՃ޻ ۂ͸ AVFoundation Framework ͷ AVAudioPlayerNode() Ͱ࠶ੜ͢Δ Իݯσʔλ͸ AVAudioNode.installTap(onBus: bu ff erSize: format: ) Ͱ
 AVAudioPCMBu ff er ΛऔಘͰ͖Δ Accelerate Framework ͷ vDSP Λར༻ͯ͠ৼ෯εϖΫτϧ΍
 RMSʢԻͷฏۉΤωϧΪʔʣΛࢉग़͢Δ ৼ෯εϖΫτϧΛಘΔʹ͸ FFTʢߴ଎ϑʔϦΤม׵ʣΛߦ͏

Slide 10

Slide 10 text

#cybozu_mobile ࣮૷ํ਑ɿۂͷ࠶ੜ࣌ʹԻݯσʔλΛऔಘͯ͠దٓՃ޻ ۂ͸ AVFoundation Framework ͷ AVAudioPlayerNode() Ͱ࠶ੜ͢Δ Իݯσʔλ͸ AVAudioNode.installTap(onBus: bu ff erSize: format: ) Ͱ
 AVAudioPCMBu ff er ΛऔಘͰ͖Δ Accelerate Framework ͷ vDSP Λར༻ͯ͠ৼ෯εϖΫτϧ΍
 RMSʢԻͷฏۉΤωϧΪʔʣΛࢉग़͢Δ ৼ෯εϖΫτϧΛಘΔʹ͸ FFTʢߴ଎ϑʔϦΤม׵ʣΛߦ͏ ਺ֶྗ͕ඞཁ 📐

Slide 11

Slide 11 text

#cybozu_mobile ࣮૷ํ਑ɿԻݯσʔλΛجʹ SwiftUI Ͱ Audio Visualizer Λදࣔ iOS 16͔Β࢖͑Δ Charts Framework Λ׆༻͢Δ ંΕઢάϥϑɺ๮άϥϑɺࢄ෍ਤΛར༻͢Δ ࢄ෍ਤͰ͸ɺChartSymbolShape ʹ४ڌͨࣗ͠༝ͳਤܗΛࢦఆͨ͠࠲ඪʹ ϓϩοτͰ͖Δʢˡͱʹ͔͘ڧྗɻແݶͷՄೳੑΛײ͡Δʣ Charts ొ৔Ҏલ͸ Path ΍ Canvas (GraphicsContext) Λར༻ͯ͠
 άϥϑΛࣗલ࣮૷͠ͳ͍ͱ͍͚ͳ͔ͬͨͷͰศརʹͳͬͨ

Slide 12

Slide 12 text

#cybozu_mobile σϞ

Slide 13

Slide 13 text

#cybozu_mobile σϞ Source: https://github.com/Kyome22/ShootingStar.git

Slide 14

Slide 14 text

#cybozu_mobile গ͠ղઆ LineMark Λ༻͍ͨγϯϓϧͳંΕઢάϥϑ .foregroundStyle() Ͱ .linearGradient() Λࢦఆ ͢Δͱάϥσʔγϣϯ෇͖ͷંΕઢάϥϑ ʹͳͬͯΧοί͍͍ Source: https://github.com/Kyome22/ShootingStar.git

Slide 15

Slide 15 text

#cybozu_mobile গ͠ղઆ BarMark Λ༻͍ͨ๮άϥϑ BarMark ͷ stacking Λ .center ʹ͢Δͱ
 ઢରশͳάϥϑΛඳ͚Δ Source: https://github.com/Kyome22/ShootingStar.git

Slide 16

Slide 16 text

#cybozu_mobile গ͠ղઆ ๮άϥϑʹݟ͑Δ͔΋͠Εͳ͍͕ɺ
 ͜Ε͸ࢄ෍ਤ Prot ͱ PointMark Λ࢖༻ͯ͠؀ঢ়ʹ௕ํܗ
 ͷج఺Λ഑ஔ͢Δ ֤௕ํܗ͸֯౓ͱ௕͞ΛมߋͰ͖ΔΑ͏ʹ
 ͓ͯ͘͠ தԝͷԁ͸RMSʹ߹Θͤͯ scaleE ff ect Ͱ
 େ͖͞ΛมԽ͍ͤͯ͞ΔʢάϥϑͰ͸ͳ͍ʣ Source: https://github.com/Kyome22/ShootingStar.git

Slide 17

Slide 17 text

#cybozu_mobile Thank you!