これが・・・俺の異能vationだ!

「あんどうさん最近おっぱいが足りないんじゃないですか?」

Androidの偉い人にそんなことを言われたのは確か今年のはじめくらいでしたか。それを聞いた私は「いきなり何を言ってるんだこの人は」と思うより先に「あぁ、そうかもしれないな・・・」と思ってしまったわけで。

・・・

で、まぁそんなこんなでやっとそれなりに動くようになったので成果発表。

操作方法は以下のとおり。

画面の操作 動作
マウスドラッグ 触る
カーソルキー 視点を変更する
スペースキー ボールをぶつける
enterキー 上下に揺らす
wキー ワイヤフレームと肌色を切り替える
http://technohippy.github.io/oppai/images/f_003_85.png メニューを開閉する
http://technohippy.github.io/oppai/images/f_001_36.png スマホコントローラを開始/停止する
http://technohippy.github.io/oppai/images/f_002_61.png スマホコントローラの画像認識を確認する


スマホコントローラの操作方法は以下。簡単に弾性体を貫通してしまうので、特に前後に動かす場合はゆっくりと動かしてください。

スマホコントローラの操作 動作
平行移動(上下左右前後) 手を平行移動する
左右に傾ける 手を傾ける
前後に傾ける 指を曲げる


なお、暗いところや正面に光源があるような場所で試すとうまく認識されません。メニューのデバッグ(虫)ボタンを押してスマホのディスプレイの明るさを調節してください。多くの場合、一番暗くするとうまく認識されます。

・・・

中身について、弾性体のアルゴリズム?は大昔に作った2D版と基本的に同じで、3Dに拡張しただけ。具体的には半球を構成するポリゴンの各頂点にポリゴンの面積に比例した大きさを持つ法線方向の力を加えています。正直に言えば期待したほどの動きは見られなかったものの、ずーっと3Dで試してみたいと思っていたことをやっと試せたので割と満足。

コントローラについては7月にHTML5 Japan Cupで優秀賞を頂いた3D版AngryBirdsと基本同じ。といっても後発なのでノイズに強くしたり、無理やり傾きを取れるようにしたりとそれなりに拡張していますが。こっちはシンプルな作りにも関わらず思った以上にそれっぽく動いてるので、もう少し真っ当な使い道を探ってみたいところです。

あ、あと3D版AngryBirdsと大きく違うのは物理エンジンの処理をWeb Workersで行うようにしたこと。これでずいぶん反応良くなったのでAngiryBirdsでもそうすればよかったなと。three.jsのGeometryがtransferableってわかったのも収穫でした。

・・・

そういえばタイトルですが言ってみたかっただけです。応募して落選しましたが、おっぱいで応募したわけではありません。

LL Diverでいい忘れたこと

LL Diverのmozaic.fm出張版Dartについてこれは言っときたいなーと思ってたことをいい忘れてたことにたった今気がついたので忘れないうちにブログに書いておきます。

ホントはあの場で言っておきたかったこと、それは
DartはDX(Developer Experience)を重視している」
ということです。

これはI/Oのとあるセッションでの発言ですが、要するに「Dartは単なる一プログラミング言語ではなく、開発体験全体を改善することを目的としている」と理解しました。プログラミング言語自体はその目的を果たすためのパーツの一つに過ぎません。クライアント・サーバーで同じ言語が使えることや、コード補完の効くIDEが存在すること、パッケージマネージャや専用リポジトリが初めから存在すること、すべてこれまで開発体験を損ねていた問題に対応しようとしているものです。JSにクラスや型がないのが不満だから作りましたとか、ブラウザ上でhoge言語を使いたいので作りました、とかいう凡百のaltJSとは初めからその志の高さが違います。

セッションでは「TypeScriptは現実、Dartは夢」と言いました。しかしもういっそのことこう言ってもいいかもしれません。「(Dart以外の)実用に足るaltJSは現実、Dartは夢」。

なぜか頭のなかで「I Dreamed a Dream」が鳴り響いてるけど、成就するといいなぁ。

土曜日にLL DiverでDartについて話します

登壇するセッションのタイトルは「mozaic.fm出張版: TypeScript and Dart」ですが、分かりやすく言えば私とわかめさんJxck先生「これから皆さんに殺し合いをしてもらいます」って言われるというセッションです。もしかしたら私は早々に殺られて死んだ目で「ヘーソウナンダー」ってつぶやくだけの1時間になるかもしれません。コワイヨー。

