2016/11/03

【アプリ紹介】ディスコマシン / DiscoMachine このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

今年作りたかったものがだいたい開発し終わって落ち着いてきたので、作ったものについていろいろ書いていきたいと思います。

まずは 2016/10/24 にリリースした ディスコマシン について。


こんなアプリ

ディスコマシンは、スマホのカメラで写した夜景などの映像にディスコっぽいグラフィックといい感じの音楽を合成して楽しむアプリです。

有料版では画面と音を録画して保存したり、SNS で共有できたりします。
分野としては拡張現実(AR)あたりでしょう。

例えば、夜の銀座4丁目交差点でアプリを起動するとこんな映像になります。

開発の経緯

このアプリ、実は結構前からこういうの作りたいなぁと思っていました。

その記録が 2014 のインタビュー記事 アプリ開発者に訊く! ~ 「馬場タクシー3D」 に残っています。 今後出すつもりのアプリは?という質問に対して「いつもの風景がズンチャカピカピカみたいなものを作る予定です。」と答えたやつ、あれがディスコマシンです。

作りたいなぁ作りたいなぁと思いつつも 馬場タクシー3D の方がもっと作りたかったので、しばらくはなかなかガッツリ時間を取って作れなかったわけですが、2016年秋に馬場タクがバージョン 4.5 になってようやくそこそこ満足する形に落ち着いてきたのでディスコマシンに着手し、休日のカフェや休暇で訪れたセブ島のビーチで 日の出タイムラプス動画 を撮影したりしながらガリガリ開発していました。

発想のきっかけとしては、クラブでいい感じの音楽や演出を見ると楽しいけどスマホで AR にしたらもっと気軽にそういうのが体験できていいんじゃね?的な感じです。

アプリによって時間制約と移動コストがなくせるよねみたいな感じで。 ただスマホの画面はとても小さいこともあって臨場感はまだまだですな。家のあらゆる壁がディスプレイになったり VR が安く普及したりすると、また違う体験になるかなーと思っています。

ちなみに、いきなりディスコマシンを作ったわけではなくて、1年弱前の 2015 冬には 電飾カメラ という似たようなアプリを作っています。電飾カメラについてもそのうち記事を書こうかなと思っています。

技術的な解説 

技術的にはたいしたことないというか、すでにある技術を組み合わせた感じです。

まずカメラ映像をリアルタイムに取得して、OpenCV で輪郭とコーナー検出をします。

同時にアプリ組み込みの音楽やユーザの iTunes ライブラリから選んだ音楽をデコードして再生しつつ、raw data を DSP で FFT します。

検出した輪郭情報 Vector3[][] とコーナー情報 Vector3[] と FFT データ float[] を、今回開発した人間の感性を揺さぶる DiscoEngine™ により解析し、OpenGL ES 2.0 を使っていい感じに輪郭やレーザー光線やピカピカ光ってる感じの画像やスモークを描画します。

ちなみに、電飾カメラでは撮った写真をキラキラデコって動画として出力することができますが、そのときは出たばかりの iOS ReplayKit framework の存在を知らなかったので 1 フレームごとに UIImage を生成して AVAssetWriter を使って動画を生成していました。

今回ディスコマシンでは画面に出たものがそのまま動画になる ReplayKit を使ったので、そのあたりを作らなくて済んだのでめっちゃ楽でした。 ReplayKit は生放送にも対応したようだし、アプリによっては独自でそのあたりを作り込まなくて済むのでいろいろ可能性があると思っています。

ということで、ディスコマシンの紹介でした。