2011年6月26日日曜日

【アメリカ国外でTurntable.fm 終了のお知らせ。】のお知らせ

寝て起きたらTurntableのサービスが終了してました。アメリカ国外で。
昨日てら子で発表したのがTurntableのChrome拡張機能というのもあってびっくりした。

Turntable


@dfnt ヨシナガ(僕秩)
いいサービスだったのに! RT @mehori 【アメリカ国外でTurntable.fm 終了のお知らせ。】 http://skit.ch/btas


あと、アメリカのIPアドレスからアクセスする方法もあるそうです。
串を挿すってやつですね。


@dfnt ヨシナガ(僕秩
【Turntable.fmが米国外からのアクセス遮断を開始-回避方法あり】 http://bit.ly/mNafMR もう以前のような活気は戻らないけれど、IPアドレス回避の方法について。


サービスが終了したのは残念だけど、Turntableの
We are working very hard to try and get you in as soon as possible.
という言葉を信じて待っています!

あと、最近僕秩見にいってなかった。

2011年6月25日土曜日

東京てら子Vol.16 - Turntableの曲情報を取得するふたつの方法

今日行われた東京てら子Vol.16に参加し、LTをしてきました。
前々からてら子参加したいと思ってたんですが、忙しくてなかなか参加できず。
今日やっと参加できました。よかった。

普段JSまったく書かないんでワードがよくわかんなかったりしてます。
「DOM操作」っていいのかみたいな。まあいいか。

LTで話した内容はTurntableの曲情報を取得する方法についてです。
プレゼン資料は以下です。


今回は力技なので画像処理をして曲が更新されたというのを検出しています。
  • JSで画像処理がどれくらいできるのか知りたかった
  • ちょうどAS3に移植したSIFT(SIFT++)があったから使ってみた
といった理由から、SIFTを使っています。
SIFT特徴量のがどれだけマッチしているかによって画像の変化を判定しています。
でもちゃんとやるには「最新の画像がひとつ前の画像のどこに位置するのか」といったところまで考えないと誤認識が多くなっちゃってダメですね。
今日はそこまでやる体力と時間がなかったのでした。

あと、発表はしませんでしたが、DOMの探索で普通に曲情報がゲットできたりします。
(<div class="messages">のあたり)
こっちの方で実装したら画像処理より数倍簡単で数倍安定して動く大変実用的なのものができました。
ちゃんと拡張機能にするとしたらこっちの方を使うかなという感じです。

昨日Turntable専用ブラウザTech1200を見つけてドキッとしました。
糞アプリらしいんですが、すごい勢いでアップデートしているので今後が楽しみです。
Macな人はこれあれば十分な気がする。

てら子、発表多いなあとか思ってたんですが、過ぎてみればあっという間でした。楽しかった!
次はFlashメインのときにもいっかい行ってみたい。

そんなわけで、Turntable楽しいよ!

2011年6月21日火曜日

Turntableで再生中の曲情報を取得する。その2。

まえおき
前回Turntableで再生中の曲情報をポップアップで表示するところまでやりました。
しかし、この方法だと
・ページ開いていないとポップアップが見られない
という問題があります。
そこで、他の作業をしていてもちゃんと通知が見えるようにしなくてはなりません。

この問題を解決するために今回はデスクトップ通知に対応させます。

こんな感じになります↓。


デスクトップに通知する方法
デスクトップに通知する方法として例えばGrowlがあります。
Growlは↓のようにデスクトップに通知を出してくれます。


Growlはこのようにデスクトップに通知を出してくれます。

Chrome Extensionsでもこれと同じような機能があります。
それが、Desktop Notificationsです。そのまんまですね。

これを使うと先ほどのGrowlと同じように、デスクトップに通知ができます↓。


デスクトップの通知にはこれを使えば良さそうです。
また、Desktop Notificationを使う場合にはmanifest.jsonのpermissionsに、"notifications"を加える必要があります。
"permissions": [
"tabs",
"http://*/",
"https://*/",
"notifications"
]

通知する内容を考える
Desktop Notificationで表示する中身を作る方法は二通りあります。
ひとつはSimple Text Notification 、もうひとつはHTML Notificationです。

Simple Text Notificationは
  • アイコン画像
  • タイトル
  • メッセージ
から作ります。

HTML Notificationは

  • 外部のHTML

から通知する画面を作ります。

なので、単純に画像だけを表示するものはない!のです。
Simple Text Notificationのアイコン画像は小さすぎるため、今回の用途には使えません。

そこでHTML Notificationを使うことになるのですが、問題は
「どうやって画像を表示するか」
です。
ただ、あんまりhtmlの知識がないので、画像ならimgタグだろうぐらいしか思いつきませんでした。なので、ここではimgタグを使います。
そして、解決しないといけない問題がもうひとつあります。それは
「どうやって画像を渡すか」
です。

今回の構成ではキャプチャを取るbackground.htmlと通知画面を作るるnotif.htmlの二つのファイルに分かれています。
そのため、background.htmlでキャプチャした画像をnotif.htmlに送らなければなりません。
通常のウェブページであれば、ローカルにあるファイルを読み込んだり、ウェブ上にある画像のURLをimgタグのソースに指定すれば良いのですが、今回の場合、

  • キャプチャした画像をローカルに保存できない(多分)
  • どこかにアップロードすることもできない

といった理由からこれは無理そうです。

しかし、imgタグで画像を表示するにはこれ以外にも画像のデータを直接指定する、という方法が使えます。
画像のデータには例えばBase64エンコーディグされた文字列が使えます。
なんだか、ちょっと道が見えてきました。

通知する画像データを作る
imgタグのソースに画像データを指定できることがわかりました。
そうすろt、指定するための画像データを作らなければなりません。

通知画面で表示する画像は前回(リンク)ポップアップで表示した画像をそのまま使うことにしましょう。
この画像はCanvasに描かれています。
そしてなんと、HTML5のCanvasにはtoDataURL()というまさにこの用途に使うためにあるかのようなメソッドがあります。

この関数はCanvasに描かれた内容を指定した形式でBase64エンコーディングした画像データ(URL)として出力してくれます。こんな感じです↓。
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAAJqCAIAAAAJ+7rbAAAgAElEQVR4nOzdeXxV1b03/s9aa+9zdnJOQhJCIGAYS1RSxMpQFBUHnPCRipXWscUOONxb2/pcuT/709Zbbf090p9WbWuL16utor2ldcCLCoojCAURLAY1yhhIIISQ4SRn2Guv9fyReTrMYs3n/fJVz7DO2uvsnGP353zXXlu4D20HERERERFRX/LymE9838/JyUkkElprIUQ4HHZd13Ec13WbbyilgiBIJpPOsR4tERERERHRZ00pNXjw4CFDhkgpfd9vampKJBJSSrcDKaUxJh6PMzUREREREVGfo5SSUrbFpMzMzFgs1tTU5DiOlFK1CoJAKcXUREREREREfU5zOhJCABBCWGullG3T80KhkOM4QggppdaaqYmIiIiIiPo0Y0xjY2NjY6NSyrQC0JypADA1ERERERFRn2OttdYCSKVS1dXVjY2NAEKhUCqVcl03EokIIVzXbW7M1ERERERERH2OlBJAMpncsWNHaWnp7t276+rqYrFYOBzOy8sbMWLEuHHjCgoKHMex1jI1ERERERFRn2OMCYLgww8/XPZG6VtlzsfJkVWZBTbDyfF3D6nbcUL...
次は、こいつをnotif.htmlに渡しましょう!

notif.htmlに画像データを送る
画像データを生成することができたので、次は通知するhtmlにこのデータを送らなければいけません。
他のhtmlファイルにデータを送るには

  • 画像ファイルを作る
  • WebSocketを使う
  • クエリを使う

みたいな方法があると思うのですが、今回はクエリを使って実現しています。
画像ファイルは生成する方法がわからなかった。
WebSocketはめんどくさそうだったのと、今回の用途みたいにちょこっと使うにはコストが高かいと思ったのでやめました。
(やるとしたら、サーバー側の実装も必要?)

そこで、クエリを使う方法です。
htmlを読み込むときのファイル名に、
notif.html?q1=v1&q2=v2...
というような指定をすることができます。
こう書くと実際に読み込まれるファイルはnotif.htmlとなり、"?"より後ろに書いた文字列は無視されます。
では、"?"の後ろの文字列はどうなるのか、というと、notif.html側で読み取ることができるんです!

これで、通知用のnotif.htmlを読み込むときに画像データをくっつけてあげれば、notif.htmlに画像データを送ることができそうです。
実際にはこんな感じになります↓。

var notification = webkitNotifications.createHTMLNotification(
    'notif.html?data=' + 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAAJqCAIAAAAJ+7rbAAAgAElEQVR4nOzdeXxV1b03/s9aa+9zdnJOQhJCIGAYS1RSxMpQFBUHnPCRipXWscUOONxb2/pcuT/709Zbbf090p9WbWuL16utor2ldcCLCoojCAURLAY1yhhIIISQ4SRn2Guv9fyReTrMYs3n/fJVz7DO2uvsnGP353zXXlu4D20HERERERFRX/LymE9838/JyUkkElprIUQ4HHZd13Ec13WbbyilgiBIJpPOsR4tERERERHRZ00pNXjw4CFDhkgpfd9vampKJBJSSrcDKaUxJh6PMzUREREREVGfo5SSUrbFpMzMzFgs1tTU5DiOlFK1CoJAKcXUREREREREfU5zOhJCABBCWGullG3T80KhkOM4QggppdaaqYmIiIiIiPo0Y0xjY2NjY6NSyrQC0JypADA1ERERERFRn2OttdYCSKVS1dXVjY2NAEKhUCqVcl03EokIIVzXbW7M1ERERERERH2OlBJAMpncsWNHaWnp7t276+rqYrFYOBzOy8sbMWLEuHHjCgoKHMex1jI1ERERERFRn2OMCYLgww8/XPZG6VtlzsfJkVWZBTbDyfF3D6nbcUL...';
  );
  notification.show();

渡した文字列を取得する
window.location.search.substring()
を使っています。substringの中に渡した文字列が入っているので、
ここから必要な箇所(画像データ)だけを抜き出します。
抜き出した画像データをimgタグのソースに指定すれば画像が表示されます。
やったね!

次回!
次回は一定時間おきに通知するようにしてみます。

ソース
background.html
<html>
<head>
<script>

chrome.browserAction.onClicked.addListener(function(tab) {
  capture();
});

function capture() {
  chrome.windows.getCurrent(function (win) {
    chrome.tabs.captureVisibleTab(win.id,{format:"png"}, function(imgUrl) {
      createImageData(imgUrl, onImageData);
    });
  });
}

function onImageData(imgData) {
  showNotification(imgData, 3000);
}

function createImageData(imgUrl, callback) {

  var img = document.getElementById('myImg');
  img.setAttribute('src', imgUrl);

 setTimeout(function() {

      var canvas = drawToCanvas(img);

      img.setAttribute('src', 'data:image/png;base64,');

      if(callback) {
        callback(canvas.toDataURL());
      }
  }, 10);
}

function drawToCanvas(img) {
  var canvas = document.getElementById('myCanvas');
  var context = canvas.getContext('2d');
  context.fillRect(0, 0, 100, 100);
  var x = (img.width - 760) / 2 + 72;
  context.drawImage(img, x, 238, 360, 88, 0, 0, canvas.width, canvas.height);
  return canvas;
}

function showNotification(data, duration) {
  var notification = webkitNotifications.createHTMLNotification(
    'notif.html?data=' + data
  );
  notification.show();
  setTimeout(function() {
    notification.cancel();
  }, (duration ? duration : 3000));
}

</script>
</head>
<body>
<img id="myImg" src="" />
<canvas id="myCanvas" width="280" height="68" />
</body>
</html>
notif.html
<html>
<script>
  function onLoad() {
    var query = "?data=";
    var imgData = window.location.search.substring(query.length);
    var img = document.getElementById("myImg");
    img.src = imgData;
  }
</script>
<body onload="onLoad()">
<img id="myImg" src="" />
</body>
</html>
manifest.json
{
  "name": "Test",
  "version": "1.0",
  "background_page": "background.html",
  "browser_action": {
    "default_icon": "icon.png"
  },
  "permissions": [
    "tabs",
    "http://*/",
    "https://*/",
    "notifications"
  ]
}

そんじゃーね。

2011年6月18日土曜日

Turntableで再生中の曲をゲットする!

最近登場した Turntable というウェブサービスが面白い。
誰でもDJになれちゃう。みたいなそんないけてるサービス。

@fladdictさんがたくさんつぶやいてたから、なんとなく初めてみたんだけどともかく面白い。
何が楽しいかはちゃんと説明できないけど、なんか面白い。
裏側(選曲)に人を感じるからとかそういうことだろうか。。とりあえずそういうことにする。
Facebookのアカウントがあれば誰でも参加できるから、気になる人はとりあえずやってみるといいです。

これを聴いてると自分の知らない曲がばんばん流れてくるわけです。
そんで、「この曲なんだろう?」って思ったときに、いちいちTurntableに見にいくのはめんどくさいからどうにか曲情報だけゲットしたい!
と思ったところで、もちろんAPIなんてのは公開されてないわけで。
そうなったら力技で解決するっきゃないから、Google Chromeの機能拡張として作ってみた。

が、途中で力尽きた!

今のところこんな感じになります↓。


仕組みとしては、

  1. chrome.tabs.captureVisibleTab()を使って表示されてる部分をキャプチャ
  2. 1.で取得した画像をimgタグのsrcに指定
  3. imgタグの内容から曲情報の部分をcanvasで切り抜き

という感じ。

今後やること。

  • 一定時間おきにバッグラウンドでキャプチャする
  • なんかいい感じに画像を表示する(Growlみたいな感じで)


あと、ろくにテストをしてないので、画面サイズ変えたりしたら表示おかしくなるかも。
そんでもって下にスクロールとかしたら確実におかしなことになるので。

なんというか。
Google Extensionsを勉強しつつだったからやけに疲れた。
早くHTML5とかJSを使いこなせるようになりたい。

ソース置いときます。
popup.html
<html>
<head>
<script>
  chrome.windows.getCurrent(function (win) {    
    chrome.tabs.captureVisibleTab(win.id,{"format":"png"}, function(imgUrl) {
       var img = document.getElementById('myImg');
       img.setAttribute('src', imgUrl);
       img.style.visiblity = 'hidden';

       setTimeout(function() {
         var canvas = document.getElementById('myCanvas');
         var context = canvas.getContext('2d');
         context.fillRect(0, 0, 100, 100);
         var x = (img.width - 760) / 2 + 72;
         context.drawImage(img, -x, -224);
         document.body.removeChild(img);
       }, 100);
    });
  });    
</script>
</head>
<body>
<img id="myImg" src="" /><br />
<canvas id="myCanvas" width="360" height="88" />
</body>
<</html>

manifest.json
{
  "name": "Test",
  "version": "1.0",
  "browser_action": {
    "default_icon": "icon.png",
    "popup": "popup.html"
  },
  "permissions": [
    "tabs",
     "http://*/"
  ]
}

そんじゃーね。

AIR for Androidで作るのだ。

はじめに

最近は猫も杓子もモバイルモバイルで。
その中でもネイティブの言語以外からネイティブアプリを作るというのが流行っているらしい!
Package for iPhoneを皮切りに、AIR for iOSAIR for AndroidiProcessingTitanium Mobileなどなど、いろんなものが出てますね。

実際のところ、Package for iPhoneが出た当初に使ってみたのだけれど、そのときは、
・ipaファイルを作る手順がめんどくさい
・できたipaファイルのオーバーヘッドが大きい
・パフォーマンス出なさそう(多分)
みたいな理由で、すぐに使うのをやめたのでした。
あと、Appleがそういうの禁止しちゃったし。
唯一使い道があるとしたら、既にあるFlashコンテンツ(ミニゲームとか)をさくっと移植することかなあと。

それからしばらくして、状況もだいぶ変わったそうで、
AIR for iOS/Androidは割と使えるみたいです↓。

hi-posi » Blog Archive » AIR for Androidでできない事。

今回使ってみたいと思ったのも先のブログにも書いてあった、

両方抑えたい!→JavaとObjective-Cで開発→コスト高い&てか人居ない!→Flashアプリ(AIR)ってどうなの?
この感じに近い。

作ってみた

ここからが本題。
FlashBuilder 4.5を使って、AIR for Androidのちょっとしたアプリを作ってみた。

できたのが↓みたいなボタンを押したら画像を表示されるアプリ。
アプリって言っていいのかわかんないけど、アプリ。

作り方

1. プロジェクトの作成
ファイル>新規>Flex モバイルプロジェクト
から、プロジェクトを作成する。

2. プロジェクトの設定
次のウィザードに沿ってプロジェクトの設定をしていく。

まずはプロジェクト名やSDKのバージョンを設定する。

次にテンプレートを決める。今回はビューベースアプリケーション。
それ以外に、カメラ使うとか、GPS使うとかいった権限の設定もここで行う。
今回は特殊なものを使わないので、最初の状態のままにした。

サーバーの設定ができるらしいけど、よくわからない&今は必要なさそうなので次へ!

これでプロジェクトを作成できました。

3. GUIのデザインをする
まず最初に、GUIを作りましょう。
ImageViewer>src>ImageViewerHomeView.mxml
を開き、デザインボタンを押してデザインエディタを開く。
iPhoneのInterface BuilderよろしくGUIでコンポーネントを配置していくのだけれど、これのできが超ださい。
どこが?っていう人は一度使ってみよう。

今回はこんな感じ↓でボタン(s:Button)とイメージ(s:Image)を配置した。
それぞれidは_loadButtonと_imageとした。

4. ボタンのクリックをハンドルする
クリックしたときのイベントハンドラを設定するには、もちろん自分で書く方法もあるが、デザインエディタから生成するという方法もある。

ボタンをクリックし
プロパティ>カテゴリビュー>イベントタブ
を開く。
ここのプロパティがclickとなっている右側の欄のカミナリマークを
クリックするとソースの方に自動的にイベントハンドラが追加される。

あとはここにクリックしたときの挙動を書いていく。

5. 画像の読み込み
画像の読み込みはさぐりさぐりやってみたら、なんかAS3とmxmlのあいのこみたいになった。

クリックしたらLoaderを使って、画像を読み込み。
protected function button1_clickHandler(event:MouseEvent):void {
        // TODO Auto-generated method stub
        trace("click", event.currentTarget);
        var loader:Loader = new Loader();
        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _onLoadImageComplete);
        loader.load(new URLRequest("http://www.google.co.jp/images/logos/ps_logo2.png"));
}        

