質問
Ruby を使用して言語のフローチャート ジェネレーターをコーディングしようとしています。
さまざまなフローチャート要素のさまざまな図形を描画し、それらの図形にテキストを書き出すために使用できるライブラリがあるかどうかを知りたいと思いました。
できることなら、基本的な形状を描画するためのコードを書かなくて済むことを本当に望んでいます。
誰かがそのライブラリの使用例を含む参考ドキュメントを教えてもらえますか?
解決
簡単な答えは、(この記事の執筆時点では) あなたが望むものはほぼ確実に存在しないということです。ごめん!
Windows ベースの場合は、.NET 分野で製品を探すと思います。そこで何かが見つかると思います。ただし、おそらく実際のお金を支払う必要があります。勇気があれば、IronRuby を使用して通信できるかもしれません。
非 MS 環境からは、Java ベースのソリューションを期待しています。すでに述べたように、Web の世界では、JavaScript ベースのものが期待されるでしょう。あるいは、おそらく Flash (または Silverlight も?) の世界からのものが期待されるでしょう。
実際、Ruby を使い続けたいが、多少のリスクは気にしないのであれば、DLR 機能が実際に動作すると仮定すると、Silverlight を使用するのが良いかもしれません (ここでは経験がありません)。Ruby は、私は大好きですが、最も成熟した GUI 構造をほとんど持っていません。
アップデート:これを書いて以来(5 年近く前)、状況は少し改善されました。具体的な Ruby グラフ描画ライブラリについてはまだわかりませんが、サポートが改善されています。 グラフビズ ここ(Github) または gem install ruby-graphviz
. 。単純なグラフの場合は、Ruby から直接スクリプトを作成することがかなり可能であることがわかりました。
他のヒント
フローチャートを有向グラフまたは無向グラフとして作成します。 グラフビズ. 。Graphviz には言語があり、 ドット これにより、グラフを簡単に生成できるようになります。ドット ファイルを生成し、Graphiviz で実行するだけで、イメージが得られます。
graph {
A -- B -- C;
B -- D;
C -- D [constraint=false];
}
digraph {
A [label="start"];
B [label="eat"];
C [label="drink"];
D [label="be merry"];
A -> B -> C;
C -> D [constraint=false];
B -> D [ arrowhead=none, arrowtail=normal]; // reverse this edge
}
Graphviz ではノードの形状などを制御できます。
主に、構築するユーザー エージェントの機能によって制限されるようです。これが Web プロジェクトの場合、描画機能はブラウザーに依存します。Ruby はサーバー側で実行されるため、ドラッグ/ズームなどを可能にするために少なくとも JavaScript が必要になります。ベクター描画に JavaScript が使用されている例はたくさんありますが (「JavaScript グラフィック ライブラリ」で検索してください)、すべてコーディングが必要であり、これをエレガントに抽象化したライブラリは見たことがありません。
ImageMagick には、RMagick と呼ばれる Ruby バインディングがあります (リポジトリによっては、別の名前で知られる場合もあります)。(リンク)私はそれを自分で使用していませんが、それがあなたが探していることをするだろうと信じています。いくつかのコーディングを行う必要がありますが、次のような流れになります。
draw.rectangle(x1, y1, x2, y2)
draw.polygon(x1, y1,...,xN, yN)
確かにそうですが、Ruby の cairo バインディングを確認してください。テキスト用のパンゴ。現在調べているところ、このページにたどり着きました。