まだチケットはあるようなので、そんな残酷絵巻に興味あればみなさんでお誘い合わせの上ぜひお台場までお越しください。

HTML5 Japan Cupで優秀賞を頂きました

どうせなら賞状は吉川さんじゃなくて池澤さんから受け取りたかったです・・・。

受賞作は先日のエントリでも書いたEnraged Fowls、要するにAngry Birds 3D。作り始めたの5月半くらいで時間ないし、基本的なところができたらあとは細かいところを詰めるよりもタイトル画面とかクリア画面とかの必須要素をひと通り作って全体的な完成度を上げておこうという方針で進めましたが、講評を見る限り正解だった模様。

http://blog.5jcup.org/2014/07/html5-japan-cup-2014_27.html
3Dの表現力とアプリケーションとしての完成度が極めて高い作品である。正直、若干こなれていない操作性や現在用意されているシナリオの単純さなどから、ゲームとしてはこの作品で遊び続けたいと思わせる域にまで達していないが、スマートフォンと連動させるアイデアなど将来性を感じさせるものがある。ソースをオープンソースとして公開するだけでなく、アプリケーション開発中に必要になり作成したライブラリも公開するなど、技術面で多くの人に大変参考になる作品であり、その点からも大いに評価したい。

ちなみにこの講評はGoogleの及川さんに頂きました。光栄です。

HTML5 Japan Cupはまず事前に最優秀賞候補として4作品が選ばれ、HTML5 Japan Cup 2014 The Finalでそれぞれ5分のプレゼンをして会場内の投票で最優秀賞を決め、残りが優秀賞になるという方式でした。と言っても私の応募作は細かいつめが足りないのは分かってるし、最優秀を取ることはそれほど期待せず、大画面でゲームをプレイするのとやりたいことを宣伝するのを目標でした。そのプレゼンが以下。

https://docs.google.com/presentation/d/10l6TNr4xW5t4dGRdcFriayiIeLDmeWgwaYUt9MDPIng/present#slide=id.p

残念ながら何故か壇上でウェブカムが動かなくて大画面でゲームするという野望は果たせず。後で席に戻ってブラウザ再起動したら動いただけにほんと無念。やっぱ5分でデモ込みでプレゼンするというのは短すぎてトラブルが起きたら全く対応できなくてキツい・・・。まぁこんなこともあろうかとスライドに動画を埋め込んでおいたのは不幸中の幸いでしたが。

これ、大画面でやったらおもしろいと思ったんだけどなぁ。

結局最優秀はfokaさんのコトバツナギ。これかJS Racingが最優秀だろうと思ってたので納得感あります。どちらも完成度むっちゃ高かったし。この作者さんたちとは懇親会で話をしてみたいと思ってたんだけど娘が来てて動きづらかったのと、あんまり顔を覚えられない質なので結局見つけられませんでした。ちょっと残念。

そういえばtwitterでチラチラ5jcupの賞状の画像を見ますが、優秀賞・最優秀賞については当日まで誰が賞をとるか決まらない関係でその場ではなにももらえませんでした。郵送されるらしいので、もらったらこの辺に画像貼ります。

[Reserved]

最後に短い期間に数多くのハッカソンなどのイベントを開催し、300近くもの作品を審査したスタッフの皆さんに。お陰さまで開発から応募、結果発表、最終プレゼンと2ヶ月近くもの間とても楽しく充実した時間を過ごすことができました。ありがとうございました。来年も再来年も、末永く開催されることを期待しています。

あとおまけ。会場で眠るうちの娘さん。うちに帰ってから「とーやん、がんばったがんばった」って何度も言われたので、たぶん人生的な意味合いで総合的に見て今回のコンテストの優勝者は私といっていいんじゃないでしょうか。

AngryBirdsの3D版を作りました

3D物理エンジンを使って作りたいものがあったので練習がてらにとAngryBirdsの3D版的なものを作ってたら「そんなら5jCupに出しましょうよ」と言われて、じゃあ出すかと思ってそれなりに真面目に作りこんでみました。

結果それなりにいい感じになった気がします。ポイントはスマホを使ったお手製コントローラー。百均で買い集めたもので頑張った。と言っても、もちろんPCだけでも遊べるので、よろしければお試しください。

http://technohippy.github.io/enragedfowls/

ソースコードも公開してます。

https://github.com/technohippy/threejs-toys/tree/master/angry-birds

