Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ruby | Gviz gem で graphviz を Ruby の DSL で操作し、グラフを描画する

Last updated at Posted at 2014-08-15

Ruby | Gviz gem で graphviz を Ruby の DSL で操作し、グラフを描画する

概要

Gviz gem で graphviz を Ruby の DSL で操作し、グラフを描画します。

導入目的は、システム開発に関わる設計資料などの図が必要な際に、
図の作成・保守をプレーンテキストで管理することです。
手動での図の作成、保守は非常に手がかかります。
プレーンテキストで管理することで、手間がかからず自動化も容易になり、
履歴管理も容易になります。

※私の職場では日常業務で、手動できっちり調整しなければならないほど見栄えが求められる機会が少ない
どちらかというと、開発者内の情報共有のため開発者が見てわかればよい。

手順

graphvizのインストール

Windows7 環境にインストールします。

  • 安定版の msi インストーラーを利用します。
    http://www.graphviz.org/pub/graphviz/stable/windows/graphviz-2.38.msi

  • インストーラーに沿ってインストール

  • パスを通しておく。例えば Windows7環境にウィザードに沿っていインストールした場合は、
    C:\Program Files (x86)\Graphviz 2.38\bin にパスを通す。

gviz gem のインストール

gem i gviz --no-ri --no-doc

または bundle install

試行

仕様

OSS で構成された開発チームで利用する環境の構成図を作ってみます。
自分が環境構築を行った結果をチームメンバーと共有したり、
新たなメンバーが増えた際に説明するために利用する、と想定します。

<構成要素>

  • リポジトリブラウザ => GitLab
  • チャットツール => Kandan
  • CIツール => GitLab CI
  • CI実行 => GitLab CI
  • ユーザー => User

<依存関係>

  • ユーザー

    • GitLabへの push, issue の作成などを行います
    • Kandanでコミュニケーションのためのチャットをしたり、Hubotへの指示を出すためのコマンドをチャットします
    • レアケースだがCIを手動で実行する
  • GitLab

    • push をトリガーとして GitLab CI へ実行を要求する
    • push/issue/merge request をトリガーとして、 Web Hook に登録してある Hubot の Webサーバーに送る
  • GitLab CI

    • GitLab CI Runner へ CI の実行を要求する
    • CIの実行結果をWeb Hook に登録してある Hubot の Webサーバーに送る
  • GitLab CI Runner

    • CI の実行をし、結果を GitLab CI に送る
  • Hubot

    • Hubot Webサーバーから受け取ったデータをもとに Kandan にチャットメッセージを送る
    • Kandan のチャットメッセージをもとにサーバー内で任意の処理を実行したり、チャットメッセージを返却する
  • Kandan

    • Hubot へScriptの実行を促すコマンドを送る

Gviz DSL

このファイルを ruby で実行すると、
oss_agile_dev_env.dot, oss_agile_dev_env.png が生成されます。

require "gviz"

Graph do
  route :Hubot => [:Kandan]
  route :Kandan => [:Hubot]
  route :GitLab => [:Hubot, :GitLabCI]
  route :GitLabCI => [:Hubot, :GitLabCiRunner, :Hubot]
  route :GitLabCiRunner => [:GitLabCI]
  route :User => [:Kandan, :GitLab, :GitLabCI]

  save(:oss_agile_dev_env, :png)
end

出力ファイル(dot)

digraph G {
  Hubot;
  Kandan;
  GitLab;
  GitLabCI;
  GitLabCiRunner;
  User;
  Hubot -> Kandan;
  Kandan -> Hubot;
  GitLab -> Hubot;
  GitLab -> GitLabCI;
  GitLabCI -> Hubot;
  GitLabCI -> GitLabCiRunner;
  GitLabCiRunner -> GitLabCI;
  User -> Kandan;
  User -> GitLab;
  User -> GitLabCI;
}

出力ファイル(png)

oss_agile_dev_env.png

7
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?