こんにちは。itouです。
今回は、Redmineを用いたプロジェクト管理事例をお伝えします。
■Redmineとは
オープンソースのプロジェクト管理ソフトウェアです。
プロジェクトのタスク管理、進捗管理、情報共有が行えます。
導入しようとしたきっかけは
タスク管理において、現場で、下記のような問題があったからです。
・担当者が曖昧で、放置されているタスクがある
・タスクの対応履歴をメールで確認しているので追うのが大変
今回は、「タスク管理」を中心として
Redmineを用いたプロジェクト管理事例をお伝えいたします。
■導入にあたり
まずは、Redmineをインストールします。
環境はWindows7へのインストールを想定しています。
専用のサーバを立てるのが理想ですが
メンバのクライアントマシンでも問題ありません。
導入ソフトは下記のとおりです。
■導入ソフト
・Redmine2.1.2
Redmine本体です。
・Ruby on Rails
オープンソースのWebアプリケーションフレームワークです。
Redmineは「Ruby on Rails」上で動作します。
Redmineに同梱されています。
・Ruby1.9.3
国産のオブジェクト指向スクリプト言語です。
・RubyGems
Ruby用の標準パッケージ管理システムです。
Rubyに同梱されています。
・SQLite
中小規模向けのデータベース管理システムです。
Redmineはデータベースでタスクを管理しており
今回は、SQLiteを使用します。(他にMySQLなども使用できます)
■インストール手順
・Ruby
http://rubyinstaller.org/downloads
よりRuby 1.9.3-p327を取得します。
インストール中「Add Ruby executables to your PATH」にチェックをいれ環境変数のPATHを通します。
コマンドプロンプトで「ruby -v」と入力しインストールしたバージョンが表示されれば成功です。
・Redmine
http://rubyforge.org/frs/?group_id=1850
よりredmine-2.1.2.zipを取得し
解凍後、任意のフォルダ(例:C:\redmine-2.1.2)に配置します。
・Development Kitのインストール
http://rubyinstaller.org/downloads/
よりDevKit-tdm-32-4.5.2-20111229-1559-sfx.exeを取得します。
解凍後、任意のフォルダ(C:\DevKit)に配置します。
コマンドプロンプトより、下記を実行し、環境変数のPATHを通します。
cd C:\DevKit
devkitvars
※こちらを行わないと、後述のパッケージインストールにて
jsonのインストールがエラーになります
・Bundler
Rubyパッケージの依存関係管理の為、Bundlerというツールを
RubyGemsにてインストールします。
gem install bundler
・パッケージインストール
Redmineを実行するために必要なすべてのパッケージをインストールします。
cd C:\redmine-2.1.2
bundle install --without development test rmagick
PCにImageMagick(ガントチャートのPNG形式でのエクスポートで使用)がインストールされていない場合
「–without development test rmagick」と
rmagickのインストールを省略する必要があります。
私の環境では、省略しないとエラーになりました。
・データベースの設定
展開したRedmineパッケージ内のdatabase.yml.exampleを
コピーしてファイル名をdatabase.ymlに変更します。
(例:C:\redmine-2.1.2\config\database.yml)
database.ymlを下記のように書き換えます。
データベースにはSQLite3を使用し、redmine.dbというDBにデータを格納する旨を記載しています。
production:
adapter: sqlite3
database: db/redmine.db
・データベースの作成・初期化
データベースを作成・初期化します。
cd C:\redmine-2.1.2
rake generate_session_store
rake db:migrate RAILS_ENV=production
rake load_default_data RAILS_ENV=production
(言語を聞かれるので、jaを選択します)
・起動
Redmineを起動します。
cd C:\redmine-2.1.2
ruby script/rails server webrick -e production
※WEBrickとはRubyのみで書かれたWebサーバー用フレームワークです。
Rubyに含まれています。
・アクセス
自分のマシンからアクセスしてください。
http://localhost:3000/
管理者のユーザ/パスワードは下記のとおりです。
admin/admin
他のマシンからアクセスする場合
ipconfigでローカルIPアドレスを確認して
localhostの部分を書き換えてアクセスしてください。
・補足
プロキシを経由してインターネットに接続している場合は
gemの前に、下記のようにプロキシを設定してください。
set http_proxy=user:password@proxyserver:80
・メールの設定
チケットの変更状況をメールで送信することができます。
下記を書き換えてください。
(例:C:\redmine-2.1.2\config\configuration.yml)
default:
# Outgoing emails configuration (see examples above)
email_delivery:
delivery_method: :smtp
smtp_settings:
address: abc.co.jp
port: 25
domain: abc.co.jp
authentication: :login
user_name: "hoge"
password: "hoge
ログイン後「メールの通知」で、受け取りたいメールアドレスを指定してください。
■初期設定
ログインできましたら、初期設定を行います。
・ログイン
最初に、管理者権限でログインします。
ログイン=admin
パスワード=admin
・言語の設定
adminでログイン後、「個人設定」より
言語の設定を行います。
ここでは、日本語を設定します。
・ユーザの追加
adminにログイン後、「管理」→「ユーザ」→「新しいユーザ」より
ユーザを追加してください。
ここで設定したログイン、パスワードにて
各ユーザがログインできるようになります。
・プロジェクトの追加
「管理」→「プロジェクト」→「新しいプロジェクト」より
プロジェクトを追加してください。
・プロジェクトのメンバーを追加
プロジェクトを選択後、「設定」→「メンバ」にて
ユーザをプロジェクトに紐付けてください。
・Redmineの自動起動
PC起動時にRedmineを自動起動するように設定します。
Redmineを起動するコマンドをバッチファイルに記入します。
「redmine.cmd」
cd C:\redmine-2.1.2
ruby script/rails server webrick -e production
続いて、起動時に、当バッチファイルが起動するよう
Windowsのタスクスケジューラに記載します。
タスクスケジューラの設定内容は下記のとおりです。
「全般」タブ
セキュリティオプションには
“ユーザがログオンしているかどうかにかかわらず実行する”を選択してください。
「トリガー」タブ
“スタートアップ時”を選択してください。
「操作」タブ
当バッチファイルを指定してください。
PCを再起動した際に、実行されるはずです。
(私の環境では、ログオン前の実施なので、実行中のコマンドプロンプトは表示されませんでした)
■運用事例
さて、Redmineを使用する環境が整いました。
これからは、Redmineを運用する際に
ぶつかった問題点と、解決策をご報告いたします。
・適切なトラッカーがない
チケットを登録しようとしたときに、早速問題があがりました。
「Aテーブルの使用箇所調査」というチケットを登録しようとしたのですが
適切なトラッカーを指定して分類するのですが
デフォルトの”バグ”、”機能”、”サポート”のどれにも当てはまりません。
バグ…不具合修正すべき問題点
機能…開発する機能
サポート…成果物に直接結びつかない(ソースコードの変更が発生しない)支援業務
私の現場は、ウォーターフロー開発で
調査→設計→実装→単体テスト→結合テスト→連携テスト→総合テストと開発を進めて行きます。
なので、調査とテストをトラッカーに追加します。
「管理」→「トラッカー」→「新しいトラッカーを作成」でトラッカーを作成します。
“ワークフローをここからコピー”とありますが、Redmineでは
トラッカーごとに、ステータス遷移の制御を行うことができます。
今回は、”機能”と同一にします。
・進捗率を更新してくれない
タスクが完了したら、チケットを更新して頂くようメンバに依頼しました。
ステータスは更新してくれるのですが
進捗率の更新が忘れがちでした。
ステータスを「終了」にしても、進捗率が0%のままということがありました。
自分の現場では、そもそも、ステータスと進捗率を別々に管理する必要性がないと感じたので
下記のように対応いたしました。
Redmineの「管理」→「設定」→「チケットトラッキング」で
「進捗の算出方法」を「チケットのステータスを使用する」に変更します。
「管理」→「チケットのステータス」にて
各ステータスの進捗%が入力可能になります。
この設定変更を行うと、ステータス変更の際に自動的に進捗率を設定できます。
逆に、進捗率の手入力は行えなくなります。
・タスクAの後にタスクBを実行する旨を明示的にしたい
今回、「#8データフローの作成」のタスクの前に「#6既存データフローの仕様把握」タスクをする必要がありました。
この場合、チケット#8から#6に対して「ブロックしている」を設定します。
そうすると、チケット#8が終わらないと、#6が終了できないように制限をかけることができます。
・チケットの更新処理が遅い
チケットの更新処理が遅かったので、調べてみると
更新処理の際に実施しているメール送信処理が遅いことが判明しました。
メールの配信をやめれば、問題は解消しますが
タスクの把握漏れを起こさない為に、メールは続けたいです。
configuration.ymlを、下記のように修正すると
メール処理が非同期になるので、更新処理が早くなります。
・delivery_methodを「smtp」→「async_smtp」
・「smtp_settings」を「async_smtp_settings」
(例)
default:
email_delivery:
delivery_method: :async_smtp
async_smtp_settings:
address: xxxxx.co.jp
port: yy
・夕会でのタスク共有
私のチームでは毎日、夕会を開いて
「実施したタスク」「今後のタスク」「問題点」を共有するようにしているのですが
タスクについては、Redmineベースで報告するようにしました。
「実施したタスク」については、夕会前にRedmineに入力していただくようにします。
そうすると、実施したタスクの内容が、担当者別に活動欄に表示されるので一目瞭然です。
夕会の場で、新しいタスクが発生した場合は
その場でチケットを登録し担当割をします。
■総括
Excelや、メール、口頭でのタスク管理方法から
Redmineを活用したチケットでのタスク管理にしたことにより
漏れなく、スピーディに、タスク管理を行えるようになりました。