Change The World

changeworldのblogですよん。

愛用している plugin part.3

Redmine Advent Calendar jp 2011 Changeworld on Redmine 14日目の参加記事です。

愛用している plugin 3つ目としてご紹介するのは“Work Time Plugin”です。

リンク先を見ていただくと分かる通り、Work Time Plugin の素晴らしい点は Redmine のチケットを1つ1つ開かなくても複数のチケットに一気に時間(工数)を入力することが出来ます。作業する度に Redmine のチケットを開いて、更新するということはもちろん正しいのですが、入力し忘れとかを後から一気に入力することが出来るので愛用しています。

大変重宝している plugin ですので、もし入れていない方は一度お試しください。きっと、その効果を知れば、あなたも愛用することになると思います。

独自の項目を追加する方法

Redmine Advent Calendar jp 2011 Changeworld on Redmine 13日目の参加記事です。

独自の項目を追加する方法について、ご紹介します。

Redmine には様々な項目が準備されています。しかし、現場・企業文化によっては準備されていない独自の項目が必要になる場合があります。例えば、アジャイル開発手法で開発を行っている現場では、“ストーリーポイント”がチケットの項目として必要になる時があります。もちろん、Redmine にはそんな項目は準備されていませんので、説明に記載するといった方法や予定工数をストーリーポイントと読み替えるといったことをしがちです。

しかし、Redmine には実は独自の項目を設定することが出来ます。それが“カスタムフィールド”と呼ばれるものです。Redmine の管理画面(管理者権限を保有しているユーザのみ表示されます)に“カスタムフィールド”と書かれたリンクがあるので、それをクリックすると、“カスタムフィールド”を設定することが出来ます。

“カスタムフィールド”には以下の型が使用出来ます。

  • テキスト:1行の文字列
  • 長いテキスト:複数行の文字列
  • 整数
  • 小数
  • リストから選択:選択肢を自分で記述し、ドロップダウンリストを生成
  • 日付
  • 真偽値:チェックボックス
  • ユーザ
  • バージョン

また、それぞれの型によっては妥当性チェックも行うことが出来ます。

他にデフォルト値も設定出来ます。

それでは具体的に、チケットに新しい項目として“ストーリーポイント”を設定する場合を例にして説明します。手順は以下となります。

  1. “カスタムフィールド”のチケットのタブをクリックし、“新しいカスタムフィールドを作成”をクリックする
  2. 名称には“ストーリーポイント”
  3. 書式は“リストから選択”にして、1, 2, 3, 5, 8, 13, 20を記述
  4. トラッカーは機能にチェック
  5. 検索条件として使いたいので“検索条件に設定可能とする”にチェック
  6. “保存”をクリック

これで設定自体は終わりです。

次にどのプロジェクトでこの“ストーリーポイント”を使用するか設定する必要があります。

  1. 使いたいプロジェクトの設定をクリックする
  2. 情報タブの下部に“カスタムフィールド”の下に“ストーリーポイント”と記載されているので、チェックする
  3. “保存”をクリック

これで、準備完了です。

設定したプロジェクトの新しいチケットをクリックし、トラッカーを先程チェックしたもの(例では機能)にすると、ストーリーポイントという項目が出てきます。これは新しいチケットに限った適用ではなく、既存のチケットもトラッカーが先程チェックしたものならチケットの画面にも編集画面にも出てきます。

こんな plugin 作りました part.2

Redmine Advent Calendar jp 2011 Changeworld on Redmine 12日目の参加記事です。

こんな plugin 作りました2つ目としてご紹介するのは“Issue Extensions Plugin”です。

Issue Extensions Plugin の開発経緯はかなり単純です。

  • 担当者がアサインされているのにステータスが新規のままのチケットがあるんだけど…。
  • クローズされているのに進捗率が0%のチケットがあるんだけど…。
  • 関連するチケットを作成するのにチケット番号覚えておくの面倒だなぁ…。

と思ったことが経緯です。最初は口頭で依頼していたんですが、人間のやることなので、徹底されません。そこで、強制的にプラグインで対処しました。

上記サイトを見てもらうと他の機能もありますが、上記の3つ以外の機能であるウォッチャーへの追加や自分を担当者にするボタン、複製リンクは使っている人からの要望で対応しています。

何か要望があったらお気軽に私までご連絡ください。いただいた要望を私で吟味して、私もその機能が欲しいなぁと思ったら対応致します。

