197x timer with your messages

63
あなたのメッセージで 世界をつなぐ Timer Kuniaki IGARASHI/igaiga 2009.7.4 @GREE 197x

Upload: kuniaki-igarashi

Post on 20-Aug-2015

837 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: 197x Timer with Your Messages

あなたのメッセージで世界をつなぐTimer

Kuniaki IGARASHI/igaiga2009.7.4 @GREE 197x

Page 2: 197x Timer with Your Messages

自己紹介いがいが1977年生まれ

動画系組み込みプログラマ趣味:量子力学

高専カンファレンス運営

Page 3: 197x Timer with Your Messages

高専カンファレンス高専をキーワードに学生、教員、社会人が集まる勉強会

科学雑誌Natureのように各自の得意分野を分かりやすく説明http://kosenconf.jp/

Page 4: 197x Timer with Your Messages

基調講演(予定)

航空高専超小型衛星開発高専関係者以外でも参加OK!

高専カンファレンスin 東京 2009.11.7

Page 5: 197x Timer with Your Messages

開催実績東京 2008/6, 122009/4

北海道 2008/9

福井 2009/2九州 2009/5

Page 6: 197x Timer with Your Messages

全国各地で開催するので

Page 7: 197x Timer with Your Messages

ustreamでつないでチャットで会場とコラボする

Page 8: 197x Timer with Your Messages

でも、会場でPCを持ってる人はいいけど、ない人はチャットを読めない

Page 9: 197x Timer with Your Messages

PCがないなら表示すればいいじゃない

Page 10: 197x Timer with Your Messages

おk。

Page 11: 197x Timer with Your Messages

つくった。

Page 12: 197x Timer with Your Messages
Page 13: 197x Timer with Your Messages

TwYMTimerwithYour

Messageshttp://code.google.com/p/twym/

Page 14: 197x Timer with Your Messages

TwYMIRCメッセージを表示できるタイマー

動作環境Mac OS X Leopard

Quartz Composerruby 1.8.6 / 1.8.7

Page 15: 197x Timer with Your Messages

Quartz Composermacに標準で入ってる

グラフィカルなデモを作成できる開発環境

Page 16: 197x Timer with Your Messages

TwYM frontend タイマーIRC/ustreamメッセージ

Page 17: 197x Timer with Your Messages

TwYM QC code

Page 18: 197x Timer with Your Messages

問題はどうやってIRCからQCへ

データを送りこむか

Page 19: 197x Timer with Your Messages

QC は外から入力できる形式が非常に限られている

Page 20: 197x Timer with Your Messages

最初のバージョンの通信方式

Page 21: 197x Timer with Your Messages

IRC (ustream chat)

nadoka(ruby IRC bot)

YAMLRSSQuartzComposer

Page 22: 197x Timer with Your Messages

問題点一定時間発言をまとめて1つのRSSにしていたので発言→表示の遅延が

最大20秒

Page 23: 197x Timer with Your Messages

なんとかしたい

Page 24: 197x Timer with Your Messages

案:mootoh さんの

SocketReaderPatchつかわせてもらう

Page 25: 197x Timer with Your Messages
Page 26: 197x Timer with Your Messages

これであっさり解決とおもいきや・・・

Page 27: 197x Timer with Your Messages

現在のQuartzComposerではなぜか動かない

orz

Page 28: 197x Timer with Your Messages

案:unix shell patch

Page 29: 197x Timer with Your Messages

QCのsampleについてくる

unix shell commandの結果を表示するpatch

/Developer/Examples/Quartz Composer/Plugins/CommandLineTool

Page 30: 197x Timer with Your Messages

しかし

Page 31: 197x Timer with Your Messages

使っていると

画面が勝手に拡大されていく

バグに遭遇

Page 32: 197x Timer with Your Messages

1ヶ月足踏みorz

Page 33: 197x Timer with Your Messages

やさぐれていたある日

Page 34: 197x Timer with Your Messages

なんか使えそうなpatchをみつけた

Network Receiver

Leopardあたりで入ったみたい

Page 35: 197x Timer with Your Messages

Network Receiver

別の Network Broadcasterからデータを受け取れる

Network Receiver

This patch receives the text sent on the local network by the Network Broadcaster patch.

Page 36: 197x Timer with Your Messages

Network Broadcaster

Network BroadcasterThis patch sends text over the local

