Proc Luaの衝撃

先日、下記のようなコードを見かけて、久々に震えるほどの感激を受けました。

proc Lua;
 submit;
  if sas.exists("WORK.CLASS") then
   print("NOTE:データセットCLASSは既にあるので何もしません")
  else
   print("NOTE:データセットCLASSがなかったから作成しました")
   sas.submit([[data CLASS; set sashelp.CLASS ; run;]])
  end
 endsubmit;
run;

実行されるコードの分岐がマクロを使わずに記述されてる......。

今までなら例えば

%macro test;
 %if %sysfunc(exist(WORK.CLASS)) eq 1 %then %do;
  %put NOTE:データセットCLASSは既にあるので何もしません;
 %end;
 %else %do;
  %put NOTE:データセットCLASSがなかったから作成しました;
   data CLASS; set sashelp.CLASS; run;
  %end;
%mend test;

%test

って書いてた処理ですね。

どうでしょう?SAS初心者、或いは全く知らない人の気持ちになってコードを見た時に
どっちが見やすいですか?わかりやすいと感じますか?

僕は前者だと思います。

proc luaというものについて何も知らない状態で最初のコードを見ましたが
何の処理をしているのか、実行した時にどうなるかが一瞬で理解できました。

で、肝心のProc Luaって何ですか?って話ですが、Luaっていうプログラミング言語があるんですね。
スクリプトタイプの言語で簡易な記述と、高速な処理、他の言語への組み込みのしやすさが特徴みたいです。

これは、正直惚れてしまいました。ちょっと真剣にLuaをゼロから勉強してみようと思います。
SASプログラミングは、なまじSASマクロがなんでもできるだけに、SASマクロに頼り過ぎていて、簡易な記述、合理的な構造から遠ざかっている側面があるのではないか?
それがSASを苦手な人、SASアレルギーの一因になっているのでは?って思ったりもするので
proc Luaを知ったのは僥倖でした。

まだ勉強し始めですが、やはり結構簡単な上に、処理をわかりやすくできるので
実際の業務にも取り入れやすいんじゃないかと思います。マクロでどうしょうもなくなったプロジェクトの銀の弾丸になりえるんじゃなかなぁって淡い希望を抱いてます。

ただ惜しむらくは、9.4のメンテナンスリリース3からの正式導入なことですね(とりあえず9.4なら試用版で使えますが)。

でも、コレはこれからかなりくる技術だと思います。だって普通に便利だから。いや、正直DS2より効果がわかりやすい気が…(オイッ)

というわけで暫くproc Luaの話が増えると思います。9.4の最新なんか入ってね~しって人が多いとは思いますが、未来のため、後ろに続くこれからのSASプログラマー達が仕事しやすくなるようにみんなで勉強してみませんか?


0 件のコメント:

コメントを投稿