Redmine に手を入れずに色々する方法

Redmine Advent Calendar jp 2011 Changeworld on Redmine 11日目の参加記事です。

Redmine に手を入れずに色々する方法について、簡単にご紹介します。

Redmine はプラグインで機能拡張や修正することが意識されています。その結果、 Hook というものが準備されており、手軽に既存の処理に対して色々することが出来ます。

様々な Hookが準備されており、Hookの一覧は以下のコマンドを実行することで確認出来ます。

rake redmine:plugins:hook_list

ここからは具体例をあげて説明しようと思います。通常、チケットの進捗率はステータスに関係がありません。その為、チケットがクローズされているのに、進捗率が0%ということもありえます。これをどうにかして弾こうと思います。上記のコマンドを実行すると、各 Hook が一覧になって表示されます。

app/models/issue.rb:
  * [597] :controller_issues_edit_before_save, { :params => params, :issue => self, :time_entry => @time_entry, :journal => @current_journal})
  * [601] :controller_issues_edit_after_save, { :params => params, :issue => self, :time_entry => @time_entry, :journal => @current_journal})

これはチケット(Issue)を保存する前後に割り込める様に準備されている Hook です。 “チケットがクローズされているのに、進捗率が0%”を回避したいのですから、使うのはcontroller_issues_edit_before_saveになります。

ここからはプラグインの作成についても伝える必要がありますが、プラグイン作成については プラグイン開発ガイド - r-labs - Redmine が詳しいので、そちらを参照してください。

具体的にどういう風にコーディングすれば良いかについては Issue Extensions - r-labs - Redmine で紹介しているプラグインが上記の機能を実装しているプラグインなので、そちらを参照していただければと思います。分かり易くない部分があれば、質問していただければ、回答致します。

Redmine から始める現場・企業文化改革

Redmine Advent Calendar jp 2011 Changeworld on Redmine 10日目の参加記事です。

本日12月10日は皆既月蝕が全国で観測出来るそうですね、皆さんも暖かい飲み物と羽織るもの羽織って、皆既月蝕を眺めてみてはいかがでしょうか。

さて、本日の Redmine Advent Calendar jp 2011 の記事は Redmine から始める現場・企業文化改革です。実際に私が行った改革の一歩とした事例について、簡単にご紹介します。

準備するものは、Redmine, Code Review Plugin になります。

トップダウンで行うなら別ですが、ボトムアップで改革を行う際、Redmine に限らず、ITS(Issue tracking system)を使っていない現場・企業文化では、従来の運用から一気に Redmine に変更することは非常に難しいです。しかし、Redmine, Code Review Plugin をインストールすることは簡単です。

Redmine をインストールするサーバがない? それではあなたの使っているWindows or Linuxマシンにインストールしてください。Redmine は使用する人数にも依存しますが、マシンスペックに高いものを要求しないので動きます。実際に私が最初に導入した際はノートPCに入れて運用していましたので、ノートPCでも問題ありません。

いやいや、うちの会社 or 現場はコンプライアンスが厳しいのでOSSをインストールするだけでも厳しいんだよ? あなたのプロジェクトが一切OSSを使うことを認めていないのなら仕方がありませんが、少しでも使っているならOSSだからと言って一切インストールさせないわけではないのですから、コンプライアンスを取り扱う部門と交渉してみましょう。実際に私が最初に導入した際はOSSをインストールするには管理部門の許可が必要でしたので、その部門に Redmine を使いたいこと、Redmine はどういうものなのか(TracやTFSといったITSやそれに類似した機能を持つシステムを導入しているならば、それに似ていることを説明しましょう)、Redmine を使ってどういうことをしたいのか、Redmine を使ったらどういう効果が出るのかをメールで説明して許可を貰ってインストールしました。“許可を求めるな、謝罪せよ”のマインドで行動したので、ちなみに上司の許可は貰ってません。“許可を求めるな、謝罪せよ”というのは、マーティン・ルーサー・キング・ジュニア氏が仰った“いいアイディアなら、いいからやってしまえ。許可を得るより、謝るほうがずっと簡単だ”が元となっています。

Redmine のインストールと Code Review Plugin がインストールが終われば、次に行うのは使っているリポジトリRedmine に登録することです。こちらの詳細なやり方は本題から外れる為、割愛します。

さて、これで改革の一歩の準備は万端です。今回改革することはインストールしている Plugin からも分かる通り、Code Review です。