network using UDP broadcasting or multicasting. The sent text can be received by compositions on other computers using the Network Receiver patch.

Page 37: 197x Timer with Your Messages

つまりこいつらはUDPできゃっきゃうふふ

通信している

NetworkBroadcaster

Network Receiver

UDP

Page 38: 197x Timer with Your Messages

Broadcasterをさしかえればおk

UDP

Network Receiver

IRCBot

Page 39: 197x Timer with Your Messages

どんなフォーマットで送ってるのか調査

NetworkBroadcaster

Network Receiver

UDP

Page 40: 197x Timer with Your Messages

“Apple”って送る場合は“\0\0\0A\0\0\0p\0\0\0p\0\0\0l\0\0\0e”

って送ればいいよ

http://arrifana.org/blog/2007/11/leopards-quartz-composer-and-network-events/

Page 41: 197x Timer with Your Messages

やってみた

Page 42: 197x Timer with Your Messages

rubyで送ってみる

require 'socket'socket = UDPSocket.open()socket.connect("225.0.0.0", 50001) # address , portsocket.send("\0\0\0A\0\0\0P\0\0\0P\0\0\0L\0\0\0E", 0)

NetworkReceiver

Page 43: 197x Timer with Your Messages

NetworkReceiverへは\0\0\0[英字]

で送れることが判明

Page 44: 197x Timer with Your Messages

・・・日本語は?

Page 45: 197x Timer with Your Messages

さらに調査

Page 46: 197x Timer with Your Messages

UTF-32BE(BE:BigEndian)で送ればいいよ

http://arrifana.org/blog/2007/11/leopards-quartz-composer-and-network-events/

Page 47: 197x Timer with Your Messages

UTF-32BEって聞き慣れない

どんなライブラリを使えばいい?

Page 48: 197x Timer with Your Messages

ruby1.9は組み込みライブラリkconvでUTF-32BEに変換できる!!

キタ━━━(   )━(ω・́ )━(・ω・́)━(`・ω・́)シャキーン━━!!

ruby1.8.6の場合は外部ライブラリのrbuconvを使えばおkhttp://www.yoshidam.net/Ruby_ja.html

Page 49: 197x Timer with Your Messages

さらにやってみた

Page 50: 197x Timer with Your Messages

ruby1.9.1で送ってみる# -*- coding: utf-8 -*-require 'socket'require 'kconv'socket = UDPSocket.open()socket.connect("225.0.0.0", 50001) # address, portstr_u32BE = Kconv.kconv('いがいが', Kconv::UTF32, Kconv::UTF8)socket.send(str_u32BE, 0)

http://igarashikuniaki.net/tdiary/20090420.html

Page 51: 197x Timer with Your Messages

NetworkReceiverへは

UTF-32BEで送れることが判明

"\0\0\0A"はUTF-32BEでASCII範囲を指定してたのね

Page 52: 197x Timer with Your Messages

ここまでわかれば・・・

IRC側にNadoka

(Ruby IRC Bot Library)を使って発言をQCへ送りこむ

Page 53: 197x Timer with Your Messages

IRC (ustream chat)nadoka(ruby IRC bot)

UDP通信(UTF32-BE) 

QuartzComposer

Page 54: 197x Timer with Your Messages

TwYMTimerwithYour

Messageshttp://code.google.com/p/twym/

Page 55: 197x Timer with Your Messages

採用実績札幌Ruby会議01

Genesis Lightning Talks勉強会カンファレンス高専カンファレンス

Page 56: 197x Timer with Your Messages

Genesis Lightning Talksさとうようぞうさんの手で音が出る機能が追加されましたありがとうございます!

Page 57: 197x Timer with Your Messages

注:ustreamは

同アカウントが複数いるとkickされる

別のIRC client でustream にログインするときは注意

Page 58: 197x Timer with Your Messages

まとめ

Page 59: 197x Timer with Your Messages

QuartzComposerへはNetwork Receiver を使うと

UDP通信でUTF-32BEで入力できる

Page 60: 197x Timer with Your Messages

ustreamニコニコ生放送

空間の制限を外す

Page 61: 197x Timer with Your Messages

youtubeニコニコ動画

時間の制限を外す

Page 62: 197x Timer with Your Messages

TwYM

時間と想いを共有

Page 63: 197x Timer with Your Messages

TwYMopen source

(New BSD License)で公開中!

http://code.google.com/p/twym/