このページの本文へ

Swift Playgroundsで学ぶiOSプログラミング第55回

AVKitの下層にあるAV Foundationを直接扱う

再生速度可変のオーディオプレーヤーを作る

2017年09月25日 17時00分更新

文● 柴田文彦 編集●吉田ヒロ

  • この記事をはてなブックマークに追加
  • 本文印刷

 今回からまた新しいテーマでプログラミングを続けていきます。前回の最後に書いた今回の予告では、iOSのフレームワークの中の「なんとかキット」を使うことをほのめかしました。しかし厳密に言うと、それは少し訂正しなければなりません。今回使うのは「キット」と呼ばれるものではなく、それよりも下層にある「ファンデーション」と呼ばれるものだからです。

 今回は、音声ファイルを読み込んで再生するオーディオプレーヤーを作るつもりです。そのための方法は何とおりも考えられます。その中で比較的上位の層にあるのがAVKitを使う方法です。名前としては、これまでに使ってきたさまざまなフレームワークと似ていてなじみのあるものかもしれません。一方、比較的下位の層にあるのがAV Foundationです。Foundation(基礎)というだけあって下層にあるのですが、プログラミングの作法が、これまでと比べてそれほど異なるわけではありません。

iOSのオーディオ/ビデオ関係のフレームワークの階層構造。今回は「なんとかキット」の一種のAVKitではなく、その下の方にあるAV Foundationを使います

 フレームワークというものは、概して上層にあるほど機能が豊富でプログラミングは楽ですが、カスタマイズはしにくく、融通が効きにくくなります。反対に下層のものほど自由度は高くなりますが、それだけプログラミングとしてやらなければならないことは多くなるものです。今回は、この連載にとってちょうどいいレベルとして、AV Foundationを選んだというわけです。

オーディオを再生する最小限のプログラム

 AV Foundationを使うことに決めたとしても、それを実際に利用してプログラミングする際のアプローチはいろいろと考えられます。また、当然ながら、AV Foundationの持っている機能をどこまで引き出すかによっても、プログラミングの難易度は変わってきます。

 手はじめに、オーディオファイルを読み込んで再生するための最小限のプログラムを書いてみましょう。使うのは、AVFoundationに含まれるAVAudioPlayerクラスです。とりあえずUIはなしで、プログラムが起動するとソースコードで指定したファイルを読み込んで再生を開始するというものです。

プレイグラウンドに追加した音声ファイル(ここでは「DayTripper.m4a」)を読み込んで再生するだけの最小限のプログラムです。音声ファイルは、お好きなものをあらかじめMacからiCloudドライブ経由でプレイグラウンドに読み込んでおいてください

 オーディオファイルのフォーマットは、iOSで普通に扱えるようなものなら大丈夫でしょう。MacのiTunesライブラリから、iCloundドライブ経由で、プレイグラウンドに追加しておくのが最も簡単です。このプログラムは、ビューコントローラーを使わないので、プレイグラウンドで音を出すために、ちょっとしたおまじないが必要です。以前にネットワークアクセスでも使った、プレイグラウンドのページのneedsIndefiniteExecutionというプロパティをtrueに設定する必要があるのです。

 当然ですが、こんな簡単なプログラムでも、iOSの「ミュージック」アプリと同等の音質で再生できます。

この連載の記事

週間ランキングTOP5

ASCII倶楽部会員によく見られてる記事はコレだ!

ASCII倶楽部の新着記事

会員専用動画の紹介も!