hirax.net::Keywords::「コントロール」のブログ



1999-06-26[n年前へ]

リモートカメラから世界をノゾこう! 

Macintosh用カメラ制御プログラムを作る

 今日もニュースを探しに
MAQ?MAK?MAC! ( http://www.maqmakmac.com/)
を見に行くと、おやおや何やら見たことのあるキーワードがある。これが「デジャブ」という奴かと一瞬思ったが、そうではないようだ。本WEBについての記載がある。ビックリだ。いや、ホント。
自分の興味の趣くままにやっているサイトではあるが、好きなサイトで「面白い」といってもらうと、とても嬉しい。また、そこから辿り
WebCatchを見る。「ノーラ」氏の文章には頭が下がる思いである。

 MAQ?MAK?MAC!には「もっとMacintoshに関連した話題が多ければ良いのになぁ?。 」とも書いてある。そう、私もMacintoshの話題が少ないとは思っていたのだ。Macintoshが多い私の職場の人々からも(次回の話への伏線)言われ続けてきたことなのである。ならば、MAQ?MAK?MAC!( http://www.maqmakmac.com/ )登場記念にMacintoshを使った話をやってみたい。

 というわけで、今回は急遽Macintoshを使った実験の話である。物語は、こんなジャンクを手に入れたところから始まる。ごくたまに、秋葉原でも見かける。もし見かけて、かつ、安かったら、迷わず「買い」だ。LEGOのMindstormsなんかと組み合わせたら、かなりかっこいいはずだ。

シリアル制御可能なカメラ

 これが、「Canon製ビジュアルコミュニケーションカメラ」である。シリアル通信でカメラの向きやズームピントを変えることができるものである。上下左右に首を振ることができるし、ズームやマクロ撮影も可能だ。発売当初は20万円位もしていたものだ。この後継機種も出ている。

 これを使って、何か面白いことをしてみようと思った。いや、はっきり言ってしまえば、ネットワーク上のMacintoshにこのカメラをつなげて、それを他のコンピュータから制御しようにしたい。今でこそ、そういったWEBサイトも多々あるが、今回の話の実験を行った時(確か2,3年前)にはまだ少なかったのだ。

 このカメラはジャンクとして手に入れたので、ソフトも何も付いていない。しかし、シリアル通信のコマンドは何とか判明したので、制御プログラムを作ってみた。といっても、単なるシリアルポートへコマンドを送りつけるプログラムである。

 プログラムはここに置いておく。名前もずばり、「のぞき見君」である。もちろん、Macintosh版なのでWindowsでは使えない。

のぞき見君 0.1anozokimi01a.sit ( sit形式 332kB )

 正式にこのカメラを持っているユーザーにも今回のような用途(イヤな用途である)であれば、このソフトはきっと役に立つと思う。

 今回(といっても作成したのはずいぶん昔だ)作成したプログラム「のぞき見君」の起動画面が下である。

「のぞき見君」の起動画面

 下がメニュー画面である。画面を見れば判ると思うが、全てのメニューをコマンドキーを用いてキーボードのみでコントロールするようにしてある(これが素早く使うためのミソだ)。

「のぞき見君」のメニュー画面

 このソフトをインストールして、Macintoshとカメラをシリアルポートでつないで、また、ビデオ出力もMacのビデオ入力につなげばとりあえず、接続完了だ。これで、Macintoshから自由自在に制御できるビデオカメラの完成だ。

 さて、次はネットワーク経由で制御するための作戦だが、何ら苦労(私の)は必要ない。例えば、innfo-macに登録されているremote-mouse-keysというようなソフトを使えば、ネットワークにながっているMacintoshのキーボードやマウスを制御することが簡単にできる。

ftp.flashnet.it/mirror/8/sumex-aim.stanford.edu/comm/remote-mouse-and-keys-10.hqx

 ビデオ画面の転送はもちろん、Cu-SeeMeでも使えば良い。最近はその手のソフトも多いだろう。それでは、今回のプログラム群を使った構成図を以下に示す。Macintoshはネットワークの自由度が高いので色々な使い道がある。

セットアップ構成図

 remote-mouse-keysとCu-SeeMeの組み合わせが軽くてお勧めなのだが、今なら
vnc (http://www.uk.research.att.com/vnc/index.html )
を使うといったやり方もアリだろう。これなら、プラットフォームをあまり選ばないので、WindowsやUnix系OSからでも制御できるし、一つのソフトで制御もビデオ画面転送も済んでしまう。ただし動作がまだ重いとは思う。

 それでは、今回のソフトを使った顧客例を紹介しよう。

 それは私の職場の「ち*の」氏の使用例である。彼は結婚間近であった。いずれ妻と住む新居にPowerMacintosh6100がこのカメラとともに設置してあった。彼は家の戸締りが気になって、職場から家にPPP経由でRemote-Accessを試みた。彼のPowerMacintosh6100は電話がかかってくるとともに起動音を発し、起動した。そして、彼は職場からの制御により、家のPowerMacintosh6100につながったカメラは首を起こし右へ左へと方向を変え、戸締りのチェックを始めた。彼の目的は達成された。家の戸締りは完璧であった。

 ただ一つの問題は、彼は知らなかったが、結婚間近の恋人が掃除をするために新居を尋ねていたことである。彼女の目の前で、電話の音とともに勝手にMacの電源が入り、「ジャーン」という音を発し、そして、そこにあるカメラが「ウィィィーン、ウィィィーン」と右へ左へ動き始めたのである。「ひどい恐怖を感じました」、と彼女は後に語ることになる。

 その後、彼の結婚がはたして実現したのか、それとも実現しなかったのかはここでは明らかにしない。

1999-08-20[n年前へ]

色空間の世界へ  (色弱と色空間 その3) 

Someday

 今回は、
色を伝える時に、考え忘れていたこと(色弱と色空間 その1) - We can work it out! - (1999.08.09)
で行った計算を少し改良し、なおかつ色空間の世界を自由自在に動かしてみたいと思う。今回のメインは「立体グリグリ」のテストである。

まずは、前回と今回の計算の違いは、

  • 前回はL,M,Sの各錐体の波長感度特性はRed,Green,Blueの単波長であるという仮定の元の計算
  • 今回はL,M,Sの各錐体の波長感度特性はRed,Green,Blueの単波長とは異なるという条件での計算
ということである。計算式は、前回の
  • X= 0.412391R + 0.357584G + 0.180481B
  • Y= 0.212639R + 0.715169G + 0.072192B
  • Z= 0.019331R + 0.119195G + 0.950532B
  • l = 0.16*X + 0.54*Y - 0.033*Z
  • m = -0.16*X + 0.46*Y+0.033*Z
  • s = Z
を組み合わせている(何か堂堂巡りのような感じもする?...)。計算としてはおかしいところもあるが、とりあえず、今回は色空間をグリグリ動かして実感することが目的なので、(計算がチャチなのは)勘弁して欲しい。

 それでは、通常のRGB色空間と第1色盲(赤色盲)のRGB色空間を以下に示してみる。今回はMathematicaの出力をJavaAppletで動かすことができるLiveGraphics3Dを使用している。そのため、RGB色空間をグリグリ動かすことができる。それどころか、ステレオ画像にしてグリグリ動かすこともできる。ステレオ画像の見方は交差法である。ぜひ、試してもらいたい。

 下のグラフの操作方法は

  • 操作 = 作用
  • マウス左ボタンドラッグ = 回転
  • シフトキー + 垂直ドラッグ = ズームイン・アウト
  • シフトキー + 水平ドラッグ = 垂直軸についての回転
  • コントロールキー + 垂直ドラッグ = 焦点距離の変更
  • マウス右ボタン垂直ドラッグ = 部品除去
  • "s"キー = ステレオ画像作成
である。詳しくは
PageLiveGraphics3D
( http://www.nikonet.or.jp/spring/sanae/LiveGraphic3D/LiveGraphic3D.htm)
を参考にして欲しい。それでは、RGB色空間(ハリボテバージョン)を自由自在に動かしてみよう。
通常のRGB色空間





第1色盲(赤色盲)のRGB色空間




 どうだろうか? RGB色空間を自由自在に動かせただろうか? 立体グリグリはできただろうか? 「ハリボテでつまらない」なんていう文句がある人もいるかもしれないが、気が向けば立方体の全面について描画を行うよう変更するつもりである。

 こういった、Javaなどを使用した立体表現は表現力が非常に高い。しかし、読み手によっては必ず見れるとは限らないところが難しいところである。読み手を限定してしまう可能性が有る。それは、まさに色覚異常に関する問題と同じである。

 TVが白黒放送からカラー放送に移行する当時は、カラー放送においても白黒TVでもきちんと識別できる色を考慮しながら放送しようとしていた、と聞く。白黒TVで観ている人が困らないようにである。しかし、現在はどうだろうか? 白黒TVで観ている人のことを考慮したTVなどほとんど無いのではないのではないか? 

 TV放送に限らずWEB、プレゼンテーションなどにおいて、最新の可能性と広い互換性を両立させていくためには、他の人を配慮する力が必要だと思う。そういう点においても非常に優れ、私がとても好きなWEBサイトが今日から一時停止してしまった。非常にさみしい。

 それでは、今回の色空間自由自在はこんな所で終わりにしたい。

2000-01-13[n年前へ]

WEBサイトの絆 

WEBの世界を可視化しよう




 目に見えないものを実感できるものにしようと思うことは多い。「直接感じることが出来ないものを感じられる形にする」という作業とその結果には非常にわくわくさせられる。それは、きっと私だけではないと思う。

 目に見えないものは色々ある。可視化して見てみたいものは多々あるのだが、以前、

の時に扱った、WEBのトポロジーなどもその最たるものである。WEBページはもちろん目に見えるわけではあるが、それらがどう繋がっているか、すなわち、WEB[= クモの巣(状の物);織物 ]そのものは目には見えない。

 ネットワークという目に見えない世界でWEBサイト同士がどう繋がっているか、それは企業のWEBサイト同士であれば企業間の繋がりを示すかもしれないし、公的機関のWEBであれば公的機関内部の繋がりが見えてくるかもしれない。そして、個人WEBであれば、個人どうしの繋がりが見えてくるだろう。そして、さらに考えを進めるならば、それが「WEBの繋がりだ」と端的に言い切ってしまっても良いと思う。

 そういう色々なWEBサイト同士が互いに結びつき合う、つまりWEBそのものを今回は可視化してみたい。その結果はきっと「WEBサイトの絆」を私に見せてくれるはずだ。

 例えば、ファイルシステムを可視化するものであれば、

  • xcruise( http://tanaka-www.cs.titech.ac.jp/~euske/index-j.html )
といったファイルシステムを宇宙空間に見たてて、表示するようなものがある。また、そこまで派手でなくても通常のファイラーやエクスプローラのツリー表示などもファイルシステムの構造を可視化しているといっても良いだろう。(そういえば、かつて富士XeroxがWindowsのファイルシステム中のドキュメントを色々面白い3次元表示で表示、検索してくれるソフトを扱っていた。なかなか面白いソフトだったと思うのだが、今ではどうなっているのか?)

 そして、今回の本題のWEBサイトのHyperlink構造を可視化するソフトウェアも、少し探しただけでも結構ある。例えば、

といったところだ。確かappleもこういったツールの開発を行っていたように思うが、どこに情報があるのか忘れてしまった。
 しかし、よく調べていないので間違っているかもしれないが、この辺りのソフト(appleを除く)はWEBサイト内のリンクのみに限られるようである。それでは、今回の目的とは違う。何しろ、今回知りたいのはWEBサイト同士のリンクの度合いである。WEBのトポロジーなのである。

 そこで、もう少し探してみる。すると、今回の目的にかなり近い情報が

に見つかった。perlでWeb Robotを作成し、"*.go.jp"のサイトに放ち、ハイパーリンクのデータベースを作成し、それを解析・可視化したものである。その結果のハイパーリンクの具合を可視化した図が、リンク切れで見ることができないのが実に残念だが、非常に役に立つ情報が満載である。ほとんど、私のしてみたいことそのものである。しかし悔しいことに、その結果の図を見ることが出来ない。そこで、同じようなことを自分でやってみることにした。

 やり方はどうしたら良いだろうか?宮久地氏と同じようにWeb Robotを作成して、データを集めるのが理想的だろう。しかし、「perl入門」を昨日やっと買ったばかりの私にはとても難しそうである。いや、もしそんなことをしたらとんでもないことになるに違いない。

 そこで、perlのlwp-rgetを用いて各WEBの内容をローカルのPC内にダウンロードした上で、勉強がてらperlで解析を行うことにした。と、思ったのだが、lwp-rgetが上手く動いてくれない。まだドキュメントをちゃんと読んでいないせいだろうか?何故か、ダウンロードの途中で終了してしまう。仕方がないので、急遽作戦を変更し、ダウンロード作業はlwp-rgetではなくてwgetを用いることにした。

 行った手順は以下のようになる。

  1. 5つのWEBサイトを広いWEB内から適当に選択する
  2. 選んだ各WEBサイト内のファイルについて、相互のハイパーリンクを抽出し、その数を解析する
  3. その結果を可視化する
 今回選択したWEBサイトはA,B,C,D,Eという5つのサイトである。A〜Dについては、サイト内の全てのページについて解析を行った。Eに関しては、サイト内の特定の1ページについてのみ解析を行った。A〜Dのサイトに関しては、名前は伏せておく。サイトEに関してのみ名前を明らかにしよう。Eは日記猿人というサイトの中の「今月の得票数」を示すページである。そう、今回選択したWEBは全て「日記猿人」という一風変わったコミュニティー内のサイト群から抽出したのである。

以下に、解析を行った結果、すなわちサイトA,B,C,D,Eの相互に対するリンク数を示す。

A,B,C,D,Eの相互に対するリンク数
↓から→へのリンク数
A
B
C
D
E
A
-
0
2
0
27
B
1
-
0
13
273
C
20
2
-
0
43
D
0
11
0
-
285
E
1
1
1
1
-
合計
22
14
3
14
/

 サイトE「日記猿人」へのリンクがムチャクチャ多いのは投票ボタンという形で、他のサイトからリンクがなされているからである。

 さて、上の表からではWEBの絆を実感できないので、「WEBの絆」を3次元空間に可視化するJavaアプレットを以下に張り付けておく。WEBサイトが5つあるので、それぞれのサイトをピラミッド構造(四角柱状)に配置した。
 各WEBサイトの表示色は、

  • A = 赤
  • B = 緑
  • C = 青
  • D = 黄
  • E = 灰
という五色を用いた。そういつぞやと同じ五色である。imacも五色(6?)だが、今回のターゲットサイトも五色なのである。

 それぞれのサイトから伸びる直線の長さは、そのサイトから他のサイトへ向かうリンク数に比例したものにしている。また、直線の太さもリンク数に比例させている。また、それぞれのWEBサイトを示す立方体の大きさは自分へ向かうリンク数に比例させている。ただし、サイトEの大きさはあまりにも巨大なため、リンク数に比例したものにはなっていない。また、サイトE、すなわち「日記猿人」、へのリンクは省略し、全てサイトEからの直線リンクを表示するだけにした。

 さぁ、WEBサイトの構造を自分の目でみて、そしてグリグリ動かして見てもらいたい。このグラフの操作方法は

  • 操作 = 作用
  • マウス左ボタンドラッグ = 回転
  • シフトキー + 垂直ドラッグ = ズームイン・アウト
  • シフトキー + 水平ドラッグ = 垂直軸についての回転
  • コントロールキー + 垂直ドラッグ = 焦点距離の変更
  • マウス右ボタン垂直ドラッグ = 部品除去
  • "s"キー = ステレオ画像作成
である。表示をステレオ画像にして、WEBの世界へダイビングしてみよう。

 Java表示が上手く動かない人のために、静止画も一応張り込んでおく。

WEB構造を可視化したもの

 どうだろう?この5つのWEB間のWEB構造から何が見えるだろうか?こういう解析を数多くのサイトに行うと非常に面白い結果が得られそうである。特に「日記猿人」のようなコミュニティーに対して行うと興味深い結果が得られるはずだ。
 私のような「日記猿人」の日記はほとんど読まない(サイトAに関しては大ファンであるが)人間にとっても興味深いのであるから、関係者にとってはきっと...の筈だ。

 さて、今回はテストのためにごく少数(5つ)のWEBの解析を行ってみた。いつか、こういった解析を広い範囲で行い、そして、時系列的な変化をも調べようと思う。銀河のvoid構造が観測され、可視化されたものを見たときもとてもわくわくしたものだが、WEBの構造・変化ならばどうだろうか?

 不思議なことに、そういうことを考えていると、「新宿都庁」と「思い出横町」が頭の中に浮かんできてしまうのは何故だろうか?押井守の影響だろうか。謎である。

 そして、こうも思う。WEBネットワークの中でWEBサイトは何を感じているのだろうか?これらのWEBサイトはもしかしたら孤独を感じているのだろうか、それとも繋がりを感じているのだろうか?あの時のページの中の一フレーズがその答えの一つなのかもしれない。

2000-04-02[n年前へ]

恋の力学 恋のグラフ配置編 

「明暗」の収束を見てみよう

 前回、

で漱石の「明暗」における登場人物
  • 津田
  • お延
  • 清子
  • 吉川
の関わりについて、それらの登場人物の出現分布の相関を計算することにより、考察してみた。(一応、念のために書いておくが、何より先に自分で読んだ印象ありきなのは当たり前の話である。)

 前回は、「津田」と他の登場人物の間の相関しか考えなかった。しかし、登場人物達の動きを考えていくならば、相互の相関を考えなければならないだろう。「続 明暗」の例を挙げるまでもなく、「明暗」の登場人物達がどこに収まっていくのか、「明暗」はどう収束していくのか、は非常に興味のあるところである。そこで、ラスト近辺の各登場人物間の相関を調べてみた。
 

ラスト近辺の各登場人物間の相関
 
津田
お延
清子
吉川
津田
1
   
お延
0.38
1
  
清子
0.61
0.42
1
 
吉川
0.10
0.063
0.26
1

 比較的大きな値の数値を青字で示した。有意であるかはともかく、この数値を見ると、話が「津田」、そして、「清子」を中心として動いていることが想像される(数値からだけでも)。

 このような相関、言い換えれば関係を登場人物達が持っているときに、この後人物達の関係はどこに収まっていくのだろうか?この相関値を「互いの関係度」と考え、その値に比例して惹かれ合うと考えたときに、登場人物達はどう動いていくのだろうか?そういったことを調べたならば、そこに示される結果は書かれることのなかった「明暗」の収束する先が示されているかもしれない。

 そこで、登場人物達を適当に配置して、登場人物間に働く力を考慮して、登場人物を動かした際に、結果として登場人物達がどこへ動いていくかを調べてみることにした。使うのは、もちろん"Sun"のJavaappletのプログラム例のグラフアプレットである。複数のものがあり、それぞれの関係が示された場合に、どのような配置になっていくかを調べる「グラフ配置問題」を解いてみるのである。今回の問題では、「恋のグラフ配置問題」を解くといっても良いだろう。

 もう、いきなりであるが、登場人物

  • 津田 = Tsuda
  • お延 = Oen
  • 清子 = Kiyoko
  • 吉川 = Yoshikawa
達を配置して、調べてみる。アプレットは、Sunのサイトからソースをダウンロードして、コンパイルして使っている。また、登場人物間に働く力は、先ほどの相関の値に比例する値を適当に入れてある。また、アプレットが動かない場合のために、静止画像も一応張り付けておく。さて、これが題して「明暗」アプレットである。
 
alt="Meian Java" Your browser is completely ignoring the <APPLET> tag! s

 
「明暗」アプレットの動作画面
(ホントはJavaのグラフアプレットの例)

 どうだろうか?「津田」を中心として、登場人物が蠢いているのがわかるだろう。適当に登場人物の位置をマウスで移動させてみると面白い。そして、互いの"Stress"を示してみると面白いと思う。

 また、「明暗」の登場人物達の運命を、自分のマウスでコントロールしてみるとどんな感じだろう?それとも、どんな位置に登場人物を持っていっても、結局収まる位置は変わらなかったりするだろうか? だとしたら、それがやはり本来の登場人物の収まる位置かもしれない。

 いつか、登場人物間全てを配置して、「明暗」における「人間関係のグラフ配置問題」でも考えてみたいものだ。「恋の力学シリーズ」は奥が深い、とつくづく思うのである。
 
 

2001-02-22[n年前へ]

Having Lost Kittens 

デスクトップの隣に


  夢を見た。たいていの夢がそうであるように、夢の内容をほとんど思い出すことができないのだけれど、何故か迷子の子ネコたちが泣いてばかりいる夢だった。夢の中では、童謡そのままに、子ネコたちを前にしていぬのおまわりさんが困ってしまっていたような気もする。つまりは、夢を見ていた人以外にはわけのわからない話だろう。
 その日、2月22日が「猫の日」だったことを知ったのは、たぶんその次の日だ。あるいは、知ったのはもっと後だったかもしれない。とにかく、その夢を見ていた時、私はそんなことは全然知らなかった。
 

 そういえば、私はネコを飼っている。といっても、そのネコが暮らしている世界は私のデスクトップの中である。一言で言ってしまえば、そのネコは誰でも知ってるnekoだ。いつもバックグラウンドで動かしているので、私の汚いデスクトップではなかなか見ることができなかったりするのだけれど、このkonekoたちはいつもいつも「私が作業している画面の後ろ」にいるのである。
 
 

 ところで、私の職場のデスクトップにはこんな風に二つの液晶画面が並んでいる。片方はデスクトップPCに繋がった普通の液晶ディスプレイで、もう片方はノートPCの液晶画面だ。結局、二つのPCの画面が並んでいるわけだけど、どこドアでキーボードとマウスを共有している。

 共有しているなんて言ってしまうと堅苦しく聞こえるのだけれど、マウスが画面の端にくると隣の液晶の画面へマウスのコントロールが移るようになっているだけだ。例えば、左のデスクトップPCに繋がった液晶ディスプレイの中でマウスを右端に持っていくと、カーソルがいつの間にか右のノートPCの液晶の中に移動していくのである。マウスは二つの隣り合った液晶画面の間を自由自在に動くのである。

 それに加えて、LANクリップボードで両者のクリップボードも共有しているので、こうなるともう二つのPCを使っているという意識が消えてしまいそうな程、とてもシームレスな二つのデスクトップを使って私は作業していることになる。

 そんな風にして、私が操るマウスの方は二つの液晶画面の間を自由自在に動くわけだけれど、私が飼っているネコたちは同じようにはいかない。一つの液晶画面の中、つまりは一台のPCに繋がったPCの中でしか動けないのである。マウスを追いかけて、左の液晶画面の中から右のノートPC液晶画面の方へ行こうとしても、隣の画面の中に入っていくなんてことはできずに、ただ画面の端をガリガリと爪でひっかいているだけなのである。

 迷子の子ネコたちの夢を見てから数日後、何故か上手く回らない頭でこのデスクトップを眺めていると、その中のネコたちがまるで夢の中で泣いていた子ネコたちのように見えた。迷子になって、自分の居場所から遠く離れて泣いていた子ネコたちのように見えたのである。

 その時ふと、このnekoをどこドアと同じようにネットワーク対応にしてみよう、と思い始めたのである。ネットワークに繋がっているPCのデスクトップの中を駆けめぐることのできるようにすれば、このkoneko達は画面の端をガリガリと爪でひっかくなんてことはしなくて済むかもしれない。そうすれば、私のデスクトップの上では、konekoたちは二つの液晶画面、二つのPCの中を自由自在に走り回るだろう。

 そうなれば、もうそのkonekoたちにとっては、離れたデスクトップであっても、それはもうすぐ隣みたいなものになるかもしれない。
 
 
 



■Powered by yagm.net