古代サンプラーがアプリになるまで

自作のiOS音楽アプリをAndroid対応させたい…… Googleの「Flutter」を使ってみたら簡単さに驚き(3/3 ページ)

コーディングとUI実装が直結

 これまでUIの実装は、Appleのプログラミング言語「Swift」を利用して開発していた。ストーリーボードでUIを構築したら、そこに該当するコードを連結させるという作業が発生していた。しかし、Flutterは、コードを書いたら、そのままUIの要素に反映させることができる。この辺りが省力化のポイントだと思う。

 Apple自身も「Swift UI」という、最小限のコードの記述でUIを簡単に実装するフレームワークを提供しているが、残念ながらAndroidには対応していない。

 ただ、注意して欲しいのは、音を扱う領域のプログラムは、従来通り各プラットフォームのネイティブコードで記述しているという点だ。つまり、発音部分のプログラミングは従来通り、iOSはSwift、AndroidはKotlinで構築し、さらに音源エンジンはC言語で実装している。今回は、UIが絡む部分だけFlutterで構築したことになる。

 さらに、The Manetronでは、Appleのオーディオ機能「Audio Units(AUv3)」に対応させる必要があるため、その部分のUIは従来通りSwiftで記述した。つまり、UI周辺の実装についていうと、iOSとAndroid用にFlutterで1回、AUv3用にSwiftで1回と、合計2回記述したことになる。

 AUv3のUIもFlutterで記述することは可能かもしれないが、変則的なアプローチが必要になることから、今回は素直にSwiftで記述した方が早いと判断した。

photo AUv3の開発をXcodeで実施中の図。.storyboardと.swiftを開いている

起動時にレイテンシーに関するアラート

 The Manetronのレイテンシーは現状、約100ミリ秒だが、なんとか許容できるレベルにある。メロトロンのようにコードを中心に弾く鍵盤楽器であれば、約100ミリ秒の遅れは演奏者が脳内で補正しながら対応可能だ。

 ただ、Amazonの「Fireタブレット」のように、とても耐えられないレベルのレイテンシーが発生する端末もある。そのような端末からGoogle Play にアクセスしても、アプリを見えなくする仕組みはあるが、今回はその仕組みを利用しないで、起動時にレイテンシーに関するアラートを出すようにした。

photo 初めて起動する際に表示される、遅い端末向けのレイテンシー警告

 全てではないが、今後、開発する楽器アプリもFlutterの活用が可能だと思う。Flutterには、たくさんのプラグインが用意されている点も有利だ。さまざまな機能を付加するプラグインを利用することで、マルチプラットフォーム対応の省力化が実現する。例えば、位置情報を取りたければ「Location」「Flutter」で検索するとさまざまなプラグインが見つかる。

 The Manetronに関しては、iOS版はApp Store、Android版はGoogle Playからリリースされているので、Flutterで開発したマルチプラットフォーム対応の楽器アプリの現実をぜひ体感してほしい。

著者プロフィール

山崎潤一郎

音楽制作業の傍らライターとしても活動。クラシックジャンルを中心に、多数のアルバム制作に携わる。Pure Sound Dogレコード主宰。ライターとしては、講談社、KADOKAWA、ソフトバンククリエイティブなどから多数の著書を上梓している。また、鍵盤楽器アプリ「Super Manetron」「Pocket Organ C3B3」「Alina String Ensemble」などの開発者。音楽趣味はプログレ。Twitter ID: @yamasakiTesla

印刷する
SNSでシェア
SpecialPR

古代サンプラーがアプリになるまで

アナログのサンプラー、古代のサンプラーなどと表現される「メロトロン」という不思議な魅力を放つ鍵盤楽器があります。メロトロンを「マネ」したiOSアプリ「マネトロン」の開発者である山崎潤一郎がメロトロン愛を炸裂させます。その行く末は……。

この連載の記事をもっと見る

この記事の著者

関連記事

こんなメディアも見られています

ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。

メールマガジンを配信中
メールマガジンを配信中

国内外の業界動向、AIやクラウドなどの最新技術、キャリア情報など今知りたい情報をまとめてお届けします。

いますぐご登録

本日の新着記事

アクセスランキング

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10

ITmedia NEWS SNS

X @itmedia_newsをフォロー

インフォメーション

ITmediaNEWSをフォロー

あなたにおすすめの記事PR