桜、抹茶、白、日記

名古屋市在住のC++使いのcoderの日記だったもの。

関西Kinect勉強会 vol.1 に参加

Kinectには興味があったので行ってきました。

関西Kinect勉強会 vol.1
http://atnd.org/events/19242

30分前の12時半に着いたら誰もいなかった。

13:20 [twitter:@cokkler]さん : Kinect初心者講座

  • 自己紹介
  • 私のKinect経験
    • 7月にKinectを入手したけど、OpenNIをさわり始めたのは9月中旬から
    • ダンエボにはまる
  • 本日のレシピ
    1. Kinect概要
    2. 学校のライブラリ(DirectX)でKinectを使えるようにしてみた
    3. ユーザー輪郭抽出
    4. ケルトン情報の抽出
    5. 適当なプログラムを作ってみた
  • Kinect概要
    • 価格は、Amazonで12,000円前後
      • たまにヨドバシ・ビックカメラでワゴンセールで一万円程
        • セッション資料は「ビッカメラ」ってなっていた
    • Kinectは単体版購入推奨
      • Xbox同梱版では別途4,000円相当のケーブルの購入必要
  • Kinectセンサー概要
    1. 距離センサーx2
    2. 映像センサー
    3. マイクx4
    4. @IT:Kinectセンサーの可能性
  • OpenNIとは
    • OpenNI(Open Natural Interaction)
    • NUIを利用したアプリをオープンにする為の開発者組織
  • OpenNIセットアップ方法
  • 学校のライブラリ(DirectX)をKinectを使えるように
    • Dx9ベースのゲーム用ライブラリ
    • 描画にDirect3Dを使っているが、2Dゲーム用
    • 初期化周りはOpenNIのNiSimpleViewerそのまま
    • Kinectの更新処理
      • Context.WaitAndUpdateAll : 全ての更新を待つ
      • Context.WaitOneUpdateAll : 1つの更新を待つ
      • Context.WaitAnyUpdateAll : 1つ以上の更新を待つ
      • Context.WaitNoneUpdateAll : 非同期
    • カラーバッファの取得
      • ImageGenerator
      • カラーバッファ取得用ノード
      • ImageGenerator.GetMetaDataでImageMetaDataを取得
      • PixelデータはR8G8B8
    • 深度バッファの取得
      • DepthGenerator
      • 深度バッファ取得用ノード
      • DepthGenerator.GetMetaDataでDepthMetaDataを取得
      • PixelデータはWORD。
    • DirectX用のテクスチャに変換
      • Direct3DTexture9::LockRectしてPixelデータを書き換え
    • できあがったプログラム
  • ユーザの輪郭抽出
    • 輪郭バッファの取得
      • UserGenerator
        • ユーザ情報取得ノード
        • UserGenerator.GetUserPixelsでSceneMetaDataを取得
        • PixelデータはWORD。
      • 輪郭とカラーを合成
        • 人の部分の抜き出しが可能
  • ケルトン情報の取得
    • 特定のポーズ検知しないとスケルトン情報
    • ポーズの判定
      • 関節の角度で判定するのがよさげ?
  • Kinectで作りたい物
  • 感想等

初心者向けのKinect入門という内容で分かり易かった。

14:00 [twitter:@tunemage]さん : Kinect入門以前

  • キネクト入門者の2つの壁
  • キネクト入門者の2つの壁
    • OpenFrameworks本体の任意のフォルダに展開
    • テンプレートをコピーしてプロジェクトを作成
  • 主なメソッド(図形描画)
    • ofXXX( arg );
  • 主なメソッド(アニメーション)
    • ofSetFrameRate( 60 );
    • void testApp::update()
    • {
    • }
  • 主なメソッド(カメラ情報)
    • ofVideoGrabberクラス
  • プラグイン
  • OpenFrameworks
    • お手軽
    • C++
  • 感想等

OpenFrameworksは全く未調査だったので色々興味深かった。
C++の経験がなくてC++Kinectやるのはちょっと辛い気もするけど。

