MyRemixが進化している
MyRemix。去年β登録していたけど、このまえ多少アップデートしたみたい。たぶんPipesとガチではるならこっちなんだろうな。
これ、Pipesクローンとか言っていたけど、単にメール出力以外にもいろいろ+αがあるね。もちろん、iPhone/iPod出力に対応とか、マーケティングだろうし、JSONPってだけならまあ特筆するところじゃないよね。せっかくなのでそれ以外のところで、主にヴィジュアルプログラミング環境としての構成要素について見てみる。
ラムダ
Yahoo Pipesにはラムダ関数的な機能がなく(loopの場合は特別扱い)、わざわざ別Pipeとして実装する必要があったわけだけれども、MyRemixの場合は無名関数(ラムダ)を定義して、それもモジュールの入力にすることができる。このあたりは忠実に言語ベースのプログラミングを模している感じがする。Yahoo PipesのLoopにあたるmapモジュールは、ラムダ関数を入力として受け取ることで実装されている。
欲を言えば、ラムダを受け取れるラムダを作ったり、ラムダを返すラムダを作ったりして、もっと高階関数的に扱えるとよかった。あと、ラムダの外側からPipeをつなげたりして、クロージャっぽくできると面白かった。流れから行けば、きっと扱えるようになるんじゃないか。まあいろいろとUI上の制約がありそうではあるけれども。
型推論
パイプをつなげられるかどうかを自動的に見分ける機能。例として、文字リストがあるとき、先ほどmap関数に設定した無名関数が数値を受け取るならば、map関数はそのリストを受け付けない。
感想
実用を目指すのか、アカデミックさを目指すかによって、このサービスが向かう道は決まると思う。特に普及を目指すなら型推論を前面に出すべきじゃないとは思うが、アカデミックで突っ走ってくれるならそれでも面白い。ただ、アカデミックという意味では、ヴィジュアルプログラミングの世界の先端を知ってるわけではないけれど、Webに限定しなければすでにここらへんをやってる例はあってもおかしくないな、ともおもった。
もちろん、Alternate Pipesとして実用を追求していくのも十分に可能だと思うし、そちらで攻めていけそうならそれもいいことだ。
追記(2008-07-17)
なんか、ほぼ偶然なのだけど、今日その開発者の人に会ってきた。クロージャのところの話を振ってみたら、引数束縛的なことを行うためのApplyというモジュールがあって、それを使えばラムダ関数外部の値を中にもってこれるみたい。たしかに実用上それで問題はなさそうな気がした。ついでにPipeの実行をそれぞれMapReduceに掛けてスケーラブルにする構想の話を聞いた。いかすね。