2008-04-28[n年前へ]
■「商品と欲望」と「優秀なセールスマンの人生の意味」
この資本主義社会に生きている限り、商品とは、他人の欲望を具体化したものです。自分が作りたいだけでは、それは商品とはなりません。それが、他人が欲望するものとなって初めて商品となるのです。
鴻上尚史「名セリフ!」文藝春秋社
…問題がひとつだけあるとすると、優秀なセールスマンほど他人の欲望をまず一番に考え続ける結果、自分の欲望がわからなくなることです。いったい、自分は何がしたいのか、自分の人生の意味は何なのか、全くわからなくなるのです。
鴻上尚史「名セリフ!」文藝春秋社
2008-06-12[n年前へ]
■自分なりの「年表」を作って眺めて、納得してみよう
『理系サラリーマン 専門家11人に「経済学」を聞く!』で、経済学者の先生方に話を聞く中で、よく歴史を辿りながら話を聞いたように思います。「株式会社」の歴史、「消費」の歴史、「社会」の発展の歴史……色んな歴史を描き辿りました。そこで、単行本を作る時に、世界の社会背景変化や技術発展や文化の歴史などを、自分なりの歴史年表を描きながら眺めなおし、そして、講義の中で聞いた話や経済学者や事件などをその歴史に重ねつつ、読み直してみたのです。その年表を綺麗にしたものが、単行本の末尾にオマケで付けたものです。
自作年表のドラフト版が下の画像で、その一部を拡大してみたものが右の画像になります。「年表」を作りながら、歴史の中で起きた大きなことの多くは、その時代を眺めてみると、どれも何だか当たり前で必然のことなのだなぁ、と今更ながらに感じました。
たとえば、グーテンベルグが活版印刷を「発明」し、聖書が印刷され、プロテスタント系の人たちが印刷機で宣伝ビラを大量に作り、そして、宗教革命が起きていく。そんな歴史の中では、経済活動も科学技術も絵画などの文化も、どれも密接に繋がっていたんだなぁ、などと色んな事象の因果関係をとても自然に納得することができました。
私たちは、因果関係を頼りに納得することが多いように思います。ということは、自分なりの「年表」を作り、その年表を作る過程で因果関係を納得することで、よくわからないこと・苦手なことも理解しやすいのかもしれない、と思ったのでした。
2008-06-27[n年前へ]
■電子ペーパーを使ってみた
東海大学とブラザー工業が提供する電子ペーパーを試用する機会があった。A4より少し小さく、十字キー+中央ボタンという入力インターフェースを持ち、厚さは5mm程度で、非常に薄く感じた。
表示コントラスト・解像度など、表示デバイスとしてはは十分満足できるレベルだった。後になって感じた要望としては、「(左右頁を折りたたむことで)A4 見開き2ページを眺めることができたら良いな」ということくらいで、不思議なくらい画質面には満足することができた。
電源を確保するのが難しい場所で電池消費の心配をしなくても済まず安心して使うことができたことも、多分良い印象を持った大きな理由の一つだったと思う。逆に言うなら、消費電力とサイズという点こそが、この種の電子ペーパーの優位点だと感じた、ということでもある。
あとは、紙と比べると「ユーザ・インターフェースがまだ自然に思えないこと」が解決されさえすれば、ぜひ使いたいと思う。
もちろん、「書き込みができない」「必要な部分だけ破り取ったりすることができない」といったことも感じる。けれど、システム手帳やノートPC(電子ペーパーと似た点も多い、右画像のタブレットPCである)やカメラをいつも持ち歩いているので、そういった「自分が行う書き込みや切り取り」といった要望はそれらの機器で解決してしまえば良い。「その場でただ読むだけ」という用途向けに割り切ってしまえば、電子ペーパーも良さそうだ。その「割り切り」が可能になるためには、私たちのライフスタイルの変化も伴う必要があるとも思うが。
2008-07-31[n年前へ]
■「計測・解析ソフトのハック」が実験系技術者の一番のLifeHack…かもしれない。
「計測・解析ソフトウェア/ハードウェアのハック」が実験系技術者の一番のLifeHack…かもしれない、と思っています。それを逆に言うならば、実験系技術者が費やす多くの時間を、計測・解析ソフトが消費しているということになります。つまり、一番時間を消費している部分の高速化をすることが、全体の高速化に効果的だろう、ということです。
そんなこんなで、何を今更…という、Perlで「シリアル通信とユーザインターフェース自動制御」のやり方を整理しておくことにしました。なぜかというと、経験的に「計測・解析ソフトウェア/ハードウェアのハック」は、シリアル通信制御とユーザインターフェース自動制御でほとんどの場合対応できることが多いから、です。しかも、計測・解析ソフトウェア/ハードウェアを外注したりすると、時間や費用が無視できないほどかかったりするわけで、そういったシステムを簡単に作ることができるということを知っていると、結構便利であるわけです。
たとえば、RBIOシリーズのような汎用(入)出力ボードは、お小遣い程度の価格で「シリアル通信経由でのハードウェア制御をする」ことが簡単にできます。それは、「計測ハードウェアのハック」がとても簡単にできる、ということです。
そして、Windows上(あるいはWindows上で動くソフトウェア)の作業を”勝手に”プログラミングすることができれば、「計測・解析ソフトウェアのハック」も簡単にすることができます。
というわけで、「シリアル通信とユーザインターフェース自動制御」ができれば、「計測・解析ソフトウェア/ハードウェアのハック」を簡単に実現することができるわけです。
とりあえず、たとえば、Perlで「シリアル通信とユーザインターフェース自動制御」を使うには、Win32::SerialPort と Win32::GuiTest という二つのライブラリが必要です。それらのインストールは、コマンドプロンプトから、
ppm install Win32-SerialPortという風に行うことができます。もっとも、インターネットに直接アクセスすることができない Proxy 内部からであれば、
ppm install http://www.bribes.org/perl/ppm/Win32-GuiTest.ppd
set HTTP_proxy=http://proxy.hoge.com:8080といったような、Proxy対策の環境変数設定をコマンドプロンプトから前もって行っておくことが必要になります。
set HTTP_proxy_user=hogehoge
set HTTP_proxy_pass=hogehoge
あとは、シリアルポート通信ようのConfigファイルを作る、プログラムを書く、ということだけです。たとえば、
!c:\perl\bin\perlといったライブラリを読み込む宣言をした後に、ソフトウェアのユーザインターフェース周りは、
use Win32::SerialPort;
use Win32::GuiTest qw( FindWindowLike GetWindowText SetForegroundWindow MouseMoveAbsPix SendMouse GetWindowRect SendKeys);
MouseMoveAbsPix(320, 160);というような感じで、マウスやボタンやキーボードを自動で動かすことができます。また、ハードウェア周りは、
SendMouse("{LEFTCLICK}");
SendKeys($fileName);
SendKeys("{ENTER}");
my $conf_file="serialport.conf";という感じで*、スイッチやモータを適当にシリアル通信(とRB-IOのようなお手軽I/Fボードで)制御すれば良い、という具合です。午前中に秋葉原に行って部品を買って、午後にスクリプトを2,30行書けば、それで自動計測・制御システムのできあがり、というわけです。
tie *PORT, 'Win32::SerialPort',$conf_file or die; pushSwitch(0);
close PORT or warn "Can't close serialport:COM*";
sub pushSwitch{
my ($portNo) = @_;
my $text=sprintf "PCT%d%d\n",$portNo,1;
print PORT $text;
}
*(なお、ここで使用している"serialport_conf"は、こういったserialport_conf.plで作成します)
2008-11-19[n年前へ]
■Rubyで「シリアル通信スレッドクラス」を作る
Rubyで「(Rubyシリアル通信ライブラリ(Windows用)TEXCELL を使った)シリアル通信スレッドクラス」を作りました。ソースコードとサンプルはここに置いておきます。”Microsoft Windows VISTAではほとんど見捨てられているような”シリアルポートでの送受信をRubyでスレッドを使って行うクラスです。Queueにデータを突っ込めば「シリアル通信スレッドクラス」から自動的に送信されます。また、受信した文字列が「(指定した改行コードで)一行になるたびに」receiveイベントが呼ばれるので(また、その際にQueueを指定しておけば受信行が自動的にそのQueueに追加されていきます)、読み込みのタイミング・必要な情報がまだ途中までしか読み込まれていない場合などの処理を気にすることなく使いたい、と考えながら作ってみた「シリアル通信スレッドクラス」です。
たとえば、COM3で受信した内容をコンソールに出力するだけであれば、このようなコードで動くはずです。
require 'comThread' receiveComThread=ComThread.new({:icomno=>3}) receiveComThread.start({:receive=>true, :receiveMonitor=>true}) sleep 60 receiveComThread.stopシリアル通信モニタプログラム(シリアルポート間で送受信されている内容を眺めるプログラム)も、多分10行くらいで書けると思います。チェックせずに書いてしまうと、こんな感じになると思います。
require 'comThread' q=Queue.new receiveComThread=ComThread.new({:icomno=>3,:rq=>q}) sendComThread=ComThread.new({:icomno=>4,:sq=>q}) receiveComThread.start({:receive=>true, :receiveMonitor=>true}) sendComThread.start({:send=>true}) sleep 60 sendComThread.stop receiveComThread.stop
「計測・解析ソフトウェア/ハードウェアのハック」が実験系技術者の一番のLifeHackかもしれない…と思っています。その思いを逆に言うならば、実験系技術者が費やす多くの時間を、計測・解析処理が消費していると思っているからです。そして、一番時間を消費している部分の高速化をすることが、全体の高速化に効果的だろう、と思っているわけです。というわけで、先週末はこの「Perlでシリアル通信とユーザインターフェース自動制御のやり方を整理しておくことにしました」の部分を「Rubyでシリアル通信とユーザインターフェース自動制御を書いて整理しておくことにしました」ということをしてみたわけです。この「シリアル通信クラス」と「ユーザインターフェース自動制御」があると、結構便利な実験屋さんもいるかもしれません。
そんなこんなで、何を今更…という、Perlで「シリアル通信とユーザインターフェース自動制御」のやり方を整理しておくことにしました。なぜかというと、経験的に(既成機器をを使わざるえないことが多い)「計測・解析ソフトウェア/ハードウェアのハック」は、シリアル通信制御とユーザインターフェース自動制御でほとんどの場合対応できる、からです。