画像の読み込みが終わったらそれを_imageのソースにセットする。
protected function _onLoadImageComplete(event:Event):void {
    trace("load image complete!");
    var bitmap:Bitmap = (event.currentTarget as LoaderInfo).content as Bitmap;

    _image.source = bitmap;
    _image.scaleMode = BitmapScaleMode.STRETCH;
    trace(_image.width, _image.height);
}
これで、画像が表示される。やったね!
_image.scaleModeをBitmapScaleMode.LETTERBOXにすると、アスペクト比を保持したまま、_imageの大きさにフィットするように表示してくれる。

あとで気づいたけど、
_image.source = "http://www.google.co.jp/images/logos/ps_logo2.png";
とかもできるし超簡単。こっち使えば良かった。

6. デバッグ そして 完成
左上の方にある虫ボタンか、メニューの
実行>デバッグから起動
選択する。
デバッグをPCでするか、デバイス上でするかを決めることができる。

PCでデバッグを行うと(多分)AIR製のデバッグプレイヤーが立ち上がり、動作を試すことができる。
Android純正のエミュレータが死ぬほど起動に時間がかかるのを考えると、デバッグのしやすさはこっちの方がだいぶ良い。

7. 実機での確認
できませんでした><

持っている端末が、みんなの記憶から消えかけている(というかもともと存在してない)ことでおなじみのHT-03Aなので、OSが対応してませんでした。残念。

