DDRのEDITデータファイルからレーダーチャートのインプットとなる数値を計算するEDXY!というPerlで書いたスクリプトがあるんですが、2003年頃、Perl 4の時代の産物なのでPerlのダメなところが満載なのです。つまり、変数のスコープ・局所化をまったく意識していません。変数の宣言らしきことをなぜかmyでなくlocalばかりを使っていたり、目も当てられないです…。
とは言え、次期Edicoを構築するにあたり、Perl 5風に再利用したいというのがあるので、頑張ってみました。
結果、コードには「no strict;」の1行が…。俺、よえー。localをourに置換して動かしたらループから抜け出せなくなるとか、どんだけー。まぁでも、ある程度カプセル化できて、なりに動くので良しとしましょう。
以下、個人的メモ
my $objEDXY = new edxy("E:\\_(SITE) Edico\\cgi\\xedico(test)\\pm_S_mobomoga_pop-lium.mc");
print $objEDXY->{'errorMsg'} unless ( $objEDXY->execute() );
print $objEDXY->edxy_stream, "\n";
print $objEDXY->edxy_voltage, "\n";
print $objEDXY->edxy_chaos, "\n";
print $objEDXY->edxy_air, "\n";
print $objEDXY->edxy_freeze, "\n";
print $objEDXY->total_step, "\n";
print $objEDXY->total_obje, "\n";
print $objEDXY->min, "\n";
print $objEDXY->editname, "\n";
## 出力
171
258
45
37
115
236
287
1.37209302325582
POP-LIUM前のエントリでも書いたように、次期Edicoは今流行のオブジェクト指向チックに書き直しています。
Javaとかに比べれば無理矢理実装な感じですが、記述性、柔軟性はPerlらしいです。通常、オブジェクトのメンバ変数はアクセサを用意してget/setするわけですが、Perlだと以下のように書くとメンバ変数が見れちゃうんですよ。びっくり!
$objEDXY->editname; #editname取得のためのメソッド
$objEDXY->{'Mc'}->{'editname'}; #オブジェクトのメンバ変数を直接見る
パフォーマンス的にはメンバ変数に直接アクセスした方が良いんだろうけど、なんだか格好悪い…。ドキュメント上、中身を隠蔽してしまえばいいだけの話ですけどね。
ちなみに、勉強のため以下の本を購入しました。いずれも役に立っています。Perlで美しいコード書くのは楽しいなぁ。
正月明けカットオーバの更改案件を控えて、年末休みに入りました。ここ最近まともに休めていなかったので、貴重なひと時です。
気づいたらかなり大きな案件になっているようなので、これを無事に乗り越えられれば、しばらく楽になるんじゃないかと期待しています。組合役員をやっている手前、春闘にむけての忙しさは出てきそうですが。
あ、テクネは午後1で落ちました…。修行が足りない!
それでは皆さん、良いお年をお迎えください。
DDRXが稼動してからというもの、かつてEDITにのめり込んでいた自分としてはEdicoをなんとかしたいなぁ、なんて思っていました。
以上の理由から、Edicoのメンテはほぼ意味を成さないかな、と思っています。かつて、裏ではDB化を目論んでいたんですけどね。ソースの修正範囲が多くて、就職も相まって頓挫しました。簡単にリスト表示できるところは楽しいんですけどね。曲リストなんかは見ていて楽しいし。
ただ、DDRXのライバル機能では広くEDITを公開する手段として不十分に思えます。なので、PC上でUSBからEDITデータを抽出する方法が見出せれば、それを公開するポータルとしてもうひとつのEdicoを作り出すという道は有効かもしれないと思っています。かつてのLinoleumFloorに近い、機能を絞った形を想像しています。
ニコ動等の動画メディアでEDITデータを公開する動きはありますが、実際にプレイできる環境が整ったわけですから、データそのものをやり取りすることに価値はあると考えるのです。
ちなみに、冬休みに入ってから風邪を引いてしまい、DDRXは未だプレイできていません…。
http://www.konami.jp/bemani/ddr/jp/am/ddrx/
こっちもすげー。家庭用とのリンクも復活するというウワサもあります。とりあえずワクワクしておきますね!
いいぞ。もっとやれコナミ!