はじめに
SwiftUIで、音を扱うことができるフレームワークである 『AVFoundation』 を利用してアプリ上で音を鳴らす方法について学習したので、内容をまとめます。
環境
【Xcode】16.2
【iOS】18.2
【macOS】Sequoia 15.3.1
AVFoundationとは
Appleが提供するフレームワークの一つで、音声や動画の再生、録音、編集、ストリーミングなど、メディアコンテンツを扱うための機能を提供します。主に、iOSやmacOSアプリで音声・映像の処理を行う際に使用されます。
AVFoundationを使って音を鳴らす処理を実装する流れ
- Assets.xcassetsに、使用する音源ファイルを取り込む。
- 音を鳴らすためのプログラムを記述するファイル(SoundPlayer.swift)を作成する。
- SoundPlayer.swiftで 『AVFoundation』 を読み込む。
- 音源データの読み込みとプレイヤーを宣言し、音を鳴らす処理を記述する。
- 音を鳴らす処理を実装したいファイル(ContentView.swift)で、音を鳴らす処理を呼ぶ。
実装方法
1.Assets.xcassetsに、使用する音源ファイルを取り込む。
Assets.xcassetsのフォルダに、使用する音源ファイルをドラッグ&ドロップで取り込みます。
ここではcymbalSoundという音源ファイルを取り込んでいます。
2.音を鳴らすためのプログラムを記述するファイル(SoundPlayer.swift)を作成する。
SwiftUIでは、画面を表示する部品と音などのプログラムを分けて作る必要があるので、新しく「SoundPlayer.swift」というファイルを作成します。
command + N のショートカットキーで、新しいファイルを作成することができます。
テンプレートは Cocoa Touch Class を選択します。
3.SoundPlayer.swiftで 『AVFoundation』 を読み込む。
音を扱うことができるフレームワークである 『AVFoundation』 を、
import AVFoundation
で読み込みます。
4.音源データの読み込みとプレイヤーを宣言し、音を鳴らす処理を記述する。
まず、定数cymbalDataに音源データを格納します。
NSDataAssetが、Assets.xcassets内のファイルや画像を管理しているクラスです。
取り込んだ音源ファイル名(ここではcymbalSound)を指定し、ファイルの内容を取得します。
データは確実に存在しているため、「!」で強制アンラップしています。
続いて、AVAudioPlayerを利用して、シンバルを鳴らすインスタンス変数を用意しています。
AVAudioPlayer は音源ファイルを再生できるようにする機能です。
5.音を鳴らす処理を実装したいファイル(ContentView.Swift)で、音を鳴らす処理を呼ぶ。
ContentView.swift内でSoundPlayerを実行できるよう、
let soundPlayer = SoundPlayer()
でインスタンス変数を用意します。
"シンバル"というボタンを押したらシンバルの音が鳴るように処理を実装します。
soundPlayer.cymbalPlay()
と記述することで、SoundPlayer内のcymbalPlay()を実行します。
まとめ
・AVFoundationは、音声や動画の再生、録音、編集、ストリーミングなど、メディアコンテンツを扱うための機能を提供するフレームワーク。
・画面を表示する部品と音などのプログラムは、ファイルを分けて作成する。
・import AVFoundationでAVFoundationフレームワークを読み込む。