思ったこと

そんなわけで、作ってみました。
これまでAS3一筋だったんで、Flex自体初めてでした。
addChildじゃなくaddElement使うあたりで微妙に悩んだりもしましたが、
無事初アプリができてよかったです。よかったです。

簡単に作れたのはいいんだけれど、これってJavaで書いても超簡単なんじゃね!
って思いました。
Flashの知識が使えるというのは嬉しいけど、結局ネイティブの開発知らないと意味がない気がする。
それこそ冒頭に挙げた、「AIR for Androidでできないこと」も頭ではわかっても体感としてはわからない。

とりあえずしばらく使いつつ、ネイティブの開発も勉強する感じがいいんでしょうか。
まずは、複数画像読み込んで、ちゃんとビューワーにしてみるつもり。

コード
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" title="HomeView">
    
    <fx:Script>
        <![CDATA[
            import mx.graphics.BitmapScaleMode;
            protected function button1_clickHandler(event:MouseEvent):void
            {
                // TODO Auto-generated method stub
                trace("click", event.currentTarget);
                 var loader:Loader = new Loader();
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _onLoadImageComplete);
                loader.load(new URLRequest("http://www.google.co.jp/images/logos/ps_logo2.png"));
            }
            
            protected function _onLoadImageComplete(event:Event):void {
                trace("load image complete!");
                var bitmap:Bitmap = (event.currentTarget as LoaderInfo).content as Bitmap;

                _image.source = bitmap;
                _image.scaleMode = BitmapScaleMode.STRETCH;
                trace(_image.width, _image.height);
            }
            
        ]]>
    </fx:Script>
    
    <fx:Declarations>
        <!-- 非ビジュアルエレメント (サービス、値オブジェクトなど) をここに配置 -->
    </fx:Declarations>
    <s:Button id="_loadButton" x="193" y="594" label="Load" click="button1_clickHandler(event)"/>
    <s:Image id="_image" x="10" y="92" width="460" height="371"/>
