これまで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で記述した方が早いと判断した。
The Manetronのレイテンシーは現状、約100ミリ秒だが、なんとか許容できるレベルにある。メロトロンのようにコードを中心に弾く鍵盤楽器であれば、約100ミリ秒の遅れは演奏者が脳内で補正しながら対応可能だ。
ただ、Amazonの「Fireタブレット」のように、とても耐えられないレベルのレイテンシーが発生する端末もある。そのような端末からGoogle Play にアクセスしても、アプリを見えなくする仕組みはあるが、今回はその仕組みを利用しないで、起動時にレイテンシーに関するアラートを出すようにした。
全てではないが、今後、開発する楽器アプリも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
Copyright © ITmedia, Inc. All Rights Reserved.
Special
PR