初音ミク「マジカルミライ 2020」

初音ミク「マジカルミライ 2020」 プログラミング・コンテスト
イベント紹介ページ

Art by 藤ちょこ © CFM

このページでは、初音ミク「マジカルミライ」史上初めて開催されたプログラミング・コンテストについて紹介しています。コンテストでは、TextAlive App APIを使って開発したリリックアプリが募集され、10作品が入選しました。さらにミクナビのユーザー投票を踏まえ、優秀賞と奨励賞3件が決定しました。

応募作品は、その多くがオープンソース公開されています。プログラミングの力で創作文化に参加しましょう!

SNSで共有

プログラミング・コンテスト 応募作品紹介

初音ミク「マジカルミライ 2020」プログラミング・コンテスト 公式サイトには入選10作品のご紹介が掲載されています。こちらでは、一般公開された応募作をすべてご紹介します。ぜひ試してみて、参考にして、新しいリリックアプリを作ってみてください!

プログラミング・コンテストについて

TextAlive App API は 2020/9/18 に一般公開された、音楽に合わせてタイミングよく歌詞が動くWebアプリケーション(リリックアプリ)を開発できるJavaScript用のライブラリです。

初音ミク「マジカルミライ 2020」では、このAPIを使って、マジカルミライ テーマ曲にあわせて魅力的に動く歌詞などの映像演出をプログラミングするコンテストを初めて開催しました!

審査の結果決定した入選作品、入賞作品を紹介するマジカルミライ企画展ステージの模様は、YouTubeでアーカイブ配信されています。ぜひ当日の熱気を体感してみてください。

初音ミク「マジカルミライ 2020」 in OSAKA 企画展ステージ(2020/11/28 13:00-14:00) では、リリックアプリの概要と、応募作全31作品から入選した10作品などをご紹介しました。コンテストの概要紹介は 22:00 から、入選作品の紹介は 26:00 からです。

入選作品紹介ページへ

初音ミク「マジカルミライ 2020」 in TOKYO 企画展ステージ(2020/12/18 15:00-16:00) では、リリックアプリの特徴をかいつまんで紹介し、優秀賞に加え急遽用意した奨励賞3作品などをご紹介しました。コンテストの紹介は 20:00 からです。

入賞作品紹介ページへ

プログラミング・コンテストの参加方法

応募方法や応募のきまり、リリックアプリの作り方の概要は、YouTube動画「リリックアプリ開発ことはじめ」(ニコニコ動画)と公式サイトをご覧ください。

このページ下部の「作品応募に向けて」もぜひ参考にしてみてください。

TextAlive App API でできること

TextAlive App API を使うと、Web上で公開されている楽曲と歌詞を利用して、タイミングよく歌詞が動くWebアプリケーションを開発できます。楽曲と歌詞はいずれもURLが TextAlive サービスサイトに登録されている必要がありますが、コンテスト参加者のみなさまは心配ご無用です。

コンテストの対象となる課題曲は 3 曲とも TextAlive への登録が済んでおり、API上で楽曲のURL(いずれもYouTubeのURLです)を指定すれば、それと紐づいた歌詞(いずれもピアプロのURLです)が自動的に読み込まれるので、すぐに演出をプログラミングできます。

APIを使うと、例えば次のようなリリックアプリが作れます。

2020/10/17 追記
TextAlive App API は2020/9/18の初公開後、何回かバージョンアップされていますが、どのバージョンを使っても構いません。また、コンテスト期間中、致命的なバグが判明した場合以外、破壊的変更は行わない予定です。

2020/10/13 追記
次の作例では、HTML/CSS/JSのリンクをクリックするとソースコードを見ることができます。「EDIT ON CODEPEN」をクリックすると、ソースコードを編集できます。(スマートフォンでは動作しないので、パソコンで試してみてください。) もっと作例を見たいときは「サンプルコード」をご覧ください。

TextAlive App API の使い方

TextAlive App API は script タグでWebサイトに読み込んだり、 npm パッケージ textalive-app-api をインストールすることで使えるようになります。詳しい使い方は「TextAlive App API チュートリアル」をご覧ください。

TextAlive App APIについて技術的に分からないことやバグ報告などがあれば、GitHub IssuesまたはGitter Chatまでお願いいたします。

HTML
<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";

作品応募に向けて

プログラミング・コンテストはクリプトン・フューチャー・メディア株式会社が主催し、産業技術総合研究所(産総研) OngaACCELプロジェクトが協力しています。基本的な情報やお問い合わせ先は 公式サイト をご覧ください。ここでは、作品応募に向けて、技術面でのポイントをご紹介します。

GitHub プライベートリポジトリ

プログラミング・コンテストへ作品を応募するには、作品のソースコードをソーシャルコーディングプラットフォーム「 GitHub」上にアップロードする必要があります。また、主催者による審査が終わるまで他の人に作品のソースコードが見られないようにするため、「プライベートリポジトリ」を作成する必要があります。

詳しい方法は Web 検索 で見つかるチュートリアルを参考にしてみてください。

Webアプリケーション

主催者による審査は、 GitHubからダウンロードしたソースコードを実際のWebアプリケーションとして動作させて行われます。また、入選作品は主催者のWebサーバなどに配置され、一般に公開されてユーザ投票が行われ、入賞を競うことになります。

こうしたことから、今回、応募作品はHTTPサーバ上に設置するだけで動作する静的アプリケーションに限られています。

しかしながら、一般的なWebブラウザで動作するものであればよいので、さまざまなライブラリと組み合わせて開発して構いません。例えば、three.jsPixiJSp5jsのように、映像演出に便利なライブラリは凝ったことをしようとすればほとんど必須かもしれません。

