Change The World

changeworldのblogですよん。

Redmine Advent Calendar jp 2011 の電子書籍が公開されました

Redmine Advent Calendar jp 2011 : ATND

上記で行っておりましたら Redmine Advent Calendar jp 2011 が技術評論社様のご厚意により電子書籍として公開されました。アカウントの登録は必要ですが、無料で電子書籍を読むことが出来ます。電子書籍のダウンロードは以下からお願いします。

Redmine Advent Calendar jp 2011 | Gihyo Digital Publishing

一足先に内容を読ませていただきましたが、2011年12月1日にノリで始めた割には比較的内容が良くまとまっているのではないかなぁと思っております。是非一度お手に取っていただき、内容をご覧いただければ幸いです。

はてな記法モードにしてみる。

ちょっと、設定を弄りたかったので、はてな記法モードで書いてみる。

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

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

Redmine から始める現場・企業文化改革の4つ目の事例を最後にご紹介します。

準備するものは、Redmine, Redmine(≒ITS(Issue Tracking System))に賛成ではない企業 になります。

何か新しいものを採用する際、採用しようとする側がどうしてそれを採用すると良いのか説明する義務があります。この説明に必要なエネルギーの量は企業の規模の二乗に比例します*1

このエネルギーを惜しんで大抵の人は自分さえ、もしくは自分の現場さえ採用出来れば良いという行動をしがちですが、その行く末はあまり良いものではありません。

理由として、自分さえ、もしくは自分の現場さえという思想は部分最適です。部分最適では残念ながら全体としての力は向上しません。例えば、ここに一本の鎖があります。この鎖の強さ、すなわち強度は一体何によって決まるのでしょうか? 言うまでもありませんね、それは鎖を構成する輪の中で一番弱い部分の強度によって決まります。強く引っ張られた鎖は、強度が一番弱い部分で断ち切れます。これは、他の部分がどれだけ強い輪で構成されていても同じです。輪の一番弱い部分を補強しない限り、鎖全体の強度を向上することはできません(鎖の例であまり分らなかったら、切れ込みを入れた紙と、入れていない紙を引っ張った際にどこで紙が切れるか実践してみると良いでしょう)。これと同じことが部分最適でも起こります。

というわけで、全体としてよくする場合、最終的には企業文化を改革する必要があります。手始めとして、自分、自分の現場でまず実践するのは良いと思います。

さて、ここまでは前置きとして、では社内に Redmine を適用する段で最も良く聞かれるのは「Redmine を採用するとどういう効果がある?」です。定性的効果で納得してくれる人もいますが、大抵の人は定量的効果を求めてきます。

定性的効果については、皆さんが思ったことを正直に伝えるのが良いと思います。逆に定量的効果は論理的に導き出す必要があります。

定量的効果として最も求められる要素は生産性です。これは Excel のWBS(Work Breakdown Structure)を使った場合と Redmine を使った場合でどれだけ生産していない時間が減るかを単純に足し合わせた数字を伝えると良いでしょう。「開発リズムがあがる」「モチベーションがあがる」といった計測出来ない要素は外してください。私は1日に Excel のWBSの更新にかかる時間を全ての拠点で調査して、その平均時間×人数とRedmine のチケットの更新にかかる時間を何人かに試してもらって、それの最大と最小を捨てた数字の平均時間×人数を求めて、「○○日以上の開発を行う場合は、Redmine を導入にかかる時間も十分ペイ出来ます」といったことを伝えました。

次に求められるのは管理側のデメリットです。それへの対応については一昨日Redmine から始める現場・企業文化改革 part.3で書きました。

相手が求めるものにだけただ対応していては、中々採用してもらえません。こちらから逆提案するのも良いです。経験則ですが、 Excel のWBSの場合、前半で追加した作業は基本的に作業の粒度が整えられているのですが、後半に急に追加された作業(=当初想定していなかった作業)の粒度はかなり荒くなります。後半に追加された作業に限定されませんが、後からExcel のWBSに行を追加したりした場合、大幅に他の機能(大抵の場合、右側に日付毎にセル表示されていて、日付と色に紐付いたで消化具合を表す)の部分までメンテナンスするのが厳しいからです。こちらに関して、Redmine では自動的にチケットの状況を表示してくれるので、後からチケットを追加してもメンテナンスするのが厳しいということがあまりありません。

