こんにちは、新しい Trac プラグイン「WikiGanttChartPlugin」をリリースいたしました。
このプラグインを使うと、Trac の Wiki やマイルストーン(ロードマップ画面)でガントチャートを作成することが出来ます。

動作しているスクリーンショット(イメージ図)は以下です。
WikiGanttChartPlugin
WikiGanttChartPlugin - Red
WikiGanttChartPlugin - Gray

このエントリーではインストールと初期設定について見ていきます。

1. easy_install でインストール

easy_install に http://trac-hacks.org/svn/wikiganttchartplugin/0.12 を渡せばインストールできます。
svn コマンドがインストールされていない環境では、easy_install は利用できません。その場合、Trac-hacks の WikiGanttChartPluginから手動でダウンロードを行い、ダウンロードしたディレクトリを easy_install に渡すようにしてください。

$ easy_install http://trac-hacks.org/svn/wikiganttchartplugin/0.12

TracLightning(Windows)の例:

C:\TracLight\bin>easy_install http://trac-hacks.org/svn/wikiganttchartplugin/0.12
Downloading http://trac-hacks.org/svn/wikiganttchartplugin/0.12
Doing subversion checkout from http://trac-hacks.org/svn/wikiganttchartplugin/0.12 to c:\docume~1\admini~1.ope\locals~1\
temp\easy_install-eif74t\0.12
Processing 0.12
Running setup.py -q bdist_egg --dist-dir c:\docume~1\admini~1.ope\locals~1\temp\easy_install-eif74t\0.12\egg-dist-tmp-cj
zevi
error: wikiganttchart/locale\ja\LC_MESSAGES\wikiganttchart.po:37: unknown named placeholder u'lineno'
wikiganttchartplugin 0.12.0.1 is already the active version in easy-install.pth

Installed c:\traclight\python\lib\site-packages\wikiganttchartplugin-0.12.0.1-py2.6.egg
Processing dependencies for wikiganttchartplugin==0.12.0.1
Finished processing dependencies for wikiganttchartplugin==0.12.0.1
C:\TracLight\bin>

2. trac.ini でプラグインを有効にする

有効にしたい Trac プロジェクトの conf/trac.ini でこのプラグインを有効にします。(inherit-file で共有している trac.ini でも可能)

# trac.ini
[components]
wikiganttchart.* = enabled

WikiGanttChartPlugin は trac.ini でオプション設定が可能です。
オプション設定は必須ではありません。

[wikiganttchart]
ticket.default_type = 
ticket.due_date = due_date
ticket.due_date.format = YYYY-MM-dd
ticket.start_date = due_date
ticket.start_date.format = YYYY-MM-dd

この後、Trac を動作させている Web サーバを再起動させます。
ガントチャートの開始日[start_date]と終了日[due_date]を指定していますが必須ではありません。このフィールドはガントチャートのタスクからチケット作成するときに自動連動させることが出来ます。

利用するためにチケットのカスタムフィールドに「start_date」「due_date」2項目追加する必要があります。

例示した設定の場合

  • start_date ・・・作業開始日
  • due_date ・・・作業終了日

を設定しています。利用する前にカスタムフィールドを追加してください。
これでインストール作業は終了です。

利用方法の説明についてはこちらのエントリー「[trac][tracpath] Wiki書式によるシンプルなガントチャート(使い方)」を参照してください。

3. 設定の説明とカスタマイズ

WikiGanttChartPlugin は trac.ini で日付の書式や開始日、終了日に利用するカスタムフィールド名をカスタマイズすることができます。
WikiGanttChartPlugin の設定項目の説明と利用方法についてまとめています。

WikiGanttChartPlugin 設定一覧
解説 設定例
ticket.default_type ガントチャートのタスクからチケット作成したとき、チケットの分類を定義します。(新規チケットを作成する際の使用するデフォルトの分類)
ticket.default_type = バグ
ticket.due_date ガントチャートのタスクからチケット作成したとき、チケットの終了日を設定します。(必須ではありません)チケットの期限日フィールドの名前を指定します。
ticket.due_date = due_date
ticket.due_date.formatn チケットの期限日フィールドの書式。「YYYY/MM/dd」「YYYY-MM-dd」「YYYY.MM.dd」の3種類が設定可能です。
ticket.due_date.format = YYYY/MM/dd
ticket.start_date ガントチャートのタスクからチケット作成したとき、チケットの開始日を設定します。(必須ではありません)チケットの開始日フィールドの名前を指定します。
ticket.start_date = start_date
ticket.start_date.format チケットの開始日フィールドの書式。「YYYY/MM/dd」「YYYY-MM-dd」「YYYY.MM.dd」の3種類が設定可能です。
ticket.start_date.format = YYYY/MM/dd

