2008-06-03[n年前へ]
■「GPUを使った物理計算プログラム」と「スクリプト言語」
日経エレクトロニクスを読んでいると、「GPUを使った並列計算で物理シミュレーションを高速化」という記事があった。PC用のグラフィックボードに搭載されている描画処理LSI(GPU)での物理計算の解説記事で、流体などの挙動を粒子群として計算するプロメテック・ソフトウェアの計算ソフトウェアを題材に、GPUで物理計算をする効果や注意点などを解説したものだった。そういえば、つい最近、「NVIDAがGPUベースのレンダリングソフトNVIDIA Gelato Proを無償提供開始」というニュースもあった。
ところで、GPUを使ったシェーダプログラム言語であるGLSL (OpenGL Shading Language)に触れたときに感じた新鮮さは、「GLSLで書かれたプログラムは、実行時にコンパイルされる」ということだった。シェーダのソースコードを書き換えると、そのシェーダを使ったアプリケーション実行すると、その実行時にシェーダプログラムがコンパイルされ動くのである。
その感覚はとても新鮮で、「C言語のようでCでない変なスクリプト言語」をいじっているような面白い感覚を味わった。また、自然に並列計算される具合が、何だか非同期で動くアプリケーションをスクリプト言語で書く感じに似ているのだろうか、と感じたりもした。
JavascriptやRubyや…といったスクリプト言語を使うプログラマが、GPUを使ったプログラムをいじってみると、これが結構ハマったり楽しむことができたりするものかもしれない。
2009-08-17[n年前へ]
■エクセルという黒魔術
Excelは「スケッチブック」としては素晴らしい、と思っている。それほど複雑でない処理を、思いつくままに描くのには、とても素晴らしいソフトだと思う。
しかし、それを「繰り返し」使おうと考えてしまったなら、いきなり、驚くほどの時間を消費するブラックホール・モドキに変わる。もっとも、浪費した時間に応じて、少しの結果を出してくれるところが、単なるブラックホールではない。だからこそ、たちが悪い。
かといって、Excelと関わらないわけにはいかないことも多い。そんなときは、プログラミング言語を使って、エクセルファイルに対して処理を行うことになる。たとえば、Ruby で.xlsファイルを読むことができる"Parseexcel"のようなライブラリを使い、データ処理を行うことになる。
たとえば、多数のエクセル(.xlsファイル)に対する処理をしなければならないことも多い。そんな時は、こんな具合のRubyスクリプトを書くことにしている。たとえば、これは、引数で渡したディレクトリ中にある.xlsファイルのB3セル(row.at(2) if line==3)の値をすべて足した結果を出力するスクリプトを、動作確認しないまま書いてみたものだ。
require 'parseexcel' files=Dir::entries(ARGV[0]) files.delete_if!{|v| true unless /\.xls$/=v} } sum=0.0 files.each{|file| wb=Spreadsheet::ParseExcel.parse(file) ws=wb.worksheet(0) line=1 ws.each{|row| sum+=row.at(2).to_f if line==3 line+=1 } } puts sum.to_s
もちろん、"parseexcel"を使うためには、
gem install parseexcelという具合でparseexcelライブラリをインストールしておく必要がある。また、企業内で使うような場合、つまり、Proxy内からインストールする場合には、
set http_proxy=http://proxy.hoge.co.jp:8080 set http_proxy_user=hoge set http_proxy_pass=hoge gem install parseexcelというように、Proxy(とユーザ名・パスワード)の設定をしておかなければ、インストール作業ができないことも多いかもしれない。
それにしても、エクセルは本当に黒魔術だと思う。しかも、強力極まりない黒魔術である。色んなことが簡単にできるがゆえに、実に色々な状況で使われる。本当に役立つことが多いのも、否定のできない事実である。しかし、とてつもなく時間を浪費する輩なのである。
2010-09-01[n年前へ]
■「PHYZIOS Lab」ベータ版サービス開始
物理プログラミングをWeb上で体験!「PHYZIOS Lab」ベータ版サービスを開始
「PHYZIOS Lab」では、物理シミュレーションを用いたプログラムをWeb上で書いて、その場で実行させることができます。物理エンジンとしてはシンプルな物理表現に向いたBox2Dを採用、スクリプト言語としてはゲーム組み込み用言語として人気のあるLuaを採用することによって、これまでにないカジュアルな物理プログラミング体験を実現しています。