@legitwhiz

legit whiz 技術レポート

View on GitHub

OpenProjectで始めるプロジェクト管理

0. 目的

【プロジェクト管理ツール】を導入する目的は、DevOpsの一環として、管理ツールを導入し運用の効率化を図る目的と考え、私個人の見解と選定・調査・検証した結果を以下の記事に掲載します。

1. プロジェクト管理ツールとは?

1.1. Excelでプロジェクト管理は、NGなの?

エクセルでプロジェクトのスケジュールは、簡単そうに感じている人が多いと思いますが、計画通り進めばプロジェクトに支障をもたらすことはないと思います。

ですが、計画自体の変更やタスクの追加などと、その度にエクセルを修正しメンバーに修正した旨を展開しなければなりません。特に各タスクの関連線などは、修正が面倒になります。

また、共有しているとはいえ、一つのエクセルファイルを複数メンバーで修正しますので、実績の記録が面倒となり、修正が追い付かない状況をよく見かけます。

エクセルでプロジェクト管理するには、【計画の修正】、【実績の記録】において、『不向きと言わざるを得ない』のである。

エクセルマクロで、その辺を解消したものをプロジェクトで作成している現場もありますが、Officeのバージョンアップで使い物にならなくなったとの悲鳴もよく聞きます。

そもそも、エクセルは表計算ソフトなので、プロジェクト管理には限界があると考える。

1.2. プロジェクト管理に必要なもの

【プロジェクト管理の管理項目】

ですが、まずPMBOKにおける、プロジェクト管理の管理項目が何なのかを理解した上で選定する必要があるので、以下にPMBOK管理10項目を記載します。

【PMBOK管理10項目】

私は、PMを何度か経験(小規模)ありますが、正直ここまで管理したことありません。(;’∀’) 実際は、スコープ管理、スケジュール管理、品質管理、リスク管理ぐらいですかね~

1.3. プロジェクト管理ツールを導入する目的

現状で問題の兆候がないにしろ、プロジェクトをより円滑に進行させ、より利益を出すプロジェクトに進化させるため、以下の項目を導入する目的としています。

ただし、プロジェクト管理ツールには、そもそも製品によって目的が違います。スケジュール管理を得意にしている製品、コスト管理に得意にしている製品、統合的に網羅している製品とあります。

この中から、現プロジェクトの目的に合った製品を選定する必要があります。

1.4. OSSプロジェクト管理ツール

1.4.1. オンプレ型プロジェクト管理ツール

1.4.2. クラウド型プロジェクト管理ツール(無料のみを記載※)

※無料の場合、何かしらの制限はあり

1.5. プロジェクト管理ツール選定

クラウド型でも満足できる機能は、内包していると思いますが、私個人としての検証・導入し製品の知識を得るという目的を果たせないため、オンプレ型の製品を選定する条件とします。 プロジェクト管理ツールである、RedmineはOSSでは一番シェアがあるのでしょうが、スケジュール管理としてガントチャートを使用したいので、スケジュール管理を得意とする製品【OpenProject】を選定してみました。

1.6. OpenProjectとは?

OpenProjectは、ウェブベースのOSSプロジェクト管理ツールです。 Ruby On Rails 5.0で開発されており、ライセンスはGPLv3です。

主な機能は、以下に羅列してみました。