</s:View>

2011年6月10日金曜日

enchant.jsでゲームを作っていた。

はじめに
そういえばenchant.js使ってゲーム作ったんだった、
と思い、折角なので何を作ったか、何を思って作ったかを紹介してみます。


あらまし
enchant.jsというのはUEIの研究部門ARCが作っているHTML5/JavaScriptベースのゲーム作成ライブラリ。
これを使うと簡単なゲームが簡単に作れちゃうのです。
超頑張ると超大作RPGなんかも作っちゃったりすることもできます。
そんな、ゲーム作成ライブラリ。


つい先日行われたIVSのLaunch Padで優勝したことも記憶に新しいですね。


そんなenchant.jsはこれまたUEIの研究部門ARCが運営をしている
9leapというゲーム投稿サイトのオフィシャルライブラリとしても使われています。


その9leapが5月の頭に9leap 9days challengというゲームコンテストを開催しました。
(9と9をかけているわけですね。)
5月1日から9日までに投稿されたゲームの中から、いろんな要素を加味して優勝を決めるコンテストです。


ちょうど時間もあったし商品のiPad2も欲しい、ということで、コンテストに参加することに決めました。
コンテスト期間中に投稿したゲームは


  • 落穂拾い
  • 迷い熊オーバーラン!


の2つ。それぞれ紹介していきます。


