2010-05-05[n年前へ]
■続 IronRubyと JavaScriptでMathematicaフロントエンドを書いてみる(修正してみる)
IronRubyと JavaScriptでMathematicaフロントエンドを書いてみる(修正してみる)で書いたコードをさらに使いやすくしてみることにします。といっても、私が書いたコードの「使いにくい」部分を、もう少しまともに「使いやすくする」というわけです。
自分で使ってみて、一番最初に「使いにくい」と感じた部分は、ボタンを押さない処理が行われない、というところです。そこで、昨日のコードに付属する"index.html"中の<input type="text">の部分を、
<input type="text" name="q" id='q' size=100 onChange="calc()">というようにしてみます。こうすると、テキスト入力部でEnterキーを押したときにも演算処理がされることになります。つまり、普通にMathematicaのフロントエンドを使うような感覚で数式処理をすることができるようになるわけです。
プリポストプログラムを作るのは、自分の書いたコードが「見た目」や「動き」に直接反映されるので、わかりやすく楽しいものです。…というわけで、(私と違い)JavaScriptを使い慣れている人、あるいは、(私と同じく)JavaScriptを使い慣れていない人でも、こんな具合で、色々いじってみると楽しいかもしれません。そして、斬新なフロントエンド環境を作ったりしたならば、その楽しさをおすそ分けして頂ければ幸いです。
2010-10-25[n年前へ]
■Microsoft、IronRubyおよびIronPythonをコミュニティに移管
「米Microsoft、IronRubyおよびIronPythonをコミュニティに移管」
米Microsoftは10月21日、.NET Framework向けのRuby実装「IronRuby」、同Python実装「IronPython」の両オープンソースプロジェクトについて、今後プロジェクトから手を引き、コミュニティに引き渡す方針を発表した。「MONO Project」のMiguel de Icaza氏らがプロジェクトの調整役を受け持つ。
2011-07-24[n年前へ]
■IronRubyからKinectを使ってみる(OpenNI / OSX編)
RubyからMicrosoft Kinectを操作(制御)してみたくなったので、OpenNI(Ver1.1)の.NETバインディングを使い、IronRubyからKinectを操作するコードを書いてみました。たとえば、下に貼り付けてみたのは、IronRubyから深度データにアクセスするコード例です。
require 'OpenNI.net' include OpenNI require 'XnVNite.net' include NITE include System::Reflection include System require 'pp' CONFIG_XML_PATH="SamplesConfig.xml" @context=Context.new(CONFIG_XML_PATH) @depthGenerator=nil @depthGenerator=@context.FindExistingNode(NodeType.depth) status=@context.WaitAndUpdateAll() depthMetaData=@depthGenerator.GetMetaData() pp [depthMetaData.XRes, depthMetaData.YRes] pp @depthGenerator.DeviceMaxDepthこのコードを実行すると、深度画像のXYサイズと最遠距離が、次のような具合に表示されます。
[640, 480] 10000
動作テストはOSX上で行いました。つまり、OSX に.NET環境であるMonoをインストールし(もちろんOpenNIもここに書いてある手順に沿ってインストールし)、その上でIronRubyを動かしています。当然、Windows上でも動くと思いますが、動作確認はしていません(Windows側にはMicrosoft Research Kinect for Windows SDK betaをインストールしているので、OpenNIを入れていないのです)。
RubyでKinectの操作・制御をする…というのは、必ずしも「上手い組み合わせ」ではないかもしれません。けれど、上のようなrubyコードを書くだけで「高度なセンサ群の塊であるKinectからデータを取得できる」となれば、面白く遊んでみたくなる人も多いのではないでしょうか。「Microsoft Xbox 360 Kinect センサー 」を買って、ずっと前に想像していた未来に来た気分になってみるのはいかがでしょうか。
2011-08-09[n年前へ]
■「WOLFRAM CDF(Computable Document Format,計算可能ドキュメント形式)」と「既存の".nbp"ファイル」の違い
WOLFRAM Researchから「CDF(Computable Document Format,計算可能ドキュメント形式)」が発表されました。「計算のための新しいインタラクティブなドキュメント形式」…というわけで、何だかとてもワクワクします。それは、21世紀のTeXもしくはLaTeX形式なのだろうか?…などと期待しながら、発表資料を眺めています。しかし、発表されて間もなく・情報が少ないために、CDF形式と(これまで使われていた)"Wolfram Mathematica Player"用の再生専用ファイルである ".nbp"ファイルとの違いがまだよくわかりません。
"Wolfram Mathematica Player"用の再生専用ファイル( nbpファイル)というのは、基本的にはWolfram Mathematicaのノートブック(".nb" ファイル)と同じものです。Wolfram Mathematicaでしか編集することができない".nb" ファイルと、"Wolfram Mathematica Player"でもインタラクティブに再生することができる".nbp"ファイルが「一番大きく」異なるのは、".nbp"ファイルには「このファイルは”WOLFRAM WEBサイト"経由で出力したものですよ」という「暗号化された署名」がファイル末尾に付け加えられていること、です。その署名がなければ、Mathematica Playerはそのコンテンツを再生しない、という「仕組み」になっています。
今回発表されたWOLFRAM Computable Document Format(計算可能ドキュメント形式)というのは、”WOLFRAM WEBサイト"から出力するものではありません。その代わりに、WOLFRAM Mathematicaアプリケーションが単独で出力することができ、その出力と同時に「暗号化された署名」を行うというファイルフォーマットです。その”正しい”署名が添えられたファイルのみをWOLFRAM Mathematica ”CDF” Playerがインタラクティブに再生することができるよう制限されています。…つまり、WOLFRAM Computable Document Format(計算可能ドキュメント形式)というものは、Mathematicaアプリケーションでしか作成することができない(という制限を掛けた)、というフォーマットです。「”CDF”フォーマットのファイルに対してのみ使うことができる」という(Mathematica ”CDF” Playerの)制限は、「そのファイルはMathematicaアプリケーションで作ったファイルのみ開くことができる」という制限と”イコール”であり、それは"Wolfram Mathematica Player"が再生可能な”.nbp”ファイルの作成元を制限していたのと同じ仕組みです。
実際のところ、"Wolfram Mathematica Player"とWOLFRAM Mathematica ”CDF” Playerというのは、ほぼ同じものであるように見えます。たとえば、どちらのカーネル(計算・解析処理を行う中心部)へは、たとえば、.NETインターフェースから自由にアクセス・制御することができます。そして、どちらも、WOLFRAMの署名がされたファイル以外を扱うことは拒否します。
ビジネスの面から眺めれば、当然の選択にも思えます。…が、ワクワクすることがない選択であり・ワクワクしない宣伝文句にも感じられてしまいます。
Mathematica を売る会社 Wolfram Research の設立にあたって Wolfram はリチャードファインマンに相談している。これに対してファインマンは反対している。君にとっては回りのすべての人が馬鹿に見えるだろう。だがそのような人達を使わなければならなし、翻弄されることこの上なく君から科学的成果が出なくなってしまうようになるだろう。だから、やめたほうがよいというような内容。Wolfram は、未だ CEO として健全な経営をしている。しかし、確かに Wolfram の新規の科学的成果は聞かなくなったような気がするのは気のせいだろうか。
ファインマンの手紙
2012-01-26[n年前へ]
■続々?Mathematica機能を使うIronRubyコードを書いてみる
数式処理ソフトであるMathematicaの機能をIronRuby(.NetによるRuby実装)から使うRubyコードを少し書き直してみました(mathruby.rb)。具体的には、Mathematicaの計算カーネルと「やりとり」をする通訳部分に、Mathematicaから得られた値をRuby側のクラス(Array,String,Numeric 等)に自動変換するコードを付け足してみました。
このRubyスクリプトを実行するディレクトリに"Wolfram.NETLink.dll"(ここからダウンロードできるファイルを展開した中にあります)を放り込んで、たとえばこんな「2次方程式の解を求めよ」というコードを書くと、そして、そのRubyスクリプトをIronRubyから実行すると、
pp 'x^2 == 3'.Solve 'x'次のように答が得られます。
[["x -> -Sqrt[3]"], ["x -> Sqrt[3]"]]Mathematicaの計算カーネルからRubyが得る答は、もちろんRubyのArrayクラスのオブジェクトです。2次方程式の解ですから、要素が2個の配列が返されています。
あるいは、 pp [1,2,3].Sin.N というコード、つまり、配列[1,2,3]のそれぞれに「Sin関数を適用した上で、”数値化”せよ」という命令を書けば、
[0.841470984807897, 0.909297426825682, 0.141120008059867]という「数値」クラスのArray(配列)が得られます。
違う言語の間を「繋ぎ」を作ろうとすると、それぞれの特徴(売り)・個性・違いを(ほんの少しだけ)垣間見ることができるような気がして、何だか少し面白いもののです。
上記コードの動作確認は、Windows上で行っています。.Net実装であるmonoを動かしたOSX では、monoの正規表現動作不具合などにより、上記コードは動作しません(2012/01/28現在)。