<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>フジハラボ -- 目指せ！スーパーエンジニア</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/" />
    <link rel="self" type="application/atom+xml" href="http://daipresents.com/weblog/fujihalab/atom.xml" />
    <id>tag:daipresents.com,2008-04-07:/weblog/fujihalab//7</id>
    <updated>2010-03-13T15:06:44Z</updated>
    <subtitle>「フジハラボ」はとあるサービス会社で働くアプリケーションエンジニアの勉強場所です。ITエンジニア生活の楽しさを伝えることができたなら。

&apos;Fujihalab&apos; is application engineer&apos;s workspace. I work service company in japan. I want to tell the happiness of the IT engineer life.</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Pro 5.01</generator>

<entry>
    <title>githubと戯れてみた</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/03/first-github.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1887</id>

    <published>2010-03-13T14:53:53Z</published>
    <updated>2010-03-13T15:06:44Z</updated>

    <summary> Redmineのプラグイン作成でgithubにはお世話になっているので、rub...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="git" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="git" label="git" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="github" label="github" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[<p><a href="http://picasaweb.google.com/lh/photo/su9YFP7dxyCtsLAoWn1cAw?feat=embedwebsite"><img src="http://lh5.ggpht.com/__j7E2FKdD6o/S5umgzPWU_I/AAAAAAAALas/DILB9-8wkA0/s400/001.jpg" /></a> <br /></p><p>Redmineのプラグイン作成で<a href="http://github.com/daipresents">github</a>にはお世話になっているので、ruby関係のソースを全部<a href="http://github.com/daipresents">github</a>に移動した。</p>

<p>こうやって並べて見ると、はじめに作った「大豆」から1年ぐらいで5プラグインぐらいになっていた。
2つはforkして日本語環境で動くようにしたりバグを直したりしているけどね。</p>

<p>それにしてもGoogle Codeより使い易い気がする。
タグを打てばDownloadsに表示されるし、コミットログとかログの歴史も見やすいし、素敵になったなー。</p>

<p>gitの勉強はまだなので、コミットしてすぐPushしているけど、入門gitは一通り読んだので、分散型バージョン管理システムの使い方を勉強しよう。</p><p>それにしても「でびあんぐる」さんの翻訳はわかりやすい。あと、「でびあんぐる」って「デビアングループの略」ではないと言うことに気がついた。やまださんごめんなさい。</p>

<p><a href="http://hb.afl.rakuten.co.jp/hgc/09e0b3d2.0532d6d8.09e0b3d3.9a2e768a/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fbook%2f6149325%2f&amp;m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f13248486%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f2740%2f27406767.jpg%3f_ex%3d128x128&amp;m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f2740%2f27406767.jpg%3f_ex%3d80x80" border="0" /></a></p>

<p>その他、Windwos環境でのgitの使い方については、以下を参考にさせていただいた。すっごくわかりやすい。</p>

<ul>
    <li><a href="http://komicomi-dev.info/?p=113">windows環境でのgitの使い方（下準備編） by komicomi開発Blog</a></li>
    <li><a href="http://komicomi-dev.info/?p=121">windows環境でのgitの使い方（リポジトリ作成と設定編）</a></li>
    <li><a href="http://komicomi-dev.info/?p=138">windows環境でのgitの使い方（clone, commit, push編）</a></li>
</ul>
]]>
        

    </content>
</entry>

<entry>
    <title>Redmine CSV Import Pluginを試す</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/03/redmine-csv-import-plugin.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1886</id>

    <published>2010-03-07T11:00:27Z</published>
    <updated>2010-03-07T11:26:31Z</updated>

    <summary>Redmineのデータを大量投入する必要があったのでインポート用のプラグインを探...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Redmine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="plugin" label="Plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="redmine" label="Redmine" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[Redmineのデータを大量投入する必要があったのでインポート用のプラグインを探してみた。<br /><br /><a href="http://www.skyarc.co.jp/engineerblog/entry/post_12.html">RedmineでチケットをCSVから一括登録/更新するプラグイン</a>を見つけたけど、カスタムフィールドに対応していなかったり、二次配布できなかったりしたので、<a href="http://www.martinliu.info/2009/04/redmine_importer-redmine-csv-import-plugin/">Redmine_Importer: Redmine CSV Import Plugin</a>を使うことにした。<br /><br />インストールは<a href="http://github.com/rchady/redmine_importer">GitHubに公開されていたもの（別人が改善したのかな？）</a>を利用。vendor/pluginsにおくだけー。依存するのがfastercsvなので必要であれば「gem install fastercsv」しておく。<br /><br />注意点を先に<br />

<ul>
	<li>バージョンやカテゴリなど、見つからない場合は何も設定されない</li>
	<li>バージョンやカテゴリなど、設定したい場合はプロジェクトにあらかじめ用意しておく必要がある</li>
	<li>CSVにユーザ名がある場合は、loginidに変更する必要がある</li>
	<li>日付はYYYY/MM/DD形式じゃないとエラーになる。Redmineからダウンロードしてきたデータがyyyy年MM月DD日とかの場合は、Redmineの設定でYYYY-MM-DDとかにしてCSVダウンロードするとよい</li>
</ul><br />






<a href="http://picasaweb.google.co.jp/lh/photo/pXmfgAYQgDNjPQ4NSRqgeA?feat=embedwebsite"><img src="http://lh5.ggpht.com/__j7E2FKdD6o/S5OKfJNBaoI/AAAAAAAALZ4/23c4Slworyw/s400/001.jpg" /></a>
<br />画面はこんなかんじ。
ファイルを選び、文字コードを選択する。CSVのデータ内に改行がある場合は「"」でくくる。<br /><br />&nbsp;<a href="http://picasaweb.google.co.jp/lh/photo/G-n_i_uUxrlZ-PYlAZu5Gw?feat=embedwebsite"><img src="http://lh4.ggpht.com/__j7E2FKdD6o/S5OKfMPMizI/AAAAAAAALZ8/9Ieoz-tHWw8/s400/002.jpg" /></a>
<br />アップロードしたデータをもとに、関連付けを行う。
「#」はIDになるので、ignoreにしておけば新規で登録してくれる。IDに紐付ければ更新も出来そうね。<br /><br />&nbsp;<a href="http://picasaweb.google.co.jp/lh/photo/AaFTfSeChyZff6_7gCScpg?feat=embedwebsite"><img src="http://lh6.ggpht.com/__j7E2FKdD6o/S5OKfA2WOiI/AAAAAAAALaA/zKso0VptwVE/s400/003.jpg" /></a>
<br />成功した数を教えてくれる。
失敗した行も教えてくれる。<br />なぜ失敗したかは教えてくれないのでログを見るべし！<br /><br />]]>
        
    </content>
</entry>