落穂拾い





どんなゲームか?
落ちている「ば」の中から「ぼ」を探し出し、拾うゲームです。
なぜ思いついたのか?
「おちば」と「おちぼ」って字面似てるなあとふと思ったため。
工夫したポイント
色をつけて、回転させた。
その他
思いついてから2時間ぐらいで形にして、投稿しました。
ゲームデザインも何もないので、運の要素が強いゲームになっています。
まだ9leapが公開されてから日が浅いこともあって、投稿するとすぐに遊んでくれる人がいた。
これには驚いたし、嬉しかったです。次のゲームを作るやる気もでました。


迷い熊オーバーラン!





満を持して登場した次のゲーム。※迷い猫のそれとは、特に関係ありません。
どんなゲームか?
熊が100m走るタイムを競うゲームです。
なぜ思いついたのか?
落穂拾いの反省を活かし、
  • できるだけ、シンプルなルールで、
  • 短時間に終わり、
  • 頑張れば記録のばせるかも!と思わせられる
ようなゲームを考えました。
それに加えて、他のゲームを遊んだときに、熊が走るアニメーションが面白かったため、
熊を走らせるゲームにしようと決めました。
工夫したポイント
実際の100m走とおなじように10秒前後でゴールできるように調整してみた。
雲を動かすことで疾走感を醸し出した。
ゴールフラッグに9leapのロゴをあしらうことで、媚を売ってみた。
その他
開発を始めたのがコンテスト終了2時間前だったので、終止どきどきしながら作ってました。
投稿後は、初めの狙いがよかったのか媚を売ったのがよかったのか、プレイ回数も着々と増え、いつの間にか1000回を超えていました。
さらに、人気のゲームにランクインされていたのも誇らしかったです。
(でもなぜかお気に入りが1個もついてないのが不思議。)


