エンジニアリング的なプロジェクトの進め方として、アジャイル開発というのがあります。プロジェクトでやるべきタスク対して重み付けをして、一定期間を指定しながらタスクを消化していき、定期的に進捗をチェックしながらプロジェクトを進めていく手法です。
アジャイルについては自分もまだ理解しきってないこともあるので、書籍等に解説を任せるとして。
アジャイルサムライ――達人開発者への道 | |
ASIN : B00J1XKB6K こちらはAmazonアソシエイトプログラム参加リンクです |
アジャイルを運用する道具としてよくあるのは付箋とボードを使ってタスク管理をする方法です。 自分も前回のプロジェクトでは付箋とホワイトボードを使ってました。こういう感じです。
紙とペンが一番やりやすいのですが、ボード自体がない場所ではタスクを見れない不満もありました。
webサービスでカンバンができないかと探すと様々出てきます。Trelloは有名らしいです。
そういったサービスを使うのもありでしたが、開発はセルフホストのgitlabのissueもよく使うので、issueを使ったカンバンシステムがないかと思ってましたが、Gitab公式で紹介されているサードパーティーのアプリケーション内にあるスクラムボードという項目があるではないですか!
Applications Supporting GitLab | GitLab
その中にあった2つのサービスを試してみました。どちらもセルフホストでOSSです。
Kanboard
Kanboard - Simple and open source visual task board
こちらは、スタンドアローンでも利用できるタスクボードサービスです。gitlab以外にも様々なサービスと連携出来ます。機能一覧はこちらで見れますが
タスクボードをベースにしたプロジェクト管理をするツールですね。ガントチャートも書けるし。
インストールはすごく楽。gitlabとは別のホストでも良いし多分その方がいい(gitlabに内包してるnginxも使えるかは不明)
動作環境としてはphpが必要でapache推奨。DBはデフォルトではSQLiteです。必要なら別のRDBでも行ける
gitlabとの連携はgitlabのWebHook機能を使う。kanboardのプロジェクト事にあるwebhookのURLをgitlabのプロジェクト側のWebhookに追加して動く。
kanboardは分析機能も用意されていて、バーンダウンチャートを書くことが出来ます。これは素晴らしいのでは。
タスクの期間設定や予算の管理もできるらしいですが、まだ触りきれてないので追々記事にできればと。
インストール
ドキュメントに従います。例はUbuntu 14.04ですが、その他のプラットフォームでも必要な作業は少ないはずです。
How to install Kanboard on Ubuntu?
ダウンロードしたファイル一式をホスト先にアップロードした後に、dataをWebサーバー側が書き込める権限に設定すれば良いだけです。
gitlab連携(webhooks)
設定方法は以下のURLで確認出来ます。
自分が行った手順としてはこうなります。
- gitlabでプロジェクトを作る(リポジトリがないとwebhook出来ないので何かしらのファイルをcommitする)
- kanboardのプロジェクトを作る
- kanboard側のプロジェクトの設定>integrate内にあるGitlab Webhooks の項目にあるテキストエリアのURLをコピー
- gitlabにwebhookを登録
- kanboard側のプロジェクトの設定>automatic actionでヘルプ通りの設置をしておく。
日頃の運用の例
今のところ、わかっている範囲でやってみるとこうなります。これらは、kanboard側にあるautomatic actionで、gitlab側のwebhookの各イベントに対してアクションを入れた結果です。
gitlabでissueを作る
kanboardはこうなります。
gitlabでコメントを入れるとkanboardでも入ります。
gitlabでissueを閉じるとkanboard側のタスクもクローズされます。kanboard側のクローズしたタスクは、フィルター設定にあるclosed taskで見ることが出来ます。
他にも、issuseに対してのコミットでタスクのクローズも出来ます。逆にいうと、gitlabのWebhookに対して利用できるアクションはこれだけでした。
kanboard側でタスクを生成できますが、gitlab側には反映されないので注意が必要です。
バーンダウンチャートもこんな感じでかけます。適当な例なのでグラフはちょっとおかしいです。
スイムレーンという、タスクボードのタスクの状態に対しての列に対して、行を使っての別のカテゴライズが出来る機能です。ソフトウェアプロジェクトなら、細かいバージョンごとのタスクとか、開発やドキュメントや打ち合わせと言った状態ではない、場所や状況のカテゴライズに適してるそうです。(あまり知らなかったのでこういうイメージですが、あっていますでしょうか?)
http://kanboard.net/documentation/swimlanes
良い所
- 日本語化されてる: 一部されてないけど単語はそんなに難しくないからそのままでも良いし英語でもわかりにくくない。プロジェクトのgithubのリポジトリにプルリクエストするのもありですね。
- バーンダウンチャートが描写できる。
- スイムレーンが使える
- gitlabと別のホストでも動かせる(webhookで意思疎通)
- phpが動いていれば大抵どこでも動かせれる:データベースのデフォルトがSQLiteなのでその利点ですね
- 単体利用することも出来る:gitlabが必須ではない。他の連携機能もある。いろんなプロジェクトのカンバンシステムとして使えそう。プログラムエンジニアリング以外の業種でも行けそう(製造業とかでも)。
悪いところ
- gitlabの連携は、gitlab側のwebhookによるアクションに依存するので、gitlab側に戻って操作する必要もある
- 複雑性の値をプリセットできない(ストーリーポイントを入れるときにプルダウンリストになるといいのですが)
- 現時点だとgitlabのauthorizationが出来ない。 https://github.com/fguillot/kanboard/issues/1179
まとめ
インストールはあまり難しくなくて、GitlabとWebhookが出来るので、issueの視覚化にピッタリです。バーンダウンチャートも書けるのも良いです。
単体機能としてのタスクボードも使い勝手が良いと思います。
gitlabのユーザー情報も使えるようになるとログインもやりやすくなりますね。今後に期待です。
次のプロジェクトはこれを使うようにしましたが、もう一つあるのでそちらも続けて紹介します。