標準入出力のモジュールを複数つないで、一つのアプリケーションを作れないかと考えました。
色々試行錯誤中ですが、第一ステップとしてテキストを扱うモジュールをつなげていくツールを作って見ました。
とりあえず、app-composerと呼んでおきましょう。
https://github.com/reouno/app-composer
サンプルでは、
- 読み込みモジュール
- 分かち書きモジュール
- bag-of-words作成モジュール
をapp-composerで接続して順次実行します。実行方法はgithubのreadmeを参照してください。
現状、各モジュールの実行ファイルがあるディレクトリに、io.json
という入出力形式の定義ファイルを置く仕様にしています。これは、例えば以下のようなものです。
read.hsのio.json
{
"input":
{
"filePath": "string"
},
"output":
{
"fileContent": "string"
}
}
inputとoutputというキーがあり、その値として、read.hsの入力json形式、出力json形式を定義します。この場合は、read.hsは
{ "filePath": "文字列" }
という形式の入力を受け取り、
{ "fileContent": "文字列" }
という形式で標準出力するモジュールとなります。
興味のある方は使って見てください。
今後、
- テキスト以外の入出力に対応
- グラフ構造にして、分岐・ループ等を可能にする
- io.jsonを作る手間を減らす
というようなことを考えています。