2013/12/01

BloggerからOctopressに乗り換えました。

Blogger、悪くはないんだけども、やっぱりもっとサクッと楽に書ける方が良いなと最近は思うようになりました。
マークダウンとか使いたいなーとか。コードもっと楽に貼りたいなーとか。
そしたら、Octopressというものを発見。

なんでもハッカー用のブログツールだそうです。github pagesにホスティングしています。
たしかに、いろいろいい感じです。こちらに乗り換えることにしました。

URLは変わらずblog.takuma7.comです。こちらのブログはリダイレクト前のtakuma-art.blogspot.jpに戻ります。

2013/09/19

「サイボウズ・ラボユース Hackathon 2013夏」に参加してきました。


レッドブル飲み放題に惹かれて「サイボウズ・ラボユース Hackathon 2013夏」に参加してきました。結果から言うと優勝してiPad miniゲットしました!w

↑こんな感じのインターン

全国から5人集まって3日間オフィスと旅館でレッドブルを飲みまくりながらなんでも好きなソフトを開発しまくろう!というハッカソンでした(ほんとに何を作っても良い、規定なし)。メンターにはサイボウズ・ラボの社員の方々がついてくださります。
ハッカソン自体参加するのが初めてだったので新鮮でした。

他の参加者が色々話を聞いてみるとなかなか優秀な人ばかりで、やべぇ、こんな中でやっていけるのかwと恐々としてました。ていうか5人中4人がセプキャン経験者でした。ちなみに講師の方々は3人ともセプキャンでも講師をされていた方々でした。謎のセプキャン率w

ハッカソンが始まって他の参加者は早々にテーマを設定してしまってコーディングにとりかかっている中、僕はなかなかテーマが決まらず焦ってました。テーマが決まってからは使ったことないけど初めて使ってみたフレームワーク( Sailsとか)がうまく動かなくて一日目を潰すという結構悲惨というかヤバい状況でした。

形にするのさえヤバいのではないかという状況だったのですがなんとか最後の追い込みで形にすることができました。いつもこんな感じなんでこの性格直さないといけないなーw

ちなみに、僕のテーマは「インタラクティヴなリアルタイムプレゼンテーションシステム」です。名付けて"Pinteraction"。発表者が出しているスライドと同じものが聴衆の手元でも見れ、聴衆は発表者に対してなんらかのインタラクションが可能なプレゼンテーションシステムです。


考えたきっかけはオリエンテーションの中でインターン中の情報共有システムとしてkintoneを使うという説明の時にやたら長いURLがスライドに表示されそれを手打ちしないといけない場面があり、これ超めんどくさいなーと思ったことです。URLとかが手元に届けばいいなと。
これを発展させて、むしろスライド自体手元で見れれば良いよね、どうせスライドが手元で見れるんだったら現在進行中のプレゼンと同期すればいいよね、と考えていきました。
実際学校とかでも使ってくれたら超便利だろなーと思って。

というわけで機能をまとめると
  • スライド(PDF)をアップロード→Slideが作成される
  • Slideのshowページには「プレゼンをする」ボタンがあり、これをクリックすると新たなSessionを作成するページに飛ぶ
  • Sessionを作成すると他のユーザもそのSessionを見ることができる
  • 発表者がスライドを動かすとそのSessionを見てる聴衆のスライドも同期して動く。もちろんautoplayモードはon/offできる
  • 聴衆はコメントを投稿できる。投稿したコメントはニコニコ動画よろしく全員のスライドの上を右から左へ流れる
  • スライドに含まれるURLは自動的に抽出されユーザに提示される
  • facebookでログイン
といった感じのシステムを構想し、実際に作りました。
SlideとSessionという2つのモデルがあり、Slideはアップロードしたスライドそのものを、SessionはSlideを発表する度に作られる発表の場を表します。つまり実際にプレゼンをする時は発表者も聴衆も同じSessionにアクセスすることになります(ビューは異なる)。

実装はNode.js上でExpress, Socket.IOなどを用いPDFの表示にはPDF.jsを使いました。PDF.jsよくわかんねーw

さて、言葉だけだとなんのこっちゃという感じだと思うのでSessionの画面のデモ動画:

Pinteraction: Interactive, realtime syncing presentation system from TaKUMA7 on Vimeo.

左が発表者、右が聴衆の画面です。異なるfacebookアカウントでログインしています。
両者が同じSessionにアクセスし、発表者がスライドを動かすと聴衆のスライドも動いていることが分かると思います。聴衆側のビューの左下にある水色になっているボタンは自動再生モードがonになっていることを示していて、これは聴衆が自分でスライドを進める/戻る動作をするとoffになります。自動再生モードがoffになっている場合も今現在どのページが発表されているのか聴衆は青いステータスバーにより確認できます。聴衆側のビューにはコメント投稿フォームがあり、ここにコメントを打つとニコニコ動画のようにコメントが流れます。
こんな感じ。

ちなみに他の参加者は
  • Twitter上の発言のつながりを3Dで可視化するクライアント
  • QRコードに余裕で収まる(実行ファイルの大きさが1KBちょっとという変態的な)テトリスの開発
  • ニコニコ動画の炎上動画をリアルタイムで取得しユーザに提示するシステム
  • Gunosyのようなレコメンデーションであるが今まで興味のなかった対象を広げてくれるレコメンデーションシステム
などを作っていました。なんかよくわかんないけどすげーなと思って見てました。

みんなレッドブル片手に深夜2時とか3時に寝て朝は5時とかに起きるということをやっていました。僕はそんな早起きできないので7時とかに起きてました。それでもかなり睡眠時間短いけど。