WebGLはもちろんthree.js経由で、物理エンジンとしてはcannon.jsを利用。JS版物理エンジンはいくつかあるけどcannon.jsが一番軽量っぽかったので、ソースコード読みながら作れば勉強になるかなということで選択。ただ、実際に使ってみるとジッタ起こしたり貫通したり爆発したりといろいろ不安定で、ammo.jsとかの重た目のを使ったほうがよかったかなと思ったり思わなかったり。

コンテストの作品ページはこちら。

https://5jcup.org/works/53a25c7120a279d145003005

5jCupのサイトには私の応募作品以外にも(たぶん)200件以上応募されてて、興味深いものもたくさんあるので時間のある時に見てみるといいんじゃないでしょうか。

https://5jcup.org/works/all

ちなみに技術的に難しいことやってるとかそういうの抜きにすると応募作の中で一番面白いのは多分これ。なんとMatt Cuttsにも刺さってるという...。いやホントよくできてる。

http://shimage.net/one-tap-quest/

キャプチャは私のハイスコア。まぁそれはそれとして、せっかく応募したので自分のもなんか賞が取れるといいなぁ。

天下一altJS武闘会でAmberについて話しました

パートナーの調子が悪くて2歳児の面倒を見ないといけなくなったんだけど、せっかく資料(というかツール)作ったしなーということで無理やり連れて行きました。特にスタッフのかたや席が近かったみなさんにはご迷惑をお掛けしたかと思います。どうもすいませんでした&ありがとうございました。

イベントの内容については期待通りの多彩さで、真面目に言語を紹介しているものから、ネタに走っているもの、ちょっと何言ってるか分からないものまで、いずれも非常に楽しめました。とりあえずClosure Compilerがただのminifyツールじゃないと分かったのが個人的には一番の収穫です。

私のLTはAmberという要するにブラウザ上で動くSmalltalkについてで、資料はGithubにあります。

https://github.com/technohippy/amber-slide

勉強を兼ねて発表資料自体をAmberで作ったので資料を読むにはAmberのインストールが必要になります。がんばってください。なお、使い方はこんな感じになります。見どころはスライドから直接Smalltalkの式をDoIt、BrowseItできるところですね。

  • Enter: 次のページヘ
  • n: 次のページヘ
  • p: 前のページヘ
  • Ctrl+d: 選択部分をSmalltalkとして評価して結果をダイアログに表示
  • Ctrl+b: 選択部分をクラス名と見なしてクラスブラウザで表示
  • Ctrl+Space: Helios(IDE)を表示





Amberはとてもおもしろいのでみんな黙ってインストールすればいいと思いますが、どうしても入れたくないという人はこの辺を見ればなんとなく内容が分かるかもしれません。

Amber歴1週間くらいでしかも前半3日くらいはamber initの不具合だかなんだかよくわからないことに悩まされてるだけだったのに、最終的に動くものができたわけで、やっぱりSmalltalkの生産性はなかなかのものだなと再確認しました。JSとの連携も簡単なので、よく分からないところはJSを使えば済みますし、Amberなかなかいいですよ。

Project Ara Conference報告会

昨日「Project Ara Conference報告会」というのに参加したんですが、かなり面白かったです。Project Araはモジュールを組み合わせて好みの携帯を作成できるということから、マニア向けの尖ったガジェットを目指しているものだと思っていましたが、実はそういうことではないらしく。むしろその反対に、作ってる人たちはケータイのモジュール化を推し進めることで低価格化や耐故障性(壊れた部分だけを交換)を実現して60億人にモバイルデバイスを届けることを最終目標にしてるそうです。

さらに、その実現手段として彼らが考えているのが、ソフトウェア開発がコモディティ化したことで進化が加速したのと同様の状況をデバイス開発にも持ち込むこと、つまりデバイス開発のコモディティ化です。実際Project Araにはモジュールのインターフェース仕様だけではなくて、物理シミュレーションを使用したデバイスレスの設計ツールから3Dプリンタを使用した製造機器の仕様まであらゆるものが含まれていて、デバイス製造に関する新しい生態圏をゼロから構築しようとしています。

ハードウェアと聞くと門外漢過ぎて正直腰が引けそうになりますが、目標がコモディティ化となると少し早めに手を付けておいた方がいろいろと嬉しい気もしてきました。数カ月後には一部の開発者に開発機を配り、一年後には実売くらいのスピード感で進めているようなので、せめて少しずつでもこの辺の動画を見て心の準備だけでも進めておこうと思います。