はじめに
こんにちは、Java版「あの楽器」ソフトウェア「AnoJ」を作っていた「なっと」こと NAT です。 今まで作者であることは言わないでいましたが、私が「AnoJ」を作っていました。
今まで、なんとなく作者不詳にしておいた方が良いかなと思い、ニコ動のプロフィールもほとんど書かず、自分のTwitterアカウントなどでも特に言及することはありませんでした。
しかしAnoJ配布所として使っていたYahoo!ジオシティーズが終了してしまうので、作者だと名乗って、自分のサイトに移すことにしました。
AnoJの作者だと名乗るなら、ついでにAnoJ開発にまつわる思い出や歴史も書き残しておこうと書いたのが、この記事です。
六千文字以上の非常に長い文章になっておりますので、お時間と興味がある方は読んで頂ければと思います。
Java版「あの楽器」ソフトウェア「AnoJ」とは
「あの楽器」とは、初音ミクに関係する架空の楽器です。
2007年12月にKazuPさんが作られた曲「Innocence」を元に、2008年12月8日にkellowさんが公開した3DPVの中で、初音ミクが弾いてる楽器です。
同じく2008年の12月24日に「あの楽器」作成をお願いするこの動画をきっかけに、ニコニコ動画に技術系の動画を投稿しているニコニコ技術部では、この架空の楽器である「あの楽器」を実現すべく、開発が進められています。
あの楽器とは (アノガッキとは) [単語記事] - ニコニコ大百科
「あの楽器」ソフトウェア「AnoJ」とは、パソコンの上で「あの楽器」を再現するためのソフトウェアです。Java技術を使って作られており、WindowsでもMacでも動作します。私は試したことは無いですが、Linuxでも動いたという報告もありました。
「あの楽器」作成をお願いする動画を見た後に開発を始め、2009年1月4日に最初のバージョンの紹介動画を公開しました。
後に、「あの楽器」ソフトウェアのJava版ということで、「AnoJ」と名付けました。
その後、実質的には2010年8月31日までの約1年8ヶ月間、開発を続けていました。その後も、関連動画を上げたり、細かい機能を追加したりはしましたが、継続的に開発してたのは2010年まででした。
AnoJを作ったきっかけ
AnoJを作ったきっかけは、最初に紹介しましたが、「あの楽器」作成をお願いするこの動画でした。
2DのCGでアニメーションを表示するJavaプログラムは作った事があったので、このエフェクトアニメーションなら作れそう。そして、JavaにはMIDIを操作するAPIがあるので、それを使えば音も出せそう。ならば、あの楽器をソフトウェアで再現できそうと思いついたのが、始まりです。
そしてなにより、Innocenceも3DPVも好きなので、なにか自分の力で貢献したいと思ったのがきっかけです。
当時は既に初音ミクの楽曲が好きで聞いていたし、初音ミクの公式ライブ「ミクFES’09(夏)」にも参加して、初音ミク凄いのでは?と感じていた頃でした。この初音ミクのムーブメントに、プログラムが作れるという自分のスキルで参加できるのもまた、嬉しく感じたところでもありました。
そして、当時のニコニコ動画の雰囲気も、作るのを後押ししました。今でも残っていますが、多少つたなくても、自分の手を動かして面白いものを作って、みんなで面白いものには乗っかっていく雰囲気があったので、作ったものを発表しやすかったというのもあります。
開発した機能
最初は、「あの楽器」のディスプレイの幾何学的なアニメーションが作りたかったので、アニメーションが再現できただけでも楽しかったです。 途中から「あの楽器」実現のための部品というコンセプトになり、色々と機能を追加していきました。
また、AnoJを使った「演奏してみた」動画を作るために開発した機能もあって、紙芝居機能やリプレイ機能は、そのために作ったようなものです。
以下、機能の一覧です。我ながらたくさん作り込んだものです(笑)。
演奏機能
- 対応音源で音出力
- ピッチベンド/モジュレーション
- ベロシティ制御
- オクターブ変更
- トランスポーズ
- プログラム番号変更(音色変更)
- MIDIチャンネル変更
- MIDIファイル自動演奏
- リプレイ(演奏の記録と再生)
- あてぶり機能(適当に弾いても事前に打ち込んだ音階通りに音が出る)
- あてぶり機能のMIDIファイル読み込み対応
- あてぶり機能の和音対応
画面機能
- エフェクトアニメーション
- ネギ振り(ネギ型エフェクト)
- エフェクトの変更(図形・色・太さ・サイズ)
- 壁紙設定
- 壁紙逐次変更(紙芝居)
対応入力I/F
対応音源
以上の機能は、機能を開発する度に、ニコニコ動画にニコニコ技術部として動画を投稿し、紹介していました。
技術的な話(ソフトウェア設計の話)
「あの楽器」ソフトウェアは、AnoJ以外にもいくつか作られましたが、AnoJの多様な入出力(入力I/Fと対応音源、アニメーションエフェクト)は、他のソフトウェアには負けてないと自負している特徴です。
この実現に大いに役立ったのが、イベント駆動型のソフトウェア設計です。ソフトウェアのデザインパターンで言うところの、Observerパターンを応用しています。
この辺りは、当時勉強していたソフトウェア設計の知識を実践したのですが、既存機能にほとんど影響することなく入出力を増やすことができ、イベント駆動型の設計の威力を実感しました。
AnoJの開発は自分にとって、ソフトウェア設計の良い勉強にもなりました。
なお、AnoJがイベント駆動型で動いている事は、この動画の6:20あたりから解説しています。
「あの楽器」浜松ミーティングへの参加
2009/4/12(日)に開催された、ニコニコ技術部主催の「あの楽器」浜松ミーティングに参加しました。
このイベントは、あの楽器開発に関するプレゼンや展示をするオフラインでのミーティングです。AnoJ開発の方向性を考えるヒントになればと、参加しました。こういうオフラインミーティングに参加するのは初めてだったので、割と人見知りな自分には、参加は一大決心でした。
ネットで名前を見たことがある人や、ヤマハで電子楽器を開発してる人が会場にいたりして、ちょっと興奮してました。当時はTwitterは使ってなかったので、もし使ってたら、見たもの聞いたことをその場でツイートしてた気がします。
自分も展示で参加して、ノートPCにAnoJを入れて展示してました。参加者の感想や意見を頂くのも新鮮な感覚でした。
この「あの楽器」浜松ミーティングに参加して、色んな方の話を聞いたことで、「あの楽器」実現のため、AnoJの楽器としての完成度を高めていく方向に開発を進めようと思った覚えがあります。
AnoJを使ってくれた動画
最初の動画を上げて一週間もしないうちに、AnoJを使ってくれた動画が出てきました。当時はまだAnoJの名前もつけてなかった頃です。
使ってくれる人がいるというのは、その後の開発のモチベーションになりましたし、機能開発を考える上でも参考になりました。
AnoJを使ってくれた動画はほとんど確認していましたが、全部は上げられないので、特に印象に残ったものをここで紹介します。
まさかAnoJで演奏してみた動画が出るとは思いませんでした。しかも、14分超の「ニコニコ動画流星群」の演奏。あてぶり機能を使っているので、リズムだけ合わせれば良いとは言え、14分以上演奏する根気が素晴らしい。
VOCALOID2のリアルタイム演奏用VSTiを使って、AnoJの演奏で初音ミクに「Innocence」を歌わせるという動画。こういう事ができるのかと関心しました。
後に、これを参考に自分も似たようなことに挑戦しています。
複数起動させて縦に並べ、MIDIアニメーションみたいで面白いです。
ニンテンドーDSから無線経由でAnoJを演奏するという、面白い事に挑戦しています。
「あの楽器」のハードを作り、演奏やアニメーションにAnoJを使ってくれた方も登場しました。まさに、こういう使われ方を想定して開発していました。
こういった動画を見て、機能不足に気付くこともありました。この動画をきっかけに、タップだけで音色やエフェクトなどを変更可能なコントロールパネルを追加したりしました。
そして、ニコニコ技術部でも有名なアーケードPにも「あの楽器」開発にAnoJを使ってもらいました。この動画のおかげで、私の動画も再生数が伸びて、ニコ技カテゴリでデイリー9位になるという現象まで起きました。
AnoJを使ってもらった、もう1つの「あの楽器」ハード。こちらは、サイズ感や継ぎ目なしのディスプレイなど、3DPVの形状の再現度が高いです。
自分がAnoJで演奏してみた動画
楽器を作ったなら、デモも兼ねて演奏したい。という訳で、演奏してみた動画を上げたり、新機能紹介のために演奏してみたりすることもありました。
どうせならお気に入りの曲を演奏して、動画として面白いものにしたいよね、という事で、つたない演奏なりに頑張って作った覚えがあります。また、演奏してみた動画のために、AnoJに機能追加することもありました。 そんな自分の演奏してみた動画を紹介します。
ニコニコ技術部で恒例のネギ振りがやりたくて、ロイツマこと「Ievan Polkka」を演奏してみた動画。
Javaで実装されたファミコン風ソフトウェア音源を見つけたので、その音色がピッタリな「ワンダーラスト」を演奏してみた動画。イラストも使いたかったので、壁紙を順番に切り替えられる紙芝居機能も追加しました。
当時ニコ動で流行っていた「ファミマ入店音」がやりたくて、あの楽器をタンバリンのような打楽器にして演奏してみた動画。
初音ミク3周年をお祝いしたくて、Happy Birthdayを演奏してみた動画。こういう、ミクさんの誕生日のお祝いする作品は、以前から作ってみたかったのです。
なお、この動画作った時点で、自分としては「あの楽器」ソフトウェアとしての作りたかった機能は、ほぼ全部作りきった感じでした。
この後は、AnoJに機能追加することなく、たまにネタを思い付いたときに動画上げていました。 それが、以下の2つの動画です。
当時発表されたVOCALOIDキーボードのプロトタイプに対抗して作った動画。当時のプロトタイプでは、歌詞もボタンでリアルタイム入力する形式でした。 それをAnoJで再現したかったのですが、技術的に歌詞のリアルタイム入力は実現できなかったので、あらかじめ入力した歌詞で初音ミクが歌う形式になっていました。
ポケット・ミクという、初音ミクの声で歌うボーカル・キーボードが発売されたときに投稿した動画。ポケット・ミクはPCに繋ぐとMIDI音源として認識されるので、MIDI音源に対応しているAnoJを使って、ポケット・ミクを歌わせることができました。
マジカルミライ2017での紹介
初音ミク展では、日々生まれる創作の連鎖をニコニコ動画からピックアップして紹介!なんと、「Innocence」の3DPVに登場する「あの楽器」を作ってみた実物も!!(あの楽器を作ってみたの 2号機編 https://t.co/p7aMOTVBkM) #マジカルミライ #初音ミク pic.twitter.com/cp6RE9IDpw
— 初音ミク マジカルミライ 公式 (@magicalmirai) September 3, 2017
初音ミク10周年の年に開催されたマジカルミライ2017では、初音ミク展で「あの楽器」が紹介されていました。アーケードPの作った「あの楽器」が展示されており、そこに連なる創作の連鎖の1つとして、私の「Javaであの楽器を作ってみた」の動画タイトルと投稿者名が紹介されていました。
まさか、自分の動画が初音ミク公式に取り上げられる事になるとは思いませんでした(タイトルと名前のみですが)。驚いたと共に、公式が取り上げるほど大きな創作の連鎖の一部になれたのだなと、感慨深く思いました。
配布所の移動について
AnoJのプログラムとソースコードは、Yahoo!ジオシティーズに「配布所」を作って、そこで公開していました。
AnoJで作りたい機能は作りきった感じなので、今では開発は休止しています。しかし、まだ「あの楽器」の開発を進めている方がいるようなので、使ってくれる方がいるかも、開発の参考になるかも、ということもあり、AnoJの公開は続けようと思っています。歴史として残しておきたいというのも、理由としてあります。
ですので、Yahoo!ジオシティーズが2019年3月末に閉鎖した後も残すため、配布所を自分のサイトに移動することにしました。
最後に
初音ミクをきっかけに、新しい事に挑戦することはいくつかありましたが、あの楽器ソフトAnoJの開発とそれに伴う活動は、自分にとって最初期の大きな挑戦の一つでした。
そして、楽曲やイラスト、PVの制作といった、初音ミク周辺にある「創作の連鎖」の1つに、自分の作ったプログラムがなれたこと。そして、自分のプログラムから連鎖して、また新しい作品が作られたこと。それは、今までに体験したことの無かった事でしたし、それが面白かった。
そんな新しい体験に私を引っ張ってくれたミクさんに感謝を、今日の3月9日「ミクの日」に贈ります。