2011年2月28日月曜日

写真の一部をぷるんと揺らすミニアプリの構造

このエントリーをはてなブックマークに追加
Pocket

Wobbleは、有名なiPhoneアプリで、画像の任意の場所を『揺らす』ことができる。これだけ聞くと大した事が無いが、18歳未満が閲覧禁止の写真の任意の場所を揺らして楽しむ男性が多いらしく、ベストセラー・アプリとなっている。

気の利いたアプリで良くできている。じっとWobbleの動画を見ていたら、どういう仕掛けになっているか気になりだしたので、プログラマらしく実際のコードを動かして確認を行ってみた。

1. Wobbleが利用しているフィルター

動かしてみた人は気付いていると思うが、Wobbleは、任意の円の中を歪めるフィルターを適応しているようだ。円の中にある部分は、Wobbleの中核部分はここになる。全て歪んでいるので、背景を含む人物の手足を指定すると、背景も一緒に揺れている。また、円の内側と外側の境界が連続してつながっているように見える。

中心から離れるほど、フィルターの効果が薄れるようになっているので、幾何フィルターの変形版のように推測される。幾何フィルターは、写真の歪曲収差などを修正するアルゴリズムで、中心部分から離れるほど効果が強くなる。Wobbleは、これを逆に応用したようだ。

推測される中心点と歪みの大きさの関係は以下のグラフのようになるが、周辺部分で歪みがほとんど無いように歪み量の関数を設定できれば、円の内外を連続しているように見せる事ができるであろう。

2. Java/Swingで同種アプリを実装して見たが、単純だった

仕掛けはぱっと見で分かったので、Java/Swingで実装を行ってみる。以下のように画像を歪めるフィルタを書いて、一定時間(10~100ms)ごとに歪みの大きさを変化させれば良い。なお適切なサンプル写真の入手に苦労したのだが、flickrでCreative Commonsになっている水着の写真を利用した。

フィルタはともかく、適切なフィルタのパラメーターと、ユーザ・インターフェイスを作るのに苦労したのだが、技術的には特に大きな課題に当たることも無く、Wobbleと似たような動きのコードを作成する事ができた。つまり、Wobbleの仕掛けは基本的には単純だ。

作ったアプリは公開する。JavaがインストールしてあるWindows、Macintosh、Linuxならば、こちらからダウンロードをして、動かす事ができる。マウスで範囲指定すると、揺れるはずだ。なお、好きな画像を揺らしたい場合は、エクスプローラーから画像をドラッグ・アンド・ドロップするか、右クリックをして「ファイルを選択」すればよい。

3. Wobbleは小さな仕掛けで、大きな収入

Wobbleは3D眼鏡対応になるなど、現在でもアップデートされているが、基本的にこの小さな仕掛けで14万ダウンロードを大きく超える売上を得ている。数ドルで販売されているので、プログラマから見てみると、簡単なフィルター一本で1,000万円以上の収入があるのかと驚いてしまう。

もちろん、絵が可愛いとか、アプリとして操作性に優れるとか、上手くメディアに取り上げられたとか、複合的な要因でダウンロードされているのは間違いない。同じようなモノを作っても劣化版にしかならないであろうし、3Dのテクスチャを駆使したらしいPullPullPicという、さらなる強敵もいる。しかも一歩間違うとiBoobsみたいにAppleから排除される可能性も、この手のアプリにはある。

4. アイディアのあるプログラマがお金を稼げる時代?

iPhoneアプリは競争過多でもう儲からないという話もあるが、Wobbleのような気の利いたものを思いつけば、ちょっとした金額を稼ぐことはまだ可能なのかも知れない。

モバイル・アプリ市場は、App Store以外にも、Android Marketやドコモマーケットも個人開発者や零細企業に開かれている。世界のモバイルアプリ市場は250億ドル(約20兆円)に達するという予測もあり、市場規模も急速に拡大している。実用性が無くても、ちょっと面白いアプリなら世界の誰かが買ってくれるのかも知れない。アイディアを自負しているプログラマは、ぜひ参入してみたらいかがだろうか?

0 コメント:

コメントを投稿