hagino3000's blog

平成アーカイブス (更新停止)

Windows Phoneアプリ開発のはじめ方

Kinect SDK動作確認専用マシンにしていたThinkpadにWP開発環境を整えて勉強中。忘れがちなのでセットアップ手順をまとめた。実機と仮想環境の両方でやってみたけどどちらも問題無く開発はできる。

APP HUBに開発者登録をする

年間サブスクリプション 9,800 円 (税込) 也。シミュレーターを使って開発するだけなら必要無い、実機転送に必要。

開発ツールのインストール

Windows Phone SDK 7.1 RC版

現在の最新版が7.1RCなのでそれを入れる

Zune

端末のアンロックに必要なのでインストールする

端末のアンロック

Zuneを起動して端末の接続を行なう。

スタートメニュー > Windows Phone SDK 7.1 > Windows Phone Developer Registration を起動してAPP HUBに登録したWindows Live IDで端末をアンロックする。ZUNEは起動したままにしておく。

アプリケーションの作成

スタートメニューからMicrosoft Visual Studio 2010 Express for Windowsを起動する。

適当なテンプレートを選んでプロジェクトを作成

そのまま実行するとシミュレーターで実行できる

バイスの選択でWindows Phone Deviceを選ぶと実機で動作する。この時はZuneを起動しておくのと、端末のロックを解除しておく。

情報源

最初はMSDNのトレーニング資料からやってみるといいかも。

Windows Phoneハッカソンを開催しました

auWindows Phone端末IS12Tを発売直後に購入したものの、アプリ開発に着手できていなかったのでハッカソンをやる事にしました。

WP7のPush通知の仕組み

主催者の私が端末のアンロックはおろかC#を一行も書いた事がないという状態でしたが、既にバリバリにWP開発をされている経験豊富な猛者達に加えてエヴァンジェリストの高橋忍さんが急遽本の宣伝にやってきたりと、非常に濃い時間となりました。

個人的にはC#の進化に目から鱗だったのと、WPのアーキテクチャWindows8でWeb開発者を取りこもうとするMSの思惑あたりの話が聴けたのも大きな収穫。端末のアンロックから実機転送のやり方まで教えてもらいC#の勉強もできた。

@sasaoさんが持ってきたWindows8の動いてる端末

@shinoblogaviさんに貰ったWP用UIデザインキット


肝心の開発というと私はGoogle LatitudeAPIを叩くアプリを作ろうとしていたのですが、GoogleのLatitude用C#ライブラリがWindows Phoneに載せられない事が判明して頓挫。続きは自宅で完成させる事に。しばらくは月に一回のペースでやっていこうと思います。
参加者の皆様ありがとうございました!!

「キネクトハッカーズマニュアル」のサポートページ

一昨日のKinect勉強会Vol.3で軽く触れた、Kinect本のサポートページです。内容は本に載せたプログラムと補足説明、正誤表です。校正している間にも本の内容が一部古くなってしまったので、本を買われた方には目を通していただきたい所です。


書名
キネクトハッカーズマニュアル
著者
@hagino3000 + 小野 憲史
発売日
2011-08-26
価格
2,604 JPY (256ページ)



Sphinxで生成したドキュメントをgithub:pagesにアップする

github;pagesはアンダースコアから始まるディレクトリを無視するらしく、sphinxが生成する_staticディレクトリの中のcss, jsファイルが参照できずに404になってしまう。一体どうしたものかと調べたら、それ用のsphinxのエクステンションがあった。

とりあえずアップできた。

github:pages便利ですね。コメント欄はfacebookの奴にしてしまえばサポートページもこれだけでいける気がする。

第3回Kinect勉強会を開催します

会場が変わって今回は品川の日本マイクロソフト本社での開催です。なんでかと言うとShibuya.NIはマイクロソフトのコミュニティ支援サービス(UGSS)公認のグループになったからですね。

既に定員に近くなっていますが登録はこちらから。

内容

キネクトハッカーズマニュアル」について

担当: @hagino3000
時間: 15分
ネイティブアプリなにそれ怖い、という人向けに書いたKinect本についてあれこれ解説します

KINECT for Windows SDKによる開発と応用

担当: 日本マイクロソフト 太田氏
時間: 25分
本セッションでは、KINECT for Windows SDKSDKが提供する機能、及び、その使い方を解説します。
色々と夢広がるKINECTですが、KINECT自体は単なるセンサーに過ぎません。本セッションでは、KINECTWindowsの諸機能やWindows Phone 7との組合せによる応用方法についても解説します。

NUI x Business

担当: @kaorun55氏
時間: 25分
KINECT関連をビジネスにするときの経験談。ライセンス関連や必要な知識などについて。 技術的な要素よりも、KINECTを含めたソフトウェア開発全般的なお話になる予定

NUIみたいななにか(仮)

担当: @nekonomics氏
時間: 25分
今作っている、「NUIみたいな何か」について話をしたり、デモをしたりする予定です。時間の長いLTみたいになるかなと思います。詳細はまた後ほど追記します。

