hirax.net::inside out::2009年09月

最新記事(inside out)へ  |   年と月を指定して記事を読む(クリック!)

2009年8月 を読む << 2009年9月 を読む >> 2009年10月 を読む

2009-09-01[n年前へ]

Microsoft C++ 2008 Expressで「OpenMP対応のOpenCV」と「”消しゴム版画風”画像作成ソフト」をビルトする 

 読めばワクワク楽しくなる「詳解 OpenCV」を読み、何だかOpenCVを使ったプログラミングをしたくなったので、無償で使うことができる開発環境Microsoft Visual C++ 2008 Express Editionで、先日、OpenCVの最新(trunk)版をビルドしてみました

 ちなみに、Windows SDK for Windows Server 2008 and .NET Framework 3.5をインストールすると、Microsoft Visual C++ 2008 Express Editionでも、OpenMP(並列計算ライブラリ)を使う設定でOpenCVをコンパイルすることができますので(上位バージョンなら必要ファイルが最初からインストールされています)、なるべく高速に計算させたいという人は、上記ライブラリをインストール後に、OpenCVライブラリをビルドし直しても良いかもしれません。

 ちなみに、そういった作業をしてみると、上記必要なヘッダファイルや、デバッグ版・リリース版のライブラリが、CisualC++のディレクトリにインストールされ使うことができるようになり、それらファイルを読みに行くようしておくことで、Microsoft Visual C++ 2008 Express Editionで「OpenMP対応のOpenCV(trunk版)」をビルドすることができました。

 ・・・と、これだけではつまらないので、せっかくですからOpenCVを使って書かれている”消しゴム版画風”画像作成ソフト(「ナンシー"小"関 風 パッチもん版画」作成ソフト)を(ソースファイルを修正し)、ビルドしてみることにします。ソースファイル・バイナリはここに置いてありますので、そこから試しに nancyKOseki20060719.cpp をダウンロードします。そして、3行目の

#include "stdafx.h"
をコメントアウトし、メイン関数の
int _tmain(int argc, _TCHAR* argv[])
int main(int argc, char* argv[])
とします。そして、OpenCV trunk版をビルドすることで作成される各種ライブラリ
highgui111.lib
cxts111.lib
cv111.lib
cxcore111.lib
ml111.lib
cvaux111.lib
cvhaartraining.lib
を「追加の依存ファイル」に追加したプロジェクトを作成し(ここで作成したプロジェクトファイルを使いまわすと、設定が面倒でなくて良いかもしれません)、そこに上記で修正した nancyKOseki20060719.cpp を加え・ビルドすると、Miscrosoft C++ 2008 ExpressでOpenMP使用のOpenCV trunk版を用いてコンパイルした「”消しゴム版画風”画像作成ソフト」ができあがる、というわけです。

 今回は、OpenMPを使って書きなおしたわけでなく、単にMiscrosoft C++ 2008 Expressで(OpenMP使用の)OpenCV trunk版を使って、コンパイルを通るようにしてみただけですが、ソースファイルから実行できるアプリケーションを作成したり・自分なりのカスタマイズをしたりし始めると、少しワクワクしてくるかもしれません。

 そして、クロス・プラットフォームの便利さを活用し、たとえば、iPhone版mixiアプリ版WEBアプリ版・・・といったものと同じように、さまざまな環境下で動くように改造したりしてみるのも面白いかもしれません。

2009-09-02[n年前へ]

MacOSX版「ミニチュア写真作成ソフト(本城直季風ミニチュア写真作成ソフト」について 

処理前写真処理後画像  OpenCVと言えば、以前作った「ミニチュア写真作成ソフト(本城直季風ミニチュア写真作成ソフト)」のMacOSX版アプリケーション・インストール・スクリプト(当然アプリケーションも)が動かない、というメールを頂きました。

 調べてみると、インストール・スクリプト中の、

/usr/bin/sudo cp -n src dst
の -n オプションが原因でエラーが出ているようでした。この -n オプションは、ファイルコピー時の(もし同名ファイルが存在した場合のための)上書き禁止オプションです。通常のコマンドとして実行はできるので、このオプションを付けることで、なぜスクリプト実行時にエラーが出るのかは未だわかりません。ただ、エラー発生の直接の原因は、この-nオプションのようです。
 とはいえ、この-nオプションを消すと、スクリプトは途中まで、システムにすでに入っている(私が添付したライブラリよりも新しい)ライブラリを消してしまうことになるので、システム・ライブラリを壊してしまうことになります。 そのため、このスクリプトから-nオプションを消すことは、絶対にできません・・・。

 いつの間にか、Mac OSを使わなくっていました。しかも、恐ろしいことに、ソースやプロジェクトファイルやMac用の開発用資料をどこに置いたのかもすべて忘れてしまいました。OpenCVで遊ぶことを再開したこともありますし、もう一度、Mac OSX版を適当に書きなおして作ってみることにでもしましょう。(また、ソース・ファイルなどは後で置いておきます)

 それまでは、WEBアプリ版の画像処理ソフトや、そういったツールで作った(下に張り付けたような)画像ジェネレータで、お茶を濁していて頂けますでしょうか・・・。

2009-09-03[n年前へ]

「すごい人」と「器用な人」と「それ以外の人」と 

 多くの場合・場所・状況下で、「すごい人」と「器用な人」と「それ以外の人」に分かれるような気がします。それら3つのタイプの中で、一体、どのタイプの「人」がいいのかといった話は、どうでもいい話です。けれど、そんな風に、3つのタイプに分かれる(分けることができる)ような気がします。

 そういった分類をすることに、意味があるかどうかはわかりません(いえ、きっと、そもそお意味のないことだろうとも、感じています)。ただ、もしも、そういう分類をすることができて、そして、そういった分類比率に場所によって違いがあるとしたならば、「器用な人」が多い場所は、何だかつまらないような気がします。「器用さ」というのは、意外につまらなく、大きい結果が生まれることが少ないように思われるのです。だから、「器用さ」を追求しようとすることは何だかとてもつまらないと感じています。

 「すごい人」は滅多にいませんから、どこか片隅に置いておいて、「すごい人」でもなく、「器用な人」でもない、「それ以外の人」の人は、どうすれば良いのでしょうか。「不器用」であることに感謝すべきなのでしょうか、それとも、「器用」でないことを残念に思うべきなのでしょうか。それが、今日、「はてはて?」と、頭に浮かんだことがらです。

2009-09-04[n年前へ]

マニア心をくすぐる「オート110 フルセット」 

 「世界最小・最軽量レンズ交換式デジカメ」といったニュース・リリースを見るたび、ペンタックスに、画質は良くなくても構わないから、Auto 110オート 110 ) をデジタル化して欲しい、と願っててしまう。メーカが出さないのであれば、自分で改造しようと考え、オークション・サイトなどを眺め「部品取り用ジャンク品」を入手しようとしている。
 部品取り用ジャンク品を探しているのにも関わらず「ペンタックス オート110 フルセット」や、「Auto 110一式」といった、各種パーツがすべて揃っているものなどを眺めてしまうと、マニア心がくすぐられて、ついつい欲しくなってしまう。こういった、綺麗なセット相手では、デジカメ化改造のためにバラすことなんかできるはずにもないのに、である。

 やはりここは、Auto 110をデジタル化改造するのではなく、110フィルム(パトローネ)型のデジカメ・パック製品開発を「たのみこむ」しかないだろうか。それとも、ケースに入っている「コンプリートセット」は、博物館の中で工業商品の名品のように眺めるだけにしておいて、ジャンクっぽい本体をデジカメ化するのが良いのだろうか。

 一時期、いつもポケットにAuto 110を入れていた。そんな風に持ち歩くのには、本当に素敵なカメラだった。時には、(交換用レンズも何本かポケットの中に入れておき)レンズ交換をし、眺めているものにレンズを向け、メカニカルにシャッターを切る感覚は、実に心地良く・楽しかった。

 プレビュー用の液晶画面なんかいらない。けど、動画撮影機能は欲しいけど、あきらめる。Auto110型デジカメが欲しい。