ネットワーク接続を前提としてよいので、Web APIの類を活用してもよいでしょう。Web標準に則ってデバイスのハードウェアを活用するAPIを使っても面白いかもしれません。詳しい条件は今後公式サイトに掲載されるFAQを参照してください。それでも疑問が解消しない場合は、公式サイトに掲載された問い合わせ先にお問い合わせください。

2020/10/13 追記
審査対象の楽曲は、Webアプリケーションの中で以下のように指定しておいてください。(審査希望の楽曲に関する createFromSongUrl メソッド呼び出し部分のコメントを解除してください。)

2020/10/30 追記
createFromSongUrl の第2引数は楽曲に関する情報のバージョン番号を固定するためのもので、必須ではありません。この引数がない場合、審査ではコンテスト応募時点での最新バージョンが使われる予定です。応募者の開発環境での動作と合わせるため、審査時点ではなく応募時点での最新バージョンとしています。バージョンの固定について詳しくは チュートリアル「楽曲情報の活用」ページのTips をご覧ください。

player.addListener({
onAppReady: (app) => {
if (!app.managed) {
// グリーンライツ・セレナーデ / Omoi feat. 初音ミク
// - 初音ミク「マジカルミライ 2018」テーマソング
// - 楽曲: http://www.youtube.com/watch?v=XSLhsjepelI
// - 歌詞: https://piapro.jp/t/61Y2
// player.createFromSongUrl("http://www.youtube.com/watch?v=XSLhsjepelI", {
// video: {
// // 音楽地図訂正履歴: https://songle.jp/songs/1249410/history
// beatId: 3818919,
// chordId: 1207328,
// repetitiveSegmentId: 1942131,
// // 歌詞タイミング訂正履歴: https://textalive.jp/lyrics/www.youtube.com%2Fwatch%3Fv%3DXSLhsjepelI
// lyricId: 50145,
// lyricDiffId: 3168
// }
// });
// ブレス・ユア・ブレス / 和田たけあき feat. 初音ミク
// - 初音ミク「マジカルミライ 2019」テーマソング
// - 楽曲: http://www.youtube.com/watch?v=a-Nf3QUFkOU
// - 歌詞: https://piapro.jp/t/Ytwu
// player.createFromSongUrl("http://www.youtube.com/watch?v=a-Nf3QUFkOU", {
// video: {
// // 音楽地図訂正履歴: https://songle.jp/songs/1688650/history
// beatId: 3818481,
// chordId: 1546157,
// repetitiveSegmentId: 1942135,
// // 歌詞タイミング訂正履歴: https://textalive.jp/lyrics/www.youtube.com%2Fwatch%3Fv=a-Nf3QUFkOU
// lyricId: 50146,
// lyricDiffId: 3143
// }
// });
// 愛されなくても君がいる / ピノキオピー feat. 初音ミク
// - 初音ミク「マジカルミライ 2020」テーマソング
// - 楽曲: http://www.youtube.com/watch?v=ygY2qObZv24
// - 歌詞: https://piapro.jp/t/PLR7
player.createFromSongUrl("http://www.youtube.com/watch?v=ygY2qObZv24", {
video: {
// 音楽地図訂正履歴: https://songle.jp/songs/1977449/history
beatId: 3818852,
chordId: 1955797,
repetitiveSegmentId: 1942043,
// 歌詞タイミング訂正履歴: https://textalive.jp/lyrics/www.youtube.com%2Fwatch%3Fv=ygY2qObZv24
lyricId: 50150,
lyricDiffId: 3158
}
});
}
}
});

READMEファイル

応募フォームに記入できるアピールはプレーンテキストのみで情報量が限られていますが、リポジトリに配置できるREADMEは自由に編集可能で、画像ファイルを貼り込んだりすることもできます。

サンプルコードのREADME のようにWebアプリケーションのビルド、実行手順を書くことはもちろん必要ですが、開発した作品の魅力をアピールできるチャンスとしても、ぜひ活用してください。

デモ動画の撮影と編集

審査に際しては極力READMEファイルなどを見ながらWebアプリケーションを応募者の意図通り動作させようと試みますが、それでも応募者の環境で動いていたものが動かなくなってしまうことはありえます。

そのような場合の保険として、また、作品のアピールのため、応募時にはデモ動画のURLを入力することをおすすめします。 動画撮影には、macOSの標準機能Windows 10の標準機能が使えます。詳しくは Webで検索 してみてください。

なお、審査自体は原則として作品そのものを対象として行われるため、デモ動画のURL入力は必須ではありませんのでご注意ください。

TextAliveについて

TextAliveは、産業技術総合研究所メディアインタラクション研究グループが研究開発しており、学術研究目的で公開しながら実証実験中です。

本研究はWeb上にコンテンツを公開されている多くの方々によってはじめて可能になったプロジェクトであり、Webを前提としたコンテンツ制作の可能性を追求しています。

TextAliveの実証実験として、以下のとおり「初音ミク『マジカルミライ 2020』プログラミング・コンテスト」の企画に協力しています。本研究の一部は、JST ACCEL (JPMJAC1602) の支援を受けています。

主催
クリプトン・フューチャー・メディア株式会社
協力
産業技術総合研究所(産総研) OngaACCELプロジェクト
産総研本企画関係者
加藤 淳(総括・管理・企画・TextAlive開発)
後藤 真孝(総指揮・企画)
お問い合わせ先
textalive-ml [at] aist.go.jp

更新履歴

2020/12/18
2020/10/17
CodePen の作例を掲載しました
2020/10/13
動画「リリックアプリ開発ことはじめ」を掲載しました
2020/09/28
特設ページを公開しました
2020/09/18 11:00