2009-10-04[n年前へ]
■IronRubyとMathematica Playerで経済データも自由自在
本当に、「(.NETで動くRubyである)IronRubyと(無料配布されている)Mathematica Player」を組み合わせたツールの可能性は無限大だ、と思います。しかも、その組み合わせが無料だというところがまた素晴らしいです。素晴らしすぎて、「そういう実装でウルフラム・リサーチは良いと考えているのだろうか?」と疑問に思ってしまうくらいです。
今日の例題は、MathematicaのCountryData関数を使って、日本の最近40年間くらのGDP(国内総生産)を習得してみることにします。書くコードはこんな感じです。
include System require 'Wolfram.NETLink' include Wolfram::NETLink kernelLink= MathLinkFactory.CreateKernelLink() kernelLink.WaitAndDiscardAnswer() gdp=kernelLink.EvaluateToInputForm( 'CountryData["Japan", {{"GDP"}, {1970, 2008}}]', 0) puts gdp kernelLink.closeこれで、1970年から2008年までの日本の国内総生産(GDPデータ)が時系列的に手に入ります。ちなみに、結果はこういう形式で返ってきます。
{{{1970, 1, 1, 0, 0, 0}, 2.0295777757538376*^11}, {{1971, 1, 1, 0, 0, 0}, 2.2925 011052164844*^11}, {{1972, 1, 1, 0, 0, 0}, 3.0359415844215283*^11}, {{1973, 1, 1 , 0, 0, 0}, 4.124671054658262*^11}, {{1974, 1, 1, 0, 0, 0}, 4.578535174149201*^1 1}, {{1975, 1, 1, 0, 0, 0}, 4.978680032023408*^11}, {{1976, 1, 1, 0, 0, 0}, 5.59 553536053367*^11}, {{1977, 1, 1, 0, 0, 0}, 6.886633644946532*^11}, {{1978, 1, 1, 0, 0, 0}, 9.675983051549285*^11}, {{1979, 1, 1, 0, 0, 0}, 1.0071187368835983*^1 2}, {{1980, 1, 1, 0, 0, 0}, 1.0552047308073224*^12}, {{1981, 1, 1, 0, 0, 0}, 1.1 662277105414326*^12}, {{1982, 1, 1, 0, 0, 0}, 1.0838309489751625*^12}, {{1983, 1 , 1, 0, 0, 0}, 1.182236662061611*^12}, {{1984, 1, 1, 0, 0, 0}, 1.258002926042118 4*^12}, {{1985, 1, 1, 0, 0, 0}, 1.3467326711952527*^12}, {{1986, 1, 1, 0, 0, 0}, 1.9954327828900427*^12}, {{1987, 1, 1, 0, 0, 0}, 2.4200293838043384*^12}, {{198 8, 1, 1, 0, 0, 0}, 2.9383777035023525*^12}, {{1989, 1, 1, 0, 0, 0}, 2.9401349260 95067*^12}, {{1990, 1, 1, 0, 0, 0}, 3.018112125973376*^12}, {{1991, 1, 1, 0, 0, 0}, 3.4512768484608447*^12}, {{1992, 1, 1, 0, 0, 0}, 3.766884938703116*^12}, {{1 993, 1, 1, 0, 0, 0}, 4.3237911294441895*^12}, {{1994, 1, 1, 0, 0, 0}, 4.76016480 3785754*^12}, {{1995, 1, 1, 0, 0, 0}, 5.24425055236488*^12}, {{1996, 1, 1, 0, 0, 0}, 4.620457424448448*^12}, {{1997, 1, 1, 0, 0, 0}, 4.2337825304782827*^12}, {{ 1998, 1, 1, 0, 0, 0}, 3.8422661071666924*^12}, {{1999, 1, 1, 0, 0, 0}, 4.3476506 956717817*^12}, {{2000, 1, 1, 0, 0, 0}, 4.649614280538379*^12}, {{2001, 1, 1, 0, 0, 0}, 4.0877256836277627*^12}, {{2002, 1, 1, 0, 0, 0}, 3.904822831192468*^12}, {{2003, 1, 1, 0, 0, 0}, 4.231254569386364*^12}, {{2004, 1, 1, 0, 0, 0}, 4.58488 9737074735*^12}, {{2005, 1, 1, 0, 0, 0}, 4.559019715540946*^12}, {{2006, 1, 1, 0 , 0, 0}, 4.434993203595208*^12}}つまり、時間と国内総生産を並べたリスト形式で返ってきます。
もちろん、日本のGDPだけでなく、任意の国のGDPでも、どこかの企業の株価でも、それがどこのマーケットでもいつの時代でも、(基本的には)関数一つで手に入るようになります。もちろん、入手したデータの処理をすることだって、至極簡単です。経済問題をコメンテーターのように評論している文章を見ると、「データを自分で扱い、自分で咀嚼・消化してから話して欲しいものだ」と思ったりしますが、そういった作業を簡単に自分の手で行うことができます。競馬や競輪、はたまた、競艇予想のごとく、経済や株価の行方を実証・予想してみるのにも、IronRuby+Mathematica Playerの組み合わせなら簡単至極にデータ九取得・処理を行うことができます。
これが、最近のMathematicaの便利さでもあり、無料のMathematica Playerを使うことでそのMathematicaの機能を自由にシームレスに使うことができる「(.NETで動くRubyである)IronRubyと(無料配布されている)Mathematica Player」の組み合わせの凄さでもあります。
「データの見せ方」「ビジュアライズ」はとても大切です。けれど「データそのものを手に入れること」「データを加工・処理すること」の重要性は、決して「ビジュアライズ」に劣るものではありません。基本的には、それらすべてが優れていることが理想的であり、現実的には、それらの中で一番弱い部分が相和の効果・力を決めると思っています。
無料で使うことができる Mathematica Playerの一番の便利さ・凄さは、「データ取得」「データ処理機能・言語機能」に関して、本家本元のMathematicaに比べて決して劣っているわけでなく。基本的にはほぼそのままの機能を使うことができるようにしている、というところにあるように思えます。
Rubyから透過的に、Mathematicanを使って入手・計算可能なデータをそのまま自由自在に使うことができる、というのは意外なほどに凄まじい機能拡張だとは思いませんか…?