14:15 [twitter:@kjkmr]さん

  • OpenKinect
  • flKinect
    • ソケットサーバ
  • デモ
    • アプリからKinectの首振り(縦)制御
  • デモ
    • カメラに近づくと水面に手を入れたように表現する
  • まとめ
    • Flashは重いので、openFrameworksを使うべき

dotFesの告知
http://www.dotfes.jp/

  • 感想等

やっぱりFlashを使うと表現は豊になりますね。全てをFlash上でやるのはパフォーマンスの問題がありますが。

14:30 [twitter:@ksksue]さん : Kinect x Android 3.1でKinect Rock

  • 自己紹介
    • 組み込み系に興味あり
    • アプリ側も面白そうだけど、ローれべる(ドライバ)に興味あり
  • Kinect x Android 3.1
    • きっかけ:Android 3.1 でUSBホストがサポートされたらい
    • AndroidKinectが動くんじゃね
    • RGBと深度情報は取得できない
    • LEDとモーターだけでもKinect楽しめるんじゃね?
  • デモ : ACER ICONIA TAB A500
  • 最後に
  • 感想等

フラワーロックKinectでやるっていうアイデアが秀逸でしたね。Android上でもOpenCV使えるようなので、画像処理もそっちに任せられそう。

14:50 [twitter:@kaorun55]さん : NUI x Business

前半:NUI x Business
  • 感想等

H/W及びSDKのライセンスについてのまとめが良い感じですね。現状は商用利用するにはXtion+OpenNIの構成のみ。
CV界の人の話を聞く限りでは、Kinectの面白い論文等も最近はめっきり減ってきていて、Kinectは研究者層から一般開発者層へとブーム降りてきた感じですかね。一通り開発環境も揃ってきたので後はアイデア勝負な感じかと。そういった商用への展開を考える上で、品質の話の流れというのは確かに今後出てくる話ですね。研究者の人達が重要視するのは品質ではなく結果が取れる事だと思うので。

後半:Agile
  • 感想等

主催者の方の希望という事でアジャイルについてのお話。
今回この勉強会に参加した目的の1つ。途中で思う所があって色々と突っ込みを入れました。

アジャイルのイベントでならいざ知らず、アジャイルを知らない人向けに、アジャイルは反復開発だとか、フィーチャー単位で実装を行うとか、教科書通りの話で興味を持って頂けるのかなぁと。

常日頃名古屋アジャイル勉強会で色々と意見が出るのですが、名古屋アジャイルの[twitter:@daxanya1]さんがいつも海外事情からの視点でのお話をよくしてくれます。良書とされているアジャイル本って殆どは訳書で、主にアメリカで書かれたものになるのですが、当然書籍で語られるのはアメリカの開発現場での話になります。欧米では内製の仕事が多いらしく、且つプロジェクト毎に社員が集められて、終了したら転職・解散を繰り返すような流れが多いとの事。また仕様元となる自社システム部門もそれなりの開発技術を持っているのが普通であるとの事。そういう開発の場合顧客って自社内だったりするので、巻き込みもし易いってのはよく分かります。

この辺の話から、アジャイル本で語られる事は日本の開発の現場と比べると話として理解はできるものの、あまり現実味の無い事が多く、また大事なのは何が問題となったかその原因をどうやって見つけてどのように改善するに至ったのかの経緯であると思います。書籍になるとその辺の経緯があまり語られずに結果や解法の話になっている事が多いと感じます。

よく見るセッションタイトルにアジャイルって入っているものを見てみると、カイゼン結果だけやツールの導入方法についてのみ語られる事が多く、その事例の顧客にとってはそれが価値を提供したかも知れないが、自分のお客さんにもそれが価値あるものかどうかはちゃんと考えないといけません。あと、自分達が楽になる方法が顧客への価値提供に直結するかどうかも、自分達の都合を顧客に押しつける事にならないか?なんて思います。長時間残業や深夜残業しなくても、顧客に同様またはより良い価値を提供できるようにする為にアジャイル開発に取り組むってのはアリだとは思いますけどね。