2009-09-05[n年前へ]

「バッドなライフスタイル」と「バッド課税」 

 選挙が終わり、民主党政権となる。それにともない、「お酒(アルコール飲料)」の価格は一体どう変わっていくのかが、気になる。

 もしも、 本当に、「民主党税調副会長のインタビュー」通りの政策が本当に実現する(実現してしまうとすれば、現状の酒税税率とは、大きく異なる酒税が適用されていくことになる。

 アルコール度数が高い、けれど現在の税率は決して高くない焼酎や日本酒やワイン・サワー類・第3のビール類の値段が上がり、それに対して、ビールの値段が下がるということになるのだろうか。

 消費に関する課税は消費税に一本化し、個別間接税は「グッド減税・バッド課税」の考え方に基いた課税体系にするとし、酒税・たばこ税は「国民の健康確保を目的とする税に改めるべき」と指摘している。古川副会長は「これらは党として決定した話。政権を取れれば、その方向で抜本的な税制改革に着手したい」と述べた。
 「グッド減税・バッド課税」の基準として健康と環境を挙げ、健康という観点からたばこ税と酒税の見直しを考えるという。
 酒税 については「アルコール度数が高ければ、それだけ健康への負荷も大きい。アルコール度数を基準にして税金を掛ける」と述べた。現在、350ミリリットル缶でビールは77円、発泡酒は47円、第3のビールは28円の税金が課せられているが、「同じアルコール度数なら同じ税率にする」という。

 ざっと計算してみると、私のエンゲル係数ならぬ、酒税係数は5%ほどにもなっている。しかも、この5%の内訳は、「グッド減税・バッド課税」の考え方にもとづくならば、どれも増税しそうなものばかり、つまり安い酒ばかりである。・・・ということは、これからバッド増税の影響を大きく受け、私の酒税係数はますますアップするはずである。

 他のバッドなライフスタイルを過ごしている人たちは、これからどうするのだろう。(バッドなライフスタイルにもれなく付いてくる)バッド増税により、税収向上に大きく貢献するのだろうか、それともグッドなライフスタイルに移行していくのだろうか。

 とりあえず、「グッド減税・バッド課税」が始まってしまう前に、安酒をたくさん飲んで(買って)おくことにしよう。

2009-09-06[n年前へ]

「酒税制度」の「シミュレーション分析」 

 「バッドなライフスタイル」と「バッド課税」な時代になるかもしれない、だから、・・・というわけでもないが、「酒税制度改革のシミュレーション分析」(リンク先は.DOCファイル)という論文を読んだ。これが、なかなかに面白い。論文の主題は、酒税改革が、(所得階級別の)家計に対しどのような影響を与えるのかをシミュレーション分析した、というものである。その主題自体も、とても興味深いのだが、歴史的背景・現状などに対する解説が面白く、思わず文章に引き込まれてしまうのだ。たとえば、こんな具合だ。

 戦前ではビールは高級酒として認識されていたことが現在でも影響を及ぼして高い税率が課せられている。現在、ビールを高級酒として認識している消費者は少数派であり、アルコール度が低いという特性と飲みやすさから言っても大衆酒として認識されるほうが多数派であろう。

(2-1 酒税制度の変遷 より)
 「ビール」が高級酒だという意識はなかった。ウィスキーが銀座に似合うなら、ビールは新橋に似合う、そんなアルコールだと思っていた。

 あるいは、こんな一節にも、引きこまれてしまうに違いない。
 酒税は改革によっても内税であるということから消費者に関心があまり持たれないという欠点がある。この欠点について、吉田(2000)は、「酒税は、本来日清、日露戦争の戦費調達や官営工場の拡大等の財政需要の拡大のために、酒類消費の背後にある担税力と課税上の容易さに着目して課税されてきた」としている。

(2-1 酒税制度の変遷 より)

 この論文では、「年間収入五分位階級別(第1分位:低所得~第5分位)・1世帯当たり年間の品目別支出金額,購入数量及び平均価格」やいくつかの仮定から、「所得階級別購入数量での酒税負担率」を算出していく。お酒好きな人なら、この論文をミステリ小説を読むのと同じように読んでみても、結構楽しめると思う。結論までたどり着いたあとの後味は、人それぞれ違うだろうが・・・。

2009-09-07[n年前へ]

「赤外線写真」(へ)の眼差し 

 今日は、「赤外線フィルター」のブログなど、なぜか赤外線関連のページへのアクセスが多く、不思議に思いました。その理由は、「赤外線撮影機能を持ったカメラによる水着盗撮」が話題に上っていたことによるものでした。

 その結果なのでしょうか、「IR 76 7.5X1 光吸収・赤外線透過フィルター(IR) 」がサイト経由で数枚売れていました。

 赤外線で写した大自然や大都会は、幻想的で美しいものです。しかも、自分が眺めている目の前の景色が、似ても似つかぬ景色に変身するさまには、本当に驚かされます。

 いつも見慣れている交差点も、赤外線で見てみると、何だか現実感のない不思議な世界に思えてきます。自分がよく知っている可視光の世界とは、違う世界が見えてきます。

カメラ付きケータイで赤外線の世界を見てみよう!?

 Amazon経由で売れたフィルターたちが、初夏の樹木や、冬の海や、太陽が明るい日向と日陰を作る景色に向けられるか、あるいは、夏の終わりのプールに向けられるのかはわかりません。ただ、「赤外線」で眺めるなら、人を写すより自然の方が魅力的だと思います。それを逆に言うならば、人は可視光で眺める方がよほど魅力的であるように思えます。それが、自然な姿なのかもしれません。

2009-09-08[n年前へ]

JSLocalWiki を改造し、綺麗なお気に入りノートを作ってみよう 

 自分専用のメモ帳として、JSLocalWikiを使っています。JSLocalWikiは、JavaScriptで書かれたWikiシステムで、ブラウザさえあれば動くのが便利です。そして、他に何もインストールする必要もなく、ただフォルダの中のファイルをダブルクリックするだけで使うことができる、というのがとても楽ちんです。複数人で使うWikiならインストール作業をする気にもなりますが、自分一人で使うなら、フォルダをコピーしてくるだけで使うことができるJSLocalWikiのような簡単小物Wikiはとても良い、と思っています。

 自分専用のWikiとして使っていると、気持ち良く使うことができるように、気に入ったデザインに装わせてみたくなります。そこで、GPLライセンスで公開されているhatenaのスタイルシートを、JSLocalWikiで使うことができるように改造して、自分だけのお気に入りのノートとして使うことにしました。

 「インストール作業をせずに、綺麗なデザインの簡単Wikiを使ってみたい」と思う人は、ひとつJSLocalWikiを使って改造してみてはいかがでしょうか。私が改造して使っているバージョンは、週末にでもサーバから(ファイル一式を)ダウンロードできるようにしておこうと思います。

2009-09-09[n年前へ]

「はてなスタイルシートを使えるJSLocalWiki」をダウンロードできるようにしました 

 「JSLocalWikiを改造し、綺麗なお気に入りノートを作ってみよう」で書いた、「はてなの(GPLライセンスにもとづいている)スタイルシートを使うことができるようにし、同時に、簡単な設定を前もってしたJSLocalWiki」をダウンロードできるようにしましたここにおいてあるJSLocalWiki_0_1_2_h.lzh(3.2MB)です。ダウンロードしたらフォルダを解凍し、”JSLocalWiki.html”をブラウザで開くだけで(あるいは、JSLocalWiki.htaを動かすだけで)、綺麗なWikiシステムが動き出します。デザインを変えたければ、CSSスタイルシートを指定している部分を「気に入ったスタイルシート」に変えてやれば、簡単に好きなデザインに変えることができます。右上の画像は、hatena_ryukyu-green.cssを適用した場合の動作画面例です(配布状態でのデフォルト設定)。

 WindowsのFirefoxやInternetExplorer環境下で動きます。それ以外の環境では、パス指定文字や(IE対応のため)Shift-Jis指定にした部分を変えてやれば、多分、動くと思います(Windowsを使っていないような人は、別に「簡単」「綺麗」でなくてもいいもんね、と考えていたりもしそうですが)。

 ライセンスは、添付スタイルシートはGPLライセンス、改造版JSLocalWiki.html・JSLocalWiki.htaは、ApacheライセンスVer2.0に従います。

2009-09-10[n年前へ]

「はてなスタイルシートを使えるJSLocalWiki」の動作画面例 

 「はてなスタイルシートを使えるJSLocalWiki」をダウンロードできるようにしたので、その動作画面、つまりCSSスタイルシートを切り替えた際の、JSLocalWiki改造版の動作画面をいくつか並べてみました。

 並べて眺め、その時の「自分の好み・気分に合ったもの」を選んで使えば、小まめにWikiに記録をしてみようか、という気分になれそうに思えます。

 そして、CSSを入れ替えたりしているうちに、JSLocalWikiにも手を入れ、動作も自分好みに変えていくようになったりするかもしれませんね。


「はてなスタイルシートを使えるJSLocalWiki」の動作画面例   「はてなスタイルシートを使えるJSLocalWiki」の動作画面例

「はてなスタイルシートを使えるJSLocalWiki」の動作画面例   「はてなスタイルシートを使えるJSLocalWiki」の動作画面例

「はてなスタイルシートを使えるJSLocalWiki」の動作画面例「はてなスタイルシートを使えるJSLocalWiki」の動作画面例「はてなスタイルシートを使えるJSLocalWiki」の動作画面例「はてなスタイルシートを使えるJSLocalWiki」の動作画面例






2009-09-11[n年前へ]

Ruby Win32GuiTest のアップデートをしました 

 Ruby版 Win32GuiTest クラス、つまり、WindowsのGUI操作など(その他にもMicrosoft Officeを利用したOCR機能なども実装していたりしますが…)をRubyで行うことができるWin32GuiTest (win32GuiTest.rb)の修正作業を少しました。

 修正内容は、コールバック関数を使う部分において「きちんと後片付けする(DL.remove_callbackを呼ぶ)ようにした」という点です。FindWindow▽○×といった辺りの関数を直した、ということになります。修正前のものを使うと、indWindow▽○×をし続けた場合、DL.callの回数上限に引っ掛かりエラーが発生しましたが、その不具合が今回の修正でなくなります。

2009-09-12[n年前へ]

「99%の努力」を支える「1%の才能」 

 「努力」と「才能」という文字を前にすると、特に、「99%の努力と1%の才能」というような言葉を目にすると、少し考え込んでしまいます。そういうわけで、下の「関連お勧め記事」にあるようなことを書き連ねているのだろう、と思います。

 下に書き写した杉浦日向子の言葉を読んだとき、ふと「なるほど」と思わされました。( 「杉浦日向子の食・道・楽 (新潮文庫) 」中の「体に悪いスポ根」から)

 秀でたスポーツ選手は、1%の才能と99%の努力から成る、といわれる。その、1%の才能こそが、99%の努力を支えるのであって、ベルモット抜きのドライマティーニがありえないように、ほんの微(かす)かな才能の香りすら見いだせなかったら、努力のきっかけもまた得られないではないか。1%が重要なのだ。

 「努力」するか否かが大切だけれども、それでは「努力」をする意思・その意思の支えは何なのだろう?という問いに、あなたならどう答えるでしょうか。

 ちなみに、この「体に悪いスポ根」は、杉浦日向子がスポーツ競技に対し、「運動神経に関し1%の才能もない側」から書いたエッセイです。

 そして、自分は、運痴で良かった、とほっとする。

2009-09-13[n年前へ]

エクセルで「ランダム・ウォーク」アニメーション 

 「Excelでランダム・ウォークを計算させ、アニメーションさせる」と結構気持ちが良いものです。下の動画は、Excelで50個の粒子をランダム・ウォークさせている動画です。動画が始まって数秒した辺りから、計算が始まり、粒子がブルブル振動しながら拡散していきます。



この計算・グラフ表示は、(マクロ機能は使わずに)Excelの反復計算機能を用い、反復計算の回数は1回、計算タイミングは手動し、F9キーを押しっぱなしにすることで、行っています。Excelファイルは、RandomWalk.xls(35kB)としてダウンロードできるようにしてあるので、それで実際に試すことができるようになっています(反復計算の設定は上記通りにしておいてください)。

 計算の中身は、各粒子のX,Y座標を示すセルに対し、(単純に書くと)「自分のセル=自分のセル+乱数(-0.5~0.5)」と入力してあるので、反復計算を1回するたびに、各セルの値が少しランダムに動いていく・・・という具合です。

 最左上のセルは、計算内容をリセットするためのフラグです。0を入力して、F9を一回押すと、計算内容がリセットされます。ランダムウォークの計算をする時には、この最左上セルに1を入力し、F9を押せば(押し続ければ)刻々と計算が実行され、グラフ上でランダムウォークのアニメーションを眺めることができます。最左上のセルの値を「各粒子のX,Y座標を示すセル」にかけているので、(反復計算を行った後でも)計算内容のリセットを行うことができる、というわけです。

 Excel作業につかれたとき、粒子たちに「ランダム・ウォーク」をさせ、プルプル震えながら動いていくようすを眺めてみると、何だか少し疲れがとれるかもしれません。

エクセルで「ランダム・ウォーク」アニメーション






2009-09-14[n年前へ]

人のいない「アメ横」を夜歩く 

 夜遅くまで、店が開いている街もあれば、早く閉まる町もある。8時過ぎには、駅前通りが閉まったシャッターで埋め尽くされている町もあるし、夜11時を過ぎても、人で埋め尽くされている街もある。

 先日、上野と御徒町の間にあるアメ横近くで飲んだ。気づくと11時も過ぎ、間もなく次の日になろうか、という時刻だった。飲んでいたのは、地下にある店だったのだが、店を出て階段を上り外に出て驚いた。

 アメ横が、まるで数時間前とはまるで別の通り、別の町、のような感じがしたからだ。そこには、不思議なほどに人がおらず、人気のない通りには、ビルから看板だけが目の前にある、…その不思議な感じがとても新鮮だった。

 昼の閉まったシャッターは味気ないような気がするけれど、深夜に見る「下ろされたシャッター」は何故か魅力的だ。昼の町とは別の顔を、夜の町は見せる。それが無性に気持ち良い。


2009-09-15[n年前へ]

JSLocalWiki でローカルファイル(ディレクトリ)へのリンクを張る 

 最近、インストール作業不要で動かすことができるJSLocalWikiを、はてなのスタイルシートを使えるようにした上で使っています。何か作業をするときには、たとえば、自宅サーバの環境設定をする時などは、その作業記録をJSLocalWikiを使って書くようにしています。

 また、その準備過程・作業内容をメモ書きするだけでなく、その作業ディレクトリへのリンクを張っておくようにもしています。こうしておくと、JSLocalWiki自体が(ほとんどのWikiクローンがそうであるように)更新履歴を管理しているので、結局のところ「いつ」「どのディレクトリで」「どんな作業を」「何のために」「どのようにしたか」といった5W1H的なことを記録することができるのです。

 逆に言えば、「いつ」「どのディレクトリで」「どんな作業を」「何のために」「どのようにしたか」といったことを、記録なしでは思い出せなくなってしまうのです。情けない話です。

 JSLocalWikiは、自分が使うどのノートPCでもデスクトップPCでも使えるように、USBメモリに入れてあります。そして、小さく細かな作業、つまりすぐに忘れてしまいそうな作業をする際には、その作業をJSLocalWikiのディレクトリ内に配置した「作業用ディレクトリ」で行うようにし、さらに作業内容を記録する際に、たとえば下のような具合にWikiに書き込みをして、

[[この作業を行ったディレクトリ:root\]]
Wikiからリンクを張っておくようにしています(ここでは、JSLocalWiki内の作業ディレクトリを"root"という名付けています)。こうしておけば、「その作業を行ったディレクトリ」を忘れてしまい、「どこで何をしたか」を忘れずに済むというわけです。

 たとえば、右の画像はFirefoxでローカルファイルにリンクを張り、そのリンクをクリックすることで(ブラウザ内で)ローカルディレクトリを開いた例です。こんな風にJSLocalWikiを使っていると、まるでそれが「USBで持ち歩くことができる道具箱」のような感じがしてきます。

 人それぞれの道具箱があると思います。あなたの道具箱は、どんな道具箱でしょうか。

JSLocalWiki でローカルファイル(ディレクトリ)へのリンクを張ろうJSLocalWiki でローカルファイル(ディレクトリ)へのリンクを張ろうJSLocalWiki でローカルファイル(ディレクトリ)へのリンクを張ろう






2009-09-16[n年前へ]

"Cocoa"プログラミングのワクワク感 

 AppleのAdvanced Technology Groupからかつて生み出された、ビジュアルプログラミング環境"Cocoa"は面白かった。当初の名称”KidSim”が的確に表現しているように、小さなこどもで簡単にシミュレーションをすることができる「開発・実行環境」だった。「物体」を作り(初期状態を決め)、その物体の動き・反応を決める「ルール」を作る、基本的にはそれだけでプログラムが完成する、というものだった。

 たとえば、(横に移動する)「ミツバチ」を作り、「たまにミツバチは移動方向を変える」「ミツバチの隣が花だったら、ミツバチは止まる」というルールを作って実行すると、「ミツバチが空を飛び、いつしか花を見つけて、その上に止まる」というシミュレーション・プログラムができあがる。そんなようすを紹介する下の動画を見れば、当時感じた"Cocoa"のワクワク感が伝わるだろうか。

 Cocoaはその後Createrと名前を変え、Stagecastから発売された。かつての"Cocoa"という名称を、AppleがOSXプログラミングのフレームワーク名称として流用してしまったことに加え、"Creater"という名称も実にありがちなものであることから、"Cocoa"に関する情報を検索するのも今では難しくなってしまった。"Cocoa" AND "Creater"で検索をしても、探したい"Cocoa"とは別の情報ばかりがリストアップされてしまう。そんあこともあり、(かつての)Cocoaはほとんど忘れ去られてしまっているのではないだろうか。

 十数年前、"Cocoa"に触れた時の「ワクワク感」を忘れてしまわないように、フレームワーク名称ではない"Cocoa"について書いてみた。

2009-09-17[n年前へ]

さよなら・レンタル・サーバ 

 9月末で、hirax.net用のレンタル・サーバを解約します。といっても、すでに先月半ばから自前サーバにDNSは移行させていましたので、実際にはすでにサーバ移行がされている状態です。

 ある程度不安定でも構わない(時折落ちていても構わない)WEBサーバは自前サーバで運用し、安定でないと困るメールサーバはGoogle Appsを使い(MXレコードをGoogle Appsのものに変え)、hirax.netを動かしています。

 昨日、『レンタルサーバを「捨てる技術」』という記事を読みました。

 ここのところ、レンタルサーバや自宅サーバはつくづく「レガシー」だよなと思うようになりました。我々は普段、何の気なしにレンタルサーバや自宅サーバにデータをロックインしていますが、そのたびに次から次へと提供される新しいサービスを利用する機会を無意識に失っていっているのではないか、こうしたサーバに支払う対価以上に機会の喪失という対価を支払っているのではないか、そんな疑念が頭をもたげてきたのです。
「サーバ買ったり借りたりしたら負けかなと思う」
まだ、今の段階では、「レガシーな自宅サーバ」を捨てることはできそうにありません。けれど、とりあえず「レンタル・サーバ」は捨てました。・・・とはいえ、それが一歩前進なのか、実は後退だったりするのかはよくわかりません。

 さて、「ある程度不安定でも構わない(時折落ちていても構わない)」と思っていたWEBサーバですが、想像以上に不安定になりました。そこで、今日はhttpdの監視&再起動プログラムをRubyで書き、動かし始めました。明日からはもう少し安定してくれると良いなと思いつつ、これまで長年サーバとして動いてくれたレンタル・サーバ・マシンに感謝する今日この頃です。

2009-09-18[n年前へ]

「赤外線投光による映画撮影防止技術」と「IRカットフィルタ」 

 「映画の盗撮を近赤外線LEDで妨害する技術、NIIなど開発」という記事を読んだ。「映画館のスクリーンを撮影することによる、映画のコピー動画作成」を防止するために、スクリーン裏から高輝度赤外線(IR)LEDを転倒させ、LEDの光でビデオ・カメラによる不法撮影の邪魔をしよう、という技術である。

 この技術では、映画館のスクリーン背面に波長780nm以上の近赤外線LEDを取り付け、背面側からスクリーン表面の微細な孔を通してスクリーンに投射する。
 もちろん、それなら、赤外線カットフィルターを用いて撮影を行ったら一体どうなるのだろうか?という興味が湧いてくる。記事中には、
近赤外線を低減するカメラ用フィルターによりノイズ光を回避できるのでは、との懸念については、「そうしたフィルターを装着することで近赤外線によるノイズ光源を目立たなくすることはあり得るだろうが、その場合は盗撮しようとする映画の映像そのものも暗くなってしまう」(越前准教授)として、問題は小さいとの見方を示した。
とあるが、この説明だけでは少し疑問が残るところだ。IRカットフィルターの780nm辺りの透過率と、可視光の透過率はどのくらい違うだろうか。コスト優先のIRカット「気味」フィルタでなく、誘電体多層膜を用いたIRカットフィルタで、可視光の透過率が95%以上はあり、赤外光の透過率が0.1%を切るくらいだろうか。この数値からすると、撮影画像中で、「ノイズ光源が見えなくなる」かどうかはわからないが、「盗撮しようとする映画の映像そのものも暗くなってしまう」という辺りは単純には納得しづらいところだ。IRカットフィルタを2セット重ねても、可視光の透過率は90%以上ある。その程度で、映像が暗くなる・・・とは思いにくい。

 IRカット・フィルターを使った場合、実際にはどう写るのかを実験してみたくなる。・・・まずはこの「見方」が妥当かどうか、見積もり計算でもしてみようか。

2009-09-19[n年前へ]

富士山と彼岸花 

 近くから見た富士山はとても大きい。また、富士山を遠くから眺める時、高い場所に行けばいくほど、富士山はより高くそびえて見える。低い遠くの場所から眺めていた時には近郊の山と並んで見えていたはずの富士山が、小高い場所に登ったりすると、いつの間にかとても大きく高く見えてくる。

 杉浦日向子を読んだせいか、旧街道を歩きたくなり、東海道・箱根路を歩いてみた。現在の東海道ならぬ、国道一号線は車通りが激しい。けれど、旧国道一号線ともなると、車もほとんど通らず、歴史散策を楽しむ人たちの道になる。そして、森の中に細く途切れ途切れに続く旧東海道ともなると、歩く人に出会うこともほとんどない。

 山中を走る旧街道はとても急だ。草で足もとが見えない道の端には、時折、彼岸花が赤く咲いている。そして、彼岸花が群集するその先には、高く大きな富士山がそびえている。

 息を切らせながら、人のいない山道を歩くと、昔の時代にタイムスリップしたような心地になる。昔も今と変わらず、この時期には彼岸花が咲いていて、人は富士山の高さに驚いていたのだろうか。

富士山と彼岸花富士山と彼岸花富士山と彼岸花






2009-09-20[n年前へ]

「映画版長編アニメ」と「グランドツアー」 

 かつてイギリスの裕福な家に生まれた若者たちは、大人になる儀式として「グランドツアー(Grand Tour)」に出たという。その長い旅行で使われた馬車の略称は、現代の日本でも"GT"という(車の)略称として残っている。

 春休みや夏休みには、日常を描いたTVアニメが長編映画として公開されることが多い。そうした映画を見ると、「グランドツアー」を連想してしまう。なぜなら、これまで慣れ親しんだ日常世界から遠く離れ、異世界に混じり試練を乗り越えて大人になりつつ、元いた場所に戻る…という「物語」が多いような気がするからだ。それは、やはり少し「グランドツアー」に似ているように思う。

 もといた場所に戻らない「グランドツアー」があるとしたら、それは一体どんなものだろうか。それは、たとえば、 惑星間グランドツアーと呼ばれた無人探査船「ボイジャー」のようなものなのかもしれない。

 映画を見た観客も、スタッフロールが流れた後には必ず日常に戻る。もしも、今も宇宙空間を先へ先へと進み続けるボイジャーのように、決して日常生活には戻らない「グランドツアー」映画、観客を二度と帰さない映画版長編アニメがあったたとしたならば、そんな映画を見てみたいと思うものだろうか?それとも、そんな映画は見たくないと思うものだろうか。

2009-09-21[n年前へ]

教育費と茄子の花は千に一つも徒はない 

 スラッシュドットでのコメントから知った、西原理恵子の言葉(毎日新聞の元記事)。
 西原理恵子の言葉だけをひきたいところだけれども、文脈背景の紹介上、林真理子の言葉も引用する。

林真理子> 独身のお金持ちの友人が電話してきて「私たちが払った税金をヤンキー(不良)の子に使われるのは嫌だ。民主党は何を考えているのか」と言っていた。

西原理恵子> 子どもが大きくなって年金を払い、高齢者を養うんですよ。ヤンキーが将来刑務所に行けば、もっとお金がかかる。人を人とするためには教育と職業が必要。それは国家が何よりも先にやらなければならないこと。議員の給料払うなら、ヤンキーの教育費に使え。

 教育・職業といったことは、西原理恵子のマンガ中で語られるリフレインのひとつだ。たとえば、「営業ものがたり 」なら「うつくしい のはら」あるいは、「朝日のあたる家」といったマンガ中に、繰り返し登場する。あるいは、対談でも時折口にする。

私はまいにち字をならいに行く。
字をおぼえましょう。
字がよめたら 世の中がわかる。
商売ができる。ごはんが買える。

「うつくしい のはら」冒頭

 「親の意見と茄子の花は千に一つも徒はない」ということわざがあるが、教育費もそういうものかもしれない。…うーん、そんなこともないか。

 教育とは、学校で習ったことをすべて忘れた後に残っているものである。

アルベルト・アインシュタイン

2009-09-22[n年前へ]

Mathematica 発色シミュレーション・ライブラリのバグ修正 

 Mathematicaによる発色シミュレーション・ライブラリのバグ修正を行いました。基準光を設定する関数"setRefLight"に間違いがあったので、訂正版をMathematicaディレクトリに ColorLib_amature_on_7.0_1.02.nb (5937kB)として置いておきます。Version 6.0以前向けのバージョンColorLib_amature.nb などについては、また後ほど修正版を置いておきます。

Mathematicaによる発色シミュレーション・ライブラリのバグ修正






2009-09-23[n年前へ]

Google Mapsでミニチュア模型風写真を作る 

 Papervision3D と Google Maps を組み合わせたデモを眺め、その表示画像からミニチュア模型風写真(いわゆる、ひとつの「本城直季風写真」ですね)を作ってみたくなりました。そこで、以前作ったミニチュア模型風写真作成ソフト(最新版は・・・ToyImage2だったでしょうか・・・?)を使って、適当に「Google Mapsのミニチュア模型写真」を作ってみました。それが下の画像です。

 右側の「地図そのままミニチュア模型写真」はさておき、さすがに「航空写真で作られたGoogle Mapsのミニチュア模型写真」はそれっぽく見えるのが、(遥か上空から撮影されているのですから)あたりまえの話とはいえ、面白いものです。

 もちろん、Google Earth表示でも同様なことが「もっとそれっぽく」できるわけですが、今日は、遊びがてら「Google Mapsでミニチュア模型風写真」を作ってみました。

Google Mapsでミニチュア模型風写真を作るGoogle Mapsでミニチュア模型風写真を作るGoogle Mapsでミニチュア模型風写真を作るGoogle Mapsでミニチュア模型風写真を作る






2009-09-24[n年前へ]

銭湯大好き 

 陽(ひ)が差す時間に銭湯に入るのが好きだ。まだ夕刻にならない時間に入る銭湯に入ると、まさに「至福」という言葉に浸(ひた)っているような心地になる。そんな言葉が体に浸(し)み入ってくるように思う。

 大学に入った頃、絵に描いたような、自由ならぬ自堕落な生活を送っていた。高校時代も、かなり「自由ならぬ自堕落」な生活を送っていたと思うのだが、その何十倍もの自由と自堕落を満喫していた。

 太陽が昇り、学生たちがキャンパスにやってくる頃、布団に入る。キャンパスの中にある寮だったが、別にキャンパスの中になくても全然不便でないし、仮に(大学から遠く離れた)網走に寮が建っていたとしても、きっと困らなかったと思う。そして、目が覚めると、太陽が傾く15時過ぎになっていて、16時から開く100円銭湯に行き、一番風呂を堪能する。

 主観的な朝風呂を(堪能した後に)あがるころには、客観的には西の空に太陽が沈む夕焼けの時刻になっている。そして、長い夜(主観的には昼)が始まる。そんな昼夜逆転しがちな時空に浮かんでいるのが、京大吉田寮という「島」だった(参考:河合隼雄捕捉計画)。

 あの頃から、明るい時間に風呂に入り、そして昼間の風に火照った体を冷やされるのが好きになった。銭湯のおっさん・おじいさんの世間話をBGMに聞きながら(明るい時間に風呂に入りに来るのは、そういう年代が多いのだ)、むちゃくちゃ熱い風呂に入るのが気持ち良くなった。銭湯の一番風呂は、熱湯風呂にも負けず劣らずな熱い風呂なのが普通だ。

 というわけで、今日は、自転車で明るい太陽の下を走る途中に、伊豆長岡温泉の共同浴場、湯らっくすに漬(つか)かってきた。ここは熱さ直球勝負の風呂が自慢の共同浴場だ。もちろん、周りのおじさん・おじいさんたちの話も面白い。漁仕事を終えたおっさんたちの話は、とても楽しく聞き惚れてしまう。

 ピリピリ熱い風呂に漬(つ)かり、その湯を堪能した後、洗い場の横にある縁側で秋の涼しい風に吹かれる。そして、温泉街の上に広がる青い空を見上げる。この時間を、「至福」を言わずして何と言おうか。

2009-09-25[n年前へ]

湯治宿に泊まる夢 

 今日も飽きずに温泉街に行く。通りに面した昔ながらの射的場があったり、美味しそうな蕎麦屋があったりして、この温泉街に長居したくなってくる。

 一泊二泊程度ではなくて、せめて十日間、できれば一か月くらいは滞在してみたくなる。そんなことを考えながら、温泉共同浴場の番台横で涼んでいると、湯治宿を紹介したチラシが置いてある。

 いつか、自炊設備のある湯治宿に長逗留してみたいと思う。昼過ぎに、地元の美味しそうな素材を何か一品買って、それを料理してつまみにし、ビールを飲んだ後に、温泉につかってみたい。

 たとえば、この伊豆長岡温泉なら、近くの魚屋で海鮮物が安く買えるから、そんな海鮮料理を一品作り、それをつまみながらお酒と温泉を楽しみたい。そんな生活をひと月くらいするのが(実現しそうにない)夢のひとつだ。

 しかし、湯治宿に泊まった時のことを思い出してみると、必ず「お酒を飲んだ後はお風呂に入らないこと」と書いてあったような気がする。昼間からビールを飲んで湯につかり、温泉卵のように心地よく茹でられる・・・というのは、湯治とは相入れないものだろうか。やはり、食後の一杯くらいにしておくべきなのだろうか。

2009-09-26[n年前へ]

「柳谷観音」と「話の舞台」 

 堀井憲一郎の「落語論 (講談社現代新書) 」を読んでいると、落語「景清」が登場していた。舞台となる清水観音と柳谷観音のうち、清水観音=修学旅行生が溢れる京都の清水寺の方は知らない人はいないだろうが、柳谷観音の方はそういうわけではない。関西ではそこそこ有名なのだとは思うが、他の有名寺社仏閣の山々に埋もれているように思う。

 柳谷観音は、京都に近い長岡京市の山腹に位置している。竹林の丘や山を越え、急な峠道を上った先の山中にあるので、歩いて行くのも、自転車で行くのもかなりハードな場所である。何度か参拝した記憶はあるが、いつも車に乗って行った。地元の中高生などは、ランニングでこの辺りまで走りに来ることがあると聞いた時には、そして、実際にそんな学生たちを見た時は、思わず見とれてしまったくらいだ。10kmくらい山道を走るという学生たちの中に、自分がいなくて良かった…とつくづく思ったものである。

 小説や落語の舞台、あるいは、ミステリや映画の舞台に行ってみるのは、とても面白い。そういった場所に行った後に、もう一度(その場所が登場する)本や映画を見ると、そういったストーリーがさらに身近に実感できる。「柳谷観音」に行けば、きっと「景清」をもっと楽しめるのだろうし、ナイル川に行けばクリスティをもっと楽しめるに違いない。

 実際に行って、その場所の空気を吸った街には愛着が生まれ、親近感を覚えるものである。本を読むたび、その本に登場する町や場所の中に入って、少し暮らしてみたくなる。

2009-09-27[n年前へ]

IronRuby 0.9.1で遊ぶ 

 .NET Framework上で動作するRubyであるIronRubyのバージョン0.9.1が出ていた。Silverlightを使いブラウザ上で動かすことができるようにもなっている。

 試しに、ブラウザ上で動くironRuby Tutorialを体験してみると、これがなかなか面白い。与えられた例題をそのまま書き写していくようなチュートリアルだけれども、何だか結構ワクワクしながらRubyの基礎を学ぶことができる。もちろん、例題と関係ないコードを書いてもきとんと実行される(それでは、チュートリアルは進んで行かないが)。自分のPCにダウンロードしたり、インストール作業をしたりせずに試すことができるのは、お手軽でいい。

2009-09-28[n年前へ]

無料配布のMathematicaカーネルをIronRubyから自由自在に使ってみよう 

 .NET Framework上で動作するRubyであるIronRubyを使い始めました。使い始めた理由は、(なかなか使う機会がなかった).NETを難しいことを考えずに簡単に使うことができそうだったからです。というわけで、まず一番最初に「無料配布のMathematicaカーネルをIronRubyから自由自在に使う」ということを試してみることにしました。

 ウルフラム・リサーチから無料で配布されているMathematica Playerには、最高に高度な数式処理プログラムである Mathematicaのエンジンが完全に内蔵されています。そこで、そのMathematicaのエンジン部であるMathKernel(Mathematica Playerと一緒に配布されている)を.NETを用いて操作し、IronRubyで自由自在に数式処理をしてみることにします。

 まずは、Mathematica Playerをダウンロード&インストールします、さらに、Mathematicaを.NETインターフェースから使うことができる.NET/Linkもダウンロード&解凍します。そして、もちろんIronRubyも必要なのでダウンロード&解凍しておきます。最後にあともうひとつ、Examples\Part2\SimpleLinkに入っているWolfram.NETLink.dllを取り出して、次に書くRubyコードと同じディレクトリにでも放り込んでおきます。

 あとはRubyのコードを書くだけです。たとえば、こんな具合です。

require 'Wolfram.NETLink'
include Wolfram::NETLink

kernelLink=MathLinkFactory.CreateKernelLink()
kernelLink.WaitAndDiscardAnswer()
result=kernelLink.EvaluateToOutputForm(
        "Solve[a x^2+b x+c==d,x]", 0)
puts result
kernelLink.close
 このコードを、(IronRubyのbinディレクトリ中にある)ir.exeを使い、ir.exe hoge.rbという具合に実行してみます。すると、まず最初の2行で、"Wolfram.NETLink.dll"を読みこんで、.NET/Linkの機能を使えるようになります。そして、MathLinkFactory.CreateKernelLink()でMathematicaカーネルとの通信を開始し(この時、ダイアログが現れるので、たとえばC:\Program Files\Wolfram Research\Mathematica Player\7.0といったパスにあるはずの、MathKernel.exeを選択します)、EvaluateToOutputFormでコマンド文字列をMathematicaカーネルに送り・評価させ、評価結果を(見やすいOutputFormでフォーマットされた)文字列として受け取ります。最終行では、結果を表示しています。

 この例の場合は、

a x^2+b x+c==d
という二次方程式を解くようにMathematicaカーネルにコマンドを送っているので、その解がRubyに渡り、おなじみの二次方程式の解が最後に表示されます。
                  2                                     2
       -b - Sqrt[b  - 4 a c + 4 a d]         -b + Sqrt[b  - 4 a c + 4 a d]
{{x -> -----------------------------}, {x -> -----------------------------}}
                    2 a                                   2 a

 もしも、最小値問題でも解きたければ、

result=kernelLink.EvaluateToOutputForm(
           "Minimize[2x^2-3x+5,x]", 0)
といったコードでも書けば、2x^2-3x+5を最小にするxをMathematicaエンジンが見つけ出し、
 31        3
{--, {x -> -}}
 8         4
という具合に、その結果をIronRubyに渡してくれます。自分で書くと結構大変な数式処理も、世界最高峰のMathematicaエンジンを使うことができると、非常に簡単な作業に変身します。

 無料配布のMathematicaカーネルをIronRubyから自由自在に使うことができる、というのはとても便利に思えます。

2009-09-29[n年前へ]

IronRuby + Mathematica Player で無料数学演習講座 

 昨日に引き続き、IronRuby + Mathematica Player で色んな数式処理をしてみることにします。まずは、昨日のスクリプトのEvaluateToOutputFormの部分を

result=kernelLink.EvaluateToOutputForm(
          "NSolve[x^9+x^4+x+5==0,x]", 0)
と変えてみます。つまり、9次の代数方程式を数値的に解いてみよう、というわけです。すると、答えはこんな風に返ってきます。
{{x -> -1.22021}, {x -> -0.859627 - 0.712543 I}, {x -> -0.859627 + 0.712543 I},{x -> -0.277212 - 1.208 I}, {x -> -0.277212 + 1.208 I}, {x -> 0.607409 - 1.01612 I}, {x -> 0.607409 + 1.01612 I}, {x -> 1.13953 - 0.477782 I}, {x -> 1.13953 + 0.477782 I}}
9次の代数方程式の解が一瞬で(数値的に)求まってしまいます。

 また、

result=kernelLink.EvaluateToOutputForm(
       "Simplify[a x + b x +c x -d]", 0)
といった風にすると、"a x + b x +c x -d"を簡約化した答えを返してくれます。たとえば、こんな風です。
-d + (a + b + c) x
この簡約化する作業は間違えてしまうことが多い割に、結構行うことも多い作業だったりするので、Simplifyが使えるのは、とても便利です。

 もしも、""Solve[a x^4 + b x^3 +c x^2 -d x + e==0,x]"といったコマンドを投げれば、4次代数方程式の解が帰ってくるわけですが、その解を張り付けるにはこのスペースがあまりに狭すぎるので、貼り付けるのはちょっと止めておくことにしましょう。

 あるいは、上の5次方程式で使われている変数に前もって値を代入してやれば、つまり、"a=0;b=0;c=0;d=3;e=1;Solve[a x^4 + b x^3 +c x^2 -d x + e==0,x]"といったコマンドを投げてやれば、

       1
{{x -> -}}
       3
という風にきちんと答えが返ってきます。
result=kernelLink.EvaluateToOutputForm(
    "a=0;b=0;c=0;d=3;e=1;",
    0)
result=kernelLink.EvaluateToOutputForm(
    "Solve[a x^4 + b x^3 +c x^2 -d x + e==0,x]",
    0)
といったように、複数回に分けてコマンドを投げても大丈夫です。自分で苦労して解かなくて済むと、数学の問題も少し楽しく思えます。

 というわけで、Mathematica Playerと.NET/Linkをダウンロードすると、IronRubyなどからMathematicaの機能のかなりの部分を使うことができ、数学の世界を苦労せずに覗いてみることができます。Mathematicaのマニュアルを見ながら、色んな数式処理をさせてみると、きっと面白いと思います。

2009-09-30[n年前へ]

IronRubyから有償版Mathematicaを.NET/Linkで使ってみる 

 今日は、無料で使うことができるMathematica Playerでなく、有償版のMatheticaを.NET/Linkを介してIronRubyから操作してみることにします。具体的には、.NETを使いフォームを表示させ、任意の数式処理を行った結果をグラフィック表示させるプログラムを書いてみます。今回のプログラムは、無料で使うことができるMathematica Playerでは動きません。それは、Mathematica Playerでは下記コード中の"Calculate"メソッドを呼ぶことができないからです。

 今回書いたRuby(IronRuby)コードを下に張り付けてみます。また、実行画面は右上のようになります。処理させたいコマンドをテキスト・エディットに入力し、"Calculate"ボタンを押すと、その下の部分に処理結果がグラフィック表示される、という具合です。

require 'mscorlib'
require 'System.Drawing'
require 'System.Windows.Forms'
require 'Wolfram.NETLink'
include Wolfram::NETLink

class MainForm < System::Windows::Forms::Form
  def initialize
    self.Text="Wolfram::NETLink"
    self.width=500
    self.height=500
    @pictureBox=System::Windows::Forms::PictureBox.new()
    @pictureBox.width=self.width
    @pictureBox.height=self.height
    @pictureBox.Location=System::Drawing::Point.new(0, 30)
    @pictureBox.Image=nil 
    self.controls.add(@pictureBox)
    @inputBox=System::Windows::Forms::TextBox.new()
    @inputBox.Location=System::Drawing::Point.new(100, 0)
    @inputBox.Name="inputBox"
    @inputBox.Size=System::Drawing::Size.new(300, 00)
    @inputBox.TabIndex=2
    @inputBox.Text="Plot3D[Sin[x*y],{x,0,10},{y,0,10}]"
    self.controls.add(@inputBox)
    @kernel=MathKernel.new()
    @kernel.AutoCloseLink=true
    @kernel.CaptureGraphics=true
    @kernel.CaptureMessages=true
    @kernel.CapturePrint=true
    @kernel.GraphicsFormat="Automatic"
    @kernel.GraphicsWidth=@pictureBox.Width
    @kernel.GraphicsHeight=@pictureBox.Height
    @kernel.HandleEvents=true
    @kernel.PageWidth=60
    @kernel.GraphicsResolution=74
    @kernel.Input=nil
    @kernel.Link=nil
    @kernel.LinkArguments=nil            
    @kernel.UseFrontEnd=true
    #@kernel.ResultFormat=ResultFormatType.OutputForm;
    btn=System::Windows::Forms::Button.new
    btn.Location=System::Drawing::Point.new(0, 0)
    btn.Text="Calculate"
    btn_Click=Proc.new() { |sender, e|
    @kernel.Compute(@inputBox.Text)
      @pictureBox.image=@kernel.Graphics.first if @kernel.Graphics.Length>0
    }
    btn.Click(&btn_Click)
    self.Controls.Add(btn)
  end

end

System::Windows::Forms::Application.Run( MainForm.new ) 
 大まかな流れは、MathKernel.new()でMathematicaカーネルと通信準備を行い(Mathematica Playerと通信する場合と異なり、有償版Mathematicaとやりとりする際にはカーネルをダイアログボックスで選ぶ必要はありません)、Computeメソッドをカーネルに対して投げることで計算処理を行い・処理された結果(グラフィック)を
@pictureBox.image=@kernel.Graphics.first
で、ピクチャー・ボックスに貼り付けています。ちなみに、上のコード中にある@kernel.Graphics.firstを@kernel.Graphics[0]としてしまうと、エラーが出て動かなくなってしまうので注意が必要です。

 今日はIronRubyで有償版Mathematicaの機能を使うGUIアプリケーションを書いてみました。…とはいえ、有償版のMatheticaを使うのであれば、高機能なMathematicaノートブックというフロントエンドを使った方が良いような気がします。というわけで、明日からはまた無料Mathematica PlayerとIronRubyで何ができるかを調べてみることにします。

IronRubyからMathematicaを.NET/Linkでもっと使ってみる