NoFloはブラウザ側そしてサーバ側(node.js)のJavaScriptの世界にフローベースのプログラミングを持ち込もうとするプロジェクトで生まれてから2年が経つ。現時点では、フローはFPB言語かJSONで記述する必要がある。創設者であるHenri Bergius氏はウェブベースのビジュアルデザイナを構築して、ビジュアルにフローを定義できるようにするため、Kickstarterで資金調達をしている。
フローベースプログラミングは1970年代初頭にJ. Paul Morrison氏が提唱したプログラミングパラダイムだ。Wikipediaでは次のように定義されている。
フローベースプログラミング(FBP)はアプリケーションを"ブラックボックス"のプロセスのネットワークとして定義する。このプロセスは事前定義したコネクションを通じてデータを交換する。コネクションはプロセスの外部で定義されている。ブラックボックスのプロセスは無限に再接続して、内部を変更することなく、異なるアプリケーションを形成する。FBPはコンポーネント指向と言えるだろう。
FBPは境界バッファ、生存時間が決まっている情報パケット、名前付きポート、コネクションの分離定義を組み合わせたデータフロープログラミングの一種と言える。
NoFloはこの箱と矢印のプログラミングスタイルをJavaScriptに持ち込む。250の再利用可能なコンポーネントを組み合わせ、プログラムを作成する。次のコードはNoFloがサポートするFBPを使ったサンプルプログラムだ。
# In the graph we first need to define the nodes and the connections between them Read(filesystem/ReadFile) OUT -> IN Display(core/Output) # Start off the graph by sending a filename to the file reader 'myfile.txt' -> IN Read()
この小さなプログラムはmyfile.txtを読み、内容を標準出力へ表示する。
フローベースプログラミングはグラフなので、ビジュアルな表現があればとても便利だ。しかし、現時点ではNoFloはFBP言語を使うかJSONを使うかしかない。この状況を打開するため、NoFloはNoFlo Development Environment Kickstarterを作った。目的はNoFloプログラムのためのウェブベースデザイナを作ることだ。
現時点でこのKickstarterプロジェクトは78000ドルを集めている。目標は$100000ドルだ。