<entry>
    <title>RedmineのREST APIを使ってみる</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/03/redmine-rest-api-test.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1884</id>

    <published>2010-03-06T05:31:19Z</published>
    <updated>2010-03-06T12:47:52Z</updated>

    <summary>社内に突っ込んだRedmineが大盛況になりました。「便利なツールが使われる」は...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Redmine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="redmine" label="Redmine" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="rest" label="REST" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[社内に突っ込んだRedmineが大盛況になりました。<br />「便利なツールが使われる」は達成できたので、「そのツールを活かして業務を改善する」まで今年持って行きたい。<br /><br />多分、結構な人数で使っているので、Redmineの勉強会がまたあったら事例共有しようと思うのですが、人数が増えるとやっぱりリクエストが増えます。「わがままいうな！やりたきゃてめーでやれ！」という心の声は置いておいて、今回は、RedmineにRESTでチケット登録したいという要望があったので、ちょっと調べたこと、困ったこと、できたことを共有させていただきます。<br /><br />とても参考になったのが<a href="http://d.hatena.ne.jp/ka-ka_xyz/20100221/1266755189">Redmine REST api を触ってみた。 by ka-ka_xyzの日記さん</a>のページです。ありがとうございます。<br /><br /><h2>準備はいいか？<br /></h2><a href="http://www.redmine.org/wiki/redmine/Rest_api">Redmine REST API</a>は、2010/03/06ではまだ正式にリリースされていないみたいです。これを利用する場合は、<br /><br />

<pre>At the time of writing, the API is only available in trunk (see r3310, r3313).</pre>

と<a href="http://www.redmine.org/wiki/redmine/Rest_api">REST APIのページ</a>にも書かれているように、trunkから一定以上のリビジョンを取得する必要があります。
今回は、r3546をSubversionから取得しました（<a href="http://www.redmine.org/wiki/redmine/Download">Redmine Download</a>にSVNのURLがある）。<br /><br />まず設定。管理＞設定＞認証＞認証が必要にチェックが入っていなければいいのですが、藤原は認証をかけているので、「RESTによるWebサービスを有効にする」にチェックを入れます。<br />&nbsp;<a href="http://picasaweb.google.co.jp/lh/photo/f_pETDQx2fiklhoxFiACNg?feat=embedwebsite"><img src="http://lh4.ggpht.com/__j7E2FKdD6o/S5JG4uu708I/AAAAAAAALZk/QdKU-i84qnY/s800/001.jpg" /></a>
<br />すると、右上にある個人設定を開くと、右側にAPIアクセスキーが表示されます。このキーをもとに認証したとみなすみたいですね。
<br />
これをちゃんと設定しないと、RedmineのRESTを使う場合、認証に失敗すると「401 Unauthorized [http://localhost/issues.xml]」とか怒られます。<br /><br />

<h2>チケットを取得する</h2>
ためしにデータ取得してみます。<br />藤原は<a href="http://www.moongift.jp/2007/12/restclient/">PUT/DELETEメソッドを簡単に「RESTClient」</a>を参考に、<a href="http://code.google.com/p/rest-client/">RESTClient</a>を使いました。<br />FireFoxの<a href="https://addons.mozilla.org/ja/firefox/addon/5946">RESTTest</a>を使っていたのですが、FFでRedmineにログインしていると、RESTTestもログインしているものとみなして動くみたいで、「wgetだとうごかねー！」「curlだと動かねー！」とパニックになりました。パニックは現場でおきます。<br /><br />&nbsp;<a href="http://picasaweb.google.co.jp/lh/photo/EvIhPd1kNknx0k-Up9TUXg?feat=embedwebsite"><img src="http://lh4.ggpht.com/__j7E2FKdD6o/S5JG4wI-XfI/AAAAAAAALZs/ajzjq9ulutg/s400/003.jpg" /></a>
<br />GETで「http://localhost:3000/issues.xml?key=24752bfbeccaa9f094c2f3f0c81ea39b70ae25fe」にリクエストを投げてみると、レスポンスにXML形式でチケット一覧が確認できます。やったね。<br /><br />


<h2>チケットを作成する</h2>
これ手こずりました。なんせサンプルがない！<br />まず、試したRedmineのバージョンでは「HTTP/1.1 401 Unauthorized」になります。処理をトレースしてみて見つけたのですが、issues_controller.rbの27行目で許可するメソッド？を定義しているところがあり、ここにnew、update、destroyが書かれていないので、RESTを使ってなにもできないのかなーと思ってます（コミュニティに投稿しとくかな）。<br />なんで、以下のように書き換えました。

<pre><br />accept_key_auth :index, :show, :changes, :new, :update, :destroy
</pre>

これでメソッドをPOSTで「http://localhost:3000/issues.xml?format=xml&amp;key=24752bfbeccaa9f094c2f3f0c81ea39b70ae25fe」に以下のデータを送信すれば投稿できるはずです。「format=xml」というパラメタも必要らしいです。また投げるときはContent-Typeを「text/xml」にしないと<br /><br />

<pre>Form authenticity token is missing or is invalid. API calls must include a proper Content-type header (text/xml or text/json).
</pre>

と怒られます。
<br /><br />

<pre> &lt;issue&gt;
   &lt;project_id&gt;rest&lt;/project_id&gt;
   &lt;tracker_id&gt;3&lt;/tracker_id&gt;
   &lt;status_id&gt;2&lt;/status_id&gt;
   &lt;priority_id&gt;5&lt;/priority_id&gt;
   &lt;assigned_to_id&gt;1&lt;/assigned_to_id&gt;
   &lt;subject&gt;こんにちは世界&lt;/subject&gt;
   &lt;description&gt;ありがとう世界&lt;/description&gt;
   &lt;start_date&gt;2010-03-01&lt;/start_date&gt;
   &lt;due_date&gt;2010-03-02&lt;/due_date&gt;
   &lt;done_ratio&gt;10&lt;/done_ratio&gt;
   &lt;estimated_hours&gt;10.5&lt;/estimated_hours&gt;
   &lt;custom_field_values&gt;
     &lt;1&gt;カスタムなテキストフィールド&lt;/1&gt;
     &lt;2&gt;11111&lt;/2&gt;
     &lt;3&gt;0.33&lt;/3&gt;
     &lt;4&gt;ううう&lt;/4&gt;
     &lt;5&gt;1978-05-08&lt;/5&gt;
     &lt;6&gt;1&lt;/6&gt;
   &lt;/custom_field_values&gt;
 &lt;/issue&gt;
</pre>


<h2>チケットの更新</h2>
PUTで「http://localhost:3000/issues/[更新するチケットのID].xml?format=xml&amp;key=24752bfbeccaa9f094c2f3f0c81ea39b70ae25fe」に以下のデータを送信します。<br /><br /><pre> &lt;issue&gt;
   &lt;project_id&gt;rest&lt;/project_id&gt;
   &lt;tracker_id&gt;2&lt;/tracker_id&gt;
   &lt;status_id&gt;3&lt;/status_id&gt;
   &lt;priority_id&gt;7&lt;/priority_id&gt;
   &lt;assigned_to_id&gt;3&lt;/assigned_to_id&gt;
   &lt;subject&gt;こんにちは世界2&lt;/subject&gt;
   &lt;description&gt;ありがとう世界2&lt;/description&gt;
   &lt;start_date&gt;2010-03-03&lt;/start_date&gt;
   &lt;due_date&gt;2010-03-04&lt;/due_date&gt;
   &lt;done_ratio&gt;20&lt;/done_ratio&gt;
   &lt;estimated_hours&gt;20.5&lt;/estimated_hours&gt;
   &lt;custom_field_values&gt;
     &lt;1&gt;カスタムなテキストフィールド2&lt;/1&gt;
     &lt;2&gt;111112&lt;/2&gt;
     &lt;3&gt;0.332&lt;/3&gt;
     &lt;4&gt;いいい&lt;/4&gt;
     &lt;5&gt;1978-05-09&lt;/5&gt;
     &lt;6&gt;0&lt;/6&gt;
   &lt;/custom_field_values&gt;
 &lt;/issue&gt;
</pre>

<br />

<h2>チケットの削除</h2>
DELETEで「http://localhost:3000/issues/[削除するチケットのID].xml?format=xml&amp;key=24752bfbeccaa9f094c2f3f0c81ea39b70ae25fe」するだけです。<br /><br />

<h2>困ったこと</h2>
404とかが出た場合は、トラッカーのIDがみつからないよーとかです。きっと。
また、エラーメッセージが返ってくる場合もあります。<br /><br />

<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;errors&gt;
  &lt;error&gt;&amp;#20778;&amp;#20808;&amp;#24230; &amp;#12434;&amp;#20837;&amp;#21147;&amp;#12375;&amp;#12390;&amp;#12367;&amp;#12384;&amp;#12373;&amp;#12356;&amp;#12290;&lt;/error&gt;
  &lt;error&gt;&amp;#12459;&amp;#12473;&amp;#12479;&amp;#12512;&amp;#12394;&amp;#12522;&amp;#12473;&amp;#12488;&amp;#12501;&amp;#12451;&amp;#12540;&amp;#12523;&amp;#12489; &amp;#12399;&amp;#19968;&amp;#35239;&amp;#12395;&amp;#12354;&amp;#12426;&amp;#12414;&amp;#12379;&amp;#12435;&amp;#12290;&lt;/error&gt;
&lt;/errors&gt;
</pre>

こういう場合は何をいっているかわからないので<a href="http://www.kwonline.org/unicode_js.php">こちら</a>とかで日本語化してみてください。<br /><br />

<h2>まとめ</h2>
RedmineのREST APIはまだ開発中なので仕様が変わる可能性があります。しかし、これがあると何かと便利でして<br /><br />

<ul>
	<li>エンジニアじゃない人向けに、簡単なUIつくって簡単ポスト</li>
	<li>どっかのデータからRedmineにチケット化</li>
</ul>

などができるようになります。<br /><br />また、こういう開発中の機能を調べるのは大変ですが楽しいものです。<br />ソースを読んでいると学ぶことがたくさんあります。<br />つーかそろそろRailsを想像で書くのをやめないといけない・・・。Rails本を読みます。<br />]]>
        
    </content>
