2009-08-24[n年前へ]
■(恥を忍んで)RC形式でエクセルを使うスクリプトを書いた
エクセルは便利だが、LEGOブロックのようなものだ。舞うを掴んだ手を動かし、ワークシートの上で泥臭い作業をしているうちに、いつしか何らかの機能を持ったものができあがる。時間はかかるが、確かに何かができあがる。しかし、どうしようもなく、再利用しづらく、行き当たりばったり感が否めない。
かといって、スクリプト言語で作業をしようとすると、何らかの機能を実現する「ライブラリ」を探したり、あるいは、教科書を広げ関数機能を実装する手間が必要になったりする。もちろん、サラサラとコードを書きおろすことができる人は別だが、エクセルもスクリプト言語も色々な解析手法自体も苦手な人間には、そういった作業がどうしても必要になると同時に、何ともシンドく感じてしまう。
今日、データ解析をするRubyスクリプトを書くときに「(CSVファイルを介して)エクセルの機能」を使った瞬間には、さすがに「これは情けないな」と自分でも思った。どういうことかというと、たとえて言うならば、配列の標準偏差を計算するために、こんなスクリプト(a.rbと名付けておこう)を書いたわけである。
num=100 num.times{ datum << rand()*100 } puts 'STDEV,=STDEV(R[1]C:R['+(num+1).to_s+']C)' datum.each{ |v| puts ','+v.to_s }そして、
ruby a.ruby > a.csv a.csvとすることで、(たとえば)100個の配列の標準偏差を計算したのだ。つまり、「何らかの機能を実現する関数を実装・探す」のが面倒くさくて、エクセルにその作業をさせるスクリプトを書きなぐったのである。・・・実に情けないとしか言いようがない話だ。
・・・ちなみに、こんな風に黒魔術師”マイクロソフト エクセル”の力に頼ったスクリプトを書くときには、セルの位置指定方法は「RC形式」にしておくのが、楽でいい。もちろん、こんな情けなく・小汚い作業はしないのが一番なのは、言うまでもない当たり前のコンコンチキなのである。当たり前だのクラッカーなのである。