導入してきた経験からはRedmine の機能は管理側には押し付けず、管理側に関しての作業は従来のやり方からあまり変えない方が受け入れられ易いです。そして、「Redmine だとこういったことも出来ますよ」と言ってロードマップやスケジュールの画面を見せれば、普通の管理職なら言われなくても自分でロードマップやスケジュールを見て把握してくれます。

最後に気をつけてもらいたいのは、Redmineは所詮ツールであるということです。ツールを入れることが大事なのではなく、プロセスやマインドを変えることの方が何倍も大事です。Redmine を導入して、「ちょっと…」と使っている開発者側から言われた場合は強引に導入するのではなく、まずはカンバンやToDoボードと付箋紙を使って、チケットの扱いに慣れてもらうのも良いと思います。カンバンやToDoボードと付箋紙でWBSよりもチケットを使った方が開発し易いと感じてもらえれば、「ちょっと…」と思っていた開発者も自分で使い方を調べてくれたりします。付箋紙からの集計を行う必要があるので、管理側に報告するまたは管理側の人にはキツイかもしれませんが、うまく導入出来ればその投資(付箋紙に書かれている内容の集計作業)は何倍、十何倍にもなって帰ってきます。ローリスクハイリターンなことは世の中ではそうありませんから試してみる価値は十分にあると思います。

Redmine(≒ITS(Issue Tracking System))をただのITSというツールの一種としてだけ見るのではなく、Redmine を使ってどういう風に現場・企業文化を良くしていけるか?と考えることで、ここには書いていない様々なメリットを享受出来ることでしょう。その際はblogやWebサイト等に書いてトラックバックをもらえると嬉しいです。

plugin 3分 making

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

plugin 3分 makingとして、3分で plugin を作ってみます。

元ネタはこちらです。

以下は元ネタから引用です。

Redmineを初めて使い始めるメンバーがいるようなときに、よく聞かれる、言われることがあります。

  • 題名を間違ったけど、直せない。
  • 説明は一回書いたら変えれないの?

確かにどうやって更新すれば良いかというのは分り易くありません。元ネタにしたサイトでも書いてある通り、チケットの更新画面で小さく(続き)と書かれているリンクをクリックしなければならないということは大抵の人は気づきません。

では、どうすれば良いか? 元ネタにしたサイトの @two_pack さんは最初から表示するというアプローチを取られたので別のアプローチをしてみましょう。

“続き”だと分り易くないのですから、ここは分り易く“題名等、非表示の項目を表示する際はこちらをクリック”としてしまいましょう。