</entry>

<entry>
    <title>アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣 を読んだ</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/02/agile-practice-books.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1882</id>

    <published>2010-02-28T04:29:37Z</published>
    <updated>2010-02-28T11:32:39Z</updated>

    <summary>だからこそ、態度には十分気を配ろう。自分自身の態度はもちろん、チームの態度にも。...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Agile" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="agile" label="Agile" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[<blockquote>だからこそ、態度には十分気を配ろう。自分自身の態度はもちろん、チームの態度にも。
プロジェクトとチームが評価できる成果をあげること、個人とチームが成長すること、そして成功をおさめることに全力を傾けること。これがプロフェッショナルの態度だ。</blockquote>

<p><a href="http://hb.afl.rakuten.co.jp/hgc/09e0b3d2.0532d6d8.09e0b3d3.9a2e768a/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fbook%2f5271873%2f&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f12693002%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f2740%2f27406694.jpg%3f_ex%3d128x128&m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f2740%2f27406694.jpg%3f_ex%3d80x80" border="0"></a><br />
アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣</p>

<p>アジャイルプラクティスの本だけど、たんに「こうやるべし」が書いてあるわけではない。<br />
そういう情報が欲しい場合は、ちょっと前に読んだ<a href="http://hb.afl.rakuten.co.jp/hgc/09e0b3d2.0532d6d8.09e0b3d3.9a2e768a/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fbook%2f1711131%2f&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f11298359%2f" target="_blank">初めてのアジャイル開発</a>がいいかもしれない。</p>

<p>この本は、プラクティスの説明云々よりも、「プロフェッショナルなエンジニアを目指す心構え」が、ちょっとずつわかり易い言葉で書かれている。ついやってしまうことが悪魔の囁きと、こうやったらうまくいくのでは？という天使の言葉が対になっているため共感しやすかった。</p>

<p>たまたま、先日「すくすくスクラム」に参加したのだが、そこにアジャイルプラクティスの監訳をされた角谷信太郎さんがいらっしゃった（藤原はあとで知った）。</p>

<p>そして、帰りにこの本を読み終えたのだが、この本のすばらしいところは、監訳者あとがきだと思う。<br />
たしかに、この本の中身もとても面白く、小さくまとまっていて楽しく読める。しかし、これを翻訳した方の声がここまで自分に届くとは思わなかった。</p>

<blockquote>アジャイル（agile）という単語が形容詞であること</blockquote>

<p>形容詞は単体では成り立たない。アジャイル開発、アジャイルプロセス・・・といった「何か」と紐づいてはじめて成立する。アジャイルは単体では成り立たない。同じ机でワークショップした人が書いた本ということもあり、「すごい人だな」と肌で感じた。</p>

<p>アジャイルという言葉が技術系記事でも眼にすることが多くなり、社内でも使われるようになり、「またアジャイルブームがきたのか」と思っていた。<br />
Web2.0だのRailsだのFacebookだのTwitterだの、新しくて面白いものが世の中に広がり、「今までと違うやりかた」で成功を収める企業も増えてきたため、もしかすると、これまでのやり方（ウォーターフォールとか）の限界を感じる人達が、角谷さんのような人の声に耳をかたむけるようになったのかもしれない。<br />
そして、その波が業界全体にやってきたのかもしれない。</p>

<p>「アジャイル」という言葉が一人歩きして失敗する例をよく聞いていたり、「それはアジャイルではないでしょ」というような話もよく聞いた。<br />
「アジャイル」というマジックワードが自分の会社でも使われるようになり、「これも失敗しそうだ」という印象が強い。<br />
それをなんとかしたいから勉強しているのだけれど、アジャイルを知れば知るほど、その深さにびっくりする。</p>

<p>自分には「プロフェッショナルになりたい」という思いがある。そのために、アジャイルプラクティスであったり、マネジメント手法であったり、いろんなことを試せるときに（試せないことの方が多かった）試してみた。</p>