LT
  • KINECTAndroidを使ったロボットについて by @hirotakaster
  • Processing で簡単Kinect プログラミング by @ksasao

Kinect本を執筆しました

Amazonのページができたので詳細告知します。

書名
キネクトハッカーズマニュアル
著者
@hagino3000 + 小野 憲史
発売日
2011-08-26
価格
2,604 JPY (256ページ)


概要

Kinectを使ったアプリケーションを作るための基礎知識から応用コードの解説。Kinectハック実例紹介、チームラボインタビュー等々。私はひたすらコードを書きました。

対象読者

  • Kinectハックに手を出してみたい人
  • Kinectのドライバに何を使おうか悩んでいる人
  • プログラムは書けるけど画像処理はさっぱりという人
  • プログラムは書けるけどネイティブアプリはさっぱりという人
  • エンジニアじゃないけどKinectで何ができるか知りたい人

解説コードは主にC++、あとJavaScriptを少し使っています。C++といってもKinectをマシンに繋いでから初めてC++Hello Worldをやった人間が書いているので難しいコードは出てきません。

内容

私が書いた範囲だとこんな感じです。

Kinectの各パーツの解説
深度センサ、ビデオカメラ、チルトモーター、アレイマイク、加速度センサ、LEDについて。各センサーのスペックや特許技術について書きました。
Kinectのドライバについて
libfreenect, Kinect SDK for Windows, OpenNIについてそれぞれの特徴と差異の解説。どのドライバ使えばいいの、みたいな話とか。Kinect SDKが出るのがもうちょっと遅かったら載せられない所だった……。姿勢認識技術の違いも。
ドライバのセットアップ
libfreenect, Kinect SDK for Windows, OpenNIのインストールから最初のコードを動かす所までを解説。
OpenNIプログラミング
OpenNIの基本からユーザー検出、スケルトントラッキングの利用方法まで。
画像処理とOpenCV
Kinectから得られたデータをOpenCVで加工する方法について。ここでも各ドライバを使ったコードを載せています。
openFrameworks
C++のメディアインタラクション製作環境のopenFrameworksについて。openFrameworksの使い方、Kinectを扱うためのアドオン(ofxKinect, ofxOpenNI)の使い方。
Kinectを使ったアプリケーション開発
ジェスチャー認識を使ったPCの操作。深度画像を使ったインタラクション。入退室検知Webシステムとか。それぞれのコードと解説。openFrameworksを多めに使っています。
その他
NUIの話、ドライバを使わずにUSBのコントロールパケットを叩き込んでKinectを操作してみたり。Webブラウザ連携(Canvasを使った深度画像の描画、Node.js)。OpenNIとKinect SDKの共存。Kinectハックの歴史など。

サポートサイト

発売される頃にはgithubにコードアップします。ドライバのバージョンアップ対応もそちらで。

Amazonでは既に予約できます。若干中二っぽいタイトルですがよろしくお願いします。

サイボウズのスケジュールをGrowl通知する

Nodeで取ってきて、growlnotifiyに突っ込んでみた。サイボウズガルーンのAPISOAP(xmlをHTTP POSTで叩けばいい)だけど、ドキュメントが見つからなかったので元々あったライブラリをNodeで動く様に改造して使った。

cybozu-connectがjQueryを使っていたので、jsdomでWindowオブジェクトを作ってjQueryをロードした。

直近30分のスケジュールを取得してGrowlするコードはこんな感じ。
あとは更新のあった掲示板の内容を全てFastladderにぶち込んだりしたい。

#!/opt/local/bin/node

var Cybozu = require('./thirdparty/cybozu-connect.js'),
    growl = require('growl'),
    SETTINGS = require('./settings.js');

Cybozu.init(SETTINGS.JQUERY_PATH, function(API) {
  if (API) {
    growl.notify('Cheking Cybozu schedules.......');

    var con = new API.CybozuConnect.App(SETTINGS.URL, 
                                        SETTINGS.LOGIN_NAME, 
                                        SETTINGS.PASSWORD);

    //console.info('Login info ----------------');
    //console.info(con.user);

    // 直近60分のスケジュールを取得する
    var now = new Date();
    var offset = 1000*60*60;
    var end = new Date(+now + offset);

    var schedule = new API.CybozuConnect.Schedule(con);
    var events = schedule.getEvents({
      start : now,
      end : end,
      userIdList : [con.user.id]
    }, true);

    if (events.users && events.users[con.user.id]) {
      console.info(events.users);
      events.users[con.user.id].forEach(function(s) {
        if (!s.allDay) {
          glowlEvent(s);
        }
      });
    }
  } else {
    console.info('failed to init cybozu api');
  }
});


function glowlEvent(e) {
  var start = new Date(e.start);
  growl.notify(e.title, {
    title: 'Cybozu: ' + start.toLocaleTimeString(),
    sticky: true
  });
}