<スクリプトによる自動化>
最近、スクリプト・自動化に目覚めた。とにかく便利!とにかく楽!そして楽しい。
より多くの人に知ってほしい。
今はあれこれチャンポンで使っている。
おすすめの理由
・すぐやり直しができる
・何をやったかトレースできる
・計算から描画までを自動化できる
・結局早い
・ルーチンによる心身の消耗を防げる
・大量のデータ、同じ事の繰り返しが怖くない
・結局=>研究の幅が広がる(”のこぎり”と”チェンソー”の例え)
Perl
Perlとの出会いによって、研究人生が変わったと言っても過言ではない。処理能力は数十倍数百倍になった。テキスト(データ)を処理したり、プログラムを次々走らせたり、ファイルをいじったり、を簡単なプログラムですぐにできる。何か一つでもプログラムをやったことがある人なら、すぐに使えるようになる。
参考
検索をかければ山ほどページが見つかるが、参考までに。
竹中明夫氏のページ
久保拓弥氏のページ
Perl + C, Fortranなど
CやFortranで作ったプログラムをPerlで回すことができる。
テキストファイルに入ったパラメータをPerlで少し変えては計算を走らせる、など感度分析の際に強力なツールとなる。
また、メッシュで計算を走らせるなど、何度も計算を走らせる、いろいろなパラメータファイルを入力に計算を走らせる、などと言うときに便利。
さらに、出力のテキスト自身を後述のRやGnuplotで図化・解析するようにしておくととても便利である。
Perl + OLE
PerlからMicrosoftのWord, Excelなどをコントロールできる。ExcelにMacroを作っておけばそれを走らせることができるので、自動化の処理の幅が広がる。
use strict;
use Win32::OLE;
my $Excel = Win32::OLE->new("Excel.Application") or die "Could not start Excel.Application\n";
$Excel->{Visible} = 1; #画面に出力するか?
my $Book = $Excel->Workbooks->Open("D:\\***\\analyze_all_01.xls"); #ファイルを開く
$Excel->Run("Read"); #マクロ"Read"を走らせる
$Book->Save;
$Book->Close;
$Excel->quit();
参考
Automating Windows Applications with Win32::OLE
ActiveState Programmer Networkのページ(検索で見つけた)
Perl + R
Rのscriptをtest.Rなどに記述しておき以下のようにPerl上で走らせることができる。バッチ + Rでももちろん可能。
test.Rの中に記述している目的ファイルを次々と書き換えては走らせることで、大量のファイルを一気に処理できる。
"system "\"C:/Program Files/R/R-2.2.1/bin/Rterm.exe\" --no-save < test.R";"
参考
RjpWiki(検索で見つけた)のページ
Perl + R + Excel
RからExcelのデータも読み込める。
library(RODBC)
connExcel <- odbcConnectExcel("D:\\My Documents\\works\\Research\\experiment17\\R\\Book1.xls") #データの読み込み
table0 <- sqlQuery(connExcel,"SELECT * FROM [Sheet1$]") #すべてをtable0という名前で読み込む
table1 <- sqlQuery(connExcel,"SELECT * FROM [Sheet1$a1:b4]") #シートの一部をtable1という名前で指定して読み込む
odbcClose(connExcel)
参考
RjpWiki(検索で見つけた)のページ
Perl + Gnuplot
Gnuplotのスクリプトを記述しておいて、systemで走らせることができる。
system "gnuplot test.gp"
参考
西田顕郎氏のページ(Perlではなくシェル利用)
Dos バッチ
今も昔も変わらず便利。私が一番最初に出会った自動化ツール。Windowsの人なら今すぐに環境は整っている。
シェル
Unix環境にいるなら言うまでもなく。Windowsでもcygwinを入れて利用できる。
エクセルマクロ
エクセルを利用しているなら使わないともったいない。文法がよくわからなくても、「記録」ボタンを利用することで有る程度勝手にプログラムを書いてくれる。
sed & awk
特にawkはデータの解析に便利。
参考
西田顕郎氏のページ(シェル+AWK)
戻る