2008-11-14[n年前へ]
■「色を変える"宝石"ガーネット」と「"変化"するMathematica」
「色を変える"宝石"ガーネット」の光吸収スペクトルを探すうちに、こんなページやこういったページに出会いました。こういうページを眺めていると、単純な色名では表現できない宝石の光吸収スペクトルを(数式処理プログラムの)Mathematicaで関数にして、さまざまな照明の中で、宝石が外に見せる色を計算するライブラリを作りたい、と思ったりします。
光吸収スペクトルは変わらなくても、照明光スペクトルや視覚スペクトルに依存して「見た感じ」が変わるようすをMathematicaで描いてみたいと思ったわけです。
そんなことを思いながら、もうすぐ公開される Mathematica の新バージョン、バージョン7を見ました。そのMathematicaが"変化"し続けるさまは、なぜか「色を変える"宝石"ガーネット」を連想させました。さまざまな機能が追加され、姿・見た目が大きく変わっているように見えても、少しその新たな装いを脱がしてみると、その下にはこれまで同じ「HEADで表現される構造が組み合わさったオブジェクト」が見えてきて、そこに色を変える宝石と同じさまを感じたのです。
色鮮やかに映える機能をとても魅力的に感じる人は、多いことでしょう。その一方で、特に変化するわけでもない内部の光吸収スペクトルや基本オブジェクト構造に不思議に心惹かれる人もいるように思います。「さまざまな機能を使って何かをしたい」と思う人もいれば、「基本構造を組み合わせて何かを作ってみたい」と思う人もいそうな気がします。
もちろん、その時の気分で「どっちが好き」かは変わることも多いかもしれません。このページを読む人は技術系の人が多いと思いますが、(この瞬間の)あなたなら「どちら」を好むのでしょう。どちらを選ぶのでしょうか?
2008-12-02[n年前へ]
■"Win32GuiTest.exe"で「Windows操作を再現するRubyスクリプト」を自動で作る
PerlでWindowsのGui操作を記述することができるライブラリ Win32::GuiTest を Ruby に移植した Win32GuiTest クラスをバージョンアップし win32GuiTest.rb として、ここに置きました)。変更点の一つめは、"pushButton" ""pushChildButton" "sendMessage" "postMessage" "getTopWindow" といった関数を増やしたことです。
そして、もう一つが「マウスイベントとキーボードイベントをフックし、得られたマウス操作やキーボード操作を Perlのソースコードとして保存してくれる」"Win32-GuiTest Recorder"(ここに Recorder.lzh としてコピーを置いておきます)が出力したPerlのソースコードをRubyスクリプトに変更する処理を、クラスメソッドとして実装したことです。たとえば、
require 'win32GuiTest' Win32GuiTest.convertPerlScript("pl.pl")といったコードを書けば、"Win32-GuiTest Recorder"が出力したPerlスクリプト"pl.pl"をもとに、Rubyスクリプトが出力されます。(たとえば、pl.plを変換した結果がpl2rb.rbになります)。
これで、PerlユーザだけでなくRubyユーザも(とはいえ、きっとPerlを使うことができる人はRubyも使うことができるだろうし、Rubyを使うことができる人はPerlも使えるだろう・・・と思っているのですが)、"Win32-GuiTest Recorder"を使ったWindows 操作のスクリプト自動生成のありがたみを味わえる、ということになります。
ちなみに、"Win32-GuiTest Recorder"の設定は、ダイアログのチェックボタンを下に示したスクリーンショットのように(とりあえずは)ユーザが処理した待ち時間やウィンドー情報を保持しておくのと、後で便利でお勧めです。
2008-12-03[n年前へ]
■ハードウェア要らず?の遠隔リモコン制御
「汎用赤外線リモコンI/Fが使えないエアコンを外出先からオン・オフするにはどうしたらいいか?」ということが話題になっていました。
使える材料として「遠隔操作できるPC」がある、ということなので、「(新たに追加する)ハードウェア要らず?の遠隔リモコン制御」を私も考えてみました。それは「CDトレイをソフト制御してエアコンのリモコンのオン・オフをする」という、実に原始的メカニカルな「アイデア」&「実装」です。
思いついたらやってみよう!というわけで、ソフトウェアを仕立て、万力でエアコンのリモコンを固定して、hirax.netが稼働しているサーバのCDドライブを外に引っ張り出し、実際に検証してみた結果が下に貼り付けた動画です。ケータイで撮影した動画ではわかりづらいかもしれませんが、CDトレイの角でリモコンのボタンがきちんと押されて、エアコンがピピッと鳴り、そしてエアコンからの送風が始まりました。
ちなみに、書いたコードはwin32GuiTest.rbを使ったので、こんな具合になります。「書いた」というほどのものでは、ないことが丸わかり…です。
require 'win32GuiTest' sleep 5 gui=Win32GuiTest.new gui.cdAudioDoorOpen動作としては、CDトレイが開き、リモコンのボタンを押し、何かにぶつかったことをCDドライブが検知し、CDドライブのトレイが(勝手に)自動で閉まる・・・という具合です。こういう動作をするスクリプトを外出先からPCを起動させる時に動かせば、あるいは、常時動いているhttpサーバからでも呼んでやれば、遠隔リモコン動作システムのできあがり、ということになります。
というわけで、今日作ってみたガラクタは「ハードウェア要らず?の遠隔リモコン制御システム」です。
2008-12-04[n年前へ]
■LEGO Mindstorms NXT で作ったイメージ・スキャナ
「 LEGO Mindstorms NXTで作ったイメージ・スキャナ」が面白い。MATLAB/Simulink でLEGO Mindstorms NXTを操作し、「紙送り」と「先端をピンホール加工した光量センサ」をサーボモータで移動制御させ、Mindstormの光量センサから得られたデータに対して、「ピンホール光学系」のボケ補正のデコンボリューション補正処理をする、という仕組みになっている。
そんな動作機構・実装方法を考えるのも楽しいが、それが動くさまを眺めてみるのも、やはり面白い。そして、さらに動作機構と「自分ならこう作ってみたい」と考えてみたりするのが、何より楽しい。
2009-02-28[n年前へ]
■Matlab/Simulinkの試用版
Matlabや「Simulink」のブログのように、Matlab/Simulinkを使った記事を書くことがあります。Simulinkでモデルを作り、検証シミュレーションやハードウェア制御プログラムを組んでみて、その結果について紹介してみたりすることがあります。
そんな時、実際にMatlab/Simulinkを使ってみたり、Simulinkモデルを使ってみたりしたい、と思う人もいるかもしれません。そんな時、一番手っ取り早いのは、Mathworks社から15日限定の試用版をダウンロードして使ってみる、ことです。あるいは、学生さんなら迷わずわずか$99の学生版を購入することです。
それでわからないことがあったら、サイバネットシステム社などの無料紹介・体験セミナなどを受講してみると良い、と思います。
というわけで、これからは各種言語ソースやMathematicaノートブックと同じように、何かSimulinkモデルを作ったら、そのモデルをhirax.net内に置いていこうと思います。そのために、試用版の入手先などを今日は書いてみました。