Wiki書式によるシンプルなガントチャート

 こんにちは、以前 trac や tracpath で利用する事を想定した「シンプルなガントチャート」を技術チームブログで紹介しました。
これまで会社内部のプロジェクトや関係者のみで利用してきましたが、やっと trac と tracpath 用にリリースすることができました。

Wiki書式によるシンプルなガントチャートについて、機能を紹介したいと思います。

Wiki書式によるシンプルなガントチャートの機能

シンプルな最小限の機能が利用でき、Excelのガントチャートより使いやすく、更新がしやすいことを目標に私達が「ガントチャートに求める点」を決めて開発してきました。

  • 「項目、開始日、終了日、進捗率、担当」の最小構成が管理出来ること
  • メンテナンスが簡単・・・ガントチャート作成に時間をとられたくない
  • サクサク変更できる・・・Web-UIとテキストベース(Wiki書式)による更新ができること
  • 更新履歴
  • 見た目がシンプルで分かりやすい

シンプルなガントチャート機能

  • trac / tracpath に対応したガントチャート機能
  • Wiki / マイルストーン でガントチャートを作成可能
  • シンプルな書式を入力するだけでガントチャートが作成可能
  • ガントチャートの項目からチケット作成が可能
  • ガントチャートの項目とチケット連携が可能
  • ガントチャートは「項目名、開始日、終了日、進捗、担当」が管理可能
  • 項目は階層化することが可能(3段階)
  • 進捗(%)を管理し、カラフルなバーで表示可能
  • テーマ機能(6色から選択)

Wiki書式によるシンプルなガントチャートの使い方

使い方はとても簡単です。Wiki / マイルストーンのページで新規ページを作成します。既存のページでガントチャートを利用する場合は「編集」します。

1. Wiki ページにガントチャートマクロを記述

 [[Gantt]]

これだけです。記述後、ページを更新します。

step01step02

2. ガントチャートを作成します。

ガントチャートにデータを作成する方法は2つあります。
1つは、ページの編集画面を開いて Wiki 書式を入力する方法です。

step03

もう1つはガントチャート上からマウスの右クリックでメニューを表示し、「タスクの挿入」を選択します。

step04step05

3. Wiki 書式による入力方法

Wiki書式による入力では以下のような入力ルールがあります。
入力ルールはとても簡単です。入力順番と階層の2つを理解してください。

  1. ガントチャートの項目はカンマ区切りで入力します。順番は「項目」「担当者」「開始日」「終了日」「進捗率」です。
  2. 空白で始まる行は階層構造を表示します。階層構造のレベルに制限はありません。

step06

開発マイルストーン, , 2014-07-01, 2014-09-30, 
要件定義, , , , 
 プロジェクト計画の作成, OG, 2014-07-01, 2014-07-11, 80%
 要件ヒアリング打合せ, OG, 2014-07-07, 2014-07-09, 50%
 技術調査, OG, 2014-07-07, 2014-07-14, 70%
   技術調査1, OG, 2014-07-07, 2014-07-14, 70%
   技術調査2, OG, 2014-07-07, 2014-07-14, 70%

4. ガントチャート上で入力する方法

ガントチャートを表示している画面で入力するための機能があります。ガントチャートの上で右クリックメニューを押下します。対応するメニューが表示されますので選択するだけです。すでに登録しているタスクはダブルクリックすることで編集画面を表示することが可能です。

step07step08

ガントチャートの操作メニュー

タスクの編集 タスクの編集用画面を表示し、対象のタスクを編集します。
タスクの削除 タスクを削除します。削除は即時実行されます。
タスクの挿入 新しいタスクを挿入します。タスクの挿入は選択した行の下に挿入されます。
サブタスクの挿入 新しいサブタスクを挿入します。
上へ移動 タスクを上に移動します。
下へ移動 タスクを下に移動します。
レベルを上げる タスクの階層を1つ上げます。
レベルを下げる タスクの階層を1つ下げます。
チケットの作成 新規チケットを作成します。新規チケットは「タスク」「開始日」「終了日」「担当」が設定されているときはチケットに自動反映されます。

サンプルデータ

サンプルデータを作成しました。Wikiに貼り付けてください。Wiki書式によるシンプルなガントチャート機能をすぐに利用する事が出来ます。