色々と機能があり、運用ルールを決めるだけでも、知恵熱が出そうです・・・(;^_^A

2. OpenProjectインストール

OpenProjectインストールは、公式のマニュアルをもとに実施できます。

OpenProject公式HP

公式ではないですが、分かり易くインストールを説明しているサイトもありましたので、一からインストールしたい方は以下を参考に構築するとよいでしょう。

プロジェクト管理ツールOpenProjectのインストール方法の説明と紹介

ですが、今回は簡単に構築できるようにDockerで構築してみたいと思います。

OpenProject公式HP Install OpenProject with Docker

2.0. 環境

CentOS : 7.5.1804 Docker : 18.09.0, build 4d60db4 Docker-compose : 1.23.2, build 1110ad01 ※Dockerには、[Docker CE]とエンタープライズ版の[Docker EE]がありますが、今回は無償の[Docer CE]を使用します。 OpenProject 8.2.1 (PostgreSQL 9.6、memcached 1.5.7)

2.1. docker-compose用YAML作成

# vi docker-compose.yml

以下を追記。

  web:
    image: openproject/community:latest
    depends_on:
      - postgres
      - memcached
    ports:
      - "8890: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
    restart: always
  postgres:
    image: postgres:9.6-alpine
    volumes:
      - pg-data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: openproject
      POSTGRES_USER: opuser
      POSTGRES_PASSWORD: oppassword
    restart: always
  memcached:
    image: memcached:1.5.7-alpine
    restart: always
volumes:
  pg-data:

2.2. OpenProject起動

作成したymlが存在するディレクトリでdocker composeコマンドで起動するとymlで指定したimageをdocker hubからダウンロードし起動までしてきます。そのため、初回起動はダウンロードが発生しますので起動に時間がかかります。

# docker-compose up -d

3.OpenProject初期設定

3.1. OpenProjectログイン

ブラウザで以下にアクセス

http://:8890

右上の「Sign in」からadmin/adminでログインします。

login001

初回ログイン時にパスワード変更が要求されますので、新しいパスワードを入力し[Save]ボタンをクリックする。

login002

パスワード変更が成功したメッセージが出力すると共にOpenProjectのトップ画面が出力されます。

3.2. 日本語化

[Administration]-[System settings]-[Display]タグを選択し[日本語]にチェックを入れる。

japanese001

japanese002

[My Account]-[Settings]-[Language]で”日本語”を選択し[Time zone]で”(GMT+9:00) Tokyo”を選択し、[Save]ボタンをクリックする。

japanese003

japanese004

3.3. プロジェクト作成

トップ画面で[+プロジェクト]ボタンをクリック

create_project000

[名称]にプロジェクト名を入力し[作成]ボタンをクリック

create_project001

3.4. ユーザ作成

[管理]-[ユーザ]を選択し、[+ユーザ]をクリック

user_add001

新規ユーザ画面で[][][電子メールアドレス]、[名前]、[苗字]を入力し[作成]ボタンをクリック

user_add002

追加したユーザを選択

user_add003

[言語]で”日本語”を選択し、[パスワード]を入力

user_add004

[タイムゾーン]に”(GMT+9:00) Tokyo”を選択し[保存]ボタンをクリック

user_add005

3.5. ユーザをプロジェクトに追加

プロジェクトのトップ画面で[+メンバー]ボタンをクリック

project_useradd001

[既存のユーザまたはグループを追加する またはメールで新しいユーザを招待]で追加するユーザを選択し、[追加]ボタンをクリック

project_useradd002

4.OpenProjectを使ってみる

4.1 ガントチャート

プロジェクト画面で作業項目を選択

[+作成]ボタンをクリックし作業種別[Task、Milestone、Phase、Feature、Epic、User story、Bug]を選択する。

[New Task]に”作業名”を入力し[説明]に”作業内容の詳細”を入力し、[担当者]に作業を実行するメンバーを選択、[責任がある]に”作業責任者”を選択、[予定工数]に”想定される工数(日)”を入力、[日付]に”開始日”と”終了日”を選択し、[保存]ボタンをクリック

左ペインの[ガントチャート]を選択し、保存したスケジュールが登録されていることを確認

4.2 インシデント管理

インシデント管理は、バックログで管理します。

バックログのバージョンにて【障害の種別】(IceWall関連など)を登録し

ストーリーでインシデントを登録し、インシデントの各タスクをかんばんで管理します。

プロジェクト画面でバックログを選択し、[+バージョン]ボタンをクリック

[名称]に【障害の種別】を入力し[説明]を入力し[作成]ボタンをクリック

作成された[バージョン]の[▲]ボタンをクリックし[新しいストーリー]をクリック

追加されたストーリーでインシデントの内容を記載する。 Feature(機能改善)、Bug(不具合)、Epic(正式版リリース)、UserStory(要求された一連の作業)を選択する。※UserStoryは、ユーザから要求されたログ採取、分析など定例作業外の一覧の作業を指す。

インシデントの詳細を記入したい場合は、作成された[バージョン]の[▲]ボタンをクリックし[ストーリー/タスク]をクリック

対象の作業項目の右端の[:]をクリックし[詳細表示を開く]をクリック

[説明]に”インシデントの詳細情報”を記入し[レ]ボタンをクリック

バックログ画面に戻り、作成された[バージョン]の[▲]ボタンをクリックし[かんばん]をクリック

対象インシデントの右側の[+]ボタンをクリック

NewTask画面の[Subject]にインシデントで実施すべきタスクを入力し[Assigned To]に”タスクの実行者”を選択し[Remaining Hour]に予測される”工数(時間)”を入力し[OK]ボタンをクリック

かんばんにインシデントのタスクが登録されたことを確認

[Assigned To]に登録された”タスクの実行者”は、タスクを着手したらタスクをドラッグし[In progress]写し、終了したら[Closed]にドラッグする。優先度の低いタスクであれば[On hold]にドラッグし、実施しなくても大丈夫だと判断したら[Rejected]にドラッグしタスクを移動する。

最後に

とりあえず初期構築までやってみましたが【docker】を使用していることもあり簡単に構築できます。 GUIについてもスケジュールを【マウス操作】で移動や期間を調整できたりと感覚的に操作でき簡単です。【ガントチャート】も作業項目を登録すれば、自動的に作成され【Excel】なんかと比べたらなんて快適なんだろうと思います。バックログに関しても【マウス操作】で操作が簡単にできるのでプロジェクト管理の時間短縮にも繋がるだろう。

とは言え、まずは【運用ルール】の確立させないと、このツールがあったとしても【プロジェクト推進】が上手くいくわけがありません。

ツールに慣れ、きちんとした【運用ルール】を策定することが肝心だと感じました。