その辺を踏まえて突っ込みを入れた内容としては

    1. 反復することがアジャイル開発なのか?
      • 日本の受託開発において、お客さんはイテレーション毎に成果物を見せられて着いてこられるのか?
      • 日本の受託開発において、お客さんに価値を提供するってどういう事でしょう?
    2. アジャイル本ではCI環境がある事前提に語られる事が多い
    3. アジャイルの源流はトヨタ生産方式
    4. アジャイルでも大事なのはカイゼンではないか?
    5. ソフトウェア開発で全く新規に開発するか?
      • 普通は以前の成果物を何らかの形で流用する事が多いはず
    6. アジャイル開発導入といって現行のやり方を捨ててScrum/XP等を導入するか?
      • 破滅的なプロジェクトならいざ知らず、普通は現行のやり方をカイゼンする流れにするべきでは?


個人的にはアジャイルってのは

    1. チームの自己組織化
    2. 現場カイゼン

以外の何物でも無いと思っています。アジャイルラクティスってのはカイゼンする為の単なるヒント・ツールという認識。アジャイルってのはアジャイルマニフェストや原則に書かれている事を現場でどのように実践するかだから。そのカイゼンの英知としてプラクティス化したものがあるという認識。

16:00 ハッカソン

募集ページには記載はなかったけど、当日にいきなりハッカソン
前日にTwitterでPCとKinectを用意してって話はありましたが。そんなの準備できる訳ない。

真ん中後ろチーム
  • 指のトラッキング
    • 指の本数表示
    • じゃんけんにも応用が出来る?
真ん中前チーム
  • ピンポンゲーム
  • 感想等

雑談の内容としてはアジャイル開発の話ばっかりしていたんですが、そこでExcel管理なのをTrac管理に変更したいと上司に申し出したけど、断られたって人がいて色々話をしていました。その時は根気よくやるとか否定しないでとかいう話をしましたが、それでふと思い出したのが、Agile Charity Event in Osaka(d:id:youandi:20110429#p2)のパネルディスカッションで質問したかったのはこういう事だったんだよなと思うなど。その時に質問したのは

Q:開発者向けのツールはVCS, CI, ITSとか色々あるけど、(アジャイル開発を導入する上で抵抗がありそうな管理者層をサポートする為の)管理者向けのツールってありますか? 

だったんですが、ツールじゃなくて質問すべきだったのは、ツール導入を上司に抵抗された時にどのように説得したら良いかって事だったかも?と思いました。Trac/Redmineがヤダっていう上司を支援するツールも有ると良いですけどね。

左側前チーム
  • 螺旋丸アプリ
  • 深度バッファの表示アプリ(ソナー系)
左側後ろチーム
  • 音声により方位を検知する
  • 人認識をしてそこに画像を表示する
右側後ろチーム
  • バンドアプリ

懇親会 (於:ぐるなび - レストラン予約と宴会・グルメ情報 検索サイト)

まぐろ料理専門店。主に[twitter:@watari_dory]さんとお話するなど。

Groovyって業務で使うのに向いてないって言っている人もいますねー見たいな事を言ったら、[twitter:@kiy0taka]さんにウチは使っているよ!と突っ込まれた。まあ適材適所という事で。

参加しての感想等

Kinectの使い方ってほぼ情報が出尽くした感は有るので、後はアイデア次第なのかなぁと思った勉強会でしたね。

あと関西の勉強会って、割と今回みたいな感じなのかな。30分前に着いても誰もいなかったり。PCやKinectを持ってきてというアナウンスはあってもハッカソンをやるという話はなかったり。単に自分がスタッフやっているコミュニティが準備をちゃんとやり過ぎなだけなのかも知れませんが。

アジャイル開発については色々書きましたけど、自分の会社ではアジャイル開発はやりたくないなーって思っていたりしますけどね。だって大変だもん。なのでやれる所から・本当の問題についてはカイゼンしようって気力は湧きますが、全てをScrum化するとかいった所までは、ウチの会社ではやり過ぎだと思っています。