step09

= シンプルなガントチャート

{{{#!Gantt id="3124d31e34b0" style="blue"
開発マイルストーン, , 2014-07-01, 2014-09-30, 
定例ミーティング(要件ヒアリングの同時開催), OG, 2014-07-01, 2014-09-30, 
お客様イベント, , , , 
要件定義, , , , 
  プロジェクト計画の作成, OG, 2014-07-01, 2014-07-11, 80%
  要件ヒアリング打合せ, OG, 2014-07-07, 2014-07-09, 50%
  技術調査, OG, 2014-07-07, 2014-07-14, 70%
基本設計, , , , 
  アーキテクチャ設計, OG, 2014-07-14, 2014-07-25, 10%
  機能実現調査, OG, 2014-07-14, 2014-07-31, 0%
  システムデータ設計, OG, 2014-07-28, 2014-07-31, 
  外部連携プラグイン、技術調査, OG, 2014-07-22, 2014-07-31, 
詳細設計, , , , 
  No.01, OG, 2014-08-01, 2014-08-08, 
  No.02, OG, 2014-08-01, 2014-08-08, 
  No.03, OG, 2014-08-01, 2014-08-08, 
  No.04, OG, 2014-08-01, 2014-08-08, 
  No.05, OG, 2014-08-11, 2014-08-15, 
  No.06, OG, 2014-08-11, 2014-08-15, 
  No.07, OG, 2014-08-11, 2014-08-15, 
  No.08, OG, 2014-08-11, 2014-08-15, 
製造, , , , 
  No.01, OG, 2014-08-08, 2014-08-15, 
  No.02, OG, 2014-08-08, 2014-08-15, 
  No.03, OG, 2014-08-08, 2014-08-15, 
  No.04, OG, 2014-08-08, 2014-08-15, 
  No.05, OG, 2014-08-15, 2014-08-22, 
  No.06, OG, 2014-08-15, 2014-08-22, 
  No.07, OG, 2014-08-15, 2014-08-22, 
  No.08, OG, 2014-08-15, 2014-08-22, 
結合試験,  OG, 2014-08-22, 2014-08-26, 
統合試験(お客様確認試験),  OG, 2014-08-22, 2014-08-29,
移行作業,  OG, 2014-08-29, 2014-08-30,
リリース,  OG, 2014-08-29, 2014-08-30,
}}}

おおまえです。今日は雪がよく降りますね。また大雪らしいです。前の大雪では傘を持ちながらこけて傘の骨を少し曲げてしまいました。今回は気をつけたいところです。

さて Python で Excel ファイルを作成する際に使うライブラリとして xlwt (*.xls) と openpyxl (*.xlsx) が知られていると思います。

ここで xlwt ライブラリ使う際には注意しなければいけないことが1つあります。それは大量の行/セルを設定する場合は、適当なタイミング(1000行ごとに一回とか)で Worksheet.flush_row_data() を呼んでメモリ上のデータをファイルに書き出すようにすることです。

設定されるデータ量が決まっている場合はよいですが、予測できない場合はこれをやっておかないと大量のメモリを消費させられてひどい目に遭います。(というか遭いました)

このメソッドは http://www.python-excel.org/ から辿れる xlwt document のページには見当たりませんが、The Tutorial python-excel.pdf の Page.21 には以下にような記載にて注意がなされています。

If a large number of rows have been written to a Worksheet and memory usage is becoming a problem, the flush_row_data method may be called on the Worksheet. Once called, any rows flushed cannot be accessed or modified.

It is recommended that flush_row_datais called for every 1000 or so rows of a normal size that are written to an xlwt.Workbook. If the rows are huge, that number should be reduced.

そういうことで xlwt を使っている ExcelDownloadPlugin でその状況になってしまいましたので http://trac-hacks.org/changeset/13423 にて修正しています。同じ問題に遭遇したひとはプラグインを更新してみてください。

sugimotoです。

TracをLinuxにインストールする手順です。
今回は以下の構成でセットアップしています。

  • CentOS5.4
  • Aapache
  • WSGI
  • Trac0.12
  • SQLite

途中、エラーなど出て半日くらいかかりました。
今すぐ使いたい人は、Cikloneにサインアップして、今すぐ使いましょう。

必要なパッケージのインストール

インストールドキュメントには以下のパッケージが必要だと書いています。

  • Python
  • setuptools
  • Genshi
  • SQLite
  • Babel

それでは早速インストール

> yum install python

