このページでは、初音ミク「マジカルミライ 2025」で開催されるプログラミング・コンテストについて紹介しています。
プログラミングの力で創作文化に参加しましょう!
TextAlive App API は音楽に合わせてタイミングよく歌詞が動くWebアプリケーション(リリックアプリ)を開発できるJavaScript用のライブラリです。初音ミク「マジカルミライ 2025」では、このAPIを使って、『初音ミク「マジカルミライ 2025」楽曲コンテスト』の受賞作品にあわせて魅力的に動くリリックアプリをプログラミングするコンテストが開催されます。
このプログラミング・コンテストは、今年で6度目の開催となります。2020年、2021年、2022年、2023年、そして昨年のサポートページや入選作品、サンプルコードを、ぜひご覧ください。
応募方法やリリックアプリの作り方の概要は、YouTube動画「TextAlive App API講座」をご覧ください。なお、応募のスケジュールや、応募のきまりについては、昨年より更新されているため、必ず公式サイトをご覧ください。
このページ下部の「作品応募に向けて」もぜひ参考にしてみてください。
TextAlive App API を使うと、Web上で公開されている楽曲と歌詞を利用して、タイミングよく歌詞が動くWebアプリケーションを開発できます。楽曲と歌詞はいずれもURLが TextAlive サービスサイトに登録されている必要がありますが、コンテスト参加者のみなさまは心配ご無用です。
コンテストの対象となる課題曲は 6 曲とも TextAlive への登録が済んでおり、API上で楽曲のURL(ピアプロまたはYouTubeのURLです)を指定すれば、それと紐づいた歌詞(いずれもピアプロのURLです)が自動的に読み込まれるので、すぐに演出をプログラミングできます。
APIを使うと、例えば次のようなリリックアプリが作れます。
次の作例では、HTML/CSS/JSのリンクをクリックするとソースコードを見ることができます。「EDIT ON CODEPEN」をクリックすると、ソースコードを編集できます。(スマートフォンでは動作しないので、パソコンで試してみてください。) もっと作例を見たいときは「サンプルコード」をご覧ください。
TextAlive App API は script
タグでWebサイトに読み込んだり、 npm パッケージ textalive-app-api
をインストールすることで使えるようになります。 API の呼び出しには「開発者登録」 で入手できるアプリトークンが必要となります。詳しい使い方は「TextAlive App API チュートリアル」をご覧ください。
TextAlive App APIについて技術的に分からないことやバグ報告などがあれば、GitHub Issuesまでお願いいたします。
<script src="https://unpkg.com/axios/dist/axios.min.js"></script><script src="https://unpkg.com/textalive-app-api/dist/index.js"></script><script>const { Player } = TextAliveApp;</script>
npm install textalive-app-api
import { Player } from "textalive-app-api";
プログラミング・コンテストはクリプトン・フューチャー・メディア株式会社が主催し、産業技術総合研究所(産総研) RecMusプロジェクトが協力しています。基本的な情報やお問い合わせ先は 公式サイト をご覧ください。ここでは、作品応募に向けて、技術面でのポイントをご紹介します。
プログラミング・コンテストへ作品を応募するには、作品のソースコードをソーシャルコーディングプラットフォーム「 GitHub」上にアップロードする必要があります。また、主催者による審査が終わるまで他の人に作品のソースコードが見られないようにするため、「プライベートリポジトリ」を作成する必要があります。
詳しい方法は Web 検索 で見つかるチュートリアルを参考にしてみてください。
主催者による審査は、 GitHubからダウンロードしたソースコードを実際のWebアプリケーションとして動作させて行われます。また、入選作品は主催者のWebサーバなどに配置され、一般に公開されてユーザ投票が行われ、入賞を競うことになります。
こうしたことから、今回、応募作品はHTTPサーバ上に設置するだけで動作する静的アプリケーションに限られています。
しかしながら、一般的なWebブラウザで動作するものであればよいので、さまざまなライブラリと組み合わせて開発して構いません。例えば、three.js、PixiJS、p5jsのように、映像演出に便利なライブラリは凝ったことをしようとすればほとんど必須かもしれません。
ネットワーク接続を前提としてよいので、Web APIの類を活用してもよいでしょう。Web標準に則ってデバイスのハードウェアを活用するAPIを使っても面白いかもしれません。
応募フォームに記入できるアピールはプレーンテキストのみで情報量が限られていますが、リポジトリに配置できるREADMEは自由に編集可能で、画像ファイルを貼り込んだりすることもできます。
サンプルコードのREADME のようにWebアプリケーションのビルド、実行手順を書くことはもちろん必要ですが、開発した作品の魅力をアピールできるチャンスとしても、ぜひ活用してください。
審査に際しては極力READMEファイルなどを見ながらWebアプリケーションを応募者の意図通り動作させようと試みますが、それでも応募者の環境で動いていたものが動かなくなってしまうことはありえます。
そのような場合の保険として、また、作品のアピールのため、応募時にはWebアプリケーションを設置したサイトのURLとデモ動画のURLを入力することをおすすめします。 動画撮影には、macOSの標準機能やWindowsの標準機能が使えます。詳しくは Webで検索 してみてください。
なお、審査自体は原則として作品そのものを対象として行われるため、デモアプリやデモ動画のURL入力は必須ではありませんのでご注意ください。
審査対象の楽曲は、Webアプリケーションの中で以下のように読み込むことができます。楽曲URLとして、 https://piapro.jp/t/曲ID
のような短いものではなく、最後の数字まで含めた https://piapro.jp/t/曲ID/数字
の形式でないと正しく読み込めないことにご注意ください。また、歌詞タイミングやサビのタイミング(音楽地図)が固定されるようにバージョン番号を指定しておいてください。
バージョン番号を使った音楽地図の固定について詳しくは チュートリアル「楽曲情報の活用」ページのTips をご覧ください。
player.addListener({onAppReady: (app) => {if (!app.managed) {// ストリートライト / 加賀(ネギシャワーP)player.createFromSongUrl("https://piapro.jp/t/ULcJ/20250205120202", {video: {// 音楽地図訂正履歴beatId: 4694275,chordId: 2830730,repetitiveSegmentId: 2946478,// 歌詞URL: https://piapro.jp/t/DPXV// 歌詞タイミング訂正履歴: https://textalive.jp/lyrics/piapro.jp%2Ft%2FULcJ%2F20250205120202lyricId: 67810,lyricDiffId: 20654},});// アリフレーション / 雨良 Amala// player.createFromSongUrl("https://piapro.jp/t/SuQO/20250127235813", {// video: {// // 音楽地図訂正履歴// beatId: 4694276,// chordId: 2830731,// repetitiveSegmentId: 2946479,//// // 歌詞URL: https://piapro.jp/t/GbYz// // 歌詞タイミング訂正履歴: https://textalive.jp/lyrics/piapro.jp%2Ft%2FSuQO%2F20250127235813// lyricId: 67811,// lyricDiffId: 20655// },// });// インフォーマルダイブ / 99piano// player.createFromSongUrl("https://piapro.jp/t/Ppc9/20241224135843", {// video: {// // 音楽地図訂正履歴// beatId: 4694277,// chordId: 2830732,// repetitiveSegmentId: 2946480,//// // 歌詞URL: https://piapro.jp/t/77V2// // 歌詞タイミング訂正履歴: https://textalive.jp/lyrics/piapro.jp%2Ft%2FPpc9%2F20241224135843// lyricId: 67812,// lyricDiffId: 20656// },// });// ハロー、フェルミ。 / ど~ぱみん// player.createFromSongUrl("https://piapro.jp/t/oTaJ/20250204234235", {// video: {// // 音楽地図訂正履歴// beatId: 4694278,// chordId: 2830733,// repetitiveSegmentId: 2946481,//// // 歌詞URL: https://piapro.jp/t/lbO1// // 歌詞タイミング訂正履歴: https://textalive.jp/lyrics/piapro.jp%2Ft%2FoTaJ%2F20250204234235// lyricId: 67813,// lyricDiffId: 20657// },// });// パレードレコード / きさら// player.createFromSongUrl("https://piapro.jp/t/GCgy/20250202202635", {// video: {// // 音楽地図訂正履歴// beatId: 4694279,// chordId: 2830734,// repetitiveSegmentId: 2946482,//// // 歌詞URL: https://piapro.jp/t/FJ5N// // 歌詞タイミング訂正履歴: https://textalive.jp/lyrics/piapro.jp%2Ft%2FGCgy%2F20250202202635// lyricId: 67814,// lyricDiffId: 20658// },// });// ロンリーラン / 海風太陽// player.createFromSongUrl("https://piapro.jp/t/CyPO/20250128183915", {// video: {// // 音楽地図訂正履歴// beatId: 4694280,// chordId: 2830735,// repetitiveSegmentId: 2946483,//// // 歌詞URL: https://piapro.jp/t/jn89// // 歌詞タイミング訂正履歴: https://textalive.jp/lyrics/piapro.jp%2Ft%2FCyPO%2F20250128183915// lyricId: 67815,// lyricDiffId: 20659// },// });}}});
TextAliveは、産業技術総合研究所メディアインタラクション研究グループが研究開発しています。学術研究目的で公開しながら実証実験中です。本研究の一部は、JST CREST (JPMJCR20D4; RecMusプロジェクト) の支援を受けています。
本研究はWeb上にコンテンツを公開されている多くの方々によってはじめて可能になったプロジェクトであり、Webを前提としたコンテンツ制作の可能性を追求しています。