Monthly Archives: January 2010

次世代のインターフェイス、SixthSenseデバイスが見せる未来

一番最初のコンピューターは建物を埋め尽くすような大きなものだった。そしてそれが1つの部屋に収まるようになり、やがてデスクトップという机の上にのるサイズになった。さらにそれはノートパソコンとして外に持ち出せるぐらいまで小さくなり、今はポータブルデバイスと呼ばれ、手の平やポケットにも収まるようになった。

誰かが次はウェアラブル、体に身につけて使うようになると言っていた。僕たちがそれを日常的に扱うようになるのはもう少し先なのかも知れないけれど、このプラナフ・ミストリーのプレゼンテーションはその未来を垣間見せてくれている。


プラナフ・ミストリー :次なる可能性を秘めたSixthSenseテクノロジー | Video on TED.com

droga5の手がける事例に感動

droga5

droga5のサイトのcase studiesがやばい。キャンペーン打ってから人が動き始めるシーンは感動すら覚える。深夜に広告も捨てたもんじゃないと思った。

droga5は2006年にDavid Dogaによって設立されたクリエイティブエージェンシー。最近だとオバマ大統領のキャンペーンを手がけた事で有名。

case studiesは簡単な英語でテロップが入るからわかりやすいので全部見れ。

関連:
million
Droga5 wins two D&AD black pencils | Media | guardian.co.uk
DROGA 5 NAMED CREATIVITY MAGAZINE AGENCY OF THE YEAR – Campaign Brief

Multi Dimensional Mirror

鏡シリーズ第3弾。今回はセル上に区切られた画面内の時間がバラバラに進む鏡。
これは色々展開できそうなのでもうちょっと探ってみる。

source laboratory™ || Multi Dimensional Mirror

[AS3]Eventクラスのサブクラスを作る時の注意点

先輩に教えていただきました。Eventクラスのサブクラスを作る時は内部処理で参照することがあるからcloneメソッドとtoStringメソッドをオーバーライドしなくちゃいけないらしい。

という事は以前書いたDynamicEventクラスも修正しなくちゃいけない。

で、そのオーバーライドしたメソッドの中身はイナヅマtvログさんによると、こんな感じでいいらしい。

public override function clone():Event
{
return new DynamicEvent( type, bubbles, cancelable, [arguments] );
}
public override function toString():String
{
return formatToString( "DynamicEvent", "type", "bubbles", "cancelable", "eventPhase", [arguments] );
}

参考:

イナヅマtvログ » EventサブクラスにtoString,cloneを追加しなければいけない?
Adobe Flex 3 ヘルプ

Night Lightsがすごい


名だたるインタラクティブアーティストが参加するYesYesNoの新プロジェクトNight Lightsの映像が公開された。

このスケールのインタラクティブプロジェクションを見たのはBig Shadow以来かもしれない。すごい!

YesYesNo
YesYesNo – Night Lights

[AS3]他のオブジェクトに自由に値を送れるカスタムEvent

Event通知元から何かしらのメッセージを自由にリスナーオブジェクトに送信するためのメモ。

Dynamic化したカスタムEvent、DynamicEventを作り、dispatchEventでEventを送信する前にDynamicEventのインスタンスに適当にプロパティをぶっ込んでそのままdispatchEventで送ってやればOK。

これでEvent受信元は、引数で渡されるDynamicEventのさっき作ったプロパティから値が取り出せる。

DynamicEventクラスはこんな感じ。Eventクラス継承してDynamic付加してるだけ。

package
{
import flash.events.Event;
public dynamic class DynamicEvent extends Event
{
public static const SOMETHING:String = "something";
public function DynamicEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false):void
{
super( type, bubbles, cancelable );
}
}
}

送信元の処理はこんな感じ。

var event:DynamicEvent = new DynamicEvent( DynamicEvent.SOMETHING );
//適当なプロパティをこしらえる
event.message = "クソ眠い";
//Event発行
dispatchEvent( event );

Eventオブジェクトを受け取るイベントハンドラはこんな感じ。

hoge.addEventListener( DynamicEvent.SOMETHING, function( e:DynamicEvent )
{
//「クソ眠い」が出力される。
trace( e.message );
});

#追記
@lalalilaさんに教えてもらったDataEventを使えばString型のデータなら同様の事が可能っぽい。lalalilaさんありがとうございます。

#さらに追記
Eventクラスのサブクラスについてもひとつ注意点が。
[AS3]Eventクラスのサブクラスを作る時の注意点 | source-lab. note

「衝動保存の法則」というものを考えた

最近あれやこれやと規制をかけたがる世の中の傾向を見ていて「衝動保存の法則」というものを考えた。

どういう事かというと、人間が行動を起こそうとした時、もし何かに阻止されてしまってもその衝動はそのまま残るという話。

例えば、ケンカ三昧の学生がいたとして、彼にケンカをするなと言って禁止をするだけではその行動を起こすに至った衝動は行き場をなくし、また別の同種の行動を引き起こそうとしてしまう。
衝動保存というのはこのケンカをしようとした衝動は保存され、また他の素行を引き起こすということ。

このことから何かルールなどで人の行動に制限を加える場合、ただ行動を制限するだけではなく、その行為を引き起こした衝動を別の方向に向けて発散させてあげる必要があると言える。
さっきの例の場合、ケンカ少年のケンカを禁止するだけではなく、ケンカに向けている衝動をボクシングや格闘技などに向けてあげる等が考えられる。
これはあまりにも安直すぎるけども、その行動を観察しどんな衝動が起こっているのかは十分に分析する必要はある。

つまりあれをするな、これをするなというだけでは人は反発するので、その代替案を提案してあげれば自発的に動いてくれるのではないかという話。

この事を視点を変えて考えてみると、何か人を動かす企画を考える時にその企画が引き起こす行為が何の代替案になるのかと考えてみる。こうすれば成否の判断がしやすくなるのではないかと思う。
当然のことながら注意しなくてはいけないのは、元の行動を比較して代替案の方が何かしらのパフォーマンスが良くないといけない。例えば元の行動よりもリスクが少ないとか、リターンが大きいとか。

無尽蔵に選択肢の多くなった現代において人をゼロから動かす事はかなり困難なので、こういったところから考えていった方が意外と近道ではないだろうかと思う今日この頃。