「近代化Redmine」ことOpenProjectでスクラム開発のプロジェクト管理

「Redmineの代替になるようなツールないかな…」と思って試していた「[OpenProject](https://www.openproject.org/)」が良い感じだったので、使い方等を簡単にまとめてみました。ご参考になれば幸いです。


# OpenProjectとは

**「MS ProjectのOSSクローンでしょ？」**って思った方もいると思いますが[^1]、あれとはまったく別のツールです。誤解を恐れず言うなら**「近代化改修されたRedmine」**[^2]という感じのプロダクトで、百聞は一見になんとやら、こちらを御覧ください。

![5月-04-2018 17-46-29.gif](https://qiita-image-store.s3.amazonaws.com/0/50184/5f17de6d-a08f-3107-dd7a-146e4d29bf02.gif)
![タイトルなし.gif](https://qiita-image-store.s3.amazonaws.com/0/50184/dc7f624f-2df2-bd60-7709-6c3cad60e851.gif)
![backlog.gif](https://qiita-image-store.s3.amazonaws.com/0/50184/65203472-0050-e0d7-534a-77e7d52dd3f5.gif)
![5月-04-2018 14-00-33.gif](https://qiita-image-store.s3.amazonaws.com/0/50184/1631a935-eaea-a678-bdf7-5429c8dc9b90.gif)


詳しくは、こちらの公式動画がよくまとまっています。
https://vimeo.com/163426858


[^1]: あれは[OpenProj](https://ja.osdn.net/projects/sfnet_openproj/)です。紛らわしいですよね…
[^2]: 経緯的に[RedmineからフォークされたChilProject(開発終了)から発足したプロジェクト](https://en.wikipedia.org/wiki/OpenProject#History)らしいので、「Redmineの孫」と言えなくもないのかも…

## こんな人におすすめ

* 今までRedmine + Backlogプラグインで頑張ってた人
  * スクラム開発用に「かんばん」と「バックログ」が欲しい
  * プロジェクト管理用に「ガントチャート」も欲しい
      * でも、Redmineにプラグインを入れる苦行は回避したい…
* 日本語化されててほしい
* 簡単に環境構築したい
* [ExcelおじさんとGitHub若者が共存するためのタスク管理法 \- Qiita](https://qiita.com/kyogom/items/10987f2b76f06a868300) みたいな環境の人


# インストール

とりあえず試してみたい方にはDockerがオススメ。[公式のQuick Startの方法](https://www.openproject.org/docker/)でもよいのですが、永続化等まで考えるとdocker-composeを使うのが楽です。

```docker-compose.yml
version: '3'

services:
  openproject:
    image: openproject/community:latest
    ports:
      - "30080:80"
    volumes:
      - ./db-data:/var/lib/postgresql/data
      - ./data:/var/db/openproject
    environment:
      SECRET_KEY_BASE: openproject_secret_key
```

`$ docker-compose up -d` を叩き、http://localhost:30080/ にアクセスできればOKです。
お好みでポート番号を変えたり、`restart:always`を追加するなどしてください。

公式イメージはmemcached、postgres(9.6)を内に含んでいますが、本番運用等を考慮して別コンテナにすることも可能です。

```docker-compose.separated.yml
version: '3'

services:
  web:
    image: openproject/community:latest
    depends_on:
      - postgres
      - memcached
    ports:
      - "30080:80"
    volumes:
      - pg-data:/var/lib/postgresql/data 
      - ./data:/var/db/openproject
    environment:
      DATABASE_URL: "postgres://opuser:oppassword@postgres:5432/openproject?pool=10&encoding=unicode&timeout=5000&reconnect=true"
      SECRET_KEY_BASE: openproject_secret_key
      CACHE_MEMCACHE_SERVER: memcached
      CACHE_NAMESPACE: openproject
  postgres:
    image: postgres:9.6-alpine
    volumes:
      - pg-data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: openproject
      POSTGRES_USER: opuser
      POSTGRES_PASSWORD: oppassword
  memcached:
    image: memcached:1.5.7-alpine
volumes:
  pg-data:

```

起動完了後にsupervisordが`gave up: postgres entered FATAL state, too many start retries too quickly`とエラーを吐きますが(supervisordのconfはDockerの起動スクリプト中で書き換えられてないからっぽい)、とりあえず軽く触っていた感じでは問題なさそうでした。

MySQLにも対応しているっぽいので、興味があればそちらもお試しいただければと。


# 初期設定

http://localhost:30080/ にアクセスし、右上の「Sign in」から`admin/admin`でログイン。

<img width="800" alt="スクリーンショット 2018-05-04 12.55.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/3fce4242-47dd-45c6-3070-5660244f2967.png">

初回はパスワード変更が求められるので、適宜変更します。[^2]

<img width="800" alt="スクリーンショット 2018-05-04 12.57.07.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/2859c5d8-d75a-4c21-3b80-d9a36c3d4278.png">

[^2]: デフォルトでは10文字以上というパスワードポリシーが設定されていますが、後から設定画面経由で変更できます。

完了すればAdminユーザでログインした状態になります。

<img width="800" alt="スクリーンショット 2018-05-04 13.02.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/e3b870d2-d9cd-be3a-8dda-3029670d81c3.png">


## 日本語化

OpenProjectは(いちおう)日本語化対応しているので、その設定を行います。

右上のアイコンから「Administration」→「System settings」→「Display」タブを選択。
http://localhost:30080/settings?tab=display 

<img width="800" alt="スクリーンショット 2018-05-04 13.05.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/e2a471ca-728e-5951-75a4-72bd1e6cd798.png">

「Avaliable Language」から「日本語」にチェックを入れて設定を保存すると、表示言語として日本語が選択できるようになります。
この画面では他の表示系も設定できるので、ついでに設定しておくとよいです。ここでは以下のようにしました。

* Default Language: `日本語`
* Weeks starts on: `月曜日`
* Date Format: `%Y-%m-%d`
* Time Format: `%H:%M`(24h)
* Users display format: `「苗字 名前」 形式`(FirstName=OpenProject, LastName=Admin)


なお、このDefault Language設定は既存ユーザには適用されないので、右上のアイコンから「My Account」→「Settings」と選んでLanguage, TimeZoneを設定する必要があります。

<img width="800" alt="スクリーンショット 2018-05-04 13.14.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/2d6bebeb-0466-76b7-2e59-b99ef0a7f056.png">

保存して、以下のように日本語になっていればOKです。

<img width="800" alt="スクリーンショット 2018-05-04 13.20.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/55fa1bd4-c87e-2d83-fa16-a83bd6c4dc53.png">

ただし、現時点(2018/05/04)ではところどころ日本語化されていなかったり、意味がわかりにくかったりします。
どうしても気になる場合は以下のように、[オリジナルのリソースファイル](https://github.com/opf/openproject/tree/dev/config/locales/crowdin)をカスタムしたものを読み込ませたりもできますが、

```docker-compose.yml
    volumes:
      (略)
      - ./config/ja.yml:/usr/src/app/config/locales/crowdin/ja.yml
      - ./config/js-ja.yml:/usr/src/app/config/locales/crowdin/js-ja.yml
```

翻訳者を募集されているみたいですので、crowdinにコミットしていただくほうが、幸せになれるかもしれません。
[OpenProject Blog \- OpenProject language support](https://www.openproject.org/wp-content/uploads/2018/02/OpenProject-languages.png)

あとは表示用言語はログインユーザごとに設定できるので、確認用に英語ユーザを用意しておくとか、英語のまま使うのも手だと思います。お好みで。


# 使い方

OpenProjectにはDemoプロジェクトが用意されていますが、基本的な操作を簡単にまとめておきます。

## ユーザ作成

ほぼRedmineと一緒です。

<img width="800" alt="スクリーンショット 2018-05-04 13.24.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/b5ca31a1-069d-86be-80a2-729f407ddb3b.png">



## プロジェクト作成

TOPページから作成します。

<img width="800" alt="スクリーンショット 2018-05-04 13.26.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/c0093a41-c832-ce31-10be-cdcd77e39e82.png">

必須項目を埋めます。

<img width="800" alt="スクリーンショット 2018-05-04 13.28.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/79b97a75-ddf9-a573-da67-edcd80ae3ed2.png">

作成完了したら、メンバーをアサインしておきましょう。

<img width="800" alt="スクリーンショット 2018-05-04 13.32.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/c8723666-e1a7-459e-32c1-d33fcfc1fdfc.png">


## バージョン(スプリント)作成

「プロジェクトの設定」→「バージョン」タブから追加できます。
ここでは1週間単位で3スプリントを作成しました。

<img width="800" alt="スクリーンショット 2018-05-04 13.35.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/1cf19539-1603-984d-4e03-bcd023c2cb55.png">


## バックログ

左袖メニューから「バックログ」を選択。右端の▼を押下すると出現するプルダウンメニューから、新規ストーリーを追加できます。

<img width="800" alt="スクリーンショット 2018-05-04 13.37.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/91fd8018-f8cd-c233-b70d-e8ea05834545.png">

初期状態ではUserStory/Epic/Feature/Bugから入力することができ、インラインで直接編集することも可能です。

<img width="800" alt="スクリーンショット 2018-05-04 13.43.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/e42d9e1f-6ca5-6d50-f034-caa86785b874.png">


## かんばん

「バックログ」画面を表示させ、▼ボタン押下で出てくるプルダウンメニュー中から「かんばん」を選択。

<img width="800" alt="スクリーンショット 2018-05-04 13.45.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/bc6e852a-9425-2cb1-96a7-ef517cdecb00.png">

選択されたスプリント(バージョン)のかんばんが表示されます。
「+」の部分をクリックすることで、各ストーリーのタスクを作成することができます。

<img width="800" alt="スクリーンショット 2018-05-04 14.07.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/41bd73ad-7ab8-3c60-2d49-6a3dd9a7f4d8.png">

<img width="800" alt="スクリーンショット 2018-05-04 13.50.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/65525b85-b2b4-15bb-c3ab-65de45395627.png">

あとは付箋(タスク)をD&Dすることで各ステータス(New, In Progess...)を遷移させていく感じです。

## バーンダウンチャート(バーンアップ)

「バックログ」画面の▼メニュー、もしくはかんばん画面の「バーンダウングラフ」ボタンから、バーンダウンチャートを表示させることができます。
<img width="800" alt="スクリーンショット 2018-05-04 16.52.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/55ce413d-dbdc-21ac-3d4f-c7bb57f1d9df.png">

なお、「システム設定」→「プラグイン」→「OpeProject Backlogs」→「設定」から、バーンアップに切り替えることもできます。


## 作業項目(WorkPackages)

こちらはスクラムとは違い、いわゆる「WBS」に近い画面です。左のメニューから「作業項目」を選択すると、今まで作成したストーリーやタスクがチケット形式で表示されます。 このチケット形式のデータを元にBacklog Pluginがバックログ、かんばんといった形式で表示していたわけです。RedmineのBacklogsプラグインと同じ仕組みですね。

<img width="800" alt="スクリーンショット 2018-05-04 14.28.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/b7fae1fb-bc8c-e37e-5191-569afc044dbb.png">


### 表示項目のカスタマイズ

そのままだと使いづらいので、「+」ボタンを押して表示項目をカスタマイズしたり、「フィルタ」を設定して絞り込み条件を設定します。このあたりもRedmineを触ったことがあればなんとなくおわかりいただけるかと。

<img width="800" alt="スクリーンショット 2018-05-04 14.32.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/27989ea3-9c0c-93f6-a5c1-9e9f94c014f9.png">

<img width="800" alt="スクリーンショット 2018-05-04 15.21.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/892463ba-0f59-53e7-3df5-b1e43a885801.png">

<img width="800" alt="スクリーンショット 2018-05-04 15.23.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/f17c1465-f166-f127-ea93-fde07367c5ac.png">

あとは値をクリックして直接編集できます。

<img width="800" alt="スクリーンショット 2018-05-04 15.27.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/7f92d70e-f7a3-c339-55e0-3b9724172e76.png">

**表示条件は保存しておかないと容赦なく吹き飛ぶところもRedmineと同じ**なので、いい感じにできた設定は、保存しておくのを忘れないようご注意ください。

<img width="800" alt="スクリーンショット 2018-05-04 15.23.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/5c35e5de-d666-80c1-86d6-30f0cd11bbc4.png">



### ガントチャート表示

右上のボタンから、ガントチャートの表示/非表示を切り替えます。

<img width="800" alt="スクリーンショット 2018-05-04 14.42.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/b845ab6f-636a-233e-7aad-6f0d15c63662.png">

開始日や終了日が入力されいてれば、自動的にチャートが表示されます。バーチャート部分をクリックすると直接編集できます。


### マイルストーン追加

日付とスプリント(バージョン)を指定してマイルストーンを設定できます。

<img width="800" alt="スクリーンショット 2018-05-04 14.50.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/aa1827b0-e2df-9227-da83-601c10e4007d.png">

同様の手順でUserStoryやFeature、Taskを生成することもできるので、かんばんやバックログの形式に慣れていない方(Redmineのチケット方式に慣れている方)はこちらから作成してもOKです。

## 依存関係の作成(クリティカルパス)

この手のガントチャートで一番需要が高いのが、タスク間の依存関係(前後関係)の定義によるクリティカルパスですよね。

対象タスクを選択後、「ⓘ」アイコンから表示される「関連」から、関連タスクや子タスクを設定します。
ここでは「静的モック作成」の先行タスクとして「ペーパープロトタイピング」を設定しました。

<img width="800" alt="スクリーンショット 2018-05-04 15.09.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/92335082-896a-b806-ff8f-060546ed7c84.png">

先行するタスクの完了日をいじると、後続タスクの開始日等も連動して動くようになりました。

<img width="800" alt="スクリーンショット 2018-05-04 15.15.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/2f4c2655-c216-5e8d-9a66-6e6bb330882c.png">


この辺もおそらくRedmineと同じっぽいのですが、日本語訳と相まって違いがよくわかりませんでした。以下が参考になるかと思います。

参考: [チケット同士の関連づけ \| Redmine\.JP Blog](http://blog.redmine.jp/articles/ticket-relation/)

# 触った感想

## :+1: 良い点

* **OSS(GPL3)**
  * 「コンプライアンス意識の高い[^3]」環境でも安心
* **Dockerで簡単に試せる**
* **箱出し状態でかんばん、バックログ、ガントチャートが使える**
  * プラグイン地獄に悩まされなくていいのは最高
* **Redmineライクな使い勝手**
  * これは賛否両論あると思いますが…
* SPA対応、レスポンシブ対応
  * 慣れれば便利 
* **見た目が綺麗**
  * ガントチャートとか好きな人にはたまらなそう
  * かんばんの付箋(？)が担当者ごとに色分けされたりして素敵

[^3]: 隠語です

## :-1: 微妙な点

* **重い**
  * 「[推奨環境がメモリ4GB](https://www.openproject.org/system-requirements/)」となかなか豪快
      * マシンパワーが足りないと特に作業項目画面のXHRで待たされたりしがち 
* 日本語化が微妙
  * 現時点では逆にわかりづらくなったりしているところも…
* 情報が少ない
  * ただまあ概ねRedmineなんでRedmineで調べればわかることも多い、かも…
* SPAが微妙
  * (MacOS/Chrome)バックログ画面でIME入力時に変換確定のEnterキーを拾ってしまう
      * Windowsだと再現しなかった
      * 作業項目画面経由で入れるなどで回避可能 
  * どのタイミングで保存されるのか慣れないとわかりにくい
      * Atlassian系を思い出す感じ、好き嫌いありそう
      * 作業項目画面はEnterで保存だったりフォーカスアウトで保存だったり、やや統一感がない
* とにかく画面の横幅が必要になりがち
  * 4Kディスプレイ使ってても余裕で足りなくなる
      * レスポンシブ以前にこの手の管理系ツール、スマホから操作するのは厳しいのでは…  
* スクラム開発に関する知識がある前提
  * 用語とか概念に対してある程度の理解がないとつらい
      * 「スクラム初めてです！」みたいな人には向かない
* **Redmine臭がすごい**
  * 良くも悪くもとにかくすごい
     * リポジトリ機能まであるのは流石に笑う
  * スクラム(Backlog)機能はプラグイン拡張になっているため、分かりづらい
* 多機能すぎる
  * 単純にかんばんと+BTS(ITS)が欲しいだけならTrello+GitHubの方が楽
      * ただガントチャートの訴求力はつよそう 
      * ある程度の規模で、きちんとプロジェクトマネジメントをしつつ、スクラムでやっていく…みたいなプロジェクト向き？ 
* **markdownが使えない(textile書式)**
  * チケット内容とかwikiとかtextileで書かないといけなくてつらい
      * プラグインによる拡張も今の所対応してなさそうなので今後に期待
* バーンダウングラフが算出されなかったことがあった
  * 以下のどこかが不適切等の理由で算出されなかったのかもしれないが、原因不明…
      * チケットの開始/終了日時
      * スプリントの開始/終了
      * ストーリーポイントの設定
      * 完了となるステータスの設定(Status=Closed)

# Tips

## 日々の運用

いろんな画面から同じような操作ができてしまうのでわかりづらいのですが、

* UserStory, Featureといった単位の定義は「バックログ」から
  * UserStory, Feature, Epic等の使い分けは各プロジェクトの方針で   
* UserStoryに対して細かいTaskを落とし込んで行くのは「かんばん」から
  * アサインされた作業者が個々の細かいTaskを作っていくイメージ
* UserStory, Task等の依存関係や進捗管理は「作業項目」画面から

というのがやりやすいのかなと、個人的には思いました。


## かんばんに表示されるステータス(New, In Progess...)を日本語化したい

「システム設定」→「ステータスの型」から変更できます。
<img width="800" alt="スクリーンショット 2018-05-04 15.38.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/bd957bbf-b752-9498-c09f-08f8b7fe33e9.png">

## バックログに表示されるストーリーの種別(Feature, UserStory, Epic....)を日本語化したい

「システム設定」→「作業項目の種類」から変更できます。
<img width="800" alt="スクリーンショット 2018-05-04 17.02.09.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/33df185c-c7ae-ecc5-137c-828be358b281.png">

## ストーリー種別を追加したい(例: Theme)

「システム設定」→「プラグイン」→「OpeProject Backlogs」→「設定」から、「ストーリーの種類」で選択されたものがバックログ画面で表示されるようになっています。

<img width="800" alt="スクリーンショット 2018-05-04 14.12.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/7c5efd2f-6f39-e063-763c-fac78a808cc0.png">

<img width="800" alt="スクリーンショット 2018-05-04 15.42.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/d06fd3f1-0631-2c5c-0a32-a75c06b2d29d.png">

項目自体は「システム設定」→「作業項目の種類」で追加してください。

## ユーザごとの付箋の色を変えたい

「個人設定」→「設定」→「タスクの色」の値が適用されるので、適宜変更してください。

<img width="800" alt="スクリーンショット 2018-05-04 13.54.04.png" src="https://qiita-image-store.s3.amazonaws.com/0/50184/b4263709-1298-c7fb-c303-933b5aa181d1.png">

## その他

* 中味はRailsなので、手を加えたりするのも比較的楽そう
* プラグイン機能があるが、[現時点ではサーバパーティ製のプラグインはほとんどない](https://www.openproject.org/plugins/)
  * gemで入れるところまでRedmineを踏襲しなくても…という感じ
* 「タイムライン」モジュールを有効化してもガントチャートが出せるが、そちらは非推奨
  * deprecatedになってて「8.x以降のリリースでは消滅するから使うな」ってことみたい 
* [キーボードショートカット](https://www.openproject.org/help/keyboard-shortcuts-access-keys/)もあるので覚えると便利かも？


# 最後に

現状では微妙な部分も多々ありますが、現在も活発に開発が進められており、今後に期待できるプロジェクト管理ツールだと思います。

お試しいただければ幸いです。

参考: [プロジェクト管理ツールOpenProjectのインストール方法の説明と紹介 \| tracpath:Works](http://tracpath.com/works/development/how-to-install-openproject/)