Pair Programming をしている人は別ですが、していない人の殆どは Code Review はこうしてらっしゃいませんか?

  1. レビュー対象のコードをレビュー参加人数分印刷する
  2. face to face でコードを1行 or 怪しい部分 毎にレビューする
  3. レビュー後はレビューの記録を書く
  4. 3で指摘事項があれば、レビューの記録を参考に指摘された部分を修正する、3で指摘事項がなければ、レビュー終了
  5. 1に戻る

この手順ははっきり言って時間と資源(紙)のムダです。Code Review Plugin を使って、以下の様に改革しましょう。

  1. レビュー対象のコードをコミットする
  2. レビューアを担当にして、Redmine のチケットを発行する
  3. Redmine がメールを送付するので、それを見たレビューアはリポジトリの対象のコードのページにアクセスし、 コードのレビューをする
  4. 指摘事項があったら、対象コードのリポジトリ画面から即座に Redmine にチケットを発行する
  5. 指摘事項がなければ、Redmine のチケットをクローズする

この手順によって、レビューの記録がチケットなので、レビューイが指摘した内容は残らず記録として残りますし、時間と資源(紙)のムダとがなくなり、レビューイ(つまり、あなた)もレビューアもWin-Winの関係になります。

レビューイに新しい手順をやってもらえない? あなたの現場・企業のレビューイはメールを受信することとブラウザで特定のURLを開くことが出来ないのですか? そんなことないですよね。それならば、問題ありませんよ。今までのやり方から新たに追加されることはそれ位ですからね。

レビューイが新しい手順に否定的? それではレビューイには次の内容を伝えると良いでしょう。

  • “あなた(レビューイ)はレビューに邪魔されることはありません。あなたに都合の良いタイミングで、あなたに都合の良い時間だけレビューをすることが出来ますよ”
  • “指摘した内容が漏れることはありません。Redmine にチケットとして残りますから、あなたは指摘の解消状況を容易に把握することが出来ますよ”

この2点を伝えて、反対した人はそもそもレビューが出来ない人(ただレビューに同席していただけでまともな指摘を出来ない人)でしたので、その人がレビューしなくても問題ありませんよね。レビューイとして必要な人でもこの2点で納得しないかもしれません。その際はあなたのコンテキストにあった内容で相手を納得させてください。基本的に不安に思っていることを解消してあげれば、大抵の人はこの改革に同意してくれます。

意外と知られていない機能 part.2

Redmine Advent Calendar jp 2011 Changeworld on Redmine 9日目の参加記事です。

意外と知られていない機能2つ目としてご紹介するのは“チケット一覧画面のコンテキストメニュー”です。

これは7日目の参加記事に少し書きましたが、機能についてより詳しく説明します。

チケット一覧画面でチケット一覧の左側にチェックボックスが表示されます。
いくつかのチケットのチェックボックスをチェックし、その後、右クリックするとメニュー画面が表示されます。

編集

“編集”はその名の通り、チェックしたチケット(複数も可能です)を一括で編集することが出来ます。

ステータス

“ステータス”は、チェックしたチケット(複数も可能です)のステータスを一括で修正することが出来ます。

“編集”、“ステータス”以外のメニューも基本はチケットに対するアクションになります。複数のチケットへの変更を行う際はこのコンテキストメニューを使って、修正すると良いでしょう。

愛用している plugin part.2

Redmine Advent Calendar jp 2011 Changeworld on Redmine 8日目の参加記事です。

愛用している plugin 2つ目としてご紹介するのは“Hudson Plugin(新名称Jenkins Plugin)”です。

リンク先を見ていただくと分かる通り、Hudson Plugin の素晴らしい点は Redmine と Hudson(Jenkins) を連携させることができることです。Redmine のチケットでコードの修正を行い、それをコミットする際、コミットログにチケット番号を記載することで、CI(Hudson) と ITS(Redmine) が相互にリンクします。Redmine, Hudson(Jenkins) の片方しか見ない人にもそのチケットの課題がどのビルド番号で解消されているのか、そして、ビルド番号を見れば、どのチケットの課題を解消したのかが分かる様になります。SCM、ITS、CI は三種の神器と呼ばれていますが、Hudson Plugin は三種の神器の連携をより強化してくれるものです。

大変重宝している plugin ですので、もし入れていない方は一度お試しください。きっと、その効果を知れば、あなたも愛用することになると思います。