さて、3日目の夕方、作ったソフトをデモを交えて社長をはじめサイボウズ、サイボウズ・ラボの方々の前で発表しました。ニューヨークで発表しました(サイボウズのオフィスの会議室とか応接室にはニューヨークやら松山やら東京やらの地名がついていて中の雰囲気もそれをイメージした装飾がされている)。

そして、なぜか僕のやつが最優秀に選ばれてしまいましたw意外だったけども嬉しかったです。賞品としてiPad miniを頂きました。ちなみに早速使ってます。思ってたよりQOLあがるヽ(^。^)ノ

この3日間で計約15本のレッドブルを飲みましたw
旅館の冷蔵庫に詰め込まれたレッドブル達

なかなかのペースですねー。でも、もっと飲めたかもしれない(・∀・)笑

ランチ・ディナー等で社員の方々と交流したり、旅館で他の参加者の人と夜通し作業しながら仲良くなったり楽しかったです。サイボウズ、サイボウズ・ラボの方々ありがとうございました。



発表資料:

2013/03/11

Suzuri: マルチユーザ認識可能なテーブルトップインタフェース

マルチタッチディスプレイの発展により、近年テーブルトップインタフェースが続々と製品化されてきている。

テーブルトップインタフェースは複数人での協同的な作業において非常に直感的で有用なものだ。だけども、「誰がどのタッチをしたのか」といったことまでは分からないのが現状。

「誰がどのタッチをしたのか」が分かることは結構重要。すぐに思いつくメリットとしては、作業履歴・状態を保存できたり、権限を考慮した操作が可能になるといったこと挙げられる。複数人での協同作業がより直感的になり、かつ操作に幅が出ると考えられる。

マルチタッチが普通になっている今、マルチユーザへと移っていくことは進化の方向としては妥当じゃないだろうか。そっちの方が直感的だし。現状のように、自分のタッチがアノニマスなタッチの1つでしか無いとか気持ち悪い。

関連研究としてはMERLによるDiamondTouchや、SchmidtらによるHandsDown, IdLensesなどがあるけども、何れも大規模ユーザにおける個人レベルの識別までは達成できていない。

今回作ったSuzuriは公共空間への設置を前提とした、「誰がどのタッチをしたのか」を個人レベルまで識別可能で手軽に使用可能なテーブルトップインタフェースシステム。使用イメージは以下のようになっている。

  1. スマートフォンでブラウザを開き、指定webサイトにアクセス&ログインするとマーカ(テーブルトップ上でどのスマートフォンがどこにあるかを示す)が表示される
  2. マーカ下のボタンをタップする
  3. 手がスマートフォンと関連付けられ、トラッキングが開始される
  4. 今後この手による操作は全てこのスマートフォン(=個人)と関連付けられて処理される

百聞は一見に如かず。以下の動画をご覧頂きたい。この動画ではお絵かきアプリケーションのデモが行われる。

Suzuri: the most natural multi-user tabletop interface ever from TaKUMA7 on Vimeo.

中央の白い長方形がキャンパスであり、タッチディスプレイになっている。青い輪郭の手(=未認証の手)でタッチ操作をしても線が描かれることはない。しかし、スマートフォンを取り出しサイトにアクセス・ログインし、出てきたマーカ下のボタンをタップすることにより輪郭がオレンジに変化する。オレンジの輪郭の手は認証済みの手であり、今後この手による操作はすべて認証に使用したスマートフォンと関連づいて処理される。各タッチは各手に関連付けられているので、各タッチ操作はスマートフォン(=個人)と関連づけられることになる。

"Suzuri"という名前は、スマートフォンを書道の硯に見立てたことに由来している。

異なる硯に異なる色の墨汁を入れ、筆(=手)を浸すと、それぞれの筆がそれぞれの色で線を描く。こんな感じのイメージをメタファーとして名前を考えた。

実際に作ったものの外観は下図のようになる。手のトラッキングはKinectセンサにより得られる深度画像により前景・背景を切り離したシルエットを用いた。マーカにはARToolKitPlusのマーカを使用した。

公共空間への設置を前提とされているため、大局的な構成のコンセプトとしては下図のようになっている。
suzuriはテーブルシステム、suzuri-serverはwebサーバでありスマートフォンとsuzuriはsuzuri-serverを通して情報のやりとりを行なっている。今回実装したのはこの1ノード:
suzuriはsuzuri-cameraとsuzuri-tableから成り、suzuri-cameraは手やマーカのトラッキング、suzuri-tableはテーブル側のアプリケーションシステムとなっている。
suzuri-cameraはopenFrameworksで、suzuri-tableはCinderで、suzuri-serverはNode.jsを用いて実装を行った。また、それぞれの間で下図のような情報のやり取りが行われている。
関連研究に対する機能的な優位点:

  • 個人識別性
    • 操作と操作主を個人レベルで特定可能
    • 個人の認証方法がシンプルで直感的かつ確実
  • 手軽さ
    • 特殊な装置が不必要
    • 使用姿勢が無制約
    • スマートフォンの画面を補助ディスプレイとして使用可能

課題としては
  • 深度閾値画像から得られる手のシルエットのオクルージョンが無いことを前提としている。つまり、ユーザは互いの手を重ねたり触れたりしてはならない。
  • ARToolKitPlusのマーカ数は4096であり、公共空間でグローバルな個人-マーカ対応を行うことは不可能。というかそもそも低解像度カメラだとそんなに複雑なマーカは使えない
    • テーブル上でのみユニークであれば良い仕組みを導入すれば良い
      • WiFiフィンガープリント+マーカでユニークネスを出す
      • テーブルシステムに無線LANアクセスポイントをつけちゃう
      • 時間軸的ユニークネス
    • まぁ、大丈夫
みたいな感じかな。以上、高専の卒研で作ったSuzuriの紹介でした。