2011-02-04[n年前へ]
■Wolfram|Alphaの機能をRubyから使う
Wolfram ResearchのWolfram|Alphaは、「科学・工学系の問いに答える」ことが得意な検索エンジンです。Wolframが長年開発して来た(データベース内の規則に沿ってパターンマッチングを繰り返すことでで)数式処理を実現するMathematicaと重なるところも多い、そんな検索エンジンです。
Wolfram|Alphaの機能は、開発者登録すれば、(2000クエリー/月という、少なく限られた処理数ですが)WEB APIとして試し・使ってみることができます。先日、WEB APIのVer.2.0版が公開されたので、試しに使ってみることにしました。
- Java
- Python
- Ruby
- Perl
- PHP
- .NET
- Mathematica
手順は、およそ、こんな具合です。まずは、 開発用APIコードを登録します。そして、各言語用ライブラリのダウンロードページから直接ライブラリをダウンロードするか、あるいは、gitから、
git clone git://github.com/ianwhite/wac.gitという具合に、Ruby用ライブラリをダウンロードします。このライブラリ"wac"は、処理の過程で"nokogiri"と"active support"を使うので、
sudo gem update --system sudo gems install nokogiri sudo gem install activesupportといった感じで、先にインストールをしておきます。(新しい)"active_support"ではなく、(古い)"activesupport"をインストールするのは、(後述する)delegateのエラー回避を簡易に行うためです。
そして、wac.rbの冒頭を
#require 'active_support' require 'activesupport'と書き換えます。つまり、古いActive Supportを読み込むように指定してやるのです。そのようにしてやらないと、"NoMethodError: undefined method `delegate' for…といったエラーメッセージに出くわすことになります。
後は、たとえばirbで、
irb >> require 'wac' >> Wac.appid = "ここにAPIコード" >> r = Wac.fetch 'solve[x^2+3==0,x]'とすると、
Result: x = ±(i sqrt(3)) ±(1.73205 i)という風に答えてくれますし、あるいは、
>> r = Wac.fetch 'obama birthday'と聞けば、
Result: Friday, August 4, 1961と、教えてくれるのです。
Mathematicaのパワーを使うことができるのは、とても魅力的です。「あなたのアイデア」+「Mathematicaのパワー」=「無限の可能性」という方程式を解いてみるのは、とても楽しいことに違いありません。コンピュータのデータベース・記憶力と、ヒトが持つ柔らかな発想を組み合わせれば、最強の何かを生み出すことができるはずです。