TracはPython 2.4以上で動作可能です。
CentOSでの最新バージョンは2.4.3でした。ちょっと古いがぎりぎりセーフですね。

> yum install sqlite

SQLite 3.3.6がインストールされました。

Python 2.4 の場合、SQLiteでTracを使うにはPySqliteが必要になります。
こちらのサイトからダウンロードします。

そして、PySqliteのページの要領でインストールします。

> wget http://pysqlite.googlecode.com/files/pysqlite-2.6.0.tar.gz
> tar xzvf pysqlite-2.6.0.tar.gz
> cd pysqlite-2.6.0
> python setup.py build_static install

setuptools のインストール

以下のサイトから egg ファイルをダウンロードします。

> wget http://pypi.python.org/packages/2.4/s/setuptools/setuptools-0.6c11-py2.4.egg#md5=bd639f9b0eac4c42497034dec2ec0c2b

shellのように起動せよ。ということなので、起動すると、インストールできたようです。

> sh setuptools-0.6c11-py2.4.egg
Processing setuptools-0.6c11-py2.4.egg
creating /usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg
Extracting setuptools-0.6c11-py2.4.egg to /usr/lib/python2.4/site-packages
Adding setuptools 0.6c11 to easy-install.pth file
Installing easy_install script to /usr/bin
Installing easy_install-2.4 script to /usr/bin

Installed /usr/lib/python2.4/site-packages/setuptools-0.6c11-py2.4.egg
Processing dependencies for setuptools==0.6c11
Finished processing dependencies for setuptools==0.6c11

コマンドが使えることを確認

> easy_install -h

GenshiとBabelをインストール

GenshiとBabelはともに eash_install コマンドでインストールできます。

> easy_install Genshi
Searching for Genshi
Reading http://pypi.python.org/simple/Genshi/
Reading http://genshi.edgewall.org/
Reading http://genshi.edgewall.org/wiki/Download
Best match: Genshi 0.6
Downloading http://ftp.edgewall.com/pub/genshi/Genshi-0.6-py2.4.egg
Processing Genshi-0.6-py2.4.egg
Moving Genshi-0.6-py2.4.egg to /usr/lib/python2.4/site-packages
Adding Genshi 0.6 to easy-install.pth file

Genshi 0.6 がインストールできました。簡単です。

Babelも同じようにインストールします。

> easy_install Babel
Searching for Babel
Reading http://pypi.python.org/simple/Babel/
Reading http://babel.edgewall.org/
Reading http://babel.edgewall.org/wiki/Download
Best match: Babel 0.9.5
Downloading http://ftp.edgewall.com/pub/babel/Babel-0.9.5-py2.4.egg
Processing Babel-0.9.5-py2.4.egg
creating /usr/lib/python2.4/site-packages/Babel-0.9.5-py2.4.egg
Extracting Babel-0.9.5-py2.4.egg to /usr/lib/python2.4/site-packages
Adding Babel 0.9.5 to easy-install.pth file
Installing pybabel script to /usr/bin

Installed /usr/lib/python2.4/site-packages/Babel-0.9.5-py2.4.egg
Processing dependencies for Babel
Finished processing dependencies for Babel

Babel 0.9.5 プロジェクトページからダウンロード出来るのと同じ、最新版です。

Tracには最近はやりのMercurialやGit用のプラグインもありますが、デフォルトのソース管理となるSubverionはインストールしておきましょう。

> yum install subversion

Subversion 1.4.2 がインストールされました。Tracの正式サポートは 1.5, 1.6 みたいですね。。
「1.4 でも動くはずだけどね。」みたいに書いてます。。がんばれ。

Tracのインストールとプロジェクトの作成

さて、いよいよ Trac のインストールです。
今回は最新が使いたいので、0.12 ベータをインストールします。

> easy_install Trac==0.12b1

バージョンは == で指定するんですね。なんとも独特な。

2010/05/14追記: Tracを多言語対応するにはインストール前に言語ファイルのコンパイルが必要です。Tracを日本語化する場合は翌日の日記=>「日本語化したTracをインストールする」の方法でインストールしてください。

TracEnvの作成

Tracがインストールできたので、さっそくプロジェクトを作りましょう。
initenv コマンドを実行するとプロジェクト名など聞かれますので適宜入力します。

> mkdir -p /var/share/trac/projects/sandbox
> trac-admin /var/share/trac/projects/sandbox initenv

うまくいったようです。

