LoginSignup
80
74

More than 5 years have passed since last update.

テキストから線表(ガントチャート)を作成するツールを作った

Last updated at Posted at 2016-07-31

ガントチャートを表示するツール・サービスは結構あるのだけど、タスク管理がメインで、ちょっとした線表を作るにはオーバースペック気味でした。

ということで、テキスト(yaml)からガントチャートを作成するツールを作りました。

yaml2gantt

以下の記事とソースを参考にさせてもらっています。

nodejs v6以上で動作します

インストール

npm install -g yaml2gantt

使い方

以下のコマンドを実行するとsvg が埋め込まれたhtmlが、カレントディレクトリにtask.htmlとして生成されます。
eventの文字がかぶってますが、気にしないでください。。。

html以外に、PNG, SVGをサポートしています。

githubのREADMEにもう少しだけ詳しく書いてます。

yaml2gantt task.yaml

task.yaml

Range:
  start: 2016/06/01
  end: 2016/07/31
Resources:
  frontend:
    name: フロントエンド
    type: section
  bd:
    name: 仕様書作成
    type: task
    start: 2016/06/20
    end: 2016/06/30
    events:
      - name: 内部レビュー
        date: 2016/06/25
      - name: 外部レビュー
        date: 2016/06/30
  coding:
    name: コーディング
    type: task
    start: 2016/07/01
    end: 2016/07/10
    events:
      - name: 内部レビュー
        date: 2016/07/08
      - name: 外部レビュー
        date: 2016/07/10
  test:
    name: テスト
    type: task
    start: 2016/07/11
    end: 2016/07/18

gantt.png

ガントチャートのサイズを変えたい時は、config.yamlを作成し、実行場所と同じ場所に置くか、-c オプションで指定できます。ちなみに、祝日の設定もconfig.yamlに設定できます。

config.yaml

canvas:
  width: 1000
  height: 500
dateLabelType: every_day
holidays:
  - 2016/01/01
  - 2016/01/11
  - 2016/02/11
  - 2016/03/20
  - 2016/03/21
  - 2016/04/29
  - 2016/05/03
  - 2016/05/04
  - 2016/05/05
  - 2016/07/18
  - 2016/08/11
  - 2016/09/19
  - 2016/09/22
  - 2016/10/10
  - 2016/11/03
  - 2016/11/23
  - 2016/12/23

スケジュール比較

compare,compare-gitオプションを利用することで、スケジュールの変更具合がわかります。
resource名が一致するtaskが存在する場合、スケジュールバーの直上に 指定されたtaskのスケジュールバー(黄色)を表示します。

yaml2gantt --compare sample/old/tasks.yaml sample/tasks.yaml
yaml2gantt --compare-git 9a0cc18c sample/tasks.yaml

注意:compare-gitを使う場合、Gitリポジトリのルートディレクトリにいないとエラーになりました。時間ができた時に直したいと思います。

以下のように出力されます。projectAのスケジュールが変わっているのが丸わかりですね。

tasks.png

テキストで線表を管理できてよかったこと

  • 修正が楽
    エディタで開いてさらっと編集できる。
  • バージョン管理ができる
    git で管理しやすく、ある時点と現在との差分をすぐに出せる。昔のガントチャートもすぐに出力できるので、ちょっとずつこっそりずらしてたとしても一目了然になってしまう
    また、予定をずらしたときに、コミットメッセージにその理由を書いていると、git logですぐに確認できる。

今後

自分が欲しかった最低限の機能ができたので更新頻度は遅くなりますが、ちょこちょこと機能追加・修正はしていく予定です。

こういう機能が欲しいなどあればコメントお願いします。

追記

2018/5/6

いくつか機能を追加していたので、本文を更新・修正しています。(v.0.6.0)
仕様も変わっている部分もあるので、ご注意ください。

  • node v5 だと動かなくなります。
  • -o オプションを指定しない場合の仕様変更
    • 標準出力からカレントディレクトリにファイルを作成するように修正
  • PNG出力サポート
  • 比較機能追加
80
74
4

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
80
74