4.8 KiB
プロジェクト名:音楽流通プラットフォームとしての、音楽プログラミング言語向けパッケージマネージャの開発
合計5~10ページ以内
プロジェクトの背景、目的、目標
このプロジェクトは申請者が2019年度未踏IT人材発掘・育成事業で開発した音楽プログラミング言語mimiumを、さらなる社会実装のために機能拡張するものである。
今回実装するのは、この言語向けのパッケージマネージャ、すなわちネットワークを介してユーザーがコードを交換できる仕組みである。パッケージマネージャは一般的に、ライブラリのバージョン管理などを目的として設計されるが、本プロジェクトでは、パッケージマネージャの役割を拡大解釈して、コードで生成される音楽を流通させるためのインフラストラクチャとして機能することを目指す。
パッケージマネージャは以下のようなエコシステムで構成される。
まず、Node.jsにおけるnpmなどと同じように、ソースコードを管理、配布するためのサーバー、レジストリが存在する。レジストリには、複数のパブリッシャーがアカウントを登録し、ソースコードをアップロード、公開する。公開名義は、個々のパブリッシャーにすることも可能だが、複数のパブリッシャーをグループ化した、パブリッシャーグループ名義で公開もできる。
このレジストリ、パブリッシャー、パブリッシャーグループは、既存の音楽流通エコシステムにおける、レコード会社、ミュージシャン、レーベルというアナロジーで捉えることができる。
ソースコードはサーバ上でGit LFSを用いてバージョン管理される。
バージョン同士の依存関係は、npmやRustにおけるCargoのように、依存ライブラリおよびそのバージョンの宣言を設定ファイルに書き込み、ビルド時に自動でロックファイルが生成される。
開発に関する未踏性の主張、期待される効果など
従来の音楽プログラミング言語においては、そもそもパッケージマネージャが存在しない言語も多く、存在しているものとしても、Maxのパッケージマネージャ、Pure Dataのdeken、SuperColliderのQuarks、ChucKのパッケージマネージャなどが存在するが、いずれも目的はライブラリの管理であり、その言語を使って作られた音楽はライブ演奏か録音して配布することが主である。
音楽をプログラムとして流通、配布するアイデアとしては、CSoundを発展させたMPEG-Structure Audioとして規格化されたSAOLなどが古くから存在するものの、広くは普及しなかった。2000年代には、黎明期のTwitterで、SuperColliderを用いて140文字以内で音楽を作り投稿する#SC140といったムーブメントなどがあったが、より大規模な音楽配布として発展することはなかった。
今回提案するmimium言語では、これら既存の取り組みと比較して、言語が強く形式化されていることで、多くのプリミティブな機能(オシレーターやフィルターなど)をmimium言語上で定義でき、CやC++などネイティブバイナリのライブラリへの依存が少なく、パッケージマネージャを用いた音楽配布に適した設計になっている。また、WebAsssemblyを通じたWeb上での実行も実現しており、ポータビリティも高い。
開発の具体的な進め方
提案者の実力・能力を示す実績(スキル・経験・受賞歴等)及びそれに基づくプロジェクトの実現性
提案者は、2019年度の未踏IT人材育成・発掘事業で本提案の基となるmimium言語を開発しており、スーパークリエータ認定を受けている。また事業終了後も継続してmimiumの開発を続け、ACM SIGPLAN FARMや、情報処理学会プログラミングシンポジウムなどで論文発表を行い、後者では山内奨励賞を受賞している。
音楽向けのプログラミング言語の開発には、言語設計およびオーディオプログラミングという異なる2つのドメイン知識が求められ、世界的にもこれを専門とする研究者の数は非常に限られている。