> ll /var/share/trac/projects/sandbox/
total 36
drwxr-xr-x 2 root root 4096 May 13 18:19 attachments
drwxr-xr-x 2 root root 4096 May 13 18:19 conf
drwxr-xr-x 2 root root 4096 May 13 18:19 db
drwxr-xr-x 2 root root 4096 May 13 18:19 htdocs
drwxr-xr-x 2 root root 4096 May 13 18:19 log
drwxr-xr-x 2 root root 4096 May 13 18:19 plugins
-rw-r--r-- 1 root root   98 May 13 18:19 README
drwxr-xr-x 2 root root 4096 May 13 18:19 templates
-rw-r--r-- 1 root root   27 May 13 18:19 VERSION

ちゃんとプロジェクトが出来てますね。
デプロイ用のコマンドでCGIなどのファイルを作成しておきます。

> trac-admin /usr/share/trac/projects/sandbox deploy /tmp/deploy
> mv /tmp/deploy/* /usr/share/trac/.
> rm -fR /tmp/deploy

Apache で使うつもりなので、permissionも変えておきましょう。

> chown -R apache:apache sandbox

Apacheとmod_wsgiの設定

インストールマニュアルにはfcgiかmod_wsgiを推奨すると書いてあるので、今回は mod_wsgi でTracを使うことにします。
mod_wsgi はyumではインストール出来ません。
もう少しなんですが、ちょっとめんどくさくなってきましたね。。

> wget http://modwsgi.googlecode.com/files/mod_wsgi-3.2.tar.gz
> tar xzvf mod_wsgi-3.2.tar.gz
> cd mod_wsgi-3.2
> ./configure
checking for apxs2... no
checking for apxs... no
checking Apache version... ./configure: line 1704: apxs: command not found
./configure: line 1704: apxs: command not found
./configure: line 1705: apxs: command not found
./configure: line 1708: /: is a directory

checking for python... /usr/bin/python
./configure: line 1877: apxs: command not found
configure: creating ./config.status
config.status: error: cannot find input file: Makefile.in

エラーです。httpd-devel のコマンドが必要みたいです。
しょうがないので、インストールしましょう。

> yum install httpd-devel
> ./configure
> make
/usr/sbin/apxs -c -I/usr/include/python2.4 -DNDEBUG -D_GNU_SOURCE   mod_wsgi.c -L/usr/lib -L/usr/lib/python2.4/config  -lpython2.4 -lpthread -ldl  -lutil -lm
/usr/lib/apr-1/build/libtool --silent --mode=compile gcc -prefer-pic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=generic -fasynchronous-unwind-tables -fno-strict-aliasing  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -pthread -I/usr/include/httpd  -I/usr/include/apr-1   -I/usr/include/apr-1  -I/usr/include/python2.4 -DNDEBUG -D_GNU_SOURCE  -c -o mod_wsgi.lo mod_wsgi.c && touch mod_wsgi.slo
mod_wsgi.c:135:20: error: Python.h: No such file or directory
mod_wsgi.c:138:2: error: #error Sorry, Python developer package does not appear to be installed.
mod_wsgi.c:142:2: error: #error Sorry, mod_wsgi requires at least Python 2.3.0 for Python 2.X.
mod_wsgi.c:150:2: error: #error Sorry, mod_wsgi requires that Python supporting thread.

またまたエラーです。
プロジェクトホームページに解説がありました。

通常のLinuxパッケージでインストールしたPythonにはヘッダーファイルが無いので
dev パッケージを入れなさいと言っています。

> yum install python-devel
> ./configure
> make
> make install

今度はうまくいきました。

では Apacheに mod_wsgi をロードして、trac環境を作りましょう。

/etc/httpd/conf.d/trac.conf を以下のように作成します。

LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias / /usr/share/trac/cgi-bin/trac.wsgi

    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all

やっとセットアップが終了、かなり大変でした。。
Apacheを起動して、確認します。

> /etc/init.d/httpd start

一応、Tracの画面が表示されました。

でも使う前に、まだやることがあるようです。。。

  • サイトの日本語化
  • チケット作ろうと思ったら、認証情報がないといわれた。。
  • Subversionとの連携
  • プラグインとか入れたい

だんだん面倒になってきたあなたにはクラウド型バージョン管理のサイクロンがあります!サイクロンの画面イメージはこんな感じ。

■ サイクロンダッシュボード画面 サイクロンのダッシュボード画面 サイクロンにはいつまでも無料 でお使い頂けるフリープランもあります。是非1度お試しください。 サイクロンのフリープランはいつまでも無料です。