<p>ずっと同じことをするには向いていない性格なので、「どうやったらもっとうまくいくか」ばかりを考えて働いていた。<br />
アジャイルプラクティスを読んでいると、これまでやってきたことの答え合わせをしている気分になった。<br />
「ここはこの本に書いてあるやり方のほうがよかったかも」とか「ここは私のやりかただともっといいかも」とか、この本を読んでまたアイデアが浮かんだりとか。</p>

<p>この本からは、そういう前向きな気持を感じることができた。<br />
この本を読んで、アジャイルの価値をさらに深く知りたいとも思った。</p>

<p>次はアジャイルな見積りと計画づくりだー。<br />
<a href="http://hb.afl.rakuten.co.jp/hgc/09e0b3d2.0532d6d8.09e0b3d3.9a2e768a/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fbook%2f5966016%2f&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f13121018%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8399%2f83992402.jpg%3f_ex%3d128x128&m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8399%2f83992402.jpg%3f_ex%3d80x80" border="0"></a><br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Redmineでバーンダウンチャートを作る場合の悩み</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/02/redmine-burndown-dev.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1880</id>

    <published>2010-02-28T04:01:54Z</published>
    <updated>2010-02-28T04:40:13Z</updated>

    <summary>http://github.com/scrumalliance/redmine_...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Redmine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="plugin" label="Plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="redmine" label="Redmine" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scrum" label="Scrum" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[<p><a href="http://github.com/scrumalliance/redmine_burndown">http://github.com/scrumalliance/redmine_burndown</a>にあるプラグインを入れてみたが、何かとエラー画面になったりするので、自分でつくってみよーと思っている。<br />
また<a href="http://github.com/scrumalliance">scrumallianceのGitHub</a>も更新が遅いのでまってられない。</p>

<p>だったら作ればいいじゃない！</p>

<p>ということで、最終的にTracの<a href="http://sourceforge.jp/projects/shibuya-trac/wiki/plugins%2FAgilo_ja">Agilo</a>みたいにアジャイルツール全てを実装することを目指して、Ruby勉強中。</p>

<p>一発目にバーンダウンチャートプラグインを実装してみて気がついたんだけど、Redmineだと以下の点がプラグインに落とし込みにくい。</p>

<ul>
	<li>Y軸を残時間にした場合、予想と実績（タイムトラッキングのデータ）に差分があったとき、実績の残時間が０にならない</li>
	<li>Y軸をチケット数にすると、チケットごとの難易度（多分、予想時間）が見えにくい</li>
</ul>

<p>一つ目は、予想の総和は変わらない（はず）なので線として綺麗にバーンダウンしてくれる。しかし、実績は変動するので、予想時間の合計から線を引くと、最終的に０にバーンダウンしてくれない。<br />
また、チケットが増える（これはよくないんだろうけど）と、ラインの総和がかわるので、Y軸の開始位置がかわる。これだと見積もりがかわる（すなわち予想が外れる）ことになり、開始位置が変わるとそれに気がつかない。</p>

<p>％で表す進捗の問題を、バーンダウンで解決出来ていないじゃん！ということに気がついたのです。</p>

<p><a href="http://github.com/scrumalliance/redmine_burndown">http://github.com/scrumalliance/redmine_burndown</a>では、journalファイルを使っているみたいなんだけど。TimeEntryだとなりたたないのかな。</p>

<p>二つ目は、１時間かかる作業も１０時間かかる作業も、どちらも１つのチケットになるのでチケット数だといいのかわるいのかよくわからん。だから時間にしたいんだけど・・・。</p>

<p>バーンダウンチャートをもうちょっと勉強しないとだめだと思った。むむー。まだまだひよっこスクラムだ。<br />
とりあえずやりたいことをまとめておこう。</p>

<ul>
	<li>見積もりした合計時間がどのように減っていく予定なのかを知りたい</li>
	<li>実績データと見積もりの比較を見える化したい</li>
	<li>最後はどのラインも０になって欲しい</li>
	<li>理想線を表示したい（これは実装できた）</li>
</ul>

<p>----</p>

<p>追記。<br />
これを書きながら、実績や予実管理をいれちゃったらだめじゃん！ということに気がつきました。<br />
終わったか終わらないかをチケットのステータスで判断して作ってみよう。<br />
あとは、残時間がかわったときに、もとの予想時間に影響が出ないような仕様が必要かなー。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Redmineプラグイン開発 - バージョンバーンダウンチャートプラグインリリース</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/02/redmine-version-burndown-charts-plugin-release.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1879</id>

    <published>2010-02-27T07:37:22Z</published>
    <updated>2010-03-13T12:59:16Z</updated>

    <summary>Davisさんが作ったredmine_burndownプラグインを参考に作りまし...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Redmine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="plugin" label="Plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="redmine" label="Redmine" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[Davisさんが作った<a href="http://github.com/scrumalliance/redmine_burndown">redmine_burndown</a>プラグインを参考に作りました。<br />（I made this plugin referring to the redmine_burndown plugin that Mr. Davis had made.）<br /><br />また、プラグインはおしゃれじゃないとモテないのでOFC2を使ってます。<br />(This plugin uses the <a href="http://github.com/pullmonkey/open_flash_chart">OFC2</a>)<br /><br />作者は英語が得意ではありません。<br />(The author is not good at English.Sorry..)<br /><br /><h2>バーンダウンチャートプラグイン(Version Burndown Charts Plugin)</h2>このプラグインは、バージョンに存在するチケットの予定工数からバーンダウンチャートを作成します。<br />(Version Burndown Charts Plugin create burndown chart graph for scrum from ticket's estimated hours in target version.)<br /><br /><a href="http://picasaweb.google.co.jp/lh/photo/K4WsGfzZPIIpokqRy2VZSw?feat=embedwebsite"><img src="http://lh4.ggpht.com/__j7E2FKdD6o/S4o7ZkpzZXI/AAAAAAAALYo/EMFTYblHZZk/s400/001.jpg" /></a><br /><br />より詳細は<a href="http://github.com/daipresents/redmine_version_burndown_charts">github</a>をご確認ください。(You would like to get more information, please check <a href="http://github.com/daipresents/redmine_version_burndown_charts">github</a>.)<br /><br /><h3>Download<br /></h3><ul><li><a href="http://github.com/daipresents/redmine_version_burndown_charts/downloads">github</a> (Recent version is here.)<br /></li></ul><br /><h3>Product Backlog</h3><ul><li>日本語と英語のページを作るのがめんどくさい</li><li>当初の計画を自動計算しているので、予定工数が増えるとグラフの開始位置が変わってしまう。初期見積もりの値で予定グラフを出すかなー</li><li>予想ラインがだしづらい（わりきれなかったりするんで・・・誰かアイデアを下さい）<br /></li></ul>]]>
        
    </content>
</entry>

<entry>
    <title>Redmineにプラグインを入れるときに気をつけたいこと</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/02/redmine-plugin-troubleshooting01.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1878</id>

    <published>2010-02-27T07:08:25Z</published>
    <updated>2010-02-27T07:19:14Z</updated>

    <summary>Redmineのpluginは簡単に導入できて素敵。 しかし、中には既存のテーブ...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Redmine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="plugin" label="Plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="redmine" label="Redmine" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="troubleshooting" label="Troubleshooting" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[<p>Redmineのpluginは簡単に導入できて素敵。</p>