本体を弄ると後で困ります。そして、言語ファイル(config/locales/*.yml)の内容は plugin が優先されますので、 plugin で実装するのがベターです。では以下に3分で plugin を作ってしまう手順を記載します。

1. plugin の作成

C:\apps\redmine\redmine-1.2-stable>ruby script/generate redmine_plugin ChangeMore

上記のコマンドを実行すると1分程度で、plugin に必要となる基本のファイルを自動生成してくれます。

2. 言語ファイルの作成

vendor/plugins/redmine_change_more/config/locales/ja.yml を作成し、以下の様に記載してください。

ja:
  label_more: 題名等、非表示の項目を表示する際はこちらをクリック

3. 不要ファイルの削除

vendor/plugins/redmine_change_more/config/locales/en.yml があるので、削除してください。これで完成です。自動生成の後は1分程度で出来るので、3分で plugin が出来ました。

4. Redmine を再起動して、表示の確認

どういう風に表示されるのか、Redmine を再起動して、表示を確認してみましょう。

f:id:changeworld:20111224192502p:plain

これなら題名や説明を修正するにはどうすれば良いか分りますよね。

以下にソースを公開していますので、分らない部分がありましたら、参照してください。

https://github.com/changeworld/redmine_change_more

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

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

Redmine から始める現場・企業文化改革の3つ目の事例を簡単にご紹介します。

準備するものは、Redmine になります。

大抵の現場では、WBS(Work Breakdown Structure)に Excel を使っていると思います。ITS(Issue Tracking System)の話を見ると大抵の場合、 Excel に対してあまり良い表現をされないのですが、個人的には Excel に対して、悪い印象は持っていません。Excel は表計算はいうもがな、入力ツールとしてはかなり優秀です。現に、ITに携わる人で Excel の使い方が分らない人は殆どいないでしょう。問題は、 Excel をWBSとして使っていることです。WBSとして使うと、ファイル共有をしたとしても、アクセスが集中した際にファイルが壊れたり、データが落ちたりします。アクセスが集中しなくても、Excel ファイルをローカルに持ってきて、ローカルで更新したものをファイルサーバにアップされるといったこともあります。こういった課題や悪い使い方をされることと、Excel 自体に問題があるかは別問題です。

どうやって、脱ExcelのWBSをするかについては色々な方法があります。基本的に開発者の人たちには話して根回しをしておきましょう。障害になり易いのは Excel のWBSだけを見ている方になりますが、話せば納得してくれる場合は別として、話しても納得してもらえないなら、強引に適用してしまって良いと思います。

こうすると真っ赤な顔して怒ってくると思いますので、その際は慌てず騒がず冷静にデメリットがないことを伝えてください。よくありがちで、そして、うまくいかないパターンなのが、メリットがあることを伝えてしまうことです。真っ赤な顔して怒ってくる人は基本的に守りの姿勢・考え方の人です。今までのやり方から新しいやり方に変えられた(と思って)困っている人です。そんな人に「Redmine にすることで、○○というメリットがあるんです」と伝えても相手の不安を解消していないので、受け入れてもらえません。

ではどうすれば良いでしょうか? 真っ赤な顔して怒ってこないことを祈るのではなく、相手の不安を解消すれば良いのです。

真っ赤な顔して怒って来た人は Redmine を見て「Excel のWBSと全然違う!」と思っています。つまり、Excel のWBSと同じであることを示せば不安は解消されます。チケットの一覧画面から CSV 形式でチケットのデータをダウンロードして、Excel で見せることで、これは対応出来るでしょう。大抵の場合、真っ赤な顔して怒ってくる人の望んだ形式にはなっていないので、そこは加工してください。面倒なら最初は矛を収めてもらう為に、加工してあげて、後は手順を説明書か何かで作って相手が自分自身で出来る様にしてあげれば良いと思います。

そんなことは面倒? なんで上司に対して部下が教育しないといけないんだ? 残念ながら、改革(=変革)には莫大なエネルギーが必要です。それは日本に限らず、アメリカやヨーロッパといった海外でも同じです。そして、変えようとする際にその莫大なエネルギーは誰が出すかというと、変えようとしている人が出さなくてはいけません。つまり、あなたの眼の前には2つの道があります。現場・企業がより機能する様に文化を構築する道か、それとも現状に甘んじてより良い環境が消失するのをただ座視する道かです。

幸運なことに、これは誰かが Win で誰かが Lose になるというゼロサムゲームではありません。真っ赤な顔して怒ってくる人対応をするかもしれないあなたでさえも Win なのです。あなたは何もしない人に比べてエネルギーをこの対応に使うかもしれませんが、その代わりに自分にとってより良い環境を構築することが出来ます。誰かが構築したものだとあなたの望みは全て、もしくは全く叶わないかもしれませんが、あなた自身で構築すれば全てが叶います。そして、そういった自分の理想とする環境を構築するということは誰しもが経験出来るものではありません。経験を取るか、それとも座視するかの判断はあなたが決めてください。ただ、実施すれば、より開発のし易い環境になることと思います。

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

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

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

Free Mind Plugin の開発経緯もかなり単純です。

  • 社内コミュニティ内で自己紹介として偏愛マップを掲載していた。
  • free mind で作るルールになっていたが、free mind を入れていない人でも参照出来る様に画像ファイルに変換してアップするルールになっていた。
  • しかし、そんなルールはよく破られるもので…。
  • free mind ファイルをそのままアップする人が沢山出てきた。
  • 指摘して直してもらうの面倒…。
  • 面倒なことは人間はやらないの鉄則。
  • じゃぁ、そのままアップ出来る様にすればいいじゃん!

と思ったことが経緯です。自作しなきゃいけないかなぁと思っていたんですが、free mind 内にはブラウザに表示してくれるツールが同梱されていたので、free mind ファイルの url を渡せば表示してくれるものとして、最初リリースしました。

その後、 @haru_iida さんが free mind のリポジトリを fork して wikiマクロ化してくれ、今の形に至ります。

r-labsに説明ページがないことを今更ながらに気づいたので、時間を見つけて、r-labsに説明ページを追加致します。

メールで Redmine にチケットを登録する機能の使い方あれこれ

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

昨日意外と知られていない機能 part.4として掲題のメールで Redmine にチケットを登録する機能について紹介しました。本日は機能単体の説明ではなく、機能を使ってどういうことが出来るか、どうすると良いかについて、ご紹介します。

昨日、以下のことが出来ると紹介致しました。

  1. ユーザから来たインシデントのメールを加工後にメールすることで、チケットを自動的に発行出来る
  2. チェックした際に自動的に登録出来るフォーマットでメールをする仕組みを作っておけば、問題を発見次第、自動で登録されるので、登録漏れがなくなる
  3. 他のシステムと連携が容易になる(例. CI の Hudson(Jenkins))

ユーザから来たインシデントのメールを加工後にメールすることで、チケットを自動的に発行出来る

少し考えると、このユーザから来たインシデントのメールを加工するってちょっと面倒ですよね? 面倒なことは人間はやらない、これ鉄則です。つまり、人間の手で毎回加工するのはバッドだということです。ではどうすれば良いでしょうか?

世の中には偉大な人がいて、“Quick Ticket to Redmine”というものを作ってくれているのです。ただ、これfirefoxのアドオンですので、他のブラウザ使っている人は注意してくださいね。

Quick Ticket to Redmine”の素晴らしいところは届いたメールをすぐにチケットとして登録出来る様にしてくれることです。直接 Redmine にアクセスしないメンバーには是非とも firefox を使ってもらって、このアドオンを入れてあげましょう。

他のシステムと連携が容易になる(例. CI の Hudson(Jenkins))

自分でHudson(Jenkins)の設定をやる? それはちょっと面倒ですよね。つまり、それはバッドだということです。ここにも偉大な人がいて、“Hudson Email Extension Plugin”というものを作ってくれているのです。このプラグインはHudsonから送信されるメールの書式を変更出来る様にしてくれます。つまり、Redmine にメールでチケット登録が出来る書式で送信させれば、Hudson(Jenkins)でビルドエラーとなった際に即座にチケットを発行するというプロセスが出来るわけですね。これを私に教えてくれたのは @haru_iida さんという方で、こちら(Hudson × Redmine)にこれを紹介しているプレゼン資料がありますので、より詳細はそちらを参照してください。

チェックした際に自動的に登録出来るフォーマットでメールをする仕組みを作っておけば、問題を発見次第、自動で登録されるので、登録漏れがなくなる

最後にこれはある意味自力でどうぞとしか言えません。なるべく、似た様なことやっている人いないかなぁ~と探したり、やっている人がいたら、そのやり方に合わせるというのも手だと思います。

最後に

ツールは使い方一つで重荷にも快適な開発環境を構築してくれる、開発のスピードをより促進するものにもなります。こういった隠れた機能を使って、是非あなたの現場の環境をより良いものにしてください。