Yukinobu Hamuro
hamur****@adm*****
2004年 10月 20日 (水) 10:38:57 JST
羽室です。 先日、プロジェクトのコアメンバーおよび大垣さんをお招きし、MUSASHIの今後の開発に関する会議を開きました。 このMLでも少し議論になりましたPHPへの実装に関することも話をしまして、以下のような優先順位で開発を進めていこうということになりました。 ・MUSASHIのライブラリ化 現在のコマンドを関数(API)としてライブラリ化する。 ・そのライブラリを各種言語からbinding 1) コマンドとして 2) PHP関数として 3) その他RubyやPerlでの組み込みも考えていく ・並列処理 Distcc型、PHPによるWebサーバ型、いずれかによる(大垣さんからの提案)。 ・Rとの統合 Rスクリプトの記述→入力としてXMLtable、出力としてPMMLもしくはXML,XMLtable。 ・処理履歴の記述(処理履歴のXMLSchemaを開発する必要あり) ・項目区切りをTABに変更 年内にはMUSASHIコマンドを関数としてライブラリ化する作業を完了させたいと考えております。 コマンドのライブラリ化でまず問題となることは、大垣さんもご指摘されておられたように、パラメータの受け渡し方法だと思われます。 最も安易な方法は、現在のコマンドと同様に「キーワード+値」を文字列として可変パラメータとして渡す方法でしょうか。 例)mssCut(char arg, ...); → mssCut("-f 顧客コード,金額","-i infile.xt"); ただ、C言語からの呼び出しについては、文字列配列と配列要素数を指定する方が楽ですが 例)mssCut(int argc, char *argv[]); 固定パラメータとすると、各言語で扱う数値変数、文字列変数、配列などを直接指定することもできるかと思いますが、キーワード数が多いコマンドの場合は大変かと 思われます。またDefault値の利用をどのように指定させるかも問題となります(特に数値変数)。 例)mssCut(char *field[], char *infile, char *outfile, int reverseFlag, int txtFlag); 各コマンドごとに、構造体に全てのパラメータを含めて渡すという手もあるとは思います。ただ、この場合PHPやRuby,PerlからのBinding時に構造体の指定が可能かど うかわかりません。またコマンドの数だけ構造体を定義する必要があります。 例) Struct CutPara { char *field[]; char *infile; char *outfile; int reverseFlag; int txtFlag }; 例)mssCut(struct CutPara *p); ---- Yukinobu Hamuro hamur****@adm*****