コンテストの終わり。
当初はコンテストで優勝することを目的としていたけれど、
実際に締め切りが過ぎてみると、プチ燃え尽き症候群みたいな感じになってしまい、
結局何が優勝したのかも見ていないし、今も知らない。(結果って出てるんでしょうか?)


さらに、JS恐怖症みたいな感じになり、しばらくJSとは距離を置こう、と相成りました。
JSは自由すぎて、それが逆につらい、みたいな感じです。


でもやっぱりゲーム作るのは楽しいし、遊んだ人の反応が見られるのもすごい嬉しい。
なので気が向いたときに、また投稿しようと思ってます。


最後に。
ミニゲーム2つしか作ってないのにJS恐怖症なんて!と言われそうなんですが、
実はこれらとは別のゲームを細々作っていました。
その話は「enchant.jsでゲームを作っていた。その2」で!

2011年6月4日土曜日

Kinect勉強会 Vol.2 で「MSのくせになまいきだ。」を発表しました

#追記(2011/06/04)
発表資料中に掲載した動画がプライベートモードになっていて見られなかったのを修正しました。


LTしました。

木曜日に行われたKinect勉強会 Vol.2に参加し、LTをしてきました。
「MSのくせになまいきだ。」というタイトルで
WiiをKinectで操作するアプリケーションについて話をしました。


