<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Offside &#187; プロジェクト管理ツール</title>
	<atom:link href="http://htakeuchi.offtheball.jp/category/%e3%83%97%e3%83%ad%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e7%ae%a1%e7%90%86/pmtools/feed" rel="self" type="application/rss+xml" />
	<link>http://htakeuchi.offtheball.jp</link>
	<description>Offtheball LLC 代表  竹内仁のブログ</description>
	<lastBuildDate>Sat, 17 Jul 2010 04:53:20 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>.NETからRedmineへアクセスするライブラリを試してみた</title>
		<link>http://htakeuchi.offtheball.jp/archives/2740</link>
		<comments>http://htakeuchi.offtheball.jp/archives/2740#comments</comments>
		<pubDate>Tue, 24 Nov 2009 21:09:56 +0000</pubDate>
		<dc:creator>htakeuchi</dc:creator>
				<category><![CDATA[プロジェクト管理ツール]]></category>
		<category><![CDATA[技術]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Redmine]]></category>

		<guid isPermaLink="false">http://htakeuchi.offtheball.jp/?p=2740</guid>
		<description><![CDATA[ photo credit: ahisgett
Redmine Clientというアプリケーションがあります。Windows(.NET)上で動作するRedmineのクライアントで、機能的には、

チケットに費やした時間を [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/37804979@N00/4125499571/" title="Crab apples" target="_blank"><img src="http://farm3.static.flickr.com/2465/4125499571_b3698874ac_m.jpg" alt="Crab apples" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by/2.0/" title="Attribution License" target="_blank"><img src="http://htakeuchi.offtheball.jp/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/37804979@N00/4125499571/" title="ahisgett" target="_blank">ahisgett</a></small></p>
<p><a href="http://redmineclient.sourceforge.net/">Redmine Client</a>というアプリケーションがあります。Windows(.NET)上で動作するRedmineのクライアントで、機能的には、</p>
<ul>
<li>チケットに費やした時間を計測する</li>
<li>時間をRedmineへ登録する</li>
<li>新しいチケットを登録する</li>
</ul>
<p>というシンプルなものです。C#で書かれています。</p>
<p>このアプリケーションにはRedmineへアクセスするためのライブラリ(DLL)が添付されており、<a href="http://redmineclient.sourceforge.net/apidoc/Index.html">APIの仕様</a>も公開されています。（どちらかと言うと、アプリケーションはこのライブラリのサンプル的な位置付けなのかな？）</p>
<p>Redmineは0.9でRESTfulになるらしいので、それまで待とうか…という気もしないではないのですが、このライブラリのFUTURE PLANSには“Making use of Redmine 0.9 RESTfull interface”とあり、0.9でRESTfullになったら対応する模様。</p>
<p>ということで、安心して？試してみました。</p>
<h3>インストールと設定</h3>
<ol>
<li><a href="http://sourceforge.net/projects/redmineclient/files/">ここから</a>redmineclient-0.3.0.zipをダウンロードする。</li>
<li>アーカイブを解凍しNohal.Redmine.dllをVisual Studioのプロジェクトで参照設定する。</li>
</ol>
<p>これだけです。</p>
<h3>チケット一覧を取得するための基本的な流れ</h3>
<p>以下のような流れでチケット一覧を取得できます。簡単。</p>
<ol>
<li>Redmineオブジェクトの生成</li>
<li>RedmineのURLを設定(Redmine.RedmineBaseUriプロパティ)</li>
<li>Redmineへのログイン(Redmine.LogInメソッド)</li>
<li>プロジェクト一覧の取得(Redmine.GetProjectsメソッド)</li>
<li>プロジェクトIDを指定してチケット一覧の取得（Redmine.GetIssuesメソッド)</li>
</ol>
<p>（載せるまでも無いですが）実際のコードはこんな感じ。</p>
<pre class="brush: csharp;">
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Nohal.Redmine;

namespace RedmineTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Redmine redmine = new Redmine();
            redmine.RedmineBaseUri = &amp;quot;RedmineのURL&amp;quot;;
            redmine.LogIn(&amp;quot;Redmineのユーザ名&amp;quot;, &amp;quot;Redmineのパスワード&amp;quot;);

            List&amp;lt;Project&amp;gt; projects = redmine.GetProjects();
            textBox1.Text = &amp;quot;プロジェクト一覧\r\n&amp;quot;;
            foreach (Project project in projects)
                textBox1.Text += project.Id.ToString() + &amp;quot;: &amp;quot; + project.Name + &amp;quot;\r\n&amp;quot;;

            textBox1.Text += &amp;quot;チケット一覧\r\n&amp;quot;;
            // GetIssues(3)の3はプロジェクトID。本来はGetProjects()で取得したIDを指定する。
            foreach (Issue issue in redmine.GetIssues(3))
                textBox1.Text += issue.Id + &amp;quot;: &amp;quot; + issue.Subject + &amp;quot;\r\n&amp;quot;;
        }
    }
}
</pre>
<p>ざっとAPI仕様を眺めた限りでは、条件を指定してチケットを絞り込む方法が無さそうです。<br />
このため、指定したプロジェクトの全チケットがListで返却されますので、チケット数が数千～数万のオーダーになると厳しいかもしれませんが、チケットの登録はイケるでしょう。</p>
<p>C#から簡単にRedmineへアクセスできるのはいいですね。Redmineクライアントの開発をお考えての方はお試しください。</p>
]]></content:encoded>
			<wfw:commentRss>http://htakeuchi.offtheball.jp/archives/2740/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MPXJをC#で使いMicrosoft Projectのファイルを扱ってみた</title>
		<link>http://htakeuchi.offtheball.jp/archives/2720</link>
		<comments>http://htakeuchi.offtheball.jp/archives/2720#comments</comments>
		<pubDate>Mon, 23 Nov 2009 06:00:40 +0000</pubDate>
		<dc:creator>htakeuchi</dc:creator>
				<category><![CDATA[projectscape]]></category>
		<category><![CDATA[プロジェクト管理ツール]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[MPXJ]]></category>

		<guid isPermaLink="false">http://htakeuchi.offtheball.jp/?p=2720</guid>
		<description><![CDATA[ photo credit: ArtBrom
MPXJというMicrosoft Projectのファイルへアクセスするためのライブラリを試してみました。MPXJは以下のファイル形式に対応しています。

Microsoft [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/17277074@N00/4122940774/" title="Arnage 2" target="_blank"><img src="http://farm3.static.flickr.com/2744/4122940774_50c899e4d2_m.jpg" alt="Arnage 2" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by-sa/2.0/" title="Attribution-ShareAlike License" target="_blank"><img src="http://htakeuchi.offtheball.jp/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/17277074@N00/4122940774/" title="ArtBrom" target="_blank">ArtBrom</a></small></p>
<p><a href="http://mpxj.sourceforge.net/">MPXJ</a>というMicrosoft Projectのファイルへアクセスするためのライブラリを試してみました。MPXJは以下のファイル形式に対応しています。</p>
<ul>
<li>Microsoft Project Exchange (MPX)</li>
<li>Microsoft Project (MPP,MPT)</li>
<li>Microsoft Project Data Interchange (MSPDI XML)</li>
<li>Microsoft Project Database (MPD),Planner (XML).</li>
</ul>
<p>MPXJはJavaで書かれているのですがIKVMにより.NETからも使うことができます。</p>
<h3>インストールと設定</h3>
<ol>
<li><a href="http://sourceforge.net/projects/mpxj/files/">Browse MPXJ: Microsoft Project Exchange Files on SourceForge.net</a>からmpxj-3.1.0.zipをダウンロードし、任意のディレクトリへ展開する。</li>
<li>展開後lib.netディレクトリにある以下のファイルをVisual Studioのプロジェクトから参照できるように設定する。</li>
<ul>
<li>IKVM.OpenJDK.ClassLibrary.dll</li>
<li>IKVM.Runtime.dll</li>
<li>mpxj.dll</li>
<li>poi-3.2-FINAL-20081019.dll</li>
</ul>
<li>MPXJのクラスリファレンスは<a href=" http://mpxj.sourceforge.net/apidocs/index.html">Overview (MPXJ API)</a>を参照</li>
</ol>
<p>これだけ。サンプルとしてこんなコードを書いてみました。</p>
<pre class="brush: csharp;">
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using net.sf.mpxj;
using net.sf.mpxj.reader;
using net.sf.mpxj.writer;

namespace MPXJTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
                OpenProjectFile(openFileDialog1.FileName);
        }

        private void OpenProjectFile(string fileName)
        {
            ProjectReader reader = ProjectReaderUtility.getProjectReader(fileName);
            ProjectFile projectFile = reader.read(fileName);

            ProjectHeader projectHeader = projectFile.getProjectHeader();

            textBox1.Text = &quot;プロジェクト名: &quot; + projectHeader.getProjectTitle();
            textBox1.Text += &quot;\r\nプロジェクト開始日: &quot; + projectHeader.getStartDate();
            textBox1.Text += &quot;\r\nプロジェクト終了日: &quot; + projectHeader.getFinishDate();

            textBox1.Text += &quot;\r\n担当者&quot;;
            foreach (Resource resource in projectFile.getAllResources().toArray())
                textBox1.Text += &quot;\r\n&quot; + resource.getID() + &quot;: &quot; + resource.getName();

            textBox1.Text += &quot;\r\nタスク&quot;;
            foreach (Task task in projectFile.getAllTasks().toArray())
                textBox1.Text += &quot;\r\n&quot; + GetTaskLevelIndent(task) + task.getName();
        }

        private string GetTaskLevelIndent(Task task)
        {
            string level = &quot;&quot;;
            while ((task = task.getParentTask()) != null)
                level += &quot;|--&quot;;
            return level;
        }
    }
}
</pre>
<p>このコードは指定されたMicrosoft Projectのファイルからプロジェクト名、プロジェクト開始日、プロジェクト終了日、担当者一覧、タスク一覧をテキストボックスへ出力するものです。</p>
<p>マイクロソフトのWebサイトで提供している<a href=" http://office.microsoft.com/ja-jp/templates/TC100902751041.aspx?CategoryID=CT102530621041&#038;av=ZPJ000">ベンダーに対する提案依頼書の要請 &#8211; テンプレート &#8211; Microsoft Office Online</a>を読み込んだ結果はこちら。</p>
<pre class="brush: plain;">
プロジェクト名:
プロジェクト開始日: Mon Jan 01 08:00:00 GMT 2007
プロジェクト終了日: Thu Feb 01 12:00:00 GMT 2007
担当者
0:
1: 購買マネージャ
2: ユーザー チーム
3: 評価委員会
4: 意思決定グループ
タスク
ベンダーに対する提案依頼書 (RFP) の要請
|--このテンプレートの目的を説明するメモを読む
|--RFP の基準
|--|--RFP 作成の正式なプロセスが必要かどうかを判断する基準のレビュー
|--|--購買担当に RFP を作成する必要があることについて通知
|--RFP 要請プロセス
|--|--要求の定義
|--|--|--製品とサービスのニーズを理解するためにユーザーにインタビュー
|--|--|--要求の文書化
|--|--|--回答の評価基準の定義
|--|--|--評価チームの特定
|--|--RFP の作成
|--|--|--購買担当から RFP の書式のテンプレートを取得
|--|--|--RFP のドラフト作成
|--|--|--購買担当、該当分野の専門家と RFP をレビュー
|--|--|--RFP の改良
|--|--|--RFP の内容の準備完了
|--|--市場調査
|--|--|--該当する製品またはサービスを提供するベンダー候補企業の特定
|--|--|--事前の情報提供依頼書 (RFI) が必要かどうかを決定
|--|--|--RFI の回答の収集 (必要な場合)
|--|--|--RFP の対象企業の最終決定
|--|--業界への RFP の送付
|--|--|--特定の回答段階についての期限の決定
|--|--|--期限と連絡先を記載した RFP の完成
|--|--|--RFP を対象企業に送付
|--|--|--RFP についての説明会の実施 (必要な場合)
|--|--RFP 収集プロセスの完了
|--収集後のプロセス
|--|--&quot;入札意思あり&quot; の回答のまとめ
|--|--質問回答プロセス
|--|--|--入札企業からの質問のまとめ
|--|--|--質問に対する正式な回答の準備
|--|--|--'入札意思あり' と表明したすべての企業に回答を公開
|--|--提案書のレビュー
|--|--|--初期評価を実施して問題を明確化
|--|--|--設定した基準に基づいて提案書を評価
|--|--|--基準を満たしていない提案企業を除外
|--|--|--残りの提案企業との話し合いの準備
|--|--個別会議/交渉
|--|--|--最終選考に残った企業にソリューションのプレゼンテーションを依頼
|--|--|--最終選考に残った企業のソリューションとデモを分析
|--|--選択の決定
|--|--|--提案書の最終分析
|--|--|--ベンダーの選択
|--|--|--契約の締結
|--|--|--選ばれなかった提案企業からフィードバックを収集
|--|--収集後のフェーズの完了
|--ベンダーからの提案依頼書 (RFP) の収集の完了
</pre>
<p>必要な情報だけを抜いてCSV出力するようなプログラムは簡単に書けそうですね。</p>
<p>弊社のプロジェクト管理ソフト<a href="http://www.offtheball.jp/product/projectscape/tokucyou">Projectscape</a>でMicrosoft Projectファイルインポート機能をサポートするのにも使えそうな感じが…もう少し評価してみたいと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://htakeuchi.offtheball.jp/archives/2720/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>オープンソースのテスト管理ツールTestLinkを使ってみての雑感</title>
		<link>http://htakeuchi.offtheball.jp/archives/2687</link>
		<comments>http://htakeuchi.offtheball.jp/archives/2687#comments</comments>
		<pubDate>Fri, 20 Nov 2009 19:43:00 +0000</pubDate>
		<dc:creator>htakeuchi</dc:creator>
				<category><![CDATA[プロジェクト管理ツール]]></category>
		<category><![CDATA[TestLink]]></category>
		<category><![CDATA[テスト]]></category>

		<guid isPermaLink="false">http://htakeuchi.offtheball.jp/?p=2687</guid>
		<description><![CDATA[
 photo credit: aussiegall
前から気になっていたオープンソースのテスト管理ツールTestLinkをインストールして使ってみました。

好ましいと感じたポイント

テスト仕様とテスト計画が独立して [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/14516334@N00/4099849737/" title="30 Days of Gratitude- Day 13" target="_blank"><img src="http://farm3.static.flickr.com/2756/4099849737_f98194d750_m.jpg" alt="30 Days of Gratitude- Day 13" border="0" /></a><br />
<small><a href="http://creativecommons.org/licenses/by/2.0/" title="Attribution License" target="_blank"><img src="http://htakeuchi.offtheball.jp/wp-content/plugins/photo-dropper/images/cc.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/14516334@N00/4099849737/" title="aussiegall" target="_blank">aussiegall</a></small></p>
<p>前から気になっていたオープンソースのテスト管理ツール<a href="http://testlink.org/">TestLink</a>をインストールして使ってみました。</p>
</p>
<h3>好ましいと感じたポイント</h3>
<ul>
<li>テスト仕様とテスト計画が独立しており、テスト計画でどのテストを実行するかを選択することができる。特定機能だけの再テスト計画を作成するなど、柔軟に使えそう。</li>
<li>テストケースにキーワードを設定し横串で検索できる。(境界・限界、異常系、追加テスト、顧客受入テスト…）</li>
<li>簡単な要件管理機能がありテストケースと関連付けてテストカバレジを参照できる。</li>
<li>テスト計画やテストレポートをHTML、Word、Excel、OpenOffice形式で出力することができる。顧客や社内向けに簡単に「紙で」状況を報告できる仕掛けがあるのは嬉しい。弊社のプロジェクト管理ソフト<a href="http://www.offtheball.jp/product/projectscape/tokucyou">Projectscape</a>のレポート機能、印刷機能と同じ思想。と、少し宣伝(^^;</li>
<li>失敗したテストケース、ブロックされたテストケースのみを出力したり、担当者がアサインされていないテストケースを抽出したりなど、実際の現場で役立ちそうな機能がある。</li>
<li>「要件に基づくレポート」機能はスケジュール遅延や品質が悪い場合ケースで、事前に顧客へ制約事項を提示するのに便利そう。</li>
</ul>
<h3>こうだったら良いのに…と感じたポイント</h3>
<ul>
<li>ユーザインタフェースが直感的でなくテスト計画・テストスイート・テストケース・要件仕様ドキュメント・要件・ビルドなどのTestLink用語の意味と関係性を事前に理解しておかないと、どう操作して良いかわかりにくい。</li>
<li>要件管理機能がシンプル（要件を階層的に管理できない、要件IDがツリーに表示されない、要件からテストケースを作成できないなど）OSRMTなど他の要件管理ツールとの連携ができないか。</li>
</ul>
<p>好ましいと感じたポイントが6つ、こうだったら良いのに…と感じたポイントが2つということで、個人的にはかなりのポテンシャルを感じるツールです。<br/>実際のプロジェクトで使い込んでみたいと思います。</p>
</p>
<p>最後にインストールして動かすまでにハマったポイントについてまとめておきます。</p>
<h3>テストケースと要件を関連付けを行うと以下のエラーが表示される。</h3>
<pre class="brush: php;">
Fatal error: require_once() [function.require]: Failed opening required 'tlAttachmentRepository.class.php' (include_path='.:/usr/share/php:/usr/share/pear:.:/var/www/testlink/lib/functions/') in /var/www/testlink/lib/functions/common.php on line 109
</pre>
<p><a href="http://www.teamst.org/phpBB2/viewtopic.php?p=5362&amp;amp;sid=f950c01995a049b842c83575e121b407">TestLink :: View topic &#8211; Error while assiging reuirements to test cases</a>にある通り、/var/www/testlink/lib/functions/common.phpへ以下の行を追加。</p>
<pre class="brush: php;">
require_once(&quot;testproject.class.php&quot;);
</pre>
<h3>グラフに日本語が表示されない。</h3>
<p><a href="http://testlinkjp.org/modules/pukiwiki/?TestLinkTips#ct71_1_1">こちらを参考に</a>日本語フォントをインストールして設定ファイルを変更。</p>
<h3>関連・参考リンク</h3>
<ul>
<li><a href="http://gihyo.jp/dev/serial/01/testlink/">きちんと学びたいテストエンジニアのためのTestLink入門</a></li>
<li><a href="http://jibun.atmarkit.co.jp/lskill01/rensai/tool10/05/01.html">脱Excel！ TestLinkでアジャイルにテストをする</a></li>
<li><a href="http://dev.ariel-networks.com/Members/inoue/testlink-report">TestLink使用レポート — ありえるえりあ</a></li>
<li><a href="http://forza.cocolog-nifty.com/blog/2008/06/testlinkexcel_03ad.html">TestLinkがExcelのテスト仕様書よりも素晴らしい点: プログラマの思索</a></li>
<li><a href="http://forza.cocolog-nifty.com/blog/2009/02/testlink-1389.html">TestLinkの可能性: プログラマの思索</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://htakeuchi.offtheball.jp/archives/2687/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