<p>しかし、中には既存のテーブルにalterしちゃうのとかもあるので、Redmine本体のバージョンアップ時や、他のプラグイン実行時になにかと影響が出てしまう場合がある。</p>

<p>例えば、<a href="http://www.redmine.org/boards/3/topics/8339?r=9951">Backlogsプラグイン</a>。これを使っていたら、チケットの削除ができなくなった。ロードマップに開始日を設定できる当たりが怪しい。</p>

<p>また、<a href="http://ociotec.com/redmine/projects/redmine-plugins">Advanced Roadmapプラグイン</a>もその名の通りロードマップを拡張するので、ロードマップ表示に影響が出ていた。</p>

<pre> Showing vendor/plugins/advanced_roadmap/app/views/projects/roadmap.rhtml where line #21 raised:
 undefined method `rest_hours' for #&lt;version:0x6ce9158&gt;
</pre>

<p>プラグインを作るときは、できるかぎり本体に影響が出ないようにしないと、運用中のRedmineがとつぜん暴走する。<br />
本体に影響が出るような修正は、本家にPushすべしかな。</p>]]>
        
    </content>
</entry>

<entry>
    <title>第11回すくすくスクラムに行ってきた</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/02/suc3rum-11-story-card.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1876</id>

    <published>2010-02-25T14:37:28Z</published>
    <updated>2010-02-28T04:43:35Z</updated>

    <summary>第11回すくすくスクラム?ユーザーストーリーはこう書け！? 社内ではなぜか「お前...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Agile" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="agile" label="Agile" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scrum" label="Scrum" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[<p><a href="http://kokucheese.com/event/index/1329/">第11回すくすくスクラム?ユーザーストーリーはこう書け！?</a></p>

<p>社内ではなぜか「お前話せ」みたいな感じで発表したり、勉強会行った事ないのに勉強会をとりまとめたりしていますが、ちまたでいわれているモノホンの勉強会に行ってきました。</p>

<p>ワイクル角さんがスピーカーでした。<br />
（動画：http://www.ustream.tv/recorded/4993458）</p>

<p>*</p>

<p>・ATDP/ATDD（あとで調べる。TDDだけではない）<br />
・BDD（あとで調べる）<br />
・TiDD（チケット駆動。これ日本初なのか）</p>

<p>・3C・・・カード、会話、確認</p>

<p>・ストーリーカード<br />
・・以下で考える<br />
・・・役割<br />
・・・機能、性能<br />
・・・ビジネス価値</p>

<p>・「役割として、機能や性能が欲しい、ビジネス価値があるから」で考える<br />
・・役割から考える方法<br />
・・・私は○○なので・・・から考える</p>

<p>・エレベーターテストステートメント（あとで調べる）<br />
・・エレベータ内のわずかな間で交渉。これぐらいの単位がわかりやすい</p>

<p>・ODSC＋RR（あとで調べる）<br />
・・リクエストが大切そうだな</p>

<p>・エピック<br />
・・このへんでよくわからなくなった<br />
・・分解＞それを実現してもうまくいかない<br />
・・そのままがよい？<br />
・・そういうときは、一回提案から離れる</p>

<p>・命令的ストーリー（うちの会社これだ）<br />
・対話的ストーリー（こうなりたい）</p>

<p>・オープンクエスチョン</p>

<p>・アジャイルにおけるテストの図<br />
・・これはわかりやすかった<br />
<a href="http://hb.afl.rakuten.co.jp/hgc/09e0b3d2.0532d6d8.09e0b3d3.9a2e768a/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fbook%2f6255709%2f&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f13446436%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f7981%2f79811997.jpg%3f_ex%3d128x128&m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f7981%2f79811997.jpg%3f_ex%3d80x80" border="0"></a><br />
・・↑の本がよいらしい＞お気に入りした</p>

<p>・角さんはRedmine派らしい<br />
・・バーンダウンチャートプラグイン真面目に作ろうと思ったりした<br />
・・その前に社内に乱立したRedmineのデータ移行だ・・・</p>

<p>・その他気になったこと<br />
・・小さなチーム、大きな仕事（Rails作った会社の話。へー本になったのか）<br />
<a href="http://hb.afl.rakuten.co.jp/hgc/09e0b3d2.0532d6d8.09e0b3d3.9a2e768a/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fbook%2f6386929%2f&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f13578744%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f1532%2f15320011.jpg%3f_ex%3d128x128&m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f1532%2f15320011.jpg%3f_ex%3d80x80" border="0"></a><br />
・・パワポの下にでていた<a href="http://suke.cocolog-nifty.com/blog/2009/10/ruby-rabbit.html">Rabbit0.6.2</a><br />
・・同じ机の自然体の人<br />
・・・アジャイルな見積りと計画づくり翻訳の角谷さん ＞ 有名な方なんだー<br />
<a href="http://hb.afl.rakuten.co.jp/hgc/09e0b3d2.0532d6d8.09e0b3d3.9a2e768a/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fbook%2f5966016%2f&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f13121018%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8399%2f83992402.jpg%3f_ex%3d128x128&m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8399%2f83992402.jpg%3f_ex%3d80x80" border="0"></a><br />
・・川口さん<br />
・・・動画の人（オギー以外ではじめてみた）<br />
・・・多分、来週お会いするんだろうけど、川口さんであっているかは明日会社にいかないと分からない・・・</p>

<p>*</p>

<p>初めての勉強会感想。</p>

<p>・いきなりワークショップが始まるのでびっくりした ＞ 自己紹介とかするかなーとおもったけど懇親会なのかな？<br />
・参加者は勉強会慣れされているのか、なんかすごく違和感のある感じだった ＞ これは自分の力不足<br />
・久しぶりにすっごくおとなしく過ごした気がする。慣れなのか！？勉強会は不思議な感じ<br />
・勉強会の常連さんは、人が話している時にiPhoneとか平気で触るんだな ＞ これ嫌い</p>

<p>内容の感想。</p>

<p>・認定スクラムマスターまでくると、プロの臭いがする<br />
・内容が難しくて、自分の中に落とせなかった。自分の特徴として理解するまでに時間がかかるので勉強不足<br />
・よって、ワークショップと説明のつながりが見えにくかった ＞ 続けて参加ですね<br />
・ワークショップごとの振り返りもやってほしかった</p>

<p>人生、経験ですな。<br />
面白い本や参考文献を教えてもらったから、それを読んでもう一度話を聞いてみたい。<br />
アジャイル探しはまだはじまったばかりという感触。<br />
がんばって勉強しようとこころに誓うのだった。</p>]]>
        
    </content>
</entry>

<entry>
    <title>RedmineプラグインでOpen Flash Chart（OFC2）を使うとIO ERROR</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/02/redmine-open-flash-chart-io-error.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1875</id>

    <published>2010-02-21T11:36:45Z</published>
    <updated>2010-02-27T15:02:50Z</updated>

    <summary> Redmineのバーンダウンチャートを作りたかったので、Open Flash ...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Redmine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="plugin" label="Plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="redmine" label="Redmine" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[<a href="http://picasaweb.google.co.jp/lh/photo/wkq6HfA9AxvsDropCfIsLw?feat=embedwebsite"><img src="http://lh4.ggpht.com/__j7E2FKdD6o/S4kztdulpvI/AAAAAAAALYA/iYSNFxuwtIE/s400/001.jpg" /></a>
<br /><br />Redmineのバーンダウンチャートを作りたかったので、<a href="http://pullmonkey.com/projects/open_flash_chart2">Open Flash Chart II Plugin for Ruby on Rails - Graphs (OFC 2)</a>を元に、プラグイン内からサンプルを動かしてみる。

ソースは<a href="http://pullmonkey.com/2008/8/1/open-flash-chart-ii-line-graph/">Open Flash Chart II - Line Graph</a>のまんま。indexメソッドのところは以下のように書いた。<br /><br />

<pre>  def index
    @graph = open_flash_chart_object(600,300,"/version_burndown/graph_code")
  end
</pre>

しかし、以下のように怒られます。<br /><br />
<pre>Open Flash Chart
IO ERROR
Loading test data
Error #2032
This is the URL that I tried to open:/version_burndown/graph_code
</pre>

どうも「表示するデータが取れてないよー」ということらしい。<br />&nbsp;「http://localhost:3000/version_burndown/graph_code」をたたくと404になる。これはコントローラ内で、project_idがない場合に404にしているからだと気がつく。<br />「http://localhost:3000/version_burndown/graph_code?project_id=fujihara」を叩くとJSONが表示される。<br />さらにHTMLのソースコードを見てみると以下のようになっていた。<br /><br />

<pre> &lt;script type="text/javascript"&gt;
   swfobject.embedSWF("/open-flash-chart.swf", "flash_content_DleU0GzY", "800", "450", "9.0.0", "expressInstall.swf",{"data-file":"%2Fversion_burndown%2Fgrapha_code"});
 &lt;/script&gt;
</pre>

data-fileというところで「/version_burndown/graph_code」を指定している。<br />これが404でIO ERRORになっているのだろう。

<br />このプラグインの動きは、<br /><br />

<ul>
	<li>Flashのファイル（swfファイル）をHTMLで表示する</li>
	<li>swfファイルの引数に表示するデータ（JSON）のURL、ここでは/version_burndown/grapha_codeをCallする</li>
	<li>受け取ったデータをswfファイルで表示する</li>
</ul>

という順番でグラフを表示しているらしい。
さらに、READMEを見てみると、urlを指定しているところがurl_forを使っていてちょっと違う。<br /><br />

<pre>5) Add the following to the test_it_controller.rb in RAILS_ROOT/app/controllers:
class TestItController &lt; ApplicationController
  
  def index
    respond_to do |wants|
      wants.html {
        @graph = open_flash_chart_object( 600, 300, url_for( :action =&gt; 'index', :format =&gt; :json ) )
      }
      wants.json { 
        chart = OpenFlashChart.new( "MY TITLE" ) do |c|
          c &lt;&lt; BarGlass.new( :values =&gt; (1..10).sort_by{rand} )
        end
        render :text =&gt; chart, :layout =&gt; false
      }
    end
  end

end

6) Add the following to index.html.erb in RAILS_ROOT/app/views/test_it/:
&lt;html&gt;
&lt;head&gt;
  &lt;script type="text/javascript" src="/javascripts/swfobject.js"&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%= @graph %&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>

project_idなどの指定をやめて、READMEどおりやったら動かすことができた。<br />&nbsp;<a href="http://www.4bit.net/archives/2006/04/controllerrespo.html">Controller#respond_toはWeb ApplicationとWeb Serviceの垣根をなくす!?</a>を読んでわかったが、READMEの場合は、JSONやHTMLの呼び出しをわけて処理しているみたいだ。こういうやりかたもあるということか。

<br /><br />今回のケースだと、パラメタにproject_idとversion_idが必要なので以下のように書くと動作する。<br /><br />

<pre>  def index
    @graph = open_flash_chart_object( 800, 450, url_for( :action =&gt; 'graph_code', :project_id =&gt; @project.id, :version_id =&gt; @version.id ) )
  end
</pre>

OFC2の動きが読めてきた。よく出来ているな。<br />]]>
        
    </content>
</entry>

<entry>
    <title>Redmineプラグイン開発 - 0.9.0でプラグインを作ってみる</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/02/redmine-090-plugin-generate.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1873</id>

    <published>2010-02-20T12:21:52Z</published>
    <updated>2010-02-21T10:07:22Z</updated>

    <summary>今回はバージョンごとのバーンダウンチャートを表示するプラグインをOpen Fla...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Redmine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="plugin" label="Plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="redmine" label="Redmine" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[今回はバージョンごとのバーンダウンチャートを表示するプラグインを<a href="http://pullmonkey.com/projects/open_flash_chart">Open Flash Chart Plugin</a>をつかってかわいく作るのが目標。
まずは土台を作るところを見てみる。

<pre>
c:\fujihara\Ruby\redmine-0.9.0>ruby script/generate redmine_plugin version_burndown
      create  vendor/plugins/redmine_version_burndown/app/controllers
      create  vendor/plugins/redmine_version_burndown/app/helpers
      create  vendor/plugins/redmine_version_burndown/app/models
      create  vendor/plugins/redmine_version_burndown/app/views
      create  vendor/plugins/redmine_version_burndown/db/migrate
      create  vendor/plugins/redmine_version_burndown/lib/tasks
      create  vendor/plugins/redmine_version_burndown/assets/images
      create  vendor/plugins/redmine_version_burndown/assets/javascripts
      create  vendor/plugins/redmine_version_burndown/assets/stylesheets
      create  vendor/plugins/redmine_version_burndown/lang
      create  vendor/plugins/redmine_version_burndown/config/locales
      create  vendor/plugins/redmine_version_burndown/test
      create  vendor/plugins/redmine_version_burndown/README.rdoc
      create  vendor/plugins/redmine_version_burndown/init.rb
      create  vendor/plugins/redmine_version_burndown/lang/en.yml
      create  vendor/plugins/redmine_version_burndown/config/locales/en.yml
      create  vendor/plugins/redmine_version_burndown/test/test_helper.rb
</pre>

<a href="http://daipresents.com/weblog/fujihalab/archives/2009/02/redmine-generate-plugin.php">Redmineプラグイン開発 - プラグインの土台を作成</a>で0.8.0プラグインを作った時から作成されるものが増えている。

やっぱりconfig/localesができてるな。
最近わかったけどassetsにはpublicフォルダに入って欲しいもの（jsとかCSS）を入れて、Passengerに読み込ませるとplugin_assetsに入るっぽいな。まじ、Rails勉強しなきゃ。

次にコントローラを作る。

<pre>
c:\fujihara\Ruby\redmine-0.9.0>ruby script/generate redmine_plugin_controller version_burndown version_burndown index
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/version_burndown
      create  test/functional/
      create  app/controllers/version_burndown_controller.rb
      create  test/functional/version_burndown_controller_test.rb
      create  app/helpers/version_burndown_helper.rb
      create  app/views/version_burndown/index.html.erb
</pre>

つづく。]]>
        
    </content>
</entry>

<entry>
    <title>Redmineプラグインでニコニコカレンダーがでたー！</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/02/redmine-nikoniko-calendar-plugin.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1872</id>

    <published>2010-02-15T13:39:29Z</published>
    <updated>2010-02-15T13:45:46Z</updated>

    <summary> 作ろうかと思ってたプラグインが出たー！ ダウンロードはhttp://githu...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Redmine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="plugin" label="Plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="redmine" label="Redmine" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[<p><a href="http://picasaweb.google.co.jp/lh/photo/lQeCoHEPftZ-nz7PS9BStQ?feat=embedwebsite"><img src="http://lh6.ggpht.com/__j7E2FKdD6o/S3lOvyrJrfI/AAAAAAAALW8/Sgys3rvYdog/s400/niko001.jpg" /></a><br />
<br />作ろうかと思ってたプラグインが出たー！</p>

<p><br />ダウンロードは<a href="http://github.com/YukiKita/redmine_niko_cale/tree">http://github.com/YukiKita/redmine_niko_cale/tree</a></p><p>すごい勢いでヴァージョンが上がってます。<br /></p><p><br />さっそく入れてみたけど、このプラグインは開発女子にうける（とみた）。</p>

<p>早速、<a href="http://github.com/YukiKita/redmine_niko_cale/tree">@tsuka</a>さんサンキューです。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Redmine0.9.0のスクラム化 - backlog pluginでスプリント計画！</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/02/redmine090-backlog-plugin.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1871</id>

    <published>2010-02-14T15:14:02Z</published>
    <updated>2010-02-15T03:53:46Z</updated>

    <summary> 寝ようと思ったけど、これを動かしていてテンションが上がった。 Redmine0...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Agile" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="agile" label="Agile" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="redmine" label="Redmine" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scrum" label="Scrum" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[<a href="http://picasaweb.google.co.jp/lh/photo/qbkvQUifH-mnxu4g0E262Q?feat=embedwebsite"><img src="http://lh6.ggpht.com/__j7E2FKdD6o/S3gSxMzd-mI/AAAAAAAALW0/dio-jNv8b_g/s400/backlog001.jpg" /></a>
<br />寝ようと思ったけど、これを動かしていてテンションが上がった。

<br />Redmine0.9.0でサックリ動くバックログプラグイン（Backlog Plugin)。<br /><br /><a href="http://github.com/relaxdiego/backlogs">http://github.com/relaxdiego/backlogs</a><br /><br />スクラムでは、全体的な要求（作業より要件に近い？）を集めたプロダクトバックログ。イテレーションで実行するタスクまで落とし込んだリリースバックログ。リリースバックログをさらに細かく切ったスプリントバックログというものが登場する（参考：<a href="http://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%AF%E3%83%A9%E3%83%A0_%28%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA%29">スクラム（開発手法） by Wikipedia</a>）。<br /><br />Redmineでこれを何とかしたかったのだが、今のところ、Backlogプロジェクトを作って、そこからチケットを移動して何とかしようと思っていた。<br />でも、もっと良い方法で、Redmineのプロジェクトごとのバックログを管理できないかなーとおもったたら、見つけたのがこのプラグイン。

<br /><br />まだ使い方をつかめていないが、ぐりぐりチケットを移動できるのはいい感じ。
バージョンが設定されていないチケットがMain Backlogにたまって、それらをスプリントバックログ（Redmineだとスプリント＝Versionかな）として、バージョンに移動・・・とするのかな？<br /><br />これはすごく使える。<br />日本語化して会社に持っていこう。それにしてもRubyをいじることが多くなったから、本家にPutするためにGit覚えないとな。やれやれ。おぼえることばっかだ。まぁ楽しいけど。<br />]]>
        
    </content>
</entry>

<entry>
    <title>初めてのアジャイル開発を読了</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/02/agile-and-iterativve-development.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1870</id>

    <published>2010-02-14T13:28:30Z</published>
    <updated>2010-02-14T13:41:34Z</updated>

    <summary> 初めてのアジャイル開発 スクラム、XP、UP、Evoで学ぶ反復型開発の進め ク...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Agile" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="agile" label="Agile" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[<p><a href="http://hb.afl.rakuten.co.jp/hgc/09e0b3d2.0532d6d8.09e0b3d3.9a2e768a/?pc=http%3a%2f%2fitem.rakuten.co.jp%2fbook%2f1711131%2f&m=http%3a%2f%2fm.rakuten.co.jp%2fbook%2fi%2f11298359%2f" target="_blank"><img src="http://hbb.afl.rakuten.co.jp/hgb/?pc=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8222%2f82228191.jpg%3f_ex%3d128x128&m=http%3a%2f%2fthumbnail.image.rakuten.co.jp%2f%400_mall%2fbook%2fcabinet%2f8222%2f82228191.jpg%3f_ex%3d80x80" border="0"></a><br />
初めてのアジャイル開発<br />
スクラム、XP、UP、Evoで学ぶ反復型開発の進め<br />
クレーグ・ラーマン ／児高慎治郎</p>

<p>*</p>

<p>ちょっと時間がかかってしまったが読了。<br />
スクラムやXPといった手法の、プラクティス＞その説明＞価値がわかりやすく書かれていてとてもよかった。「アジャイルってよく聞くけどなんだっけ？」という人や、「アジャイルってよくいう人はうさんくさい」と思っている私みたいな人にはぴったりだと思う。</p>

<p>参考になったのはやっぱりXPやスクラムだけど、UpやEvoとかもなかなか面白い。まだ「何が違うねん？」というところがあるので、定期的に読み直したい本。</p>

<p>それにしても、「一部のプラクティスやっただけで言い気になるな！」っていう感じが勉強になる。ケースによっては、全部のプラクティスを実効できないところがあると思うが、XPなんかは「プラクティスはお互いにコラボレーションしている」という意志をひしひしと感じるものなので、なんちゃってXPからの脱却を考える必要があるな。</p>

<p>それぞれのプラクティスにどういった価値があるか？</p>

<p>その理解を、会社の人間に語りかけるのもいいかもしれない。<br />
この本は、会社においておくので、僕の席を知っている人はお気軽に読んでください。<br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>Redmine0.9.0のスクラム化 - タスクボード（Task Board Plugin）で見える化</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/02/task-board-plugin-for-redmine090.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1868</id>

    <published>2010-02-11T11:17:53Z</published>
    <updated>2010-03-13T14:19:50Z</updated>

    <summary> Redmine Kanban Pluginではチケットの移動ができなかったので...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Agile" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Redmine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="plugin" label="Plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="redmine" label="Redmine" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scrum" label="Scrum" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[<a href="http://picasaweb.google.co.jp/lh/photo/53tPuvnKPa_ml_p5_94Jnw?feat=embedwebsite"><img src="http://lh6.ggpht.com/__j7E2FKdD6o/S3f2PpmcxTI/AAAAAAAALWs/qFH7KUH0Aow/s400/task002.jpg" /></a>
<br /><a href="http://daipresents.com/weblog/fujihalab/archives/2010/01/redmine-kanban-plugin-usage.php">Redmine Kanban Plugin</a>ではチケットの移動ができなかったので、タスクボードプラグイン（Task Board Plugin）を試してみる。<br />作者は<a href="http://daipresents.com/weblog/fujihalab/archives/2010/02/redmine-burndown-plugin-for-redmine090.php">バーンダウンチャート</a>と同じ人みたいでScrum Alliance Developer Team開発のものですね。<br /><a href="http://github.com/scrumalliance/redmine_task_board">GitHubからダウンロード</a>。Downloadファイルがなかったので、これもTortoiseGitで落としてきました。バージョンは1.0.0です。<br />例によってRedmine0.9.0で動かすために、langフォルダをconfig/localesに変更して中身を以下のように修正。日本語化もしておく。<br /><br />

<pre># Japanese strings go here
ja:
  my_label: "My label"
  task_board_text_no_sprint: プロジェクトには実行中のスプリントがありません。バージョンの期限日を確認してください。
</pre>

こんだけで動いた。ラッキー。<br /><br />チケットの移動も可能。
どうも、新規チケットを担当に移動すると、移動した人がアサインされるみたい。細かいけど素敵だ。<br /><br />でも、タイトルが2回表示されてるので、app/views/task_boards/_issue.html.erbの2行目を<br /><br /><pre>  &lt;p&gt;&lt;%= link_to_issue(issue) %&gt;: &lt;%=h issue.subject %&gt;&lt;/p&gt;
<br />と修正。<br /></pre><br /><h3>Download</h3><a href="http://github.com/daipresents/redmine_task_board/downloads">github</a><br /><br /><h3>Backlog</h3>
<ul><li>全部のバージョンを表示するのがあっても言いかも</li><li>もうちょっとかんばんらしくみやすいかんじにしたいけど画面サイズ制限あるしなぁー<br /></li></ul>]]>
        
    </content>
</entry>

<entry>
    <title>Redmine0.9.0のスクラム化 - バーンダウンチャート（Burndown Plugin）の導入方法</title>
    <link rel="alternate" type="text/html" href="http://daipresents.com/weblog/fujihalab/archives/2010/02/redmine-burndown-plugin-for-redmine090.php" />
    <id>tag:daipresents.com,2010:/weblog/fujihalab//7.1867</id>

    <published>2010-02-11T10:03:08Z</published>
    <updated>2010-02-14T13:47:03Z</updated>

    <summary> Redmine Chartsプラグインのバーンダウンチャートはすばらしいのだけ...</summary>
    <author>
        <name>フジハラダイ</name>
        <uri>http://daipresents.com/</uri>
    </author>
    
        <category term="Agile" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Project Management" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Redmine" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="plugin" label="Plugin" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="redmine" label="Redmine" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="scrum" label="Scrum" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="ja" xml:base="http://daipresents.com/weblog/fujihalab/">
        <![CDATA[<a href="http://picasaweb.google.co.jp/lh/photo/Z3Xh9asBscMVJlvg96zqhQ?feat=embedwebsite"><img src="http://lh5.ggpht.com/__j7E2FKdD6o/S3Phy34uqoI/AAAAAAAALVw/GyKvvwBwaBM/s400/burndown001.jpg" /></a>
<br /><a href="http://daipresents.com/weblog/fujihalab/archives/2010/01/redmine090redmine-charts.php">Redmine Chartsプラグイン</a>のバーンダウンチャートはすばらしいのだけれど、どうも予実管理になっているみたいで、時間が経過するとグラフが右上がりになってしまう。

<br />これだとバーンダウンチャートじゃない！とおもったので、別のRedmine Burndown Pluginを試してみた。<br /><br />*

<br /><br />まずは<a href="http://github.com/scrumalliance/redmine_burndown">redmine_burndown</a>から1.1.3をダウンロード。ダウンロードファイルはまだないみたいなので、TortoiseGitで落としてきた。

グラフ表示用のgemを入れる。<br /><br /><pre>gem install mattetti-googlecharts --source=http://gems.github.com</pre>

Redmine 0.9.0のvendor/pluginsに突っ込むだけでは、やっぱり動かない。

まず、<a href="http://daipresents.com/weblog/fujihalab/archives/2010/01/redmine-translation-missing-ja.php">translation missing: ja</a>と怒られるのを防ぐために、langフォルダをconfig/localesに移動してちょっと修正。日本語ファイルも作っておく。<br /><br /><pre>ja:
  burndown: バーンダウンチャート
  burndown_text_no_sprint: プロジェクトには実行中のスプリントがありません。バージョンの期限日を確認してください。
</pre>

どうも、チャートの開始日がバージョン作成日になるらしい。僕の場合、バージョンの開始日＝作成日ではないので、app/models/burndown_chart.rbを以下のように修正。<br /><br /><pre>    #self.start_date = version.created_on.to_date
    self.start_date = (Date.today - 7)
</pre>

また

<pre><br />ActionView::TemplateError (undefined method `show_burndown_path' for #<actionview::base:0x96f8250>) on line #9 of vendor/plugins/redmine_burndown/app/views/burndowns/show.html.erb:
</actionview::base:0x96f8250></pre>