このタイトルをぼけーっとしながら当日の朝に考えて、
会場行ったらMSのエバンジェリストの人がきていますーとか、もうダメだと思った。
自分の発表後、MSの方がにこにこしながら話かけてくれたり、
皆すごい良い方々だったので壁紙をIE9にしたりしました。IEばんざい!


当日の様子は以下から見られます。
http://www.ustream.tv/channel/team-lab


発表資料は以下に。


発表の詳しい内容は資料を見ていただければと思います。
今回は時間がなくデモとかできなかったんですが、
また機会があればそういうのもやりたいですね!


自分以外の発表はどれも面白くて、刺激を受けました。
特に大津さん(@jovi0608)の「Kinect on HTML5」は
なんか未来っぽい感じでよかったですね。


ホストとなる人がKinectで取得した情報を発信して、
それをリアルタイムでWebサイト見てる人みんなが共有できるというものなんですが、
言葉で説明してもよくわからないので発表資料見てください。



KINECTセンサープログラミング(Kinect本)
をゲットした

この本の著者である中村薫さん(@kaorun55の基調講演後に行われた
じゃんけん大会になんと勝利し、本をもらうことができました!嬉しい!


一通り読んでみたところ、中村さんが言っていたように、
日本語のリファレンス本としてナイスな一冊だなと思いました。
特にこれからKinectを始めようと思っている人にはオススメです。


実のところ、自分が今回発表したKinect側のプログラムはサンプルコードを改造して作ったものです。
なので、基礎をすっ飛ばした(本を読んで、なるほど震度画像はそうやって取得すんのかーとか、思ったり。。)
自分にとってもためになる本なので、あとでちゃんと読みます。





戦い終わって

Kinect勉強会で発表するのが決まってから、
Kinectプログラミングを始めるというなんとも無茶な感じでしたが、
無事発表を終えることができて一安心です。


最後になりましたが、主催の@hagino3000さん、会場を貸していただいたniftyの皆様、
Ustをしてくれた@tksさん、発表者、参加者の皆様、お疲れさまでした!


ほんとはカービィの話とか、作るきっかけの話とかしたかったんですが、
それはまた別の機会に。