と怒られるので、<a href="http://www.redmine.org/boards/2/topics/6132">本家のフォーラム</a>を参考に、routes.rbをconfigにコピーして以下のように記述。<br /><br /><pre>ActionController::Routing::Routes.draw do |map|
  map.latest_burndown 'projects/:project_id/burndown', :controller =&gt; 'burndowns', :action =&gt; 'show'
  map.show_burndown 'projects/:project_id/burndowns/:id', :controller =&gt; 'burndowns', :action =&gt; 'show'
end
</pre>

これで動くようになる。
<br /><br />今回も、会社で楽に入れたいので、MITライセンスだし、暫定でダウンロードできるようにしました。ご参考までに。<br /><br /><a href="http://code.google.com/p/daipresents/downloads/list">Redmine Burndown Plugin（バーンダウンチャート）改良版のダウンロードはこちらから</a><br /><br />*<br /><br />どうも、journalsテーブルの作成日からバーンダウンチャートを作っているので、「時間記録するのを忘れてた！」となると、バーンダウンの線が変な感じになる。time_entrysの値に変えるともっとよくなりそう。<br /><br />でも、これを見ながらの作業はテンションが上がりそうなので、明日会社のRedmineに突っ込もう。<br />]]>
        
    </content>
</entry>

</feed>
